init push

This commit is contained in:
2026-07-16 22:16:45 +07:00
commit 8b068bdb10
1021 changed files with 332816 additions and 0 deletions

View File

@@ -0,0 +1,26 @@
package response
type ActionSignoffAttributes struct {
HelicopterID string `json:"helicopter_id" example:"019d6771-5fb5-7337-837f-bc5ed85181a1"`
FlightID string `json:"flight_id,omitempty" example:"019d6774-98e8-7fba-9ef4-3795c0da8a13"`
// Signed — true once checked; gates the maintenance release form.
Signed bool `json:"signed" example:"false"`
// SignedAt / SignedBy — when/who signed; empty until signed.
SignedAt *string `json:"signed_at,omitempty" example:"2026-06-16T03:04:05Z"`
SignedBy string `json:"signed_by,omitempty" example:"019d61db-53c6-7280-87ec-e65f205c6d3b"`
// SignedByName / SignedByShort — resolved display name + 3-letter short of the signer.
SignedByName *string `json:"signed_by_name,omitempty" example:"John Doe"`
SignedByShort *string `json:"signed_by_short,omitempty" example:"JDO"`
CreatedAt string `json:"created_at,omitempty" example:"2026-06-16T03:04:05Z"`
UpdatedAt string `json:"updated_at,omitempty" example:"2026-06-16T03:04:05Z"`
}
type ActionSignoffResource struct {
Type string `json:"type" example:"action_signoff"`
ID string `json:"id,omitempty" example:"019d6771-5fb5-7337-837f-bc5ed85181a1"`
Attributes ActionSignoffAttributes `json:"attributes"`
}
type ActionSignoffResponse struct {
Data ActionSignoffResource `json:"data"`
}

View File

@@ -0,0 +1,124 @@
package response
import shareddto "wucher/internal/transport/http/dto/shared"
type AirRescuerChecklistItemResource struct {
ID string `json:"id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Name string `json:"name,omitempty" example:"Oxygen supply check"`
Position int `json:"position,omitempty" example:"1"`
CreatedBy string `json:"created_by,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
CreatedAt string `json:"created_at,omitempty" example:"2026-03-12T03:04:05Z"`
UpdatedAt string `json:"updated_at,omitempty" example:"2026-03-12T03:04:05Z"`
}
type AirRescuerChecklistAttributes struct {
Bases shareddto.AirRescuerChecklistBaseInfo `json:"bases"`
ScopeCode string `json:"scope_code,omitempty" example:"TU"`
ScopeCodeDe string `json:"scope_code_de,omitempty" example:"DI"`
Title string `json:"title,omitempty" example:"Monday Checklist"`
Position int `json:"position,omitempty" example:"1"`
Items []AirRescuerChecklistItemResource `json:"items"`
CreatedBy string `json:"created_by,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
CreatedAt string `json:"created_at,omitempty" example:"2026-03-12T03:04:05Z"`
UpdatedAt string `json:"updated_at,omitempty" example:"2026-03-12T03:04:05Z"`
}
type AirRescuerChecklistResource struct {
Type string `json:"type" example:"air_rescuer_checklist"`
ID string `json:"id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Attributes AirRescuerChecklistAttributes `json:"attributes"`
}
type AirRescuerChecklistResponse struct {
Data AirRescuerChecklistResource `json:"data"`
}
type AirRescuerChecklistBulkResponse struct {
Data []AirRescuerChecklistResource `json:"data"`
}
type AirRescuerChecklistItemAttributes struct {
ChecklistID string `json:"checklist_id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Name string `json:"name,omitempty" example:"Check radio"`
Position int `json:"position,omitempty" example:"1"`
CreatedBy string `json:"created_by,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
CreatedAt string `json:"created_at,omitempty" example:"2026-03-12T03:04:05Z"`
UpdatedAt string `json:"updated_at,omitempty" example:"2026-03-12T03:04:05Z"`
}
type AirRescuerChecklistItemData struct {
Type string `json:"type" example:"air_rescuer_checklist_item"`
ID string `json:"id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Attributes AirRescuerChecklistItemAttributes `json:"attributes"`
}
type AirRescuerChecklistItemResponse struct {
Data AirRescuerChecklistItemData `json:"data"`
}
type AirRescuerChecklistItemBulkResponse struct {
Data []AirRescuerChecklistItemData `json:"data"`
}
type AirRescuerChecklistCATChecklistSummary struct {
ID string `json:"id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Title string `json:"title,omitempty" example:"Cockpit Flugretter"`
Position int `json:"position,omitempty" example:"1"`
CreatedBy string `json:"created_by,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
CreatedAt string `json:"created_at,omitempty" example:"2026-03-12T03:04:05Z"`
UpdatedAt string `json:"updated_at,omitempty" example:"2026-03-12T03:04:05Z"`
}
type AirRescuerChecklistCATGroup struct {
ScopeCode string `json:"scope_code,omitempty" example:"DA"`
ScopeCodeDe string `json:"scope_code_de,omitempty" example:"TA"`
ScopeCodeName string `json:"scope_code_name,omitempty" example:"Daily"`
ScopeCodeNameDe string `json:"scope_code_name_de,omitempty" example:"Taeglich"`
Checklists []AirRescuerChecklistCATChecklistSummary `json:"checklists"`
}
type AirRescuerChecklistTabChecklistDetail struct {
ID string `json:"id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Title string `json:"title,omitempty" example:"Monday Checklist"`
Position int `json:"position,omitempty" example:"1"`
ChecklistItems []AirRescuerChecklistItemResource `json:"checklist_items"`
CreatedBy string `json:"created_by,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
CreatedAt string `json:"created_at,omitempty" example:"2026-03-12T03:04:05Z"`
UpdatedAt string `json:"updated_at,omitempty" example:"2026-03-12T03:04:05Z"`
}
type AirRescuerChecklistTabResource struct {
ScopeCode string `json:"scope_code,omitempty" example:"DA"`
ScopeCodeDe string `json:"scope_code_de,omitempty" example:"TA"`
ScopeCodeName string `json:"scope_code_name,omitempty" example:"Daily"`
ScopeCodeNameDe string `json:"scope_code_name_de,omitempty" example:"Taeglich"`
Groups []AirRescuerChecklistCATGroup `json:"groups,omitempty"`
Checklists *[]AirRescuerChecklistTabChecklistDetail `json:"checklists,omitempty"`
}
type AirRescuerChecklistBaseGroupAttributes struct {
Bases shareddto.AirRescuerChecklistBaseInfo `json:"bases"`
Tabs []AirRescuerChecklistTabResource `json:"tabs"`
}
type AirRescuerChecklistBaseGroupResource struct {
Type string `json:"type" example:"air_rescuer_checklist_group"`
ID string `json:"id,omitempty" example:"base-018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Attributes AirRescuerChecklistBaseGroupAttributes `json:"attributes"`
}
type AirRescuerChecklistGroupedListResponse struct {
Data []AirRescuerChecklistBaseGroupResource `json:"data"`
Meta struct {
TotalBases int `json:"total_bases" example:"8"`
} `json:"meta"`
}
type AirRescuerChecklistGroupedDataTableResponse struct {
Data []AirRescuerChecklistBaseGroupResource `json:"data"`
Meta struct {
Draw int `json:"draw" example:"1"`
RecordsTotal int `json:"records_total" example:"8"`
RecordsFiltered int `json:"records_filtered" example:"8"`
} `json:"meta"`
}

View File

@@ -0,0 +1,98 @@
package response
import shareddto "wucher/internal/transport/http/dto/shared"
// ComplaintMEL groups the MEL deferral attributes. All fields are always present
// (null when not set) so the response shape is predictable for clients.
type ComplaintMEL struct {
// Severity — MEL class: 0=NON-MEL, 1=A, 2=B, 3=C, 4=D. Always set (classification is required at creation).
Severity int8 `json:"severity" example:"2" enums:"0,1,2,3,4"`
// SeverityLabel — human label of the severity (NON-MEL/A/B/C/D).
SeverityLabel *string `json:"severity_label" example:"B"`
// ClassifiedAt / ClassifiedByName / ClassifiedByShort — when/who classified the MEL.
ClassifiedAt *string `json:"classified_at" example:"2026-06-15T03:04:05Z"`
ClassifiedByName *string `json:"classified_by_name" example:"John Doe"`
ClassifiedByShort *string `json:"classified_by_short" example:"JDO"`
// Deadline — grace deadline; after this the aircraft is AOG. null for NON-MEL.
Deadline *string `json:"deadline" example:"2026-06-18T03:04:05Z"`
}
type ComplaintNSR struct {
// IsNSR — Non-Safety Release: true = aircraft released to fly despite the open defect.
IsNSR bool `json:"is_nsr" example:"false"`
// Reason — optional justification for the NSR decision.
Reason *string `json:"reason" example:"not required"`
// DecidedAt / DecidedByName / DecidedByShort — when/who decided NSR (may differ from the reporter).
DecidedAt *string `json:"decided_at" example:"2026-06-15T03:04:05Z"`
DecidedByName *string `json:"decided_by_name" example:"John Doe"`
DecidedByShort *string `json:"decided_by_short" example:"JDO"`
}
type ComplaintAttributes struct {
HelicopterID string `json:"helicopter_id" example:"019d6771-5fb5-7337-837f-bc5ed85181a1"`
FlightID string `json:"flight_id,omitempty" example:"019d6774-98e8-7fba-9ef4-3795c0da8a13"`
Description string `json:"description" example:"Engine 2 N2 vibration intermittent during cruise above 110 KIAS"`
Helicopter *shareddto.FleetStatusHelicopter `json:"helicopter,omitempty"`
ReportedBy string `json:"reported_by" example:"John Doe"`
ReportedByShort string `json:"reported_by_short,omitempty" example:"JDO"`
ReportedAt string `json:"reported_at" example:"2026-06-15T03:04:05Z"`
AircraftHoursAtReport *string `json:"aircraft_hours_at_report" example:"1245.3"`
MEL ComplaintMEL `json:"mel"`
NSR ComplaintNSR `json:"nsr"`
ActionSigned bool `json:"action_signed" example:"true"`
ActionTaken *string `json:"action_taken" example:"tightened mount"`
ActionSignedAt *string `json:"action_signed_at" example:"2026-06-15T03:04:05Z"`
ActionSignedByName *string `json:"action_signed_by_name" example:"John Doe"`
ActionSignedByShort *string `json:"action_signed_by_short" example:"JDO"`
AircraftHoursAtFix *string `json:"aircraft_hours_at_fix" example:"1250.1"`
Status string `json:"status" example:"active_mel" enums:"active_non_mel,active_mel,serviced"`
CreatedAt string `json:"created_at" example:"2026-06-15T03:04:05Z"`
UpdatedAt string `json:"updated_at" example:"2026-06-15T03:04:05Z"`
}
type ComplaintResource struct {
Type string `json:"type" example:"complaint"`
ID string `json:"id" example:"019d6771-5fb5-7337-837f-bc5ed85181a1"`
Attributes ComplaintAttributes `json:"attributes"`
}
type ComplaintResponse struct {
Data ComplaintResource `json:"data"`
}
type ComplaintListResponse struct {
Data []ComplaintResource `json:"data"`
Meta struct {
PageNumber int `json:"page_number" example:"1"`
PageSize int `json:"page_size" example:"20"`
Total int64 `json:"total" example:"1"`
} `json:"meta"`
}
type ComplaintHelicopterGroupAttributes struct {
Helicopter *shareddto.FleetStatusHelicopter `json:"helicopter"`
Complaints []ComplaintResource `json:"complaints"`
}
type ComplaintHelicopterGroupResource struct {
Type string `json:"type" example:"complaint_helicopter_group"`
Attributes ComplaintHelicopterGroupAttributes `json:"attributes"`
}
type ComplaintGroupedListResponse struct {
Data []ComplaintHelicopterGroupResource `json:"data"`
Meta struct {
PageNumber int `json:"page_number" example:"1"`
PageSize int `json:"page_size" example:"20"`
Total int64 `json:"total" example:"1"`
} `json:"meta"`
}
type ComplaintGroupedDataTableResponse struct {
Data []ComplaintHelicopterGroupResource `json:"data"`
Meta struct {
Draw int `json:"draw" example:"1"`
RecordsTotal int64 `json:"records_total" example:"1"`
RecordsFiltered int64 `json:"records_filtered" example:"1"`
} `json:"meta"`
}

View File

@@ -0,0 +1,227 @@
package response
type DutyRosterShiftTime struct {
ShiftStart string `json:"shift_start,omitempty" example:"06:00"`
ShiftEnd string `json:"shift_end,omitempty" example:"21:00"`
}
type DutyRosterShiftDate struct {
DateStart string `json:"date_start,omitempty" example:"2026-03-16"`
DateEnd string `json:"date_end,omitempty" example:"2026-03-16"`
}
type DutyRosterCrew struct {
ID string `json:"id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Name string `json:"name,omitempty" example:"Hunter Wolfgang"`
Role string `json:"role,omitempty" example:"doctor"`
MobilePhone string `json:"mobile_phone,omitempty" example:"+43-1234"`
Email string `json:"email,omitempty" example:"doctor@example.com"`
ShiftDate *DutyRosterShiftDate `json:"shift_date,omitempty"`
ShiftTime *DutyRosterShiftTime `json:"shift_time,omitempty"`
}
type DutyRosterPilotCrew struct {
ID string `json:"id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Name string `json:"name,omitempty" example:"Hunter Wolfgang"`
Role string `json:"role,omitempty" example:"pilot"`
MobilePhone string `json:"mobile_phone,omitempty" example:"+43-1234"`
Email string `json:"email,omitempty" example:"pilot@example.com"`
ShiftDate *DutyRosterShiftDate `json:"shift_date,omitempty"`
CrewType string `json:"crew_type,omitempty" example:"main"`
FlightInstructor *bool `json:"flight_instructor,omitempty"`
LineChecker *bool `json:"line_checker,omitempty"`
Supervisor *bool `json:"supervisor,omitempty"`
Examiner *bool `json:"examiner,omitempty"`
CoPilot *bool `json:"co_pilot,omitempty"`
}
type DutyRosterDetailsResponse struct {
Pilot []DutyRosterPilotCrew `json:"pilot"`
Doctor []DutyRosterCrew `json:"doctor"`
Rescuer []DutyRosterCrew `json:"rescuer"`
Helper []DutyRosterCrew `json:"helper"`
OtherPerson []DutyRosterCrew `json:"other_person"`
}
type DutyRosterBaseInfo struct {
ID string `json:"id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Type string `json:"type,omitempty" example:"hems"`
BaseName string `json:"base_name,omitempty" example:"Gallus 1 - Zurs Lech"`
BaseAbbreviation string `json:"base_abbreviation,omitempty" example:"G1"`
ShiftTime DutyRosterShiftTime `json:"shift_time,omitempty"`
}
type DutyRosterHelicopterSummary struct {
ID string `json:"id" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Designation string `json:"designation" example:"OE-XHZ"`
Identifier string `json:"identifier" example:"1234"`
Type string `json:"type" example:"EC-135"`
}
type DutyRosterAttributes struct {
Bases DutyRosterBaseInfo `json:"bases"`
FlightID string `json:"flight_id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Helicopter DutyRosterHelicopterSummary `json:"helicopter"`
DutyDate string `json:"duty_date,omitempty" example:"2026-03-16"`
ShiftTime DutyRosterShiftTime `json:"shift_time"`
Detail DutyRosterDetailsResponse `json:"roster_detail"`
CreatedBy string `json:"created_by,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
CreatedAt string `json:"created_at,omitempty" example:"2026-03-12T03:04:05Z"`
UpdatedAt string `json:"updated_at,omitempty" example:"2026-03-12T03:04:05Z"`
}
type DutyRosterResource struct {
Type string `json:"type" example:"duty_roster"`
ID string `json:"id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Attributes DutyRosterAttributes `json:"attributes"`
}
type DutyRosterResponse struct {
Data DutyRosterResource `json:"data"`
}
type DutyRosterListResponse struct {
Data []DutyRosterResource `json:"data"`
Meta struct {
Total int `json:"total" example:"31"`
} `json:"meta"`
}
type DutyRosterGetAllMeta struct {
PageNumber int `json:"page_number"`
PageSize int `json:"page_size"`
RecordsTotal int `json:"records_total"`
RecordsFiltered int `json:"records_filtered"`
From string `json:"from"`
To string `json:"to"`
Timezone string `json:"timezone"`
Total int `json:"total"`
}
type DutyRosterGetAllData struct {
HEMS []DutyRosterBaseGroupResource `json:"hems_base"`
Base []DutyRosterBaseGroupResource `json:"base"`
}
type DutyRosterGetAllResponse struct {
Data DutyRosterGetAllData `json:"data"`
Meta DutyRosterGetAllMeta `json:"meta"`
}
type DutyRosterAnyResource struct {
Type string `json:"type"`
ID string `json:"id,omitempty"`
Attributes map[string]any `json:"attributes"`
}
type DutyRosterAnyResponse struct {
Data DutyRosterAnyResource `json:"data"`
}
type DutyRosterAnyListResponse struct {
Data []DutyRosterAnyResource `json:"data"`
Meta struct {
Total int `json:"total" example:"31"`
} `json:"meta"`
}
type DutyRosterAnyDeleteResponse struct {
Data DutyRosterAnyDeleteResource `json:"data"`
}
type DutyRosterAnyDeleteResource struct {
Type string `json:"type" example:"duty_roster_delete"`
Attributes DutyRosterAnyDeleteAttributes `json:"attributes"`
}
type DutyRosterAnyDeleteAttributes struct {
Deleted bool `json:"deleted" example:"true"`
ID string `json:"id" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Base DutyRosterBaseInfo `json:"base"`
}
type DutyRosterUnifiedDataTableResponse struct {
Data DutyRosterGetAllData `json:"data"`
Meta DutyRosterUnifiedDataTableMeta `json:"meta"`
}
type DutyRosterUnifiedDataTableMeta struct {
Draw int `json:"draw" example:"1"`
RecordsTotal int `json:"records_total" example:"20"`
RecordsFiltered int `json:"records_filtered" example:"20"`
PageNumber int `json:"page_number" example:"1"`
PageSize int `json:"page_size" example:"20"`
From string `json:"from" example:"2026-03-01"`
To string `json:"to" example:"2026-03-31"`
Timezone string `json:"timezone" example:"UTC"`
Total int `json:"total" example:"20"`
TotalGroups int `json:"total_groups" example:"20"`
TotalRosters int `json:"total_rosters" example:"45"`
NonEmptyGroups int `json:"non_empty_groups" example:"18"`
}
type DutyRosterGroupRoster struct {
ID string `json:"id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
FlightID string `json:"flight_id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
DutyDate string `json:"duty_date,omitempty" example:"2026-03-16"`
ShiftTime DutyRosterShiftTime `json:"shift_time"`
Helicopter DutyRosterHelicopterSummary `json:"helicopter"`
Detail DutyRosterDetailsResponse `json:"roster_detail"`
CreatedBy string `json:"created_by,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
CreatedAt string `json:"created_at,omitempty" example:"2026-03-12T03:04:05Z"`
UpdatedAt string `json:"updated_at,omitempty" example:"2026-03-12T03:04:05Z"`
}
type DutyRosterBaseGroupAttributes struct {
Bases DutyRosterBaseInfo `json:"bases"`
Rosters []DutyRosterGroupRoster `json:"rosters"`
}
type DutyRosterBaseGroupResource struct {
Type string `json:"type" example:"hems_base_roster_group"`
Attributes DutyRosterBaseGroupAttributes `json:"attributes"`
}
type DutyRosterGroupedListResponse struct {
Data []DutyRosterBaseGroupResource `json:"data"`
Meta struct {
From string `json:"from,omitempty" example:"2026-03-16"`
To string `json:"to,omitempty" example:"2026-04-15"`
TotalBases int `json:"total_bases" example:"8"`
} `json:"meta"`
}
type DutyRosterGroupedDataTableResponse struct {
Data []DutyRosterBaseGroupResource `json:"data"`
Meta struct {
Draw int `json:"draw" example:"1"`
RecordsTotal int `json:"records_total" example:"8"`
RecordsFiltered int `json:"records_filtered" example:"8"`
} `json:"meta"`
}
type DutyRosterDeletedCrewItem struct {
ID string `json:"id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
RosterID string `json:"roster_id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
UserID string `json:"user_id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Name string `json:"name,omitempty" example:"Pilot One"`
RoleCode string `json:"role_code,omitempty" example:"pilot"`
CrewType string `json:"crew_type,omitempty" example:"main"`
DateStart string `json:"date_start,omitempty" example:"2026-03-20"`
DateEnd string `json:"date_end,omitempty" example:"2026-03-22"`
}
type DutyRosterCrewDeleteAttributes struct {
Deleted bool `json:"deleted" example:"true"`
DeletedCount int `json:"deleted_count" example:"1"`
DeletedItems []DutyRosterDeletedCrewItem `json:"deleted_items"`
}
type DutyRosterCrewDeleteResource struct {
Type string `json:"type" example:"duty_roster_crew_delete"`
Attributes DutyRosterCrewDeleteAttributes `json:"attributes"`
}
type DutyRosterCrewDeleteResponse struct {
Data DutyRosterCrewDeleteResource `json:"data"`
}

View File

@@ -0,0 +1,55 @@
package response
type EASAReleaseAttributes struct {
HelicopterID string `json:"helicopter_id" example:"019d6771-5fb5-7337-837f-bc5ed85181a1"`
ComplaintID string `json:"complaint_id,omitempty" example:"019d6774-1111-7fba-9ef4-3795c0da8a13"`
FlightID string `json:"flight_id,omitempty" example:"019d6774-98e8-7fba-9ef4-3795c0da8a13"`
EASADate *string `json:"easa_date,omitempty" example:"2026-06-16"`
EASAACHours *string `json:"easa_ac_hours,omitempty" example:"1245.3"`
EASALocation *string `json:"easa_location,omitempty" example:"LOWI"`
EASAWONo *string `json:"easa_wo_no,omitempty" example:"WO-2026-001"`
EASAMaintManualRevAirframe *string `json:"easa_maint_manual_rev_airframe,omitempty" example:"Rev 12"`
EASAMaintManualRevEngine *string `json:"easa_maint_manual_rev_engine,omitempty" example:"Rev 8"`
// EASASignerID — contact id (UUIDv7) of the signer/technician.
EASASignerID *string `json:"easa_signer_id,omitempty" example:"019d61db-53c6-7280-87ec-e65f205c6d3b"`
// EASASignerName / EASASignerShort — resolved display name + 3-letter short of the signer contact.
EASASignerName *string `json:"easa_signer_name,omitempty" example:"John Doe"`
EASASignerShort *string `json:"easa_signer_short,omitempty" example:"JDO"`
EASAPermitNo *string `json:"easa_permit_no,omitempty" example:"145.A.50"`
// IsSigned — true once the release is signed (Release to Service); then the complaint becomes fixed.
IsSigned bool `json:"is_signed" example:"false"`
// SignedAt / SignedBy — when/who signed; empty until signed.
SignedAt *string `json:"signed_at,omitempty" example:"2026-06-16T03:04:05Z"`
SignedBy string `json:"signed_by,omitempty" example:"019d61db-53c6-7280-87ec-e65f205c6d3b"`
// MissingSignFields — required fields still empty; must all be filled before it can be signed.
MissingSignFields []string `json:"missing_sign_fields,omitempty"`
CreatedAt string `json:"created_at" example:"2026-06-16T03:04:05Z"`
UpdatedAt string `json:"updated_at" example:"2026-06-16T03:04:05Z"`
}
type EASAReleaseResource struct {
Type string `json:"type" example:"easa_release"`
ID string `json:"id" example:"019d6771-5fb5-7337-837f-bc5ed85181a1"`
Attributes EASAReleaseAttributes `json:"attributes"`
}
type EASAReleaseResponse struct {
Data EASAReleaseResource `json:"data"`
}
// EASAReleaseDeleteResponse is the ack returned when an EASA release is voided/deleted.
type EASAReleaseDeleteResponse struct {
Data struct {
Type string `json:"type" example:"easa_release_delete"`
Attributes struct {
Deleted bool `json:"deleted" example:"true"`
} `json:"attributes"`
} `json:"data"`
}
type EASAReleaseListResponse struct {
Data []EASAReleaseResource `json:"data"`
Meta struct {
Total int64 `json:"total" example:"1"`
} `json:"meta"`
}

View File

@@ -0,0 +1,85 @@
package response
type FileManagerActionLocation struct {
FolderID string `json:"folder_id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
}
type FileManagerActionResultAttributes struct {
Status string `json:"status" example:"trashed"`
Location *FileManagerActionLocation `json:"location,omitempty"`
}
type FileManagerActionResultResource struct {
Type string `json:"type" example:"file_manager_delete_result"`
ID string `json:"id" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Attributes FileManagerActionResultAttributes `json:"attributes"`
}
type FileManagerActionResultResponse struct {
Data FileManagerActionResultResource `json:"data"`
}
type FileManagerMoveNodeResultAttributes struct {
NodeType string `json:"node_type" example:"folder"`
Status string `json:"status" example:"moved"`
Location *FileManagerActionLocation `json:"location,omitempty"`
}
type FileManagerMoveNodeResultResource struct {
Type string `json:"type" example:"file_manager_move_result"`
ID string `json:"id" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Attributes FileManagerMoveNodeResultAttributes `json:"attributes"`
}
type FileManagerActionBulkError struct {
Status int `json:"status" example:"422"`
Code string `json:"code,omitempty" example:"FILE_MANAGER_VALIDATION_FAILED"`
ErrorCode string `json:"error_code,omitempty" example:"4222111"`
Title string `json:"title" example:"Validation error"`
Detail string `json:"detail" example:"duplicate name in target folder"`
}
type FileManagerMoveNodeBulkItem struct {
Index int `json:"index" example:"0"`
Success bool `json:"success" example:"true"`
Resource *FileManagerMoveNodeResultResource `json:"resource,omitempty"`
Error *FileManagerActionBulkError `json:"error,omitempty"`
}
type FileManagerMoveNodeBulkResponse struct {
Data []FileManagerMoveNodeBulkItem `json:"data"`
Meta struct {
Total int `json:"total" example:"3"`
Success int `json:"success" example:"2"`
Failed int `json:"failed" example:"1"`
PartialSuccess bool `json:"partial_success" example:"true"`
} `json:"meta"`
}
type FileManagerPurgeNodeResultAttributes struct {
NodeType string `json:"node_type" example:"folder"`
Status string `json:"status" example:"purged"`
}
type FileManagerPurgeNodeResultResource struct {
Type string `json:"type" example:"file_manager_purge_result"`
ID string `json:"id" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Attributes FileManagerPurgeNodeResultAttributes `json:"attributes"`
}
type FileManagerPurgeNodeBulkItem struct {
Index int `json:"index" example:"0"`
Success bool `json:"success" example:"true"`
Resource *FileManagerPurgeNodeResultResource `json:"resource,omitempty"`
Error *FileManagerActionBulkError `json:"error,omitempty"`
}
type FileManagerPurgeNodeBulkResponse struct {
Data []FileManagerPurgeNodeBulkItem `json:"data"`
Meta struct {
Total int `json:"total" example:"3"`
Success int `json:"success" example:"2"`
Failed int `json:"failed" example:"1"`
PartialSuccess bool `json:"partial_success" example:"true"`
} `json:"meta"`
}

View File

@@ -0,0 +1,22 @@
package response
import shareddto "wucher/internal/transport/http/dto/shared"
type FileManagerAttachmentResource struct {
Type string `json:"type" example:"file_manager_attachment"`
ID string `json:"id" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Attributes shareddto.FileManagerAttachmentAttributes `json:"attributes"`
}
type FileManagerAttachmentResponse struct {
Data FileManagerAttachmentResource `json:"data"`
}
type FileManagerAttachmentListResponse struct {
Data []FileManagerAttachmentResource `json:"data"`
Meta struct {
PageNumber int `json:"page_number" example:"1"`
PageSize int `json:"page_size" example:"20"`
Total int64 `json:"total" example:"120"`
} `json:"meta"`
}

View File

@@ -0,0 +1,10 @@
package response
type FileManagerFileUpdatedSSEPayload struct {
FileID string `json:"file_id"`
Status string `json:"status"`
FolderID *string `json:"folder_id"`
Name string `json:"name"`
MimeType string `json:"mime_type"`
UpdatedAt string `json:"updated_at"`
}

View File

@@ -0,0 +1,145 @@
package response
import shareddto "wucher/internal/transport/http/dto/shared"
type FileManagerFileResource struct {
Type string `json:"type" example:"file_manager_file"`
ID string `json:"id" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Attributes shareddto.FileManagerFileAttributes `json:"attributes"`
}
type FileManagerFileListResource struct {
Type string `json:"type" example:"file_manager_file"`
ID string `json:"id" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Attributes shareddto.FileManagerFileListAttributes `json:"attributes"`
}
type FileManagerFileResponse struct {
Data struct {
Type string `json:"type" example:"file_manager_file"`
ID string `json:"id" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Attributes shareddto.FileManagerFileAttributes `json:"attributes"`
} `json:"data"`
}
type FileManagerFileDetailResource struct {
Type string `json:"type" example:"file_manager_file"`
ID string `json:"id" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Attributes shareddto.FileManagerFileDetailAttributes `json:"attributes"`
}
type FileManagerFileDetailResponse struct {
Data FileManagerFileDetailResource `json:"data"`
}
type FileManagerFileListResponse struct {
Data []FileManagerFileListResource `json:"data"`
Meta struct {
PageNumber int `json:"page_number" example:"1"`
PageSize int `json:"page_size" example:"20"`
Total int64 `json:"total" example:"120"`
} `json:"meta"`
}
type FileManagerFileDownloadURLResponse struct {
Data struct {
Type string `json:"type" example:"file_manager_file_download"`
ID string `json:"id" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Attributes shareddto.FileManagerFileDownloadAttributes `json:"attributes"`
} `json:"data"`
}
type FileManagerFileUploadIntentResponse struct {
Data struct {
Type string `json:"type" example:"file_manager_file_upload_intent"`
ID string `json:"id" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Attributes shareddto.FileManagerFileUploadIntentAttributes `json:"attributes"`
} `json:"data"`
}
type FileManagerFileUploadIntentResource struct {
Type string `json:"type" example:"file_manager_file_upload_intent"`
ID string `json:"id" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Attributes shareddto.FileManagerFileUploadIntentAttributes `json:"attributes"`
}
type FileManagerFileWOPISessionData struct {
FileID string `json:"file_id" example:"019f0386-0a00-7a4a-a2d8-30afc0e0c3ad"`
CollaboraAction string `json:"collabora_action" example:"https://collabora.example.com/browser/123?WOPISrc=..."`
AccessToken string `json:"access_token" example:"eyJhbGciOiJIUzI1NiIs..."`
// AccessTokenTTL is the access token's absolute expiry time, in epoch
// milliseconds (equal to the JWT exp claim), as required by WOPI/Collabora.
AccessTokenTTL int64 `json:"access_token_ttl" example:"1782971996000"`
}
type FileManagerFileWOPISessionResponse struct {
Data FileManagerFileWOPISessionData `json:"data"`
}
type FileManagerFileBulkError struct {
Status int `json:"status" example:"422"`
Code string `json:"code,omitempty" example:"FILE_MANAGER_VALIDATION_FAILED"`
ErrorCode string `json:"error_code,omitempty" example:"4222111"`
Title string `json:"title" example:"Validation error"`
Detail string `json:"detail" example:"duplicate name in target folder"`
}
type FileManagerFileBulkItem struct {
Index int `json:"index" example:"0"`
Success bool `json:"success" example:"true"`
Message string `json:"message,omitempty" example:"created"`
Resource *FileManagerFileResource `json:"resource,omitempty"`
Error *FileManagerFileBulkError `json:"error,omitempty"`
}
type FileManagerFileBulkResponse struct {
Data []FileManagerFileBulkItem `json:"data"`
Meta struct {
Total int `json:"total" example:"3"`
Success int `json:"success" example:"2"`
Failed int `json:"failed" example:"1"`
PartialSuccess bool `json:"partial_success" example:"true"`
} `json:"meta"`
}
type FileManagerFileUploadIntentBulkItem struct {
Index int `json:"index" example:"0"`
Success bool `json:"success" example:"true"`
Resource *FileManagerFileUploadIntentResource `json:"resource,omitempty"`
Error *FileManagerFileBulkError `json:"error,omitempty"`
}
type FileManagerFileUploadIntentBulkResponse struct {
Data []FileManagerFileUploadIntentBulkItem `json:"data"`
Meta struct {
Total int `json:"total" example:"3"`
Success int `json:"success" example:"2"`
Failed int `json:"failed" example:"1"`
PartialSuccess bool `json:"partial_success" example:"true"`
} `json:"meta"`
}
type FileManagerFileCancelUploadResource struct {
Type string `json:"type" example:"file_manager_file_cancel_upload_result"`
ID string `json:"id" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Attributes struct {
Status string `json:"status" example:"canceled"`
} `json:"attributes"`
}
type FileManagerFileCancelUploadBulkItem struct {
Index int `json:"index" example:"0"`
Success bool `json:"success" example:"true"`
Resource *FileManagerFileCancelUploadResource `json:"resource,omitempty"`
Error *FileManagerFileBulkError `json:"error,omitempty"`
}
type FileManagerFileCancelUploadBulkResponse struct {
Data []FileManagerFileCancelUploadBulkItem `json:"data"`
Meta struct {
Total int `json:"total" example:"3"`
Success int `json:"success" example:"2"`
Failed int `json:"failed" example:"1"`
PartialSuccess bool `json:"partial_success" example:"true"`
} `json:"meta"`
}

View File

@@ -0,0 +1,99 @@
package response
import shareddto "wucher/internal/transport/http/dto/shared"
type FileManagerFolderResource struct {
Type string `json:"type" example:"file_manager_folder"`
ID string `json:"id" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Attributes shareddto.FileManagerFolderAttributes `json:"attributes"`
}
type FileManagerFolderResponse struct {
Data FileManagerFolderResource `json:"data"`
}
type FileManagerFolderDetailResource struct {
Type string `json:"type" example:"file_manager_folder"`
ID string `json:"id" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Attributes shareddto.FileManagerFolderDetailAttributes `json:"attributes"`
}
type FileManagerFolderDetailResponse struct {
Data FileManagerFolderDetailResource `json:"data"`
}
type FileManagerFolderListResponse struct {
Data []FileManagerFolderResource `json:"data"`
Meta struct {
PageNumber int `json:"page_number" example:"1"`
PageSize int `json:"page_size" example:"20"`
Total int64 `json:"total" example:"120"`
} `json:"meta"`
}
type FileManagerNodeAttributes struct {
NodeType string `json:"node_type" example:"folder"`
ParentID *string `json:"parent_id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Name string `json:"name" example:"operations"`
Extension string `json:"extension,omitempty" example:"pdf"`
SizeBytes int64 `json:"size_bytes,omitempty" example:"1024"`
MimeType string `json:"mime_type,omitempty" example:"application/pdf"`
DownloadURL string `json:"download_url,omitempty" example:"https://s3.localhost.localstack.cloud:4566/wucher-file-dev/files/2026/04/05/policy.pdf?X-Amz-Signature=..."`
Status string `json:"status" example:"ready"`
PathCache string `json:"path_cache,omitempty" example:"/root/operations"`
CreatedAt string `json:"created_at,omitempty" example:"2026-03-12T03:04:05Z"`
UpdatedAt string `json:"updated_at,omitempty" example:"2026-03-12T03:04:05Z"`
}
type FileManagerNodeResource struct {
Type string `json:"type" example:"file_manager_node"`
ID string `json:"id" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Attributes FileManagerNodeAttributes `json:"attributes"`
}
type FileManagerNodeListResponse struct {
Data []FileManagerNodeResource `json:"data"`
Meta struct {
ParentUUID *string `json:"parent_uuid,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Breadcrumb []FileManagerBreadcrumbItem `json:"breadcrumb,omitempty"`
IsRoot bool `json:"is_root" example:"true"`
Folders int `json:"folders" example:"4"`
Files int `json:"files" example:"8"`
Total int `json:"total" example:"12"`
} `json:"meta"`
}
type FileManagerBreadcrumbItem struct {
ID string `json:"id" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Name string `json:"name" example:"operations"`
}
type FileManagerTrashNodeAttributes struct {
NodeType string `json:"node_type" example:"folder"`
Name string `json:"name" example:"Documents"`
Extension string `json:"extension,omitempty" example:"pdf"`
SizeBytes int64 `json:"size_bytes,omitempty" example:"123456"`
MimeType string `json:"mime_type,omitempty" example:"application/pdf"`
DownloadURL string `json:"download_url,omitempty" example:"https://s3.localhost.localstack.cloud:4566/wucher-file-dev/files/2026/04/05/policy.pdf?X-Amz-Signature=..."`
PathCache string `json:"path_cache,omitempty" example:"/Documents"`
TrashedAt string `json:"trashed_at" example:"2026-04-01T10:00:00Z"`
CreatedAt string `json:"created_at,omitempty" example:"2026-03-31T08:52:03Z"`
UpdatedAt string `json:"updated_at,omitempty" example:"2026-03-31T08:52:03Z"`
}
type FileManagerTrashNodeResource struct {
Type string `json:"type" example:"file_manager_trash_node"`
ID string `json:"id" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Attributes FileManagerTrashNodeAttributes `json:"attributes"`
}
type FileManagerTrashListResponse struct {
Data []FileManagerTrashNodeResource `json:"data"`
Meta struct {
PageNumber int `json:"page_number" example:"1"`
PageSize int `json:"page_size" example:"20"`
Total int `json:"total" example:"120"`
Folders int `json:"folders" example:"50"`
Files int `json:"files" example:"70"`
} `json:"meta"`
}

View File

@@ -0,0 +1,22 @@
package response
// FleetHistoryEntry is one event in a helicopter's unified timeline (complaint /
// MEL / NSR / action / MCF / EASA / AOG events plus maintenance servicing).
type FleetHistoryEntry struct {
At string `json:"at" example:"2026-06-17T10:15:00Z"`
EntityType string `json:"entity_type" example:"easa_release"`
EntityID string `json:"entity_id,omitempty" example:"019d6771-5fb5-7337-837f-bc5ed85181a1"`
Action string `json:"action" example:"easa_signed"`
Message string `json:"message" example:"Release to Service (EASA signed)"`
Actor string `json:"actor,omitempty" example:"019e91e6-2908-7f37-93e6-015ed1b7587d"`
ActorName string `json:"actor_name,omitempty" example:"John Doe"`
}
type FleetHistoryListResponse struct {
Data []FleetHistoryEntry `json:"data"`
Meta struct {
PageNumber int `json:"page_number" example:"1"`
PageSize int `json:"page_size" example:"20"`
Total int64 `json:"total" example:"1"`
} `json:"meta"`
}

View File

@@ -0,0 +1,107 @@
package response
import shareddto "wucher/internal/transport/http/dto/shared"
type FleetStatusAttributes struct {
Helicopter *shareddto.FleetStatusHelicopter `json:"helicopter,omitempty"`
Status string `json:"status" example:"active" enums:"active,serviced"`
ServicedAt string `json:"serviced_at,omitempty" example:"2026-05-29T07:43:06Z"`
MaintenanceSchedules []shareddto.MaintenanceScheduleAttributes `json:"maintenance_schedules"`
Files []FleetStatusFile `json:"files"`
Summary shareddto.FleetStatusSummary `json:"summary"`
MCF *shareddto.FleetStatusMCF `json:"mcf,omitempty"`
Complaints []shareddto.FleetStatusComplaint `json:"complaints,omitempty"`
EASARelease *shareddto.FleetStatusEASARelease `json:"easa_release,omitempty"`
CreatedAt string `json:"created_at,omitempty" example:"2026-05-29T07:43:06Z"`
CreatedBy string `json:"created_by,omitempty" example:"John Doe"`
UpdatedAt string `json:"updated_at,omitempty" example:"2026-05-29T07:43:06Z"`
UpdatedBy string `json:"updated_by,omitempty" example:"John Doe"`
}
type FleetStatusFile struct {
ID string `json:"id,omitempty" example:"019d6773-ccca-71dd-b9c7-8e6f531deb90"`
FileAttachmentID string `json:"file_attachment_id" example:"019d7000-aaaa-7bbb-8ccc-111111111111"`
Category string `json:"category" example:"wb"`
IsMandatory bool `json:"is_mandatory" example:"true"`
Name string `json:"name,omitempty" example:"weight_balance.pdf"`
DownloadURL string `json:"download_url,omitempty" example:"https://storage.example.com/fleet/wb.pdf?X-Amz-Signature=abc123"`
ThumbnailDownloadURL string `json:"thumbnail_download_url,omitempty" example:"https://storage.example.com/fleet/wb.thumb.jpg?X-Amz-Signature=abc123"`
SizeBytes *int64 `json:"size_bytes,omitempty" example:"1024000"`
}
type FleetStatusResource struct {
Type string `json:"type" example:"fleet_status"`
ID string `json:"id" example:"019d6773-ccca-71dd-b9c7-8e6f531deb90"`
Attributes FleetStatusAttributes `json:"attributes"`
}
type FleetStatusResponse struct {
Data FleetStatusResource `json:"data"`
}
type FleetStatusListResponse struct {
Data []FleetStatusResource `json:"data"`
Meta struct {
PageNumber int `json:"page_number" example:"1"`
PageSize int `json:"page_size" example:"20"`
Total int64 `json:"total" example:"100"`
} `json:"meta"`
}
type FleetStatusDataTableResponse struct {
Data []FleetStatusResource `json:"data"`
Meta struct {
Draw int `json:"draw" example:"1"`
RecordsTotal int64 `json:"records_total" example:"100"`
RecordsFiltered int64 `json:"records_filtered" example:"20"`
} `json:"meta"`
}
// FleetStatusDeleteResponse is the ack returned when a fleet status is deleted.
type FleetStatusDeleteResponse struct {
Data struct {
Type string `json:"type" example:"fleet_status_delete"`
Attributes struct {
Deleted bool `json:"deleted" example:"true"`
} `json:"attributes"`
} `json:"data"`
}
// FleetStatusMarkServicedResponse is the ack returned when a fleet status is marked serviced.
type FleetStatusMarkServicedResponse struct {
Data struct {
Type string `json:"type" example:"fleet_status_mark_serviced"`
Attributes struct {
Serviced bool `json:"serviced" example:"true"`
} `json:"attributes"`
} `json:"data"`
}
type FleetStatusServiceLogAttributes struct {
FleetStatusID string `json:"fleet_status_id" example:"019d6773-ccca-71dd-b9c7-8e6f531deb90"`
HelicopterID string `json:"helicopter_id" example:"019d6771-5fb5-7337-837f-bc5ed85181a1"`
Helicopter *shareddto.FleetStatusHelicopter `json:"helicopter,omitempty"`
FleetStatusStatus string `json:"fleet_status_status,omitempty" example:"serviced"`
InspectionType string `json:"inspection_type" example:"A/F"`
Type string `json:"type" example:"100H"`
Due string `json:"due" example:"1200 FH"`
Ext string `json:"ext" example:"1300 FH"`
ServicedAt string `json:"serviced_at" example:"2026-05-29T07:43:06Z"`
CreatedAt string `json:"created_at" example:"2026-05-29T07:43:06Z"`
CreatedBy string `json:"created_by" example:"John Doe"`
}
type FleetStatusServiceLogResource struct {
Type string `json:"type" example:"fleet_status_service_log"`
ID string `json:"id" example:"019d6773-ccca-71dd-b9c7-8e6f531deb90"`
Attributes FleetStatusServiceLogAttributes `json:"attributes"`
}
type FleetStatusServiceLogListResponse struct {
Data []FleetStatusServiceLogResource `json:"data"`
Meta struct {
PageNumber int `json:"page_number" example:"1"`
PageSize int `json:"page_size" example:"20"`
Total int64 `json:"total" example:"100"`
} `json:"meta"`
}

View File

@@ -0,0 +1,139 @@
package response
type FlightDataAttributes struct {
Status string `json:"status" example:"in_progress"`
Mission *FlightDataMissionRef `json:"mission,omitempty"`
RosterDetails *TakeoverDutyRosterDetailsResponse `json:"roster_details,omitempty"`
HESLO *FlightDataSPOHESLODetails `json:"heslo,omitempty" extensions:"x-note=Only returned for SPO missions"`
Logging *FlightDataSPOLoggingDetails `json:"logging,omitempty" extensions:"x-note=Only returned for SPO missions"`
HEC *FlightDataSPOHECDetails `json:"hec,omitempty" extensions:"x-note=Only returned for SPO missions"`
CoPilot *FlightDataCoPilotRef `json:"co_pilot,omitempty"`
From *FlightDataLocationRef `json:"from,omitempty"`
To *FlightDataLocationRef `json:"to,omitempty"`
FlightTakeOff string `json:"flight_take_off,omitempty" example:"2026-04-20T08:00:00Z"`
FlightLanding string `json:"flight_landing,omitempty" example:"2026-04-20T09:15:00Z"`
FlightDuration int64 `json:"flight_duration_seconds" example:"4500"`
FlightRED int64 `json:"flight_red_seconds" example:"300"`
MaxN1 float64 `json:"max_n1" example:"97.5"`
MaxN2 float64 `json:"max_n2" example:"98.1"`
PaxCount int `json:"pax_count" example:"4"`
LandingCount int `json:"landing_count" example:"1"`
RotorBrakeCycle int `json:"rotor_brake_cycle" example:"1"`
HookReleases int `json:"hook_releases" example:"0"`
TicketNo string `json:"ticket_no,omitempty" example:"TKT-001"`
Engine string `json:"engine,omitempty" example:"PW207D1"`
DeliveryNoteNumber string `json:"delivery_note_number,omitempty" example:"DN-1001"`
CustomerName string `json:"customer_name,omitempty" example:"Air Service"`
FlightPlanDistance float64 `json:"flight_plan_distance" example:"120.5"`
FlightPlanTimeSeconds int64 `json:"flight_plan_time_seconds" example:"4200"`
FlightPlanTrueCourse float64 `json:"flight_plan_true_course" example:"182.3"`
FuelBeforeFlight float64 `json:"fuel_before_flight" example:"420"`
FuelUpload float64 `json:"fuel_upload" example:"100"`
FuelAfterFlight float64 `json:"fuel_after_flight" example:"280"`
FuelPlanning float64 `json:"fuel_planning" example:"390"`
FlightPositioning bool `json:"flight_positioning" example:"false"`
OtherInformation string `json:"other_information,omitempty"`
CreatedAt string `json:"created_at,omitempty" example:"2026-04-20T08:00:00Z"`
CreatedBy string `json:"created_by,omitempty" example:"019d61db-53c6-7280-87ec-e65f205c6d3b"`
UpdatedAt string `json:"updated_at,omitempty" example:"2026-04-20T08:00:00Z"`
UpdatedBy string `json:"updated_by,omitempty" example:"019d61db-53c6-7280-87ec-e65f205c6d3b"`
}
type FlightDataSPOHESLODetails struct {
Flights []FlightDataSPOHESLOFlight `json:"flights"`
}
type FlightDataSPOHESLOFlight struct {
ID string `json:"id"`
ROT int `json:"rot"`
// Facility category: heslo-rope-label.
HESLORopeLabelID string `json:"heslo_rope_label_id,omitempty"`
HESLORopeLabelName string `json:"heslo_rope_label_name,omitempty"`
Slings []FlightDataSPOHESLOSling `json:"slings"`
}
type FlightDataSPOHESLOSling struct {
ID string `json:"id"`
// Facility category: heslo-rope-length.
SlingID string `json:"sling_id,omitempty"`
SlingName string `json:"sling_name,omitempty"`
}
type FlightDataSPOLoggingDetails struct {
Slings []FlightDataSPOLoggingSling `json:"slings"`
}
type FlightDataSPOLoggingSling struct {
ID string `json:"id"`
// Facility category: heslo-hook.
SlingID string `json:"sling_id,omitempty"`
SlingName string `json:"sling_name,omitempty"`
}
type FlightDataSPOHECDetails struct {
Flights []FlightDataSPOHECFlight `json:"flights"`
Slings []FlightDataSPOHECSling `json:"slings"`
Loads []FlightDataSPOHECLoad `json:"loads"`
}
type FlightDataSPOHECFlight struct {
ID string `json:"id"`
ROT int `json:"rot"`
HECCycle int `json:"hec_cycle"`
// Facility category: hec-rope-label.
EquipmentID string `json:"equipment_id,omitempty"`
EquipmentName string `json:"equipment_name,omitempty"`
}
type FlightDataSPOHECSling struct {
ID string `json:"id"`
// Facility category: hec-rope-length.
SlingID string `json:"sling_id,omitempty"`
SlingName string `json:"sling_name,omitempty"`
}
type FlightDataSPOHECLoad struct {
ID string `json:"id"`
// Weight band for the HEC load, e.g. "bis 199 kg", "200-600 kg", "600-800 kg", "800-1000 kg".
LoadCategory string `json:"load_category,omitempty" example:"200-600 kg"`
Quantity int `json:"quantity" example:"3"`
}
type FlightDataMissionRef struct {
ID string `json:"id,omitempty" example:"019d6774-98e8-7fba-9ef4-3795c0da8a13"`
Type string `json:"type,omitempty" example:"HEMS"`
}
type FlightDataCoPilotRef struct {
ID string `json:"id,omitempty" example:"019d61db-53c6-7280-87ec-e65f205c6d3b"`
FirstName string `json:"first_name,omitempty" example:"John"`
LastName string `json:"last_name,omitempty" example:"Doe"`
Email string `json:"email,omitempty" example:"john.doe@example.com"`
}
type FlightDataLocationRef struct {
Type string `json:"type,omitempty" example:"icao"`
ID string `json:"id,omitempty" example:"019d6774-98e8-7fba-9ef4-3795c0da8a13"`
Code string `json:"code,omitempty" example:"WIII"`
Name string `json:"name,omitempty" example:"General Hospital"`
Label string `json:"label,omitempty" example:"WIII"`
}
type FlightDataResource struct {
Type string `json:"type" example:"flight_data"`
ID string `json:"id" example:"019d6774-98e8-7fba-9ef4-3795c0da8a13"`
Attributes FlightDataAttributes `json:"attributes"`
}
type FlightDataResponse struct {
Data FlightDataResource `json:"data"`
}
type FlightDataListResponse struct {
Data []FlightDataResource `json:"data"`
Meta struct {
PageNumber int `json:"page_number" example:"1"`
PageSize int `json:"page_size" example:"20"`
Total int64 `json:"total" example:"1"`
} `json:"meta"`
}

View File

@@ -0,0 +1,22 @@
package response
import shareddto "wucher/internal/transport/http/dto/shared"
type FlightInspectionFileChecklistResource struct {
Type string `json:"type" example:"flight_inspection_file_checklist"`
ID string `json:"id" example:"019d6773-ccca-71dd-b9c7-8e6f531deb90"`
Attributes shareddto.FlightInspectionFileChecklistAttributes `json:"attributes"`
}
type FlightInspectionFileChecklistResponse struct {
Data FlightInspectionFileChecklistResource `json:"data"`
}
type FlightInspectionFileChecklistListResponse struct {
Data []FlightInspectionFileChecklistResource `json:"data"`
Meta struct {
PageNumber int `json:"page_number" example:"1"`
PageSize int `json:"page_size" example:"20"`
Total int64 `json:"total" example:"1"`
} `json:"meta"`
}

View File

@@ -0,0 +1,91 @@
package response
type FlightAttributes struct {
Status string `json:"status" example:"draft"`
MissionID string `json:"mission_id,omitempty" example:"019e9640-f7af-7940-80e8-1e9a83013afb"`
Code string `json:"code" example:"M-062226-001"`
Date string `json:"date" example:"2026-04-14"`
TotalDraft int `json:"total_draft" example:"6"`
Takeover *FlightTakeoverSummary `json:"takeover,omitempty"`
Steps []FlightStepItem `json:"steps"`
Draft []FlightDraftGroup `json:"draft,omitempty"`
CreatedAt string `json:"created_at,omitempty" example:"2026-04-14T08:00:00Z"`
CreatedBy *UserRef `json:"created_by,omitempty"`
UpdatedAt string `json:"updated_at,omitempty" example:"2026-04-14T08:00:00Z"`
UpdatedBy *UserRef `json:"updated_by,omitempty"`
DeletedAt string `json:"deleted_at,omitempty" example:"2026-04-14T08:00:00Z"`
DeletedBy *UserRef `json:"deleted_by,omitempty"`
}
type FlightStepItem struct {
Phase string `json:"phase" example:"duty_roster"`
Position string `json:"position,omitempty" example:"takeover"`
Step int `json:"step,omitempty" example:"1"`
Complete bool `json:"complete" example:"true"`
ID string `json:"id,omitempty" example:"019d6772-471c-7b70-b42a-d94020ef61e4"`
Status string `json:"status" example:"completed"`
MissionType []FlightMissionTypeSummary `json:"mission_type,omitempty"`
CompletedAt string `json:"completed_at" example:"2026-04-14T08:00:00Z"`
CompletedBy string `json:"completed_by" example:"019d61db-53c6-7280-87ec-e65f205c6d3b"`
}
type FlightHelicopterSummary struct {
AOG bool `json:"aog" example:"false"`
Designation string `json:"designation" example:"AIRBUS H145"`
ID string `json:"id" example:"019d6771-5fb5-7337-837f-bc5ed85181a1"`
Identifier string `json:"identifier" example:"D-HYAR"`
IsActive bool `json:"is_active" example:"true"`
Type string `json:"type" example:"H145"`
}
type FlightTakeoverSummary struct {
ID string `json:"id,omitempty" example:"019e8713-aa19-7fb7-a510-a0332dc69697"`
Helicopter *FlightHelicopterSummary `json:"helicopter,omitempty"`
DailyInspection *FlightDailyInspectionSummary `json:"daily_inspection,omitempty"`
RosterDetail *TakeoverDutyRosterDetailsResponse `json:"roster_detail,omitempty"`
}
type FlightDailyInspectionSummary struct {
ID string `json:"id" example:"019d6772-471c-7b70-b42a-d94020ef61e4"`
Name string `json:"name" example:"Ganahl Stefan"`
ShortName string `json:"short_name" example:"GAN"`
Date string `json:"date" example:"17.04.2026"`
UTCTime string `json:"utc_time" example:"10:57"`
}
type FlightDraftItem struct {
ID string `json:"id,omitempty" example:"019d6774-98e8-7fba-9ef4-3795c0da8a13"`
Type string `json:"type" example:"HEMS"`
Status string `json:"status" example:"draft"`
FlightDataID string `json:"flight_data_id,omitempty" example:"019d6774-98e8-7fba-9ef4-3795c0da8a55"`
}
type FlightDraftGroup struct {
Type string `json:"type" example:"HEMS"`
Items []FlightDraftItem `json:"items"`
}
type FlightMissionTypeSummary struct {
Type string `json:"type" example:"HEMS"`
Draft int `json:"draft" example:"5"`
Completed int `json:"completed" example:"0"`
}
type FlightResource struct {
Type string `json:"type" example:"flight"`
ID string `json:"id" example:"019d6774-98e8-7fba-9ef4-3795c0da8a13"`
Attributes FlightAttributes `json:"attributes"`
}
type FlightResponse struct {
Data FlightResource `json:"data"`
}
type FlightListResponse struct {
Data []FlightResource `json:"data"`
Meta struct {
PageNumber int `json:"page_number" example:"1"`
PageSize int `json:"page_size" example:"20"`
Total int64 `json:"total" example:"1"`
} `json:"meta"`
}

View File

@@ -0,0 +1,170 @@
package response
import (
shareddto "wucher/internal/transport/http/dto/shared"
"wucher/internal/transport/http/jsonapi"
)
type HelicopterFileResource struct {
Type string `json:"type" example:"helicopter_file"`
ID string `json:"id" example:"019d6773-ccca-71dd-b9c7-8e6f531deb90"`
Attributes shareddto.HelicopterFileAttributes `json:"attributes"`
}
type HelicopterFileResponse struct {
Data HelicopterFileResource `json:"data"`
}
type HelicopterFileListResponse struct {
Data []HelicopterFileResource `json:"data"`
Meta struct {
PageNumber int `json:"page_number" example:"1"`
PageSize int `json:"page_size" example:"20"`
Total int64 `json:"total" example:"1"`
} `json:"meta"`
}
type HelicopterFileCollectionHelicopter struct {
ID string `json:"id" example:"019d6771-5fb5-7337-837f-bc5ed85181a1"`
Name string `json:"name" example:"AIRBUS H145"`
}
type HelicopterFileCollectionAttachment struct {
ID string `json:"id" example:"019d6771-6c8e-7a2d-a7b8-03bcb65fcb3e"`
FileName string `json:"file_name" example:"Before Flight Checklist.pdf"`
DownloadURL string `json:"download_url" example:"https://s3.localhost.localstack.cloud:4566/wucher-file-dev/files/2026/04/05/policy.pdf?X-Amz-Signature=..."`
}
type HelicopterFileCollectionItem struct {
HelicopterFileID string `json:"helicopter_file_id" example:"019d6773-ccca-71dd-b9c7-8e6f531deb90"`
Section string `json:"section" example:"bfi"`
Position int `json:"position" example:"1"`
IsMandatory bool `json:"is_mandatory" example:"true"`
IsTemplate bool `json:"is_template" example:"true"`
AttachmentPending bool `json:"attachment_pending" example:"true"`
Attachment HelicopterFileCollectionAttachment `json:"attachment"`
CreatedAt string `json:"created_at" example:"2026-04-14T08:00:00Z"`
CreatedBy string `json:"created_by" example:"019d61db-53c6-7280-87ec-e65f205c6d3b"`
UpdatedAt string `json:"updated_at" example:"2026-04-14T08:00:00Z"`
UpdatedBy string `json:"updated_by" example:"019d61db-53c6-7280-87ec-e65f205c6d3b"`
}
type HelicopterFileCollectionSections struct {
Before []HelicopterFileCollectionItem `json:"before"`
Prepare []HelicopterFileCollectionItem `json:"prepare"`
After []HelicopterFileCollectionItem `json:"after"`
}
type HelicopterFileCollectionAttributes struct {
Helicopter HelicopterFileCollectionHelicopter `json:"helicopter"`
Files HelicopterFileCollectionSections `json:"files"`
}
type HelicopterFileCollectionResponse struct {
Type string `json:"type" example:"helicopter_file_collection"`
Attributes HelicopterFileCollectionAttributes `json:"attributes"`
}
type HelicopterFileCollectionListResponse struct {
Data []HelicopterFileCollectionResponse `json:"data"`
Meta struct {
PageNumber int `json:"page_number" example:"1"`
PageSize int `json:"page_size" example:"20"`
Total int64 `json:"total" example:"1"`
} `json:"meta"`
}
type HelicopterFileDeleteAttributes struct {
Deleted bool `json:"deleted" example:"true"`
}
type HelicopterFileDeleteResource struct {
Type string `json:"type" example:"helicopter_file_delete"`
Attributes HelicopterFileDeleteAttributes `json:"attributes"`
}
type HelicopterFileDeleteResponse struct {
Data HelicopterFileDeleteResource `json:"data"`
}
type HelicopterFileUploadIntentResource struct {
Type string `json:"type" example:"helicopter_file_upload_intent"`
ID string `json:"id" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Attributes shareddto.FileManagerFileUploadIntentAttributes `json:"attributes"`
}
type HelicopterFileUploadIntentResponse struct {
Data HelicopterFileUploadIntentResource `json:"data"`
}
type HelicopterFileBulkError struct {
Status int `json:"status" example:"422"`
Code string `json:"code,omitempty" example:"HELICOPTER_FILE_INVALID_PAYLOAD"`
ErrorCode string `json:"error_code,omitempty" example:"4220318"`
Title string `json:"title" example:"Validation error"`
Detail string `json:"detail" example:"helicopter_id is invalid UUID"`
}
type HelicopterFileUploadIntentBulkItem struct {
Index int `json:"index" example:"0"`
Success bool `json:"success" example:"true"`
Resource *HelicopterFileUploadIntentResource `json:"resource,omitempty"`
Error *HelicopterFileBulkError `json:"error,omitempty"`
}
type HelicopterFileUploadIntentBulkResponse struct {
Data []HelicopterFileUploadIntentBulkItem `json:"data"`
Meta struct {
Total int `json:"total" example:"3"`
Success int `json:"success" example:"2"`
Failed int `json:"failed" example:"1"`
PartialSuccess bool `json:"partial_success" example:"true"`
} `json:"meta"`
}
type HelicopterFileCreateBulkItem struct {
Index int `json:"index" example:"0"`
Success bool `json:"success" example:"true"`
Resource *jsonapi.Resource `json:"resource,omitempty"`
Error *HelicopterFileBulkError `json:"error,omitempty"`
}
type HelicopterFileCreateBulkResponse struct {
Data []HelicopterFileCreateBulkItem `json:"data"`
Meta struct {
Total int `json:"total" example:"3"`
Success int `json:"success" example:"2"`
Failed int `json:"failed" example:"1"`
PartialSuccess bool `json:"partial_success" example:"true"`
} `json:"meta"`
}
type HelicopterFileUpdateBulkItem struct {
Index int `json:"index" example:"0"`
Success bool `json:"success" example:"true"`
Resource *jsonapi.Resource `json:"resource,omitempty"`
Error *HelicopterFileBulkError `json:"error,omitempty"`
}
type HelicopterFileUpdateBulkResponse struct {
Data []HelicopterFileUpdateBulkItem `json:"data"`
Meta struct {
Total int `json:"total" example:"3"`
Success int `json:"success" example:"2"`
Failed int `json:"failed" example:"1"`
PartialSuccess bool `json:"partial_success" example:"true"`
} `json:"meta"`
}
type HelicopterFileCreatedSSEPayload struct {
HelicopterID string `json:"helicopter_id" example:"019d6771-5fb5-7337-837f-bc5ed85181a1"`
HelicopterFileID string `json:"helicopter_file_id" example:"019d6773-ccca-71dd-b9c7-8e6f531deb90"`
FileID string `json:"file_id" example:"019d6773-ccca-71dd-b9c7-8e6f531deb90"`
Section string `json:"section" example:"fpwb"`
Position int `json:"position" example:"1"`
IsMandatory bool `json:"is_mandatory" example:"true"`
AttachmentPending bool `json:"attachment_pending" example:"true"`
Name string `json:"name" example:"Before Flight Checklist.pdf"`
MimeType string `json:"mime_type,omitempty" example:"application/pdf"`
UpdatedAt string `json:"updated_at" example:"2026-07-01T06:00:00Z"`
}

View File

@@ -0,0 +1,88 @@
package response
import shareddto "wucher/internal/transport/http/dto/shared"
// JSON:API Helicopter response DTOs
type HelicopterAttributes struct {
Designation string `json:"designation" example:"OE-XHZ"`
Identifier string `json:"identifier" example:"ABC-0001"`
Type string `json:"type" example:"EC-135"`
SortKey *int `json:"sortkey" example:"10"`
Engine1 string `json:"engine_1,omitempty" example:"TM"`
Engine2 string `json:"engine_2,omitempty" example:"TM"`
Consumption float64 `json:"consumption_lt_min" example:"4.1"`
NR1 bool `json:"nr1" example:"true"`
NR2 bool `json:"nr2" example:"true"`
LH bool `json:"lh" example:"true"`
RH bool `json:"rh" example:"true"`
MGB bool `json:"mgb" example:"true"`
IGB bool `json:"igb" example:"false"`
TGB bool `json:"tgb" example:"true"`
UTCOffset int `json:"utc_offset" example:"-1"`
Foto *shareddto.HelicopterFoto `json:"foto,omitempty"`
Dry bool `json:"dry" example:"false"`
AOG bool `json:"aog" example:"false"`
IsInUse bool `json:"is_in_use" example:"false"`
// 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).
Status string `json:"status" example:"available" enums:"available,booked,aog,mcf"`
AOGReason string `json:"aog_reason,omitempty" example:"Main rotor gearbox fault"`
Note string `json:"note,omitempty" example:"Primary HEMS helicopter"`
IsActive bool `json:"is_active" example:"true"`
CreatedBy *shareddto.HelicopterAuditUser `json:"created_by,omitempty"`
CreatedAt string `json:"created_at,omitempty" example:"2026-03-12T03:04:05Z"`
UpdatedBy *shareddto.HelicopterAuditUser `json:"updated_by,omitempty"`
UpdatedAt string `json:"updated_at,omitempty" example:"2026-03-12T03:04:05Z"`
LastDailyInspection *shareddto.HelicopterLastDailyInspection `json:"last_daily_inspection"`
// MaintenanceSchedules mirrors the helicopter's latest fleet status. It
// always lists every inspection type; entries without data are empty.
MaintenanceSchedules []shareddto.MaintenanceScheduleAttributes `json:"maintenance_schedules"`
}
type HelicopterResource struct {
Type string `json:"type" example:"helicopter"`
ID string `json:"id" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Attributes HelicopterAttributes `json:"attributes"`
}
type HelicopterResponse struct {
Data HelicopterResource `json:"data"`
}
type HelicopterListResponse struct {
Data []HelicopterResource `json:"data"`
Meta struct {
PageNumber int `json:"page_number" example:"1"`
PageSize int `json:"page_size" example:"20"`
Total int64 `json:"total" example:"120"`
} `json:"meta"`
}
type HelicopterDataTableResponse struct {
Data []HelicopterResource `json:"data"`
Meta struct {
Draw int `json:"draw" example:"1"`
RecordsTotal int64 `json:"records_total" example:"120"`
RecordsFiltered int64 `json:"records_filtered" example:"12"`
} `json:"meta"`
}
type HelicopterNextReportNumberAttributes struct {
Identifier string `json:"identifier" example:"ABC"`
Sequence int `json:"sequence" example:"1"`
ReportNumber string `json:"report_number" example:"ABC-0001"`
}
type HelicopterNextReportNumberResource struct {
Type string `json:"type" example:"helicopter_report_number"`
ID string `json:"id" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Attributes HelicopterNextReportNumberAttributes `json:"attributes"`
}
type HelicopterNextReportNumberResponse struct {
Data HelicopterNextReportNumberResource `json:"data"`
}

View File

@@ -0,0 +1,19 @@
package response
type MasterSettingsMicrosoftEntraAttributes struct {
TenantID string `json:"MS_ENTRA_TENANT_ID" example:"your-tenant-id"`
ClientID string `json:"MS_ENTRA_CLIENT_ID" example:"your-client-id"`
ClientSecretMasked string `json:"MS_ENTRA_CLIENT_SECRET" example:"********"`
RedirectURL string `json:"MS_ENTRA_REDIRECT_URL" example:"https://example.com/api/v1/auth/microsoft/callback"`
Authority string `json:"MS_ENTRA_AUTHORITY" example:"https://login.microsoftonline.com/"`
Scopes string `json:"MS_ENTRA_SCOPES" example:"openid,profile,email"`
}
type MasterSettingsMicrosoftEntraResource struct {
Type string `json:"type" example:"master_settings_microsoft_entra_sso"`
Attributes MasterSettingsMicrosoftEntraAttributes `json:"attributes"`
}
type MasterSettingsMicrosoftEntraResponse struct {
Data MasterSettingsMicrosoftEntraResource `json:"data"`
}

View File

@@ -0,0 +1,49 @@
package response
type MasterSettingsAttributes struct {
CompanyName string `json:"company_name" example:"Wucher"`
Title string `json:"title,omitempty" example:"Welcome to Wucher"`
Subtitle string `json:"subtitle,omitempty" example:"Flight operations platform"`
LogoFileUUID *string `json:"logo_file_uuid" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
LogoURL *string `json:"logo_url" example:"https://cdn.example.com/logo.png"`
LogoThumbURL *string `json:"logo_thumbnail_url,omitempty" example:"https://cdn.example.com/logo.thumb.png"`
LogoSizeBytes *int64 `json:"logo_original_size_bytes,omitempty" example:"1024000"`
CoverFileUUID *string `json:"cover_file_uuid" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
CoverURL *string `json:"cover_url" example:"https://cdn.example.com/cover.png"`
CoverThumbURL *string `json:"cover_thumbnail_url,omitempty" example:"https://cdn.example.com/cover.thumb.png"`
CoverSizeBytes *int64 `json:"cover_original_size_bytes,omitempty" example:"2048000"`
CreatedAt string `json:"created_at,omitempty" example:"2026-03-12T03:04:05Z"`
CreatedBy string `json:"created_by,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
UpdatedAt string `json:"updated_at,omitempty" example:"2026-03-12T03:04:05Z"`
UpdatedBy string `json:"updated_by,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
DeletedAt string `json:"deleted_at,omitempty" example:"2026-03-12T03:04:05Z"`
DeletedBy string `json:"deleted_by,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
}
type MasterSettingsResource struct {
Type string `json:"type" example:"master_settings"`
ID string `json:"id" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Attributes MasterSettingsAttributes `json:"attributes"`
}
type MasterSettingsResponse struct {
Data MasterSettingsResource `json:"data"`
}
type MasterSettingsListResponse struct {
Data []MasterSettingsResource `json:"data"`
Meta struct {
PageNumber int `json:"page_number" example:"1"`
PageSize int `json:"page_size" example:"20"`
Total int64 `json:"total" example:"120"`
} `json:"meta"`
}
type MasterSettingsDataTableResponse struct {
Data []MasterSettingsResource `json:"data"`
Meta struct {
Draw int `json:"draw" example:"1"`
RecordsTotal int64 `json:"records_total" example:"120"`
RecordsFiltered int64 `json:"records_filtered" example:"12"`
} `json:"meta"`
}

View File

@@ -0,0 +1,40 @@
package response
type MCFAttributes struct {
HelicopterID string `json:"helicopter_id" example:"019d6771-5fb5-7337-837f-bc5ed85181a1"`
FlightID string `json:"flight_id,omitempty" example:"019d6774-98e8-7fba-9ef4-3795c0da8a13"`
Date string `json:"date" example:"2026-06-17"`
AFHours string `json:"af_hours,omitempty" example:"1245.3"`
LandingCount int `json:"landing_count" example:"3"`
UTCTime *string `json:"utc_time,omitempty" example:"2026-06-17T08:30:00Z"`
DecidedBy string `json:"decided_by,omitempty" example:"019d61db-53c6-7280-87ec-e65f205c6d3b"`
DecidedAt *string `json:"decided_at,omitempty" example:"2026-06-16T03:04:05Z"`
Result *string `json:"result,omitempty" example:"passed" enums:"passed,failed"`
Notes *string `json:"notes,omitempty" example:"Vibration within limits"`
CompletedBy string `json:"completed_by,omitempty" example:"019d61db-53c6-7280-87ec-e65f205c6d3b"`
CompletedAt *string `json:"completed_at,omitempty" example:"2026-06-16T03:04:05Z"`
IsComplete bool `json:"is_complete" example:"false"`
IsCleared bool `json:"is_cleared" example:"false"`
IsPending bool `json:"is_pending" example:"true"`
CreatedAt string `json:"created_at,omitempty" example:"2026-06-16T03:04:05Z"`
UpdatedAt string `json:"updated_at,omitempty" example:"2026-06-16T03:04:05Z"`
}
type MCFResource struct {
Type string `json:"type" example:"mcf"`
ID string `json:"id" example:"019d6771-5fb5-7337-837f-bc5ed85181a1"`
Attributes MCFAttributes `json:"attributes"`
}
type MCFResponse struct {
Data MCFResource `json:"data"`
}
type MCFListResponse struct {
Data []MCFResource `json:"data"`
Meta struct {
Total int64 `json:"total" example:"1"`
} `json:"meta"`
}

View File

@@ -0,0 +1,93 @@
package response
type MissionAttributes struct {
Flight *MissionFlightRef `json:"flight,omitempty"`
Type string `json:"type" example:"HEMS"`
MissionCode string `json:"mission_code" example:"HEMS-26-1"`
Subtypes *MissionSubtypeRef `json:"subtypes,omitempty"`
Note string `json:"note,omitempty" example:"Mission note"`
StartTime string `json:"start_time,omitempty" example:"04:49"`
EndTime string `json:"end_time,omitempty" example:"22:05"`
Status string `json:"status" example:"completed"`
Forms *MissionForms `json:"forms,omitempty"`
Files []MissionFileItem `json:"files,omitempty"`
CreatedAt string `json:"created_at,omitempty" example:"2026-04-20T08:00:00Z"`
CreatedBy string `json:"created_by,omitempty" example:"019d61db-53c6-7280-87ec-e65f205c6d3b"`
UpdatedAt string `json:"updated_at,omitempty" example:"2026-04-20T08:00:00Z"`
UpdatedBy string `json:"updated_by,omitempty" example:"019d61db-53c6-7280-87ec-e65f205c6d3b"`
}
type MissionForms struct {
FlightData []FlightDataResource `json:"flight_data,omitempty"`
}
type MissionFileItem struct {
ID string `json:"id" example:"019d6771-6c8e-7a2d-a7b8-03bcb65fcb3e"`
AttachmentID string `json:"attachment_id,omitempty" example:"019d6771-6c8e-7a2d-a7b8-03bcb65fcb3e"`
FileName string `json:"file_name,omitempty" example:"mission-brief.pdf"`
DownloadURL string `json:"download_url,omitempty" example:"https://s3.localhost.localstack.cloud:4566/wucher-file-dev/files/2026/04/05/brief.pdf?X-Amz-Signature=..."`
ThumbnailURL string `json:"thumbnail_url,omitempty" example:"https://s3.localhost.localstack.cloud:4566/wucher-file-dev/thumbnails/2026/04/05/brief.png?X-Amz-Signature=..."`
}
type MissionFlightRef struct {
ID string `json:"id,omitempty" example:"019d6774-98e8-7fba-9ef4-3795c0da8a13"`
Code string `json:"code,omitempty" example:"M-062226-001"`
Date string `json:"date,omitempty" example:"2026-04-20"`
}
type MissionSubtypeRef struct {
ID string `json:"id,omitempty" example:"019d6774-98e8-7fba-9ef4-3795c0da8a99"`
Subtype string `json:"subtype,omitempty" example:"PRIM"`
SubtypeName string `json:"subtype_name,omitempty" example:"Nicht transportfaehig"`
}
type MissionResource struct {
Type string `json:"type" example:"mission"`
ID string `json:"id" example:"019d6774-98e8-7fba-9ef4-3795c0da8a13"`
Attributes MissionAttributes `json:"attributes"`
}
type MissionResponse struct {
Data MissionResource `json:"data"`
}
type MissionListResponse struct {
Data []MissionResource `json:"data"`
Meta struct {
PageNumber int `json:"page_number" example:"1"`
PageSize int `json:"page_size" example:"20"`
Total int64 `json:"total" example:"120"`
} `json:"meta"`
}
type MissionDataTableResponse struct {
Data []MissionResource `json:"data"`
Meta struct {
Draw int `json:"draw" example:"1"`
RecordsTotal int64 `json:"records_total" example:"120"`
RecordsFiltered int64 `json:"records_filtered" example:"42"`
} `json:"meta"`
}
type MissionTypeSubtypeItem struct {
ID string `json:"id" example:"019d6774-98e8-7fba-9ef4-3795c0da8a99"`
Code string `json:"code" example:"PRIM"`
Name string `json:"name" example:"Primary"`
TaskName string `json:"task_name" example:"Nicht transportfaehig"`
}
type MissionTypeAttributes struct {
Code string `json:"code" example:"HEMS"`
Name string `json:"name" example:"HEMS"`
Subtypes []MissionTypeSubtypeItem `json:"subtypes,omitempty"`
}
type MissionTypeResource struct {
Type string `json:"type" example:"mission_type"`
ID string `json:"id" example:"019d6774-98e8-7fba-9ef4-3795c0da8a77"`
Attributes MissionTypeAttributes `json:"attributes"`
}
type MissionTypeListResponse struct {
Data []MissionTypeResource `json:"data"`
}

View File

@@ -0,0 +1,24 @@
package response
type OtherPersonAttributes struct {
Name string `json:"name" example:"Guest Person"`
MobilePhone string `json:"mobile_phone,omitempty" example:"+43-1234"`
Email string `json:"email,omitempty" example:"guest@example.com"`
}
type OtherPersonResource struct {
Type string `json:"type" example:"other_person"`
ID string `json:"id" example:"019d6771-5fb5-7337-837f-bc5ed85181a1"`
Attributes OtherPersonAttributes `json:"attributes"`
}
type OtherPersonListResponse struct {
Data []OtherPersonResource `json:"data"`
Meta struct {
Total int64 `json:"total" example:"1"`
} `json:"meta"`
}
type OtherPersonResponse struct {
Data OtherPersonResource `json:"data"`
}

View File

@@ -0,0 +1,98 @@
package response
import shareddto "wucher/internal/transport/http/dto/shared"
type ReserveAcResource struct {
Type string `json:"type" example:"reserve_ac"`
ID string `json:"id" example:"019d6773-ccca-71dd-b9c7-8e6f531deb90"`
Attributes shareddto.ReserveAcAttributes `json:"attributes"`
}
type ReserveAcResponse struct {
Data ReserveAcResource `json:"data"`
}
type ReserveAcListResponse struct {
Data []ReserveAcResource `json:"data"`
Meta struct {
PageNumber int `json:"page_number" example:"1"`
PageSize int `json:"page_size" example:"20"`
Total int64 `json:"total" example:"1"`
} `json:"meta"`
}
type ReserveAcHelicopterGroupResource struct {
Type string `json:"type"`
Attributes ReserveAcHelicopterGroupAttributes `json:"attributes"`
}
type ReserveAcHelicopterGroupAttributes struct {
Helicopter ReserveAcHelicopterIdentity `json:"helicopter"`
LastDailyInspection ReserveAcLastDailyInspectionDTO `json:"last_daily_inspection"`
BFI ReserveAcBFISection `json:"bfi"`
FPWB ReserveAcFPWBSection `json:"fpwb"`
}
type ReserveAcHelicopterIdentity struct {
ID string `json:"id"`
Designation string `json:"designation"`
Identifier string `json:"identifier"`
Type string `json:"type"`
Status string `json:"status"`
BookingDetails *ReserveAcBookingDetailsDTO `json:"booking_details,omitempty"`
}
type ReserveAcLastDailyInspectionDTO struct {
ID any `json:"id"`
InspectionBy ReserveAcInspectionBySummary `json:"inspection_by"`
InspectionAt any `json:"inspection_at"`
}
type ReserveAcInspectionBySummary struct {
ID any `json:"id"`
Name string `json:"name"`
ShortName string `json:"short_name"`
}
type ReserveAcBookingDetailsDTO struct {
ReserveAcID any `json:"reserve_ac_id,omitempty"`
FlightID any `json:"flight_id,omitempty"`
MissionCode any `json:"mission_code,omitempty"`
DutyDate any `json:"duty_date,omitempty"`
BookedAt any `json:"booked_at,omitempty"`
BookedBy map[string]any `json:"booked_by,omitempty"`
}
type ReserveAcHelicopterFileItem struct {
ID string `json:"id"`
FileName string `json:"file_name"`
URL string `json:"url"`
UploadedAt string `json:"uploaded_at"`
UploadedBy string `json:"uploaded_by"`
}
type ReserveAcHelicopterFileSection struct {
Files []ReserveAcHelicopterFileItem `json:"files"`
}
type ReserveAcBFISection struct {
FuelAddedAmount *float64 `json:"fuel_added_amount,omitempty"`
FuelAmount *float64 `json:"fuel_amount,omitempty"`
FuelUnit string `json:"fuel_unit,omitempty"`
HydraulicLHChecked *bool `json:"hydraulic_lh_checked,omitempty"`
HydraulicRHChecked *bool `json:"hydraulic_rh_checked,omitempty"`
Note *string `json:"note,omitempty"`
OilEngineNR1Checked *bool `json:"oil_engine_nr1_checked,omitempty"`
OilEngineNR2Checked *bool `json:"oil_engine_nr2_checked,omitempty"`
OilTransmissionIGBChecked *bool `json:"oil_transmission_igb_checked,omitempty"`
OilTransmissionMGBChecked *bool `json:"oil_transmission_mgb_checked,omitempty"`
OilTransmissionTGBChecked *bool `json:"oil_transmission_tgb_checked,omitempty"`
Files []ReserveAcHelicopterFileItem `json:"files"`
}
type ReserveAcFPWBSection struct {
NotamBriefing *bool `json:"notam_briefing,omitempty"`
WeatherBriefing *bool `json:"weather_briefing,omitempty"`
OperationalFlightPlan *bool `json:"operational_flight_plan,omitempty"`
Files []ReserveAcHelicopterFileItem `json:"files"`
}

View File

@@ -0,0 +1,112 @@
package response
import (
shareddto "wucher/internal/transport/http/dto/shared"
)
type TakeoverResponseAttributes struct {
ID string `json:"id,omitempty"`
FlightID string `json:"flight_id,omitempty"`
ReserveAcID string `json:"reserve_ac_id,omitempty"`
FlightInspectionID string `json:"flight_inspection_id,omitempty"`
ShiftStart string `json:"shift_start,omitempty"`
ShiftEnd string `json:"shift_end,omitempty"`
BaseID string `json:"base_id,omitempty"`
Base *DutyRosterBaseInfo `json:"base,omitempty"`
DutyDate string `json:"duty_date,omitempty"`
HelicopterID string `json:"helicopter_id,omitempty"`
Helicopter *TakeoverHelicopter `json:"helicopter,omitempty"`
Notes *string `json:"notes,omitempty"`
CreatedBy string `json:"created_by,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
UpdatedBy string `json:"updated_by,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
CreatedAt string `json:"created_at,omitempty" example:"2026-03-12T03:04:05Z"`
UpdatedAt string `json:"updated_at,omitempty" example:"2026-03-12T03:04:05Z"`
RosterDetail TakeoverDutyRosterDetailsResponse `json:"roster_detail"`
Inspection shareddto.ReserveAcInspectionSummary `json:"inspection"`
Files []TakeoverFileResource `json:"files,omitempty"`
}
// TakeoverHelicopter is the selected helicopter shown on a takeover, enriched
// with its last daily inspection and its maintenance schedule (the "next due"
// per inspection type) from the helicopter's latest fleet status.
type TakeoverHelicopter struct {
ID string `json:"id" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Designation string `json:"designation" example:"OE-XHZ"`
Identifier string `json:"identifier" example:"1234"`
Type string `json:"type" example:"EC-135"`
LastDailyInspection *shareddto.HelicopterLastDailyInspection `json:"last_daily_inspection"`
MaintenanceSchedules []shareddto.MaintenanceScheduleAttributes `json:"maintenance_schedules"`
}
type TakeoverDutyRosterAttributes struct {
Bases DutyRosterBaseInfo `json:"bases"`
FlightID string `json:"flight_id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Helicopter DutyRosterHelicopterSummary `json:"helicopter"`
DutyDate string `json:"duty_date,omitempty" example:"2026-03-16"`
Detail TakeoverDutyRosterDetailsResponse `json:"roster_detail"`
CreatedBy string `json:"created_by,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
CreatedAt string `json:"created_at,omitempty" example:"2026-03-12T03:04:05Z"`
UpdatedAt string `json:"updated_at,omitempty" example:"2026-03-12T03:04:05Z"`
}
type TakeoverDutyRosterResource struct {
Type string `json:"type" example:"duty_roster"`
ID string `json:"id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Attributes TakeoverDutyRosterAttributes `json:"attributes"`
}
type TakeoverDutyRosterCrew struct {
ID string `json:"id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Name string `json:"name,omitempty" example:"Hunter Wolfgang"`
Role string `json:"role,omitempty" example:"doctor"`
MobilePhone string `json:"mobile_phone,omitempty" example:"+43-1234"`
Email string `json:"email,omitempty" example:"doctor@example.com"`
}
type TakeoverDutyRosterPilotCrew struct {
ID string `json:"id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
Name string `json:"name,omitempty" example:"Hunter Wolfgang"`
Role string `json:"role,omitempty" example:"pilot"`
MobilePhone string `json:"mobile_phone,omitempty" example:"+43-1234"`
Email string `json:"email,omitempty" example:"pilot@example.com"`
CrewType string `json:"crew_type,omitempty" example:"main"`
FlightInstructor *bool `json:"flight_instructor,omitempty"`
LineChecker *bool `json:"line_checker,omitempty"`
Supervisor *bool `json:"supervisor,omitempty"`
Examiner *bool `json:"examiner,omitempty"`
CoPilot *bool `json:"co_pilot,omitempty"`
}
type TakeoverDutyRosterDetailsResponse struct {
Pilot []TakeoverDutyRosterPilotCrew `json:"pilot"`
Doctor []TakeoverDutyRosterCrew `json:"doctor"`
Rescuer []TakeoverDutyRosterCrew `json:"rescuer"`
Helper []TakeoverDutyRosterCrew `json:"helper"`
OtherPerson []TakeoverDutyRosterCrew `json:"other_person"`
}
type TakeoverResource struct {
Type string `json:"type" example:"takeover"`
Attributes TakeoverResponseAttributes `json:"attributes"`
}
type TakeoverFileAttributes struct {
FileAttachmentID string `json:"file_attachment_id" example:"019d7000-aaaa-7bbb-8ccc-222222222222"`
FileName string `json:"file_name,omitempty" example:"takeover-report.pdf"`
DownloadURL string `json:"download_url,omitempty" example:"https://s3.localhost.localstack.cloud:4566/wucher-file-dev/files/2026/04/05/takeover-report.pdf?X-Amz-Signature=..."`
}
type TakeoverFileResource struct {
Type string `json:"type" example:"takeover_file"`
ID string `json:"id,omitempty" example:"019d7000-aaaa-7bbb-8ccc-111111111111"`
Attributes TakeoverFileAttributes `json:"attributes"`
}
type TakeoverResponse struct {
Data TakeoverResource `json:"data"`
}
type TakeoverListResponse struct {
Data []TakeoverResource `json:"data"`
Meta map[string]any `json:"meta,omitempty"`
}

View File

@@ -0,0 +1,8 @@
package response
// UserRef is an audit user reference exposing both the raw UUID and a resolved
// display name, e.g. for created_by / updated_by fields.
type UserRef struct {
UUID string `json:"uuid" example:"019d61db-53c6-7280-87ec-e65f205c6d3b"`
Name string `json:"name,omitempty" example:"Ganahl Stefan"`
}