basePath: / definitions: internal_transport_http_handlers.loginBrandingContentAttrsDTO: properties: subtitle: type: string title: type: string updated_at: type: string version: type: string type: object internal_transport_http_handlers.loginBrandingContentData: properties: attributes: $ref: '#/definitions/internal_transport_http_handlers.loginBrandingContentAttrsDTO' type: type: string type: object internal_transport_http_handlers.loginBrandingContentDocument: properties: data: $ref: '#/definitions/internal_transport_http_handlers.loginBrandingContentData' type: object wucher_internal_transport_http_dto.AfterFlightInspectionAttributes: properties: completed: example: 1 type: integer created_at: example: "2026-04-09T05:00:00Z" type: string done_file_checklist: items: $ref: '#/definitions/wucher_internal_transport_http_dto.AfterFlightInspectionFileChecklistItem' type: array file_checklist: items: $ref: '#/definitions/wucher_internal_transport_http_dto.AfterFlightInspectionFileChecklistItem' type: array flight_data_count: example: 2 type: integer flight_inspection: $ref: '#/definitions/wucher_internal_transport_http_dto.FlightInspectionResource' flight_inspection_id: example: 019d6772-471c-7b70-b42a-d94020ef61e4 type: string flight_time_seconds: example: 9000 type: integer helicopter: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterResource' hydraulic_lh_checked: example: "1" type: string hydraulic_rh_checked: example: "1" type: string id: example: 019d6772-471c-7b70-b42a-d94020ef61e4 type: string mission_code: example: M-2026-001 type: string mission_type: items: type: string type: array note: example: All checks completed type: string oil_engine_nr1_checked: example: "1" type: string oil_engine_nr2_checked: example: "1" type: string oil_transmission_igb_checked: example: "1" type: string oil_transmission_mgb_checked: example: "1" type: string oil_transmission_tgb_checked: example: "1" type: string route: items: type: string type: array total: example: 3 type: integer total_flight: example: 3 type: integer updated_at: example: "2026-04-09T05:00:00Z" type: string type: object wucher_internal_transport_http_dto.AfterFlightInspectionFileChecklistItem: properties: download_url: example: https://s3.localhost.localstack.cloud:4566/wucher-file-dev/files/2026/04/05/policy.pdf?X-Amz-Signature=... type: string file_name: example: After Flight Checklist.pdf type: string helicopter_file_id: example: 019d7000-aaaa-7bbb-8ccc-111111111111 type: string is_done: example: false type: boolean type: object wucher_internal_transport_http_dto.AfterFlightInspectionResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.AfterFlightInspectionAttributes' id: example: 019d6772-471c-7b70-b42a-d94020ef61e4 type: string type: example: after_flight_inspection type: string type: object wucher_internal_transport_http_dto.AfterFlightInspectionResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.AfterFlightInspectionResource' type: object wucher_internal_transport_http_dto.AfterFlightInspectionUpsertAttributes: properties: hydraulic_lh_checked: type: string hydraulic_rh_checked: type: string note: type: string oil_engine_nr1_checked: type: string oil_engine_nr2_checked: type: string oil_transmission_igb_checked: type: string oil_transmission_mgb_checked: type: string oil_transmission_tgb_checked: type: string type: object wucher_internal_transport_http_dto.AfterFlightInspectionUpsertData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.AfterFlightInspectionUpsertAttributes' type: enum: - after_flight_inspection_upsert - after_flight_inspection type: string required: - attributes - type type: object wucher_internal_transport_http_dto.AfterFlightInspectionUpsertRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.AfterFlightInspectionUpsertData' required: - data type: object wucher_internal_transport_http_dto.AirRescuerProfileAttributes: properties: location: maxLength: 255 type: string note: type: string postcode: maxLength: 32 type: string responsible_flight_rescuer: type: boolean short_name: maxLength: 120 type: string street_line: maxLength: 255 type: string type: object wucher_internal_transport_http_dto.AirRescuerProfileUpdateAttributes: properties: location: maxLength: 255 type: string note: type: string postcode: maxLength: 32 type: string responsible_flight_rescuer: type: boolean short_name: maxLength: 120 type: string street_line: maxLength: 255 type: string type: object wucher_internal_transport_http_dto.AuthCurrentUserAttributes: properties: auth_provider: example: email type: string dul_bases: items: $ref: '#/definitions/wucher_internal_transport_http_dto.DULBase' type: array email: example: user@example.com type: string email_sso: example: user.sso@example.com type: string email_verified_at: example: "2026-02-05T10:00:00Z" type: string first_name: example: John type: string foto: $ref: '#/definitions/wucher_internal_transport_http_dto.UserFoto' is_previously_configured: example: false type: boolean last_name: example: Doe type: string linked_sso: example: false type: boolean login_method: example: email type: string microsoft_scope: example: openid profile email offline_access User.Read type: string mobile_phone: example: "+628123456789" type: string permission_modules: items: $ref: '#/definitions/wucher_internal_transport_http_dto.PermissionGroupResource' type: array permissions: items: $ref: '#/definitions/wucher_internal_transport_http_dto.PermissionMini' type: array pin_blocked: example: false type: boolean pin_configured: example: false type: boolean roles: items: $ref: '#/definitions/wucher_internal_transport_http_dto.RoleMini' type: array timezone: example: Asia/Jakarta type: string totp_enabled: example: false type: boolean webauthn_configured: example: false type: boolean type: object wucher_internal_transport_http_dto.AuthCurrentUserResponse: properties: data: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.AuthCurrentUserAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: user type: string type: object type: object wucher_internal_transport_http_dto.AuthSessionDeleteResponse: properties: data: properties: attributes: properties: deleted: example: true type: boolean type: object type: example: auth_session_delete type: string type: object type: object wucher_internal_transport_http_dto.AuthSessionItem: properties: active_now: example: true type: boolean created_at: example: "2026-03-13T12:00:00Z" type: string device_name: example: Chrome on macOS type: string id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string ip_address: example: 127.0.0.1 type: string last_active_at: example: "2026-03-13T12:10:00Z" type: string user_agent: example: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) ... type: string type: object wucher_internal_transport_http_dto.AuthSessionsResponse: properties: data: properties: attributes: properties: sessions: items: $ref: '#/definitions/wucher_internal_transport_http_dto.AuthSessionItem' type: array type: object type: example: auth_sessions type: string type: object type: object wucher_internal_transport_http_dto.BaseAttributes: properties: address: example: Lude Airfield type: string base: example: Lude type: string base_abbreviation: example: LOIG type: string base_category: enum: - regular - hems example: regular type: string checklist: example: false type: boolean control_center: example: false type: boolean created_at: example: "2026-03-12T03:04:05Z" type: string created_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string default_end_time_type: enum: - FIXED - BMCT - ECET example: FIXED type: string default_start_time_type: enum: - FIXED - BMCT - ECET example: FIXED type: string dry: example: false type: boolean dul: example: false type: boolean email: example: lude@wucher.local type: string foto: $ref: '#/definitions/wucher_internal_transport_http_dto.BaseFoto' hems_edc: items: $ref: '#/definitions/wucher_internal_transport_http_dto.BaseContact' type: array hems_edc_contact_ids: items: type: string type: array is_active: example: true type: boolean landline_number: example: +62-21-1234 type: string latitude: example: 47.3769 type: number leg_time: example: "00:20" type: string longitude: example: 8.5417 type: number med_pax: items: $ref: '#/definitions/wucher_internal_transport_http_dto.BaseContact' type: array med_pax_contact_ids: items: type: string type: array mobile_number: example: +62-812-1234 type: string notes: example: Main base type: string operational_shift_times: items: $ref: '#/definitions/wucher_internal_transport_http_dto.BaseOperationalShiftTime' type: array responsible_pilot_contact_ids: items: type: string type: array responsible_pilots: items: $ref: '#/definitions/wucher_internal_transport_http_dto.BaseContact' type: array shift_time: $ref: '#/definitions/wucher_internal_transport_http_dto.BaseShiftTime' sms_alert: example: false type: boolean sortkey: example: 1 type: integer updated_at: example: "2026-03-12T03:04:05Z" type: string updated_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string utc: example: "0" type: string type: object wucher_internal_transport_http_dto.BaseContact: properties: first_name: type: string id: type: string last_name: type: string type: object wucher_internal_transport_http_dto.BaseCreateAttributes: properties: address: example: Lude Airfield type: string base: example: Lude type: string base_abbreviation: example: LOIG type: string base_category: enum: - regular - hems example: regular type: string checklist: example: false type: boolean control_center: example: false type: boolean default_end_time_type: enum: - FIXED - BMCT - ECET example: FIXED type: string default_shift_end: example: "21:00:00" type: string default_shift_start: example: "06:00:00" type: string default_shift_time: example: "12:00" type: string default_start_time_type: enum: - FIXED - BMCT - ECET example: FIXED type: string dry: example: false type: boolean dul: example: false type: boolean email: example: lude@wucher.local type: string file_uuid: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e90 type: string hems_edc_contact_ids: items: type: string type: array is_active: example: true type: boolean landline_number: example: +62-21-1234 type: string latitude: example: 47.3769 maximum: 90 minimum: -90 type: number leg_time: example: "00:20" type: string longitude: example: 8.5417 maximum: 180 minimum: -180 type: number med_pax_contact_ids: items: type: string type: array mobile_number: example: +62-812-1234 type: string notes: example: Main base type: string operational_shift_times: items: $ref: '#/definitions/wucher_internal_transport_http_dto.BaseOperationalShiftTime' type: array responsible_pilot_contact_ids: items: type: string type: array shift_time: $ref: '#/definitions/wucher_internal_transport_http_dto.BaseShiftTime' sms_alert: example: false type: boolean sortkey: example: 1 type: integer utc: example: "0" type: string required: - base - latitude - longitude type: object wucher_internal_transport_http_dto.BaseCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.BaseCreateAttributes' type: enum: - base example: base type: string required: - attributes - type type: object wucher_internal_transport_http_dto.BaseCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.BaseCreateData' required: - data type: object wucher_internal_transport_http_dto.BaseDataTableResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.BaseResource' type: array meta: properties: draw: example: 1 type: integer records_filtered: example: 12 type: integer records_total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.BaseDeleteAttributes: properties: deleted: example: true type: boolean type: object wucher_internal_transport_http_dto.BaseDeleteResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.BaseDeleteAttributes' id: example: 019d6b10-a385-7e9e-a553-8e892bcec0ef type: string type: example: base_delete type: string type: object wucher_internal_transport_http_dto.BaseDeleteResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.BaseDeleteResource' type: object wucher_internal_transport_http_dto.BaseFoto: properties: download_url: example: https://storage.example.com/base/lude.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900&X-Amz-Signature=abc123 type: string original_size_bytes: example: 1024000 type: integer thumbnail_download_url: example: https://storage.example.com/base/lude.thumb.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900&X-Amz-Signature=abc123 type: string uuid: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: object wucher_internal_transport_http_dto.BaseListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.BaseResource' type: array meta: properties: page_number: example: 1 type: integer page_size: example: 20 type: integer total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.BaseOperationalShiftTime: properties: date_end: example: "2026-04-12" type: string date_start: example: "2026-04-12" type: string end_time_type: enum: - FIXED - BMCT - ECET example: FIXED type: string shift_time: $ref: '#/definitions/wucher_internal_transport_http_dto.BaseShiftTime' start_time_type: enum: - FIXED - BMCT - ECET example: FIXED type: string type: object wucher_internal_transport_http_dto.BaseResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.BaseAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: base type: string type: object wucher_internal_transport_http_dto.BaseResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.BaseResource' type: object wucher_internal_transport_http_dto.BaseShiftTime: properties: end: example: "21:00" type: string start: example: "06:00" type: string type: object wucher_internal_transport_http_dto.BaseUpdateAttributes: properties: address: example: Lude Airfield type: string base: example: Lude type: string base_abbreviation: example: LOIG type: string base_category: enum: - regular - hems example: regular type: string checklist: example: false type: boolean control_center: example: false type: boolean default_end_time_type: enum: - FIXED - BMCT - ECET example: FIXED type: string default_shift_end: example: "21:00:00" type: string default_shift_start: example: "06:00:00" type: string default_shift_time: example: "12:00" type: string default_start_time_type: enum: - FIXED - BMCT - ECET example: FIXED type: string dry: example: false type: boolean dul: example: false type: boolean email: example: lude@wucher.local type: string file_uuid: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e90 type: string hems_edc_contact_ids: items: type: string type: array is_active: example: true type: boolean landline_number: example: +62-21-1234 type: string latitude: example: 47.3769 maximum: 90 minimum: -90 type: number leg_time: example: "00:20" type: string longitude: example: 8.5417 maximum: 180 minimum: -180 type: number med_pax_contact_ids: items: type: string type: array mobile_number: example: +62-812-1234 type: string notes: example: Main base type: string operational_shift_times: items: $ref: '#/definitions/wucher_internal_transport_http_dto.BaseOperationalShiftTime' type: array responsible_pilot_contact_ids: items: type: string type: array shift_time: $ref: '#/definitions/wucher_internal_transport_http_dto.BaseShiftTime' sms_alert: example: false type: boolean sortkey: example: 1 type: integer utc: example: "0" type: string type: object wucher_internal_transport_http_dto.BaseUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.BaseUpdateAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: enum: - base_update example: base_update type: string required: - attributes - type type: object wucher_internal_transport_http_dto.BaseUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.BaseUpdateData' required: - data type: object wucher_internal_transport_http_dto.ContactBaseRole: properties: base_id: type: string base_name: type: string role_code: type: string type: object wucher_internal_transport_http_dto.ContactBulkUpdateData: properties: attributes: properties: is_active: example: true type: boolean user_ids: example: - 0195f6f8-0f8d-7e3e-b8f2-8abff9b5c1d1 items: type: string minItems: 1 type: array required: - user_ids type: object type: example: contact_bulk_update type: string required: - attributes - type type: object wucher_internal_transport_http_dto.ContactBulkUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.ContactBulkUpdateData' required: - data type: object wucher_internal_transport_http_dto.ContactChiefFlagsUpdateData: properties: attributes: properties: is_chief_physician: type: boolean is_chief_pilot: type: boolean is_chief_technician: type: boolean type: object type: type: string required: - attributes - type type: object wucher_internal_transport_http_dto.ContactChiefFlagsUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.ContactChiefFlagsUpdateData' required: - data type: object wucher_internal_transport_http_dto.ContactCreateAttributes: properties: air_rescuer: $ref: '#/definitions/wucher_internal_transport_http_dto.AirRescuerProfileAttributes' doctor: $ref: '#/definitions/wucher_internal_transport_http_dto.DoctorProfileAttributes' email: type: string file_uuid: maxLength: 64 type: string first_name: maxLength: 100 type: string flight_assistant: $ref: '#/definitions/wucher_internal_transport_http_dto.FlightAssistantProfileAttributes' is_active: type: boolean is_admin: type: boolean last_name: maxLength: 100 type: string mobile_phone: maxLength: 32 type: string pilot: $ref: '#/definitions/wucher_internal_transport_http_dto.PilotProfileAttributes' role_id: example: 0195f6f8-0f8d-7e3e-b8f2-8abff9b5c1d1 type: string role_ids: example: - 0195f6f8-0f8d-7e3e-b8f2-8abff9b5c1d1 - 0195f6f8-0f8d-7e3e-b8f2-8abff9b5c1d2 items: type: string type: array sortkey: type: integer sso_email: type: string staff: $ref: '#/definitions/wucher_internal_transport_http_dto.StaffProfileAttributes' technician: $ref: '#/definitions/wucher_internal_transport_http_dto.TechnicianProfileAttributes' timezone: maxLength: 64 type: string username: maxLength: 100 type: string type: object wucher_internal_transport_http_dto.ContactCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.ContactCreateAttributes' type: example: contact_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto.ContactCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.ContactCreateData' required: - data type: object wucher_internal_transport_http_dto.ContactDataTableResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.ContactListItem' type: array meta: properties: draw: example: 1 type: integer records_filtered: example: 12 type: integer records_total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.ContactLicenseUpdateData: properties: attributes: properties: license_no: type: string type: object type: type: string required: - attributes - type type: object wucher_internal_transport_http_dto.ContactLicenseUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.ContactLicenseUpdateData' required: - data type: object wucher_internal_transport_http_dto.ContactListAttributes: properties: air_rescuer: $ref: '#/definitions/wucher_internal_transport_http_dto.AirRescuerProfileAttributes' base_roles: items: $ref: '#/definitions/wucher_internal_transport_http_dto.ContactBaseRole' type: array created_at: type: string created_by: type: string doctor: $ref: '#/definitions/wucher_internal_transport_http_dto.DoctorProfileAttributes' email: type: string first_name: type: string flight_assistant: $ref: '#/definitions/wucher_internal_transport_http_dto.FlightAssistantProfileAttributes' is_active: type: boolean is_admin: type: boolean last_name: type: string license_no: type: string location: type: string mobile_phone: type: string note: type: string pilot: $ref: '#/definitions/wucher_internal_transport_http_dto.PilotProfileAttributes' pilot_category: type: string role_code: type: string role_name: type: string roles: items: $ref: '#/definitions/wucher_internal_transport_http_dto.ContactRole' type: array set_password: type: boolean short_name: type: string sortkey: type: integer sso_email: type: string staff: $ref: '#/definitions/wucher_internal_transport_http_dto.StaffProfileAttributes' technician: $ref: '#/definitions/wucher_internal_transport_http_dto.TechnicianProfileAttributes' updated_at: type: string updated_by: type: string username: type: string type: object wucher_internal_transport_http_dto.ContactListItem: properties: created_at: type: string created_by: type: string email: type: string first_name: type: string id: type: string is_active: type: boolean is_admin: type: boolean last_name: type: string license_no: type: string location: type: string mobile_phone: type: string note: type: string pilot_category: type: string role_code: type: string role_name: type: string set_password: type: boolean short_name: type: string sortkey: type: integer updated_at: type: string updated_by: type: string username: type: string type: object wucher_internal_transport_http_dto.ContactListResponse: properties: data: items: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.ContactListAttributes' id: example: 019dcce4-f15e-7685-8e4c-76f8ad20594b type: string type: example: contact type: string type: object type: array meta: properties: limit: type: integer offset: type: integer total: type: integer type: object type: object wucher_internal_transport_http_dto.ContactPilotCategoryUpdateData: properties: attributes: properties: pilot_category: enum: - regular - freelance - dry_lease type: string required: - pilot_category type: object type: type: string required: - attributes - type type: object wucher_internal_transport_http_dto.ContactPilotCategoryUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.ContactPilotCategoryUpdateData' required: - data type: object wucher_internal_transport_http_dto.ContactRole: properties: id: type: string role_code: type: string role_name: type: string type: object wucher_internal_transport_http_dto.ContactRoleUpdateData: properties: attributes: properties: role_code: enum: - pilot - doctor - air_rescuer - technician - flight_assistant - staff type: string required: - role_code type: object type: type: string required: - attributes - type type: object wucher_internal_transport_http_dto.ContactRoleUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.ContactRoleUpdateData' required: - data type: object wucher_internal_transport_http_dto.ContactSimpleSuccessResponse: properties: data: properties: attributes: properties: count: type: integer deleted: type: boolean updated: type: boolean type: object type: type: string type: object type: object wucher_internal_transport_http_dto.ContactStatusUpdateData: properties: attributes: properties: is_active: type: boolean type: object type: type: string required: - attributes - type type: object wucher_internal_transport_http_dto.ContactStatusUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.ContactStatusUpdateData' required: - data type: object wucher_internal_transport_http_dto.ContactUpdateAttributes: properties: air_rescuer: $ref: '#/definitions/wucher_internal_transport_http_dto.AirRescuerProfileUpdateAttributes' doctor: $ref: '#/definitions/wucher_internal_transport_http_dto.DoctorProfileUpdateAttributes' email: type: string file_uuid: maxLength: 64 type: string first_name: maxLength: 100 type: string flight_assistant: $ref: '#/definitions/wucher_internal_transport_http_dto.FlightAssistantProfileUpdateAttributes' is_active: type: boolean is_admin: type: boolean last_name: maxLength: 100 type: string mobile_phone: maxLength: 32 type: string pilot: $ref: '#/definitions/wucher_internal_transport_http_dto.PilotProfileUpdateAttributes' role_id: example: 0195f6f8-0f8d-7e3e-b8f2-8abff9b5c1d1 type: string role_ids: example: - 0195f6f8-0f8d-7e3e-b8f2-8abff9b5c1d1 - 0195f6f8-0f8d-7e3e-b8f2-8abff9b5c1d2 items: type: string type: array sortkey: type: integer sso_email: type: string staff: $ref: '#/definitions/wucher_internal_transport_http_dto.StaffProfileUpdateAttributes' technician: $ref: '#/definitions/wucher_internal_transport_http_dto.TechnicianProfileUpdateAttributes' timezone: maxLength: 64 type: string username: maxLength: 100 type: string type: object wucher_internal_transport_http_dto.ContactUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.ContactUpdateAttributes' type: example: contact_update type: string required: - attributes - type type: object wucher_internal_transport_http_dto.ContactUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.ContactUpdateData' required: - data type: object wucher_internal_transport_http_dto.DULAttributes: properties: base: $ref: '#/definitions/wucher_internal_transport_http_dto.DULBaseRef' created_at: type: string created_by: type: string date: example: "2026-05-25" type: string images: items: $ref: '#/definitions/wucher_internal_transport_http_dto.DULImage' type: array info: type: string name: type: string "no": type: integer updated_at: type: string updated_by: type: string type: object wucher_internal_transport_http_dto.DULBase: properties: category: example: hems type: string id: example: 0197f3b2-c4d8-4b12-a1f9-c1de23456789 type: string name: example: Halim Base type: string type: object wucher_internal_transport_http_dto.DULBaseRef: properties: category: type: string id: type: string name: type: string type: object wucher_internal_transport_http_dto.DULCreateAttributes: properties: base_id: example: 019e3ec1-94f6-7b6b-9cc5-1b5d05f46d74 type: string date: example: "2026-05-25" type: string file_uuid: items: type: string type: array info: type: string name: maxLength: 128 type: string required: - base_id - date - name type: object wucher_internal_transport_http_dto.DULCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.DULCreateAttributes' type: enum: - dul_create - dul type: string required: - attributes - type type: object wucher_internal_transport_http_dto.DULCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.DULCreateData' required: - data type: object wucher_internal_transport_http_dto.DULDataTableResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.DULGroup' type: array meta: properties: draw: example: 1 type: integer page_number: example: 1 type: integer page_size: example: 20 type: integer records_filtered: example: 120 type: integer records_total: example: 120 type: integer total: example: 120 type: integer total_bases: example: 8 type: integer type: object type: object wucher_internal_transport_http_dto.DULDeleteResponse: properties: data: properties: attributes: properties: deleted: example: true type: boolean type: object type: example: dul_delete type: string type: object type: object wucher_internal_transport_http_dto.DULGroup: properties: base: $ref: '#/definitions/wucher_internal_transport_http_dto.DULBaseRef' duls: items: $ref: '#/definitions/wucher_internal_transport_http_dto.DULResource' type: array type: object wucher_internal_transport_http_dto.DULImage: properties: download_url: type: string original_size_bytes: type: integer thumbnail_download_url: type: string uuid: type: string type: object wucher_internal_transport_http_dto.DULListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.DULGroup' type: array meta: properties: page_number: example: 1 type: integer page_size: example: 20 type: integer total: example: 120 type: integer total_bases: example: 8 type: integer type: object type: object wucher_internal_transport_http_dto.DULResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.DULAttributes' id: type: string type: type: string type: object wucher_internal_transport_http_dto.DULResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.DULResource' type: object wucher_internal_transport_http_dto.DULUpdateAttributes: properties: base_id: type: string date: example: "2026-05-25" type: string file_uuid: items: type: string type: array info: type: string name: type: string type: object wucher_internal_transport_http_dto.DULUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.DULUpdateAttributes' type: enum: - dul_update - dul type: string required: - attributes - type type: object wucher_internal_transport_http_dto.DULUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.DULUpdateData' required: - data type: object wucher_internal_transport_http_dto.DoctorProfileAttributes: properties: is_chief_physician: type: boolean location: maxLength: 255 type: string note: type: string postcode: maxLength: 32 type: string short_name: maxLength: 120 type: string specialization: maxLength: 120 type: string street_line: maxLength: 255 type: string sub_specialization: maxLength: 120 type: string type: object wucher_internal_transport_http_dto.DoctorProfileUpdateAttributes: properties: is_chief_physician: type: boolean location: maxLength: 255 type: string note: type: string postcode: maxLength: 32 type: string short_name: maxLength: 120 type: string specialization: maxLength: 120 type: string street_line: maxLength: 255 type: string sub_specialization: maxLength: 120 type: string type: object wucher_internal_transport_http_dto.EmailOTPSendAttributes: properties: challenge_token: example: kP8k2... type: string required: - challenge_token type: object wucher_internal_transport_http_dto.EmailOTPSendData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.EmailOTPSendAttributes' type: example: auth_email_otp_send type: string required: - attributes - type type: object wucher_internal_transport_http_dto.EmailOTPSendRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.EmailOTPSendData' required: - data type: object wucher_internal_transport_http_dto.EmailOTPSendResponse: properties: data: properties: attributes: properties: sent: example: true type: boolean type: object type: example: auth_email_otp_send type: string type: object type: object wucher_internal_transport_http_dto.EmailOTPVerifyAttributes: properties: challenge_token: example: kP8k2... type: string code: example: "123456" type: string required: - challenge_token - code type: object wucher_internal_transport_http_dto.EmailOTPVerifyData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.EmailOTPVerifyAttributes' type: example: auth_email_otp_verify type: string required: - attributes - type type: object wucher_internal_transport_http_dto.EmailOTPVerifyRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.EmailOTPVerifyData' required: - data type: object wucher_internal_transport_http_dto.EmailOTPVerifyResponse: properties: data: properties: attributes: properties: requires_totp_setup: example: true type: boolean verified: example: true type: boolean type: object type: example: auth_email_otp_verify type: string type: object type: object wucher_internal_transport_http_dto.ErrorResponse: properties: errors: items: properties: detail: example: email is required type: string source: properties: pointer: example: /data/attributes/email type: string type: object status: example: "422" type: string title: example: Validation error type: string type: object type: array type: object wucher_internal_transport_http_dto.ExchangeAttributes: properties: access_token: example: eyJ0eXAiOiJKV1Qi... type: string id_token: example: eyJ0eXAiOiJKV1Qi... type: string id_token_claims: $ref: '#/definitions/wucher_internal_transport_http_dto.ExchangeIDTokenClaims' required: - access_token - id_token type: object wucher_internal_transport_http_dto.ExchangeData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.ExchangeAttributes' type: example: auth_exchange type: string required: - attributes - type type: object wucher_internal_transport_http_dto.ExchangeIDTokenClaims: properties: aud: example: 12345678-1234-1234-1234-123456789012 type: string email: example: andrio@mybit-innovation.com type: string exp: example: 1715603600 type: integer iat: example: 1715600000 type: integer iss: example: https://login.microsoftonline.com/abc-tenant-id/v2.0 type: string name: example: Andrio Effendi type: string nbf: example: 1715600000 type: integer oid: example: 00000000-0000-0000-1234-567890abcdef type: string preferred_username: example: andrio@mybit-innovation.com type: string sub: example: AbCdEfGhIjKlMnOpQrStUvWxYz type: string tid: example: abc-tenant-id type: string ver: example: "2.0" type: string type: object wucher_internal_transport_http_dto.ExchangeRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.ExchangeData' required: - data type: object wucher_internal_transport_http_dto.FMReportAirframeValues: properties: cycles: example: 320 type: number hours: example: 1523.5 type: number type: object wucher_internal_transport_http_dto.FMReportAttachmentItem: properties: download_url: type: string file_id: type: string id: type: string type: object wucher_internal_transport_http_dto.FMReportAttachments: properties: additional_fm_report: items: $ref: '#/definitions/wucher_internal_transport_http_dto.FMReportAttachmentItem' type: array briefing: items: $ref: '#/definitions/wucher_internal_transport_http_dto.FMReportAttachmentItem' type: array ofp: items: $ref: '#/definitions/wucher_internal_transport_http_dto.FMReportAttachmentItem' type: array weight_balance: items: $ref: '#/definitions/wucher_internal_transport_http_dto.FMReportAttachmentItem' type: array type: object wucher_internal_transport_http_dto.FMReportAttributes: properties: after_flight_inspection: $ref: '#/definitions/wucher_internal_transport_http_dto.AfterFlightInspectionResource' completed_at: example: "2026-04-20T10:15:00Z" type: string completed_by: example: 019d61db-53c6-7280-87ec-e65f205c6d3b type: string created_at: example: "2026-04-20T08:00:00Z" type: string engine1_gpc_n1: example: GPC/N1 63.2 type: string engine1_ptc_n2: example: PTC/N2 61.8 type: string engine2_gpc_n1: example: GPC/N1 62.9 type: string engine2_ptc_n2: example: PTC/N2 61.5 type: string fleet_status: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FleetStatusResource' flight: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FlightResource' flight_id: example: 019d6774-98e8-7fba-9ef4-3795c0da8a13 type: string flight_inspection: $ref: '#/definitions/wucher_internal_transport_http_dto.FlightInspectionResource' flight_inspection_id: example: 019d6772-471c-7b70-b42a-d94020ef61e4 type: string fm_report_attachments: $ref: '#/definitions/wucher_internal_transport_http_dto.FMReportAttachments' helicopter_identifier: example: OE-TEST type: string helicopter_usage: $ref: '#/definitions/wucher_internal_transport_http_dto.HelicopterUsageResource' id: example: 019d6772-471c-7b70-b42a-d94020ef61e4 type: string missions: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.MissionResource' type: array pilot_name: example: John Doe type: string report_code: example: EC-135-1 type: string takeover_files: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.TakeoverFileResource' type: array takeover_id: example: 019e8713-aa19-7fb7-a510-a0332dc69697 type: string updated_at: example: "2026-04-20T08:00:00Z" type: string usage_breakdown: $ref: '#/definitions/wucher_internal_transport_http_dto.FMReportUsageBreakdown' type: object wucher_internal_transport_http_dto.FMReportCountersValues: properties: flight_reports: example: 80 type: number hook_releases: example: 10 type: number landings: example: 120 type: number rotor_brake_cycles: example: 8 type: number type: object wucher_internal_transport_http_dto.FMReportEngineValues: properties: ccc: example: 44 type: number gpc_ng_n1: example: 63.2 type: number hours: example: 1523.5 type: number ptc_nf_n2: example: 61.8 type: number type: object wucher_internal_transport_http_dto.FMReportListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.FMReportResource' type: array meta: properties: page_number: example: 1 type: integer page_size: example: 20 type: integer total: example: 1 type: integer type: object type: object wucher_internal_transport_http_dto.FMReportResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.FMReportAttributes' id: example: 019d6772-471c-7b70-b42a-d94020ef61e4 type: string type: example: fm_report type: string type: object wucher_internal_transport_http_dto.FMReportResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.FMReportResource' type: object wucher_internal_transport_http_dto.FMReportUsageBreakdown: properties: prev: $ref: '#/definitions/wucher_internal_transport_http_dto.FMReportUsageSnapshot' today: $ref: '#/definitions/wucher_internal_transport_http_dto.FMReportUsageSnapshot' total: $ref: '#/definitions/wucher_internal_transport_http_dto.FMReportUsageSnapshot' type: object wucher_internal_transport_http_dto.FMReportUsageSnapshot: properties: airframe: $ref: '#/definitions/wucher_internal_transport_http_dto.FMReportAirframeValues' counters: $ref: '#/definitions/wucher_internal_transport_http_dto.FMReportCountersValues' engine_1: $ref: '#/definitions/wucher_internal_transport_http_dto.FMReportEngineValues' engine_2: $ref: '#/definitions/wucher_internal_transport_http_dto.FMReportEngineValues' type: object wucher_internal_transport_http_dto.FacilityAttributes: properties: category: example: heslo-rope-label type: string created_at: example: "2026-03-12T03:04:05Z" type: string created_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string electric: example: available type: string is_active: example: true type: boolean length: example: 10m type: string name: example: Fuel Truck Rope Label type: string note: example: Dry lease fuel truck type: string sortkey: example: 1 type: integer type: example: Sling type: string updated_at: example: "2026-03-12T03:04:05Z" type: string updated_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string weight: example: 10kg type: string type: object wucher_internal_transport_http_dto.FacilityCreateAttributes: properties: category: example: heslo-rope-label type: string electric: example: available type: string is_active: example: true type: boolean length: example: 10m type: string name: example: Fuel Truck Rope Label type: string note: example: Dry lease fuel truck type: string sortkey: example: 1 type: integer type: example: Sling type: string weight: example: 10kg type: string required: - category - name type: object wucher_internal_transport_http_dto.FacilityCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.FacilityCreateAttributes' type: enum: - facility_create - facility example: facility_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto.FacilityCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.FacilityCreateData' required: - data type: object wucher_internal_transport_http_dto.FacilityDataTableResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.FacilityResource' type: array meta: properties: draw: example: 1 type: integer records_filtered: example: 12 type: integer records_total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.FacilityDeleteResponse: properties: data: properties: attributes: properties: deleted: example: true type: boolean type: object type: example: facility_delete type: string type: object type: object wucher_internal_transport_http_dto.FacilityListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.FacilityResource' type: array meta: properties: page_number: example: 1 type: integer page_size: example: 20 type: integer total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.FacilityResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.FacilityAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: facility type: string type: object wucher_internal_transport_http_dto.FacilityResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.FacilityResource' type: object wucher_internal_transport_http_dto.FacilityUpdateAttributes: properties: category: example: heslo-rope-label type: string electric: example: available type: string is_active: example: true type: boolean length: example: 10m type: string name: example: Fuel Truck Rope Label type: string note: example: Dry lease fuel truck type: string sortkey: example: 1 type: integer type: example: Sling type: string weight: example: 10kg type: string type: object wucher_internal_transport_http_dto.FacilityUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.FacilityUpdateAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: enum: - facility_update - facility example: facility_update type: string required: - attributes - type type: object wucher_internal_transport_http_dto.FacilityUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.FacilityUpdateData' required: - data type: object wucher_internal_transport_http_dto.FederalStateAttributes: properties: created_at: example: "2026-03-12T03:04:05Z" type: string created_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string deleted_at: example: "2026-03-12T03:04:05Z" type: string deleted_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string is_active: example: true type: boolean land_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string land_iso_code: example: DE type: string land_name: example: Germany type: string name: example: Bayern type: string note: example: Central region type: string sortkey: example: 1 type: integer updated_at: example: "2026-03-12T03:04:05Z" type: string updated_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: object wucher_internal_transport_http_dto.FederalStateCreateAttributes: properties: is_active: example: true type: boolean land_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string name: example: Bayern type: string note: example: Central region type: string sortkey: example: 1 type: integer required: - land_id - name type: object wucher_internal_transport_http_dto.FederalStateCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.FederalStateCreateAttributes' type: enum: - federal_state_create - federal_state example: federal_state_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto.FederalStateCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.FederalStateCreateData' required: - data type: object wucher_internal_transport_http_dto.FederalStateDataTableResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.FederalStateResource' type: array meta: properties: draw: example: 1 type: integer records_filtered: example: 12 type: integer records_total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.FederalStateDeleteResponse: properties: data: properties: attributes: properties: deleted: example: true type: boolean type: object type: example: federal_state_delete type: string type: object type: object wucher_internal_transport_http_dto.FederalStateListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.FederalStateResource' type: array meta: properties: page_number: example: 1 type: integer page_size: example: 20 type: integer total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.FederalStateResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.FederalStateAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: federal_state type: string type: object wucher_internal_transport_http_dto.FederalStateResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.FederalStateResource' type: object wucher_internal_transport_http_dto.FederalStateUpdateAttributes: properties: is_active: example: true type: boolean land_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string name: example: Bayern type: string note: example: Central region type: string sortkey: example: 1 type: integer type: object wucher_internal_transport_http_dto.FederalStateUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.FederalStateUpdateAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: enum: - federal_state_update - federal_state example: federal_state_update type: string required: - attributes - type type: object wucher_internal_transport_http_dto.FederalStateUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.FederalStateUpdateData' required: - data type: object wucher_internal_transport_http_dto.FlightAssistantProfileAttributes: properties: location: maxLength: 255 type: string note: type: string postcode: maxLength: 32 type: string short_name: maxLength: 120 type: string street_line: maxLength: 255 type: string type: object wucher_internal_transport_http_dto.FlightAssistantProfileUpdateAttributes: properties: location: maxLength: 255 type: string note: type: string postcode: maxLength: 32 type: string short_name: maxLength: 120 type: string street_line: maxLength: 255 type: string type: object wucher_internal_transport_http_dto.FlightInspectionAttributes: properties: created_at: example: "2026-04-09T05:00:00Z" type: string created_by: example: 019d61db-53c6-7280-87ec-e65f205c6d3b type: string inspection_date: example: "2026-04-09" type: string status: example: Draft type: string updated_at: example: "2026-04-09T05:00:00Z" type: string updated_by: example: 019d61db-53c6-7280-87ec-e65f205c6d3b type: string type: object wucher_internal_transport_http_dto.FlightInspectionCreateAttributes: properties: inspection_date: example: "2026-04-09" type: string required: - inspection_date type: object wucher_internal_transport_http_dto.FlightInspectionCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.FlightInspectionCreateAttributes' type: enum: - flight_inspection_create - flight_inspection type: string required: - attributes - type type: object wucher_internal_transport_http_dto.FlightInspectionCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.FlightInspectionCreateData' required: - data type: object wucher_internal_transport_http_dto.FlightInspectionListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.FlightInspectionResource' type: array meta: properties: page_number: example: 1 type: integer page_size: example: 20 type: integer total: example: 1 type: integer type: object type: object wucher_internal_transport_http_dto.FlightInspectionResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.FlightInspectionAttributes' id: example: 019d6772-471c-7b70-b42a-d94020ef61e4 type: string type: example: flight_inspection type: string type: object wucher_internal_transport_http_dto.FlightInspectionResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.FlightInspectionResource' type: object wucher_internal_transport_http_dto.FlightInspectionUpdateAttributes: properties: inspection_date: example: "2026-04-09" type: string status: example: InProgress type: string type: object wucher_internal_transport_http_dto.FlightInspectionUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.FlightInspectionUpdateAttributes' id: example: 019d6772-471c-7b70-b42a-d94020ef61e4 type: string type: enum: - flight_inspection_update - flight_inspection type: string required: - attributes - type type: object wucher_internal_transport_http_dto.FlightInspectionUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.FlightInspectionUpdateData' required: - data type: object wucher_internal_transport_http_dto.ForcesPresentAttributes: properties: created_at: example: "2026-03-12T03:04:05Z" type: string created_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string deleted_at: example: "2026-03-12T03:04:05Z" type: string deleted_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string is_active: example: true type: boolean name: example: Firefighter Team A type: string note: example: On-site responders type: string sortkey: example: 1 type: integer updated_at: example: "2026-03-12T03:04:05Z" type: string updated_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: object wucher_internal_transport_http_dto.ForcesPresentCreateAttributes: properties: is_active: example: true type: boolean name: example: Firefighter Team A type: string note: example: On-site responders type: string sortkey: example: 1 type: integer required: - name type: object wucher_internal_transport_http_dto.ForcesPresentCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.ForcesPresentCreateAttributes' type: enum: - forces_present_create - forces_present example: forces_present_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto.ForcesPresentCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.ForcesPresentCreateData' required: - data type: object wucher_internal_transport_http_dto.ForcesPresentDataTableResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.ForcesPresentResource' type: array meta: properties: draw: example: 1 type: integer records_filtered: example: 12 type: integer records_total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.ForcesPresentListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.ForcesPresentResource' type: array meta: properties: page_number: example: 1 type: integer page_size: example: 20 type: integer total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.ForcesPresentResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.ForcesPresentAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: forces_present type: string type: object wucher_internal_transport_http_dto.ForcesPresentResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.ForcesPresentResource' type: object wucher_internal_transport_http_dto.ForcesPresentUpdateAttributes: properties: is_active: example: true type: boolean name: example: Firefighter Team A type: string note: example: On-site responders type: string sortkey: example: 1 type: integer type: object wucher_internal_transport_http_dto.ForcesPresentUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.ForcesPresentUpdateAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: enum: - forces_present_update - forces_present example: forces_present_update type: string required: - attributes - type type: object wucher_internal_transport_http_dto.ForcesPresentUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.ForcesPresentUpdateData' required: - data type: object wucher_internal_transport_http_dto.ForgotPasswordAttributes: properties: email: example: user@example.com type: string required: - email type: object wucher_internal_transport_http_dto.ForgotPasswordData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.ForgotPasswordAttributes' type: example: auth_forgot_password type: string required: - attributes - type type: object wucher_internal_transport_http_dto.ForgotPasswordRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.ForgotPasswordData' required: - data type: object wucher_internal_transport_http_dto.ForgotSecurityPINAttributes: properties: email: example: user@example.com type: string required: - email type: object wucher_internal_transport_http_dto.ForgotSecurityPINData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.ForgotSecurityPINAttributes' type: example: auth_forgot_pin type: string required: - attributes - type type: object wucher_internal_transport_http_dto.ForgotSecurityPINRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.ForgotSecurityPINData' required: - data type: object wucher_internal_transport_http_dto.GenericDeleteAttributes: properties: deleted: example: true type: boolean type: object wucher_internal_transport_http_dto.GenericDeleteResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.GenericDeleteResponseData' type: object wucher_internal_transport_http_dto.GenericDeleteResponseData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.GenericDeleteAttributes' type: example: delete_result type: string type: object wucher_internal_transport_http_dto.HEMSOperationAttributes: properties: created_at: example: "2026-03-12T03:04:05Z" type: string created_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string date: example: "2026-03-12T03:04:05Z" type: string deleted_at: example: "2026-03-12T03:04:05Z" type: string deleted_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string hems_operation_category: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationCategoryRef' hems_operation_category_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string mission: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationMissionRef' mission_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string operational_data: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationOperationalDataRef' operational_data_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string updated_at: example: "2026-03-12T03:04:05Z" type: string updated_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: object wucher_internal_transport_http_dto.HEMSOperationCategoryAttributes: properties: created_at: example: "2026-03-12T03:04:05Z" type: string created_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string deleted_at: example: "2026-03-12T03:04:05Z" type: string deleted_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string name: example: Firefighting type: string type: example: first type: string updated_at: example: "2026-03-12T03:04:05Z" type: string updated_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: object wucher_internal_transport_http_dto.HEMSOperationCategoryCreateAttributes: properties: name: example: Firefighting type: string type: enum: - first - secondary - misuse example: first type: string required: - name - type type: object wucher_internal_transport_http_dto.HEMSOperationCategoryCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationCategoryCreateAttributes' type: enum: - hems_operation_category_create - hems_operation_category example: hems_operation_category_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto.HEMSOperationCategoryCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationCategoryCreateData' required: - data type: object wucher_internal_transport_http_dto.HEMSOperationCategoryDataTableResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationCategoryResource' type: array meta: properties: draw: example: 1 type: integer records_filtered: example: 12 type: integer records_total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.HEMSOperationCategoryListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationCategoryResource' type: array meta: properties: page_number: example: 1 type: integer page_size: example: 20 type: integer total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.HEMSOperationCategoryRef: properties: id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string name: example: Firefighting type: string type: example: first type: string type: object wucher_internal_transport_http_dto.HEMSOperationCategoryResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationCategoryAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: hems_operation_category type: string type: object wucher_internal_transport_http_dto.HEMSOperationCategoryResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationCategoryResource' type: object wucher_internal_transport_http_dto.HEMSOperationCategoryUpdateAttributes: properties: name: example: Firefighting type: string type: enum: - first - secondary - misuse example: first type: string type: object wucher_internal_transport_http_dto.HEMSOperationCategoryUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationCategoryUpdateAttributes' type: enum: - hems_operation_category_update - hems_operation_category example: hems_operation_category_update type: string required: - attributes - type type: object wucher_internal_transport_http_dto.HEMSOperationCategoryUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationCategoryUpdateData' required: - data type: object wucher_internal_transport_http_dto.HEMSOperationCreateAttributes: properties: date: example: "2026-03-12T03:04:05Z" type: string hems_operation_category_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string mission_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string operational_data_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string required: - date type: object wucher_internal_transport_http_dto.HEMSOperationCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationCreateAttributes' type: enum: - hems_operation_create - hems_operation example: hems_operation_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto.HEMSOperationCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationCreateData' required: - data type: object wucher_internal_transport_http_dto.HEMSOperationDataTableResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationResource' type: array meta: properties: draw: example: 1 type: integer records_filtered: example: 12 type: integer records_total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.HEMSOperationListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationResource' type: array meta: properties: page_number: example: 1 type: integer page_size: example: 20 type: integer total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.HEMSOperationMissionRef: properties: flight_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: HEMS type: string type: object wucher_internal_transport_http_dto.HEMSOperationOperationalDataRef: properties: id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: object wucher_internal_transport_http_dto.HEMSOperationResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: hems_operation type: string type: object wucher_internal_transport_http_dto.HEMSOperationResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationResource' type: object wucher_internal_transport_http_dto.HEMSOperationUpdateAttributes: properties: date: example: "2026-03-12T03:04:05Z" type: string hems_operation_category_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string mission_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string operational_data_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: object wucher_internal_transport_http_dto.HEMSOperationUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationUpdateAttributes' type: enum: - hems_operation_update - hems_operation example: hems_operation_update type: string required: - attributes - type type: object wucher_internal_transport_http_dto.HEMSOperationUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationUpdateData' required: - data type: object wucher_internal_transport_http_dto.HEMSOperationalDataAttributes: properties: additional_info: example: Additional information about the operational data type: string altitude: example: 5.2 type: number created_at: example: "2026-03-12T03:04:05Z" type: string created_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string darkness: type: boolean deleted_at: example: "2026-03-12T03:04:05Z" type: string deleted_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string false_information: type: boolean files: items: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationalDataFileAttributes' type: array fog: type: boolean force_present_ids: example: - 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d items: type: string type: array instrument_flight: type: boolean land_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string landing_site_search: type: boolean location: example: 123 Main St, Anytown, USA type: string mountain_use: type: boolean nfo_search: type: boolean night_flight: type: boolean notes: example: Notes about the operational data type: string postcode: example: "12345" type: string precipitation: type: boolean rope_recovery: type: boolean state_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string temperature: example: 23.5 type: number terrain_index: example: Only helicopter landing type: string time: example: "2026-03-12T03:04:05Z" type: string updated_at: example: "2026-03-12T03:04:05Z" type: string updated_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string vocation_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string wind: type: boolean type: object wucher_internal_transport_http_dto.HEMSOperationalDataCreateAttributes: properties: additional_info: example: Additional information about the operational data type: string altitude: example: 5.2 type: number darkness: type: boolean false_information: type: boolean file_attachment_ids: example: - 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d items: type: string type: array fog: type: boolean force_present_ids: example: - 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d items: type: string type: array instrument_flight: type: boolean land_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string landing_site_search: type: boolean location: example: 123 Main St, Anytown, USA type: string mountain_use: type: boolean nfo_search: type: boolean night_flight: type: boolean notes: example: Notes about the operational data type: string postcode: example: "12345" type: string precipitation: type: boolean rope_recovery: type: boolean state_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string temperature: example: 23.5 type: number terrain_index: example: Only helicopter landing type: string time: example: "2026-03-12T03:04:05Z" type: string vocation_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string wind: type: boolean required: - location - time type: object wucher_internal_transport_http_dto.HEMSOperationalDataCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationalDataCreateAttributes' type: enum: - hems_operational_data_create - hems_operational_data example: hems_operational_data_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto.HEMSOperationalDataCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationalDataCreateData' required: - data type: object wucher_internal_transport_http_dto.HEMSOperationalDataDataTableResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationalDataResource' type: array meta: properties: draw: example: 1 type: integer records_filtered: example: 12 type: integer records_total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.HEMSOperationalDataFileAttributes: properties: file_attachment_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: object wucher_internal_transport_http_dto.HEMSOperationalDataListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationalDataResource' type: array meta: properties: page_number: example: 1 type: integer page_size: example: 20 type: integer total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.HEMSOperationalDataResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationalDataAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: hems_operational_data type: string type: object wucher_internal_transport_http_dto.HEMSOperationalDataResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationalDataResource' type: object wucher_internal_transport_http_dto.HEMSOperationalDataUpdateAttributes: properties: additional_info: example: Additional information about the operational data type: string altitude: example: 5.2 type: number darkness: type: boolean false_information: type: boolean file_attachment_ids: items: type: string type: array fog: type: boolean force_present_ids: items: type: string type: array instrument_flight: type: boolean land_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string landing_site_search: type: boolean location: example: 123 Main St, Anytown, USA type: string mountain_use: type: boolean nfo_search: type: boolean night_flight: type: boolean notes: example: Notes about the operational data type: string postcode: example: "12345" type: string precipitation: type: boolean rope_recovery: type: boolean state_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string temperature: example: 23.5 type: number terrain_index: example: Only helicopter landing type: string time: example: "2026-03-12T03:04:05Z" type: string vocation_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string wind: type: boolean type: object wucher_internal_transport_http_dto.HEMSOperationalDataUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationalDataUpdateAttributes' type: enum: - hems_operational_data_update - hems_operational_data example: hems_operational_data_update type: string required: - attributes - type type: object wucher_internal_transport_http_dto.HEMSOperationalDataUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationalDataUpdateData' required: - data type: object wucher_internal_transport_http_dto.HealthInsuranceCompanyAttributes: properties: address: example: Main Street 10 type: string created_at: example: "2026-03-12T03:04:05Z" type: string created_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string deleted_at: example: "2026-03-12T03:04:05Z" type: string deleted_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string email: example: info@abc-insurance.local type: string federal_state: example: Bayern type: string federal_state_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string is_active: example: true type: boolean land_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string land_iso_code: example: DE type: string land_name: example: Germany type: string mobile_number: example: "+4912345678" type: string name: example: ABC Insurance type: string note: example: Preferred insurance provider type: string sortkey: example: 1 type: integer state: example: Berlin type: string updated_at: example: "2026-03-12T03:04:05Z" type: string updated_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: object wucher_internal_transport_http_dto.HealthInsuranceCompanyCreateAttributes: properties: address: example: Main Street 10 type: string email: example: info@abc-insurance.local type: string is_active: example: true type: boolean land_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string mobile_number: example: "+4912345678" type: string name: example: ABC Insurance type: string note: example: Preferred insurance provider type: string sortkey: example: 1 type: integer state: example: Berlin type: string required: - name type: object wucher_internal_transport_http_dto.HealthInsuranceCompanyCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.HealthInsuranceCompanyCreateAttributes' type: enum: - health_insurance_company_create - health_insurance_company example: health_insurance_company_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto.HealthInsuranceCompanyCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.HealthInsuranceCompanyCreateData' required: - data type: object wucher_internal_transport_http_dto.HealthInsuranceCompanyDataTableResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.HealthInsuranceCompanyResource' type: array meta: properties: draw: example: 1 type: integer records_filtered: example: 12 type: integer records_total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.HealthInsuranceCompanyListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.HealthInsuranceCompanyResource' type: array meta: properties: page_number: example: 1 type: integer page_size: example: 20 type: integer total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.HealthInsuranceCompanyResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.HealthInsuranceCompanyAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: health_insurance_company type: string type: object wucher_internal_transport_http_dto.HealthInsuranceCompanyResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.HealthInsuranceCompanyResource' type: object wucher_internal_transport_http_dto.HealthInsuranceCompanyUpdateAttributes: properties: address: example: Main Street 10 type: string email: example: info@abc-insurance.local type: string is_active: example: true type: boolean land_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string mobile_number: example: "+4912345678" type: string name: example: ABC Insurance type: string note: example: Preferred insurance provider type: string sortkey: example: 1 type: integer state: example: Berlin type: string type: object wucher_internal_transport_http_dto.HealthInsuranceCompanyUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.HealthInsuranceCompanyUpdateAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: enum: - health_insurance_company_update - health_insurance_company example: health_insurance_company_update type: string required: - attributes - type type: object wucher_internal_transport_http_dto.HealthInsuranceCompanyUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.HealthInsuranceCompanyUpdateData' required: - data type: object wucher_internal_transport_http_dto.HelicopterUsageAttributes: properties: created_at: example: "2026-03-12T03:04:05Z" type: string created_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string deleted_at: example: "2026-03-12T03:04:05Z" type: string deleted_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string helicopter_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string total_airframe_cycles: example: 320 type: number total_airframe_hours: example: 1523.5 type: number total_engine_1_ccc: example: 44 type: number total_engine_1_gpc_ng_n1: example: 98.7 type: number total_engine_1_hours: example: 1523.5 type: number total_engine_1_ptc_nf_n2: example: 97.2 type: number total_engine_2_ccc: example: 44 type: number total_engine_2_gpc_ng_n1: example: 98.7 type: number total_engine_2_hours: example: 1523.5 type: number total_engine_2_ptc_nf_n2: example: 97.2 type: number total_flight_report: example: 80 type: number total_hook_release: example: 10 type: number total_landing: example: 120 type: number total_rotor_brake_cycle: example: 8 type: number updated_at: example: "2026-03-12T03:04:05Z" type: string updated_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: object wucher_internal_transport_http_dto.HelicopterUsageCreateAttributes: properties: helicopter_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string total_airframe_cycles: example: 320 type: number total_airframe_hours: example: 1523.5 type: number total_engine_1_ccc: example: 44 type: number total_engine_1_gpc_ng_n1: example: 98.7 type: number total_engine_1_hours: example: 1523.5 type: number total_engine_1_ptc_nf_n2: example: 97.2 type: number total_engine_2_ccc: example: 44 type: number total_engine_2_gpc_ng_n1: example: 98.7 type: number total_engine_2_hours: example: 1523.5 type: number total_engine_2_ptc_nf_n2: example: 97.2 type: number total_flight_report: example: 80 type: number total_hook_release: example: 10 type: number total_landing: example: 120 type: number total_rotor_brake_cycle: example: 8 type: number required: - helicopter_id type: object wucher_internal_transport_http_dto.HelicopterUsageCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.HelicopterUsageCreateAttributes' type: enum: - helicopter_usage_create - helicopter_usage example: helicopter_usage_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto.HelicopterUsageCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.HelicopterUsageCreateData' required: - data type: object wucher_internal_transport_http_dto.HelicopterUsageListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.HelicopterUsageResource' type: array meta: properties: page_number: example: 1 type: integer page_size: example: 20 type: integer total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.HelicopterUsageResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.HelicopterUsageAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: helicopter_usage type: string type: object wucher_internal_transport_http_dto.HelicopterUsageResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.HelicopterUsageResource' type: object wucher_internal_transport_http_dto.HelicopterUsageUpdateAttributes: properties: helicopter_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string total_airframe_cycles: example: 320 type: number total_airframe_hours: example: 1523.5 type: number total_engine_1_ccc: example: 44 type: number total_engine_1_gpc_ng_n1: example: 98.7 type: number total_engine_1_hours: example: 1523.5 type: number total_engine_1_ptc_nf_n2: example: 97.2 type: number total_engine_2_ccc: example: 44 type: number total_engine_2_gpc_ng_n1: example: 98.7 type: number total_engine_2_hours: example: 1523.5 type: number total_engine_2_ptc_nf_n2: example: 97.2 type: number total_flight_report: example: 80 type: number total_hook_release: example: 10 type: number total_landing: example: 120 type: number total_rotor_brake_cycle: example: 8 type: number type: object wucher_internal_transport_http_dto.HelicopterUsageUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.HelicopterUsageUpdateAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: enum: - helicopter_usage_update - helicopter_usage example: helicopter_usage_update type: string required: - attributes - type type: object wucher_internal_transport_http_dto.HelicopterUsageUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.HelicopterUsageUpdateData' required: - data type: object wucher_internal_transport_http_dto.HospitalAttributes: properties: address: example: Jl. Merdeka No. 10 type: string created_at: example: "2026-03-12T03:04:05Z" type: string created_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string deleted_at: example: "2026-03-12T03:04:05Z" type: string deleted_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string email: example: info@hospital.local type: string is_active: example: true type: boolean landline_number: example: "0211234567" type: string mobile_number: example: "08123456789" type: string name: example: RSUD Kota type: string note: example: Nearest trauma center type: string sortkey: example: 1 type: integer updated_at: example: "2026-03-12T03:04:05Z" type: string updated_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: object wucher_internal_transport_http_dto.HospitalCreateAttributes: properties: address: example: Jl. Merdeka No. 10 type: string email: example: info@hospital.local type: string is_active: example: true type: boolean landline_number: example: "0211234567" type: string mobile_number: example: "08123456789" type: string name: example: RSUD Kota type: string note: example: Nearest trauma center type: string sortkey: example: 1 type: integer required: - name type: object wucher_internal_transport_http_dto.HospitalCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.HospitalCreateAttributes' type: enum: - hospital_create - hospital example: hospital_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto.HospitalCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.HospitalCreateData' required: - data type: object wucher_internal_transport_http_dto.HospitalDataTableResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.HospitalResource' type: array meta: properties: draw: example: 1 type: integer records_filtered: example: 12 type: integer records_total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.HospitalListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.HospitalResource' type: array meta: properties: page_number: example: 1 type: integer page_size: example: 20 type: integer total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.HospitalResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.HospitalAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: hospital type: string type: object wucher_internal_transport_http_dto.HospitalResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.HospitalResource' type: object wucher_internal_transport_http_dto.HospitalUpdateAttributes: properties: address: example: Jl. Merdeka No. 10 type: string email: example: info@hospital.local type: string is_active: example: true type: boolean landline_number: example: "0211234567" type: string mobile_number: example: "08123456789" type: string name: example: RSUD Kota type: string note: example: Nearest trauma center type: string sortkey: example: 1 type: integer type: object wucher_internal_transport_http_dto.HospitalUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.HospitalUpdateAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: enum: - hospital_update - hospital example: hospital_update type: string required: - attributes - type type: object wucher_internal_transport_http_dto.HospitalUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.HospitalUpdateData' required: - data type: object wucher_internal_transport_http_dto.ICAOAttributes: properties: address: example: Muehlenstrasse 1 type: string created_at: example: "2026-03-12T03:04:05Z" type: string created_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string deleted_at: example: "2026-03-12T03:04:05Z" type: string deleted_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string email: example: ops@example.local type: string federal_state: example: Bayern type: string federal_state_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string icao_code: example: EDDB type: string is_active: example: true type: boolean land_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string land_iso_code: example: DE type: string land_name: example: Germany type: string landline_number: example: "030123456" type: string mobile_number: example: "0170123456" type: string name: example: Berlin Base type: string note: example: Night operations supported type: string sortkey: example: 1 type: integer updated_at: example: "2026-03-12T03:04:05Z" type: string updated_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: object wucher_internal_transport_http_dto.ICAOCreateAttributes: properties: address: example: Muehlenstrasse 1 type: string email: example: ops@example.local type: string federal_state_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string icao_code: example: EDDB type: string is_active: example: true type: boolean land_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string landline_number: example: "030123456" type: string mobile_number: example: "0170123456" type: string name: example: Berlin Base type: string note: example: Night operations supported type: string sortkey: example: 1 type: integer required: - icao_code type: object wucher_internal_transport_http_dto.ICAOCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.ICAOCreateAttributes' type: enum: - icao_create - icao example: icao_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto.ICAOCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.ICAOCreateData' required: - data type: object wucher_internal_transport_http_dto.ICAODataTableResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.ICAOResource' type: array meta: properties: draw: example: 1 type: integer records_filtered: example: 12 type: integer records_total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.ICAOListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.ICAOResource' type: array meta: properties: page_number: example: 1 type: integer page_size: example: 20 type: integer total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.ICAOResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.ICAOAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: icao type: string type: object wucher_internal_transport_http_dto.ICAOResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.ICAOResource' type: object wucher_internal_transport_http_dto.ICAOUpdateAttributes: properties: address: example: Muehlenstrasse 1 type: string email: example: ops@example.local type: string federal_state_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string icao_code: example: EDDB type: string is_active: example: true type: boolean land_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string landline_number: example: "030123456" type: string mobile_number: example: "0170123456" type: string name: example: Berlin Base type: string note: example: Night operations supported type: string sortkey: example: 1 type: integer type: object wucher_internal_transport_http_dto.ICAOUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.ICAOUpdateAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: enum: - icao_update - icao example: icao_update type: string required: - attributes - type type: object wucher_internal_transport_http_dto.ICAOUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.ICAOUpdateData' required: - data type: object wucher_internal_transport_http_dto.InsurancePatientDataAttributes: properties: created_at: example: "2026-03-12T03:04:05Z" type: string created_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string deleted_at: example: "2026-03-12T03:04:05Z" type: string deleted_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string federal_state: $ref: '#/definitions/wucher_internal_transport_http_dto.InsurancePatientDataFederalState' federal_state_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string health_insurance_companies_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string health_insurance_company: $ref: '#/definitions/wucher_internal_transport_http_dto.InsurancePatientDataHealthInsuranceCompany' updated_at: example: "2026-03-12T03:04:05Z" type: string updated_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: object wucher_internal_transport_http_dto.InsurancePatientDataCreateAttributes: properties: federal_state_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string health_insurance_companies_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string required: - federal_state_id - health_insurance_companies_id type: object wucher_internal_transport_http_dto.InsurancePatientDataCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.InsurancePatientDataCreateAttributes' type: enum: - insurance_patient_data_create - insurance_patient_data example: insurance_patient_data_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto.InsurancePatientDataCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.InsurancePatientDataCreateData' required: - data type: object wucher_internal_transport_http_dto.InsurancePatientDataDataTableResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.InsurancePatientDataResource' type: array meta: properties: draw: example: 1 type: integer records_filtered: example: 12 type: integer records_total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.InsurancePatientDataFederalState: properties: id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string name: example: Bayern type: string type: object wucher_internal_transport_http_dto.InsurancePatientDataHealthInsuranceCompany: properties: address: example: Main Street 10 type: string email: example: info@abc-insurance.local type: string id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string mobile_number: example: "+4912345678" type: string name: example: ABC Insurance type: string state: example: Berlin type: string type: object wucher_internal_transport_http_dto.InsurancePatientDataListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.InsurancePatientDataResource' type: array meta: properties: page_number: example: 1 type: integer page_size: example: 20 type: integer total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.InsurancePatientDataResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.InsurancePatientDataAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: insurance_patient_data type: string type: object wucher_internal_transport_http_dto.InsurancePatientDataResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.InsurancePatientDataResource' type: object wucher_internal_transport_http_dto.InsurancePatientDataUpdateAttributes: properties: federal_state_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string health_insurance_companies_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: object wucher_internal_transport_http_dto.InsurancePatientDataUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.InsurancePatientDataUpdateAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: enum: - insurance_patient_data_update - insurance_patient_data example: insurance_patient_data_update type: string required: - attributes - type type: object wucher_internal_transport_http_dto.InsurancePatientDataUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.InsurancePatientDataUpdateData' required: - data type: object wucher_internal_transport_http_dto.InviteAttributes: properties: email: example: user@example.com type: string first_name: example: John type: string last_name: example: Doe type: string mobile_phone: example: "+628123456789" type: string role_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string role_ids: example: - '["018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"' - '"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9e"]' items: type: string type: array username: example: john.doe maxLength: 100 minLength: 3 type: string required: - email - first_name - last_name - role_id - username type: object wucher_internal_transport_http_dto.InviteData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.InviteAttributes' type: example: auth_invite type: string required: - attributes - type type: object wucher_internal_transport_http_dto.InviteRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.InviteData' required: - data type: object wucher_internal_transport_http_dto.LandAttributes: properties: bmd_export_id: example: DE001 type: string created_at: example: "2026-03-12T03:04:05Z" type: string created_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string deleted_at: example: "2026-03-12T03:04:05Z" type: string deleted_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string federal_state_list: items: $ref: '#/definitions/wucher_internal_transport_http_dto.LandFederalStateDTO' type: array federal_state_total: example: 2 type: integer is_active: example: true type: boolean iso_code: example: DE type: string name: example: Germany type: string note: example: Central Europe type: string sortkey: example: 1 type: integer updated_at: example: "2026-03-12T03:04:05Z" type: string updated_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: object wucher_internal_transport_http_dto.LandCreateAttributes: properties: bmd_export_id: example: DE001 type: string is_active: example: true type: boolean iso_code: example: DE type: string name: example: Germany type: string note: example: Central Europe type: string sortkey: example: 1 type: integer required: - name type: object wucher_internal_transport_http_dto.LandCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.LandCreateAttributes' type: enum: - land_create - land example: land_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto.LandCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.LandCreateData' required: - data type: object wucher_internal_transport_http_dto.LandDataTableResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.LandResource' type: array meta: properties: draw: example: 1 type: integer records_filtered: example: 12 type: integer records_total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.LandFederalStateDTO: properties: id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string name: example: Bayern type: string type: object wucher_internal_transport_http_dto.LandListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.LandResource' type: array meta: properties: page_number: example: 1 type: integer page_size: example: 20 type: integer total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.LandResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.LandAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: land type: string type: object wucher_internal_transport_http_dto.LandResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.LandResource' type: object wucher_internal_transport_http_dto.LandUpdateAttributes: properties: bmd_export_id: example: DE001 type: string is_active: example: true type: boolean iso_code: example: DE type: string name: example: Germany type: string note: example: Central Europe type: string sortkey: example: 1 type: integer type: object wucher_internal_transport_http_dto.LandUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.LandUpdateAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: enum: - land_update - land example: land_update type: string required: - attributes - type type: object wucher_internal_transport_http_dto.LandUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.LandUpdateData' required: - data type: object wucher_internal_transport_http_dto.LoginAttributes: properties: email: example: user@example.com type: string password: example: StrongP@ssw0rd type: string required: - email - password type: object wucher_internal_transport_http_dto.LoginData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.LoginAttributes' type: example: auth_login type: string required: - attributes - type type: object wucher_internal_transport_http_dto.LoginEmailOTPRequiredResponse: properties: data: properties: attributes: properties: challenge_token: example: kP8k2... type: string linked_sso: example: false type: boolean max_resend_per_hour: example: 5 type: integer pin_configured: example: false type: boolean requires_email_otp: example: true type: boolean requires_totp_setup: example: true type: boolean resend_cooldown_seconds: example: 60 type: integer webauthn_configured: example: false type: boolean type: object type: example: auth_email_otp_required type: string type: object type: object wucher_internal_transport_http_dto.LoginRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.LoginData' required: - data type: object wucher_internal_transport_http_dto.LoginTOTPRequiredResponse: properties: data: properties: attributes: properties: challenge_token: example: kP8k2... type: string email_otp_challenge_token: example: qA9j1... type: string email_otp_enabled: example: false type: boolean email_otp_max_resend_per_hour: example: 5 type: integer email_otp_resend_cooldown_seconds: example: 60 type: integer linked_sso: example: false type: boolean pin_configured: example: false type: boolean requires_totp: example: true type: boolean totp_enabled: example: true type: boolean webauthn_configured: example: false type: boolean type: object type: example: auth_totp_required type: string type: object type: object wucher_internal_transport_http_dto.MedicineAttributes: properties: column: example: 1 type: integer created_at: example: "2026-03-12T03:04:05Z" type: string created_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string deleted_at: example: "2026-03-12T03:04:05Z" type: string deleted_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string is_active: example: true type: boolean medicine_group: $ref: '#/definitions/wucher_internal_transport_http_dto.MedicineGroupResource' medicine_group_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string motor_reaction: $ref: '#/definitions/wucher_internal_transport_http_dto.MotorReactionResource' motor_reaction_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string motor_reaction_ids: example: - 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d items: type: string type: array motor_reactions: items: $ref: '#/definitions/wucher_internal_transport_http_dto.MotorReactionResource' type: array name: example: Paracetamol type: string note: example: Main stock medicine type: string pack: example: 500mg type: string sortkey: example: 1 type: integer unit: example: tablet type: string updated_at: example: "2026-03-12T03:04:05Z" type: string updated_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: object wucher_internal_transport_http_dto.MedicineCreateAttributes: properties: column: example: 1 type: integer is_active: example: true type: boolean medicine_group_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string motor_reaction_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string motor_reaction_ids: example: - 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d items: type: string type: array name: example: Paracetamol type: string note: example: Main stock medicine type: string pack: example: 500mg type: string sortkey: example: 1 type: integer unit: example: tablet maxLength: 50 type: string required: - name type: object wucher_internal_transport_http_dto.MedicineCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.MedicineCreateAttributes' type: enum: - medicine_create - medicine example: medicine_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto.MedicineCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.MedicineCreateData' required: - data type: object wucher_internal_transport_http_dto.MedicineDataTableResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.MedicineResource' type: array meta: properties: draw: example: 1 type: integer records_filtered: example: 12 type: integer records_total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.MedicineGroupAttributes: properties: created_at: example: "2026-03-12T03:04:05Z" type: string created_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string deleted_at: example: "2026-03-12T03:04:05Z" type: string deleted_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string name: example: Spritze type: string updated_at: example: "2026-03-12T03:04:05Z" type: string updated_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: object wucher_internal_transport_http_dto.MedicineGroupCreateAttributes: properties: name: example: Spritze type: string required: - name type: object wucher_internal_transport_http_dto.MedicineGroupCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.MedicineGroupCreateAttributes' type: enum: - medicine_group_create - medicine_group example: medicine_group_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto.MedicineGroupCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.MedicineGroupCreateData' required: - data type: object wucher_internal_transport_http_dto.MedicineGroupDataTableResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.MedicineGroupResource' type: array meta: properties: draw: example: 1 type: integer records_filtered: example: 12 type: integer records_total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.MedicineGroupListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.MedicineGroupResource' type: array meta: properties: page_number: example: 1 type: integer page_size: example: 20 type: integer total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.MedicineGroupResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.MedicineGroupAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: medicine_group type: string type: object wucher_internal_transport_http_dto.MedicineGroupResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.MedicineGroupResource' type: object wucher_internal_transport_http_dto.MedicineGroupUpdateAttributes: properties: name: example: Spritze type: string type: object wucher_internal_transport_http_dto.MedicineGroupUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.MedicineGroupUpdateAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: enum: - medicine_group_update - medicine_group example: medicine_group_update type: string required: - attributes - type type: object wucher_internal_transport_http_dto.MedicineGroupUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.MedicineGroupUpdateData' required: - data type: object wucher_internal_transport_http_dto.MedicineListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.MedicineResource' type: array meta: properties: page_number: example: 1 type: integer page_size: example: 20 type: integer total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.MedicineResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.MedicineAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: medicine type: string type: object wucher_internal_transport_http_dto.MedicineResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.MedicineResource' type: object wucher_internal_transport_http_dto.MedicineUpdateAttributes: properties: column: example: 1 type: integer is_active: example: true type: boolean medicine_group_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string motor_reaction_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string motor_reaction_ids: example: - 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d items: type: string type: array name: example: Paracetamol type: string note: example: Main stock medicine type: string pack: example: 500mg type: string sortkey: example: 1 type: integer unit: example: tablet maxLength: 50 type: string type: object wucher_internal_transport_http_dto.MedicineUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.MedicineUpdateAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: enum: - medicine_update - medicine example: medicine_update type: string required: - attributes - type type: object wucher_internal_transport_http_dto.MedicineUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.MedicineUpdateData' required: - data type: object wucher_internal_transport_http_dto.MicrosoftCallbackResponse: properties: data: properties: attributes: properties: email: example: user@example.com type: string provider: example: microsoft type: string provider_subject: example: 00000000-0000-0000-0000-000000000000 type: string type: object id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: auth_identity type: string type: object type: object wucher_internal_transport_http_dto.MicrosoftLoginResponse: properties: data: properties: attributes: properties: redirect_url: example: https://login.microsoftonline.com/... type: string url: example: https://login.microsoftonline.com/... type: string type: object type: example: auth_microsoft_url type: string type: object type: object wucher_internal_transport_http_dto.MotorReactionAttributes: properties: created_at: example: "2026-03-12T03:04:05Z" type: string created_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string deleted_at: example: "2026-03-12T03:04:05Z" type: string deleted_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string name: example: gezielt auf Schmerzreiz type: string score: example: 5 type: integer updated_at: example: "2026-03-12T03:04:05Z" type: string updated_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: object wucher_internal_transport_http_dto.MotorReactionCreateAttributes: properties: name: example: gezielt auf Schmerzreiz type: string score: example: 5 type: integer required: - name type: object wucher_internal_transport_http_dto.MotorReactionCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.MotorReactionCreateAttributes' type: enum: - motor_reaction_create - motor_reaction example: motor_reaction_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto.MotorReactionCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.MotorReactionCreateData' required: - data type: object wucher_internal_transport_http_dto.MotorReactionDataTableResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.MotorReactionResource' type: array meta: properties: draw: example: 1 type: integer records_filtered: example: 12 type: integer records_total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.MotorReactionListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.MotorReactionResource' type: array meta: properties: page_number: example: 1 type: integer page_size: example: 20 type: integer total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.MotorReactionResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.MotorReactionAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: motor_reaction type: string type: object wucher_internal_transport_http_dto.MotorReactionResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.MotorReactionResource' type: object wucher_internal_transport_http_dto.MotorReactionUpdateAttributes: properties: name: example: gezielt auf Schmerzreiz type: string score: example: 5 type: integer type: object wucher_internal_transport_http_dto.MotorReactionUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.MotorReactionUpdateAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: enum: - motor_reaction_update - motor_reaction example: motor_reaction_update type: string required: - attributes - type type: object wucher_internal_transport_http_dto.MotorReactionUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.MotorReactionUpdateData' required: - data type: object wucher_internal_transport_http_dto.OpcAttributes: properties: created_at: example: "2026-03-12T03:04:05Z" type: string created_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string deleted_at: example: "2026-03-12T03:04:05Z" type: string deleted_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string is_active: example: true type: boolean note: example: Primary operation control center type: string sortkey: example: 1 type: integer title: example: Main OPC Base type: string updated_at: example: "2026-03-12T03:04:05Z" type: string updated_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: object wucher_internal_transport_http_dto.OpcCreateAttributes: properties: is_active: example: true type: boolean note: example: Primary operation control center type: string sortkey: example: 1 type: integer title: example: Main OPC Base type: string required: - title type: object wucher_internal_transport_http_dto.OpcCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.OpcCreateAttributes' type: enum: - opc_create - opc example: opc_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto.OpcCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.OpcCreateData' required: - data type: object wucher_internal_transport_http_dto.OpcDataTableResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.OpcResource' type: array meta: properties: draw: example: 1 type: integer records_filtered: example: 12 type: integer records_total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.OpcListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.OpcResource' type: array meta: properties: page_number: example: 1 type: integer page_size: example: 20 type: integer total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.OpcResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.OpcAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: opc type: string type: object wucher_internal_transport_http_dto.OpcResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.OpcResource' type: object wucher_internal_transport_http_dto.OpcUpdateAttributes: properties: is_active: example: true type: boolean note: example: Primary operation control center type: string sortkey: example: 1 type: integer title: example: Main OPC Base type: string type: object wucher_internal_transport_http_dto.OpcUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.OpcUpdateAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: enum: - opc_update - opc example: opc_update type: string required: - attributes - type type: object wucher_internal_transport_http_dto.OpcUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.OpcUpdateData' required: - data type: object wucher_internal_transport_http_dto.PatientDataAttributes: properties: age: example: 35 type: integer birth_date: example: "1990-01-15" type: string co_insured: example: false type: boolean created_at: example: "2026-03-12T03:04:05Z" type: string created_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string deleted_at: example: "2026-03-12T03:04:05Z" type: string deleted_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string email: example: max.muster@example.com type: string family_name: example: Muster type: string first_name: example: Max type: string gender: example: male type: string insurance_patient_data: $ref: '#/definitions/wucher_internal_transport_http_dto.PatientDataInsuranceDetail' insurance_patient_data_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string opc: $ref: '#/definitions/wucher_internal_transport_http_dto.PatientDataOPC' opc_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string phone: example: "+431234567" type: string street: example: Hauptstraße 1 type: string svnr: example: "1234150190" type: string updated_at: example: "2026-03-12T03:04:05Z" type: string updated_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: object wucher_internal_transport_http_dto.PatientDataCreateAttributes: properties: birth_date: example: "1990-01-15" type: string co_insured: example: false type: boolean email: example: max.muster@example.com type: string family_name: example: Muster type: string first_name: example: Max type: string gender: enum: - male - female example: male type: string insurance_patient_data_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string opc_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string phone: example: "+431234567" type: string street: example: Hauptstraße 1 type: string svnr: example: "1234150190" type: string required: - family_name - first_name - gender type: object wucher_internal_transport_http_dto.PatientDataCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.PatientDataCreateAttributes' type: enum: - patient_data_create - patient_data example: patient_data_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto.PatientDataCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.PatientDataCreateData' required: - data type: object wucher_internal_transport_http_dto.PatientDataDataTableResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.PatientDataResource' type: array meta: properties: draw: example: 1 type: integer records_filtered: example: 12 type: integer records_total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.PatientDataInsuranceDetail: properties: federal_state: $ref: '#/definitions/wucher_internal_transport_http_dto.InsurancePatientDataFederalState' federal_state_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string health_insurance_companies_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string health_insurance_company: $ref: '#/definitions/wucher_internal_transport_http_dto.InsurancePatientDataHealthInsuranceCompany' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: object wucher_internal_transport_http_dto.PatientDataListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.PatientDataResource' type: array meta: properties: page_number: example: 1 type: integer page_size: example: 20 type: integer total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.PatientDataOPC: properties: id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string title: example: Primary OPC type: string type: object wucher_internal_transport_http_dto.PatientDataResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.PatientDataAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: patient_data type: string type: object wucher_internal_transport_http_dto.PatientDataResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.PatientDataResource' type: object wucher_internal_transport_http_dto.PatientDataUpdateAttributes: properties: birth_date: example: "1990-01-15" type: string co_insured: example: false type: boolean email: example: max.muster@example.com type: string family_name: example: Muster type: string first_name: example: Max type: string gender: example: male type: string insurance_patient_data_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string opc_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string phone: example: "+431234567" type: string street: example: Hauptstraße 1 type: string svnr: example: "1234150190" type: string type: object wucher_internal_transport_http_dto.PatientDataUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.PatientDataUpdateAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: enum: - patient_data_update - patient_data example: patient_data_update type: string required: - attributes - type type: object wucher_internal_transport_http_dto.PatientDataUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.PatientDataUpdateData' required: - data type: object wucher_internal_transport_http_dto.PermissionAttributes: properties: created_at: example: "2026-02-05T10:00:00Z" type: string description: example: Allows managing users. type: string key: example: user.manage type: string name: example: User Management type: string requires_pin: example: true type: boolean updated_at: example: "2026-02-05T10:00:00Z" type: string type: object wucher_internal_transport_http_dto.PermissionGroupResource: properties: module: example: dul type: string module_label: example: DUL type: string permissions: items: $ref: '#/definitions/wucher_internal_transport_http_dto.PermissionResource' type: array type: object wucher_internal_transport_http_dto.PermissionGroupedResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.PermissionGroupResource' type: array type: object wucher_internal_transport_http_dto.PermissionListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.PermissionResource' type: array meta: properties: page_number: example: 1 type: integer page_size: example: 20 type: integer total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.PermissionMini: properties: description: example: Permission to view users. type: string id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9a type: string key: example: users.read type: string name: example: View Users type: string requires_pin: example: false type: boolean type: object wucher_internal_transport_http_dto.PermissionResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.PermissionAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: permission type: string type: object wucher_internal_transport_http_dto.PermissionUpdateAttributes: properties: requires_pin: example: true type: boolean required: - requires_pin type: object wucher_internal_transport_http_dto.PermissionUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.PermissionUpdateAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: enum: - permission_update - permission example: permission_update type: string required: - attributes - type type: object wucher_internal_transport_http_dto.PermissionUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.PermissionUpdateData' required: - data type: object wucher_internal_transport_http_dto.PilotProfileAttributes: properties: double_command_minutes: type: integer dul_base: items: $ref: '#/definitions/wucher_internal_transport_http_dto.DULBase' type: array flight_instructor_minutes: type: integer has_ifr_qualification: type: boolean ifr_flight_minutes: type: integer is_chief_pilot: type: boolean license_expired_at: type: string license_issued_at: type: string license_no: maxLength: 120 type: string location: maxLength: 255 type: string night_flight_minutes: type: integer note: type: string pilot_category: enum: - regular - freelance - dry_lease type: string postcode: maxLength: 32 type: string responsible_pilot_minutes: type: integer second_pilot_minutes: type: integer short_name: maxLength: 120 type: string street_line: maxLength: 255 type: string technician_license_no: maxLength: 120 type: string total_flight_minutes: type: integer weight_kg: type: number type: object wucher_internal_transport_http_dto.PilotProfileUpdateAttributes: properties: double_command_minutes: type: integer dul_base: items: $ref: '#/definitions/wucher_internal_transport_http_dto.DULBase' type: array flight_instructor_minutes: type: integer has_ifr_qualification: type: boolean ifr_flight_minutes: type: integer is_chief_pilot: type: boolean license_expired_at: type: string license_issued_at: type: string license_no: maxLength: 120 type: string location: maxLength: 255 type: string night_flight_minutes: type: integer note: type: string pilot_category: enum: - regular - freelance - dry_lease type: string postcode: maxLength: 32 type: string responsible_pilot_minutes: type: integer second_pilot_minutes: type: integer short_name: maxLength: 120 type: string street_line: maxLength: 255 type: string technician_license_no: maxLength: 120 type: string total_flight_minutes: type: integer weight_kg: type: number type: object wucher_internal_transport_http_dto.ReauthAttributes: properties: method: enum: - pin - password example: pin type: string password: example: StrongP@ssw0rd minLength: 1 type: string required: - method type: object wucher_internal_transport_http_dto.RegisterAttributes: properties: email: example: user@example.com type: string first_name: example: John type: string last_name: example: Doe type: string mobile_phone: example: "+628123456789" type: string password: example: StrongP@ssw0rd minLength: 8 type: string username: example: john.doe maxLength: 100 minLength: 3 type: string required: - email - first_name - last_name - password - username type: object wucher_internal_transport_http_dto.RegisterData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.RegisterAttributes' type: example: auth_register type: string required: - attributes - type type: object wucher_internal_transport_http_dto.RegisterRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.RegisterData' required: - data type: object wucher_internal_transport_http_dto.RequestSecurityPINAttributes: properties: method: example: password type: string password: example: StrongP@ssw0rd type: string reauth_token: example: sso_reauth_1234567890abcdef type: string type: object wucher_internal_transport_http_dto.RequestSecurityPINData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.RequestSecurityPINAttributes' type: example: auth_pin_request_reset type: string required: - attributes - type type: object wucher_internal_transport_http_dto.RequestSecurityPINRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.RequestSecurityPINData' required: - data type: object wucher_internal_transport_http_dto.RequestSecurityPINResetResponse: properties: data: properties: attributes: properties: message: example: If allowed, a security PIN reset link has been sent to your email. type: string type: object type: example: auth_pin_request_reset type: string type: object type: object wucher_internal_transport_http_dto.ResendSetPasswordInviteAttributes: properties: user_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string required: - user_id type: object wucher_internal_transport_http_dto.ResendSetPasswordInviteData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.ResendSetPasswordInviteAttributes' type: example: auth_resend_set_password type: string required: - attributes - type type: object wucher_internal_transport_http_dto.ResendSetPasswordInviteRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.ResendSetPasswordInviteData' required: - data type: object wucher_internal_transport_http_dto.ResetPasswordAttributes: properties: confirm_password: example: StrongP@ssw0rd!LongPassphrase minLength: 8 type: string new_password: example: StrongP@ssw0rd!LongPassphrase minLength: 8 type: string token: example: kP8k2... type: string required: - confirm_password - new_password - token type: object wucher_internal_transport_http_dto.ResetPasswordData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.ResetPasswordAttributes' type: example: auth_reset_password type: string required: - attributes - type type: object wucher_internal_transport_http_dto.ResetPasswordRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.ResetPasswordData' required: - data type: object wucher_internal_transport_http_dto.ResetSecurityPINAttributes: properties: confirm_pin: example: "123456" type: string method: example: password type: string new_pin: example: "123456" type: string password: example: StrongP@ssw0rd type: string reauth_token: example: sso_reauth_1234567890abcdef type: string token: example: kP8k2... type: string required: - confirm_pin - new_pin type: object wucher_internal_transport_http_dto.ResetSecurityPINData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.ResetSecurityPINAttributes' type: example: auth_reset_pin type: string required: - attributes - type type: object wucher_internal_transport_http_dto.ResetSecurityPINRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.ResetSecurityPINData' required: - data type: object wucher_internal_transport_http_dto.RoleAttributes: properties: created_at: example: "2026-02-05T10:00:00Z" type: string created_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string description: example: Full access to all resources. type: string name: example: admin type: string updated_at: example: "2026-02-05T10:00:00Z" type: string type: object wucher_internal_transport_http_dto.RoleCreateAttributes: properties: description: example: Full access to all resources. type: string name: example: admin type: string required: - name type: object wucher_internal_transport_http_dto.RoleCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.RoleCreateAttributes' type: enum: - role_create - role example: role_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto.RoleCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.RoleCreateData' required: - data type: object wucher_internal_transport_http_dto.RoleDataTableResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.RoleResource' type: array meta: properties: draw: example: 1 type: integer records_filtered: example: 12 type: integer records_total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.RoleListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.RoleResource' type: array meta: properties: page_number: example: 1 type: integer page_size: example: 20 type: integer total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.RoleMini: properties: description: example: Full access to all resources. type: string id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string name: example: admin type: string type: object wucher_internal_transport_http_dto.RolePermissionAssignAttributes: properties: permission_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9e type: string required: - permission_id type: object wucher_internal_transport_http_dto.RolePermissionAssignBulkData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.RolePermissionBulkAttributes' type: example: role_assign_permission_bulk type: string required: - attributes - type type: object wucher_internal_transport_http_dto.RolePermissionAssignBulkRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.RolePermissionAssignBulkData' required: - data type: object wucher_internal_transport_http_dto.RolePermissionAssignData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.RolePermissionAssignAttributes' type: example: role_permission type: string required: - attributes - type type: object wucher_internal_transport_http_dto.RolePermissionAssignRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.RolePermissionAssignData' required: - data type: object wucher_internal_transport_http_dto.RolePermissionAttributes: properties: permission_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9e type: string role_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: object wucher_internal_transport_http_dto.RolePermissionBulkAttributes: properties: permission_ids: example: - '["018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9e"' - '"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9f"]' items: type: string type: array required: - permission_ids type: object wucher_internal_transport_http_dto.RolePermissionListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.RolePermissionResource' type: array type: object wucher_internal_transport_http_dto.RolePermissionRemoveBulkData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.RolePermissionBulkAttributes' type: example: role_remove_permission_bulk type: string required: - attributes - type type: object wucher_internal_transport_http_dto.RolePermissionRemoveBulkRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.RolePermissionRemoveBulkData' required: - data type: object wucher_internal_transport_http_dto.RolePermissionResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.RolePermissionAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9f type: string type: example: role_permission type: string type: object wucher_internal_transport_http_dto.RolePermissionResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.RolePermissionResource' type: object wucher_internal_transport_http_dto.RoleResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.RoleAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string permissions: items: $ref: '#/definitions/wucher_internal_transport_http_dto.PermissionResource' type: array type: example: role type: string type: object wucher_internal_transport_http_dto.RoleResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.RoleResource' type: object wucher_internal_transport_http_dto.RoleUpdateAttributes: properties: description: example: Full access to all resources. type: string name: example: admin type: string type: object wucher_internal_transport_http_dto.RoleUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.RoleUpdateAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: enum: - role_update - role example: role_update type: string required: - attributes - type type: object wucher_internal_transport_http_dto.RoleUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.RoleUpdateData' required: - data type: object wucher_internal_transport_http_dto.SSOLinkAttributes: properties: code: example: 0.AXkA... type: string provider: example: microsoft type: string required: - code - provider type: object wucher_internal_transport_http_dto.SSOLinkData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.SSOLinkAttributes' type: example: auth_sso_link type: string required: - attributes - type type: object wucher_internal_transport_http_dto.SSOLinkRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.SSOLinkData' required: - data type: object wucher_internal_transport_http_dto.SSOLinkResponse: properties: data: properties: attributes: properties: email: example: user@example.com type: string provider: example: microsoft type: string provider_subject: example: 00000000-0000-0000-0000-000000000000 type: string type: object type: example: auth_sso_link type: string type: object type: object wucher_internal_transport_http_dto.SSOUnlinkAttributes: properties: provider: example: microsoft type: string required: - provider type: object wucher_internal_transport_http_dto.SSOUnlinkData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.SSOUnlinkAttributes' type: example: auth_sso_unlink type: string required: - attributes - type type: object wucher_internal_transport_http_dto.SSOUnlinkRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.SSOUnlinkData' required: - data type: object wucher_internal_transport_http_dto.SSOUnlinkResponse: properties: data: properties: attributes: properties: provider: example: microsoft type: string unlinked: example: true type: boolean type: object type: example: auth_sso_unlink type: string type: object type: object wucher_internal_transport_http_dto.SecurityPINChangeAttributes: properties: confirm_pin: example: "654321" type: string current_pin: example: "123456" type: string new_pin: example: "654321" type: string required: - confirm_pin - current_pin - new_pin type: object wucher_internal_transport_http_dto.SecurityPINChangeData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.SecurityPINChangeAttributes' type: example: auth_pin_change type: string required: - attributes - type type: object wucher_internal_transport_http_dto.SecurityPINChangeRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.SecurityPINChangeData' required: - data type: object wucher_internal_transport_http_dto.SecurityPINSetupAttributes: properties: confirm_pin: example: "123456" type: string pin: example: "123456" type: string required: - confirm_pin - pin type: object wucher_internal_transport_http_dto.SecurityPINSetupData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.SecurityPINSetupAttributes' type: example: auth_pin_setup type: string required: - attributes - type type: object wucher_internal_transport_http_dto.SecurityPINSetupRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.SecurityPINSetupData' required: - data type: object wucher_internal_transport_http_dto.SecurityPINSetupResponse: properties: data: properties: attributes: properties: configured: example: true type: boolean type: object type: example: auth_pin_setup type: string type: object type: object wucher_internal_transport_http_dto.SecurityPINVerifyAttributes: properties: action: example: a546de2f-f1e6-4c2c-ab03-9b4bf39f4d74 type: string pin: example: "123456" type: string required: - action - pin type: object wucher_internal_transport_http_dto.SecurityPINVerifyData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.SecurityPINVerifyAttributes' type: example: auth_pin_verify type: string required: - attributes - type type: object wucher_internal_transport_http_dto.SecurityPINVerifyRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.SecurityPINVerifyData' required: - data type: object wucher_internal_transport_http_dto.SecurityPINVerifyResponse: properties: data: properties: attributes: properties: action_token: example: pinv_1234567890abcdef type: string action_token_ttl_ms: example: 900000 type: integer verified: example: true type: boolean type: object type: example: auth_pin_verify type: string type: object type: object wucher_internal_transport_http_dto.SetPasswordAttributes: properties: password: example: StrongP@ssw0rd minLength: 8 type: string token: example: kP8k2... type: string required: - password - token type: object wucher_internal_transport_http_dto.SetPasswordData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.SetPasswordAttributes' type: example: auth_set_password type: string required: - attributes - type type: object wucher_internal_transport_http_dto.SetPasswordRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.SetPasswordData' required: - data type: object wucher_internal_transport_http_dto.StaffProfileAttributes: properties: location: maxLength: 255 type: string note: type: string postcode: maxLength: 32 type: string role_label: maxLength: 120 type: string short_name: maxLength: 120 type: string street_line: maxLength: 255 type: string type: object wucher_internal_transport_http_dto.StaffProfileUpdateAttributes: properties: location: maxLength: 255 type: string note: type: string postcode: maxLength: 32 type: string role_label: maxLength: 120 type: string short_name: maxLength: 120 type: string street_line: maxLength: 255 type: string type: object wucher_internal_transport_http_dto.TOTPConfirmAttributes: properties: code: example: "123456" type: string user_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string required: - code - user_id type: object wucher_internal_transport_http_dto.TOTPConfirmData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.TOTPConfirmAttributes' type: example: auth_totp_confirm type: string required: - attributes - type type: object wucher_internal_transport_http_dto.TOTPConfirmRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.TOTPConfirmData' required: - data type: object wucher_internal_transport_http_dto.TOTPDisableAttributes: properties: user_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string required: - user_id type: object wucher_internal_transport_http_dto.TOTPDisableData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.TOTPDisableAttributes' type: example: auth_totp_disable type: string required: - attributes - type type: object wucher_internal_transport_http_dto.TOTPDisableRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.TOTPDisableData' required: - data type: object wucher_internal_transport_http_dto.TOTPResetSetupData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.ReauthAttributes' type: example: auth_totp_reset_setup type: string required: - attributes - type type: object wucher_internal_transport_http_dto.TOTPResetSetupRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.TOTPResetSetupData' required: - data type: object wucher_internal_transport_http_dto.TOTPSetupAttributes: properties: email: example: user@example.com type: string user_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string required: - email - user_id type: object wucher_internal_transport_http_dto.TOTPSetupData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.TOTPSetupAttributes' type: example: auth_totp_setup type: string required: - attributes - type type: object wucher_internal_transport_http_dto.TOTPSetupRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.TOTPSetupData' required: - data type: object wucher_internal_transport_http_dto.TOTPSetupResponse: properties: data: properties: attributes: properties: issuer: example: Wucher type: string otpauth_url: example: otpauth://totp/Wucher:user@example.com?... type: string secret: example: JBSWY3DPEHPK3PXP type: string type: object type: example: auth_totp_setup type: string type: object type: object wucher_internal_transport_http_dto.TOTPVerifyAttributes: properties: challenge_token: example: kP8k2... type: string code: example: "123456" type: string required: - challenge_token - code type: object wucher_internal_transport_http_dto.TOTPVerifyData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.TOTPVerifyAttributes' type: example: auth_totp_verify type: string required: - attributes - type type: object wucher_internal_transport_http_dto.TOTPVerifyRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.TOTPVerifyData' required: - data type: object wucher_internal_transport_http_dto.TechnicianProfileAttributes: properties: is_chief_technician: type: boolean is_responsible_complaints: type: boolean license_no: maxLength: 120 type: string location: maxLength: 255 type: string note: type: string postcode: maxLength: 32 type: string short_name: maxLength: 120 type: string street_line: maxLength: 255 type: string type: object wucher_internal_transport_http_dto.TechnicianProfileUpdateAttributes: properties: is_chief_technician: type: boolean is_responsible_complaints: type: boolean license_no: maxLength: 120 type: string location: maxLength: 255 type: string note: type: string postcode: maxLength: 32 type: string short_name: maxLength: 120 type: string street_line: maxLength: 255 type: string type: object wucher_internal_transport_http_dto.TimezoneUpdateAttributes: properties: timezone: example: Asia/Jakarta type: string required: - timezone type: object wucher_internal_transport_http_dto.TimezoneUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.TimezoneUpdateAttributes' type: example: auth_timezone_update type: string required: - attributes - type type: object wucher_internal_transport_http_dto.TimezoneUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.TimezoneUpdateData' required: - data type: object wucher_internal_transport_http_dto.TokenResponse: properties: data: properties: attributes: properties: access_expires_in: example: 900 type: integer refresh_expires_in: example: 2592000 type: integer type: object type: example: auth_tokens type: string type: object type: object wucher_internal_transport_http_dto.UserAttributes: properties: created_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string email: example: user@example.com type: string email_verified_at: example: "2026-02-05T10:00:00Z" type: string first_name: example: John type: string is_previously_configured: example: false type: boolean last_name: example: Doe type: string linked_sso: example: false type: boolean mobile_phone: example: "+628123456789" type: string pin_configured: example: false type: boolean profile_picture: $ref: '#/definitions/wucher_internal_transport_http_dto.UserImage' role: $ref: '#/definitions/wucher_internal_transport_http_dto.RoleMini' role_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string role_ids: example: - '["018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"' - '"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9e"]' items: type: string type: array roles: items: $ref: '#/definitions/wucher_internal_transport_http_dto.RoleMini' type: array timezone: example: Asia/Jakarta type: string totp_enabled: example: false type: boolean username: example: john.doe type: string webauthn_configured: example: false type: boolean type: object wucher_internal_transport_http_dto.UserCreateAttributes: properties: email: example: user@example.com type: string first_name: example: John type: string image_uuid: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e90 type: string last_name: example: Doe type: string mobile_phone: example: "+628123456789" type: string role_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string role_ids: example: - '["018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"' - '"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9e"]' items: type: string type: array timezone: example: Asia/Jakarta type: string username: example: john.doe maxLength: 100 minLength: 3 type: string required: - email - first_name - last_name - role_id - username type: object wucher_internal_transport_http_dto.UserCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.UserCreateAttributes' type: enum: - user_create - user example: user_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto.UserCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.UserCreateData' required: - data type: object wucher_internal_transport_http_dto.UserDataTableResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.UserResource' type: array meta: properties: draw: example: 1 type: integer records_filtered: example: 12 type: integer records_total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.UserFoto: properties: download_url: example: https://storage.example.com/base/lude.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900&X-Amz-Signature=abc123 type: string original_size_bytes: example: 1024000 type: integer thumbnail_download_url: example: https://storage.example.com/base/lude.thumb.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900&X-Amz-Signature=abc123 type: string uuid: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9f type: string type: object wucher_internal_transport_http_dto.UserImage: properties: download_url: example: https://example.com/presigned-url type: string original_size_bytes: example: 1024000 type: integer thumbnail_download_url: example: https://example.com/presigned-thumb-url type: string uuid: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9f type: string type: object wucher_internal_transport_http_dto.UserListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.UserResource' type: array meta: properties: page_number: example: 1 type: integer page_size: example: 20 type: integer total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.UserResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.UserAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: user type: string type: object wucher_internal_transport_http_dto.UserResponse: properties: data: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.UserAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: user type: string type: object type: object wucher_internal_transport_http_dto.UserUpdateAttributes: properties: email: example: user@example.com type: string first_name: example: John type: string image_uuid: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e90 type: string last_name: example: Doe type: string mobile_phone: example: "+628123456789" type: string timezone: example: Asia/Jakarta type: string type: object wucher_internal_transport_http_dto.UserUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.UserUpdateAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: enum: - user_update - user example: user_update type: string required: - attributes - type type: object wucher_internal_transport_http_dto.UserUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.UserUpdateData' required: - data type: object wucher_internal_transport_http_dto.VerifyEmailResponse: properties: data: properties: attributes: properties: verified: example: true type: boolean type: object type: example: auth_verify_email type: string type: object type: object wucher_internal_transport_http_dto.VocationAttributes: properties: created_at: example: "2026-03-12T03:04:05Z" type: string created_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string deleted_at: example: "2026-03-12T03:04:05Z" type: string deleted_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string is_active: example: true type: boolean name: example: Pilot type: string note: example: Helicopter pilot vocation type: string sortkey: example: 1 type: integer updated_at: example: "2026-03-12T03:04:05Z" type: string updated_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: object wucher_internal_transport_http_dto.VocationCreateAttributes: properties: is_active: example: true type: boolean name: example: Pilot type: string note: example: Helicopter pilot vocation type: string sortkey: example: 1 type: integer required: - name type: object wucher_internal_transport_http_dto.VocationCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.VocationCreateAttributes' type: enum: - vocation_create - vocation example: vocation_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto.VocationCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.VocationCreateData' required: - data type: object wucher_internal_transport_http_dto.VocationDataTableResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.VocationResource' type: array meta: properties: draw: example: 1 type: integer records_filtered: example: 12 type: integer records_total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.VocationListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto.VocationResource' type: array meta: properties: page_number: example: 1 type: integer page_size: example: 20 type: integer total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto.VocationResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.VocationAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: vocation type: string type: object wucher_internal_transport_http_dto.VocationResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.VocationResource' type: object wucher_internal_transport_http_dto.VocationUpdateAttributes: properties: is_active: example: true type: boolean name: example: Pilot type: string note: example: Helicopter pilot vocation type: string sortkey: example: 1 type: integer type: object wucher_internal_transport_http_dto.VocationUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.VocationUpdateAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: enum: - vocation_update - vocation example: vocation_update type: string required: - attributes - type type: object wucher_internal_transport_http_dto.VocationUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.VocationUpdateData' required: - data type: object wucher_internal_transport_http_dto.WebAuthnBeginResponse: properties: data: properties: attributes: properties: challenge_token: example: kP8k2... type: string challenge_ttl_ms: example: 300000 type: integer public_key: additionalProperties: true type: object type: object type: example: auth_webauthn_register_options type: string type: object type: object wucher_internal_transport_http_dto.WebAuthnLoginBeginAttributes: properties: email: example: user@example.com type: string required: - email type: object wucher_internal_transport_http_dto.WebAuthnLoginBeginData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.WebAuthnLoginBeginAttributes' type: example: auth_webauthn_login_begin type: string required: - attributes - type type: object wucher_internal_transport_http_dto.WebAuthnLoginBeginRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.WebAuthnLoginBeginData' required: - data type: object wucher_internal_transport_http_dto.WebAuthnLoginFinishAttributes: properties: challenge_token: example: kP8k2... type: string credential: items: type: integer type: array required: - challenge_token - credential type: object wucher_internal_transport_http_dto.WebAuthnLoginFinishData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.WebAuthnLoginFinishAttributes' type: example: auth_webauthn_login_finish type: string required: - attributes - type type: object wucher_internal_transport_http_dto.WebAuthnLoginFinishRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.WebAuthnLoginFinishData' required: - data type: object wucher_internal_transport_http_dto.WebAuthnRegisterBeginData: properties: type: example: auth_webauthn_register_begin type: string required: - type type: object wucher_internal_transport_http_dto.WebAuthnRegisterBeginRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.WebAuthnRegisterBeginData' required: - data type: object wucher_internal_transport_http_dto.WebAuthnRegisterFinishAttributes: properties: challenge_token: example: kP8k2... type: string credential: items: type: integer type: array name: example: MacBook Touch ID maxLength: 100 type: string required: - challenge_token - credential type: object wucher_internal_transport_http_dto.WebAuthnRegisterFinishData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.WebAuthnRegisterFinishAttributes' type: example: auth_webauthn_register_finish type: string required: - attributes - type type: object wucher_internal_transport_http_dto.WebAuthnRegisterFinishRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.WebAuthnRegisterFinishData' required: - data type: object wucher_internal_transport_http_dto.WebAuthnResetSetupData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto.ReauthAttributes' type: example: auth_webauthn_reset_setup type: string required: - attributes - type type: object wucher_internal_transport_http_dto.WebAuthnResetSetupRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto.WebAuthnResetSetupData' required: - data type: object wucher_internal_transport_http_dto.WebAuthnResetSetupResponse: properties: data: properties: attributes: properties: reset: example: true type: boolean type: object type: example: auth_webauthn_reset_setup type: string type: object type: object wucher_internal_transport_http_dto_request.ActionSignoffSignAttributes: properties: complaint_id: example: 019d6772-471c-7b70-b42a-d94020ef61e4 type: string flight_id: description: |- FlightID — REQUIRED for the fleet (complaint-independent) sign-off; scopes it to a flight so it no longer leaks across takeovers of the same aircraft. Ignored when complaint_id is set (that sign-off is keyed by the complaint). example: 019d6774-98e8-7fba-9ef4-3795c0da8a13 type: string sign: description: |- Sign toggles the sign-off: true (or omitted) signs it, false unsigns (clears the signature). Combine with complaint_id to toggle a specific complaint's sign-off. example: true type: boolean type: object wucher_internal_transport_http_dto_request.ActionSignoffSignData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.ActionSignoffSignAttributes' type: example: action_signoff type: string type: object wucher_internal_transport_http_dto_request.ActionSignoffSignRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.ActionSignoffSignData' type: object wucher_internal_transport_http_dto_request.AirRescuerChecklistCreateAttributes: properties: base_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string checklists: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.AirRescuerChecklistCreateEntry' minItems: 1 type: array required: - base_id - checklists type: object wucher_internal_transport_http_dto_request.AirRescuerChecklistCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.AirRescuerChecklistCreateAttributes' type: enum: - air_rescuer_checklist_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.AirRescuerChecklistCreateEntry: properties: items: items: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.AirRescuerChecklistItemInput' type: array position: example: 1 type: integer scope_code: example: MO type: string title: example: Monday Checklist type: string required: - scope_code - title type: object wucher_internal_transport_http_dto_request.AirRescuerChecklistCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.AirRescuerChecklistCreateData' required: - data type: object wucher_internal_transport_http_dto_request.AirRescuerChecklistItemCreateAttributes: properties: items: items: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.AirRescuerChecklistItemInput' minItems: 1 type: array required: - items type: object wucher_internal_transport_http_dto_request.AirRescuerChecklistItemCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.AirRescuerChecklistItemCreateAttributes' type: enum: - air_rescuer_checklist_item_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.AirRescuerChecklistItemCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.AirRescuerChecklistItemCreateData' required: - data type: object wucher_internal_transport_http_dto_request.AirRescuerChecklistItemReorderAttributes: properties: items: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.AirRescuerChecklistItemReorderEntry' minItems: 1 type: array required: - items type: object wucher_internal_transport_http_dto_request.AirRescuerChecklistItemReorderData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.AirRescuerChecklistItemReorderAttributes' type: enum: - air_rescuer_checklist_item_reorder type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.AirRescuerChecklistItemReorderEntry: properties: item_uuid: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string position: example: 2 type: integer required: - item_uuid - position type: object wucher_internal_transport_http_dto_request.AirRescuerChecklistItemReorderRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.AirRescuerChecklistItemReorderData' required: - data type: object wucher_internal_transport_http_dto_request.AirRescuerChecklistItemUpdateAttributes: properties: name: example: Check radio type: string position: example: 2 type: integer type: object wucher_internal_transport_http_dto_request.AirRescuerChecklistItemUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.AirRescuerChecklistItemUpdateAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: enum: - air_rescuer_checklist_item_update type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.AirRescuerChecklistItemUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.AirRescuerChecklistItemUpdateData' required: - data type: object wucher_internal_transport_http_dto_request.AirRescuerChecklistUpdateAttributes: properties: new_items: items: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.AirRescuerChecklistItemInput' type: array position: example: 1 type: integer scope_code: example: MO type: string title: example: Monday Checklist Updated type: string type: object wucher_internal_transport_http_dto_request.AirRescuerChecklistUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.AirRescuerChecklistUpdateAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: enum: - air_rescuer_checklist_update type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.AirRescuerChecklistUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.AirRescuerChecklistUpdateData' required: - data type: object wucher_internal_transport_http_dto_request.ComplaintActionTakenAttributes: properties: action_taken: description: |- ActionTaken — corrective action text. Required when recording (create); on update an empty value clears it (allowed only while the action has not been signed off). example: Tightened engine mount and rechecked torque type: string aircraft_hours_at_fix: example: "1250.1" type: string type: object wucher_internal_transport_http_dto_request.ComplaintActionTakenData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.ComplaintActionTakenAttributes' type: enum: - complaint_action_taken - complaint example: complaint_action_taken type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.ComplaintActionTakenRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.ComplaintActionTakenData' required: - data type: object wucher_internal_transport_http_dto_request.ComplaintCreateAttributes: properties: aircraft_hours_at_report: description: AircraftHoursAtReport — OPTIONAL airframe hours recorded when the defect was reported. example: "1245.3" type: string description: description: Description — the defect description. REQUIRED. example: Engine 2 N2 vibration intermittent during cruise above 110 KIAS type: string flight_id: description: |- FlightID — the flight/report this complaint was filed in (attribution). OPTIONAL; open-defect tracking stays per-helicopter so defects carry forward across flights. example: 019d6774-98e8-7fba-9ef4-3795c0da8a13 type: string helicopter_id: description: HelicopterID — the helicopter this complaint is filed against. REQUIRED. example: 019d6771-5fb5-7337-837f-bc5ed85181a1 type: string mel_severity: description: |- MELSeverity — MEL (Minimum Equipment List) classification. OPTIONAL at creation: omit it to file the complaint as "pending_mel" and classify later. It MUST be classified (via update) before recording action taken. A pending complaint does NOT ground the aircraft — grounding starts at classification. Values: 0 = NON-MEL (grounds immediately), 1 = A (grace 1 day), 2 = B (3 days), 3 = C (10 days), 4 = D (120 days). enum: - 0 - 1 - 2 - 3 - 4 example: 2 type: integer required: - description - helicopter_id type: object wucher_internal_transport_http_dto_request.ComplaintCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.ComplaintCreateAttributes' type: enum: - complaint_create - complaint example: complaint_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.ComplaintCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.ComplaintCreateData' required: - data type: object wucher_internal_transport_http_dto_request.ComplaintNSRSignAttributes: properties: nsr_reason: description: NSRReason — OPTIONAL free-text justification for the NSR (MEL deferral) decision. example: Released under MEL A, defect deferred type: string type: object wucher_internal_transport_http_dto_request.ComplaintNSRSignData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.ComplaintNSRSignAttributes' type: enum: - complaint_nsr_sign - complaint_nsr example: complaint_nsr_sign type: string type: object wucher_internal_transport_http_dto_request.ComplaintNSRSignRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.ComplaintNSRSignData' type: object wucher_internal_transport_http_dto_request.ComplaintUpdateAttributes: properties: aircraft_hours_at_report: description: AircraftHoursAtReport — airframe hours at report time. example: "1245.3" type: string description: description: Description — defect description. example: Engine 2 vibration confirmed type: string mel_severity: description: |- MELSeverity — MEL classification. 0 = NON-MEL (immediate AOG), 1 = A (1 day), 2 = B (3 days), 3 = C (10 days), 4 = D (120 days). AOG after grace passes. enum: - 0 - 1 - 2 - 3 - 4 example: 2 type: integer type: object wucher_internal_transport_http_dto_request.ComplaintUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.ComplaintUpdateAttributes' id: example: 019d6771-5fb5-7337-837f-bc5ed85181a1 type: string type: enum: - complaint_update - complaint example: complaint_update type: string required: - attributes - id - type type: object wucher_internal_transport_http_dto_request.ComplaintUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.ComplaintUpdateData' required: - data type: object wucher_internal_transport_http_dto_request.DutyRosterAnyDeleteData: properties: id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string required: - id type: object wucher_internal_transport_http_dto_request.DutyRosterAnyDeleteRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.DutyRosterAnyDeleteData' required: - data type: object wucher_internal_transport_http_dto_request.DutyRosterCreateAttributes: properties: base_id: type: string duty_date: type: string roster_detail: $ref: '#/definitions/wucher_internal_transport_http_dto_request.DutyRosterDetailsInput' shift_time: $ref: '#/definitions/wucher_internal_transport_http_dto_request.DutyRosterShiftTime' required: - base_id - duty_date type: object wucher_internal_transport_http_dto_request.DutyRosterCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.DutyRosterCreateAttributes' type: enum: - duty_roster_create - duty_roster type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.DutyRosterCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.DutyRosterCreateData' required: - data type: object wucher_internal_transport_http_dto_request.DutyRosterCrewInput: properties: id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string shift_date: $ref: '#/definitions/wucher_internal_transport_http_dto_request.DutyRosterShiftDate' type: object wucher_internal_transport_http_dto_request.DutyRosterDeleteCrewAttributes: properties: roster_detail: $ref: '#/definitions/wucher_internal_transport_http_dto_request.DutyRosterDetailsInput' type: object wucher_internal_transport_http_dto_request.DutyRosterDeleteCrewByIDAttributes: properties: crew_id: type: string roster_id: type: string required: - crew_id - roster_id type: object wucher_internal_transport_http_dto_request.DutyRosterDeleteCrewByIDData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.DutyRosterDeleteCrewByIDAttributes' type: enum: - duty_roster_crew_delete - duty_roster_update - duty_roster type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.DutyRosterDeleteCrewByIDRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.DutyRosterDeleteCrewByIDData' required: - data type: object wucher_internal_transport_http_dto_request.DutyRosterDeleteCrewData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.DutyRosterDeleteCrewAttributes' type: enum: - duty_roster_crew_delete - duty_roster_update - duty_roster type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.DutyRosterDeleteCrewRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.DutyRosterDeleteCrewData' required: - data type: object wucher_internal_transport_http_dto_request.DutyRosterDetailsInput: properties: doctor: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.DutyRosterCrewInput' type: array helper: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.DutyRosterCrewInput' type: array other_person: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.DutyRosterOtherPersonInput' type: array pilot: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.DutyRosterPilotCrewInput' type: array rescuer: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.DutyRosterCrewInput' type: array type: object wucher_internal_transport_http_dto_request.DutyRosterOtherPersonInput: properties: email: example: guest@example.com type: string mobile_phone: example: +43-1234 type: string name: example: Guest Person type: string other_person_id: description: |- OtherPersonID — OPTIONAL master person id to reuse (from GET /contact/other). When set, name/mobile_phone/email are snapshotted from the master (may be omitted). example: 019d6771-5fb5-7337-837f-bc5ed85181a1 type: string type: object wucher_internal_transport_http_dto_request.DutyRosterPilotCrewInput: properties: co_pilot: type: boolean crew_type: enum: - main - additional example: main type: string examiner: type: boolean flight_instructor: type: boolean id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string line_checker: type: boolean shift_date: $ref: '#/definitions/wucher_internal_transport_http_dto_request.DutyRosterShiftDate' supervisor: type: boolean type: object wucher_internal_transport_http_dto_request.DutyRosterShiftDate: properties: date_end: example: "2026-03-16" type: string date_start: example: "2026-03-16" type: string type: object wucher_internal_transport_http_dto_request.DutyRosterShiftTime: properties: shift_end: example: "21:00" type: string shift_start: example: "06:00" type: string type: object wucher_internal_transport_http_dto_request.DutyRosterUpdateAttributes: properties: base_id: type: string duty_date: type: string roster_detail: $ref: '#/definitions/wucher_internal_transport_http_dto_request.DutyRosterDetailsInput' shift_time: $ref: '#/definitions/wucher_internal_transport_http_dto_request.DutyRosterShiftTime' type: object wucher_internal_transport_http_dto_request.DutyRosterUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.DutyRosterUpdateAttributes' id: type: string type: enum: - duty_roster_update - duty_roster type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.DutyRosterUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.DutyRosterUpdateData' required: - data type: object wucher_internal_transport_http_dto_request.EASAReleaseCreateAttributes: properties: complaint_id: description: |- ComplaintID — OPTIONAL complaint (UUIDv7) this release closes. Set it to scope the release to a specific defect; leave empty for a standalone (aircraft-clear) release. example: 019d6774-1111-7fba-9ef4-3795c0da8a13 type: string easa_ac_hours: example: "1245.3" type: string easa_date: example: "2026-06-16" type: string easa_location: example: LOWI type: string easa_maint_manual_rev_airframe: example: Rev 12 type: string easa_maint_manual_rev_engine: example: Rev 8 type: string easa_permit_no: example: 145.A.50 type: string easa_signer_id: description: EASASignerID — OPTIONAL contact id (UUIDv7) of the signer/technician. Required only to sign. example: 019d61db-53c6-7280-87ec-e65f205c6d3b type: string easa_wo_no: example: WO-2026-001 type: string flight_id: description: FlightID — OPTIONAL flight context. Used for the standalone (no-complaint) sign-off gate. example: 019d6774-98e8-7fba-9ef4-3795c0da8a13 type: string helicopter_id: example: 019d6771-5fb5-7337-837f-bc5ed85181a1 type: string sign: description: |- Sign, when true, signs the release immediately at creation. Requires all required fields to be present; otherwise the request is rejected. example: false type: boolean required: - helicopter_id type: object wucher_internal_transport_http_dto_request.EASAReleaseCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.EASAReleaseCreateAttributes' type: enum: - easa_release_create - easa_release example: easa_release_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.EASAReleaseCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.EASAReleaseCreateData' required: - data type: object wucher_internal_transport_http_dto_request.EASAReleaseUpdateAttributes: properties: easa_ac_hours: example: "1245.3" type: string easa_date: example: "2026-06-16" type: string easa_location: example: LOWI type: string easa_maint_manual_rev_airframe: example: Rev 12 type: string easa_maint_manual_rev_engine: example: Rev 8 type: string easa_permit_no: example: 145.A.50 type: string easa_signer_id: description: EASASignerID — OPTIONAL contact id (UUIDv7) of the signer/technician. Required only to sign. example: 019d61db-53c6-7280-87ec-e65f205c6d3b type: string easa_wo_no: example: WO-2026-001 type: string type: object wucher_internal_transport_http_dto_request.EASAReleaseUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.EASAReleaseUpdateAttributes' id: example: 019d6771-5fb5-7337-837f-bc5ed85181a1 type: string type: enum: - easa_release_update - easa_release example: easa_release_update type: string required: - attributes - id - type type: object wucher_internal_transport_http_dto_request.EASAReleaseUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.EASAReleaseUpdateData' required: - data type: object wucher_internal_transport_http_dto_request.FMReportUpdateAttributes: properties: engine1_gpc_n1: description: Engine1GpcN1 - GPC/N1 value for engine 1. Optional. example: GPC/N1 63.2 type: string engine1_ptc_n2: description: Engine1PtcN2 - PTC/N2 value for engine 1. Optional. example: PTC/N2 61.8 type: string engine2_gpc_n1: description: Engine2GpcN1 - GPC/N1 value for engine 2. Optional. example: GPC/N1 63.2 type: string engine2_ptc_n2: description: Engine2PtcN2 - PTC/N2 value for engine 2. Optional. example: PTC/N2 61.8 type: string type: object wucher_internal_transport_http_dto_request.FMReportUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FMReportUpdateAttributes' type: enum: - fm_report_update - fm_report example: fm_report_update type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.FMReportUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FMReportUpdateData' required: - data type: object wucher_internal_transport_http_dto_request.FileManagerAttachmentCreateAttributes: properties: category: example: document type: string file_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string is_primary: example: false type: boolean ref_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string ref_type: example: helicopter type: string sort_order: example: 0 type: integer required: - file_id - ref_id - ref_type type: object wucher_internal_transport_http_dto_request.FileManagerAttachmentCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerAttachmentCreateAttributes' type: enum: - file_manager_attachment_create - file_manager_attachment example: file_manager_attachment_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.FileManagerAttachmentCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerAttachmentCreateData' required: - data type: object wucher_internal_transport_http_dto_request.FileManagerFileAircraftBulkCreateItem: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFileAircraftCreateAttributes' type: enum: - file_manager_file_create - file_manager_file example: file_manager_file_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.FileManagerFileAircraftBulkCreateRequest: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFileAircraftBulkCreateItem' minItems: 1 type: array required: - data type: object wucher_internal_transport_http_dto_request.FileManagerFileAircraftCreateAttributes: properties: aircraft_uuid: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string name: example: aircraft.jpg type: string upload_intent_uuid: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string required: - aircraft_uuid - name - upload_intent_uuid type: object wucher_internal_transport_http_dto_request.FileManagerFileBaseBulkCreateItem: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFileBaseCreateAttributes' type: enum: - file_manager_file_create - file_manager_file example: file_manager_file_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.FileManagerFileBaseBulkCreateRequest: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFileBaseBulkCreateItem' minItems: 1 type: array required: - data type: object wucher_internal_transport_http_dto_request.FileManagerFileBaseCreateAttributes: properties: base_uuid: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string name: example: base.jpg type: string upload_intent_uuid: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string required: - base_uuid - name - upload_intent_uuid type: object wucher_internal_transport_http_dto_request.FileManagerFileCancelUploadAttributes: properties: upload_intent_uuid: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string required: - upload_intent_uuid type: object wucher_internal_transport_http_dto_request.FileManagerFileCancelUploadBulkRequest: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFileCancelUploadData' minItems: 1 type: array required: - data type: object wucher_internal_transport_http_dto_request.FileManagerFileCancelUploadData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFileCancelUploadAttributes' type: enum: - file_manager_file_cancel_upload example: file_manager_file_cancel_upload type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.FileManagerFileDULBulkCreateItem: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFileDULCreateAttributes' type: enum: - file_manager_file_create - file_manager_file example: file_manager_file_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.FileManagerFileDULBulkCreateRequest: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFileDULBulkCreateItem' minItems: 1 type: array required: - data type: object wucher_internal_transport_http_dto_request.FileManagerFileDULCreateAttributes: properties: dul_uuid: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string name: example: dul.jpg type: string upload_intent_uuid: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string required: - name - upload_intent_uuid type: object wucher_internal_transport_http_dto_request.FileManagerFileMissionBulkCreateItem: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFileMissionCreateAttributes' type: enum: - file_manager_file_create - file_manager_file example: file_manager_file_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.FileManagerFileMissionBulkCreateRequest: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFileMissionBulkCreateItem' minItems: 1 type: array required: - data type: object wucher_internal_transport_http_dto_request.FileManagerFileMissionCreateAttributes: properties: mission_uuid: example: 019d6774-98e8-7fba-9ef4-3795c0da8a13 type: string name: example: mission-brief.pdf type: string upload_intent_uuid: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string required: - mission_uuid - name - upload_intent_uuid type: object wucher_internal_transport_http_dto_request.FileManagerFileTakeoverBulkCreateItem: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFileTakeoverCreateAttributes' type: enum: - file_manager_file_create - file_manager_file example: file_manager_file_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.FileManagerFileTakeoverBulkCreateRequest: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFileTakeoverBulkCreateItem' minItems: 1 type: array required: - data type: object wucher_internal_transport_http_dto_request.FileManagerFileTakeoverCreateAttributes: properties: name: example: takeover-report.pdf type: string takeover_uuid: example: 019e8713-aa19-7fb7-a510-a0332dc69697 type: string upload_intent_uuid: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string required: - name - upload_intent_uuid type: object wucher_internal_transport_http_dto_request.FileManagerFileTemplateCreateAttributes: properties: helicopter_id: example: 019e8713-aa19-7fb7-a510-a0332dc69697 type: string name: example: collabora-draft.docx type: string takeover_id: example: 019e8713-aa19-7fb7-a510-a0332dc69697 type: string template_uuid: example: 019f0386-0a00-7a4a-a2d8-30afc0e0c3ad type: string required: - helicopter_id - name - template_uuid type: object wucher_internal_transport_http_dto_request.FileManagerFileTemplateCreateRequest: properties: data: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFileTemplateCreateAttributes' type: enum: - file_manager_file_create_from_template - file_manager_file_create type: string required: - attributes - type type: object required: - data type: object wucher_internal_transport_http_dto_request.FileManagerFileUpdateAttributes: properties: folder_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string name: example: policy-v2.pdf type: string type: object wucher_internal_transport_http_dto_request.FileManagerFileUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFileUpdateAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: enum: - file_manager_file_update - file_manager_file example: file_manager_file_update type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.FileManagerFileUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFileUpdateData' required: - data type: object wucher_internal_transport_http_dto_request.FileManagerFileUploadIntentAttributes: properties: content_type: example: application/pdf type: string name: example: policy-final.pdf type: string size_bytes: example: 1024 minimum: 0 type: integer required: - content_type - name - size_bytes type: object wucher_internal_transport_http_dto_request.FileManagerFileUploadIntentBulkRequest: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFileUploadIntentData' minItems: 1 type: array required: - data type: object wucher_internal_transport_http_dto_request.FileManagerFileUploadIntentData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFileUploadIntentAttributes' type: enum: - file_manager_file_upload_intent example: file_manager_file_upload_intent type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.FileManagerFileUserBulkCreateItem: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFileUserCreateAttributes' type: enum: - file_manager_file_create - file_manager_file example: file_manager_file_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.FileManagerFileUserBulkCreateRequest: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFileUserBulkCreateItem' minItems: 1 type: array required: - data type: object wucher_internal_transport_http_dto_request.FileManagerFileUserCreateAttributes: properties: name: example: profile.jpg type: string upload_intent_uuid: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string user_uuid: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string required: - name - upload_intent_uuid - user_uuid type: object wucher_internal_transport_http_dto_request.FileManagerFolderCreateAttributes: properties: name: example: operations type: string parent_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string required: - name type: object wucher_internal_transport_http_dto_request.FileManagerFolderCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFolderCreateAttributes' type: enum: - file_manager_folder_create - file_manager_folder example: file_manager_folder_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.FileManagerFolderCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFolderCreateData' required: - data type: object wucher_internal_transport_http_dto_request.FileManagerFolderUpdateAttributes: properties: name: example: operations-updated type: string parent_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: object wucher_internal_transport_http_dto_request.FileManagerFolderUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFolderUpdateAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: enum: - file_manager_folder_update - file_manager_folder example: file_manager_folder_update type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.FileManagerFolderUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFolderUpdateData' required: - data type: object wucher_internal_transport_http_dto_request.FileManagerNodeMoveBulkRequest: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerNodeMoveItem' minItems: 1 type: array required: - data type: object wucher_internal_transport_http_dto_request.FileManagerNodeMoveItem: properties: destination_folder_uuid: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string uuid: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string required: - uuid type: object wucher_internal_transport_http_dto_request.FileManagerNodePurgeBulkRequest: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerNodePurgeItem' minItems: 1 type: array required: - data type: object wucher_internal_transport_http_dto_request.FileManagerNodePurgeItem: properties: uuid: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string required: - uuid type: object wucher_internal_transport_http_dto_request.FleetStatusCreateAttributes: properties: files: items: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.FleetStatusFileAttributes' type: array helicopter_id: example: 019d6771-5fb5-7337-837f-bc5ed85181a1 type: string maintenance_schedules: items: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.MaintenanceScheduleAttributes' type: array required: - helicopter_id type: object wucher_internal_transport_http_dto_request.FleetStatusCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FleetStatusCreateAttributes' type: enum: - fleet_status_create - fleet_status example: fleet_status_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.FleetStatusCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FleetStatusCreateData' required: - data type: object wucher_internal_transport_http_dto_request.FleetStatusSummaryAirframeUpdate: properties: cycles: example: 320 type: number hours: example: 6610.5 type: number type: object wucher_internal_transport_http_dto_request.FleetStatusSummaryEngineUpdate: properties: ccc: example: 44 type: number gpc_ng_n1: example: 98.7 type: number hours: example: 8001.7 type: number ptc_nf_n2: example: 97.2 type: number type: object wucher_internal_transport_http_dto_request.FleetStatusSummaryUpdate: properties: airframe: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FleetStatusSummaryAirframeUpdate' engine_1: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FleetStatusSummaryEngineUpdate' engine_2: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FleetStatusSummaryEngineUpdate' flight_reports: example: 80 type: number hook_releases: example: 10 type: number landings: example: 120 type: number rotor_brake_cycles: example: 8 type: number type: object wucher_internal_transport_http_dto_request.FleetStatusUpdateAttributes: properties: files: items: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.FleetStatusFileAttributes' type: array helicopter_id: type: string maintenance_schedules: items: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.MaintenanceScheduleAttributes' type: array summary: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FleetStatusSummaryUpdate' type: object wucher_internal_transport_http_dto_request.FleetStatusUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FleetStatusUpdateAttributes' id: example: 019d6773-ccca-71dd-b9c7-8e6f531deb90 type: string type: enum: - fleet_status_update - fleet_status example: fleet_status_update type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.FleetStatusUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FleetStatusUpdateData' required: - data type: object wucher_internal_transport_http_dto_request.FlightDataCreateAttributes: properties: co_pilot_id: type: string customer_name: type: string delivery_note_number: type: string engine: type: string flight_duration_seconds: type: integer flight_landing: type: string flight_plan_distance: type: number flight_plan_time_seconds: type: integer flight_plan_true_course: type: number flight_positioning: example: false type: boolean flight_red_seconds: type: integer flight_take_off: type: string from_hospital_id: type: string from_icao_id: type: string fuel_after_flight: type: number fuel_before_flight: type: number fuel_planning: type: number fuel_upload: type: number hec: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FlightDataCreateSPOHECAttributes' heslo: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FlightDataCreateSPOHESLOAttributes' hook_releases: type: integer landing_count: type: integer logging: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FlightDataCreateSPOLoggingAttributes' max_n1: type: number max_n2: type: number mission_id: type: string other_information: type: string pax_count: type: integer rotor_brake_cycle: type: integer ticket_no: type: string to_hospital_id: type: string to_icao_id: type: string required: - mission_id type: object wucher_internal_transport_http_dto_request.FlightDataCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FlightDataCreateAttributes' type: enum: - flight_data_create - flight_data example: flight_data_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.FlightDataCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FlightDataCreateData' required: - data type: object wucher_internal_transport_http_dto_request.FlightDataCreateSPOHECAttributes: properties: flights: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FlightDataCreateSPOHECFlight' type: array loads: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FlightDataCreateSPOHECLoad' type: array slings: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FlightDataCreateSPOHECSling' type: array type: object wucher_internal_transport_http_dto_request.FlightDataCreateSPOHECFlight: properties: equipment_id: description: 'Facility category: hec-rope-label.' example: string type: string equipment_name: example: string type: string hec_cycle: example: 0 type: integer rot: example: 0 type: integer type: object wucher_internal_transport_http_dto_request.FlightDataCreateSPOHECLoad: properties: load_category: description: Weight band for the HEC load, e.g. "bis 199 kg", "200-600 kg", "600-800 kg", "800-1000 kg". example: 200-600 kg type: string quantity: example: 3 type: integer type: object wucher_internal_transport_http_dto_request.FlightDataCreateSPOHECSling: properties: sling_id: description: 'Facility category: hec-rope-length.' example: string type: string sling_name: example: string type: string type: object wucher_internal_transport_http_dto_request.FlightDataCreateSPOHESLOAttributes: properties: flights: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FlightDataCreateSPOHESLOFlight' type: array type: object wucher_internal_transport_http_dto_request.FlightDataCreateSPOHESLOFlight: properties: heslo_rope_label_id: description: 'Facility category: heslo-rope-label.' example: string type: string heslo_rope_label_name: example: string type: string rot: example: 0 type: integer slings: description: 'Facility category: heslo-rope-length.' items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FlightDataCreateSPOHESLOSling' type: array type: object wucher_internal_transport_http_dto_request.FlightDataCreateSPOHESLOSling: properties: sling_id: description: 'Facility category: heslo-rope-length.' example: string type: string sling_name: example: string type: string type: object wucher_internal_transport_http_dto_request.FlightDataCreateSPOLoggingAttributes: properties: slings: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FlightDataCreateSPOLoggingSling' type: array type: object wucher_internal_transport_http_dto_request.FlightDataCreateSPOLoggingSling: properties: sling_id: description: 'Facility category: heslo-hook.' example: string type: string sling_name: example: string type: string type: object wucher_internal_transport_http_dto_request.FlightDataUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FlightDataCreateAttributes' type: enum: - flight_data_update example: flight_data_update type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.FlightDataUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FlightDataUpdateData' required: - data type: object wucher_internal_transport_http_dto_request.HelicopterCreateAttributes: properties: aog: example: false type: boolean aog_reason: example: Main rotor gearbox fault type: string consumption_lt_min: example: 4.1 type: number designation: example: OE-XHZ type: string dry: example: false type: boolean engine_1: example: TM type: string engine_2: example: TM type: string file_uuid: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e90 type: string identifier: example: ABC type: string igb: example: false type: boolean is_active: example: true type: boolean lh: example: true type: boolean mgb: example: true type: boolean note: example: Primary HEMS helicopter type: string nr1: example: true type: boolean nr2: example: true type: boolean rh: example: true type: boolean sortkey: example: 10 type: integer tgb: example: true type: boolean type: example: EC-135 type: string utc_offset: example: -1 type: integer required: - designation - identifier - type type: object wucher_internal_transport_http_dto_request.HelicopterCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.HelicopterCreateAttributes' type: enum: - helicopter_create - helicopter example: helicopter_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.HelicopterCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.HelicopterCreateData' required: - data type: object wucher_internal_transport_http_dto_request.HelicopterFileCancelUploadAttributes: properties: upload_intent_uuid: example: 019d6d0d-2de2-7db1-80a2-2862d43af620 type: string required: - upload_intent_uuid type: object wucher_internal_transport_http_dto_request.HelicopterFileCancelUploadBulkRequest: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.HelicopterFileCancelUploadData' minItems: 1 type: array required: - data type: object wucher_internal_transport_http_dto_request.HelicopterFileCancelUploadData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.HelicopterFileCancelUploadAttributes' type: enum: - helicopter_file_cancel_upload example: helicopter_file_cancel_upload type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.HelicopterFileCreateAttributes: properties: file_name: example: Before Flight Checklist.pdf type: string folder_uuid: example: 019d6d0d-8c24-72e3-9f58-c9ea0fbf0bb1 type: string helicopter_id: example: 019d6771-5fb5-7337-837f-bc5ed85181a1 type: string is_mandatory: example: true type: boolean position: example: 1 type: integer section: enum: - bfi - fpwb - afi example: bfi type: string upload_intent_uuid: example: 019d6d0d-2de2-7db1-80a2-2862d43af620 type: string required: - file_name - section - upload_intent_uuid type: object wucher_internal_transport_http_dto_request.HelicopterFileCreateBulkRequest: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.HelicopterFileCreateData' minItems: 1 type: array required: - data type: object wucher_internal_transport_http_dto_request.HelicopterFileCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.HelicopterFileCreateAttributes' type: enum: - helicopter_file_create - helicopter_file example: helicopter_file_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.HelicopterFileDeleteData: properties: id: example: 019d6773-ccca-71dd-b9c7-8e6f531deb90 type: string type: enum: - helicopter_file_delete - helicopter_file example: helicopter_file_delete type: string required: - id - type type: object wucher_internal_transport_http_dto_request.HelicopterFileDeleteRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.HelicopterFileDeleteData' required: - data type: object wucher_internal_transport_http_dto_request.HelicopterFileUpdateAttributes: properties: file_name: example: Before Flight Checklist v2.pdf type: string helicopter_id: example: 019d6771-5fb5-7337-837f-bc5ed85181a1 type: string is_mandatory: example: true type: boolean position: example: 1 type: integer section: enum: - bfi - fpwb - afi example: fpwb type: string type: object wucher_internal_transport_http_dto_request.HelicopterFileUpdateBulkRequest: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.HelicopterFileUpdateData' minItems: 1 type: array required: - data type: object wucher_internal_transport_http_dto_request.HelicopterFileUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.HelicopterFileUpdateAttributes' id: example: 019d6773-ccca-71dd-b9c7-8e6f531deb90 type: string type: enum: - helicopter_file_update - helicopter_file example: helicopter_file_update type: string required: - attributes - id - type type: object wucher_internal_transport_http_dto_request.HelicopterFileUploadAttributes: properties: content_type: example: application/pdf type: string name: example: Before Flight Checklist.pdf type: string size_bytes: example: 1024 minimum: 0 type: integer required: - content_type - name - size_bytes type: object wucher_internal_transport_http_dto_request.HelicopterFileUploadBulkRequest: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.HelicopterFileUploadData' minItems: 1 type: array required: - data type: object wucher_internal_transport_http_dto_request.HelicopterFileUploadData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.HelicopterFileUploadAttributes' type: enum: - helicopter_file_upload example: helicopter_file_upload type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.HelicopterUpdateAttributes: properties: aog: example: false type: boolean aog_reason: example: Main rotor gearbox fault type: string consumption_lt_min: example: 4.1 type: number designation: example: OE-XHZ type: string dry: example: false type: boolean engine_1: example: TM type: string engine_2: example: TM type: string file_uuid: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e90 type: string identifier: example: ABC type: string igb: example: false type: boolean is_active: example: true type: boolean lh: example: true type: boolean mgb: example: true type: boolean note: example: Primary HEMS helicopter type: string nr1: example: true type: boolean nr2: example: true type: boolean rh: example: true type: boolean sortkey: example: 10 type: integer tgb: example: true type: boolean type: example: EC-135 type: string utc_offset: example: -1 type: integer type: object wucher_internal_transport_http_dto_request.HelicopterUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.HelicopterUpdateAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: enum: - helicopter_update - helicopter example: helicopter_update type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.HelicopterUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.HelicopterUpdateData' required: - data type: object wucher_internal_transport_http_dto_request.LastFlightsInspectionCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.LastFlightsInspectionUpsertAttributes' type: enum: - last_flights_inspection_create - last_flights_inspection type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.LastFlightsInspectionCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.LastFlightsInspectionCreateData' required: - data type: object wucher_internal_transport_http_dto_request.LastFlightsInspectionDeleteAttributes: properties: flight_inspection_id: type: string required: - flight_inspection_id type: object wucher_internal_transport_http_dto_request.LastFlightsInspectionDeleteData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.LastFlightsInspectionDeleteAttributes' type: enum: - last_flights_inspection_delete - last_flights_inspection type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.LastFlightsInspectionDeleteRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.LastFlightsInspectionDeleteData' required: - data type: object wucher_internal_transport_http_dto_request.LastFlightsInspectionUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.LastFlightsInspectionUpsertAttributes' type: enum: - last_flights_inspection_update - last_flights_inspection type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.LastFlightsInspectionUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.LastFlightsInspectionUpdateData' required: - data type: object wucher_internal_transport_http_dto_request.LastFlightsInspectionUpsertAttributes: properties: file_checklist: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.ReserveAcFileChecklistItem' type: array flight_inspection_id: type: string hydraulic_lh_checked: type: string hydraulic_rh_checked: type: string note: type: string oil_engine_nr1_checked: type: string oil_engine_nr2_checked: type: string oil_transmission_igb_checked: type: string oil_transmission_mgb_checked: type: string oil_transmission_tgb_checked: type: string required: - flight_inspection_id type: object wucher_internal_transport_http_dto_request.MCFCompleteAttributes: properties: af_hours: example: "1245.3" type: string date: example: "2026-06-17" type: string landing_count: example: 3 type: integer notes: example: Vibration within limits after check flight type: string result: enum: - passed - failed example: passed type: string sign: example: true type: boolean utc_time: example: "2026-06-17T08:30:00Z" type: string type: object wucher_internal_transport_http_dto_request.MCFCompleteData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.MCFCompleteAttributes' type: enum: - mcf_complete - mcf_sign - mcf example: mcf_sign type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.MCFCompleteRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.MCFCompleteData' required: - data type: object wucher_internal_transport_http_dto_request.MCFSetAttributes: properties: active: example: true type: boolean af_hours: example: "1245.3" type: string date: example: "2026-06-17" type: string flight_id: description: FlightID — OPTIONAL flight this check flight is performed on (on activate). example: 019d6774-98e8-7fba-9ef4-3795c0da8a13 type: string landing_count: example: 3 type: integer notes: example: MCF required after engine mount work type: string result: enum: - passed - failed example: passed type: string utc_time: example: "2026-06-17T08:30:00Z" type: string type: object wucher_internal_transport_http_dto_request.MCFSetData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.MCFSetAttributes' type: enum: - mcf_set - mcf example: mcf_set type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.MCFSetRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.MCFSetData' required: - data type: object wucher_internal_transport_http_dto_request.MasterSettingsCreateAttributes: properties: company_name: example: Wucher type: string cover_file_uuid: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string logo_file_uuid: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string subtitle: example: Flight operations platform type: string title: example: Welcome to Wucher type: string required: - company_name type: object wucher_internal_transport_http_dto_request.MasterSettingsCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.MasterSettingsCreateAttributes' type: enum: - master_settings_create - master_settings example: master_settings_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.MasterSettingsCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.MasterSettingsCreateData' required: - data type: object wucher_internal_transport_http_dto_request.MasterSettingsMicrosoftEntraUpsertAttributes: properties: MS_ENTRA_AUTHORITY: example: https://login.microsoftonline.com/ type: string MS_ENTRA_CLIENT_ID: example: your-client-id type: string MS_ENTRA_CLIENT_SECRET: example: '********' type: string MS_ENTRA_REDIRECT_URL: example: https://example.com/api/v1/auth/microsoft/callback type: string MS_ENTRA_SCOPES: example: openid,profile,email type: string MS_ENTRA_TENANT_ID: example: your-tenant-id type: string required: - MS_ENTRA_AUTHORITY - MS_ENTRA_CLIENT_ID - MS_ENTRA_REDIRECT_URL - MS_ENTRA_SCOPES - MS_ENTRA_TENANT_ID type: object wucher_internal_transport_http_dto_request.MasterSettingsMicrosoftEntraUpsertData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.MasterSettingsMicrosoftEntraUpsertAttributes' type: enum: - master_settings_microsoft_entra_upsert - master_settings example: master_settings_microsoft_entra_upsert type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.MasterSettingsMicrosoftEntraUpsertRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.MasterSettingsMicrosoftEntraUpsertData' required: - data type: object wucher_internal_transport_http_dto_request.MasterSettingsUpdateAttributes: properties: company_name: example: Wucher type: string cover_file_uuid: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string logo_file_uuid: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string subtitle: example: Flight operations platform type: string title: example: Welcome to Wucher type: string type: object wucher_internal_transport_http_dto_request.MasterSettingsUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.MasterSettingsUpdateAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: enum: - master_settings_update - master_settings example: master_settings_update type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.MasterSettingsUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.MasterSettingsUpdateData' required: - data type: object wucher_internal_transport_http_dto_request.MissionCreateAttributes: properties: files: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.MissionFileInput' type: array flight_id: example: 019d6774-98e8-7fba-9ef4-3795c0da8a13 type: string note: example: Mission note type: string subtype_id: example: 019d6774-98e8-7fba-9ef4-3795c0da8a99 type: string type: example: HEMS type: string required: - flight_id - type type: object wucher_internal_transport_http_dto_request.MissionCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.MissionCreateAttributes' type: enum: - mission_create - mission example: mission_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.MissionCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.MissionCreateData' required: - data type: object wucher_internal_transport_http_dto_request.MissionFileInput: properties: name: example: mission-brief.pdf type: string upload_intent_uuid: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: object wucher_internal_transport_http_dto_request.MissionTypeCreateAttributes: properties: code_type: example: HEMS type: string name: example: HEMS type: string required: - code_type - name type: object wucher_internal_transport_http_dto_request.MissionTypeCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.MissionTypeCreateAttributes' type: enum: - mission_type_create - mission_type example: mission_type_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.MissionTypeCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.MissionTypeCreateData' required: - data type: object wucher_internal_transport_http_dto_request.MissionUpdateAttributes: properties: files: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.MissionFileInput' type: array note: example: Mission note type: string subtype_id: example: 019d6774-98e8-7fba-9ef4-3795c0da8a99 type: string type: example: SPO type: string required: - type type: object wucher_internal_transport_http_dto_request.MissionUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.MissionUpdateAttributes' type: enum: - mission_update - mission example: mission_update type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.MissionUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.MissionUpdateData' required: - data type: object wucher_internal_transport_http_dto_request.OtherPersonAttributesInput: properties: email: example: guest@example.com type: string mobile_phone: example: +43-1234 type: string name: example: Guest Person type: string type: object wucher_internal_transport_http_dto_request.OtherPersonRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.OtherPersonRequestData' type: object wucher_internal_transport_http_dto_request.OtherPersonRequestData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.OtherPersonAttributesInput' type: example: other_person type: string type: object wucher_internal_transport_http_dto_request.ReserveAcBeforeInspectionAttributes: properties: file_checklist: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.ReserveAcFileChecklistItem' type: array fuel_added_amount: type: number fuel_amount: type: number fuel_unit: type: string hydraulic_lh_checked: type: boolean hydraulic_rh_checked: type: boolean note: type: string oil_engine_nr1_checked: type: boolean oil_engine_nr2_checked: type: boolean oil_transmission_igb_checked: type: boolean oil_transmission_mgb_checked: type: boolean oil_transmission_tgb_checked: type: boolean type: object wucher_internal_transport_http_dto_request.ReserveAcCreateAttributes: properties: flight_id: example: 019d6773-ccca-71dd-b9c7-8e6f531deb90 type: string helicopter_id: example: 019d6771-5fb5-7337-837f-bc5ed85181a1 type: string inspection: $ref: '#/definitions/wucher_internal_transport_http_dto_request.ReserveAcInspectionCreateAttributes' required: - flight_id - helicopter_id - inspection type: object wucher_internal_transport_http_dto_request.ReserveAcCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.ReserveAcCreateAttributes' type: enum: - reserve_ac_create - reserve_ac example: reserve_ac_create type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.ReserveAcCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.ReserveAcCreateData' required: - data type: object wucher_internal_transport_http_dto_request.ReserveAcDeleteData: properties: id: example: 019d6773-ccca-71dd-b9c7-8e6f531deb90 type: string required: - id type: object wucher_internal_transport_http_dto_request.ReserveAcDeleteRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.ReserveAcDeleteData' required: - data type: object wucher_internal_transport_http_dto_request.ReserveAcFileChecklistItem: properties: helicopter_file_id: example: 019d7000-aaaa-7bbb-8ccc-111111111111 type: string is_done: example: true type: boolean required: - helicopter_file_id type: object wucher_internal_transport_http_dto_request.ReserveAcFleetStatusFileAttributes: properties: file_checklist: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.ReserveAcFileChecklistItem' type: array type: object wucher_internal_transport_http_dto_request.ReserveAcInspectionCreateAttributes: properties: before: $ref: '#/definitions/wucher_internal_transport_http_dto_request.ReserveAcBeforeInspectionAttributes' fleet_status_file: $ref: '#/definitions/wucher_internal_transport_http_dto_request.ReserveAcFleetStatusFileAttributes' inspection_date: example: "2026-04-15" type: string prepare: $ref: '#/definitions/wucher_internal_transport_http_dto_request.ReserveAcPrepareInspectionAttributes' required: - before - inspection_date - prepare type: object wucher_internal_transport_http_dto_request.ReserveAcInspectionUpdateAttributes: properties: before: $ref: '#/definitions/wucher_internal_transport_http_dto_request.ReserveAcBeforeInspectionAttributes' inspection_date: example: "2026-04-15" type: string prepare: $ref: '#/definitions/wucher_internal_transport_http_dto_request.ReserveAcPrepareInspectionAttributes' type: object wucher_internal_transport_http_dto_request.ReserveAcPrepareInspectionAttributes: properties: file_checklist: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.ReserveAcFileChecklistItem' type: array notam_briefing: type: boolean operational_flight_plan: type: boolean weather_briefing: type: boolean type: object wucher_internal_transport_http_dto_request.ReserveAcUpdateAttributes: properties: flight_id: example: 019d6773-ccca-71dd-b9c7-8e6f531deb90 type: string helicopter_id: example: 019d6771-5fb5-7337-837f-bc5ed85181a1 type: string inspection: $ref: '#/definitions/wucher_internal_transport_http_dto_request.ReserveAcInspectionUpdateAttributes' type: object wucher_internal_transport_http_dto_request.ReserveAcUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.ReserveAcUpdateAttributes' id: example: 019d6773-ccca-71dd-b9c7-8e6f531deb90 type: string type: enum: - reserve_ac_update - reserve_ac example: reserve_ac_update type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.ReserveAcUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.ReserveAcUpdateData' required: - data type: object wucher_internal_transport_http_dto_request.TakeoverBaseRef: properties: id: type: string type: object wucher_internal_transport_http_dto_request.TakeoverCreateAttributes: properties: base_id: type: string duty_date: type: string edited_template_file_ids: items: type: string type: array files: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.TakeoverCreateFileInput' type: array helicopter_id: type: string inspection: $ref: '#/definitions/wucher_internal_transport_http_dto_request.ReserveAcInspectionCreateAttributes' notes: type: string roster_detail: $ref: '#/definitions/wucher_internal_transport_http_dto_request.TakeoverRosterDetailsInput' required: - duty_date type: object wucher_internal_transport_http_dto_request.TakeoverCreateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.TakeoverCreateAttributes' type: enum: - takeover_create - takeover type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.TakeoverCreateFileInput: properties: file_id: example: 019e8713-aa19-7fb7-a510-a0332dc69697 type: string name: example: takeover-report.pdf type: string upload_intent_uuid: example: 019e8713-aa19-7fb7-a510-a0332dc69697 type: string type: object wucher_internal_transport_http_dto_request.TakeoverCreateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.TakeoverCreateData' required: - data type: object wucher_internal_transport_http_dto_request.TakeoverRosterCrewInput: properties: id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: object wucher_internal_transport_http_dto_request.TakeoverRosterDetailsInput: properties: doctor: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.TakeoverRosterCrewInput' type: array helper: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.TakeoverRosterCrewInput' type: array other_person: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.TakeoverRosterOtherPersonInput' type: array pilot: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.TakeoverRosterPilotInput' type: array rescuer: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.TakeoverRosterCrewInput' type: array type: object wucher_internal_transport_http_dto_request.TakeoverRosterOtherPersonInput: properties: email: example: guest@example.com type: string mobile_phone: example: +43-1234 type: string name: example: Guest Person type: string other_person_id: description: OtherPersonID — OPTIONAL master person id to reuse (from GET /contact/other). example: 019d6771-5fb5-7337-837f-bc5ed85181a1 type: string type: object wucher_internal_transport_http_dto_request.TakeoverRosterPilotInput: properties: co_pilot: type: boolean crew_type: enum: - main - additional example: main type: string examiner: type: boolean flight_instructor: type: boolean id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string line_checker: type: boolean supervisor: type: boolean type: object wucher_internal_transport_http_dto_request.TakeoverUpdateAttributes: properties: base_id: type: string bases: $ref: '#/definitions/wucher_internal_transport_http_dto_request.TakeoverBaseRef' duty_date: type: string files: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.TakeoverCreateFileInput' type: array files_add: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.TakeoverCreateFileInput' type: array files_remove: items: type: string type: array files_replace: items: $ref: '#/definitions/wucher_internal_transport_http_dto_request.TakeoverCreateFileInput' type: array helicopter_id: type: string inspection: $ref: '#/definitions/wucher_internal_transport_http_dto_request.ReserveAcInspectionCreateAttributes' notes: type: string roster_detail: $ref: '#/definitions/wucher_internal_transport_http_dto_request.TakeoverRosterDetailsInput' roster_details: $ref: '#/definitions/wucher_internal_transport_http_dto_request.TakeoverRosterDetailsInput' type: object wucher_internal_transport_http_dto_request.TakeoverUpdateData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_request.TakeoverUpdateAttributes' id: type: string type: enum: - takeover_update - takeover type: string required: - attributes - type type: object wucher_internal_transport_http_dto_request.TakeoverUpdateRequest: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_request.TakeoverUpdateData' required: - data type: object wucher_internal_transport_http_dto_response.ActionSignoffAttributes: properties: created_at: example: "2026-06-16T03:04:05Z" type: string flight_id: example: 019d6774-98e8-7fba-9ef4-3795c0da8a13 type: string helicopter_id: example: 019d6771-5fb5-7337-837f-bc5ed85181a1 type: string signed: description: Signed — true once checked; gates the maintenance release form. example: false type: boolean signed_at: description: SignedAt / SignedBy — when/who signed; empty until signed. example: "2026-06-16T03:04:05Z" type: string signed_by: example: 019d61db-53c6-7280-87ec-e65f205c6d3b type: string signed_by_name: description: SignedByName / SignedByShort — resolved display name + 3-letter short of the signer. example: John Doe type: string signed_by_short: example: JDO type: string updated_at: example: "2026-06-16T03:04:05Z" type: string type: object wucher_internal_transport_http_dto_response.ActionSignoffResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_response.ActionSignoffAttributes' id: example: 019d6771-5fb5-7337-837f-bc5ed85181a1 type: string type: example: action_signoff type: string type: object wucher_internal_transport_http_dto_response.ActionSignoffResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_response.ActionSignoffResource' type: object wucher_internal_transport_http_dto_response.AirRescuerChecklistAttributes: properties: bases: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.AirRescuerChecklistBaseInfo' created_at: example: "2026-03-12T03:04:05Z" type: string created_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string items: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.AirRescuerChecklistItemResource' type: array position: example: 1 type: integer scope_code: example: TU type: string scope_code_de: example: DI type: string title: example: Monday Checklist type: string updated_at: example: "2026-03-12T03:04:05Z" type: string type: object wucher_internal_transport_http_dto_response.AirRescuerChecklistBaseGroupAttributes: properties: bases: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.AirRescuerChecklistBaseInfo' tabs: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.AirRescuerChecklistTabResource' type: array type: object wucher_internal_transport_http_dto_response.AirRescuerChecklistBaseGroupResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_response.AirRescuerChecklistBaseGroupAttributes' id: example: base-018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: air_rescuer_checklist_group type: string type: object wucher_internal_transport_http_dto_response.AirRescuerChecklistBulkResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.AirRescuerChecklistResource' type: array type: object wucher_internal_transport_http_dto_response.AirRescuerChecklistCATChecklistSummary: properties: created_at: example: "2026-03-12T03:04:05Z" type: string created_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string position: example: 1 type: integer title: example: Cockpit Flugretter type: string updated_at: example: "2026-03-12T03:04:05Z" type: string type: object wucher_internal_transport_http_dto_response.AirRescuerChecklistCATGroup: properties: checklists: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.AirRescuerChecklistCATChecklistSummary' type: array scope_code: example: DA type: string scope_code_de: example: TA type: string scope_code_name: example: Daily type: string scope_code_name_de: example: Taeglich type: string type: object wucher_internal_transport_http_dto_response.AirRescuerChecklistGroupedDataTableResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.AirRescuerChecklistBaseGroupResource' type: array meta: properties: draw: example: 1 type: integer records_filtered: example: 8 type: integer records_total: example: 8 type: integer type: object type: object wucher_internal_transport_http_dto_response.AirRescuerChecklistGroupedListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.AirRescuerChecklistBaseGroupResource' type: array meta: properties: total_bases: example: 8 type: integer type: object type: object wucher_internal_transport_http_dto_response.AirRescuerChecklistItemAttributes: properties: checklist_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string created_at: example: "2026-03-12T03:04:05Z" type: string created_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string name: example: Check radio type: string position: example: 1 type: integer updated_at: example: "2026-03-12T03:04:05Z" type: string type: object wucher_internal_transport_http_dto_response.AirRescuerChecklistItemBulkResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.AirRescuerChecklistItemData' type: array type: object wucher_internal_transport_http_dto_response.AirRescuerChecklistItemData: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_response.AirRescuerChecklistItemAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: air_rescuer_checklist_item type: string type: object wucher_internal_transport_http_dto_response.AirRescuerChecklistItemResource: properties: created_at: example: "2026-03-12T03:04:05Z" type: string created_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string name: example: Oxygen supply check type: string position: example: 1 type: integer updated_at: example: "2026-03-12T03:04:05Z" type: string type: object wucher_internal_transport_http_dto_response.AirRescuerChecklistItemResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_response.AirRescuerChecklistItemData' type: object wucher_internal_transport_http_dto_response.AirRescuerChecklistResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_response.AirRescuerChecklistAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: air_rescuer_checklist type: string type: object wucher_internal_transport_http_dto_response.AirRescuerChecklistResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_response.AirRescuerChecklistResource' type: object wucher_internal_transport_http_dto_response.AirRescuerChecklistTabChecklistDetail: properties: checklist_items: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.AirRescuerChecklistItemResource' type: array created_at: example: "2026-03-12T03:04:05Z" type: string created_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string position: example: 1 type: integer title: example: Monday Checklist type: string updated_at: example: "2026-03-12T03:04:05Z" type: string type: object wucher_internal_transport_http_dto_response.AirRescuerChecklistTabResource: properties: checklists: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.AirRescuerChecklistTabChecklistDetail' type: array groups: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.AirRescuerChecklistCATGroup' type: array scope_code: example: DA type: string scope_code_de: example: TA type: string scope_code_name: example: Daily type: string scope_code_name_de: example: Taeglich type: string type: object wucher_internal_transport_http_dto_response.ComplaintAttributes: properties: action_signed: example: true type: boolean action_signed_at: example: "2026-06-15T03:04:05Z" type: string action_signed_by_name: example: John Doe type: string action_signed_by_short: example: JDO type: string action_taken: example: tightened mount type: string aircraft_hours_at_fix: example: "1250.1" type: string aircraft_hours_at_report: example: "1245.3" type: string created_at: example: "2026-06-15T03:04:05Z" type: string description: example: Engine 2 N2 vibration intermittent during cruise above 110 KIAS type: string flight_id: example: 019d6774-98e8-7fba-9ef4-3795c0da8a13 type: string helicopter: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.FleetStatusHelicopter' helicopter_id: example: 019d6771-5fb5-7337-837f-bc5ed85181a1 type: string mel: $ref: '#/definitions/wucher_internal_transport_http_dto_response.ComplaintMEL' nsr: $ref: '#/definitions/wucher_internal_transport_http_dto_response.ComplaintNSR' reported_at: example: "2026-06-15T03:04:05Z" type: string reported_by: example: John Doe type: string reported_by_short: example: JDO type: string status: enum: - active_non_mel - active_mel - serviced example: active_mel type: string updated_at: example: "2026-06-15T03:04:05Z" type: string type: object wucher_internal_transport_http_dto_response.ComplaintGroupedDataTableResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.ComplaintHelicopterGroupResource' type: array meta: properties: draw: example: 1 type: integer records_filtered: example: 1 type: integer records_total: example: 1 type: integer type: object type: object wucher_internal_transport_http_dto_response.ComplaintGroupedListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.ComplaintHelicopterGroupResource' type: array meta: properties: page_number: example: 1 type: integer page_size: example: 20 type: integer total: example: 1 type: integer type: object type: object wucher_internal_transport_http_dto_response.ComplaintHelicopterGroupAttributes: properties: complaints: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.ComplaintResource' type: array helicopter: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.FleetStatusHelicopter' type: object wucher_internal_transport_http_dto_response.ComplaintHelicopterGroupResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_response.ComplaintHelicopterGroupAttributes' type: example: complaint_helicopter_group type: string type: object wucher_internal_transport_http_dto_response.ComplaintMEL: properties: classified_at: description: ClassifiedAt / ClassifiedByName / ClassifiedByShort — when/who classified the MEL. example: "2026-06-15T03:04:05Z" type: string classified_by_name: example: John Doe type: string classified_by_short: example: JDO type: string deadline: description: Deadline — grace deadline; after this the aircraft is AOG. null for NON-MEL. example: "2026-06-18T03:04:05Z" type: string severity: description: 'Severity — MEL class: 0=NON-MEL, 1=A, 2=B, 3=C, 4=D. Always set (classification is required at creation).' enum: - 0 - 1 - 2 - 3 - 4 example: 2 type: integer severity_label: description: SeverityLabel — human label of the severity (NON-MEL/A/B/C/D). example: B type: string type: object wucher_internal_transport_http_dto_response.ComplaintNSR: properties: decided_at: description: DecidedAt / DecidedByName / DecidedByShort — when/who decided NSR (may differ from the reporter). example: "2026-06-15T03:04:05Z" type: string decided_by_name: example: John Doe type: string decided_by_short: example: JDO type: string is_nsr: description: 'IsNSR — Non-Safety Release: true = aircraft released to fly despite the open defect.' example: false type: boolean reason: description: Reason — optional justification for the NSR decision. example: not required type: string type: object wucher_internal_transport_http_dto_response.ComplaintResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_response.ComplaintAttributes' id: example: 019d6771-5fb5-7337-837f-bc5ed85181a1 type: string type: example: complaint type: string type: object wucher_internal_transport_http_dto_response.ComplaintResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_response.ComplaintResource' type: object wucher_internal_transport_http_dto_response.DutyRosterAttributes: properties: bases: $ref: '#/definitions/wucher_internal_transport_http_dto_response.DutyRosterBaseInfo' created_at: example: "2026-03-12T03:04:05Z" type: string created_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string duty_date: example: "2026-03-16" type: string flight_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string helicopter: $ref: '#/definitions/wucher_internal_transport_http_dto_response.DutyRosterHelicopterSummary' roster_detail: $ref: '#/definitions/wucher_internal_transport_http_dto_response.DutyRosterDetailsResponse' shift_time: $ref: '#/definitions/wucher_internal_transport_http_dto_response.DutyRosterShiftTime' updated_at: example: "2026-03-12T03:04:05Z" type: string type: object wucher_internal_transport_http_dto_response.DutyRosterBaseGroupAttributes: properties: bases: $ref: '#/definitions/wucher_internal_transport_http_dto_response.DutyRosterBaseInfo' rosters: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.DutyRosterGroupRoster' type: array type: object wucher_internal_transport_http_dto_response.DutyRosterBaseGroupResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_response.DutyRosterBaseGroupAttributes' type: example: hems_base_roster_group type: string type: object wucher_internal_transport_http_dto_response.DutyRosterBaseInfo: properties: base_abbreviation: example: G1 type: string base_name: example: Gallus 1 - Zurs Lech type: string id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string shift_time: $ref: '#/definitions/wucher_internal_transport_http_dto_response.DutyRosterShiftTime' type: example: hems type: string type: object wucher_internal_transport_http_dto_response.DutyRosterCrew: properties: email: example: doctor@example.com type: string id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string mobile_phone: example: +43-1234 type: string name: example: Hunter Wolfgang type: string role: example: doctor type: string shift_date: $ref: '#/definitions/wucher_internal_transport_http_dto_response.DutyRosterShiftDate' shift_time: $ref: '#/definitions/wucher_internal_transport_http_dto_response.DutyRosterShiftTime' type: object wucher_internal_transport_http_dto_response.DutyRosterCrewDeleteAttributes: properties: deleted: example: true type: boolean deleted_count: example: 1 type: integer deleted_items: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.DutyRosterDeletedCrewItem' type: array type: object wucher_internal_transport_http_dto_response.DutyRosterCrewDeleteResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_response.DutyRosterCrewDeleteAttributes' type: example: duty_roster_crew_delete type: string type: object wucher_internal_transport_http_dto_response.DutyRosterCrewDeleteResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_response.DutyRosterCrewDeleteResource' type: object wucher_internal_transport_http_dto_response.DutyRosterDeletedCrewItem: properties: crew_type: example: main type: string date_end: example: "2026-03-22" type: string date_start: example: "2026-03-20" type: string id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string name: example: Pilot One type: string role_code: example: pilot type: string roster_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string user_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: object wucher_internal_transport_http_dto_response.DutyRosterDetailsResponse: properties: doctor: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.DutyRosterCrew' type: array helper: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.DutyRosterCrew' type: array other_person: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.DutyRosterCrew' type: array pilot: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.DutyRosterPilotCrew' type: array rescuer: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.DutyRosterCrew' type: array type: object wucher_internal_transport_http_dto_response.DutyRosterGroupRoster: properties: created_at: example: "2026-03-12T03:04:05Z" type: string created_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string duty_date: example: "2026-03-16" type: string flight_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string helicopter: $ref: '#/definitions/wucher_internal_transport_http_dto_response.DutyRosterHelicopterSummary' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string roster_detail: $ref: '#/definitions/wucher_internal_transport_http_dto_response.DutyRosterDetailsResponse' shift_time: $ref: '#/definitions/wucher_internal_transport_http_dto_response.DutyRosterShiftTime' updated_at: example: "2026-03-12T03:04:05Z" type: string type: object wucher_internal_transport_http_dto_response.DutyRosterGroupedDataTableResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.DutyRosterBaseGroupResource' type: array meta: properties: draw: example: 1 type: integer records_filtered: example: 8 type: integer records_total: example: 8 type: integer type: object type: object wucher_internal_transport_http_dto_response.DutyRosterGroupedListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.DutyRosterBaseGroupResource' type: array meta: properties: from: example: "2026-03-16" type: string to: example: "2026-04-15" type: string total_bases: example: 8 type: integer type: object type: object wucher_internal_transport_http_dto_response.DutyRosterHelicopterSummary: properties: designation: example: OE-XHZ type: string id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string identifier: example: "1234" type: string type: example: EC-135 type: string type: object wucher_internal_transport_http_dto_response.DutyRosterPilotCrew: properties: co_pilot: type: boolean crew_type: example: main type: string email: example: pilot@example.com type: string examiner: type: boolean flight_instructor: type: boolean id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string line_checker: type: boolean mobile_phone: example: +43-1234 type: string name: example: Hunter Wolfgang type: string role: example: pilot type: string shift_date: $ref: '#/definitions/wucher_internal_transport_http_dto_response.DutyRosterShiftDate' supervisor: type: boolean type: object wucher_internal_transport_http_dto_response.DutyRosterResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_response.DutyRosterAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: duty_roster type: string type: object wucher_internal_transport_http_dto_response.DutyRosterResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_response.DutyRosterResource' type: object wucher_internal_transport_http_dto_response.DutyRosterShiftDate: properties: date_end: example: "2026-03-16" type: string date_start: example: "2026-03-16" type: string type: object wucher_internal_transport_http_dto_response.DutyRosterShiftTime: properties: shift_end: example: "21:00" type: string shift_start: example: "06:00" type: string type: object wucher_internal_transport_http_dto_response.EASAReleaseAttributes: properties: complaint_id: example: 019d6774-1111-7fba-9ef4-3795c0da8a13 type: string created_at: example: "2026-06-16T03:04:05Z" type: string easa_ac_hours: example: "1245.3" type: string easa_date: example: "2026-06-16" type: string easa_location: example: LOWI type: string easa_maint_manual_rev_airframe: example: Rev 12 type: string easa_maint_manual_rev_engine: example: Rev 8 type: string easa_permit_no: example: 145.A.50 type: string easa_signer_id: description: EASASignerID — contact id (UUIDv7) of the signer/technician. example: 019d61db-53c6-7280-87ec-e65f205c6d3b type: string easa_signer_name: description: EASASignerName / EASASignerShort — resolved display name + 3-letter short of the signer contact. example: John Doe type: string easa_signer_short: example: JDO type: string easa_wo_no: example: WO-2026-001 type: string flight_id: example: 019d6774-98e8-7fba-9ef4-3795c0da8a13 type: string helicopter_id: example: 019d6771-5fb5-7337-837f-bc5ed85181a1 type: string is_signed: description: IsSigned — true once the release is signed (Release to Service); then the complaint becomes fixed. example: false type: boolean missing_sign_fields: description: MissingSignFields — required fields still empty; must all be filled before it can be signed. items: type: string type: array signed_at: description: SignedAt / SignedBy — when/who signed; empty until signed. example: "2026-06-16T03:04:05Z" type: string signed_by: example: 019d61db-53c6-7280-87ec-e65f205c6d3b type: string updated_at: example: "2026-06-16T03:04:05Z" type: string type: object wucher_internal_transport_http_dto_response.EASAReleaseDeleteResponse: properties: data: properties: attributes: properties: deleted: example: true type: boolean type: object type: example: easa_release_delete type: string type: object type: object wucher_internal_transport_http_dto_response.EASAReleaseListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.EASAReleaseResource' type: array meta: properties: total: example: 1 type: integer type: object type: object wucher_internal_transport_http_dto_response.EASAReleaseResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_response.EASAReleaseAttributes' id: example: 019d6771-5fb5-7337-837f-bc5ed85181a1 type: string type: example: easa_release type: string type: object wucher_internal_transport_http_dto_response.EASAReleaseResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_response.EASAReleaseResource' type: object wucher_internal_transport_http_dto_response.FileManagerActionBulkError: properties: code: example: FILE_MANAGER_VALIDATION_FAILED type: string detail: example: duplicate name in target folder type: string error_code: example: "4222111" type: string status: example: 422 type: integer title: example: Validation error type: string type: object wucher_internal_transport_http_dto_response.FileManagerActionLocation: properties: folder_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: object wucher_internal_transport_http_dto_response.FileManagerAttachmentListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerAttachmentResource' type: array meta: properties: page_number: example: 1 type: integer page_size: example: 20 type: integer total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto_response.FileManagerAttachmentResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.FileManagerAttachmentAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: file_manager_attachment type: string type: object wucher_internal_transport_http_dto_response.FileManagerAttachmentResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerAttachmentResource' type: object wucher_internal_transport_http_dto_response.FileManagerBreadcrumbItem: properties: id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string name: example: operations type: string type: object wucher_internal_transport_http_dto_response.FileManagerFileBulkError: properties: code: example: FILE_MANAGER_VALIDATION_FAILED type: string detail: example: duplicate name in target folder type: string error_code: example: "4222111" type: string status: example: 422 type: integer title: example: Validation error type: string type: object wucher_internal_transport_http_dto_response.FileManagerFileBulkItem: properties: error: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileBulkError' index: example: 0 type: integer message: example: created type: string resource: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileResource' success: example: true type: boolean type: object wucher_internal_transport_http_dto_response.FileManagerFileBulkResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileBulkItem' type: array meta: properties: failed: example: 1 type: integer partial_success: example: true type: boolean success: example: 2 type: integer total: example: 3 type: integer type: object type: object wucher_internal_transport_http_dto_response.FileManagerFileCancelUploadBulkItem: properties: error: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileBulkError' index: example: 0 type: integer resource: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileCancelUploadResource' success: example: true type: boolean type: object wucher_internal_transport_http_dto_response.FileManagerFileCancelUploadBulkResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileCancelUploadBulkItem' type: array meta: properties: failed: example: 1 type: integer partial_success: example: true type: boolean success: example: 2 type: integer total: example: 3 type: integer type: object type: object wucher_internal_transport_http_dto_response.FileManagerFileCancelUploadResource: properties: attributes: properties: status: example: canceled type: string type: object id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: file_manager_file_cancel_upload_result type: string type: object wucher_internal_transport_http_dto_response.FileManagerFileDetailResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.FileManagerFileDetailAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: file_manager_file type: string type: object wucher_internal_transport_http_dto_response.FileManagerFileDetailResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileDetailResource' type: object wucher_internal_transport_http_dto_response.FileManagerFileResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.FileManagerFileAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: file_manager_file type: string type: object wucher_internal_transport_http_dto_response.FileManagerFileResponse: properties: data: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.FileManagerFileAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: file_manager_file type: string type: object type: object wucher_internal_transport_http_dto_response.FileManagerFileUploadIntentBulkItem: properties: error: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileBulkError' index: example: 0 type: integer resource: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileUploadIntentResource' success: example: true type: boolean type: object wucher_internal_transport_http_dto_response.FileManagerFileUploadIntentBulkResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileUploadIntentBulkItem' type: array meta: properties: failed: example: 1 type: integer partial_success: example: true type: boolean success: example: 2 type: integer total: example: 3 type: integer type: object type: object wucher_internal_transport_http_dto_response.FileManagerFileUploadIntentResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.FileManagerFileUploadIntentAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: file_manager_file_upload_intent type: string type: object wucher_internal_transport_http_dto_response.FileManagerFileWOPISessionData: properties: access_token: example: eyJhbGciOiJIUzI1NiIs... type: string access_token_ttl: description: |- AccessTokenTTL is the access token's absolute expiry time, in epoch milliseconds (equal to the JWT exp claim), as required by WOPI/Collabora. example: 1782971996000 type: integer collabora_action: example: https://collabora.example.com/browser/123?WOPISrc=... type: string file_id: example: 019f0386-0a00-7a4a-a2d8-30afc0e0c3ad type: string type: object wucher_internal_transport_http_dto_response.FileManagerFileWOPISessionResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileWOPISessionData' type: object wucher_internal_transport_http_dto_response.FileManagerFolderDetailResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.FileManagerFolderDetailAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: file_manager_folder type: string type: object wucher_internal_transport_http_dto_response.FileManagerFolderDetailResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFolderDetailResource' type: object wucher_internal_transport_http_dto_response.FileManagerFolderResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.FileManagerFolderAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: file_manager_folder type: string type: object wucher_internal_transport_http_dto_response.FileManagerFolderResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFolderResource' type: object wucher_internal_transport_http_dto_response.FileManagerMoveNodeBulkItem: properties: error: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerActionBulkError' index: example: 0 type: integer resource: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerMoveNodeResultResource' success: example: true type: boolean type: object wucher_internal_transport_http_dto_response.FileManagerMoveNodeBulkResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerMoveNodeBulkItem' type: array meta: properties: failed: example: 1 type: integer partial_success: example: true type: boolean success: example: 2 type: integer total: example: 3 type: integer type: object type: object wucher_internal_transport_http_dto_response.FileManagerMoveNodeResultAttributes: properties: location: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerActionLocation' node_type: example: folder type: string status: example: moved type: string type: object wucher_internal_transport_http_dto_response.FileManagerMoveNodeResultResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerMoveNodeResultAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: file_manager_move_result type: string type: object wucher_internal_transport_http_dto_response.FileManagerNodeAttributes: properties: created_at: example: "2026-03-12T03:04:05Z" type: string download_url: example: https://s3.localhost.localstack.cloud:4566/wucher-file-dev/files/2026/04/05/policy.pdf?X-Amz-Signature=... type: string extension: example: pdf type: string mime_type: example: application/pdf type: string name: example: operations type: string node_type: example: folder type: string parent_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string path_cache: example: /root/operations type: string size_bytes: example: 1024 type: integer status: example: ready type: string updated_at: example: "2026-03-12T03:04:05Z" type: string type: object wucher_internal_transport_http_dto_response.FileManagerNodeListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerNodeResource' type: array meta: properties: breadcrumb: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerBreadcrumbItem' type: array files: example: 8 type: integer folders: example: 4 type: integer is_root: example: true type: boolean parent_uuid: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string total: example: 12 type: integer type: object type: object wucher_internal_transport_http_dto_response.FileManagerNodeResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerNodeAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: file_manager_node type: string type: object wucher_internal_transport_http_dto_response.FileManagerPurgeNodeBulkItem: properties: error: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerActionBulkError' index: example: 0 type: integer resource: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerPurgeNodeResultResource' success: example: true type: boolean type: object wucher_internal_transport_http_dto_response.FileManagerPurgeNodeBulkResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerPurgeNodeBulkItem' type: array meta: properties: failed: example: 1 type: integer partial_success: example: true type: boolean success: example: 2 type: integer total: example: 3 type: integer type: object type: object wucher_internal_transport_http_dto_response.FileManagerPurgeNodeResultAttributes: properties: node_type: example: folder type: string status: example: purged type: string type: object wucher_internal_transport_http_dto_response.FileManagerPurgeNodeResultResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerPurgeNodeResultAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: file_manager_purge_result type: string type: object wucher_internal_transport_http_dto_response.FileManagerTrashListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerTrashNodeResource' type: array meta: properties: files: example: 70 type: integer folders: example: 50 type: integer page_number: example: 1 type: integer page_size: example: 20 type: integer total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto_response.FileManagerTrashNodeAttributes: properties: created_at: example: "2026-03-31T08:52:03Z" type: string download_url: example: https://s3.localhost.localstack.cloud:4566/wucher-file-dev/files/2026/04/05/policy.pdf?X-Amz-Signature=... type: string extension: example: pdf type: string mime_type: example: application/pdf type: string name: example: Documents type: string node_type: example: folder type: string path_cache: example: /Documents type: string size_bytes: example: 123456 type: integer trashed_at: example: "2026-04-01T10:00:00Z" type: string updated_at: example: "2026-03-31T08:52:03Z" type: string type: object wucher_internal_transport_http_dto_response.FileManagerTrashNodeResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerTrashNodeAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: file_manager_trash_node type: string type: object wucher_internal_transport_http_dto_response.FleetHistoryEntry: properties: action: example: easa_signed type: string actor: example: 019e91e6-2908-7f37-93e6-015ed1b7587d type: string actor_name: example: John Doe type: string at: example: "2026-06-17T10:15:00Z" type: string entity_id: example: 019d6771-5fb5-7337-837f-bc5ed85181a1 type: string entity_type: example: easa_release type: string message: example: Release to Service (EASA signed) type: string type: object wucher_internal_transport_http_dto_response.FleetHistoryListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FleetHistoryEntry' type: array meta: properties: page_number: example: 1 type: integer page_size: example: 20 type: integer total: example: 1 type: integer type: object type: object wucher_internal_transport_http_dto_response.FleetStatusAttributes: properties: complaints: items: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.FleetStatusComplaint' type: array created_at: example: "2026-05-29T07:43:06Z" type: string created_by: example: John Doe type: string easa_release: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.FleetStatusEASARelease' files: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FleetStatusFile' type: array helicopter: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.FleetStatusHelicopter' maintenance_schedules: items: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.MaintenanceScheduleAttributes' type: array mcf: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.FleetStatusMCF' serviced_at: example: "2026-05-29T07:43:06Z" type: string status: enum: - active - serviced example: active type: string summary: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.FleetStatusSummary' updated_at: example: "2026-05-29T07:43:06Z" type: string updated_by: example: John Doe type: string type: object wucher_internal_transport_http_dto_response.FleetStatusDataTableResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FleetStatusResource' type: array meta: properties: draw: example: 1 type: integer records_filtered: example: 20 type: integer records_total: example: 100 type: integer type: object type: object wucher_internal_transport_http_dto_response.FleetStatusDeleteResponse: properties: data: properties: attributes: properties: deleted: example: true type: boolean type: object type: example: fleet_status_delete type: string type: object type: object wucher_internal_transport_http_dto_response.FleetStatusFile: properties: category: example: wb type: string download_url: example: https://storage.example.com/fleet/wb.pdf?X-Amz-Signature=abc123 type: string file_attachment_id: example: 019d7000-aaaa-7bbb-8ccc-111111111111 type: string id: example: 019d6773-ccca-71dd-b9c7-8e6f531deb90 type: string is_mandatory: example: true type: boolean name: example: weight_balance.pdf type: string size_bytes: example: 1024000 type: integer thumbnail_download_url: example: https://storage.example.com/fleet/wb.thumb.jpg?X-Amz-Signature=abc123 type: string type: object wucher_internal_transport_http_dto_response.FleetStatusListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FleetStatusResource' type: array meta: properties: page_number: example: 1 type: integer page_size: example: 20 type: integer total: example: 100 type: integer type: object type: object wucher_internal_transport_http_dto_response.FleetStatusMarkServicedResponse: properties: data: properties: attributes: properties: serviced: example: true type: boolean type: object type: example: fleet_status_mark_serviced type: string type: object type: object wucher_internal_transport_http_dto_response.FleetStatusResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FleetStatusAttributes' id: example: 019d6773-ccca-71dd-b9c7-8e6f531deb90 type: string type: example: fleet_status type: string type: object wucher_internal_transport_http_dto_response.FleetStatusResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FleetStatusResource' type: object wucher_internal_transport_http_dto_response.FlightAttributes: properties: code: example: M-062226-001 type: string created_at: example: "2026-04-14T08:00:00Z" type: string created_by: $ref: '#/definitions/wucher_internal_transport_http_dto_response.UserRef' date: example: "2026-04-14" type: string deleted_at: example: "2026-04-14T08:00:00Z" type: string deleted_by: $ref: '#/definitions/wucher_internal_transport_http_dto_response.UserRef' draft: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FlightDraftGroup' type: array mission_id: example: 019e9640-f7af-7940-80e8-1e9a83013afb type: string status: example: draft type: string steps: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FlightStepItem' type: array takeover: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FlightTakeoverSummary' total_draft: example: 6 type: integer updated_at: example: "2026-04-14T08:00:00Z" type: string updated_by: $ref: '#/definitions/wucher_internal_transport_http_dto_response.UserRef' type: object wucher_internal_transport_http_dto_response.FlightDailyInspectionSummary: properties: date: example: 17.04.2026 type: string id: example: 019d6772-471c-7b70-b42a-d94020ef61e4 type: string name: example: Ganahl Stefan type: string short_name: example: GAN type: string utc_time: example: "10:57" type: string type: object wucher_internal_transport_http_dto_response.FlightDataAttributes: properties: co_pilot: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FlightDataCoPilotRef' created_at: example: "2026-04-20T08:00:00Z" type: string created_by: example: 019d61db-53c6-7280-87ec-e65f205c6d3b type: string customer_name: example: Air Service type: string delivery_note_number: example: DN-1001 type: string engine: example: PW207D1 type: string flight_duration_seconds: example: 4500 type: integer flight_landing: example: "2026-04-20T09:15:00Z" type: string flight_plan_distance: example: 120.5 type: number flight_plan_time_seconds: example: 4200 type: integer flight_plan_true_course: example: 182.3 type: number flight_positioning: example: false type: boolean flight_red_seconds: example: 300 type: integer flight_take_off: example: "2026-04-20T08:00:00Z" type: string from: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FlightDataLocationRef' fuel_after_flight: example: 280 type: number fuel_before_flight: example: 420 type: number fuel_planning: example: 390 type: number fuel_upload: example: 100 type: number hec: allOf: - $ref: '#/definitions/wucher_internal_transport_http_dto_response.FlightDataSPOHECDetails' x-note: Only returned for SPO missions heslo: allOf: - $ref: '#/definitions/wucher_internal_transport_http_dto_response.FlightDataSPOHESLODetails' x-note: Only returned for SPO missions hook_releases: example: 0 type: integer landing_count: example: 1 type: integer logging: allOf: - $ref: '#/definitions/wucher_internal_transport_http_dto_response.FlightDataSPOLoggingDetails' x-note: Only returned for SPO missions max_n1: example: 97.5 type: number max_n2: example: 98.1 type: number mission: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FlightDataMissionRef' other_information: type: string pax_count: example: 4 type: integer roster_details: $ref: '#/definitions/wucher_internal_transport_http_dto_response.TakeoverDutyRosterDetailsResponse' rotor_brake_cycle: example: 1 type: integer status: example: in_progress type: string ticket_no: example: TKT-001 type: string to: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FlightDataLocationRef' updated_at: example: "2026-04-20T08:00:00Z" type: string updated_by: example: 019d61db-53c6-7280-87ec-e65f205c6d3b type: string type: object wucher_internal_transport_http_dto_response.FlightDataCoPilotRef: properties: email: example: john.doe@example.com type: string first_name: example: John type: string id: example: 019d61db-53c6-7280-87ec-e65f205c6d3b type: string last_name: example: Doe type: string type: object wucher_internal_transport_http_dto_response.FlightDataListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FlightDataResource' type: array meta: properties: page_number: example: 1 type: integer page_size: example: 20 type: integer total: example: 1 type: integer type: object type: object wucher_internal_transport_http_dto_response.FlightDataLocationRef: properties: code: example: WIII type: string id: example: 019d6774-98e8-7fba-9ef4-3795c0da8a13 type: string label: example: WIII type: string name: example: General Hospital type: string type: example: icao type: string type: object wucher_internal_transport_http_dto_response.FlightDataMissionRef: properties: id: example: 019d6774-98e8-7fba-9ef4-3795c0da8a13 type: string type: example: HEMS type: string type: object wucher_internal_transport_http_dto_response.FlightDataResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FlightDataAttributes' id: example: 019d6774-98e8-7fba-9ef4-3795c0da8a13 type: string type: example: flight_data type: string type: object wucher_internal_transport_http_dto_response.FlightDataResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FlightDataResource' type: object wucher_internal_transport_http_dto_response.FlightDataSPOHECDetails: properties: flights: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FlightDataSPOHECFlight' type: array loads: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FlightDataSPOHECLoad' type: array slings: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FlightDataSPOHECSling' type: array type: object wucher_internal_transport_http_dto_response.FlightDataSPOHECFlight: properties: equipment_id: description: 'Facility category: hec-rope-label.' type: string equipment_name: type: string hec_cycle: type: integer id: type: string rot: type: integer type: object wucher_internal_transport_http_dto_response.FlightDataSPOHECLoad: properties: id: type: string load_category: description: Weight band for the HEC load, e.g. "bis 199 kg", "200-600 kg", "600-800 kg", "800-1000 kg". example: 200-600 kg type: string quantity: example: 3 type: integer type: object wucher_internal_transport_http_dto_response.FlightDataSPOHECSling: properties: id: type: string sling_id: description: 'Facility category: hec-rope-length.' type: string sling_name: type: string type: object wucher_internal_transport_http_dto_response.FlightDataSPOHESLODetails: properties: flights: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FlightDataSPOHESLOFlight' type: array type: object wucher_internal_transport_http_dto_response.FlightDataSPOHESLOFlight: properties: heslo_rope_label_id: description: 'Facility category: heslo-rope-label.' type: string heslo_rope_label_name: type: string id: type: string rot: type: integer slings: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FlightDataSPOHESLOSling' type: array type: object wucher_internal_transport_http_dto_response.FlightDataSPOHESLOSling: properties: id: type: string sling_id: description: 'Facility category: heslo-rope-length.' type: string sling_name: type: string type: object wucher_internal_transport_http_dto_response.FlightDataSPOLoggingDetails: properties: slings: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FlightDataSPOLoggingSling' type: array type: object wucher_internal_transport_http_dto_response.FlightDataSPOLoggingSling: properties: id: type: string sling_id: description: 'Facility category: heslo-hook.' type: string sling_name: type: string type: object wucher_internal_transport_http_dto_response.FlightDraftGroup: properties: items: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FlightDraftItem' type: array type: example: HEMS type: string type: object wucher_internal_transport_http_dto_response.FlightDraftItem: properties: flight_data_id: example: 019d6774-98e8-7fba-9ef4-3795c0da8a55 type: string id: example: 019d6774-98e8-7fba-9ef4-3795c0da8a13 type: string status: example: draft type: string type: example: HEMS type: string type: object wucher_internal_transport_http_dto_response.FlightHelicopterSummary: properties: aog: example: false type: boolean designation: example: AIRBUS H145 type: string id: example: 019d6771-5fb5-7337-837f-bc5ed85181a1 type: string identifier: example: D-HYAR type: string is_active: example: true type: boolean type: example: H145 type: string type: object wucher_internal_transport_http_dto_response.FlightListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FlightResource' type: array meta: properties: page_number: example: 1 type: integer page_size: example: 20 type: integer total: example: 1 type: integer type: object type: object wucher_internal_transport_http_dto_response.FlightMissionTypeSummary: properties: completed: example: 0 type: integer draft: example: 5 type: integer type: example: HEMS type: string type: object wucher_internal_transport_http_dto_response.FlightResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FlightAttributes' id: example: 019d6774-98e8-7fba-9ef4-3795c0da8a13 type: string type: example: flight type: string type: object wucher_internal_transport_http_dto_response.FlightStepItem: properties: complete: example: true type: boolean completed_at: example: "2026-04-14T08:00:00Z" type: string completed_by: example: 019d61db-53c6-7280-87ec-e65f205c6d3b type: string id: example: 019d6772-471c-7b70-b42a-d94020ef61e4 type: string mission_type: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FlightMissionTypeSummary' type: array phase: example: duty_roster type: string position: example: takeover type: string status: example: completed type: string step: example: 1 type: integer type: object wucher_internal_transport_http_dto_response.FlightTakeoverSummary: properties: daily_inspection: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FlightDailyInspectionSummary' helicopter: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FlightHelicopterSummary' id: example: 019e8713-aa19-7fb7-a510-a0332dc69697 type: string roster_detail: $ref: '#/definitions/wucher_internal_transport_http_dto_response.TakeoverDutyRosterDetailsResponse' type: object wucher_internal_transport_http_dto_response.HelicopterAttributes: properties: aog: example: false type: boolean aog_reason: example: Main rotor gearbox fault type: string consumption_lt_min: example: 4.1 type: number created_at: example: "2026-03-12T03:04:05Z" type: string created_by: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.HelicopterAuditUser' designation: example: OE-XHZ type: string dry: example: false type: boolean engine_1: example: TM type: string engine_2: example: TM type: string foto: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.HelicopterFoto' identifier: example: ABC-0001 type: string igb: example: false type: boolean is_active: example: true type: boolean is_in_use: example: false type: boolean last_daily_inspection: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.HelicopterLastDailyInspection' lh: example: true type: boolean maintenance_schedules: description: |- MaintenanceSchedules mirrors the helicopter's latest fleet status. It always lists every inspection type; entries without data are empty. items: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.MaintenanceScheduleAttributes' type: array mgb: example: true type: boolean note: example: Primary HEMS helicopter type: string nr1: example: true type: boolean nr2: example: true type: boolean rh: example: true type: boolean sortkey: example: 10 type: integer status: description: |- Status is the operational status of the helicopter (read-time derived). Values: "available", "booked", "aog", "mcf". Precedence: mcf > aog > booked > available. "booked" = active flight assignment; "aog" = air_on_ground flag OR an open complaint grounding it (non-MEL, or MEL past its grace deadline); "mcf" = a pending maintenance check flight (MCF created, not yet passed). enum: - available - booked - aog - mcf example: available type: string tgb: example: true type: boolean type: example: EC-135 type: string updated_at: example: "2026-03-12T03:04:05Z" type: string updated_by: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.HelicopterAuditUser' utc_offset: example: -1 type: integer type: object wucher_internal_transport_http_dto_response.HelicopterDataTableResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterResource' type: array meta: properties: draw: example: 1 type: integer records_filtered: example: 12 type: integer records_total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto_response.HelicopterFileBulkError: properties: code: example: HELICOPTER_FILE_INVALID_PAYLOAD type: string detail: example: helicopter_id is invalid UUID type: string error_code: example: "4220318" type: string status: example: 422 type: integer title: example: Validation error type: string type: object wucher_internal_transport_http_dto_response.HelicopterFileCollectionAttachment: properties: download_url: example: https://s3.localhost.localstack.cloud:4566/wucher-file-dev/files/2026/04/05/policy.pdf?X-Amz-Signature=... type: string file_name: example: Before Flight Checklist.pdf type: string id: example: 019d6771-6c8e-7a2d-a7b8-03bcb65fcb3e type: string type: object wucher_internal_transport_http_dto_response.HelicopterFileCollectionAttributes: properties: files: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterFileCollectionSections' helicopter: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterFileCollectionHelicopter' type: object wucher_internal_transport_http_dto_response.HelicopterFileCollectionHelicopter: properties: id: example: 019d6771-5fb5-7337-837f-bc5ed85181a1 type: string name: example: AIRBUS H145 type: string type: object wucher_internal_transport_http_dto_response.HelicopterFileCollectionItem: properties: attachment: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterFileCollectionAttachment' attachment_pending: example: true type: boolean created_at: example: "2026-04-14T08:00:00Z" type: string created_by: example: 019d61db-53c6-7280-87ec-e65f205c6d3b type: string helicopter_file_id: example: 019d6773-ccca-71dd-b9c7-8e6f531deb90 type: string is_mandatory: example: true type: boolean is_template: example: true type: boolean position: example: 1 type: integer section: example: bfi type: string updated_at: example: "2026-04-14T08:00:00Z" type: string updated_by: example: 019d61db-53c6-7280-87ec-e65f205c6d3b type: string type: object wucher_internal_transport_http_dto_response.HelicopterFileCollectionListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterFileCollectionResponse' type: array meta: properties: page_number: example: 1 type: integer page_size: example: 20 type: integer total: example: 1 type: integer type: object type: object wucher_internal_transport_http_dto_response.HelicopterFileCollectionResponse: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterFileCollectionAttributes' type: example: helicopter_file_collection type: string type: object wucher_internal_transport_http_dto_response.HelicopterFileCollectionSections: properties: after: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterFileCollectionItem' type: array before: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterFileCollectionItem' type: array prepare: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterFileCollectionItem' type: array type: object wucher_internal_transport_http_dto_response.HelicopterFileCreateBulkItem: properties: error: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterFileBulkError' index: example: 0 type: integer resource: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.Resource' success: example: true type: boolean type: object wucher_internal_transport_http_dto_response.HelicopterFileCreateBulkResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterFileCreateBulkItem' type: array meta: properties: failed: example: 1 type: integer partial_success: example: true type: boolean success: example: 2 type: integer total: example: 3 type: integer type: object type: object wucher_internal_transport_http_dto_response.HelicopterFileDeleteAttributes: properties: deleted: example: true type: boolean type: object wucher_internal_transport_http_dto_response.HelicopterFileDeleteResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterFileDeleteAttributes' type: example: helicopter_file_delete type: string type: object wucher_internal_transport_http_dto_response.HelicopterFileDeleteResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterFileDeleteResource' type: object wucher_internal_transport_http_dto_response.HelicopterFileResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.HelicopterFileAttributes' id: example: 019d6773-ccca-71dd-b9c7-8e6f531deb90 type: string type: example: helicopter_file type: string type: object wucher_internal_transport_http_dto_response.HelicopterFileResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterFileResource' type: object wucher_internal_transport_http_dto_response.HelicopterFileUpdateBulkItem: properties: error: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterFileBulkError' index: example: 0 type: integer resource: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.Resource' success: example: true type: boolean type: object wucher_internal_transport_http_dto_response.HelicopterFileUpdateBulkResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterFileUpdateBulkItem' type: array meta: properties: failed: example: 1 type: integer partial_success: example: true type: boolean success: example: 2 type: integer total: example: 3 type: integer type: object type: object wucher_internal_transport_http_dto_response.HelicopterFileUploadIntentBulkItem: properties: error: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterFileBulkError' index: example: 0 type: integer resource: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterFileUploadIntentResource' success: example: true type: boolean type: object wucher_internal_transport_http_dto_response.HelicopterFileUploadIntentBulkResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterFileUploadIntentBulkItem' type: array meta: properties: failed: example: 1 type: integer partial_success: example: true type: boolean success: example: 2 type: integer total: example: 3 type: integer type: object type: object wucher_internal_transport_http_dto_response.HelicopterFileUploadIntentResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.FileManagerFileUploadIntentAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: helicopter_file_upload_intent type: string type: object wucher_internal_transport_http_dto_response.HelicopterFileUploadIntentResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterFileUploadIntentResource' type: object wucher_internal_transport_http_dto_response.HelicopterListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterResource' type: array meta: properties: page_number: example: 1 type: integer page_size: example: 20 type: integer total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto_response.HelicopterNextReportNumberAttributes: properties: identifier: example: ABC type: string report_number: example: ABC-0001 type: string sequence: example: 1 type: integer type: object wucher_internal_transport_http_dto_response.HelicopterNextReportNumberResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterNextReportNumberAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: helicopter_report_number type: string type: object wucher_internal_transport_http_dto_response.HelicopterNextReportNumberResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterNextReportNumberResource' type: object wucher_internal_transport_http_dto_response.HelicopterResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: helicopter type: string type: object wucher_internal_transport_http_dto_response.HelicopterResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterResource' type: object wucher_internal_transport_http_dto_response.MCFAttributes: properties: af_hours: example: "1245.3" type: string completed_at: example: "2026-06-16T03:04:05Z" type: string completed_by: example: 019d61db-53c6-7280-87ec-e65f205c6d3b type: string created_at: example: "2026-06-16T03:04:05Z" type: string date: example: "2026-06-17" type: string decided_at: example: "2026-06-16T03:04:05Z" type: string decided_by: example: 019d61db-53c6-7280-87ec-e65f205c6d3b type: string flight_id: example: 019d6774-98e8-7fba-9ef4-3795c0da8a13 type: string helicopter_id: example: 019d6771-5fb5-7337-837f-bc5ed85181a1 type: string is_cleared: example: false type: boolean is_complete: example: false type: boolean is_pending: example: true type: boolean landing_count: example: 3 type: integer notes: example: Vibration within limits type: string result: enum: - passed - failed example: passed type: string updated_at: example: "2026-06-16T03:04:05Z" type: string utc_time: example: "2026-06-17T08:30:00Z" type: string type: object wucher_internal_transport_http_dto_response.MCFListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.MCFResource' type: array meta: properties: total: example: 1 type: integer type: object type: object wucher_internal_transport_http_dto_response.MCFResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_response.MCFAttributes' id: example: 019d6771-5fb5-7337-837f-bc5ed85181a1 type: string type: example: mcf type: string type: object wucher_internal_transport_http_dto_response.MCFResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_response.MCFResource' type: object wucher_internal_transport_http_dto_response.MasterSettingsAttributes: properties: company_name: example: Wucher type: string cover_file_uuid: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string cover_original_size_bytes: example: 2048000 type: integer cover_thumbnail_url: example: https://cdn.example.com/cover.thumb.png type: string cover_url: example: https://cdn.example.com/cover.png type: string created_at: example: "2026-03-12T03:04:05Z" type: string created_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string deleted_at: example: "2026-03-12T03:04:05Z" type: string deleted_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string logo_file_uuid: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string logo_original_size_bytes: example: 1024000 type: integer logo_thumbnail_url: example: https://cdn.example.com/logo.thumb.png type: string logo_url: example: https://cdn.example.com/logo.png type: string subtitle: example: Flight operations platform type: string title: example: Welcome to Wucher type: string updated_at: example: "2026-03-12T03:04:05Z" type: string updated_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: object wucher_internal_transport_http_dto_response.MasterSettingsMicrosoftEntraAttributes: properties: MS_ENTRA_AUTHORITY: example: https://login.microsoftonline.com/ type: string MS_ENTRA_CLIENT_ID: example: your-client-id type: string MS_ENTRA_CLIENT_SECRET: example: '********' type: string MS_ENTRA_REDIRECT_URL: example: https://example.com/api/v1/auth/microsoft/callback type: string MS_ENTRA_SCOPES: example: openid,profile,email type: string MS_ENTRA_TENANT_ID: example: your-tenant-id type: string type: object wucher_internal_transport_http_dto_response.MasterSettingsMicrosoftEntraResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_response.MasterSettingsMicrosoftEntraAttributes' type: example: master_settings_microsoft_entra_sso type: string type: object wucher_internal_transport_http_dto_response.MasterSettingsMicrosoftEntraResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_response.MasterSettingsMicrosoftEntraResource' type: object wucher_internal_transport_http_dto_response.MasterSettingsResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_response.MasterSettingsAttributes' id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: master_settings type: string type: object wucher_internal_transport_http_dto_response.MasterSettingsResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_response.MasterSettingsResource' type: object wucher_internal_transport_http_dto_response.MissionAttributes: properties: created_at: example: "2026-04-20T08:00:00Z" type: string created_by: example: 019d61db-53c6-7280-87ec-e65f205c6d3b type: string end_time: example: "22:05" type: string files: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.MissionFileItem' type: array flight: $ref: '#/definitions/wucher_internal_transport_http_dto_response.MissionFlightRef' forms: $ref: '#/definitions/wucher_internal_transport_http_dto_response.MissionForms' mission_code: example: HEMS-26-1 type: string note: example: Mission note type: string start_time: example: "04:49" type: string status: example: completed type: string subtypes: $ref: '#/definitions/wucher_internal_transport_http_dto_response.MissionSubtypeRef' type: example: HEMS type: string updated_at: example: "2026-04-20T08:00:00Z" type: string updated_by: example: 019d61db-53c6-7280-87ec-e65f205c6d3b type: string type: object wucher_internal_transport_http_dto_response.MissionDataTableResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.MissionResource' type: array meta: properties: draw: example: 1 type: integer records_filtered: example: 42 type: integer records_total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto_response.MissionFileItem: properties: attachment_id: example: 019d6771-6c8e-7a2d-a7b8-03bcb65fcb3e type: string download_url: example: https://s3.localhost.localstack.cloud:4566/wucher-file-dev/files/2026/04/05/brief.pdf?X-Amz-Signature=... type: string file_name: example: mission-brief.pdf type: string id: example: 019d6771-6c8e-7a2d-a7b8-03bcb65fcb3e type: string thumbnail_url: example: https://s3.localhost.localstack.cloud:4566/wucher-file-dev/thumbnails/2026/04/05/brief.png?X-Amz-Signature=... type: string type: object wucher_internal_transport_http_dto_response.MissionFlightRef: properties: code: example: M-062226-001 type: string date: example: "2026-04-20" type: string id: example: 019d6774-98e8-7fba-9ef4-3795c0da8a13 type: string type: object wucher_internal_transport_http_dto_response.MissionForms: properties: flight_data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FlightDataResource' type: array type: object wucher_internal_transport_http_dto_response.MissionListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.MissionResource' type: array meta: properties: page_number: example: 1 type: integer page_size: example: 20 type: integer total: example: 120 type: integer type: object type: object wucher_internal_transport_http_dto_response.MissionResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_response.MissionAttributes' id: example: 019d6774-98e8-7fba-9ef4-3795c0da8a13 type: string type: example: mission type: string type: object wucher_internal_transport_http_dto_response.MissionResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_response.MissionResource' type: object wucher_internal_transport_http_dto_response.MissionSubtypeRef: properties: id: example: 019d6774-98e8-7fba-9ef4-3795c0da8a99 type: string subtype: example: PRIM type: string subtype_name: example: Nicht transportfaehig type: string type: object wucher_internal_transport_http_dto_response.MissionTypeAttributes: properties: code: example: HEMS type: string name: example: HEMS type: string subtypes: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.MissionTypeSubtypeItem' type: array type: object wucher_internal_transport_http_dto_response.MissionTypeListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.MissionTypeResource' type: array type: object wucher_internal_transport_http_dto_response.MissionTypeResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_response.MissionTypeAttributes' id: example: 019d6774-98e8-7fba-9ef4-3795c0da8a77 type: string type: example: mission_type type: string type: object wucher_internal_transport_http_dto_response.MissionTypeSubtypeItem: properties: code: example: PRIM type: string id: example: 019d6774-98e8-7fba-9ef4-3795c0da8a99 type: string name: example: Primary type: string task_name: example: Nicht transportfaehig type: string type: object wucher_internal_transport_http_dto_response.OtherPersonAttributes: properties: email: example: guest@example.com type: string mobile_phone: example: +43-1234 type: string name: example: Guest Person type: string type: object wucher_internal_transport_http_dto_response.OtherPersonListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.OtherPersonResource' type: array meta: properties: total: example: 1 type: integer type: object type: object wucher_internal_transport_http_dto_response.OtherPersonResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_response.OtherPersonAttributes' id: example: 019d6771-5fb5-7337-837f-bc5ed85181a1 type: string type: example: other_person type: string type: object wucher_internal_transport_http_dto_response.OtherPersonResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_response.OtherPersonResource' type: object wucher_internal_transport_http_dto_response.ReserveAcListResponse: properties: data: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.ReserveAcResource' type: array meta: properties: page_number: example: 1 type: integer page_size: example: 20 type: integer total: example: 1 type: integer type: object type: object wucher_internal_transport_http_dto_response.ReserveAcResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.ReserveAcAttributes' id: example: 019d6773-ccca-71dd-b9c7-8e6f531deb90 type: string type: example: reserve_ac type: string type: object wucher_internal_transport_http_dto_response.ReserveAcResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_response.ReserveAcResource' type: object wucher_internal_transport_http_dto_response.TakeoverDutyRosterCrew: properties: email: example: doctor@example.com type: string id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string mobile_phone: example: +43-1234 type: string name: example: Hunter Wolfgang type: string role: example: doctor type: string type: object wucher_internal_transport_http_dto_response.TakeoverDutyRosterDetailsResponse: properties: doctor: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.TakeoverDutyRosterCrew' type: array helper: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.TakeoverDutyRosterCrew' type: array other_person: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.TakeoverDutyRosterCrew' type: array pilot: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.TakeoverDutyRosterPilotCrew' type: array rescuer: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.TakeoverDutyRosterCrew' type: array type: object wucher_internal_transport_http_dto_response.TakeoverDutyRosterPilotCrew: properties: co_pilot: type: boolean crew_type: example: main type: string email: example: pilot@example.com type: string examiner: type: boolean flight_instructor: type: boolean id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string line_checker: type: boolean mobile_phone: example: +43-1234 type: string name: example: Hunter Wolfgang type: string role: example: pilot type: string supervisor: type: boolean type: object wucher_internal_transport_http_dto_response.TakeoverFileAttributes: properties: download_url: example: https://s3.localhost.localstack.cloud:4566/wucher-file-dev/files/2026/04/05/takeover-report.pdf?X-Amz-Signature=... type: string file_attachment_id: example: 019d7000-aaaa-7bbb-8ccc-222222222222 type: string file_name: example: takeover-report.pdf type: string type: object wucher_internal_transport_http_dto_response.TakeoverFileResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_response.TakeoverFileAttributes' id: example: 019d7000-aaaa-7bbb-8ccc-111111111111 type: string type: example: takeover_file type: string type: object wucher_internal_transport_http_dto_response.TakeoverHelicopter: properties: designation: example: OE-XHZ type: string id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string identifier: example: "1234" type: string last_daily_inspection: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.HelicopterLastDailyInspection' maintenance_schedules: items: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.MaintenanceScheduleAttributes' type: array type: example: EC-135 type: string type: object wucher_internal_transport_http_dto_response.TakeoverResource: properties: attributes: $ref: '#/definitions/wucher_internal_transport_http_dto_response.TakeoverResponseAttributes' type: example: takeover type: string type: object wucher_internal_transport_http_dto_response.TakeoverResponse: properties: data: $ref: '#/definitions/wucher_internal_transport_http_dto_response.TakeoverResource' type: object wucher_internal_transport_http_dto_response.TakeoverResponseAttributes: properties: base: $ref: '#/definitions/wucher_internal_transport_http_dto_response.DutyRosterBaseInfo' base_id: type: string created_at: example: "2026-03-12T03:04:05Z" type: string created_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string duty_date: type: string files: items: $ref: '#/definitions/wucher_internal_transport_http_dto_response.TakeoverFileResource' type: array flight_id: type: string flight_inspection_id: type: string helicopter: $ref: '#/definitions/wucher_internal_transport_http_dto_response.TakeoverHelicopter' helicopter_id: type: string id: type: string inspection: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.ReserveAcInspectionSummary' notes: type: string reserve_ac_id: type: string roster_detail: $ref: '#/definitions/wucher_internal_transport_http_dto_response.TakeoverDutyRosterDetailsResponse' shift_end: type: string shift_start: type: string updated_at: example: "2026-03-12T03:04:05Z" type: string updated_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: object wucher_internal_transport_http_dto_response.UserRef: properties: name: example: Ganahl Stefan type: string uuid: example: 019d61db-53c6-7280-87ec-e65f205c6d3b type: string type: object wucher_internal_transport_http_dto_shared.AirRescuerChecklistBaseInfo: properties: base_abbreviation: example: G1 type: string base_category: example: hems type: string base_name: example: Gallus 1 - Zurs Lech type: string id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: object wucher_internal_transport_http_dto_shared.AirRescuerChecklistItemInput: properties: name: example: Oxygen supply check type: string position: example: 1 type: integer required: - name type: object wucher_internal_transport_http_dto_shared.FileManagerAttachmentAttributes: properties: attached_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string category: example: document type: string created_at: example: "2026-03-12T03:04:05Z" type: string file_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string is_primary: example: false type: boolean ref_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string ref_type: example: helicopter type: string sort_order: example: 0 type: integer updated_at: example: "2026-03-12T03:04:05Z" type: string type: object wucher_internal_transport_http_dto_shared.FileManagerFileAttributes: properties: created_at: example: "2026-03-12T03:04:05Z" type: string created_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string deleted_at: example: "2026-03-12T03:04:05Z" type: string deleted_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string download_url: example: https://s3.localhost.localstack.cloud:4566/wucher-file-dev/files/2026/04/05/policy.pdf?X-Amz-Signature=... type: string extension: example: pdf type: string failed_at: example: "2026-03-12T03:04:05Z" type: string failure_reason: example: "" type: string file_uuid: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string folder_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string is_template: example: true type: boolean mime_type: example: application/pdf type: string name: example: policy.pdf type: string name_normalized: example: policy.pdf type: string processed_at: example: "2026-03-12T03:04:05Z" type: string processing_started_at: example: "2026-03-12T03:04:05Z" type: string purge_at: example: "2026-04-12T03:04:05Z" type: string size_bytes: example: 1024 type: integer status: example: validated type: string trashed_at: example: "2026-03-12T03:04:05Z" type: string updated_at: example: "2026-03-12T03:04:05Z" type: string updated_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string upload_error: example: "" type: string validated_at: example: "2026-03-12T03:04:05Z" type: string type: object wucher_internal_transport_http_dto_shared.FileManagerFileAuditAttributes: properties: created_at: example: "2026-03-12T03:04:05Z" type: string created_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string updated_at: example: "2026-03-12T03:04:05Z" type: string updated_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: object wucher_internal_transport_http_dto_shared.FileManagerFileDetailAttributes: properties: audit: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.FileManagerFileAuditAttributes' download_url: example: https://s3.localhost.localstack.cloud:4566/wucher-file-dev/files/2026/04/05/policy.pdf?X-Amz-Signature=... type: string extension: example: pdf type: string is_template: example: true type: boolean location: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.FileManagerFileLocationAttributes' mime_type: example: application/pdf type: string name: example: policy.pdf type: string name_normalized: example: policy.pdf type: string preview_url: example: https://s3.localhost.localstack.cloud:4566/wucher-file-dev/files/2026/04/05/policy.preview.pdf?X-Amz-Signature=... type: string processing: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.FileManagerFileProcessingAttributes' size_bytes: example: 1024 type: integer status: example: ready type: string type: object wucher_internal_transport_http_dto_shared.FileManagerFileLocationAttributes: properties: folder_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: object wucher_internal_transport_http_dto_shared.FileManagerFileProcessingAttributes: properties: failed_at: example: "2026-03-12T03:04:05Z" type: string failure_reason: example: processing validation failed type: string processed_at: example: "2026-03-12T03:04:05Z" type: string processing_started_at: example: "2026-03-12T03:04:05Z" type: string validated_at: example: "2026-03-12T03:04:05Z" type: string type: object wucher_internal_transport_http_dto_shared.FileManagerFileUploadIntentAttributes: properties: expires_at: example: "2026-04-05T07:29:34Z" type: string expires_in_seconds: example: 900 type: integer file: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.FileUploadFile' method: example: PUT type: string object: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.FileUploadObject' required_headers: additionalProperties: type: string type: object upload_intent_uuid: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string upload_url: example: https://s3.localhost.localstack.cloud:4566/wucher-file-dev/... type: string type: object wucher_internal_transport_http_dto_shared.FileManagerFolderAttributes: properties: created_at: example: "2026-03-12T03:04:05Z" type: string created_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string deleted_at: example: "2026-03-12T03:04:05Z" type: string deleted_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string depth: example: 1 type: integer name: example: operations type: string name_normalized: example: operations type: string parent_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string path_cache: example: /root/operations type: string purge_at: example: "2026-04-12T03:04:05Z" type: string updated_at: example: "2026-03-12T03:04:05Z" type: string updated_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: object wucher_internal_transport_http_dto_shared.FileManagerFolderAuditAttributes: properties: created_at: example: "2026-03-12T03:04:05Z" type: string created_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string updated_at: example: "2026-03-12T03:04:05Z" type: string updated_by: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: object wucher_internal_transport_http_dto_shared.FileManagerFolderDetailAttributes: properties: audit: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.FileManagerFolderAuditAttributes' depth: example: 1 type: integer location: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.FileManagerFolderLocationAttributes' name: example: operations type: string name_normalized: example: operations type: string path_cache: example: /root/operations type: string type: object wucher_internal_transport_http_dto_shared.FileManagerFolderLocationAttributes: properties: parent_id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: object wucher_internal_transport_http_dto_shared.FileUploadFile: properties: mime_type: example: application/pdf type: string name: example: policy-final.pdf type: string size_bytes: example: 1024 type: integer type: object wucher_internal_transport_http_dto_shared.FileUploadObject: properties: bucket: example: wucher-file-dev type: string key: example: files/2026/04/05/018f3a5c7a6f7c2a8d4a4b5b1f6c8e9d.pdf type: string type: object wucher_internal_transport_http_dto_shared.FleetStatusComplaint: properties: action: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.FleetStatusComplaintAction' aircraft_hours_at_report: type: string description: type: string flight_id: type: string id: type: string mel: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.FleetStatusComplaintMEL' nsr: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.FleetStatusComplaintNSR' reported_at: type: string reported_by: type: string reported_by_name: type: string reported_by_short: type: string status: enum: - active_non_mel - active_mel - serviced type: string type: object wucher_internal_transport_http_dto_shared.FleetStatusComplaintAction: properties: aircraft_hours_at_fix: type: string signed_at: type: string signed_by: type: string signed_by_name: type: string signed_by_short: type: string taken: type: string type: object wucher_internal_transport_http_dto_shared.FleetStatusComplaintMEL: properties: classified_at: type: string classified_by: type: string classified_by_name: type: string classified_by_short: type: string deadline: type: string severity: enum: - 0 - 1 - 2 - 3 - 4 type: integer severity_label: type: string type: object wucher_internal_transport_http_dto_shared.FleetStatusComplaintNSR: properties: decided_at: type: string decided_by: type: string decided_by_name: type: string decided_by_short: type: string is_nsr: type: boolean reason: type: string type: object wucher_internal_transport_http_dto_shared.FleetStatusEASARelease: properties: easa_ac_hours: type: string easa_date: type: string easa_location: type: string easa_maint_manual_rev_airframe: type: string easa_maint_manual_rev_engine: type: string easa_permit_no: type: string easa_signer_id: type: string easa_wo_no: type: string id: type: string is_signed: type: boolean missing_sign_fields: items: type: string type: array signed_at: type: string signed_by: type: string signed_by_name: type: string signed_by_short: type: string type: object wucher_internal_transport_http_dto_shared.FleetStatusFileAttributes: properties: category: enum: - wb - bfi example: wb type: string file_id: example: 019d6773-ccca-71dd-b9c7-8e6f531deb90 type: string is_mandatory: description: IsMandatory — when true, this file must be checked (is_done) during takeover. example: true type: boolean required: - category - file_id type: object wucher_internal_transport_http_dto_shared.FleetStatusHelicopter: properties: designation: example: AIRBUS H145 type: string flight_id: description: |- FlightID — id of the aircraft's current active flight (present only when it is in use / booked). The fleet page uses it to create an EASA release scoped to the flight. example: 019d6774-98e8-7fba-9ef4-3795c0da8a13 type: string id: example: 019d6771-5fb5-7337-837f-bc5ed85181a1 type: string identifier: example: D-HEMS type: string status: enum: - available - booked - aog - mcf example: available type: string status_reasons: items: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.FleetStatusHelicopterReason' type: array type: example: EC-135 type: string type: object wucher_internal_transport_http_dto_shared.FleetStatusHelicopterReason: properties: code: enum: - manual_aog - mel_expired - non_mel_pending - inspection_overdue type: string complaint_id: type: string detail: type: string schedule_id: type: string since: type: string type: object wucher_internal_transport_http_dto_shared.FleetStatusMCF: properties: active: description: |- Active — true when the helicopter is currently in MCF (an open draft, or a signed but failed MCF still needing a re-flight); false when cleared/cancelled/none. type: boolean af_hours: description: AFHours / LandingCount present only once the MCF is signed; omitted for none/draft/cancelled. type: string date: type: string id: type: string landing_count: type: integer sign: description: Sign — true once the MCF is completed/signed; false while it is still a draft. type: boolean signed_by: description: SignedBy / SignedByName / SignedByShort — who signed (completed) the MCF; empty while unsigned. type: string signed_by_name: type: string signed_by_short: type: string type: object wucher_internal_transport_http_dto_shared.FleetStatusSummary: properties: airframe: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.FleetStatusSummaryAirframe' engine_1: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.FleetStatusSummaryEngine' engine_2: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.FleetStatusSummaryEngine' flight_reports: type: number hook_releases: type: number landings: type: number rotor_brake_cycles: type: number type: object wucher_internal_transport_http_dto_shared.FleetStatusSummaryAirframe: properties: cycles: type: number hours: type: number type: object wucher_internal_transport_http_dto_shared.FleetStatusSummaryEngine: properties: ccc: type: number gpc_ng_n1: type: number hours: type: number ptc_nf_n2: type: number type: object wucher_internal_transport_http_dto_shared.HelicopterAuditUser: properties: id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string name: example: John Doe type: string type: object wucher_internal_transport_http_dto_shared.HelicopterFileAttributes: properties: attachment_pending: example: true type: boolean created_at: example: "2026-04-14T08:00:00Z" type: string created_by: example: 019d61db-53c6-7280-87ec-e65f205c6d3b type: string download_url: example: https://s3.localhost.localstack.cloud:4566/wucher-file-dev/files/2026/04/05/policy.pdf?X-Amz-Signature=... type: string file_attachment_id: example: 019d6771-6c8e-7a2d-a7b8-03bcb65fcb3e type: string file_name: example: Before Flight Checklist.pdf type: string helicopter_id: example: 019d6771-5fb5-7337-837f-bc5ed85181a1 type: string helicopter_name: example: AIRBUS H145 type: string is_mandatory: example: true type: boolean is_template: example: true type: boolean position: example: 1 type: integer section: example: bfi type: string updated_at: example: "2026-04-14T08:00:00Z" type: string updated_by: example: 019d61db-53c6-7280-87ec-e65f205c6d3b type: string type: object wucher_internal_transport_http_dto_shared.HelicopterFoto: properties: download_url: example: https://storage.example.com/helicopter/foto.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900&X-Amz-Signature=abc123 type: string original_size_bytes: example: 1024000 type: integer thumbnail_download_url: example: https://storage.example.com/helicopter/foto.thumb.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900&X-Amz-Signature=abc123 type: string uuid: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: object wucher_internal_transport_http_dto_shared.HelicopterInspectionFilesChecklist: properties: completed: example: 47 type: integer total: example: 47 type: integer type: object wucher_internal_transport_http_dto_shared.HelicopterLastDailyBase: properties: base_abbreviation: example: G1 type: string base_name: example: Gallus 1 - Zurs Lech type: string id: example: 018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d type: string type: example: hems type: string type: object wucher_internal_transport_http_dto_shared.HelicopterLastDailyInspection: properties: base: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.HelicopterLastDailyBase' inspected_at: example: "2026-05-25T07:47:00Z" type: string inspection_files_checklist: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.HelicopterInspectionFilesChecklist' inspection_id: example: 019d6772-471c-7b70-b42a-d94020ef61e4 type: string inspector: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.HelicopterLastDailyInspector' status: example: inspected_cleared type: string utc_time: example: "07:47" type: string type: object wucher_internal_transport_http_dto_shared.HelicopterLastDailyInspector: properties: id: example: 019d61db-53c6-7280-87ec-e65f205c6d3b type: string license_no: example: "4521" type: string name: example: Teodora Lesmana type: string type: object wucher_internal_transport_http_dto_shared.MaintenanceScheduleAttributes: properties: due: example: "1200" type: string ext: example: "1300" type: string inspection_type: example: A/F type: string type: example: 100H type: string type: object wucher_internal_transport_http_dto_shared.ReserveAcAircraftSummary: properties: aog: example: false type: boolean designation: example: AIRBUS H145 type: string id: example: 019d6771-5fb5-7337-837f-bc5ed85181a1 type: string identifier: example: D-HYAR type: string is_active: example: true type: boolean type: example: H145 type: string type: object wucher_internal_transport_http_dto_shared.ReserveAcAttributes: properties: created_at: example: "2026-04-14T08:00:00Z" type: string created_by: example: 019d61db-53c6-7280-87ec-e65f205c6d3b type: string deleted_at: example: "2026-04-14T08:00:00Z" type: string deleted_by: example: 019d61db-53c6-7280-87ec-e65f205c6d3b type: string flight_id: example: 019d6773-ccca-71dd-b9c7-8e6f531deb90 type: string helicopter: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.ReserveAcAircraftSummary' helicopter_id: example: 019d6771-5fb5-7337-837f-bc5ed85181a1 type: string inspection: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.ReserveAcInspectionSummary' last_daily_inspection: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.ReserveAcLastDailyInfo' status: example: pending type: string updated_at: example: "2026-04-14T08:00:00Z" type: string updated_by: example: 019d61db-53c6-7280-87ec-e65f205c6d3b type: string type: object wucher_internal_transport_http_dto_shared.ReserveAcBeforeInspectionFields: properties: fuel_added_amount: type: number fuel_amount: type: number fuel_unit: type: string hydraulic_lh_checked: type: boolean hydraulic_rh_checked: type: boolean note: type: string oil_engine_nr1_checked: type: boolean oil_engine_nr2_checked: type: boolean oil_transmission_igb_checked: type: boolean oil_transmission_mgb_checked: type: boolean oil_transmission_tgb_checked: type: boolean type: object wucher_internal_transport_http_dto_shared.ReserveAcBeforeSectionDTO: properties: completed: example: 1 type: integer done_file_checklist: items: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.ReserveAcFileChecklistItemDTO' type: array fields: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.ReserveAcBeforeInspectionFields' file_checklist: items: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.ReserveAcFileChecklistItemDTO' type: array total: example: 3 type: integer type: object wucher_internal_transport_http_dto_shared.ReserveAcFileChecklistItemDTO: properties: download_url: example: https://s3.localhost.localstack.cloud:4566/wucher-file-dev/files/2026/04/05/policy.pdf?X-Amz-Signature=... type: string file_attachment_id: example: 019d7000-aaaa-7bbb-8ccc-222222222222 type: string file_name: example: Before Flight Checklist.pdf type: string helicopter_file_id: example: 019d7000-aaaa-7bbb-8ccc-111111111111 type: string is_done: example: false type: boolean is_mandatory: example: true type: boolean type: object wucher_internal_transport_http_dto_shared.ReserveAcFleetStatusFileSectionDTO: properties: completed: example: 1 type: integer done_file_checklist: items: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.ReserveAcFileChecklistItemDTO' type: array file_checklist: items: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.ReserveAcFileChecklistItemDTO' type: array total: example: 2 type: integer type: object wucher_internal_transport_http_dto_shared.ReserveAcInspectionSummary: properties: before: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.ReserveAcBeforeSectionDTO' fleet_status_file: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.ReserveAcFleetStatusFileSectionDTO' id: example: 019d6772-471c-7b70-b42a-d94020ef61e4 type: string inspection_date: example: "2026-04-15" type: string prepare: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.ReserveAcPrepareSectionDTO' type: object wucher_internal_transport_http_dto_shared.ReserveAcLastDailyInfo: properties: date: example: 17.04.2026 type: string name: example: Ganahl Stefan type: string short_name: example: GAN type: string utc_time: example: "10:57" type: string type: object wucher_internal_transport_http_dto_shared.ReserveAcPrepareFields: properties: notam_briefing: type: boolean operational_flight_plan: type: boolean weather_briefing: type: boolean type: object wucher_internal_transport_http_dto_shared.ReserveAcPrepareSectionDTO: properties: completed: example: 1 type: integer done_file_checklist: items: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.ReserveAcFileChecklistItemDTO' type: array file_checklist: items: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.ReserveAcFileChecklistItemDTO' type: array prepare_fields: $ref: '#/definitions/wucher_internal_transport_http_dto_shared.ReserveAcPrepareFields' total: example: 3 type: integer type: object wucher_internal_transport_http_jsonapi.Document: properties: data: {} meta: {} type: object wucher_internal_transport_http_jsonapi.ErrorDocument: properties: errors: items: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorObject' type: array type: object wucher_internal_transport_http_jsonapi.ErrorObject: properties: code: type: string detail: type: string error_code: type: string source: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorSource' status: type: string title: type: string type: object wucher_internal_transport_http_jsonapi.ErrorSource: properties: pointer: type: string type: object wucher_internal_transport_http_jsonapi.Resource: properties: attributes: additionalProperties: {} type: object id: type: string type: type: string type: object info: contact: {} description: |- Wucher backend API (JSON:API). Auth Flow (Email/Password): 1) POST /api/v1/auth/register 2) Check email, open verify link (GET /api/v1/auth/verify-email) 3) POST /api/v1/auth/login - If TOTP enabled: response 202 with challenge_token 4) POST /api/v1/auth/totp/verify (challenge_token + code) -> cookies Auth Flow (TOTP setup): 1) POST /api/v1/auth/totp/setup -> secret + otpauth_url (enabled=false) 2) POST /api/v1/auth/totp/confirm -> enabled=true Auth Flow (Microsoft Entra SSO): 1) GET /api/v1/auth/microsoft/login -> redirect to Microsoft 2) Microsoft redirects to /api/v1/auth/microsoft/callback 3) Backend checks existing SSO mapping (no auto-register) 4) If linked user exists -> set cookies + optional redirect to AUTH_SSO_SUCCESS_REDIRECT 5) If mapping not linked -> login rejected (401) 6) Existing authenticated user can link/unlink via /api/v1/auth/sso/link and /api/v1/auth/sso/unlink title: Wucher API version: "1.0" paths: /api/v1/action-signoffs/get-by-flight/{flight_id}: get: description: Returns the fleet-level (complaint-independent) corrective-action sign-off state for a helicopter — `signed`, `signed_at`, `signed_by`. When none exists yet it returns an unsigned placeholder. A signed sign-off is what gates the EASA maintenance release. parameters: - description: Flight ID (UUIDv7) in: path name: flight_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.ActionSignoffResponse' summary: Get the current corrective-action sign-off for a helicopter tags: - Complaints - Sign Off /api/v1/action-signoffs/sign/{helicopter_id}: post: consumes: - application/json description: 'Toggles the corrective-action sign-off for a helicopter. `sign` (optional, default true) chooses the direction: true signs, false unsigns. Send `complaint_id` to target a specific complaint''s sign-off — signing it requires `action_taken` recorded (else 422 `ACTION_SIGNOFF_ACTION_REQUIRED`), and 404 `ACTION_SIGNOFF_COMPLAINT_NOT_FOUND` if the complaint does not exist. Omit `complaint_id` for a fleet-wide (complaint-independent) sign-off. A signed sign-off is what allows an EASA maintenance release to be created for the helicopter.' parameters: - description: Helicopter ID (UUIDv7) in: path name: helicopter_id required: true type: string - description: Optional complaint_id + note in: body name: request schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.ActionSignoffSignRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.ActionSignoffResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Toggle the corrective-action sign-off (per complaint or fleet-wide) tags: - Complaints - Sign Off /api/v1/after-flight-inspection/create: post: consumes: - application/json description: Create after-flight inspection and AFI file checklist for a flight inspection. parameters: - description: Create last flights inspection request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.LastFlightsInspectionCreateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.AfterFlightInspectionResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Create last flights inspection tags: - Flights - After Flights Inspection /api/v1/after-flight-inspection/delete: delete: consumes: - application/json description: Delete after-flight inspection and AFI checklist rows by `flight_inspection_id`. parameters: - description: Delete last flights inspection request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.LastFlightsInspectionDeleteRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.Document' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Delete last flights inspection tags: - Flights - After Flights Inspection /api/v1/after-flight-inspection/get: get: description: Get after-flight inspection detail and AFI file checklist by query `inspection_id`. parameters: - description: Flight Inspection UUID in: query name: inspection_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.AfterFlightInspectionResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Get last flights inspection tags: - Flights - After Flights Inspection /api/v1/after-flight-inspection/update: patch: consumes: - application/json description: Update after-flight inspection and AFI file checklist for a flight inspection. parameters: - description: Update last flights inspection request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.LastFlightsInspectionUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.AfterFlightInspectionResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Update last flights inspection tags: - Flights - After Flights Inspection /api/v1/air-rescuer-checklist/{uuid}/items/create: post: consumes: - application/json description: |- Create one or more items for an existing checklist. Parent checklist is taken from path `uuid`. Duplicate `position` is allowed. Display order for checklist_items is `position ASC, name ASC`. Request is transactional: if one item fails, all item inserts in the batch are rolled back. parameters: - description: Checklist UUID in: path name: uuid required: true type: string - description: Bulk checklist item create payload in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.AirRescuerChecklistItemCreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.AirRescuerChecklistItemBulkResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "409": description: Conflict schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Create checklist items (bulk) tags: - Air Rescuer Checklist /api/v1/air-rescuer-checklist/{uuid}/items/reorder: patch: consumes: - application/json description: |- Reorder one or more checklist items for the checklist in path `uuid`. Use this endpoint to swap or reorder positions with a single PIN validation. Duplicate `position` values remain allowed by domain rules. Request is transactional: if one item fails, all position updates are rolled back. parameters: - description: Checklist UUID in: path name: uuid required: true type: string - description: Checklist item reorder payload in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.AirRescuerChecklistItemReorderRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.AirRescuerChecklistResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "409": description: Conflict schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Reorder checklist items in one request tags: - Air Rescuer Checklist /api/v1/air-rescuer-checklist/create: post: consumes: - application/json description: |- Create one or more checklist headers for a single base. Request uses `base_id`. Each checklist can be created with or without initial `items`. `scope_code` accepts persisted codes and English aliases. Stored codes remain: `TA`, `MO`, `DI`, `MI`, `DO`, `FR`, `SA`, `SO`, `M10`, `M15`, `M20`, `M25`, `DS`. Example aliases: `DAILY` -> `TA`, `TU/TUE/TUESDAY` -> `DI`, `WE/WED/WEDNESDAY` -> `MI`, `TH/THU/THURSDAY` -> `DO`, `SU/SUN/SUNDAY` -> `SO`, `DEADLINE` -> `DS`. `CAT` is a virtual overview tab and is not allowed for create/update payloads. Duplicate `position` is allowed for both checklist headers and checklist items. Display order is stable: checklist headers `position ASC, title ASC`; checklist_items `position ASC, name ASC`. Request is transactional: if one checklist/item fails, the whole batch is rolled back. parameters: - description: Bulk checklist create payload in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.AirRescuerChecklistCreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.AirRescuerChecklistBulkResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "409": description: Conflict schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Create air rescuer checklist (bulk) tags: - Air Rescuer Checklist /api/v1/air-rescuer-checklist/delete/{uuid}: delete: description: |- Delete one checklist header by UUID. Related checklist items are removed together following current implementation behavior. parameters: - description: Checklist UUID in: path name: uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.AirRescuerChecklistGroupedListResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Delete air rescuer checklist tags: - Air Rescuer Checklist /api/v1/air-rescuer-checklist/get-all: get: description: |- Grouped by base and returned in `data[].attributes.bases`. Response includes `tabs[]` with default tab order: `CAT`, `TA`, `MO`, `DI`, `MI`, `DO`, `FR`, `SA`, `SO`, `M10`, `M15`, `M20`, `M25`, `DS`. `CAT` is a virtual overview tab (not persisted in DB). `CAT.groups[]` only includes non-empty persisted scopes and does not include `checklist_items`. Normal tabs are always present. Empty normal tabs are explicitly returned as `checklists: []`. Scope display names: `CAT=Category`, `TA=Daily`, `MO=Monday`, `DI=Tuesday`, `MI=Wednesday`, `DO=Thursday`, `FR=Friday`, `SA=Saturday`, `SO=Sunday`, `M10=M10`, `M15=M15`, `M20=M20`, `M25=M25`, `DS=Deadline`. Duplicate `position` is allowed. Display order is stable: checklist headers `position ASC, title ASC`; checklist_items `position ASC, name ASC`. Optional filters: `base_id`, `category_type` (`regular|hems`), `base_name`, `base_abbreviation`, `scope_code` (`CAT`/`OVERVIEW` or persisted scope / aliases). parameters: - description: Filter by base UUID in: query name: base_id type: string - description: Filter by base category enum: - regular - hems in: query name: category_type type: string - description: Filter by base name (contains, case-insensitive) in: query name: base_name type: string - description: Filter by base abbreviation (contains, case-insensitive) in: query name: base_abbreviation type: string - description: 'Filter by scope code. Allowed canonical: CAT, TA, MO, DI, MI, DO, FR, SA, SO, M10, M15, M20, M25, DS. English aliases are also accepted.' in: query name: scope_code type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.AirRescuerChecklistGroupedDataTableResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: List air rescuer checklist grouped by base tags: - Air Rescuer Checklist /api/v1/air-rescuer-checklist/get-all/dt: get: description: |- Datatable variant for grouped air rescuer checklist data. Semantic data is the same as `get-all`: grouped by base with `tabs[]`, virtual `CAT`, and normal tabs always present. `CAT.groups[]` only includes non-empty persisted scopes and does not include `checklist_items`. Empty normal tabs are explicitly returned as `checklists: []`. Scope display names: `CAT=Category`, `TA=Daily`, `MO=Monday`, `DI=Tuesday`, `MI=Wednesday`, `DO=Thursday`, `FR=Friday`, `SA=Saturday`, `SO=Sunday`, `M10=M10`, `M15=M15`, `M20=M20`, `M25=M25`, `DS=Deadline`. Duplicate `position` is allowed. Display order is stable: checklist headers `position ASC, title ASC`; checklist_items `position ASC, name ASC`. Optional filters: `base_id`, `category_type` (`regular|hems`), `base_name`, `base_abbreviation`, `scope_code`. Pagination/query controls: `page`, `size`, `limit`, `draw`. parameters: - description: Filter by base UUID in: query name: base_id type: string - description: Filter by base category enum: - regular - hems in: query name: category_type type: string - description: Filter by base name (contains, case-insensitive) in: query name: base_name type: string - description: Filter by base abbreviation (contains, case-insensitive) in: query name: base_abbreviation type: string - description: 'Filter by scope code. Allowed canonical: CAT, TA, MO, DI, MI, DO, FR, SA, SO, M10, M15, M20, M25, DS. English aliases are also accepted.' in: query name: scope_code type: string - description: Page number (default 1) in: query name: page type: integer - description: Page size (default 20) in: query name: size type: integer - description: Page size override (max 100) in: query name: limit type: integer - description: Datatable draw counter in: query name: draw type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.AirRescuerChecklistGroupedDataTableResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: List air rescuer checklist grouped by base (datatable) tags: - Air Rescuer Checklist /api/v1/air-rescuer-checklist/get/{uuid}: get: description: |- Return one checklist detail by UUID. Includes checklist header, base info, and `items` (`checklist_items`). parameters: - description: Checklist UUID in: path name: uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.AirRescuerChecklistResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Get air rescuer checklist by UUID tags: - Air Rescuer Checklist /api/v1/air-rescuer-checklist/items/delete/{item_uuid}: delete: description: Delete one existing checklist item by `item_uuid`. parameters: - description: Checklist item UUID in: path name: item_uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.Document' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "409": description: Conflict schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Delete one checklist item tags: - Air Rescuer Checklist /api/v1/air-rescuer-checklist/items/update/{item_uuid}: patch: consumes: - application/json description: |- Update one existing checklist item by `item_uuid`. This endpoint only affects the selected item. Duplicate `position` is allowed. parameters: - description: Checklist item UUID in: path name: item_uuid required: true type: string - description: Checklist item update payload in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.AirRescuerChecklistItemUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.AirRescuerChecklistItemResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "409": description: Conflict schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Update one checklist item tags: - Air Rescuer Checklist /api/v1/air-rescuer-checklist/update/{uuid}: patch: consumes: - application/json description: |- Update checklist header fields (`scope_code`, `title`, `position`) and/or append `new_items`. `new_items` is append-only. Existing items are not updated/deleted by this endpoint. Item update/delete lifecycle must use dedicated item endpoints. `scope_code` accepts persisted codes and English aliases, but `CAT` (or `OVERVIEW`) is not allowed for update payload. Duplicate `position` is allowed. Request is transactional. parameters: - description: Checklist UUID in: path name: uuid required: true type: string - description: Checklist update payload in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.AirRescuerChecklistUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.AirRescuerChecklistResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "409": description: Conflict schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Update air rescuer checklist header and append new items tags: - Air Rescuer Checklist /api/v1/audit-logs/get-all: get: description: JSON:API list with pagination, filtering and sorting. parameters: - description: Search by request_id/layer/action/method/path/message (contains) in: query name: filter[search] type: string - description: Method filter; single/comma-separated values or ALL/* enum: - POST - PUT - PATCH - DELETE - UPDATE - ALL - '*' in: query name: filter[method] type: string - description: Alias for filter[method] enum: - POST - PUT - PATCH - DELETE - UPDATE - ALL - '*' in: query name: method type: string - description: Module filter; single/comma-separated values or ALL/* enum: - air_rescuer_checklist - audit_log - auth - base - base_regular - base_hems - base_roster - branding - contact - duty_roster - facility - federal_state - file_manager - flight - flight_data - forces_present - health_insurance_company - helicopter - helicopter_file - hems_roster - hospital - icao - insurance_patient_data - land - master_setting - medicine - mission - opc - patient_data - reserve_ac - role - user - vocation - unknown - ALL - '*' in: query name: filter[module] type: string - description: Alias for filter[module] enum: - air_rescuer_checklist - audit_log - auth - base - base_regular - base_hems - base_roster - branding - contact - duty_roster - facility - federal_state - file_manager - flight - flight_data - forces_present - health_insurance_company - helicopter - helicopter_file - hems_roster - hospital - icao - insurance_patient_data - land - master_setting - medicine - mission - opc - patient_data - reserve_ac - role - user - vocation - unknown - ALL - '*' in: query name: module type: string - description: Action filter; single/comma-separated values or ALL/* enum: - list - get - create - update - delete - export - custom - ALL - '*' in: query name: filter[action] type: string - description: Alias for filter[action] enum: - list - get - create - update - delete - export - custom - ALL - '*' in: query name: action type: string - description: Page number (default 1) in: query name: page[number] type: integer - description: Page size (default 20, max 200) in: query name: page[size] type: integer - description: Sort order enum: - created_at - -created_at - module - -module - action - -action - layer - -layer - status_code - -status_code - success - -success in: query name: sort type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.Document' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: List audit logs tags: - Audit Logs /api/v1/auth/email-otp/send: post: consumes: - application/json description: |- Sends a one-time 6-digit OTP to user email using login challenge token from /auth/login. Security controls: old OTP is invalidated, resend cooldown is enforced, and resend/hour quota is enforced. parameters: - description: JSON:API Email OTP send request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.EmailOTPSendRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.EmailOTPSendResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "429": description: Too Many Requests schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Send login OTP to email tags: - Auth - Email OTP /api/v1/auth/email-otp/verify: post: consumes: - application/json description: |- Verifies one-time OTP and completes login by issuing auth cookies. OTP is one-time use, expires automatically, and failed attempts are limited and audited. parameters: - description: JSON:API Email OTP verify request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.EmailOTPVerifyRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.EmailOTPVerifyResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Verify login OTP from email tags: - Auth - Email OTP /api/v1/auth/exchange: post: consumes: - application/json description: Accepts Microsoft token payload from frontend ssoSilent and issues backend auth cookies. parameters: - description: JSON:API Exchange request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ExchangeRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.TokenResponse' "401": description: Unauthorized schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Exchange frontend Microsoft SSO token into backend session tags: - Auth /api/v1/auth/forgot-password: post: consumes: - application/json description: Always returns a generic success response. parameters: - description: JSON:API Forgot password request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ForgotPasswordRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.AuthSessionsResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Forgot password tags: - Auth - Forgot Password /api/v1/auth/invite: post: consumes: - application/json description: Creates user without password and sends set-password link to email. parameters: - description: JSON:API Invite request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.InviteRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto.UserResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Invite user tags: - Auth /api/v1/auth/invite/resend-set-password: post: consumes: - application/json description: Triggers a new set-password invite email for an invited user by user_id. Response is generic for security. parameters: - description: JSON:API resend set-password invite request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ResendSetPasswordInviteRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.AuthSessionsResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Resend set-password invite tags: - Auth /api/v1/auth/login: post: consumes: - application/json description: |- If TOTP enabled, returns 202 + challenge_token (use /auth/totp/verify). If TOTP is not enabled, returns 202 + email OTP challenge_token (use /auth/email-otp/send then /auth/email-otp/verify). parameters: - description: JSON:API Login request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.LoginRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.AuthCurrentUserResponse' "202": description: Accepted schema: $ref: '#/definitions/wucher_internal_transport_http_dto.LoginEmailOTPRequiredResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Login with email & password tags: - Auth /api/v1/auth/logout: post: produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.VerifyEmailResponse' summary: Logout (revoke refresh) tags: - Auth - Refresh /api/v1/auth/me: get: produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.AuthCurrentUserResponse' "401": description: Unauthorized schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Get current user tags: - Auth /api/v1/auth/me/timezone: patch: consumes: - application/json parameters: - description: JSON:API timezone update request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.TimezoneUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.AuthCurrentUserResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Update current user timezone tags: - Auth /api/v1/auth/microsoft/callback: get: description: Completes Microsoft SSO login. Login succeeds only when SSO identity is already linked to an existing user. parameters: - description: Authorization code in: query name: code required: true type: string - description: State in: query name: state required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.MicrosoftCallbackResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Microsoft Entra SSO callback tags: - Auth /api/v1/auth/microsoft/front-channel-logout: get: description: OIDC front-channel logout endpoint. Configure this URL as the "Front-channel logout URL" in Microsoft Entra. Microsoft loads it in a hidden iframe when the user signs out at the IdP (or from another RP). It clears local auth cookies and revokes the server-side session plus the stored Microsoft refresh token for the browser that owns the request. It never redirects and always returns 200 so the IdP logout flow can complete. produces: - text/html responses: "200": description: logged out schema: type: string summary: Microsoft front-channel logout callback tags: - Auth - SSO /api/v1/auth/microsoft/link: get: description: Returns JSON:API payload containing Microsoft authorization URL for linking SSO to the current authenticated user. produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.MicrosoftLoginResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' security: - BearerAuth: [] summary: Microsoft Entra SSO link URL tags: - Auth /api/v1/auth/microsoft/login: get: description: |- Returns JSON:API payload containing Microsoft authorization URL. Backend starts with silent session-check (`prompt=none`). If Microsoft session is inactive, callback automatically falls back to interactive login. produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.MicrosoftLoginResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Microsoft Entra SSO login tags: - Auth /api/v1/auth/microsoft/login-check: get: description: Returns JSON:API payload containing Microsoft authorization URL with prompt=none for strict session check. produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.MicrosoftLoginResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Microsoft Entra silent session check URL tags: - Auth /api/v1/auth/microsoft/logout: post: produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.VerifyEmailResponse' "401": description: Unauthorized schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Logout Microsoft OAuth session tags: - Auth - SSO /api/v1/auth/microsoft/reauth: get: description: Starts a Microsoft reauthentication flow for supported sensitive actions. parameters: - description: 'Supported values: pin_reset_request, pin_reset_confirm' in: query name: purpose required: true type: string - description: Required when purpose=pin_reset_confirm in: query name: token type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.MicrosoftLoginResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Microsoft Entra SSO reauth URL tags: - Auth /api/v1/auth/microsoft/refresh: post: produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.TokenResponse' "401": description: Unauthorized schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "428": description: Precondition Required schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Refresh Microsoft access token tags: - Auth - SSO /api/v1/auth/pin/change: post: consumes: - application/json parameters: - description: JSON:API security PIN change request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.SecurityPINChangeRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.AuthSessionsResponse' "401": description: Unauthorized schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "429": description: Too Many Requests schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Change security PIN tags: - Auth - PIN /api/v1/auth/pin/forgot: post: consumes: - application/json description: Always returns a generic success response. parameters: - description: JSON:API forgot security PIN request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ForgotSecurityPINRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.AuthSessionDeleteResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Forgot security PIN tags: - Auth - PIN /api/v1/auth/pin/request-reset: post: consumes: - application/json description: Verifies current account password, then sends PIN reset email to currently logged-in user when PIN is blocked. parameters: - description: JSON:API request security PIN reset payload in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.RequestSecurityPINRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.RequestSecurityPINResetResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "409": description: Conflict schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "429": description: Too Many Requests schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Request security PIN reset email for blocked PIN tags: - Auth - PIN /api/v1/auth/pin/reset: post: consumes: - application/json description: Resets security PIN using a re-auth method. For method=password, send the single-use reset token from the email link plus password. For method=microsoft, send only reauth_token from Microsoft re-auth. parameters: - description: JSON:API reset security PIN request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ResetSecurityPINRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.AuthSessionsResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Reset security PIN tags: - Auth - PIN /api/v1/auth/pin/setup: post: consumes: - application/json description: Creates a 6-digit security PIN for sensitive actions. parameters: - description: JSON:API security PIN setup request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.SecurityPINSetupRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.SecurityPINSetupResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "409": description: Conflict schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Setup security PIN tags: - Auth - PIN /api/v1/auth/pin/verify: post: consumes: - application/json description: Verifies PIN and returns a short-lived one-time action token. parameters: - description: JSON:API security PIN verify request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.SecurityPINVerifyRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.SecurityPINVerifyResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "409": description: Conflict schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "429": description: Too Many Requests schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Verify security PIN for sensitive action tags: - Auth - PIN /api/v1/auth/refresh: post: produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.TokenResponse' "401": description: Unauthorized schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Refresh access token tags: - Auth - Refresh /api/v1/auth/register: post: consumes: - application/json description: |- Creates user (public role: from AUTH_DEFAULT_ROLE, fallback: user) and sends verification link to email without issuing an auth session. Next: open verify link -> then login. parameters: - description: JSON:API Register request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.RegisterRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto.UserResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Register user with email & password tags: - Auth /api/v1/auth/reset-password: post: consumes: - application/json description: Resets password using a single-use reset token. parameters: - description: JSON:API Reset password request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ResetPasswordRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.AuthSessionDeleteResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Reset password tags: - Auth - Forgot Password /api/v1/auth/sessions: get: description: Lists all active sessions/devices for current user. produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.AuthSessionsResponse' "401": description: Unauthorized schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: List active sessions tags: - Auth - Refresh /api/v1/auth/sessions/{session_id}: delete: description: Revokes one session/device immediately. Requires PIN action token (header X-PIN-Verification-Token) with action=3d7d1d5f-ec48-4eca-a7ea-37f4f7927d06. parameters: - description: Session ID in: path name: session_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.AuthSessionDeleteResponse' "401": description: Unauthorized schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Delete one session tags: - Auth - Refresh /api/v1/auth/set-password: post: consumes: - application/json description: Sets first password for invited user and marks email as verified. parameters: - description: JSON:API Set password request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.SetPasswordRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.WebAuthnResetSetupResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Set password from invite token tags: - Auth /api/v1/auth/sso/link: post: consumes: - application/json description: Link Microsoft SSO identity to the authenticated user. SSO login will only work after successful link. parameters: - description: JSON:API SSO link request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.SSOLinkRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.SSOLinkResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "409": description: Conflict schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' security: - BearerAuth: [] summary: Link Microsoft SSO to current user tags: - Auth /api/v1/auth/sso/unlink: delete: consumes: - application/json description: Remove Microsoft SSO mapping from authenticated user. parameters: - description: JSON:API SSO unlink request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.SSOUnlinkRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.SSOUnlinkResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' security: - BearerAuth: [] summary: Unlink Microsoft SSO from current user tags: - Auth /api/v1/auth/totp/confirm: post: consumes: - application/json description: Validates initial TOTP code and enables TOTP for future logins. parameters: - description: JSON:API TOTP confirm request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.TOTPConfirmRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.VerifyEmailResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Confirm TOTP setup tags: - Auth - TOTP /api/v1/auth/totp/disable: post: consumes: - application/json parameters: - description: JSON:API TOTP disable request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.TOTPDisableRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.VerifyEmailResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Disable TOTP tags: - Auth - TOTP /api/v1/auth/totp/reset-setup: post: consumes: - application/json description: |- Removes TOTP setup so the user can re-setup authenticator. For method=pin, obtain token from /auth/pin/verify with action=0b5409b5-94f3-4aab-9de2-44b0ad5858f1 and send it in X-PIN-Verification-Token header. parameters: - description: JSON:API TOTP reset setup request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.TOTPResetSetupRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.VerifyEmailResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "409": description: Conflict schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "429": description: Too Many Requests schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Reset TOTP setup tags: - Auth - TOTP /api/v1/auth/totp/setup: post: consumes: - application/json description: Generates secret and otpauth URL. TOTP is NOT enabled until confirmed. parameters: - description: JSON:API TOTP setup request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.TOTPSetupRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.TOTPSetupResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Setup TOTP tags: - Auth - TOTP /api/v1/auth/totp/verify: post: consumes: - application/json description: Completes login when TOTP is enabled and returns auth cookies. parameters: - description: JSON:API TOTP verify request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.TOTPVerifyRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.TokenResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Verify TOTP code tags: - Auth - TOTP /api/v1/auth/verify-email: get: description: Confirms email verification after register. parameters: - description: Verification token in: query name: token required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.AuthSessionDeleteResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Verify email tags: - Auth /api/v1/auth/webauthn/login/begin: post: consumes: - application/json description: Creates WebAuthn assertion options for a user email. parameters: - description: JSON:API WebAuthn login begin request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.WebAuthnLoginBeginRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.WebAuthnBeginResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "409": description: Conflict schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Begin WebAuthn login tags: - Auth - WebAuthn /api/v1/auth/webauthn/login/finish: post: consumes: - application/json description: Verifies WebAuthn assertion and issues auth cookies. parameters: - description: JSON:API WebAuthn login finish request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.WebAuthnLoginFinishRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.TokenResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "409": description: Conflict schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Finish WebAuthn login tags: - Auth - WebAuthn /api/v1/auth/webauthn/register/begin: post: consumes: - application/json description: Creates WebAuthn registration options for the authenticated user. parameters: - description: JSON:API WebAuthn register begin request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.WebAuthnRegisterBeginRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.WebAuthnBeginResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "409": description: Conflict schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Begin WebAuthn registration tags: - Auth - WebAuthn /api/v1/auth/webauthn/register/finish: post: consumes: - application/json description: Verifies WebAuthn registration response and stores the credential. parameters: - description: JSON:API WebAuthn register finish request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.WebAuthnRegisterFinishRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.AuthSessionsResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "409": description: Conflict schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Finish WebAuthn registration tags: - Auth - WebAuthn /api/v1/auth/webauthn/reset-setup: post: consumes: - application/json description: |- Removes all registered WebAuthn credentials so the user can re-setup passkeys. For method=pin, obtain token from /auth/pin/verify with action=1f7d457e-0a19-4a36-8d9f-2c66fd2369ab and send it in X-PIN-Verification-Token header. parameters: - description: JSON:API WebAuthn reset setup request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.WebAuthnResetSetupRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.AuthSessionDeleteResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "409": description: Conflict schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "429": description: Too Many Requests schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Reset WebAuthn setup tags: - Auth - WebAuthn /api/v1/bases/create: post: consumes: - application/json description: |- Example request: {"data":{"type":"base","attributes":{"base":"Lude Testing 2","base_abbreviation":"LOIG","base_category":"regular","address":"Lude Airfield","latitude":47.3769,"longitude":8.5417,"sortkey":1,"sms_alert":false,"checklist":false,"leg_time":"00:20","default_start_time_type":"FIXED","default_end_time_type":"FIXED","default_shift_start":"06:00","default_shift_end":"21:00","utc":"0","notes":"Main base","operational_shift_times":[{"date_start":"2026-06-15","date_end":"2026-06-15","start_time_type":"BMCT","end_time_type":"ECET"}]}}} parameters: - description: JSON:API base create request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.BaseCreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto.BaseResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Create base tags: - Bases /api/v1/bases/delete/{uuid}: delete: parameters: - description: Base UUID (UUIDv7) in: path name: uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.BaseDeleteResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Delete base tags: - Bases /api/v1/bases/get-all: get: description: JSON:API list with filtering and sorting. This endpoint returns all bases. parameters: - description: Base category enum: - regular - hems in: query name: category_type type: string - description: Alias filter for base category enum: - regular - hems in: query name: base_category type: string - description: Search by base/base_abbreviation/address/email/phone in: query name: search type: string - description: Filter by DUL flag (true/false) in: query name: dul type: boolean - description: Ignored in: query name: page type: integer - description: Ignored in: query name: size type: integer - description: Ignored in: query name: limit type: integer - description: Sort order in: query name: sort type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.BaseListResponse' summary: List bases tags: - Bases /api/v1/bases/get-all/dt: get: parameters: - description: Base category enum: - regular - hems in: query name: category_type type: string - description: Alias filter for base category enum: - regular - hems in: query name: base_category type: string - description: Page number (default 1) in: query name: page type: integer - description: Page size (default 20, max 100) in: query name: size type: integer - description: Page size override (same as size) in: query name: limit type: integer - description: Draw counter (optional) in: query name: draw type: integer - description: Search term in: query name: search type: string - description: Filter by DUL flag (true/false) in: query name: dul type: boolean produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.BaseDataTableResponse' summary: List bases (datatable) tags: - Bases /api/v1/bases/get/{uuid}: get: parameters: - description: Base UUID (UUIDv7) in: path name: uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.BaseResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Get base by ID tags: - Bases /api/v1/bases/update/{uuid}: patch: consumes: - application/json description: |- Example request: {"data":{"type":"hems_base","id":"","attributes":{"base":"Lude Testing 2","base_abbreviation":"LOIG","base_category":"regular","address":"Lude Airfield","latitude":47.3769,"longitude":8.5417,"sortkey":1,"sms_alert":false,"checklist":false,"leg_time":"00:20","default_start_time_type":"FIXED","default_end_time_type":"FIXED","default_shift_start":"06:00","default_shift_end":"21:00","utc":"0","notes":"Main base","operational_shift_times":[{"date_start":"2026-06-15","date_end":"2026-06-15","start_time_type":"BMCT","end_time_type":"ECET"}]}}} parameters: - description: Base UUID (UUIDv7) in: path name: uuid required: true type: string - description: JSON:API base update request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.BaseUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.BaseResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Update base tags: - Bases /api/v1/branding/login-content: get: description: |- Return public stable login title and subtitle from active master settings with backend defaults. Supports conditional requests with `If-None-Match` / `If-Modified-Since`. produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/internal_transport_http_handlers.loginBrandingContentDocument' "304": description: Not Modified schema: type: string summary: Get login content tags: - Branding /api/v1/branding/login-cover: get: description: |- Return public stable login cover image for sign-in page. Supports conditional requests with `If-None-Match` / `If-Modified-Since`. produces: - image/png - image/jpeg - image/webp - image/svg+xml - application/octet-stream responses: "200": description: Login cover image binary schema: type: file "304": description: Not Modified schema: type: string summary: Get login cover image tags: - Branding /api/v1/branding/logo: get: description: |- Return a stable company logo asset for frontend consumption. Backend resolves private object storage internally (no presigned URL exposure) and serves fallback logo when managed logo is unavailable. Supports conditional requests with `If-None-Match` / `If-Modified-Since`. produces: - image/png - image/jpeg - image/webp - image/svg+xml - application/octet-stream responses: "200": description: Branding logo binary schema: type: file "304": description: Not Modified schema: type: string summary: Get branding logo tags: - Branding /api/v1/complaints/action-taken/create/{id}: post: consumes: - application/json description: 'Records the corrective action text taken for a complaint. Recording the action does NOT sign it and does NOT lift the AOG grounding: signing the action is a separate step at POST /api/v1/action-signoffs/sign/{helicopter_id} (send complaint_id), and returning the aircraft to service requires a formal release (a signed EASA release / CRS, or an NSR). The complaint stays open until an EASA release fixes it.' parameters: - description: Complaint ID (UUIDv7) in: path name: id required: true type: string - description: Action taken payload in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.ComplaintActionTakenRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.ComplaintResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Record the corrective action for a complaint tags: - Complaints /api/v1/complaints/action-taken/update/{id}: patch: consumes: - application/json description: Updates the previously-recorded corrective action text of a complaint. Recording/updating the action does NOT sign it — signing is a separate step at POST /api/v1/action-signoffs/sign/{helicopter_id} (send complaint_id). parameters: - description: Complaint ID (UUIDv7) in: path name: id required: true type: string - description: Action taken payload in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.ComplaintActionTakenRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.ComplaintResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Update the recorded corrective action for a complaint tags: - Complaints /api/v1/complaints/create: post: consumes: - application/json description: |- Create a complaint (defect) for a flight inspection. MEL severity (mel_severity, OPTIONAL): omit it to file a "pending_mel" complaint and classify later (via PATCH /complaints/update/{id}); it MUST be classified before recording action taken. A pending complaint does NOT ground the aircraft — grounding starts at classification. Values: 0 = NON-MEL (grounds immediately); 1 = A (1 day grace); 2 = B (3 days); 3 = C (10 days); 4 = D (120 days). After the grace period passes without action the aircraft becomes AOG. NSR (Non-Safety Release) is its own flow — sign it at POST /api/v1/complaints/nsr/sign/{id} (cancel at /nsr/unsign/{id}); it is no longer set via create/update. Optional fields: aircraft_hours_at_report. To record the corrective action, use POST /api/v1/complaints/action-taken/create/{id} (a separate, explicitly-signed step) — it is no longer part of create/update. parameters: - description: JSON:API complaint create request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.ComplaintCreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.ComplaintResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Create complaint tags: - Complaints /api/v1/complaints/delete/{id}: delete: parameters: - description: Complaint ID (UUIDv7) in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.Document' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Delete complaint tags: - Complaints /api/v1/complaints/get-all: get: description: Lists complaints grouped by helicopter. Filter by date range on the reported date, by the name of an involved person (reporter / MEL classifier / action signer / NSR decider — i.e. pilot/techniker), and by free-text search on the complaint description. parameters: - description: Search complaint description in: query name: search type: string - description: Reported date lower bound (YYYY-MM-DD) in: query name: date_from type: string - description: Reported date upper bound (YYYY-MM-DD) in: query name: date_to type: string - description: Involved person name (pilot/techniker, partial match) in: query name: person type: string - description: Filter by helicopter ID (UUIDv7) in: query name: helicopter_id type: string - description: Sort complaints in: query name: sort type: string - default: 1 description: Page number in: query name: page type: integer - default: 20 description: Page size in: query name: page_size type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.ComplaintGroupedListResponse' summary: List complaints tags: - Complaints /api/v1/complaints/get-all/dt: get: parameters: - description: Search complaint description in: query name: search type: string - description: Reported date lower bound (YYYY-MM-DD) in: query name: date_from type: string - description: Reported date upper bound (YYYY-MM-DD) in: query name: date_to type: string - description: Involved person name (pilot/techniker, partial match) in: query name: person type: string - description: Filter by helicopter ID (UUIDv7) in: query name: helicopter_id type: string - description: Sort complaints in: query name: sort type: string - default: 1 description: Datatable draw counter in: query name: draw type: integer - default: 0 description: Datatable start offset in: query name: start type: integer - default: 10 description: Datatable page length in: query name: length type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.ComplaintGroupedDataTableResponse' summary: List complaints grouped by helicopter (datatable) tags: - Complaints /api/v1/complaints/get-by-helicopter/{helicopter_id}: get: parameters: - description: Helicopter ID in: path name: helicopter_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.ComplaintGroupedListResponse' summary: List complaints by helicopter tags: - Complaints /api/v1/complaints/get/{id}: get: parameters: - description: Complaint ID (UUIDv7) in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.ComplaintResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Get complaint by ID tags: - Complaints /api/v1/complaints/hold-items/get-all: get: description: 'Returns the Hold Item List (HIL): complaints that are still OPEN (not yet fixed by an EASA release) AND MEL-deferred (mel_severity > 0). Non-MEL defects (which ground the aircraft immediately) and already-serviced complaints are excluded. Same grouped shape and filters as get-all.' parameters: - description: From date — reported_at >= (YYYY-MM-DD). Legacy 'Von'. in: query name: date_from type: string - description: To date — reported_at <= (YYYY-MM-DD). Legacy 'bis'. in: query name: date_to type: string - description: Pilot/Technician name — matches reporter or action signer. Legacy 'Pilot/Techniker'. in: query name: person type: string - description: Search complaint description / MEL. Legacy 'Complains'. in: query name: search type: string - description: Helicopter ID (UUIDv7) in: query name: helicopter_id type: string - description: Page number (default 1) in: query name: page type: integer - description: Page size (default 20) in: query name: page_size type: integer - description: Sort expression (e.g. reported_at DESC) in: query name: sort type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.ComplaintGroupedListResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: List hold items (open MEL-deferred defects) tags: - Complaints /api/v1/complaints/hold-items/get-all/dt: get: description: Datatable variant of the Hold Item List (open + MEL-deferred complaints). Same filters as /hold-items/get-all (date_from, date_to, person, search, helicopter_id) plus DataTables params (start, length, draw). parameters: - description: From date — reported_at >= (YYYY-MM-DD). Legacy 'Von'. in: query name: date_from type: string - description: To date — reported_at <= (YYYY-MM-DD). Legacy 'bis'. in: query name: date_to type: string - description: Pilot/Technician name — matches reporter or action signer. in: query name: person type: string - description: Search complaint description / MEL. in: query name: search type: string - description: Helicopter ID (UUIDv7) in: query name: helicopter_id type: string - description: DataTables start offset in: query name: start type: integer - description: DataTables page length in: query name: length type: integer - description: DataTables draw counter in: query name: draw type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.ComplaintGroupedListResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: List hold items (open MEL-deferred defects) — datatable tags: - Complaints /api/v1/complaints/nsr/sign/{id}: post: consumes: - application/json description: 'Records an NSR decision on its own flow (separate from complaint update): the aircraft is released to fly despite the open defect and is no longer grounded by it. MEL must be classified first — an unassessed (pending_mel) defect cannot be deferred, so a pending complaint returns 422. The complaint stays OPEN and is only closed by a signed EASA release. Requires the complaint.nsr permission.' parameters: - description: Complaint ID (UUIDv7) in: path name: id required: true type: string - description: Optional NSR reason in: body name: request schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.ComplaintNSRSignRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.ComplaintResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Sign a Non-Safety Release (NSR / MEL deferral) for a complaint tags: - Complaints /api/v1/complaints/nsr/unsign/{id}: post: description: 'Revokes the NSR decision: the deferral is lifted, so the still-open defect grounds the aircraft again (AOG is recomputed). Requires the complaint.nsr permission.' parameters: - description: Complaint ID (UUIDv7) in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.ComplaintResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Cancel a Non-Safety Release for a complaint tags: - Complaints /api/v1/complaints/update/{id}: patch: consumes: - application/json description: |- Update a complaint. All attributes optional; only provided fields change. mel_severity: 0 = NON-MEL (immediate AOG); 1 = A (1 day); 2 = B (3 days); 3 = C (10 days); 4 = D (120 days) — AOG after grace passes. NSR is not set here — it is its own flow: POST /api/v1/complaints/nsr/sign/{id} (and /nsr/unsign/{id}). Note: the corrective action is recorded via POST /api/v1/complaints/action-taken/create/{id} (a separate, signed step), not here. parameters: - description: Complaint ID (UUIDv7) in: path name: id required: true type: string - description: JSON:API complaint update request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.ComplaintUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.ComplaintResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Update complaint tags: - Complaints /api/v1/contact/other: get: description: Lists master other-people whose name/mobile_phone/email matches `q` (empty `q` = most recent). Pick one and pass its id as `other_person_id` in a takeover's other_person to reuse without re-entering the data. parameters: - description: Search text (name / mobile_phone / email) in: query name: q type: string - description: Max results (default 20) in: query name: limit type: integer - description: Offset in: query name: offset type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.OtherPersonListResponse' summary: Search reusable "other people" (non-staff) for the takeover picker tags: - Contact - Other People /api/v1/contact/other/create: post: consumes: - application/json description: Registers a person in the other-people master so it can be reused across takeovers. The (name, mobile_phone, email) identity must be unique. parameters: - description: Other person in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.OtherPersonRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.OtherPersonResponse' summary: Create a reusable "other person" (non-staff) tags: - Contact - Other People /api/v1/contact/other/delete/{id}: delete: description: Soft-deletes a master person. Existing takeover snapshots keep their own copy of the data. parameters: - description: Other person id in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: additionalProperties: true type: object summary: Delete a reusable "other person" tags: - Contact - Other People /api/v1/contact/other/get/{id}: get: parameters: - description: Other person id in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.OtherPersonResponse' summary: Get one reusable "other person" tags: - Contact - Other People /api/v1/contact/other/update/{id}: patch: consumes: - application/json description: Replaces the name/mobile_phone/email of a master person. The new identity must not collide with another person. parameters: - description: Other person id in: path name: id required: true type: string - description: Other person in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.OtherPersonRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.OtherPersonResponse' summary: Update a reusable "other person" tags: - Contact - Other People /api/v1/contacts/{user_id}: delete: parameters: - description: User UUID in: path name: user_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ContactListResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Delete contact tags: - Contacts get: parameters: - description: User UUID in: path name: user_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ContactListResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Get contact tags: - Contacts patch: consumes: - application/json description: |- `data.type` must be `contact_update`. Supports updating `role_id` and `role_ids` (multiple roles) in the same request. Sending `role_ids: []` clears all assigned roles. Only one role-specific profile object is allowed in `attributes`. If provided, it must match one of the contact's assigned roles. parameters: - description: User UUID in: path name: user_id required: true type: string - description: JSON:API Contact update request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ContactUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ContactListResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Update contact tags: - Contacts /api/v1/contacts/{user_id}/chief-flags: patch: consumes: - application/json parameters: - description: User UUID in: path name: user_id required: true type: string - description: JSON:API chief flags request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ContactChiefFlagsUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ContactListResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Update chief flags tags: - Contacts /api/v1/contacts/{user_id}/license: patch: consumes: - application/json parameters: - description: User UUID in: path name: user_id required: true type: string - description: JSON:API license update request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ContactLicenseUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ContactListResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Update contact license fields tags: - Contacts /api/v1/contacts/{user_id}/pilot-category: patch: consumes: - application/json parameters: - description: User UUID in: path name: user_id required: true type: string - description: JSON:API pilot category request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ContactPilotCategoryUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ContactListResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Update pilot category tags: - Contacts /api/v1/contacts/{user_id}/role: patch: consumes: - application/json parameters: - description: User UUID in: path name: user_id required: true type: string - description: JSON:API role update request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ContactRoleUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ContactListResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Update contact role tags: - Contacts /api/v1/contacts/{user_id}/status: patch: consumes: - application/json parameters: - description: User UUID in: path name: user_id required: true type: string - description: JSON:API status update request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ContactStatusUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ContactSimpleSuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Update contact active status tags: - Contacts /api/v1/contacts/bulk-update: post: consumes: - application/json parameters: - description: JSON:API bulk update request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ContactBulkUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ContactSimpleSuccessResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Bulk update contacts status tags: - Contacts /api/v1/contacts/create: post: consumes: - application/json description: |- Create new contact user and role-specific profile. `data.type` must be `contact_create`. `role_ids` determines roles (use `role_id` only for backward compatibility). Every selected role must include its matching role-specific profile object in `attributes`. parameters: - description: JSON:API Contact create request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ContactCreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ContactListResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Create contact tags: - Contacts /api/v1/contacts/get-all: get: description: 'Filter contacts by role and pilot_category. Sort values: name, -name, first_name, -first_name, last_name, -last_name, email, -email, sortkey, -sortkey, note, -note, is_active, -is_active, created_at, -created_at, updated_at, -updated_at.' parameters: - description: 'Role: pilot|doctor|air_rescuer|technician|flight_assistant|staff' in: query name: role type: string - description: 'Pilot category: regular|freelance|dry_lease' in: query name: pilot_category type: string - description: Filter doctor chief flag in: query name: chief_doctor type: boolean - description: Filter technician chief flag in: query name: chief_technician type: boolean - description: Filter responsible complaint flag in: query name: responsible_complaint type: boolean - description: Filter pilot chief flag in: query name: chief_pilot type: boolean - description: Filter IFR qualified flag in: query name: ifr_qualified type: boolean - description: Search by username/email/name in: query name: search type: string - description: Sort order in: query name: sort type: string - description: Limit (default 20) in: query name: limit type: integer - description: Offset (default 0) in: query name: offset type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ContactListResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: List contacts tags: - Contacts /api/v1/contacts/get-all/dt: get: description: Datatable response with pagination params. parameters: - description: Page number (default 1) in: query name: page type: integer - description: Page size (default 20, max 1000) in: query name: size type: integer - description: Page size override (same as size) in: query name: limit type: integer - description: Draw counter (optional) in: query name: draw type: integer - description: Search term in: query name: search type: string - description: Role filter in: query name: role type: string - description: Pilot category filter in: query name: pilot_category type: string - description: Filter doctor chief flag in: query name: chief_doctor type: boolean - description: Filter technician chief flag in: query name: chief_technician type: boolean - description: Filter responsible complaint flag in: query name: responsible_complaint type: boolean - description: Filter pilot chief flag in: query name: chief_pilot type: boolean - description: Filter IFR qualified flag in: query name: ifr_qualified type: boolean produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ContactDataTableResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: List contacts (datatable) tags: - Contacts /api/v1/dul/create: post: consumes: - application/json description: 'Possible error code: DUL_INVALID_JSON, DUL_INVALID_UUID, DUL_DATE_INVALID, DUL_VALIDATION_FAILED, DUL_CREATE_FAILED.' parameters: - description: DUL create request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.DULCreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto.DULResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Create DUL tags: - DUL /api/v1/dul/delete/{id}: delete: description: 'Possible error code: DUL_INVALID_UUID, DUL_DELETE_FAILED.' parameters: - description: DUL ID in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.DULDeleteResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Delete DUL tags: - DUL /api/v1/dul/get-all: get: description: 'Possible error code: DUL_LIST_FAILED.' parameters: - description: Search by name/info in: query name: search type: string - description: Page number (default 1) in: query name: page[number] type: integer - description: Page size (default 20, max 100) in: query name: page[size] type: integer - description: Page number alias in: query name: page type: integer - description: Page size alias in: query name: size type: integer - description: Page size alias in: query name: limit type: integer - description: Sort order in: query name: sort type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.DULListResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: List DUL grouped by base tags: - DUL /api/v1/dul/get-all/dt: get: description: 'Possible error code: DUL_LIST_FAILED.' parameters: - description: Page number (default 1) in: query name: page type: integer - description: Page size (default 20, max 100) in: query name: size type: integer - description: Page size override (same as size) in: query name: limit type: integer - description: Draw counter (optional) in: query name: draw type: integer - description: Search by name/info in: query name: search type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.DULDataTableResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: List DUL grouped by base (datatable) tags: - DUL /api/v1/dul/get/{id}: get: description: 'Possible error code: DUL_INVALID_UUID, DUL_NOT_FOUND.' parameters: - description: DUL ID in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.DULResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Get DUL by ID tags: - DUL /api/v1/dul/update/{id}: patch: consumes: - application/json description: 'Possible error code: DUL_INVALID_JSON, DUL_INVALID_UUID, DUL_DATE_INVALID, DUL_VALIDATION_FAILED, DUL_NOT_FOUND, DUL_UPDATE_FAILED.' parameters: - description: DUL ID in: path name: id required: true type: string - description: DUL update request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.DULUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.DULResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Update DUL tags: - DUL /api/v1/duty-roster/create: post: consumes: - application/json description: Unified endpoint for all base categories. parameters: - description: Create request payload in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.DutyRosterCreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.DutyRosterResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Create duty roster tags: - Flights - Duty Roster /api/v1/duty-roster/crew: delete: consumes: - application/json description: Unified crew delete endpoint by `data.id` and `roster_detail`. parameters: - description: Crew delete request payload in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.DutyRosterDeleteCrewByIDRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.DutyRosterCrewDeleteResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Remove duty roster crew assignment tags: - Flights - Duty Roster /api/v1/duty-roster/delete: delete: consumes: - application/json description: Unified delete endpoint by `data.id`. parameters: - description: Delete request payload in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.DutyRosterAnyDeleteRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.GenericDeleteResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Delete duty roster tags: - Flights - Duty Roster /api/v1/duty-roster/get-all: get: description: Combined roster list across HEMS and Base for date range and optional base filters. parameters: - description: HEMS base UUID in: query name: hems_base_id type: string - description: Base UUID in: query name: base_id type: string - description: Filter by base name (contains, case-insensitive) in: query name: base_name type: string - description: Start date (YYYY-MM-DD) in: query name: from type: string - description: End date (YYYY-MM-DD) in: query name: to type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.Document' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: List all rosters (HEMS + Base) tags: - Flights - Duty Roster /api/v1/duty-roster/get-all/dt: get: description: 'Unified datatable endpoint. Optional `base_type` filter: `hems` or `base`.' parameters: - description: Base type filter (hems|base) in: query name: base_type type: string - description: Base UUID in: query name: base_id type: string - description: Filter by base name in: query name: base_name type: string - description: Start date (YYYY-MM-DD) in: query name: from type: string - description: End date (YYYY-MM-DD) in: query name: to type: string - description: Page number in: query name: page type: integer - description: Page size in: query name: size type: integer - description: Page size override in: query name: limit type: integer - description: Draw counter in: query name: draw type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.DutyRosterGroupedDataTableResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: List duty roster (datatable) tags: - Flights - Duty Roster /api/v1/duty-roster/update: patch: consumes: - application/json description: Unified update endpoint by `data.id`. parameters: - description: Update request payload in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.DutyRosterUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.DutyRosterResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Update duty roster (partial) tags: - Flights - Duty Roster /api/v1/easa-releases/create: post: consumes: - application/json parameters: - description: JSON:API EASA release create request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.EASAReleaseCreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.EASAReleaseResponse' summary: Create EASA maintenance release (draft) for a helicopter tags: - EASA Releases /api/v1/easa-releases/delete/{id}: delete: parameters: - description: EASA release ID (UUIDv7) in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.EASAReleaseDeleteResponse' summary: Delete (void) an EASA release tags: - EASA Releases /api/v1/easa-releases/get-by-complaint/{complaint_id}: get: parameters: - description: Complaint ID (UUIDv7) in: path name: complaint_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.EASAReleaseResponse' summary: Get the current EASA release for a complaint tags: - EASA Releases /api/v1/easa-releases/get-by-flight/{flight_id}: get: parameters: - description: Flight ID (UUIDv7) in: path name: flight_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.EASAReleaseResponse' summary: Get the current EASA release for a flight tags: - EASA Releases /api/v1/easa-releases/get-by-helicopter/{helicopter_id}: get: parameters: - description: Helicopter ID (UUIDv7) in: path name: helicopter_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.EASAReleaseListResponse' summary: List EASA releases for a helicopter tags: - EASA Releases /api/v1/easa-releases/get/{id}: get: parameters: - description: EASA release ID (UUIDv7) in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.EASAReleaseResponse' summary: Get EASA release by ID tags: - EASA Releases /api/v1/easa-releases/sign/{id}: post: description: 'Signs the release and closes the helicopter''s open complaints. The corrective-action sign-off is re-checked at sign time: if the sign-off was invalidated since the draft was created (e.g. its complaint was reopened) it returns 422 `EASA_RELEASE_SIGNOFF_REQUIRED` and does not sign.' parameters: - description: EASA release ID (UUIDv7) in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.EASAReleaseResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Sign the EASA maintenance release (closes the helicopter's open complaints) tags: - EASA Releases /api/v1/easa-releases/update/{id}: patch: consumes: - application/json parameters: - description: EASA release ID (UUIDv7) in: path name: id required: true type: string - description: JSON:API EASA release update request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.EASAReleaseUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.EASAReleaseResponse' summary: Update EASA release (draft fields) tags: - EASA Releases /api/v1/facilities/create: post: consumes: - application/json description: Create a facility row using one shared table. Flight-data SPO references now expect categories like `heslo-rope-label`, `heslo-rope-length`, `heslo-hook`, `hec-rope-label`, and `hec-rope-length`. parameters: - description: JSON:API Facility create request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.FacilityCreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto.FacilityResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Create facility tags: - Facility - Facilities /api/v1/facilities/delete/{uuid}: delete: parameters: - description: Facility UUID (UUIDv7) in: path name: uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.FacilityDeleteResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Delete facility tags: - Facility - Facilities /api/v1/facilities/get-all: get: description: JSON:API list with pagination, filtering and sorting. Supports one shared table with category discriminator (e.g. `heslo-rope-label`, `heslo-hook`, `hec-rope-label`). parameters: - description: Search by name/type/length/weight in: query name: search type: string - description: Filter by category (e.g. heslo-rope-label, heslo-hook, hec-rope-label) in: query name: category type: string - description: Page number (default 1) in: query name: page type: integer - description: Page size (default 20, max 100) in: query name: size type: integer - description: Page size override (same as size) in: query name: limit type: integer - description: Sort order in: query name: sort type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.FacilityListResponse' summary: List facilities tags: - Facility - Facilities /api/v1/facilities/get-all/dt: get: description: Datatable response with simple pagination params. parameters: - description: Page number (default 1) in: query name: page type: integer - description: Page size (default 20, max 100) in: query name: size type: integer - description: Page size override (same as size) in: query name: limit type: integer - description: Draw counter (optional) in: query name: draw type: integer - description: Search term in: query name: search type: string - description: Facility category in: query name: category type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.FacilityDataTableResponse' summary: List facilities (datatable) tags: - Facility - Facilities /api/v1/facilities/get/{uuid}: get: parameters: - description: Facility UUID (UUIDv7) in: path name: uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.FacilityResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Get facility by ID tags: - Facility - Facilities /api/v1/facilities/update/{uuid}: patch: consumes: - application/json description: Patch facility by ID. parameters: - description: Facility UUID (UUIDv7) in: path name: uuid required: true type: string - description: JSON:API Facility update request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.FacilityUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.FacilityResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Update facility (partial) tags: - Facility - Facilities /api/v1/federal-state/create: post: consumes: - application/json description: Create a federal state row. parameters: - description: JSON:API federal state create request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.FederalStateCreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto.FederalStateResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Create federal state tags: - Hospital - Federal State /api/v1/federal-state/delete/{id}: delete: parameters: - description: Federal State ID (UUIDv7) in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.FederalStateDeleteResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Delete federal state tags: - Hospital - Federal State /api/v1/federal-state/get-all: get: description: 'JSON:API list with pagination, filtering and sorting. Sort values: name, -name, sortkey, -sortkey, is_active, -is_active, created_at, -created_at, updated_at, -updated_at.' parameters: - description: Search by name in: query name: filter[search] type: string - description: Filter federal state by land UUID in: query name: land_id type: string - description: Filter federal state by land name in: query name: land_name type: string - description: Page number (default 1) in: query name: page[number] type: integer - description: Page size (default 20, max 100) in: query name: page[size] type: integer - description: Sort order in: query name: sort type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.FederalStateListResponse' summary: List federal state tags: - Hospital - Federal State /api/v1/federal-state/get-all/dt: get: description: Datatable response with simple pagination params. parameters: - description: Page number (default 1) in: query name: page type: integer - description: Page size (default 20, max 100) in: query name: size type: integer - description: Page size override (same as size) in: query name: limit type: integer - description: Draw counter (optional) in: query name: draw type: integer - description: Search term in: query name: search type: string - description: Search by name in: query name: filter[search] type: string - description: Filter federal state by land UUID in: query name: land_id type: string - description: Filter federal state by land name in: query name: land_name type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.FederalStateDataTableResponse' summary: List federal state (datatable) tags: - Hospital - Federal State /api/v1/federal-state/update/{id}: patch: consumes: - application/json description: Patch federal state by ID. parameters: - description: Federal State ID (UUIDv7) in: path name: id required: true type: string - description: JSON:API federal state update request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.FederalStateUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.FederalStateResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Update federal state (partial) tags: - Hospital - Federal State /api/v1/file-manager/attachments/create: post: consumes: - application/json description: Create generic attachment relation between a file and business reference (ref_type/ref_id). operationId: FileManagerCreateAttachment parameters: - description: JSON:API attachment create request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerAttachmentCreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerAttachmentResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Attach file to business reference tags: - File Manager /api/v1/file-manager/attachments/delete/{uuid}: delete: description: Remove generic attachment relation by UUID. operationId: FileManagerDeleteAttachment parameters: - description: Attachment UUID (UUIDv7) in: path name: uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.GenericDeleteResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Detach attachment relation tags: - File Manager /api/v1/file-manager/attachments/get-all: get: description: List generic attachment relations by ref_type and ref_id. operationId: FileManagerListAttachmentsByReference parameters: - description: Business reference type, e.g. helicopter in: query name: ref_type required: true type: string - description: Business reference ID in: query name: ref_id required: true type: string - description: Optional attachment category in: query name: category type: string - description: Page number (default 1) in: query name: page[number] type: integer - description: Page size (default 20, max 100) in: query name: page[size] type: integer - description: 'Sort values: sort_order,-sort_order,created_at,-created_at,updated_at,-updated_at' in: query name: sort type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerAttachmentListResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: List attachments by business reference tags: - File Manager /api/v1/file-manager/attachments/get/{uuid}: get: description: Get one generic attachment relation by UUID. operationId: FileManagerGetAttachment parameters: - description: Attachment UUID (UUIDv7) in: path name: uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerAttachmentResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Get attachment detail tags: - File Manager /api/v1/file-manager/delete: delete: consumes: - application/json description: |- Soft-delete multiple nodes by UUID. UUID can be folder or file. Bulk payload accepts one or many items. operationId: FileManagerDeleteNodesBulk parameters: - description: Bulk delete request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerNodePurgeBulkRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerMoveNodeBulkResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Delete nodes (file/folder) in bulk tags: - File Manager /api/v1/file-manager/files/{fileId}/edit-session: get: consumes: - application/json description: |- Returns a Collabora/WOPI write session for an already existing file that belongs to the authenticated user's takeover scope or to the authenticated user as an unattached draft. This endpoint does not create or copy files. It only resolves the file, checks access, and mints a new access token. Use this when reopening an existing file for editing. Path param `fileId` must be a valid UUIDv7. parameters: - description: File UUID (UUIDv7) in: path name: fileId required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileWOPISessionResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "503": description: Service Unavailable schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Start a WOPI edit session for an existing file tags: - File Manager /api/v1/file-manager/files/cancel-upload: delete: consumes: - application/json description: |- Cancel pending upload intents before file entity creation. This endpoint is intended for pre-create cleanup when FE uploaded to object storage but user cancels flow. Bulk payload accepts one or many items. operationId: FileManagerCancelUploadIntentBulk parameters: - description: Bulk cancel upload intent request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFileCancelUploadBulkRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileCancelUploadBulkResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Cancel upload intent (bulk) tags: - File Manager /api/v1/file-manager/files/create: post: consumes: - application/json description: |- Final public control-plane step after direct PUT upload to S3 (bulk contract). Verifies uploaded object per item from upload intent, then persists metadata+outbox durably and emits lifecycle status. This endpoint does not upload binary data. Public flow: POST /files/upload (intent+presign) -> PUT to S3 -> POST /files/create. folder_id is optional; null/omitted means create in root folder. Canonical JSON:API data.type is "file_manager_file_create" (legacy "file_manager_file" remains accepted for backward compatibility). Bulk payload accepts one or many items. operationId: FileManagerCreateFileFromUploadedObject parameters: - description: Bulk create payload for user profile image in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFileUserBulkCreateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileBulkResponse' "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileBulkResponse' "207": description: Multi-Status schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileBulkResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Create file record from uploaded object tags: - File Manager /api/v1/file-manager/files/create-aircraft-image: post: consumes: - application/json description: |- Same as bulk create, but folder is resolved using hierarchy "__system_root_files__" -> "aircraft" -> "". aircraft_uuid is required per item to resolve designation. operationId: FileManagerCreateAircraftImageFromUploadedObject parameters: - description: Bulk create payload for aircraft image in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFileAircraftBulkCreateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileBulkResponse' "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileBulkResponse' "207": description: Multi-Status schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileBulkResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Create aircraft image file record from uploaded object tags: - File Manager /api/v1/file-manager/files/create-base-image: post: consumes: - application/json description: |- Same as bulk create, but folder is resolved using hierarchy "__system_root_files__" -> "bases" -> "" -> "". base_uuid is required per item. operationId: FileManagerCreateBaseImageFromUploadedObject parameters: - description: Bulk create payload for base image in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFileBaseBulkCreateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileBulkResponse' "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileBulkResponse' "207": description: Multi-Status schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileBulkResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Create base image file record from uploaded object tags: - File Manager /api/v1/file-manager/files/create-dul-image: post: consumes: - application/json description: |- Finalize uploaded DUL image file(s) from upload intent. If dul_uuid is provided, file is created under DUL folder hierarchy. If dul_uuid is omitted, file is still created (unassigned), then can be attached during /api/v1/dul/create via file_uuid. Possible status: 201 (all success), 207 (partial success), 400 (invalid json/create failed), 401 (unauthorized), 403 (forbidden), 404 (dul or file resources not found), 409 (upload-intent conflict), 422 (validation), 503 (DUL or file-manager service unavailable). Possible error code: INVALID_REQUEST, USER_UNAUTHORIZED, FORBIDDEN_ACCESS, FILE_MANAGER_VALIDATION_FAILED, FILE_MANAGER_FILE_NOT_FOUND, FILE_MANAGER_UPLOAD_INTENT_NOT_FOUND, FILE_MANAGER_UPLOAD_INTENT_CONFLICT, DUL_NOT_FOUND, FILE_MANAGER_STORAGE_UNAVAILABLE, FILE_MANAGER_QUEUE_UNAVAILABLE, FILE_MANAGER_ATTACHMENT_SERVICE_UNAVAILABLE, FILE_MANAGER_ACTION_FAILED. parameters: - description: Bulk create payload for DUL image in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFileDULBulkCreateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileBulkResponse' "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileBulkResponse' "207": description: Multi-Status schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileBulkResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "409": description: Conflict schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "503": description: Service Unavailable schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Create DUL image file record from uploaded object tags: - File Manager /api/v1/file-manager/files/create-from-template: post: consumes: - application/json description: |- Copies a helicopter template file into a new draft file and returns a Collabora/WOPI write session for the newly created file. This endpoint always marks the created file as `is_template=false` because the result is a normal working document, not a reusable template. The source template must be a helicopter file that belongs to the same `helicopter_id` provided in the request. `template_uuid` is the helicopter-file UUID, not the file UUID. Request fields: `template_uuid`, `helicopter_id`, optional `takeover_id`, and `name`. Success response includes the new `file_id`, Collabora editor action URL, an access token, and the token TTL in milliseconds. parameters: - description: Create-from-template payload in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFileTemplateCreateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileWOPISessionResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "503": description: Service Unavailable schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Create file from template and start a WOPI edit session tags: - File Manager /api/v1/file-manager/files/create-mission-file: post: consumes: - application/json description: |- Materializes uploaded objects into folder "missions/", creates attachments (ref_type=mission), and links them to the mission so they appear in GET mission. mission_uuid is required per item. Possible error code: MISSION_FILE_INVALID_JSON, MISSION_FILE_VALIDATION, MISSION_FILE_INVALID_MISSION_UUID, MISSION_FILE_MISSION_NOT_FOUND, MISSION_FILE_SERVICE_UNAVAILABLE, MISSION_FILE_ACTION_FAILED, FILE_MANAGER_UPLOAD_INTENT_NOT_FOUND, FILE_MANAGER_STORAGE_UNAVAILABLE, FILE_MANAGER_ACTION_FAILED. operationId: FileManagerCreateMissionFileFromUploadedObject parameters: - description: Bulk create payload for mission file in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFileMissionBulkCreateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileBulkResponse' "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileBulkResponse' "207": description: Multi-Status schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileBulkResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Create mission file record from uploaded object tags: - File Manager /api/v1/file-manager/files/create-takeover-file: post: consumes: - application/json description: Finalize uploaded takeover file(s) from upload intent. The takeover relation is attached later from file_id during takeover create/update. parameters: - description: Bulk create payload for takeover file in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFileTakeoverBulkCreateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileBulkResponse' "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileBulkResponse' "207": description: Multi-Status schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileBulkResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Create takeover file node from uploaded object tags: - File Manager /api/v1/file-manager/files/create-user-image: post: consumes: - application/json description: |- Same as bulk create, but folder is resolved using hierarchy "__system_root_files__" -> "user" -> "-". user_uuid is required per item to resolve target user folder. operationId: FileManagerCreateUserImageFromUploadedObject parameters: - description: Bulk create payload for user profile image in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFileUserBulkCreateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileBulkResponse' "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileBulkResponse' "207": description: Multi-Status schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileBulkResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Create user profile image file record from uploaded object tags: - File Manager /api/v1/file-manager/files/get/{uuid}: get: description: Return file metadata by UUID. operationId: FileManagerGetFile parameters: - description: File UUID (UUIDv7) in: path name: uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileDetailResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Get file detail tags: - File Manager /api/v1/file-manager/files/update/{uuid}: patch: consumes: - application/json description: Update file metadata by UUID (rename and/or move folder). operationId: FileManagerUpdateFileEntity parameters: - description: File UUID (UUIDv7) in: path name: uuid required: true type: string - description: JSON:API file manager file update request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFileUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Update file entity (rename and/or move) tags: - File Manager /api/v1/file-manager/files/upload: post: consumes: - application/json description: |- Control-plane endpoint to create upload intents and presigned PUT URLs for direct upload to S3 (bulk contract). Binary does not flow through backend upload endpoint. After successful PUT to S3, call POST /api/v1/file-manager/files/create with upload_intent_uuid. Presigned URL TTL is controlled by backend storage config. Bulk payload accepts one or many items. Response is item-based and supports partial success. operationId: FileManagerRequestUploadIntent parameters: - description: Bulk upload intent request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFileUploadIntentBulkRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileUploadIntentBulkResponse' "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileUploadIntentBulkResponse' "207": description: Multi-Status schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileUploadIntentBulkResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Request upload intents + presigned PUT URLs tags: - File Manager /api/v1/file-manager/files/upload-aircraft-image: post: consumes: - application/json description: |- Same flow as file upload intent, but dedicated for aircraft image drag-drop flow. Use together with /api/v1/file-manager/files/create-aircraft-image to force target folder "aircraft". operationId: FileManagerRequestAircraftImageUploadIntent parameters: - description: Bulk upload intent request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFileUploadIntentBulkRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileUploadIntentBulkResponse' "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileUploadIntentBulkResponse' "207": description: Multi-Status schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileUploadIntentBulkResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Request upload intents for aircraft drag-drop images tags: - File Manager /api/v1/file-manager/files/upload-base-image: post: consumes: - application/json description: |- Same flow as file upload intent, but dedicated for base image flow. Use together with /api/v1/file-manager/files/create-base-image to force target folder under bases hierarchy. operationId: FileManagerRequestBaseImageUploadIntent parameters: - description: Bulk upload intent request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFileUploadIntentBulkRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileUploadIntentBulkResponse' "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileUploadIntentBulkResponse' "207": description: Multi-Status schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileUploadIntentBulkResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Request upload intents for base images tags: - File Manager /api/v1/file-manager/files/upload-dul-image: post: consumes: - application/json description: |- Dedicated upload-intent endpoint for DUL image flow. Possible status: 201 (all success), 207 (partial success), 400 (invalid json), 401 (unauthorized), 403 (forbidden), 422 (validation), 503 (storage/queue/upload-intent service unavailable). Possible error code: INVALID_REQUEST, USER_UNAUTHORIZED, FORBIDDEN_ACCESS, FILE_MANAGER_VALIDATION_FAILED, FILE_MANAGER_STORAGE_UNAVAILABLE, FILE_MANAGER_QUEUE_UNAVAILABLE, FILE_MANAGER_UPLOAD_INTENT_UNAVAILABLE, FILE_MANAGER_ACTION_FAILED. parameters: - description: Bulk upload intent request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFileUploadIntentBulkRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileUploadIntentBulkResponse' "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileUploadIntentBulkResponse' "207": description: Multi-Status schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileUploadIntentBulkResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "403": description: Forbidden schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "503": description: Service Unavailable schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Request upload intents for DUL images tags: - File Manager /api/v1/file-manager/files/upload-mission-file: post: consumes: - application/json description: |- Dedicated upload-intent endpoint for mission file flow. Use together with /api/v1/file-manager/files/create-mission-file to attach the file to a mission. operationId: FileManagerRequestMissionFileUploadIntent parameters: - description: Bulk upload intent request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFileUploadIntentBulkRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileUploadIntentBulkResponse' "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileUploadIntentBulkResponse' "207": description: Multi-Status schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileUploadIntentBulkResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Request upload intents for mission files tags: - File Manager /api/v1/file-manager/files/upload-takeover-file: post: consumes: - application/json description: |- Dedicated upload-intent endpoint for takeover file flow. Use together with /api/v1/file-manager/files/create-takeover-file to persist the takeover file relation. parameters: - description: Bulk upload intent request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFileUploadIntentBulkRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileUploadIntentBulkResponse' "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileUploadIntentBulkResponse' "207": description: Multi-Status schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileUploadIntentBulkResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Request upload intents for takeover files tags: - File Manager /api/v1/file-manager/files/upload-user-image: post: consumes: - application/json description: |- Same flow as file upload intent, but dedicated for user profile image flow. Use together with /api/v1/file-manager/files/create-user-image to force target folder under user hierarchy. operationId: FileManagerRequestUserImageUploadIntent parameters: - description: Bulk upload intent request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFileUploadIntentBulkRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileUploadIntentBulkResponse' "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileUploadIntentBulkResponse' "207": description: Multi-Status schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileUploadIntentBulkResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Request upload intents for user profile images tags: - File Manager /api/v1/file-manager/folders/create: post: consumes: - application/json description: Create one folder metadata node under root or under provided parent_id. operationId: FileManagerCreateFolder parameters: - description: JSON:API file manager folder create request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFolderCreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFolderResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Create folder node tags: - File Manager /api/v1/file-manager/folders/get/{uuid}: get: description: Return folder metadata by UUID. operationId: FileManagerGetFolder parameters: - description: Folder UUID (UUIDv7) in: path name: uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFolderDetailResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Get folder detail tags: - File Manager /api/v1/file-manager/folders/update/{uuid}: patch: consumes: - application/json description: Update folder metadata by UUID (rename and/or move parent). operationId: FileManagerUpdateFolder parameters: - description: Folder UUID (UUIDv7) in: path name: uuid required: true type: string - description: JSON:API file manager folder update request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerFolderUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFolderResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Update folder node tags: - File Manager /api/v1/file-manager/get-all: get: description: |- Return merged direct children (folders + files) for optional parent_uuid (non-recursive). If parent_uuid is omitted, response returns root level nodes. If search is provided, performs a global name search across all folders and files (parent_uuid is ignored). operationId: FileManagerListMergedExplorerNodes parameters: - description: Parent folder UUID in: query name: parent_uuid type: string - description: Search keyword (global name search across all folders and files) in: query name: search type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerNodeListResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: List merged explorer nodes tags: - File Manager /api/v1/file-manager/move: patch: consumes: - application/json description: |- Unified move endpoint. Each item UUID can be either folder UUID or file UUID. destination_folder_uuid null/empty means move to root. Bulk payload accepts one or many items. operationId: FileManagerMoveNodesBulk parameters: - description: Bulk move request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerNodeMoveBulkRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerMoveNodeBulkResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Move nodes (file/folder) in bulk tags: - File Manager /api/v1/file-manager/purge-delete: delete: consumes: - application/json description: |- Permanently delete multiple trashed nodes by UUID. UUID can be folder or file. Bulk payload accepts one or many items. operationId: FileManagerPurgeNodesBulkFromTrash parameters: - description: Bulk purge request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerNodePurgeBulkRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerPurgeNodeBulkResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Purge nodes (file/folder) from trash in bulk tags: - File Manager /api/v1/file-manager/restore: patch: consumes: - application/json description: |- Restore multiple trashed nodes by UUID to original location. Bulk payload accepts one or many items. operationId: FileManagerRestoreNodesBulk parameters: - description: Bulk restore request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FileManagerNodePurgeBulkRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerMoveNodeBulkResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Restore nodes (file/folder) in bulk tags: - File Manager /api/v1/file-manager/trash/get-all: get: description: Return merged trashed nodes (folders + files) for trash explorer. operationId: FileManagerListMergedTrashItems parameters: - description: Page number (default 1) in: query name: page[number] type: integer - description: Page size (default 20, max 100) in: query name: page[size] type: integer - description: 'Sort values: deleted_at,-deleted_at,name,-name,type,-type,size_bytes,-size_bytes' in: query name: sort type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerTrashListResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: List merged trash items tags: - File Manager /api/v1/fleet-status/create: post: consumes: - application/json description: Create fleet status with maintenance schedules and file attachments. parameters: - description: Fleet status create request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FleetStatusCreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FleetStatusResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Create fleet status tags: - Fleet Status /api/v1/fleet-status/delete/{id}: delete: description: Soft delete fleet status by ID. parameters: - description: Fleet status ID (UUIDv7) in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FleetStatusDeleteResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Delete fleet status tags: - Fleet Status /api/v1/fleet-status/get-all: get: description: Lists every helicopter from the master, each with its latest fleet status (or empty data when it has none). Paginated by helicopter. parameters: - default: 1 description: Page number in: query name: page type: integer - default: 20 description: Page size in: query name: page_size type: integer - description: Search helicopters by designation/identifier/type in: query name: filter type: string - description: 'Sort helicopters, example: designation' in: query name: sort type: string - description: 'Filter by operational status; comma-separated for multiple (e.g. available,booked). Values: available, booked, aog, mcf' in: query name: status type: string - description: Filter by helicopter ID (UUIDv7); combined with status uses AND logic in: query name: helicopter_id type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FleetStatusListResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: List fleet status tags: - Fleet Status /api/v1/fleet-status/get-all/dt: get: description: Lists every helicopter from the master, each with its latest fleet status (or empty data when it has none). Paginated by helicopter. parameters: - default: 1 description: Datatable draw counter in: query name: draw type: integer - default: 0 description: Datatable start offset in: query name: start type: integer - default: 10 description: Datatable page length in: query name: length type: integer - description: Search helicopters by designation/identifier/type in: query name: search type: string - description: 'Sort helicopters, example: designation' in: query name: sort type: string - description: 'Filter by operational status; comma-separated for multiple (e.g. available,booked). Values: available, booked, aog, mcf' in: query name: status type: string - description: Filter by helicopter ID (UUIDv7); combined with status uses AND logic in: query name: helicopter_id type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FleetStatusDataTableResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: List fleet status (datatable) tags: - Fleet Status /api/v1/fleet-status/get-by-helicopter/{helicopter_id}: get: parameters: - description: Helicopter ID (UUIDv7) in: path name: helicopter_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FleetStatusResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Get latest fleet status by helicopter ID tags: - Fleet Status /api/v1/fleet-status/get/{id}: get: parameters: - description: Fleet status ID (UUIDv7) in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FleetStatusResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Get fleet status by ID tags: - Fleet Status /api/v1/fleet-status/history/{helicopter_id}: get: description: 'Unified timeline: maintenance servicing events merged with complaint/MEL/NSR/action/MCF/EASA/AOG action events, newest first.' parameters: - description: Helicopter ID (UUIDv7) in: path name: helicopter_id required: true type: string - default: 1 description: Page number in: query name: page type: integer - default: 20 description: Page size in: query name: page_size type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FleetHistoryListResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: List fleet history (timeline) by helicopter tags: - Fleet Status /api/v1/fleet-status/mark-serviced/{id}: post: description: Move current maintenance schedules into service logs, then clear active schedules. parameters: - description: Fleet status ID (UUIDv7) in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FleetStatusMarkServicedResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Mark fleet status serviced tags: - Fleet Status /api/v1/fleet-status/update/{id}: patch: consumes: - application/json description: Update fleet status by ID with full replacement for schedules and files. parameters: - description: Fleet status ID (UUIDv7) in: path name: id required: true type: string - description: Fleet status update request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FleetStatusUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FleetStatusResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Update fleet status tags: - Fleet Status /api/v1/flight-data/create: post: consumes: - application/json description: |- Create a flight data row. Required field: `mission_id`. `co_pilot_id` is optional. Swagger request example shows the complete common payload for an `SPO` mission. `SPO` is the default example shape, and for other mission types (`CAT` and `NCO`) you do not need to send the `hec`, `heslo`, or `logging` blocks. `rotor_brake_cycle` is optional for `SPO`, `CAT`, and `NCO`. SPO facility references must point to facilities with categories: `heslo_rope_label_id -> heslo-rope-label`, `heslo.slings -> heslo-rope-length`, `logging.slings -> heslo-hook`, `hec.flights -> hec-rope-label`, and `hec.slings -> hec-rope-length`. SPO-specific response fields (`heslo`, `logging`, and `hec`) are returned only when the related mission type is `SPO`. Example request: {"data":{"type":"flight_data_create","attributes":{"mission_id":"019d6774-98e8-7fba-9ef4-3795c0da8a13"}}} parameters: - description: JSON:API flight data create request. Example is for SPO; CAT/NCO can omit SPO-only blocks and other optional fields. in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FlightDataCreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FlightDataResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Create flight data tags: - Mission - Flight Data /api/v1/flight-data/delete/{id}: delete: description: Soft delete flight data by UUID. parameters: - description: Flight Data UUID (UUIDv7) in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.GenericDeleteResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Delete flight data by ID tags: - Mission - Flight Data /api/v1/flight-data/get-all: get: description: |- List flight data rows. Supports `date` for exact flight take-off date filtering (`YYYY-MM-DD`), plus `mission_id` and `flight_data_id` filters. SPO-specific response fields (`heslo`, `logging`, and `hec`) are returned only when the related mission type is `SPO`. parameters: - description: Filter by flight take-off date (YYYY-MM-DD) in: query name: date type: string - description: Filter by mission UUID in: query name: mission_id type: string - description: Filter by flight-data UUID in: query name: flight_data_id type: string - description: Page number in: query name: page[number] type: integer - description: Page size in: query name: page[size] type: integer - description: Page number (fallback) in: query name: page type: integer - description: Page size (fallback) in: query name: size type: integer - description: Page size override in: query name: limit type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FlightDataListResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: List flight data tags: - Mission - Flight Data /api/v1/flight-data/get-all/dt: get: description: |- Datatable-friendly list of flight data rows. Supports `date` for exact flight take-off date filtering (`YYYY-MM-DD`), plus `mission_id` and `flight_data_id` filters. Same payload shape as `get-all`, but with DataTables paging params (`start`, `length`, `draw`). SPO-specific response fields (`heslo`, `logging`, and `hec`) are returned only when the related mission type is `SPO`. parameters: - description: DataTables draw counter in: query name: draw type: integer - description: Paging start offset in: query name: start type: integer - description: Paging length in: query name: length type: integer - description: Page number in: query name: page[number] type: integer - description: Page size in: query name: page[size] type: integer - description: Page number (fallback) in: query name: page type: integer - description: Page size (fallback) in: query name: size type: integer - description: Page size override in: query name: limit type: integer - description: Filter by flight take-off date (YYYY-MM-DD) in: query name: date type: string - description: Filter by mission UUID in: query name: mission_id type: string - description: Filter by flight-data UUID in: query name: flight_data_id type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FlightDataListResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: List flight data (datatable) tags: - Mission - Flight Data /api/v1/flight-data/get/{id}: get: description: |- Get flight data detail by ID. Path `id` can be mission UUID, flight-data UUID, or flight UUID. SPO-specific response fields (`heslo`, `logging`, and `hec`) are returned only when the related mission type is `SPO`. parameters: - description: Mission UUID / Flight Data UUID / Flight UUID (UUIDv7) in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FlightDataResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Get flight data by ID tags: - Mission - Flight Data /api/v1/flight-data/update/{id}: patch: consumes: - application/json description: |- Update a flight data row by UUID. Required field: `mission_id`. `co_pilot_id` is optional. Swagger request example uses the same SPO-shaped payload as create, but this endpoint updates an existing flight-data row. SPO facility references must point to facilities with categories: `heslo_rope_label_id -> heslo-rope-label`, `heslo.slings -> heslo-rope-length`, `logging.slings -> heslo-hook`, `hec.flights -> hec-rope-label`, and `hec.slings -> hec-rope-length`. For frontend usage, send only the fields that need to change; omitted fields stay unchanged. `SPO` is the default example shape, and for `CAT`/`NCO` you do not need to send the `hec`, `heslo`, or `logging` blocks. `rotor_brake_cycle` is optional for `SPO`, `CAT`, and `NCO`. SPO-specific response fields (`heslo`, `logging`, and `hec`) are returned only when the related mission type is `SPO`. Example request: {"data":{"type":"flight_data_create","attributes":{"mission_id":"019d6774-98e8-7fba-9ef4-3795c0da8a13"}}} parameters: - description: Flight Data UUID (UUIDv7) in: path name: id required: true type: string - description: JSON:API flight data update request. Send only fields you want to change; omit the rest. in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FlightDataUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FlightDataResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Update flight data by ID tags: - Mission - Flight Data /api/v1/flights/get: get: description: |- Returns flights assigned to current auth user, including workflow steps (`duty_roster`, `reserve_ac`, `mission`, `after_flight_inspection`, `fm_report`). Each step includes `status`, `completed_at`, and `completed_by` for consistent FE rendering. parameters: - description: Page number in: query name: page[number] type: integer - description: Page size in: query name: page[size] type: integer - description: Page number (fallback) in: query name: page type: integer - description: Page size (fallback) in: query name: size type: integer - description: Page size override in: query name: limit type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FlightListResponse' "401": description: Unauthorized schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Get flights for current auth user (from duty roster assignment) tags: - Flight /api/v1/flights/get-all: get: description: |- Supports `search`, `filter[search]`, `sort`, `page[number]`, `page[size]`, `page`, `size`, and `limit`. Supports `date` and `filter[date]` for exact flight date filtering (`YYYY-MM-DD`). Returns paginated flights with workflow steps (`takeover`, `mission`, `after_flight_inspection`, `fm_report`). Each step includes `status`, `completed_at`, and `completed_by` for consistent FE rendering. parameters: - description: Search text in: query name: search type: string - description: Search text (JSON:API style) in: query name: filter[search] type: string - description: Filter by flight date (YYYY-MM-DD) in: query name: date type: string - description: Filter by flight date (YYYY-MM-DD) (JSON:API style) in: query name: filter[date] type: string - description: Sort field in: query name: sort type: string - description: Page number in: query name: page[number] type: integer - description: Page size in: query name: page[size] type: integer - description: Page number (fallback) in: query name: page type: integer - description: Page size (fallback) in: query name: size type: integer - description: Page size override in: query name: limit type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FlightListResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: List flights tags: - Flight /api/v1/fm-reports/{id}: delete: description: Soft-delete an FM report by ID. Requires a verified security PIN. parameters: - description: FM Report ID (UUIDv7) in: path name: id required: true type: string - description: One-time security-PIN action token in: header name: X-PIN-Verification-Token required: true type: string produces: - application/json responses: "204": description: No Content "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Delete FM report tags: - Flight Report /api/v1/fm-reports/{id}/attachments: post: consumes: - application/json description: 'After uploading the file to the presigned URL (from /attachments/upload-intent), call this endpoint with the upload_intent_uuid, name, and category to create the file node and attach it to the FM report. Valid categories: additional_fm_report, briefing, weight_balance, ofp.' parameters: - description: FM Report ID (UUIDv7) in: path name: id required: true type: string - description: body with upload_intent_uuid, name, and category in: body name: request required: true schema: type: object produces: - application/json responses: "201": description: Created schema: type: object "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Create FM report attachment from upload intent tags: - Flight Report /api/v1/fm-reports/{id}/attachments/{att_id}: delete: description: Remove a specific attachment from an FM report. Verifies ownership before deletion. parameters: - description: FM Report ID (UUIDv7) in: path name: id required: true type: string - description: Attachment ID (UUIDv7) in: path name: att_id required: true type: string produces: - application/json responses: "204": description: No Content "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Delete attachment from FM report tags: - Flight Report /api/v1/fm-reports/{id}/attachments/upload-intent: post: consumes: - application/json description: Returns a presigned PUT URL and upload_intent_uuid. After uploading the file to the presigned URL, call POST /fm-reports/{id}/attachments with the upload_intent_uuid to create the file node and attach it to the report. parameters: - description: FM Report ID (UUIDv7) in: path name: id required: true type: string - description: body with name, content_type, size_bytes in: body name: request required: true schema: type: object produces: - application/json responses: "201": description: Created schema: type: object "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Request upload intent for FM report attachment tags: - Flight Report /api/v1/fm-reports/complete/{flight_id}: post: description: 'Mark an FM report as completed for a flight. Once completed, the report becomes read-only and flight data edits are locked. Requires a verified security PIN: send the one-time token from POST /auth/pin/verify (action 1a75135b-430a-4592-83e1-6d27814185af) in the X-PIN-Verification-Token header.' parameters: - description: Flight ID (UUIDv7) in: path name: flight_id required: true type: string - description: One-time security-PIN action token in: header name: X-PIN-Verification-Token required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.FMReportResponse' "202": description: PIN verification required schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Complete FM report tags: - Flight Report /api/v1/fm-reports/get-all: get: description: Returns a paginated list of FM reports. Supports `search`, `filter[search]`, `filter[flight_id]`, `filter[takeover_id]`, `filter[flight_inspection_id]`, `filter[flight_date]`, `filter[has_engine1_gpc_n1]`, `filter[has_engine1_ptc_n2]`, `filter[has_engine2_gpc_n1]`, `filter[has_engine2_ptc_n2]`, `sort`, `page[number]`, `page[size]`, `page`, `size`, and `limit`. parameters: - description: Search text in: query name: search type: string - description: Search text (JSON:API style) in: query name: filter[search] type: string - description: Filter by flight ID in: query name: filter[flight_id] type: string - description: Filter by takeover ID in: query name: filter[takeover_id] type: string - description: Filter by flight inspection ID in: query name: filter[flight_inspection_id] type: string - description: Filter by flight date (YYYY-MM-DD) in: query name: filter[flight_date] type: string - description: Filter reports with or without engine1_gpc_n1 in: query name: filter[has_engine1_gpc_n1] type: boolean - description: Filter reports with or without engine1_ptc_n2 in: query name: filter[has_engine1_ptc_n2] type: boolean - description: Filter reports with or without engine2_gpc_n1 in: query name: filter[has_engine2_gpc_n1] type: boolean - description: Filter reports with or without engine2_ptc_n2 in: query name: filter[has_engine2_ptc_n2] type: boolean - description: 'Sort order: flight_date, -flight_date, created_at, -created_at, updated_at, -updated_at, engine1_gpc_n1, -engine1_gpc_n1, engine1_ptc_n2, -engine1_ptc_n2, engine2_gpc_n1, -engine2_gpc_n1, engine2_ptc_n2, -engine2_ptc_n2' in: query name: sort type: string - description: Page number in: query name: page[number] type: integer - description: Page size in: query name: page[size] type: integer - description: Page number (fallback) in: query name: page type: integer - description: Page size (fallback) in: query name: size type: integer - description: Page size override in: query name: limit type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.FMReportListResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: List FM reports tags: - Flight Report /api/v1/fm-reports/get/{flight_id}: get: description: Returns a complete FM report for a flight. The persisted table keeps only the report keys; the response preloads flight, missions, flight inspection, and after-flight inspection details. It also embeds `fleet_status` (next inspection / maintenance schedules + base hours, component summary, EASA maintenance release) — a snapshot frozen when the report was created at after-flight inspection, so later complaints / maintenance changes do not alter a historical report. `fleet_status` is omitted when the helicopter has no fleet status. parameters: - description: Flight ID (UUIDv7) in: path name: flight_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.FMReportResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Get FM report by flight ID tags: - Flight Report /api/v1/fm-reports/update/{flight_id}: patch: consumes: - application/json description: Update only the engine metric fields for an existing FM report. All other FM report fields stay read-only on this endpoint. The response mirrors the GET FM report and embeds the frozen `fleet_status` snapshot (next inspection / maintenance schedules + base hours, component summary, EASA maintenance release). parameters: - description: Flight ID (UUIDv7) in: path name: flight_id required: true type: string - description: JSON:API FM report update request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.FMReportUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.FMReportResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Update FM report metrics tags: - Flight Report /api/v1/forces-present/create: post: consumes: - application/json description: Create a forces present row. parameters: - description: JSON:API forces present create request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ForcesPresentCreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ForcesPresentResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Create forces present tags: - OPC - Forces Present /api/v1/forces-present/delete/{uuid}: delete: parameters: - description: Forces Present UUID (UUIDv7) in: path name: uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.GenericDeleteResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Delete forces present tags: - OPC - Forces Present /api/v1/forces-present/get-all: get: description: 'JSON:API list with pagination, filtering and sorting. Sort values: name, -name, sortkey, -sortkey, note, -note, is_active, -is_active, created_at, -created_at, updated_at, -updated_at.' parameters: - description: Search by name/note in: query name: filter[search] type: string - description: Page number (default 1) in: query name: page[number] type: integer - description: Page size (default 20, max 100) in: query name: page[size] type: integer - description: Sort order in: query name: sort type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ForcesPresentListResponse' summary: List forces present tags: - OPC - Forces Present /api/v1/forces-present/get-all/dt: get: description: Datatable response with simple pagination params. parameters: - description: Page number (default 1) in: query name: page type: integer - description: Page size (default 20, max 100) in: query name: size type: integer - description: Page size override (same as size) in: query name: limit type: integer - description: Draw counter (optional) in: query name: draw type: integer - description: Search term in: query name: search type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ForcesPresentDataTableResponse' summary: List forces present (datatable) tags: - OPC - Forces Present /api/v1/forces-present/update/{uuid}: patch: consumes: - application/json description: Patch forces present by ID. parameters: - description: Forces Present UUID (UUIDv7) in: path name: uuid required: true type: string - description: JSON:API forces present update request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ForcesPresentUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ForcesPresentResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Update forces present (partial) tags: - OPC - Forces Present /api/v1/health-insurance-companies/create: post: consumes: - application/json description: Create a health insurance company row. parameters: - description: JSON:API health insurance company create request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HealthInsuranceCompanyCreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HealthInsuranceCompanyResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Create health insurance company tags: - Hospital - Health Insurance Companies /api/v1/health-insurance-companies/delete/{uuid}: delete: parameters: - description: Health Insurance Company UUID (UUIDv7) in: path name: uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.GenericDeleteResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Delete health insurance company tags: - Hospital - Health Insurance Companies /api/v1/health-insurance-companies/get-all: get: description: 'JSON:API list with pagination, filtering and sorting. Sort values: name, -name, sortkey, -sortkey, state, -state, address, -address, mobile_number, -mobile_number, email, -email, note, -note, is_active, -is_active, created_at, -created_at, updated_at, -updated_at.' parameters: - description: Search by name/state/address/mobile/email in: query name: filter[search] type: string - description: Page number (default 1) in: query name: page[number] type: integer - description: Page size (default 20, max 100) in: query name: page[size] type: integer - description: Sort order in: query name: sort type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HealthInsuranceCompanyListResponse' summary: List health insurance companies tags: - Hospital - Health Insurance Companies /api/v1/health-insurance-companies/get-all/dt: get: description: Datatable response with simple pagination params. parameters: - description: Page number (default 1) in: query name: page type: integer - description: Page size (default 20, max 100) in: query name: size type: integer - description: Page size override (same as size) in: query name: limit type: integer - description: Draw counter (optional) in: query name: draw type: integer - description: Search term in: query name: search type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HealthInsuranceCompanyDataTableResponse' summary: List health insurance companies (datatable) tags: - Hospital - Health Insurance Companies /api/v1/health-insurance-companies/update/{uuid}: patch: consumes: - application/json description: Patch health insurance company by ID. parameters: - description: Health Insurance Company UUID (UUIDv7) in: path name: uuid required: true type: string - description: JSON:API health insurance company update request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HealthInsuranceCompanyUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HealthInsuranceCompanyResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Update health insurance company (partial) tags: - Hospital - Health Insurance Companies /api/v1/helicopter-files/cancel-upload: post: consumes: - application/json description: |- Cancel pending upload intents from helicopter file upload flow. Bulk payload accepts one or many items. parameters: - description: Bulk helicopter file cancel upload intent request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.HelicopterFileCancelUploadBulkRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.FileManagerFileCancelUploadBulkResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Cancel helicopter file upload intent (bulk) tags: - Helicopter - Master File /api/v1/helicopter-files/create: post: consumes: - application/json description: |- Create helicopter file template record from upload intent. Section allowed values: `bfi` (Before First Flight Inspection), `fpwb` (Flight Preparation and WB), `afi` (After Last Flight Inspection). Required attributes: `section`, `helicopter_id`, `upload_intent_uuid`, `file_name`. Optional attributes: `position`, `is_required`, `folder_uuid` (if omitted, file is created in root folder). When `position` is omitted (or <= 0), backend auto-assigns next position per `helicopter_id + section`. If file name already exists in target folder, existing file is reused and attached. Supports single and bulk payload. Single payload example: `{"data":{"type":"helicopter_file_create","attributes":{"section":"bfi","position":1,"is_required":true,"helicopter_id":"019d6771-5fb5-7337-837f-bc5ed85181a1","upload_intent_uuid":"019d6d0d-2de2-7db1-80a2-2862d43af620","file_name":"A.pdf"}}}` Bulk payload example: `{"data":[{"type":"helicopter_file_create","attributes":{"section":"bfi","position":1,"is_required":true,"helicopter_id":"019d6771-5fb5-7337-837f-bc5ed85181a1","upload_intent_uuid":"019d6d0d-2de2-7db1-80a2-2862d43af620","file_name":"A.pdf"}}]}` Note: OpenAPI 2.0 cannot express object-or-array union in one schema; request schema below represents bulk envelope. parameters: - description: JSON:API helicopter file create request (single object or bulk array) in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.HelicopterFileCreateBulkRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterFileCreateBulkResponse' "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterFileResponse' "207": description: Multi-Status schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterFileCreateBulkResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Create helicopter file tags: - Helicopter - Master File /api/v1/helicopter-files/delete: delete: consumes: - application/json description: Delete helicopter file template record parameters: - description: JSON:API helicopter file delete request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.HelicopterFileDeleteRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterFileDeleteResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Delete helicopter file tags: - Helicopter - Master File /api/v1/helicopter-files/get-all: get: description: |- List helicopter file template records grouped by helicopter. Pagination is applied per helicopter group (not per file row), so one helicopter's files stay in the same page. parameters: - description: Search text in: query name: filter[search] type: string - description: Search text (fallback) in: query name: search type: string - description: Sort field in: query name: sort type: string - description: Page number in: query name: page[number] type: integer - description: Page size in: query name: page[size] type: integer - description: Page number (fallback) in: query name: page type: integer - description: Page size (fallback) in: query name: size type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterFileCollectionListResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: List helicopter files tags: - Helicopter - Master File /api/v1/helicopter-files/get/{helicopter_id}: get: description: Return helicopter file template collection for selected helicopter parameters: - description: Helicopter ID in: path name: helicopter_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterFileCollectionResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Get helicopter files by helicopter ID tags: - Helicopter - Master File /api/v1/helicopter-files/update: patch: consumes: - application/json description: |- Update a helicopter file template record. Section allowed values: `bfi` (Before First Flight Inspection), `fpwb` (Flight Preparation and WB), `afi` (After Last Flight Inspection). Optional attributes: `section`, `position`, `is_required`, `helicopter_id`, `file_name`. parameters: - description: JSON:API helicopter file update request (single object or bulk array) in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.HelicopterFileUpdateBulkRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterFileResponse' "207": description: Multi-Status schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterFileUpdateBulkResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Update helicopter file tags: - Helicopter - Master File /api/v1/helicopter-files/upload: post: consumes: - application/json description: |- Control-plane endpoint for helicopter file upload intent + presigned URL flow. Public flow: POST /api/v1/helicopter-files/upload -> PUT to presigned URL -> POST /api/v1/helicopter-files/create. Canonical type is `helicopter_file_upload`. `required_headers` must be sent exactly as returned when doing PUT to `upload_url`. Example `required_headers`: `{"content-type":"application/pdf","x-amz-acl":"private"}` Supports single and bulk payload. Single payload example: `{"data":{"type":"helicopter_file_upload","attributes":{"name":"A.pdf","content_type":"application/pdf","size_bytes":12345}}}` Bulk payload example: `{"data":[{"type":"helicopter_file_upload","attributes":{"name":"A.pdf","content_type":"application/pdf","size_bytes":12345}}]}` Note: OpenAPI 2.0 cannot express object-or-array union in one schema; request schema below represents bulk envelope. parameters: - description: Helicopter file upload intent request (single object or bulk array) in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.HelicopterFileUploadBulkRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterFileUploadIntentBulkResponse' "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterFileUploadIntentResponse' "207": description: Multi-Status schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterFileUploadIntentBulkResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Request upload intents + presigned PUT URLs (helicopter file) tags: - Helicopter - Master File /api/v1/helicopter-usage/create: post: consumes: - application/json description: Create helicopter usage counters for a helicopter. parameters: - description: JSON:API helicopter usage create request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HelicopterUsageCreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HelicopterUsageResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Create helicopter usage tags: - Helicopter - Helicopter Usage /api/v1/helicopter-usage/delete/{uuid}: delete: parameters: - description: Helicopter Usage UUID (UUIDv7) in: path name: uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.GenericDeleteResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Delete helicopter usage tags: - Helicopter - Helicopter Usage /api/v1/helicopter-usage/get-all: get: description: 'JSON:API list without pagination. Sort values: helicopter_id, -helicopter_id, total_landing, -total_landing, total_airframe_hours, -total_airframe_hours, total_airframe_cycles, -total_airframe_cycles, total_engine_1_hours, -total_engine_1_hours, total_engine_1_gpc_ng_n1, -total_engine_1_gpc_ng_n1, total_engine_1_ptc_nf_n2, -total_engine_1_ptc_nf_n2, total_engine_1_ccc, -total_engine_1_ccc, total_engine_2_hours, -total_engine_2_hours, total_engine_2_gpc_ng_n1, -total_engine_2_gpc_ng_n1, total_engine_2_ptc_nf_n2, -total_engine_2_ptc_nf_n2, total_engine_2_ccc, -total_engine_2_ccc, total_flight_report, -total_flight_report, total_hook_release, -total_hook_release, total_rotor_brake_cycle, -total_rotor_brake_cycle, created_at, -created_at, updated_at, -updated_at.' parameters: - description: Search by helicopter or usage ID in: query name: search type: string - description: Sort order in: query name: sort type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HelicopterUsageListResponse' summary: List helicopter usage tags: - Helicopter - Helicopter Usage /api/v1/helicopter-usage/get-all/dt: get: description: Datatable response with simple pagination params. parameters: - description: Page number (default 1) in: query name: page type: integer - description: Page size (default 20, max 100) in: query name: size type: integer - description: Page size override (same as size) in: query name: limit type: integer - description: Draw counter (optional) in: query name: draw type: integer - description: Search term in: query name: search type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HelicopterUsageListResponse' summary: List helicopter usage (datatable) tags: - Helicopter - Helicopter Usage /api/v1/helicopter-usage/get/{uuid}: get: parameters: - description: Helicopter Usage UUID (UUIDv7) in: path name: uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HelicopterUsageResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Get helicopter usage tags: - Helicopter - Helicopter Usage /api/v1/helicopter-usage/update/{uuid}: patch: consumes: - application/json parameters: - description: Helicopter Usage UUID (UUIDv7) in: path name: uuid required: true type: string - description: JSON:API helicopter usage update request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HelicopterUsageUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HelicopterUsageResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Update helicopter usage (partial) tags: - Helicopter - Helicopter Usage /api/v1/helicopters/{id}/reports/next-number: post: description: 'Returns report number format -NNNN (example: SN0901-0001). The identifier is used as the report-code prefix and the numeric suffix is auto-incremented by backend per helicopter.' parameters: - description: Helicopter ID (UUIDv7) in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterNextReportNumberResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Generate next helicopter report number tags: - Facility - Helicopters /api/v1/helicopters/create: post: consumes: - application/json description: Create a helicopter configuration row. parameters: - description: JSON:API Helicopter create request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.HelicopterCreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Create helicopter tags: - Facility - Helicopters /api/v1/helicopters/delete/{id}: delete: parameters: - description: Helicopter ID (UUIDv7) in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.Document' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Delete helicopter tags: - Facility - Helicopters /api/v1/helicopters/get-all: get: description: 'JSON:API list with pagination, filtering and sorting. Sort values: designation, -designation, sortkey, -sortkey.' parameters: - description: Search by designation/identifier/type in: query name: filter[search] type: string - description: 'Filter by operational status; comma-separated for multiple (e.g. available,booked). Values: available, booked, aog, mcf' in: query name: filter[status] type: string - description: Page number (default 1) in: query name: page[number] type: integer - description: Page size (default 20, max 100) in: query name: page[size] type: integer - description: Sort order in: query name: sort type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterListResponse' summary: List helicopters tags: - Facility - Helicopters /api/v1/helicopters/get-all/dt: get: description: Datatable response with simple pagination params. parameters: - description: Page number (default 1) in: query name: page type: integer - description: Page size (default 20, max 100) in: query name: size type: integer - description: Page size override (same as size) in: query name: limit type: integer - description: Draw counter (optional) in: query name: draw type: integer - description: Search term in: query name: search type: string - description: 'Filter by operational status; comma-separated for multiple (e.g. available,booked). Values: available, booked, aog, mcf' in: query name: status type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterDataTableResponse' summary: List helicopters (datatable) tags: - Facility - Helicopters /api/v1/helicopters/get/{id}: get: parameters: - description: Helicopter ID (UUIDv7) in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Get helicopter by ID tags: - Facility - Helicopters /api/v1/helicopters/update/{id}: patch: consumes: - application/json description: Patch helicopter by ID. parameters: - description: Helicopter ID (UUIDv7) in: path name: id required: true type: string - description: JSON:API Helicopter update request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.HelicopterUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.HelicopterResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Update helicopter (partial) tags: - Facility - Helicopters /api/v1/hems-operation-category/create: post: consumes: - application/json description: Create a HEMS operation category. parameters: - description: JSON:API HEMS operation category create request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationCategoryCreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationCategoryResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Create HEMS operation category tags: - Operation - Category /api/v1/hems-operation-category/delete/{uuid}: delete: parameters: - description: HEMS operation category UUID (UUIDv7) in: path name: uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.GenericDeleteResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Delete HEMS operation category tags: - Operation - Category /api/v1/hems-operation-category/get-all: get: parameters: - description: Search by name/type in: query name: filter[search] type: string - description: Page number (default 1) in: query name: page[number] type: integer - description: Page size (default 20, max 100) in: query name: page[size] type: integer - description: Sort order in: query name: sort type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationCategoryListResponse' summary: List HEMS operation categories tags: - Operation - Category /api/v1/hems-operation-category/get-all/dt: get: parameters: - description: Page number (default 1) in: query name: page type: integer - description: Page size (default 20, max 100) in: query name: size type: integer - description: Page size override (same as size) in: query name: limit type: integer - description: Draw counter (optional) in: query name: draw type: integer - description: Search term in: query name: search type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationCategoryDataTableResponse' summary: List HEMS operation categories (datatable) tags: - Operation - Category /api/v1/hems-operation-category/get/{uuid}: get: parameters: - description: HEMS operation category UUID (UUIDv7) in: path name: uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationCategoryResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Get HEMS operation category by ID tags: - Operation - Category /api/v1/hems-operation-category/update/{uuid}: patch: consumes: - application/json parameters: - description: HEMS operation category UUID (UUIDv7) in: path name: uuid required: true type: string - description: JSON:API HEMS operation category update request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationCategoryUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationCategoryResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Update HEMS operation category (partial) tags: - Operation - Category /api/v1/hems-operation/create: post: consumes: - application/json parameters: - description: JSON:API HEMS operation create request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationCreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Create HEMS operation tags: - Operation - HEMS Operation /api/v1/hems-operation/delete/{uuid}: delete: parameters: - description: HEMS operation UUID (UUIDv7) in: path name: uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.GenericDeleteResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Delete HEMS operation tags: - Operation - HEMS Operation /api/v1/hems-operation/get-all: get: parameters: - description: Search by date in: query name: filter[search] type: string - description: Page number (default 1) in: query name: page[number] type: integer - description: Page size (default 20, max 100) in: query name: page[size] type: integer - description: Sort order in: query name: sort type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationListResponse' summary: List HEMS operations tags: - Operation - HEMS Operation /api/v1/hems-operation/get-all/dt: get: parameters: - description: Page number (default 1) in: query name: page type: integer - description: Page size (default 20, max 100) in: query name: size type: integer - description: Page size override (same as size) in: query name: limit type: integer - description: Draw counter (optional) in: query name: draw type: integer - description: Search term in: query name: search type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationDataTableResponse' summary: List HEMS operations (datatable) tags: - Operation - HEMS Operation /api/v1/hems-operation/get/{uuid}: get: parameters: - description: HEMS operation UUID (UUIDv7) in: path name: uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Get HEMS operation by ID tags: - Operation - HEMS Operation /api/v1/hems-operation/update/{uuid}: patch: consumes: - application/json parameters: - description: HEMS operation UUID (UUIDv7) in: path name: uuid required: true type: string - description: JSON:API HEMS operation update request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Update HEMS operation (partial) tags: - Operation - HEMS Operation /api/v1/hems-operational-data/create: post: consumes: - application/json description: Create a HEMS operational data record. parameters: - description: JSON:API HEMS operational data create request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationalDataCreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationalDataResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Create HEMS operational data tags: - Operation - HEMS Operational Data /api/v1/hems-operational-data/delete/{uuid}: delete: parameters: - description: HEMS operational data UUID (UUIDv7) in: path name: uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.GenericDeleteResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Delete HEMS operational data tags: - Operation - HEMS Operational Data /api/v1/hems-operational-data/get-all: get: parameters: - description: Search by location/notes/additional_info/terrain_index in: query name: filter[search] type: string - description: Page number (default 1) in: query name: page[number] type: integer - description: Page size (default 20, max 100) in: query name: page[size] type: integer - description: Sort order in: query name: sort type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationalDataListResponse' summary: List HEMS operational data tags: - Operation - HEMS Operational Data /api/v1/hems-operational-data/get-all/dt: get: parameters: - description: Page number (default 1) in: query name: page type: integer - description: Page size (default 20, max 100) in: query name: size type: integer - description: Page size override (same as size) in: query name: limit type: integer - description: Draw counter (optional) in: query name: draw type: integer - description: Search term in: query name: search type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationalDataDataTableResponse' summary: List HEMS operational data (datatable) tags: - Operation - HEMS Operational Data /api/v1/hems-operational-data/get/{uuid}: get: parameters: - description: HEMS operational data UUID (UUIDv7) in: path name: uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationalDataResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Get HEMS operational data by ID tags: - Operation - HEMS Operational Data /api/v1/hems-operational-data/update/{uuid}: patch: consumes: - application/json parameters: - description: HEMS operational data UUID (UUIDv7) in: path name: uuid required: true type: string - description: JSON:API HEMS operational data update request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationalDataUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HEMSOperationalDataResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Update HEMS operational data (partial) tags: - Operation - HEMS Operational Data /api/v1/hospital/create: post: consumes: - application/json description: Create a hospital row. parameters: - description: JSON:API hospital create request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HospitalCreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HospitalResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Create hospital tags: - Hospital - Hospital /api/v1/hospital/delete/{uuid}: delete: parameters: - description: Hospital UUID (UUIDv7) in: path name: uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.GenericDeleteResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Delete hospital tags: - Hospital - Hospital /api/v1/hospital/get-all: get: description: 'JSON:API list with pagination, filtering and sorting. Sort values: name, -name, hospital_name, -hospital_name, sortkey, -sortkey, address, -address, landline_number, -landline_number, mobile_number, -mobile_number, email, -email, note, -note, is_active, -is_active, created_at, -created_at, updated_at, -updated_at.' parameters: - description: Search by hospital name/address/contact in: query name: filter[search] type: string - description: Page number (default 1) in: query name: page[number] type: integer - description: Page size (default 20, max 100) in: query name: page[size] type: integer - description: Sort order in: query name: sort type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HospitalListResponse' summary: List hospital tags: - Hospital - Hospital /api/v1/hospital/get-all/dt: get: description: Datatable response with simple pagination params. parameters: - description: Page number (default 1) in: query name: page type: integer - description: Page size (default 20, max 100) in: query name: size type: integer - description: Page size override (same as size) in: query name: limit type: integer - description: Draw counter (optional) in: query name: draw type: integer - description: Search term in: query name: search type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HospitalDataTableResponse' summary: List hospital (datatable) tags: - Hospital - Hospital /api/v1/hospital/update/{uuid}: patch: consumes: - application/json description: Patch hospital by ID. parameters: - description: Hospital UUID (UUIDv7) in: path name: uuid required: true type: string - description: JSON:API hospital update request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HospitalUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.HospitalResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Update hospital (partial) tags: - Hospital - Hospital /api/v1/icao/create: post: consumes: - application/json description: Create an ICAO row. parameters: - description: JSON:API ICAO create request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ICAOCreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ICAOResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Create ICAO tags: - Hospital - ICAO /api/v1/icao/delete/{uuid}: delete: parameters: - description: ICAO UUID (UUIDv7) in: path name: uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.GenericDeleteResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Delete ICAO tags: - Hospital - ICAO /api/v1/icao/get-all: get: description: 'JSON:API list with pagination, filtering and sorting. Sort values: icao_code, -icao_code, sortkey, -sortkey, address, -address, landline_number, -landline_number, mobile_number, -mobile_number, email, -email, note, -note, is_active, -is_active, created_at, -created_at, updated_at, -updated_at.' parameters: - description: Search by icao_code/address/contact in: query name: filter[search] type: string - description: Page number (default 1) in: query name: page[number] type: integer - description: Page size (default 20, max 100) in: query name: page[size] type: integer - description: Sort order in: query name: sort type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ICAOListResponse' summary: List ICAO tags: - Hospital - ICAO /api/v1/icao/get-all/dt: get: description: Datatable response with simple pagination params. parameters: - description: Page number (default 1) in: query name: page type: integer - description: Page size (default 20, max 100) in: query name: size type: integer - description: Page size override (same as size) in: query name: limit type: integer - description: Draw counter (optional) in: query name: draw type: integer - description: Search term in: query name: search type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ICAODataTableResponse' summary: List ICAO (datatable) tags: - Hospital - ICAO /api/v1/icao/update/{uuid}: patch: consumes: - application/json description: Patch ICAO by ID. parameters: - description: ICAO UUID (UUIDv7) in: path name: uuid required: true type: string - description: JSON:API ICAO update request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ICAOUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ICAOResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Update ICAO (partial) tags: - Hospital - ICAO /api/v1/insurance-patient-data/create: post: consumes: - application/json description: Create an InsurancePatientData record. parameters: - description: JSON:API InsurancePatientData create request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.InsurancePatientDataCreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto.InsurancePatientDataResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Create insurance patient data tags: - PatientData - InsurancePatientData /api/v1/insurance-patient-data/delete/{uuid}: delete: description: Soft delete InsurancePatientData by ID. parameters: - description: InsurancePatientData UUID (UUIDv7) in: path name: uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.GenericDeleteResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Delete insurance patient data tags: - PatientData - InsurancePatientData /api/v1/insurance-patient-data/get-all: get: description: 'JSON:API list with pagination, filtering and sorting. Sort values: created_at, -created_at, updated_at, -updated_at.' parameters: - description: Search in: query name: filter[search] type: string - description: Page number (default 1) in: query name: page[number] type: integer - description: Page size (default 20, max 100) in: query name: page[size] type: integer - description: Sort order in: query name: sort type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.InsurancePatientDataListResponse' summary: List insurance patient data tags: - PatientData - InsurancePatientData /api/v1/insurance-patient-data/get-all/dt: get: description: Datatable response with simple pagination params. parameters: - description: Page number (default 1) in: query name: page type: integer - description: Page size (default 20, max 100) in: query name: size type: integer - description: Page size override (same as size) in: query name: limit type: integer - description: Draw counter (optional) in: query name: draw type: integer - description: Search term in: query name: search type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.InsurancePatientDataDataTableResponse' summary: List insurance patient data (datatable) tags: - PatientData - InsurancePatientData /api/v1/insurance-patient-data/get/{uuid}: get: description: Get a single InsurancePatientData record by UUID. parameters: - description: InsurancePatientData UUID (UUIDv7) in: path name: uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.InsurancePatientDataResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Get insurance patient data by ID tags: - PatientData - InsurancePatientData /api/v1/insurance-patient-data/update/{uuid}: patch: consumes: - application/json description: Patch InsurancePatientData by ID. parameters: - description: InsurancePatientData UUID (UUIDv7) in: path name: uuid required: true type: string - description: JSON:API InsurancePatientData update request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.InsurancePatientDataUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.InsurancePatientDataResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Update insurance patient data (partial) tags: - PatientData - InsurancePatientData /api/v1/land/create: post: consumes: - application/json description: Create a land row. parameters: - description: JSON:API land create request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.LandCreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto.LandResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Create land tags: - Hospital - Land /api/v1/land/delete/{id}: delete: parameters: - description: Land ID (UUIDv7) in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.GenericDeleteResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Delete land tags: - Hospital - Land /api/v1/land/get-all: get: description: 'JSON:API list with pagination, filtering and sorting. Sort values: name, -name, sortkey, -sortkey, is_active, -is_active, created_at, -created_at, updated_at, -updated_at.' parameters: - description: Search by name in: query name: filter[search] type: string - description: Page number (default 1) in: query name: page[number] type: integer - description: Page size (default 20, max 100) in: query name: page[size] type: integer - description: Sort order in: query name: sort type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.LandListResponse' summary: List land tags: - Hospital - Land /api/v1/land/get-all/dt: get: description: Datatable response with simple pagination params. parameters: - description: Page number (default 1) in: query name: page type: integer - description: Page size (default 20, max 1000) in: query name: size type: integer - description: Page size override (same as size) in: query name: limit type: integer - description: Draw counter (optional) in: query name: draw type: integer - description: Search term in: query name: search type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.LandDataTableResponse' summary: List land (datatable) tags: - Hospital - Land /api/v1/land/update/{id}: patch: consumes: - application/json description: Patch land by ID. parameters: - description: Land ID (UUIDv7) in: path name: id required: true type: string - description: JSON:API land update request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.LandUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.LandResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Update land (partial) tags: - Hospital - Land /api/v1/master-settings/create: post: consumes: - application/json description: Create a master settings row. parameters: - description: JSON:API master settings create request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.MasterSettingsCreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.MasterSettingsResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Create master settings tags: - Master Settings /api/v1/master-settings/delete/{uuid}: delete: parameters: - description: Master Settings UUID (UUIDv7) in: path name: uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.Resource' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Delete master settings tags: - Master Settings /api/v1/master-settings/get: get: description: Return singleton master settings object (latest active row). produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.MasterSettingsResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Get current master settings tags: - Master Settings /api/v1/master-settings/sso/microsoft: get: description: Get Microsoft Entra SSO settings from master settings. produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.MasterSettingsMicrosoftEntraResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Get Microsoft Entra SSO settings tags: - Master Settings put: consumes: - application/json description: Create or update Microsoft Entra SSO settings as master settings. parameters: - description: JSON:API Microsoft Entra SSO upsert request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.MasterSettingsMicrosoftEntraUpsertRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.MasterSettingsMicrosoftEntraResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Upsert Microsoft Entra SSO settings tags: - Master Settings /api/v1/master-settings/update/{uuid}: patch: consumes: - application/json description: Patch master settings by ID. parameters: - description: Master Settings UUID (UUIDv7) in: path name: uuid required: true type: string - description: JSON:API master settings update request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.MasterSettingsUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.MasterSettingsResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Update master settings (partial) tags: - Master Settings /api/v1/mcf/get-by-helicopter/{helicopter_id}: get: parameters: - description: Helicopter ID (UUIDv7) in: path name: helicopter_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.MCFListResponse' summary: List MCFs for a helicopter tags: - MCF /api/v1/mcf/get/{id}: get: parameters: - description: MCF ID (UUIDv7) in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.MCFResponse' summary: Get MCF by ID tags: - MCF /api/v1/mcf/set/{helicopter_id}: post: consumes: - application/json description: Toggles and edits a helicopter's MCF. `active:true` (or omitted) ACTIVATES/EDITS it — creates the draft if none is open (201), or UPDATES the open draft with the provided check-flight fields (200; af_hours, landing_count, utc_time, date, result, notes — all optional, partial edits allowed). Finalize it via POST /mcf/sign/{id} (sign:true). `active:false` DEACTIVATES it — cancels the open (unsigned) draft ("tidak jadi") and releases the MCF status; the cancelled record stays in the list. A signed MCF is a real event and is not cancelled. parameters: - description: Helicopter ID (UUIDv7) in: path name: helicopter_id required: true type: string - description: JSON:API MCF set request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.MCFSetRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.MCFResponse' "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.MCFResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Set a helicopter's MCF Yes/No — draft work endpoint (create/update or cancel) tags: - MCF /api/v1/mcf/sign/{id}: post: consumes: - application/json description: 'Finalizes an MCF''s check-flight. `sign` (optional, default true): true FINALIZES it — af_hours, landing_count, utc_time, date, result required; "passed" clears the aircraft from MCF, "failed" keeps it grounded. false UNSIGNS it — reverts a signed MCF back to a draft (keeps the recorded data). Editing draft fields is done via /mcf/set; cancelling via /mcf/set (active:false).' parameters: - description: MCF ID (UUIDv7) in: path name: id required: true type: string - description: JSON:API MCF sign request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.MCFCompleteRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.MCFResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Sign (finalize) or unsign an MCF — toggle by MCF id tags: - MCF /api/v1/medicine-group/create: post: consumes: - application/json description: Create a medicine group row. parameters: - description: JSON:API medicine group create request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.MedicineGroupCreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto.MedicineGroupResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "503": description: Service Unavailable schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Create medicine group tags: - OPC - Medicine Group /api/v1/medicine-group/delete/{uuid}: delete: parameters: - description: Medicine Group UUID (UUIDv7) in: path name: uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.GenericDeleteResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "503": description: Service Unavailable schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Delete medicine group tags: - OPC - Medicine Group /api/v1/medicine-group/get-all: get: description: 'JSON:API list with pagination, filtering and sorting. Sort values: name, -name, created_at, -created_at, updated_at, -updated_at.' parameters: - description: Search by group name in: query name: filter[search] type: string - description: Page number (default 1) in: query name: page[number] type: integer - description: Page size (default 20, max 100) in: query name: page[size] type: integer - description: Sort order in: query name: sort type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.MedicineGroupListResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "503": description: Service Unavailable schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: List medicine groups tags: - OPC - Medicine Group /api/v1/medicine-group/get-all/dt: get: description: Datatable response with simple pagination params. parameters: - description: Page number (default 1) in: query name: page type: integer - description: Page size (default 20, max 100) in: query name: size type: integer - description: Page size override (same as size) in: query name: limit type: integer - description: Draw counter (optional) in: query name: draw type: integer - description: Search term in: query name: search type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.MedicineGroupDataTableResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "503": description: Service Unavailable schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: List medicine groups (datatable) tags: - OPC - Medicine Group /api/v1/medicine-group/update/{uuid}: patch: consumes: - application/json description: Patch medicine group by ID. parameters: - description: Medicine Group UUID (UUIDv7) in: path name: uuid required: true type: string - description: JSON:API medicine group update request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.MedicineGroupUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.MedicineGroupResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "503": description: Service Unavailable schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Update medicine group (partial) tags: - OPC - Medicine Group /api/v1/medicine/create: post: consumes: - application/json description: Create a medicine row. parameters: - description: JSON:API medicine create request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.MedicineCreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto.MedicineResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Create medicine tags: - OPC - Medicine /api/v1/medicine/delete/{uuid}: delete: parameters: - description: Medicine UUID (UUIDv7) in: path name: uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.GenericDeleteResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Delete medicine tags: - OPC - Medicine /api/v1/medicine/get-all: get: description: 'JSON:API list with pagination, filtering and sorting. Search covers name, note, pack, unit, and column. Sort values: name, -name, sortkey, -sortkey, note, -note, pack, -pack, unit, -unit, column, -column, is_active, -is_active, created_at, -created_at, updated_at, -updated_at.' parameters: - description: Search by name/note/pack/unit/column in: query name: filter[search] type: string - description: Page number (default 1) in: query name: page[number] type: integer - description: Page size (default 20, max 100) in: query name: page[size] type: integer - description: Sort order in: query name: sort type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.MedicineListResponse' summary: List medicine tags: - OPC - Medicine /api/v1/medicine/get-all/dt: get: description: Datatable response with simple pagination params. parameters: - description: Page number (default 1) in: query name: page type: integer - description: Page size (default 20, max 100) in: query name: size type: integer - description: Page size override (same as size) in: query name: limit type: integer - description: Draw counter (optional) in: query name: draw type: integer - description: Search term in: query name: search type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.MedicineDataTableResponse' summary: List medicine (datatable) tags: - OPC - Medicine /api/v1/medicine/update/{uuid}: patch: consumes: - application/json description: Patch medicine by ID. parameters: - description: Medicine UUID (UUIDv7) in: path name: uuid required: true type: string - description: JSON:API medicine update request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.MedicineUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.MedicineResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Update medicine (partial) tags: - OPC - Medicine /api/v1/mission-type/create: post: consumes: - application/json description: Create a mission category master record for use in mission flow. parameters: - description: JSON:API mission type create request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.MissionTypeCreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.MissionTypeResource' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Create mission type tags: - Flights - Mission /api/v1/mission-type/get-all: get: description: Returns all mission categories and their available subtypes. produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.MissionTypeListResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: List mission types with subtypes tags: - Flights - Mission /api/v1/mission/create: post: consumes: - application/json description: |- Create a mission and link it to a flight. `type` must be one of: `HEMS`, `CAT`, `SPO`, `NCO`. `subtype_id` is required when `type=HEMS` and must reference mission subcategory under `HEMS` category. `subtype_id` must be empty when `type` is not `HEMS`. parameters: - description: JSON:API mission create request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.MissionCreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.MissionResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "409": description: Conflict schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Create mission tags: - Flights - Mission /api/v1/mission/delete-by-id/{mission_id}: delete: description: Soft delete mission by its mission UUID. This also soft deletes flight data rows linked to the mission. parameters: - description: Mission ID (UUIDv7) in: path name: mission_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.GenericDeleteResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Delete mission by mission ID tags: - Flights - Mission /api/v1/mission/delete/{flight_id}: delete: description: Soft delete mission by linked flight ID. parameters: - description: Flight ID (UUIDv7) in: path name: flight_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.GenericDeleteResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Delete mission tags: - Flights - Mission /api/v1/mission/file/{mission_id}/{attachment_id}: delete: description: Detaches the file (by its attachment id) from the mission and deletes the attachment. parameters: - description: Mission UUID in: path name: mission_id required: true type: string - description: Attachment UUID (the file's attachment_id) in: path name: attachment_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.MissionResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Remove a file from a mission tags: - Flights - Mission /api/v1/mission/get-all: get: description: Supports `search`, `filter[search]`, `flight_id`, `sort`, `page[number]`, `page[size]`, `page`, `size`, and `limit`. parameters: - description: Search text in: query name: search type: string - description: Search text (JSON:API style) in: query name: filter[search] type: string - description: Filter by flight UUID in: query name: flight_id type: string - description: 'Filter missions by flight data status: draft, in_progress, or completed' in: query name: flight_data_status type: string - description: 'Sort field: type|-type|flight_date|-flight_date|created_at|-created_at|updated_at|-updated_at' in: query name: sort type: string - description: Page number in: query name: page[number] type: integer - description: Page size in: query name: page[size] type: integer - description: Page number (fallback) in: query name: page type: integer - description: Page size (fallback) in: query name: size type: integer - description: Page size override in: query name: limit type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.MissionListResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: List missions tags: - Flights - Mission /api/v1/mission/get-all/dt: get: description: |- Supports `search`, `filter[search]`, `date_from`, `date_to`, `mission_type`, `pilot_id`, `helicopter_id`, `sort`, `start`, `length`, `draw`, `page[number]`, `page[size]`, `page`, `size`, and `limit`. `date_from` and `date_to` filter flights by their mission date range (`YYYY-MM-DD`). `mission_type` accepts `HEMS`, `CAT`, `SPO`, or `NCO`. `pilot_id` filters missions where the pilot is assigned on the linked flight roster. `helicopter_id` filters missions by the helicopter used in the linked flight takeover. parameters: - description: Search text in: query name: search type: string - description: Search text (JSON:API style) in: query name: filter[search] type: string - description: Filter by linked flight UUID in: query name: flight_id type: string - description: Mission date lower bound (YYYY-MM-DD) in: query name: date_from type: string - description: Mission date upper bound (YYYY-MM-DD) in: query name: date_to type: string - description: 'Mission type: HEMS|CAT|SPO|NCO' in: query name: mission_type type: string - description: Pilot user UUID in: query name: pilot_id type: string - description: Helicopter UUID in: query name: helicopter_id type: string - description: 'Sort field: type|-type|flight_date|-flight_date|created_at|-created_at|updated_at|-updated_at' in: query name: sort type: string - description: DataTables start index in: query name: start type: integer - description: DataTables page size in: query name: length type: integer - description: DataTables draw counter in: query name: draw type: integer - description: Page number in: query name: page[number] type: integer - description: Page size in: query name: page[size] type: integer - description: Page number (fallback) in: query name: page type: integer - description: Page size (fallback) in: query name: size type: integer - description: Page size override in: query name: limit type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.MissionDataTableResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: List missions (datatable) tags: - Flights - Mission /api/v1/mission/get/{flight_id}: get: description: Get mission detail by linked flight ID. parameters: - description: Flight ID (UUIDv7) in: path name: flight_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.MissionResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Get mission by flight ID tags: - Flights - Mission /api/v1/mission/update/{mission_id}: patch: consumes: - application/json description: |- Update mission type/subtype/note by mission ID, and optionally attach files already uploaded via `upload-mission-file`. `type` must be one of: `HEMS`, `CAT`, `SPO`, `NCO`. `subtype_id` is required when `type=HEMS` and must reference mission subcategory under `HEMS` category. `subtype_id` must be empty when `type` is not `HEMS`. `files[]` items reference an `upload_intent_uuid` (from `upload-mission-file`) and an optional display `name`. parameters: - description: Mission ID (UUIDv7) in: path name: mission_id required: true type: string - description: JSON:API mission update request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.MissionUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.MissionResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Update mission tags: - Flights - Mission /api/v1/motor-reaction/create: post: consumes: - application/json description: Create a motor reaction row. parameters: - description: JSON:API motor reaction create request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.MotorReactionCreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto.MotorReactionResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "503": description: Service Unavailable schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Create motor reaction tags: - OPC - Motor Reaction /api/v1/motor-reaction/delete/{uuid}: delete: parameters: - description: Motor Reaction UUID (UUIDv7) in: path name: uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.GenericDeleteResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "503": description: Service Unavailable schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Delete motor reaction tags: - OPC - Motor Reaction /api/v1/motor-reaction/get-all: get: description: 'JSON:API list with pagination, filtering and sorting. Sort values: name, -name, score, -score, created_at, -created_at, updated_at, -updated_at.' parameters: - description: Search by reaction name or score in: query name: filter[search] type: string - description: Page number (default 1) in: query name: page[number] type: integer - description: Page size (default 20, max 100) in: query name: page[size] type: integer - description: Sort order in: query name: sort type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.MotorReactionListResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "503": description: Service Unavailable schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: List motor reactions tags: - OPC - Motor Reaction /api/v1/motor-reaction/get-all/dt: get: description: Datatable response with simple pagination params. parameters: - description: Page number (default 1) in: query name: page type: integer - description: Page size (default 20, max 100) in: query name: size type: integer - description: Page size override (same as size) in: query name: limit type: integer - description: Draw counter (optional) in: query name: draw type: integer - description: Search term in: query name: search type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.MotorReactionDataTableResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "503": description: Service Unavailable schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: List motor reactions (datatable) tags: - OPC - Motor Reaction /api/v1/motor-reaction/update/{uuid}: patch: consumes: - application/json description: Patch motor reaction by ID. parameters: - description: Motor Reaction UUID (UUIDv7) in: path name: uuid required: true type: string - description: JSON:API motor reaction update request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.MotorReactionUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.MotorReactionResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "503": description: Service Unavailable schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Update motor reaction (partial) tags: - OPC - Motor Reaction /api/v1/opc/create: post: consumes: - application/json description: Create an OPC row. parameters: - description: JSON:API OPC create request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.OpcCreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto.OpcResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Create opc tags: - OPC - OPC /api/v1/opc/delete/{uuid}: delete: parameters: - description: OPC UUID (UUIDv7) in: path name: uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.GenericDeleteResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Delete opc tags: - OPC - OPC /api/v1/opc/get-all: get: description: 'JSON:API list with pagination, filtering and sorting. Sort values: title, -title, sortkey, -sortkey, note, -note, is_active, -is_active, created_at, -created_at, updated_at, -updated_at.' parameters: - description: Search by title/note in: query name: filter[search] type: string - description: Page number (default 1) in: query name: page[number] type: integer - description: Page size (default 20, max 100) in: query name: page[size] type: integer - description: Sort order in: query name: sort type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.OpcListResponse' summary: List opc tags: - OPC - OPC /api/v1/opc/get-all/dt: get: description: Datatable response with simple pagination params. parameters: - description: Page number (default 1) in: query name: page type: integer - description: Page size (default 20, max 100) in: query name: size type: integer - description: Page size override (same as size) in: query name: limit type: integer - description: Draw counter (optional) in: query name: draw type: integer - description: Search term in: query name: search type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.OpcDataTableResponse' summary: List opc (datatable) tags: - OPC - OPC /api/v1/opc/update/{uuid}: patch: consumes: - application/json description: Patch opc by ID. parameters: - description: OPC UUID (UUIDv7) in: path name: uuid required: true type: string - description: JSON:API OPC update request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.OpcUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.OpcResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Update opc (partial) tags: - OPC - OPC /api/v1/patient-data/create: post: consumes: - application/json description: Create a PatientData record. parameters: - description: JSON:API PatientData create request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.PatientDataCreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto.PatientDataResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Create patient data tags: - PatientData - PatientData /api/v1/patient-data/delete/{uuid}: delete: description: Soft delete PatientData by ID. parameters: - description: PatientData UUID (UUIDv7) in: path name: uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.GenericDeleteResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Delete patient data tags: - PatientData - PatientData /api/v1/patient-data/get-all: get: description: 'JSON:API list with pagination, filtering and sorting. Sort values: family_name, -family_name, first_name, -first_name, birth_date, -birth_date, gender, -gender, created_at, -created_at, updated_at, -updated_at.' parameters: - description: Search by family_name/first_name/svnr/email/phone/street in: query name: filter[search] type: string - description: Page number (default 1) in: query name: page[number] type: integer - description: Page size (default 20, max 100) in: query name: page[size] type: integer - description: Sort order in: query name: sort type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.PatientDataListResponse' summary: List patient data tags: - PatientData - PatientData /api/v1/patient-data/get-all/dt: get: description: Datatable response with simple pagination params. parameters: - description: Page number (default 1) in: query name: page type: integer - description: Page size (default 20, max 100) in: query name: size type: integer - description: Page size override (same as size) in: query name: limit type: integer - description: Draw counter (optional) in: query name: draw type: integer - description: Search by family_name/first_name/svnr/email/phone/street in: query name: search type: string - description: Sort order in: query name: sort type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.PatientDataDataTableResponse' summary: List patient data (datatable) tags: - PatientData - PatientData /api/v1/patient-data/get/{uuid}: get: description: Get a single PatientData record by UUID. parameters: - description: PatientData UUID (UUIDv7) in: path name: uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.PatientDataResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Get patient data by ID tags: - PatientData - PatientData /api/v1/patient-data/update/{uuid}: patch: consumes: - application/json description: Patch PatientData by ID. parameters: - description: PatientData UUID (UUIDv7) in: path name: uuid required: true type: string - description: JSON:API PatientData update request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.PatientDataUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.PatientDataResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Update patient data (partial) tags: - PatientData - PatientData /api/v1/public/branding/email-logo: get: description: |- Return a stable company logo optimized for email clients like Outlook. Backend prefers managed raster thumbnail/logo and falls back to backend-generated PNG when necessary. Supports conditional requests with `If-None-Match` / `If-Modified-Since`. produces: - image/png - image/jpeg - image/gif - application/octet-stream responses: "200": description: Email-safe branding logo binary schema: type: file "304": description: Not Modified schema: type: string summary: Get email-safe branding logo tags: - Branding /api/v1/reserve-acs/create: post: consumes: - application/json description: Create reserve AC, create draft inspection, fill before + prepare inspection payload, and assign to flight. parameters: - description: Create reserve AC request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.ReserveAcCreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.ReserveAcResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Create reserve aircraft assignment tags: - Flights - Reserve AC /api/v1/reserve-acs/delete: delete: consumes: - application/json description: Delete reserve AC by body `data.id`. parameters: - description: Delete reserve AC request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.ReserveAcDeleteRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.Document' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Delete reserve AC tags: - Flights - Reserve AC /api/v1/reserve-acs/get-all: get: description: Supports `search`, `filter[search]`, `sort`, `page[number]`, `page[size]`, `page`, `size`, and `limit`. parameters: - description: Search text in: query name: search type: string - description: Search text (JSON:API style) in: query name: filter[search] type: string - description: Reserve AC UUID (exact match) in: query name: id type: string - description: Flight UUID (exact match) in: query name: flight_id type: string - description: Sort field in: query name: sort type: string - description: Page number in: query name: page[number] type: integer - description: Page size in: query name: page[size] type: integer - description: Page number (fallback) in: query name: page type: integer - description: Page size (fallback) in: query name: size type: integer - description: Page size override in: query name: limit type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.ReserveAcListResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: List reserve AC tags: - Flights - Reserve AC /api/v1/reserve-acs/get-all/dt: get: description: Datatable list scoped by auth user. Admin can see all rows; non-admin only sees reserve AC linked to own flight assignments. parameters: - description: Search text in: query name: search type: string - description: Search text (JSON:API style) in: query name: filter[search] type: string - description: Reserve AC UUID (exact match) in: query name: id type: string - description: Flight UUID (exact match) in: query name: flight_id type: string - description: Sort field in: query name: sort type: string - description: Page number (default 1) in: query name: page type: integer - description: Page size (default 20, max 100) in: query name: size type: integer - description: Page size override in: query name: limit type: integer - description: Draw counter (optional) in: query name: draw type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.ReserveAcListResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "401": description: Unauthorized schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: List reserve AC (datatable) tags: - Flights - Reserve AC /api/v1/reserve-acs/get/{uuid}: get: description: Get reserve AC detail. Path `uuid` accepts reserve_ac id, and supports fallback to flight id. parameters: - description: Reserve AC UUID or Flight UUID in: path name: uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.ReserveAcResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Get reserve AC by UUID or flight UUID tags: - Flights - Reserve AC /api/v1/reserve-acs/update: patch: consumes: - application/json description: Update reserve AC using body `data.id`. parameters: - description: Update reserve AC request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.ReserveAcUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.ReserveAcResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Update reserve AC tags: - Flights - Reserve AC /api/v1/roles/{uuid}/permissions: get: description: Returns the permissions currently assigned to the given role. Pair with /roles/permissions/get-all to pre-check a role-permission editor. parameters: - description: Role UUID (UUIDv7) in: path name: uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.PermissionListResponse' summary: List a role's assigned permissions tags: - Roles post: consumes: - application/json description: Assign one permission to a role. Idempotent if already assigned. parameters: - description: Role UUID (UUIDv7) in: path name: uuid required: true type: string - description: JSON:API role permission assign request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.RolePermissionAssignRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.RolePermissionResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Assign permission to role tags: - Roles /api/v1/roles/{uuid}/permissions/{permission_uuid}: delete: description: Remove one permission from role. parameters: - description: Role UUID (UUIDv7) in: path name: uuid required: true type: string - description: Permission UUID (UUIDv7) in: path name: permission_uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.RolePermissionResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Remove permission from role tags: - Roles /api/v1/roles/{uuid}/permissions/assign-bulk: post: consumes: - application/json description: Assign multiple permissions to role. Idempotent for duplicates/already assigned. parameters: - description: Role UUID (UUIDv7) in: path name: uuid required: true type: string - description: JSON:API role permission bulk request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.RolePermissionAssignBulkRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.RolePermissionListResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Assign permissions to role (bulk) tags: - Roles /api/v1/roles/{uuid}/permissions/remove-bulk: post: consumes: - application/json description: Remove multiple permissions from role. parameters: - description: Role UUID (UUIDv7) in: path name: uuid required: true type: string - description: JSON:API role permission bulk request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.RolePermissionRemoveBulkRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.RolePermissionListResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Remove permissions from role (bulk) tags: - Roles /api/v1/roles/create: post: consumes: - application/json description: Create a new role. Name is required and must be unique. parameters: - description: JSON:API Role create request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.RoleCreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto.RoleResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Create role tags: - Roles /api/v1/roles/delete/{uuid}: delete: parameters: - description: Role UUID (UUIDv7) in: path name: uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.GenericDeleteResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Delete role tags: - Roles /api/v1/roles/get-all: get: description: 'JSON:API list with pagination, filtering and sorting. Sort values: name, -name, created_at, -created_at, updated_at, -updated_at.' parameters: - description: Filter by name (contains) in: query name: filter[name] type: string - description: Page number (default 1) in: query name: page[number] type: integer - description: Page size (default 20, max 100) in: query name: page[size] type: integer - description: Sort order in: query name: sort type: string - description: Set to 'permissions' to embed each role's assigned permissions in: query name: include type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.RoleListResponse' summary: List roles tags: - Roles /api/v1/roles/get-all/dt: get: description: Datatable response with simple pagination params. parameters: - description: Page number (default 1) in: query name: page type: integer - description: Page size (default 20, max 100) in: query name: size type: integer - description: Page size override (same as size) in: query name: limit type: integer - description: Draw counter (optional) in: query name: draw type: integer - description: Search term in: query name: search type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.RoleDataTableResponse' summary: List roles (datatable) tags: - Roles /api/v1/roles/get/{uuid}: get: parameters: - description: Role UUID (UUIDv7) in: path name: uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.RoleResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Get role by ID tags: - Roles /api/v1/roles/permissions/{permission_uuid}: patch: consumes: - application/json description: Patch permission by ID. Currently supports updating requires_pin. parameters: - description: Permission UUID (UUIDv7) in: path name: permission_uuid required: true type: string - description: JSON:API permission update request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.PermissionUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.PermissionResource' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Update permission tags: - Roles /api/v1/roles/permissions/get-all: get: description: Returns every permission grouped by its module, ordered by the module registry. Optional filter[name] narrows by permission name/key. parameters: - description: Filter by name/key (contains) in: query name: filter[name] type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.PermissionGroupedResponse' summary: List permissions grouped by module tags: - Roles /api/v1/roles/update/{uuid}: patch: consumes: - application/json description: 'Patch role by ID. Provide at least one of: name, description. Name must be unique if provided.' parameters: - description: Role UUID (UUIDv7) in: path name: uuid required: true type: string - description: JSON:API Role update request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.RoleUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.RoleResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Update role (partial) tags: - Roles /api/v1/takeovers/create: post: consumes: - application/json description: |- Atomic create for duty roster + crews + reserve AC + pre-flight inspection + flight. The takeover inspection payload also includes fleet status files under `inspection.fleet_status_file`. Optional takeover file uploads can be included via `data.attributes.files[*]` using upload intent UUIDs. Edited template draft files created earlier can be linked by passing `data.attributes.edited_template_file_ids[*]`. parameters: - description: Create takeover request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.TakeoverCreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.TakeoverResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Create takeover in one request tags: - Flight - Takeovers /api/v1/takeovers/delete/{id}: delete: parameters: - description: Flight UUID in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: additionalProperties: true type: object "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Delete takeover by flight UUID tags: - Flight - Takeovers /api/v1/takeovers/get-all: get: description: Return composite takeover records built from flight, reserve AC, duty roster, and inspection. The inspection payload includes `before`, `prepare`, and `fleet_status_file`. produces: - application/json responses: "200": description: OK schema: additionalProperties: true type: object "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: List takeovers tags: - Flight - Takeovers /api/v1/takeovers/get/{id}: get: parameters: - description: Flight UUID in: path name: id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.TakeoverResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Get takeover by flight UUID tags: - Flight - Takeovers /api/v1/takeovers/update/{id}: patch: consumes: - application/json parameters: - description: Flight UUID in: path name: id required: true type: string - description: Update takeover request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto_request.TakeoverUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto_response.TakeoverResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_jsonapi.ErrorDocument' summary: Replace takeover by flight UUID tags: - Flight - Takeovers /api/v1/users/create: post: consumes: - application/json description: Create a new user. Email, username, first name, last name and role_id are required. Use role_ids to assign additional roles. parameters: - description: JSON:API User create request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.UserCreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto.UserResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Create user tags: - Users /api/v1/users/delete/{uuid}: delete: parameters: - description: User UUID (UUIDv7) in: path name: uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.GenericDeleteResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Delete user tags: - Users /api/v1/users/get-all: get: description: 'JSON:API list with pagination, filtering and sorting. Sort values: email, -email, first_name, -first_name, last_name, -last_name, created_at, -created_at, updated_at, -updated_at.' parameters: - description: Search by username/email/first_name/last_name (contains) in: query name: filter[search] type: string - description: Page number (default 1) in: query name: page[number] type: integer - description: Page size (default 20, max 100) in: query name: page[size] type: integer - description: Sort order in: query name: sort type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.UserListResponse' summary: List users tags: - Users /api/v1/users/get-all/dt: get: description: Datatable response with simple pagination params. parameters: - description: Page number (default 1) in: query name: page type: integer - description: Page size (default 20, max 100) in: query name: size type: integer - description: Page size override (same as size) in: query name: limit type: integer - description: Draw counter (optional) in: query name: draw type: integer - description: Search term in: query name: search type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.UserDataTableResponse' summary: List users (datatable) tags: - Users /api/v1/users/get/{uuid}: get: parameters: - description: User UUID (UUIDv7) in: path name: uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.UserResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Get user by ID tags: - Users /api/v1/users/update/{uuid}: patch: consumes: - application/json description: Patch user by ID. Provide at least one attribute to update. parameters: - description: User UUID (UUIDv7) in: path name: uuid required: true type: string - description: JSON:API User update request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.UserUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.UserResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Update user (partial) tags: - Users /api/v1/vocation/create: post: consumes: - application/json description: Create a vocation row. parameters: - description: JSON:API vocation create request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.VocationCreateRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/wucher_internal_transport_http_dto.VocationResponse' "400": description: Bad Request schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Create vocation tags: - OPC - Vocation /api/v1/vocation/delete/{uuid}: delete: parameters: - description: Vocation UUID (UUIDv7) in: path name: uuid required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.GenericDeleteResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Delete vocation tags: - OPC - Vocation /api/v1/vocation/get-all: get: description: 'JSON:API list with pagination, filtering and sorting. Sort values: name, -name, sortkey, -sortkey, note, -note, is_active, -is_active, created_at, -created_at, updated_at, -updated_at.' parameters: - description: Search by name/note in: query name: filter[search] type: string - description: Page number (default 1) in: query name: page[number] type: integer - description: Page size (default 20, max 100) in: query name: page[size] type: integer - description: Sort order in: query name: sort type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.VocationListResponse' summary: List vocation tags: - OPC - Vocation /api/v1/vocation/get-all/dt: get: description: Datatable response with simple pagination params. parameters: - description: Page number (default 1) in: query name: page type: integer - description: Page size (default 20, max 100) in: query name: size type: integer - description: Page size override (same as size) in: query name: limit type: integer - description: Draw counter (optional) in: query name: draw type: integer - description: Search term in: query name: search type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.VocationDataTableResponse' summary: List vocation (datatable) tags: - OPC - Vocation /api/v1/vocation/update/{uuid}: patch: consumes: - application/json description: Patch vocation by ID. parameters: - description: Vocation UUID (UUIDv7) in: path name: uuid required: true type: string - description: JSON:API vocation update request in: body name: request required: true schema: $ref: '#/definitions/wucher_internal_transport_http_dto.VocationUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/wucher_internal_transport_http_dto.VocationResponse' "404": description: Not Found schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' "422": description: Unprocessable Entity schema: $ref: '#/definitions/wucher_internal_transport_http_dto.ErrorResponse' summary: Update vocation (partial) tags: - OPC - Vocation swagger: "2.0" tags: - description: Corrective-action sign-off for a helicopter. After a complaint's action_taken is recorded, it is signed off here (POST /action-signoffs/sign with complaint_id); a fleet-wide sign-off (no complaint_id) is also supported. A signed sign-off is the prerequisite for creating an EASA maintenance release. name: Complaints - Sign Off