init push
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
package request
|
||||
|
||||
// ActionSignoffSignAttributes — optional fields for the sign-off.
|
||||
// - ComplaintID: when set, the sign-off marks that complaint's corrective action as
|
||||
// signed off (the complaint must already have action_taken recorded, else 422).
|
||||
// - When ComplaintID is omitted it is a complaint-independent (fleet) sign-off, which
|
||||
// still allows an EASA release.
|
||||
type ActionSignoffSignAttributes struct {
|
||||
// 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.
|
||||
Sign *bool `json:"sign,omitempty" example:"true"`
|
||||
ComplaintID *string `json:"complaint_id,omitempty" example:"019d6772-471c-7b70-b42a-d94020ef61e4"`
|
||||
// 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).
|
||||
FlightID *string `json:"flight_id,omitempty" example:"019d6774-98e8-7fba-9ef4-3795c0da8a13"`
|
||||
}
|
||||
|
||||
type ActionSignoffSignData struct {
|
||||
Type string `json:"type,omitempty" example:"action_signoff"`
|
||||
Attributes ActionSignoffSignAttributes `json:"attributes"`
|
||||
}
|
||||
|
||||
// ActionSignoffSignRequest — body is OPTIONAL for the sign endpoint.
|
||||
type ActionSignoffSignRequest struct {
|
||||
Data ActionSignoffSignData `json:"data"`
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
package request
|
||||
|
||||
import shareddto "wucher/internal/transport/http/dto/shared"
|
||||
|
||||
type AirRescuerChecklistCreateEntry struct {
|
||||
ScopeCode string `json:"scope_code" validate:"required" example:"MO"`
|
||||
Title string `json:"title" validate:"required" example:"Monday Checklist"`
|
||||
Position *int `json:"position,omitempty" example:"1"`
|
||||
Items []shareddto.AirRescuerChecklistItemInput `json:"items,omitempty" validate:"omitempty,dive"`
|
||||
}
|
||||
|
||||
type AirRescuerChecklistCreateAttributes struct {
|
||||
BaseID string `json:"base_id" validate:"required" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
Checklists []AirRescuerChecklistCreateEntry `json:"checklists" validate:"required,min=1,dive"`
|
||||
}
|
||||
|
||||
type AirRescuerChecklistCreateData struct {
|
||||
Type string `json:"type" validate:"required,oneof=air_rescuer_checklist_create"`
|
||||
Attributes AirRescuerChecklistCreateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type AirRescuerChecklistCreateRequest struct {
|
||||
Data AirRescuerChecklistCreateData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
type AirRescuerChecklistUpdateAttributes struct {
|
||||
ScopeCode *string `json:"scope_code,omitempty" example:"MO"`
|
||||
Title *string `json:"title,omitempty" example:"Monday Checklist Updated"`
|
||||
Position *int `json:"position,omitempty" example:"1"`
|
||||
NewItems []shareddto.AirRescuerChecklistItemInput `json:"new_items,omitempty" validate:"omitempty,dive"`
|
||||
}
|
||||
|
||||
type AirRescuerChecklistUpdateData struct {
|
||||
Type string `json:"type" validate:"required,oneof=air_rescuer_checklist_update"`
|
||||
ID string `json:"id" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
Attributes AirRescuerChecklistUpdateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type AirRescuerChecklistUpdateRequest struct {
|
||||
Data AirRescuerChecklistUpdateData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
type AirRescuerChecklistItemCreateAttributes struct {
|
||||
Items []shareddto.AirRescuerChecklistItemInput `json:"items" validate:"required,min=1,dive"`
|
||||
}
|
||||
|
||||
type AirRescuerChecklistItemCreateData struct {
|
||||
Type string `json:"type" validate:"required,oneof=air_rescuer_checklist_item_create"`
|
||||
Attributes AirRescuerChecklistItemCreateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type AirRescuerChecklistItemCreateRequest struct {
|
||||
Data AirRescuerChecklistItemCreateData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
type AirRescuerChecklistItemUpdateAttributes struct {
|
||||
Name *string `json:"name,omitempty" example:"Check radio"`
|
||||
Position *int `json:"position,omitempty" example:"2"`
|
||||
}
|
||||
|
||||
type AirRescuerChecklistItemUpdateData struct {
|
||||
Type string `json:"type" validate:"required,oneof=air_rescuer_checklist_item_update"`
|
||||
ID string `json:"id" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
Attributes AirRescuerChecklistItemUpdateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type AirRescuerChecklistItemUpdateRequest struct {
|
||||
Data AirRescuerChecklistItemUpdateData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
type AirRescuerChecklistItemReorderEntry struct {
|
||||
ItemUUID string `json:"item_uuid" validate:"required" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
Position *int `json:"position" validate:"required" example:"2"`
|
||||
}
|
||||
|
||||
type AirRescuerChecklistItemReorderAttributes struct {
|
||||
Items []AirRescuerChecklistItemReorderEntry `json:"items" validate:"required,min=1,dive"`
|
||||
}
|
||||
|
||||
type AirRescuerChecklistItemReorderData struct {
|
||||
Type string `json:"type" validate:"required,oneof=air_rescuer_checklist_item_reorder"`
|
||||
Attributes AirRescuerChecklistItemReorderAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type AirRescuerChecklistItemReorderRequest struct {
|
||||
Data AirRescuerChecklistItemReorderData `json:"data" validate:"required"`
|
||||
}
|
||||
82
internal/transport/http/dto/request/complaint_request.go
Normal file
82
internal/transport/http/dto/request/complaint_request.go
Normal file
@@ -0,0 +1,82 @@
|
||||
package request
|
||||
|
||||
type ComplaintCreateAttributes struct {
|
||||
// HelicopterID — the helicopter this complaint is filed against. REQUIRED.
|
||||
HelicopterID string `json:"helicopter_id" validate:"required,uuid" example:"019d6771-5fb5-7337-837f-bc5ed85181a1"`
|
||||
// FlightID — the flight/report this complaint was filed in (attribution). OPTIONAL;
|
||||
// open-defect tracking stays per-helicopter so defects carry forward across flights.
|
||||
FlightID string `json:"flight_id,omitempty" validate:"omitempty,uuid" example:"019d6774-98e8-7fba-9ef4-3795c0da8a13"`
|
||||
// Description — the defect description. REQUIRED.
|
||||
Description string `json:"description" validate:"required" example:"Engine 2 N2 vibration intermittent during cruise above 110 KIAS"`
|
||||
// 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).
|
||||
MELSeverity *int8 `json:"mel_severity,omitempty" validate:"omitempty,oneof=0 1 2 3 4" enums:"0,1,2,3,4" example:"2"`
|
||||
// AircraftHoursAtReport — OPTIONAL airframe hours recorded when the defect was reported.
|
||||
AircraftHoursAtReport *string `json:"aircraft_hours_at_report,omitempty" example:"1245.3"`
|
||||
// NSR is no longer set here — it is its own flow: POST /complaints/nsr/sign/{id}.
|
||||
}
|
||||
|
||||
type ComplaintCreateData struct {
|
||||
Type string `json:"type" validate:"required,oneof=complaint_create complaint" example:"complaint_create"`
|
||||
Attributes ComplaintCreateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type ComplaintCreateRequest struct {
|
||||
Data ComplaintCreateData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
type ComplaintUpdateAttributes struct {
|
||||
// Description — defect description.
|
||||
Description *string `json:"description,omitempty" example:"Engine 2 vibration confirmed"`
|
||||
// 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.
|
||||
MELSeverity *int8 `json:"mel_severity,omitempty" validate:"omitempty,oneof=0 1 2 3 4" enums:"0,1,2,3,4" example:"2"`
|
||||
// AircraftHoursAtReport — airframe hours at report time.
|
||||
AircraftHoursAtReport *string `json:"aircraft_hours_at_report,omitempty" example:"1245.3"`
|
||||
// NSR is no longer set here — it is its own flow: POST /complaints/nsr/sign/{id}.
|
||||
}
|
||||
|
||||
// ComplaintNSRSignAttributes carries the (optional) justification for a Non-Safety
|
||||
// Release decision. NSR is signed via its own endpoint, separate from complaint update.
|
||||
type ComplaintNSRSignAttributes struct {
|
||||
// NSRReason — OPTIONAL free-text justification for the NSR (MEL deferral) decision.
|
||||
NSRReason *string `json:"nsr_reason,omitempty" example:"Released under MEL A, defect deferred"`
|
||||
}
|
||||
|
||||
type ComplaintNSRSignData struct {
|
||||
Type string `json:"type" validate:"omitempty,oneof=complaint_nsr_sign complaint_nsr" example:"complaint_nsr_sign"`
|
||||
Attributes ComplaintNSRSignAttributes `json:"attributes"`
|
||||
}
|
||||
|
||||
type ComplaintNSRSignRequest struct {
|
||||
Data ComplaintNSRSignData `json:"data"`
|
||||
}
|
||||
|
||||
type ComplaintUpdateData struct {
|
||||
Type string `json:"type" validate:"required,oneof=complaint_update complaint" example:"complaint_update"`
|
||||
ID string `json:"id" validate:"required" example:"019d6771-5fb5-7337-837f-bc5ed85181a1"`
|
||||
Attributes ComplaintUpdateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type ComplaintUpdateRequest struct {
|
||||
Data ComplaintUpdateData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
type ComplaintActionTakenAttributes struct {
|
||||
// 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).
|
||||
ActionTaken string `json:"action_taken" example:"Tightened engine mount and rechecked torque"`
|
||||
AircraftHoursAtFix *string `json:"aircraft_hours_at_fix,omitempty" example:"1250.1"`
|
||||
}
|
||||
|
||||
type ComplaintActionTakenData struct {
|
||||
Type string `json:"type" validate:"required,oneof=complaint_action_taken complaint" example:"complaint_action_taken"`
|
||||
Attributes ComplaintActionTakenAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type ComplaintActionTakenRequest struct {
|
||||
Data ComplaintActionTakenData `json:"data" validate:"required"`
|
||||
}
|
||||
143
internal/transport/http/dto/request/duty_roster_request.go
Normal file
143
internal/transport/http/dto/request/duty_roster_request.go
Normal file
@@ -0,0 +1,143 @@
|
||||
package request
|
||||
|
||||
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 DutyRosterCrewInput struct {
|
||||
ID string `json:"id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
ShiftDate *DutyRosterShiftDate `json:"shift_date,omitempty"`
|
||||
}
|
||||
|
||||
type DutyRosterPilotCrewInput struct {
|
||||
ID string `json:"id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
ShiftDate *DutyRosterShiftDate `json:"shift_date,omitempty"`
|
||||
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"`
|
||||
CrewType string `json:"crew_type,omitempty" example:"main" enums:"main,additional"`
|
||||
}
|
||||
|
||||
type DutyRosterOtherPersonInput struct {
|
||||
// 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).
|
||||
OtherPersonID string `json:"other_person_id,omitempty" example:"019d6771-5fb5-7337-837f-bc5ed85181a1"`
|
||||
Name string `json:"name,omitempty" example:"Guest Person"`
|
||||
MobilePhone string `json:"mobile_phone,omitempty" example:"+43-1234"`
|
||||
Email string `json:"email,omitempty" example:"guest@example.com"`
|
||||
}
|
||||
|
||||
type DutyRosterDetailsInput struct {
|
||||
Pilot []DutyRosterPilotCrewInput `json:"pilot"`
|
||||
Doctor []DutyRosterCrewInput `json:"doctor"`
|
||||
Rescuer []DutyRosterCrewInput `json:"rescuer"`
|
||||
Helper []DutyRosterCrewInput `json:"helper"`
|
||||
OtherPerson []DutyRosterOtherPersonInput `json:"other_person"`
|
||||
}
|
||||
|
||||
type DutyRosterCreateAttributes struct {
|
||||
BaseID string `json:"base_id" validate:"required"`
|
||||
DutyDate string `json:"duty_date" validate:"required"`
|
||||
ShiftTime DutyRosterShiftTime `json:"shift_time"`
|
||||
Detail DutyRosterDetailsInput `json:"roster_detail"`
|
||||
}
|
||||
|
||||
type DutyRosterCreateData struct {
|
||||
Type string `json:"type" validate:"required,oneof=duty_roster_create duty_roster"`
|
||||
Attributes DutyRosterCreateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type DutyRosterCreateRequest struct {
|
||||
Data DutyRosterCreateData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
type DutyRosterUpdateAttributes struct {
|
||||
BaseID *string `json:"base_id,omitempty"`
|
||||
DutyDate *string `json:"duty_date,omitempty"`
|
||||
ShiftTime *DutyRosterShiftTime `json:"shift_time,omitempty"`
|
||||
Detail *DutyRosterDetailsInput `json:"roster_detail,omitempty"`
|
||||
}
|
||||
|
||||
type DutyRosterUpdateData struct {
|
||||
Type string `json:"type" validate:"required,oneof=duty_roster_update duty_roster"`
|
||||
ID string `json:"id"`
|
||||
Attributes DutyRosterUpdateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type DutyRosterUpdateRequest struct {
|
||||
Data DutyRosterUpdateData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
type DutyRosterDeleteCrewAttributes struct {
|
||||
Detail DutyRosterDetailsInput `json:"roster_detail"`
|
||||
}
|
||||
|
||||
type DutyRosterDeleteCrewData struct {
|
||||
Type string `json:"type" validate:"required,oneof=duty_roster_crew_delete duty_roster_update duty_roster"`
|
||||
Attributes DutyRosterDeleteCrewAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type DutyRosterDeleteCrewRequest struct {
|
||||
Data DutyRosterDeleteCrewData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
type DutyRosterDeleteCrewByIDAttributes struct {
|
||||
RosterID string `json:"roster_id" validate:"required"`
|
||||
CrewID string `json:"crew_id" validate:"required"`
|
||||
}
|
||||
|
||||
type DutyRosterDeleteCrewByIDData struct {
|
||||
Type string `json:"type" validate:"required,oneof=duty_roster_crew_delete duty_roster_update duty_roster"`
|
||||
Attributes DutyRosterDeleteCrewByIDAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type DutyRosterDeleteCrewByIDRequest struct {
|
||||
Data DutyRosterDeleteCrewByIDData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
type DutyRosterAnyDeleteData struct {
|
||||
ID string `json:"id" validate:"required" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
}
|
||||
|
||||
type DutyRosterAnyDeleteRequest struct {
|
||||
Data DutyRosterAnyDeleteData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
// DutyRosterAnyCreateRequestDoc is documentation-only schema for cleaner Swagger examples.
|
||||
type DutyRosterAnyCreateRequestDoc struct {
|
||||
Data DutyRosterAnyCreateDataDoc `json:"data"`
|
||||
}
|
||||
|
||||
type DutyRosterAnyCreateDataDoc struct {
|
||||
Type string `json:"type" example:"duty_roster_create" enums:"duty_roster_create,duty_roster"`
|
||||
Attributes DutyRosterAnyCreateAttributesDoc `json:"attributes"`
|
||||
}
|
||||
|
||||
type DutyRosterAnyCreateAttributesDoc struct {
|
||||
BaseID string `json:"base_id" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
DutyDate string `json:"duty_date" example:"2026-03-16"`
|
||||
ShiftTime DutyRosterShiftTime `json:"shift_time"`
|
||||
Detail DutyRosterAnyCreateDetailDoc `json:"roster_detail"`
|
||||
}
|
||||
|
||||
type DutyRosterAnyCreateDetailDoc struct {
|
||||
Pilot []DutyRosterPilotAdditionalExampleDoc `json:"pilot"`
|
||||
Doctor []DutyRosterCrewInput `json:"doctor"`
|
||||
Rescuer []DutyRosterCrewInput `json:"rescuer"`
|
||||
Helper []DutyRosterCrewInput `json:"helper"`
|
||||
OtherPerson []DutyRosterOtherPersonInput `json:"other_person"`
|
||||
}
|
||||
|
||||
type DutyRosterPilotAdditionalExampleDoc struct {
|
||||
ID string `json:"id" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
CrewType string `json:"crew_type" example:"additional" enums:"main,additional"`
|
||||
FlightInstructor bool `json:"flight_instructor" example:"true"`
|
||||
}
|
||||
53
internal/transport/http/dto/request/easa_release_request.go
Normal file
53
internal/transport/http/dto/request/easa_release_request.go
Normal file
@@ -0,0 +1,53 @@
|
||||
package request
|
||||
|
||||
type EASAReleaseCreateAttributes struct {
|
||||
HelicopterID string `json:"helicopter_id" validate:"required,uuid" example:"019d6771-5fb5-7337-837f-bc5ed85181a1"`
|
||||
// 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.
|
||||
ComplaintID string `json:"complaint_id,omitempty" validate:"omitempty,uuid" example:"019d6774-1111-7fba-9ef4-3795c0da8a13"`
|
||||
// FlightID — OPTIONAL flight context. Used for the standalone (no-complaint) sign-off gate.
|
||||
FlightID string `json:"flight_id,omitempty" validate:"omitempty,uuid" 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 — OPTIONAL contact id (UUIDv7) of the signer/technician. Required only to sign.
|
||||
EASASignerID *string `json:"easa_signer_id,omitempty" example:"019d61db-53c6-7280-87ec-e65f205c6d3b"`
|
||||
EASAPermitNo *string `json:"easa_permit_no,omitempty" example:"145.A.50"`
|
||||
// Sign, when true, signs the release immediately at creation. Requires all
|
||||
// required fields to be present; otherwise the request is rejected.
|
||||
Sign bool `json:"sign,omitempty" example:"false"`
|
||||
}
|
||||
|
||||
type EASAReleaseCreateData struct {
|
||||
Type string `json:"type" validate:"required,oneof=easa_release_create easa_release" example:"easa_release_create"`
|
||||
Attributes EASAReleaseCreateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type EASAReleaseCreateRequest struct {
|
||||
Data EASAReleaseCreateData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
type EASAReleaseUpdateAttributes struct {
|
||||
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 — OPTIONAL contact id (UUIDv7) of the signer/technician. Required only to sign.
|
||||
EASASignerID *string `json:"easa_signer_id,omitempty" example:"019d61db-53c6-7280-87ec-e65f205c6d3b"`
|
||||
EASAPermitNo *string `json:"easa_permit_no,omitempty" example:"145.A.50"`
|
||||
}
|
||||
|
||||
type EASAReleaseUpdateData struct {
|
||||
Type string `json:"type" validate:"required,oneof=easa_release_update easa_release" example:"easa_release_update"`
|
||||
ID string `json:"id" validate:"required" example:"019d6771-5fb5-7337-837f-bc5ed85181a1"`
|
||||
Attributes EASAReleaseUpdateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type EASAReleaseUpdateRequest struct {
|
||||
Data EASAReleaseUpdateData `json:"data" validate:"required"`
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package request
|
||||
|
||||
type FileManagerAttachmentCreateAttributes struct {
|
||||
FileID string `json:"file_id" validate:"required" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
RefType string `json:"ref_type" validate:"required" example:"helicopter"`
|
||||
RefID string `json:"ref_id" validate:"required" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
Category *string `json:"category,omitempty" example:"document"`
|
||||
SortOrder *int `json:"sort_order,omitempty" example:"0"`
|
||||
IsPrimary *bool `json:"is_primary,omitempty" example:"false"`
|
||||
}
|
||||
|
||||
type FileManagerAttachmentCreateData struct {
|
||||
Type string `json:"type" validate:"required,oneof=file_manager_attachment_create file_manager_attachment" example:"file_manager_attachment_create"`
|
||||
Attributes FileManagerAttachmentCreateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type FileManagerAttachmentCreateRequest struct {
|
||||
Data FileManagerAttachmentCreateData `json:"data" validate:"required"`
|
||||
}
|
||||
197
internal/transport/http/dto/request/file_manager_file_request.go
Normal file
197
internal/transport/http/dto/request/file_manager_file_request.go
Normal file
@@ -0,0 +1,197 @@
|
||||
package request
|
||||
|
||||
type FileManagerFileCreateAttributes struct {
|
||||
UploadIntentUUID string `json:"upload_intent_uuid" validate:"required" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
FolderID *string `json:"folder_id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
Name string `json:"name" validate:"required" example:"policy-final.pdf"`
|
||||
}
|
||||
|
||||
type FileManagerFileUploadIntentAttributes struct {
|
||||
Name string `json:"name" validate:"required" example:"policy-final.pdf"`
|
||||
ContentType string `json:"content_type" validate:"required" example:"application/pdf"`
|
||||
SizeBytes int64 `json:"size_bytes" validate:"required,gte=0" example:"1024"`
|
||||
}
|
||||
|
||||
type FileManagerFileUploadIntentData struct {
|
||||
Type string `json:"type" validate:"required,oneof=file_manager_file_upload_intent" example:"file_manager_file_upload_intent"`
|
||||
Attributes FileManagerFileUploadIntentAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type FileManagerFileUploadIntentRequest struct {
|
||||
Data FileManagerFileUploadIntentData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
type FileManagerFileUploadIntentBulkRequest struct {
|
||||
Data []FileManagerFileUploadIntentData `json:"data" validate:"required,min=1"`
|
||||
}
|
||||
|
||||
type FileManagerFileCancelUploadAttributes struct {
|
||||
UploadIntentUUID string `json:"upload_intent_uuid" validate:"required" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
}
|
||||
|
||||
type FileManagerFileCancelUploadData struct {
|
||||
Type string `json:"type" validate:"required,oneof=file_manager_file_cancel_upload" example:"file_manager_file_cancel_upload"`
|
||||
Attributes FileManagerFileCancelUploadAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type FileManagerFileCancelUploadBulkRequest struct {
|
||||
Data []FileManagerFileCancelUploadData `json:"data" validate:"required,min=1"`
|
||||
}
|
||||
|
||||
type FileManagerFileUploadCompleteAttributes struct {
|
||||
UploadIntentUUID string `json:"upload_intent_uuid" validate:"required" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
}
|
||||
|
||||
type FileManagerFileUploadCompleteData struct {
|
||||
Type string `json:"type" validate:"required,oneof=file_manager_file_upload_complete" example:"file_manager_file_upload_complete"`
|
||||
Attributes FileManagerFileUploadCompleteAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type FileManagerFileUploadCompleteRequest struct {
|
||||
Data FileManagerFileUploadCompleteData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
type FileManagerFileCreateData struct {
|
||||
Type string `json:"type" validate:"required,oneof=file_manager_file_create file_manager_file" example:"file_manager_file_create"`
|
||||
Attributes FileManagerFileCreateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type FileManagerFileCreateRequest struct {
|
||||
Data FileManagerFileCreateData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
// FileManagerFileCreateFlexibleRequest is used for swagger documentation.
|
||||
// Runtime accepts:
|
||||
// - single: {"data": { ...FileManagerFileCreateData }}
|
||||
// - bulk: {"data": [ ...FileManagerFileBulkCreateItem ]}
|
||||
type FileManagerFileCreateFlexibleRequest struct {
|
||||
Data interface{} `json:"data"`
|
||||
}
|
||||
|
||||
type FileManagerFileBulkCreateItem struct {
|
||||
Type string `json:"type" validate:"required,oneof=file_manager_file_create file_manager_file" example:"file_manager_file_create"`
|
||||
Attributes FileManagerFileCreateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type FileManagerFileBulkCreateRequest struct {
|
||||
Data []FileManagerFileBulkCreateItem `json:"data" validate:"required,min=1"`
|
||||
}
|
||||
|
||||
type FileManagerFileUserCreateAttributes struct {
|
||||
UploadIntentUUID string `json:"upload_intent_uuid" validate:"required" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
UserUUID string `json:"user_uuid" validate:"required" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
Name string `json:"name" validate:"required" example:"profile.jpg"`
|
||||
}
|
||||
|
||||
type FileManagerFileUserBulkCreateItem struct {
|
||||
Type string `json:"type" validate:"required,oneof=file_manager_file_create file_manager_file" example:"file_manager_file_create"`
|
||||
Attributes FileManagerFileUserCreateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type FileManagerFileUserBulkCreateRequest struct {
|
||||
Data []FileManagerFileUserBulkCreateItem `json:"data" validate:"required,min=1"`
|
||||
}
|
||||
|
||||
type FileManagerFileAircraftCreateAttributes struct {
|
||||
UploadIntentUUID string `json:"upload_intent_uuid" validate:"required" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
AircraftUUID string `json:"aircraft_uuid" validate:"required" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
Name string `json:"name" validate:"required" example:"aircraft.jpg"`
|
||||
}
|
||||
|
||||
type FileManagerFileAircraftBulkCreateItem struct {
|
||||
Type string `json:"type" validate:"required,oneof=file_manager_file_create file_manager_file" example:"file_manager_file_create"`
|
||||
Attributes FileManagerFileAircraftCreateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type FileManagerFileAircraftBulkCreateRequest struct {
|
||||
Data []FileManagerFileAircraftBulkCreateItem `json:"data" validate:"required,min=1"`
|
||||
}
|
||||
|
||||
type FileManagerFileBaseCreateAttributes struct {
|
||||
UploadIntentUUID string `json:"upload_intent_uuid" validate:"required" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
BaseUUID string `json:"base_uuid" validate:"required" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
Name string `json:"name" validate:"required" example:"base.jpg"`
|
||||
}
|
||||
|
||||
type FileManagerFileBaseBulkCreateItem struct {
|
||||
Type string `json:"type" validate:"required,oneof=file_manager_file_create file_manager_file" example:"file_manager_file_create"`
|
||||
Attributes FileManagerFileBaseCreateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type FileManagerFileBaseBulkCreateRequest struct {
|
||||
Data []FileManagerFileBaseBulkCreateItem `json:"data" validate:"required,min=1"`
|
||||
}
|
||||
|
||||
type FileManagerFileDULCreateAttributes struct {
|
||||
UploadIntentUUID string `json:"upload_intent_uuid" validate:"required" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
DULUUID string `json:"dul_uuid,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
Name string `json:"name" validate:"required" example:"dul.jpg"`
|
||||
}
|
||||
|
||||
type FileManagerFileDULBulkCreateItem struct {
|
||||
Type string `json:"type" validate:"required,oneof=file_manager_file_create file_manager_file" example:"file_manager_file_create"`
|
||||
Attributes FileManagerFileDULCreateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type FileManagerFileDULBulkCreateRequest struct {
|
||||
Data []FileManagerFileDULBulkCreateItem `json:"data" validate:"required,min=1"`
|
||||
}
|
||||
|
||||
type FileManagerFileTakeoverCreateAttributes struct {
|
||||
UploadIntentUUID string `json:"upload_intent_uuid" validate:"required" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
TakeoverUUID string `json:"takeover_uuid,omitempty" example:"019e8713-aa19-7fb7-a510-a0332dc69697"`
|
||||
Name string `json:"name" validate:"required" example:"takeover-report.pdf"`
|
||||
}
|
||||
|
||||
type FileManagerFileTakeoverBulkCreateItem struct {
|
||||
Type string `json:"type" validate:"required,oneof=file_manager_file_create file_manager_file" example:"file_manager_file_create"`
|
||||
Attributes FileManagerFileTakeoverCreateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type FileManagerFileTakeoverBulkCreateRequest struct {
|
||||
Data []FileManagerFileTakeoverBulkCreateItem `json:"data" validate:"required,min=1"`
|
||||
}
|
||||
|
||||
type FileManagerFileTemplateCreateAttributes struct {
|
||||
TemplateUUID string `json:"template_uuid" validate:"required" example:"019f0386-0a00-7a4a-a2d8-30afc0e0c3ad"`
|
||||
HelicopterID string `json:"helicopter_id" validate:"required" example:"019e8713-aa19-7fb7-a510-a0332dc69697"`
|
||||
TakeoverID string `json:"takeover_id,omitempty" example:"019e8713-aa19-7fb7-a510-a0332dc69697"`
|
||||
Name string `json:"name" validate:"required" example:"collabora-draft.docx"`
|
||||
}
|
||||
|
||||
type FileManagerFileTemplateCreateRequest struct {
|
||||
Data struct {
|
||||
Type string `json:"type" validate:"required,oneof=file_manager_file_create_from_template file_manager_file_create"`
|
||||
Attributes FileManagerFileTemplateCreateAttributes `json:"attributes" validate:"required"`
|
||||
} `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
type FileManagerFileMissionCreateAttributes struct {
|
||||
UploadIntentUUID string `json:"upload_intent_uuid" validate:"required" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
MissionUUID string `json:"mission_uuid" validate:"required" example:"019d6774-98e8-7fba-9ef4-3795c0da8a13"`
|
||||
Name string `json:"name" validate:"required" example:"mission-brief.pdf"`
|
||||
}
|
||||
|
||||
type FileManagerFileMissionBulkCreateItem struct {
|
||||
Type string `json:"type" validate:"required,oneof=file_manager_file_create file_manager_file" example:"file_manager_file_create"`
|
||||
Attributes FileManagerFileMissionCreateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type FileManagerFileMissionBulkCreateRequest struct {
|
||||
Data []FileManagerFileMissionBulkCreateItem `json:"data" validate:"required,min=1"`
|
||||
}
|
||||
|
||||
type FileManagerFileUpdateAttributes struct {
|
||||
FolderID *string `json:"folder_id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
Name *string `json:"name,omitempty" example:"policy-v2.pdf"`
|
||||
}
|
||||
|
||||
type FileManagerFileUpdateData struct {
|
||||
Type string `json:"type" validate:"required,oneof=file_manager_file_update file_manager_file" example:"file_manager_file_update"`
|
||||
ID string `json:"id" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
Attributes FileManagerFileUpdateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type FileManagerFileUpdateRequest struct {
|
||||
Data FileManagerFileUpdateData `json:"data" validate:"required"`
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package request
|
||||
|
||||
type FileManagerFolderCreateAttributes struct {
|
||||
ParentID *string `json:"parent_id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
Name string `json:"name" validate:"required" example:"operations"`
|
||||
}
|
||||
|
||||
type FileManagerFolderCreateData struct {
|
||||
Type string `json:"type" validate:"required,oneof=file_manager_folder_create file_manager_folder" example:"file_manager_folder_create"`
|
||||
Attributes FileManagerFolderCreateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type FileManagerFolderCreateRequest struct {
|
||||
Data FileManagerFolderCreateData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
type FileManagerFolderUpdateAttributes struct {
|
||||
Name *string `json:"name,omitempty" example:"operations-updated"`
|
||||
ParentID *string `json:"parent_id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
}
|
||||
|
||||
type FileManagerFolderUpdateData struct {
|
||||
Type string `json:"type" validate:"required,oneof=file_manager_folder_update file_manager_folder" example:"file_manager_folder_update"`
|
||||
ID string `json:"id" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
Attributes FileManagerFolderUpdateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type FileManagerFolderUpdateRequest struct {
|
||||
Data FileManagerFolderUpdateData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
type FileManagerNodeMoveItem struct {
|
||||
UUID string `json:"uuid" validate:"required" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
DestinationFolderUUID *string `json:"destination_folder_uuid" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
}
|
||||
|
||||
type FileManagerNodeMoveBulkRequest struct {
|
||||
Data []FileManagerNodeMoveItem `json:"data" validate:"required,min=1"`
|
||||
}
|
||||
|
||||
type FileManagerNodePurgeItem struct {
|
||||
UUID string `json:"uuid" validate:"required" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
}
|
||||
|
||||
type FileManagerNodePurgeBulkRequest struct {
|
||||
Data []FileManagerNodePurgeItem `json:"data" validate:"required,min=1"`
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package request
|
||||
|
||||
type FileManagerRestoreTargetAttributes struct {
|
||||
TargetFolderID *string `json:"target_folder_id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
}
|
||||
|
||||
type FileManagerRestoreTargetData struct {
|
||||
Attributes FileManagerRestoreTargetAttributes `json:"attributes"`
|
||||
}
|
||||
|
||||
type FileManagerRestoreTargetRequest struct {
|
||||
Data *FileManagerRestoreTargetData `json:"data,omitempty"`
|
||||
}
|
||||
70
internal/transport/http/dto/request/fleet_status_request.go
Normal file
70
internal/transport/http/dto/request/fleet_status_request.go
Normal file
@@ -0,0 +1,70 @@
|
||||
package request
|
||||
|
||||
import shared "wucher/internal/transport/http/dto/shared"
|
||||
|
||||
type FleetStatusMarkServicedAttributes struct {
|
||||
ServicedAt string `json:"serviced_at,omitempty" example:"2026-05-29T07:43:06Z"`
|
||||
}
|
||||
|
||||
type FleetStatusMarkServicedData struct {
|
||||
Type string `json:"type" validate:"required,oneof=fleet_status_mark_serviced fleet_status" example:"fleet_status_mark_serviced"`
|
||||
Attributes FleetStatusMarkServicedAttributes `json:"attributes"`
|
||||
}
|
||||
|
||||
type FleetStatusMarkServicedRequest struct {
|
||||
Data FleetStatusMarkServicedData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
type FleetStatusCreateAttributes struct {
|
||||
HelicopterID string `json:"helicopter_id" validate:"required" example:"019d6771-5fb5-7337-837f-bc5ed85181a1"`
|
||||
MaintenanceSchedules []shared.MaintenanceScheduleAttributes `json:"maintenance_schedules" validate:"omitempty,dive"`
|
||||
Files []shared.FleetStatusFileAttributes `json:"files"`
|
||||
}
|
||||
|
||||
type FleetStatusCreateData struct {
|
||||
Type string `json:"type" validate:"required,oneof=fleet_status_create fleet_status" example:"fleet_status_create"`
|
||||
Attributes FleetStatusCreateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type FleetStatusCreateRequest struct {
|
||||
Data FleetStatusCreateData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
type FleetStatusUpdateAttributes struct {
|
||||
HelicopterID *string `json:"helicopter_id,omitempty"`
|
||||
MaintenanceSchedules []shared.MaintenanceScheduleAttributes `json:"maintenance_schedules" validate:"omitempty,dive"`
|
||||
Files []shared.FleetStatusFileAttributes `json:"files"`
|
||||
Summary *FleetStatusSummaryUpdate `json:"summary,omitempty"`
|
||||
}
|
||||
|
||||
type FleetStatusSummaryUpdate struct {
|
||||
Airframe *FleetStatusSummaryAirframeUpdate `json:"airframe,omitempty"`
|
||||
Engine1 *FleetStatusSummaryEngineUpdate `json:"engine_1,omitempty"`
|
||||
Engine2 *FleetStatusSummaryEngineUpdate `json:"engine_2,omitempty"`
|
||||
Landings *float64 `json:"landings,omitempty" example:"120"`
|
||||
FlightReports *float64 `json:"flight_reports,omitempty" example:"80"`
|
||||
RotorBrakeCycles *float64 `json:"rotor_brake_cycles,omitempty" example:"8"`
|
||||
HookReleases *float64 `json:"hook_releases,omitempty" example:"10"`
|
||||
}
|
||||
|
||||
type FleetStatusSummaryAirframeUpdate struct {
|
||||
Hours *float64 `json:"hours,omitempty" example:"6610.5"`
|
||||
Cycles *float64 `json:"cycles,omitempty" example:"320"`
|
||||
}
|
||||
|
||||
type FleetStatusSummaryEngineUpdate struct {
|
||||
Hours *float64 `json:"hours,omitempty" example:"8001.7"`
|
||||
GpcNgN1 *float64 `json:"gpc_ng_n1,omitempty" example:"98.7"`
|
||||
PtcNfN2 *float64 `json:"ptc_nf_n2,omitempty" example:"97.2"`
|
||||
Ccc *float64 `json:"ccc,omitempty" example:"44"`
|
||||
}
|
||||
|
||||
type FleetStatusUpdateData struct {
|
||||
Type string `json:"type" validate:"required,oneof=fleet_status_update fleet_status" example:"fleet_status_update"`
|
||||
ID string `json:"id" example:"019d6773-ccca-71dd-b9c7-8e6f531deb90"`
|
||||
Attributes FleetStatusUpdateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type FleetStatusUpdateRequest struct {
|
||||
Data FleetStatusUpdateData `json:"data" validate:"required"`
|
||||
}
|
||||
135
internal/transport/http/dto/request/flight_data_request.go
Normal file
135
internal/transport/http/dto/request/flight_data_request.go
Normal file
@@ -0,0 +1,135 @@
|
||||
package request
|
||||
|
||||
type FlightDataCreateAttributes struct {
|
||||
MissionID string `json:"mission_id" validate:"required"`
|
||||
CoPilotID *string `json:"co_pilot_id,omitempty"`
|
||||
FromICAOID *string `json:"from_icao_id,omitempty"`
|
||||
FromHospitalID *string `json:"from_hospital_id,omitempty"`
|
||||
ToICAOID *string `json:"to_icao_id,omitempty"`
|
||||
ToHospitalID *string `json:"to_hospital_id,omitempty"`
|
||||
FlightTakeOff *string `json:"flight_take_off,omitempty"`
|
||||
FlightLanding *string `json:"flight_landing,omitempty"`
|
||||
FlightDurationSecs *int64 `json:"flight_duration_seconds,omitempty"`
|
||||
FlightREDSecs *int64 `json:"flight_red_seconds,omitempty"`
|
||||
MaxN1 *float64 `json:"max_n1,omitempty"`
|
||||
MaxN2 *float64 `json:"max_n2,omitempty"`
|
||||
PaxCount *int `json:"pax_count,omitempty"`
|
||||
LandingCount *int `json:"landing_count,omitempty"`
|
||||
RotorBrakeCycle *int `json:"rotor_brake_cycle,omitempty"`
|
||||
HookReleases *int `json:"hook_releases,omitempty"`
|
||||
TicketNo *string `json:"ticket_no,omitempty"`
|
||||
Engine *string `json:"engine,omitempty"`
|
||||
DeliveryNoteNumber *string `json:"delivery_note_number,omitempty"`
|
||||
CustomerName *string `json:"customer_name,omitempty"`
|
||||
FlightPlanDistance *float64 `json:"flight_plan_distance,omitempty"`
|
||||
FlightPlanTimeSecs *int64 `json:"flight_plan_time_seconds,omitempty"`
|
||||
FlightPlanTrueCourse *float64 `json:"flight_plan_true_course,omitempty"`
|
||||
FuelBeforeFlight *float64 `json:"fuel_before_flight,omitempty"`
|
||||
FuelUpload *float64 `json:"fuel_upload,omitempty"`
|
||||
FuelAfterFlight *float64 `json:"fuel_after_flight,omitempty"`
|
||||
FuelPlanning *float64 `json:"fuel_planning,omitempty"`
|
||||
FlightPositioning *bool `json:"flight_positioning,omitempty" example:"false"`
|
||||
HESLO *FlightDataCreateSPOHESLOAttributes `json:"heslo,omitempty"`
|
||||
Logging *FlightDataCreateSPOLoggingAttributes `json:"logging,omitempty"`
|
||||
HEC *FlightDataCreateSPOHECAttributes `json:"hec,omitempty"`
|
||||
OtherInformation *string `json:"other_information,omitempty"`
|
||||
}
|
||||
|
||||
type FlightDataCreateSPOHESLOAttributes struct {
|
||||
Flights []FlightDataCreateSPOHESLOFlight `json:"flights,omitempty"`
|
||||
}
|
||||
|
||||
type FlightDataCreateSPOHESLOFlight struct {
|
||||
ROT int `json:"rot" example:"0"`
|
||||
// Facility category: heslo-rope-label.
|
||||
HESLORopeLabelID string `json:"heslo_rope_label_id,omitempty" example:"string"`
|
||||
HESLORopeLabelName string `json:"heslo_rope_label_name,omitempty" example:"string"`
|
||||
// Facility category: heslo-rope-length.
|
||||
Slings []FlightDataCreateSPOHESLOSling `json:"slings,omitempty"`
|
||||
}
|
||||
|
||||
type FlightDataCreateSPOHESLOSling struct {
|
||||
// Facility category: heslo-rope-length.
|
||||
SlingID string `json:"sling_id,omitempty" example:"string"`
|
||||
SlingName string `json:"sling_name,omitempty" example:"string"`
|
||||
}
|
||||
|
||||
type FlightDataCreateSPOLoggingAttributes struct {
|
||||
Slings []FlightDataCreateSPOLoggingSling `json:"slings,omitempty"`
|
||||
}
|
||||
|
||||
type FlightDataCreateSPOLoggingSling struct {
|
||||
// Facility category: heslo-hook.
|
||||
SlingID string `json:"sling_id,omitempty" example:"string"`
|
||||
SlingName string `json:"sling_name,omitempty" example:"string"`
|
||||
}
|
||||
|
||||
type FlightDataCreateSPOHECAttributes struct {
|
||||
Flights []FlightDataCreateSPOHECFlight `json:"flights,omitempty"`
|
||||
Loads []FlightDataCreateSPOHECLoad `json:"loads,omitempty"`
|
||||
Slings []FlightDataCreateSPOHECSling `json:"slings,omitempty"`
|
||||
}
|
||||
|
||||
type FlightDataCreateSPOHECFlight struct {
|
||||
// Facility category: hec-rope-label.
|
||||
EquipmentID string `json:"equipment_id,omitempty" example:"string"`
|
||||
EquipmentName string `json:"equipment_name,omitempty" example:"string"`
|
||||
HECCycle int `json:"hec_cycle" example:"0"`
|
||||
ROT int `json:"rot" example:"0"`
|
||||
}
|
||||
|
||||
type FlightDataCreateSPOHECLoad struct {
|
||||
// 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 FlightDataCreateSPOHECSling struct {
|
||||
// Facility category: hec-rope-length.
|
||||
SlingID string `json:"sling_id,omitempty" example:"string"`
|
||||
SlingName string `json:"sling_name,omitempty" example:"string"`
|
||||
}
|
||||
|
||||
type FlightDataCreateData struct {
|
||||
Type string `json:"type" validate:"required,oneof=flight_data_create flight_data" example:"flight_data_create"`
|
||||
Attributes FlightDataCreateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type FlightDataCreateRequest struct {
|
||||
Data FlightDataCreateData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
type FlightDataUpdateData struct {
|
||||
Type string `json:"type" validate:"required,oneof=flight_data_update" example:"flight_data_update"`
|
||||
Attributes FlightDataCreateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type FlightDataUpdateRequest struct {
|
||||
Data FlightDataUpdateData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
// FlightDataCreateSPOExampleRequest is used only for Swagger examples.
|
||||
// Runtime parsing still uses FlightDataCreateRequest.
|
||||
type FlightDataCreateSPOExampleRequest struct {
|
||||
Data FlightDataCreateSPOExampleData `json:"data"`
|
||||
}
|
||||
|
||||
type FlightDataCreateSPOExampleData struct {
|
||||
Type string `json:"type" example:"flight_data_create"`
|
||||
Attributes FlightDataCreateSPOExampleAttributes `json:"attributes"`
|
||||
}
|
||||
|
||||
type FlightDataCreateSPOExampleAttributes struct {
|
||||
MissionID string `json:"mission_id" example:"019d6774-98e8-7fba-9ef4-3795c0da8a13"`
|
||||
CoPilotID string `json:"co_pilot_id,omitempty" example:"019d61db-53c6-7280-87ec-e65f205c6d3b"`
|
||||
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"`
|
||||
FromICAOID string `json:"from_icao_id,omitempty" example:"019d6774-98e8-7fba-9ef4-3795c0da8a13"`
|
||||
ToICAOID string `json:"to_icao_id,omitempty" example:"019d6774-98e8-7fba-9ef4-3795c0da8a13"`
|
||||
HookReleases int `json:"hook_releases,omitempty" example:"0"`
|
||||
TicketNo string `json:"ticket_no,omitempty" example:"SPO-001"`
|
||||
Engine string `json:"engine,omitempty" example:"AIRBUS H145"`
|
||||
DeliveryNoteNumber string `json:"delivery_note_number,omitempty" example:"DN-2026-0001"`
|
||||
CustomerName string `json:"customer_name,omitempty" example:"Patient Transfer"`
|
||||
OtherInformation string `json:"other_information,omitempty" example:"SPO mission sample"`
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package request
|
||||
|
||||
type FlightInspectionFileChecklistCreateAttributes struct {
|
||||
IsDone *bool `json:"is_done,omitempty" example:"false"`
|
||||
HelicopterFileID string `json:"helicopter_file_id" validate:"required" example:"019d6771-5fb5-7337-837f-bc5ed85181a1"`
|
||||
FlightInspectionID string `json:"flight_inspection_id" validate:"required" example:"019d6772-471c-7b70-b42a-d94020ef61e4"`
|
||||
}
|
||||
|
||||
type FlightInspectionFileChecklistCreateData struct {
|
||||
Type string `json:"type" validate:"required,oneof=flight_inspection_file_checklist_create flight_inspection_file_checklist" example:"flight_inspection_file_checklist_create"`
|
||||
Attributes FlightInspectionFileChecklistCreateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type FlightInspectionFileChecklistCreateRequest struct {
|
||||
Data FlightInspectionFileChecklistCreateData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
type FlightInspectionFileChecklistUpdateAttributes struct {
|
||||
IsDone *bool `json:"is_done,omitempty" example:"true"`
|
||||
HelicopterFileID *string `json:"helicopter_file_id,omitempty" example:"019d6771-5fb5-7337-837f-bc5ed85181a1"`
|
||||
FlightInspectionID *string `json:"flight_inspection_id,omitempty" example:"019d6772-471c-7b70-b42a-d94020ef61e4"`
|
||||
}
|
||||
|
||||
type FlightInspectionFileChecklistUpdateData struct {
|
||||
Type string `json:"type" validate:"required,oneof=flight_inspection_file_checklist_update flight_inspection_file_checklist" example:"flight_inspection_file_checklist_update"`
|
||||
ID string `json:"id" example:"019d6773-ccca-71dd-b9c7-8e6f531deb90"`
|
||||
Attributes FlightInspectionFileChecklistUpdateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type FlightInspectionFileChecklistUpdateRequest struct {
|
||||
Data FlightInspectionFileChecklistUpdateData `json:"data" validate:"required"`
|
||||
}
|
||||
32
internal/transport/http/dto/request/flight_request.go
Normal file
32
internal/transport/http/dto/request/flight_request.go
Normal file
@@ -0,0 +1,32 @@
|
||||
package request
|
||||
|
||||
type FlightCreateAttributes struct {
|
||||
Date string `json:"date" validate:"required" example:"2026-04-14"`
|
||||
DutyRosterID *string `json:"duty_roster_id,omitempty" example:"019d6772-471c-7b70-b42a-d94020ef61e4"`
|
||||
ReserveAcID *string `json:"reserve_ac_id,omitempty" example:"019d6773-ccca-71dd-b9c7-8e6f531deb90"`
|
||||
}
|
||||
|
||||
type FlightCreateData struct {
|
||||
Type string `json:"type" validate:"required,oneof=flight_create flight" example:"flight_create"`
|
||||
Attributes FlightCreateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type FlightCreateRequest struct {
|
||||
Data FlightCreateData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
type FlightUpdateAttributes struct {
|
||||
Date *string `json:"date,omitempty" example:"2026-04-14"`
|
||||
DutyRosterID *string `json:"duty_roster_id,omitempty" example:"019d6772-471c-7b70-b42a-d94020ef61e4"`
|
||||
ReserveAcID *string `json:"reserve_ac_id,omitempty" example:"019d6773-ccca-71dd-b9c7-8e6f531deb90"`
|
||||
}
|
||||
|
||||
type FlightUpdateData struct {
|
||||
Type string `json:"type" validate:"required,oneof=flight_update flight" example:"flight_update"`
|
||||
ID string `json:"id" example:"019d6774-98e8-7fba-9ef4-3795c0da8a13"`
|
||||
Attributes FlightUpdateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type FlightUpdateRequest struct {
|
||||
Data FlightUpdateData `json:"data" validate:"required"`
|
||||
}
|
||||
21
internal/transport/http/dto/request/fm_report_request.go
Normal file
21
internal/transport/http/dto/request/fm_report_request.go
Normal file
@@ -0,0 +1,21 @@
|
||||
package request
|
||||
|
||||
type FMReportUpdateAttributes struct {
|
||||
// Engine1GpcN1 - GPC/N1 value for engine 1. Optional.
|
||||
Engine1GpcN1 *string `json:"engine1_gpc_n1,omitempty" example:"GPC/N1 63.2"`
|
||||
// Engine1PtcN2 - PTC/N2 value for engine 1. Optional.
|
||||
Engine1PtcN2 *string `json:"engine1_ptc_n2,omitempty" example:"PTC/N2 61.8"`
|
||||
// Engine2GpcN1 - GPC/N1 value for engine 2. Optional.
|
||||
Engine2GpcN1 *string `json:"engine2_gpc_n1,omitempty" example:"GPC/N1 63.2"`
|
||||
// Engine2PtcN2 - PTC/N2 value for engine 2. Optional.
|
||||
Engine2PtcN2 *string `json:"engine2_ptc_n2,omitempty" example:"PTC/N2 61.8"`
|
||||
}
|
||||
|
||||
type FMReportUpdateData struct {
|
||||
Type string `json:"type" validate:"required,oneof=fm_report_update fm_report" example:"fm_report_update"`
|
||||
Attributes FMReportUpdateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type FMReportUpdateRequest struct {
|
||||
Data FMReportUpdateData `json:"data" validate:"required"`
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
package request
|
||||
|
||||
type HelicopterFileCreateAttributes struct {
|
||||
Section string `json:"section" validate:"required,oneof=bfi fpwb afi" enums:"bfi,fpwb,afi" example:"bfi"`
|
||||
Position *int `json:"position,omitempty" example:"1"`
|
||||
IsMandatory *bool `json:"is_mandatory,omitempty" example:"true"`
|
||||
HelicopterID string `json:"helicopter_id" example:"019d6771-5fb5-7337-837f-bc5ed85181a1"`
|
||||
UploadIntentUUID string `json:"upload_intent_uuid" validate:"required" example:"019d6d0d-2de2-7db1-80a2-2862d43af620"`
|
||||
FileName string `json:"file_name" validate:"required" example:"Before Flight Checklist.pdf"`
|
||||
FolderUUID *string `json:"folder_uuid,omitempty" example:"019d6d0d-8c24-72e3-9f58-c9ea0fbf0bb1"`
|
||||
}
|
||||
|
||||
type HelicopterFileUploadAttributes struct {
|
||||
Name string `json:"name" validate:"required" example:"Before Flight Checklist.pdf"`
|
||||
ContentType string `json:"content_type" validate:"required" example:"application/pdf"`
|
||||
SizeBytes int64 `json:"size_bytes" validate:"required,gte=0" example:"1024"`
|
||||
}
|
||||
|
||||
type HelicopterFileUploadData struct {
|
||||
Type string `json:"type" validate:"required,oneof=helicopter_file_upload" example:"helicopter_file_upload"`
|
||||
Attributes HelicopterFileUploadAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type HelicopterFileUploadRequest struct {
|
||||
Data HelicopterFileUploadData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
type HelicopterFileUploadBulkRequest struct {
|
||||
Data []HelicopterFileUploadData `json:"data" validate:"required,min=1"`
|
||||
}
|
||||
|
||||
type HelicopterFileCancelUploadAttributes struct {
|
||||
UploadIntentUUID string `json:"upload_intent_uuid" validate:"required" example:"019d6d0d-2de2-7db1-80a2-2862d43af620"`
|
||||
}
|
||||
|
||||
type HelicopterFileCancelUploadData struct {
|
||||
Type string `json:"type" validate:"required,oneof=helicopter_file_cancel_upload" example:"helicopter_file_cancel_upload"`
|
||||
Attributes HelicopterFileCancelUploadAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type HelicopterFileCancelUploadBulkRequest struct {
|
||||
Data []HelicopterFileCancelUploadData `json:"data" validate:"required,min=1"`
|
||||
}
|
||||
|
||||
type HelicopterFileCreateData struct {
|
||||
Type string `json:"type" validate:"required,oneof=helicopter_file_create helicopter_file" example:"helicopter_file_create"`
|
||||
Attributes HelicopterFileCreateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type HelicopterFileCreateRequest struct {
|
||||
Data HelicopterFileCreateData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
type HelicopterFileCreateBulkRequest struct {
|
||||
Data []HelicopterFileCreateData `json:"data" validate:"required,min=1"`
|
||||
}
|
||||
|
||||
type HelicopterFileUpdateAttributes struct {
|
||||
Section *string `json:"section,omitempty" validate:"omitempty,oneof=bfi fpwb afi" enums:"bfi,fpwb,afi" example:"fpwb"`
|
||||
Position *int `json:"position,omitempty" example:"1"`
|
||||
IsMandatory *bool `json:"is_mandatory,omitempty" example:"true"`
|
||||
HelicopterID *string `json:"helicopter_id,omitempty" example:"019d6771-5fb5-7337-837f-bc5ed85181a1"`
|
||||
FileName *string `json:"file_name,omitempty" example:"Before Flight Checklist v2.pdf"`
|
||||
}
|
||||
|
||||
type HelicopterFileUpdateData struct {
|
||||
Type string `json:"type" validate:"required,oneof=helicopter_file_update helicopter_file" example:"helicopter_file_update"`
|
||||
ID string `json:"id" validate:"required" example:"019d6773-ccca-71dd-b9c7-8e6f531deb90"`
|
||||
Attributes HelicopterFileUpdateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type HelicopterFileUpdateRequest struct {
|
||||
Data HelicopterFileUpdateData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
type HelicopterFileUpdateBulkRequest struct {
|
||||
Data []HelicopterFileUpdateData `json:"data" validate:"required,min=1"`
|
||||
}
|
||||
|
||||
type HelicopterFileDeleteData struct {
|
||||
Type string `json:"type" validate:"required,oneof=helicopter_file_delete helicopter_file" example:"helicopter_file_delete"`
|
||||
ID string `json:"id" validate:"required" example:"019d6773-ccca-71dd-b9c7-8e6f531deb90"`
|
||||
}
|
||||
|
||||
type HelicopterFileDeleteRequest struct {
|
||||
Data HelicopterFileDeleteData `json:"data" validate:"required"`
|
||||
}
|
||||
70
internal/transport/http/dto/request/helicopter_request.go
Normal file
70
internal/transport/http/dto/request/helicopter_request.go
Normal file
@@ -0,0 +1,70 @@
|
||||
package request
|
||||
|
||||
import "wucher/internal/transport/http/dto"
|
||||
|
||||
type HelicopterCreateAttributes struct {
|
||||
Designation string `json:"designation" validate:"required" example:"OE-XHZ"`
|
||||
Identifier string `json:"identifier" validate:"required" example:"ABC"`
|
||||
Type string `json:"type" validate:"required" 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,omitempty" example:"4.1"`
|
||||
NR1 *bool `json:"nr1,omitempty" example:"true"`
|
||||
NR2 *bool `json:"nr2,omitempty" example:"true"`
|
||||
LH *bool `json:"lh,omitempty" example:"true"`
|
||||
RH *bool `json:"rh,omitempty" example:"true"`
|
||||
MGB *bool `json:"mgb,omitempty" example:"true"`
|
||||
IGB *bool `json:"igb,omitempty" example:"false"`
|
||||
TGB *bool `json:"tgb,omitempty" example:"true"`
|
||||
UTCOffset *int `json:"utc_offset,omitempty" example:"-1"`
|
||||
FileUUID *string `json:"file_uuid,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e90"`
|
||||
Dry *bool `json:"dry,omitempty" example:"false"`
|
||||
AOG *bool `json:"aog,omitempty" example:"false"`
|
||||
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,omitempty" example:"true"`
|
||||
}
|
||||
|
||||
type HelicopterCreateData struct {
|
||||
Type string `json:"type" validate:"required,oneof=helicopter_create helicopter" example:"helicopter_create"`
|
||||
Attributes HelicopterCreateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type HelicopterCreateRequest struct {
|
||||
Data HelicopterCreateData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
type HelicopterUpdateAttributes struct {
|
||||
Designation *string `json:"designation,omitempty" example:"OE-XHZ"`
|
||||
Identifier *string `json:"identifier,omitempty" example:"ABC"`
|
||||
Type *string `json:"type,omitempty" example:"EC-135"`
|
||||
SortKey dto.NullInt `json:"sortkey,omitempty" swaggertype:"integer" example:"10"`
|
||||
Engine1 *string `json:"engine_1,omitempty" example:"TM"`
|
||||
Engine2 *string `json:"engine_2,omitempty" example:"TM"`
|
||||
Consumption *float64 `json:"consumption_lt_min,omitempty" example:"4.1"`
|
||||
NR1 *bool `json:"nr1,omitempty" example:"true"`
|
||||
NR2 *bool `json:"nr2,omitempty" example:"true"`
|
||||
LH *bool `json:"lh,omitempty" example:"true"`
|
||||
RH *bool `json:"rh,omitempty" example:"true"`
|
||||
MGB *bool `json:"mgb,omitempty" example:"true"`
|
||||
IGB *bool `json:"igb,omitempty" example:"false"`
|
||||
TGB *bool `json:"tgb,omitempty" example:"true"`
|
||||
UTCOffset *int `json:"utc_offset,omitempty" example:"-1"`
|
||||
FileUUID *string `json:"file_uuid,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e90"`
|
||||
Dry *bool `json:"dry,omitempty" example:"false"`
|
||||
AOG *bool `json:"aog,omitempty" example:"false"`
|
||||
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,omitempty" example:"true"`
|
||||
}
|
||||
|
||||
type HelicopterUpdateData struct {
|
||||
Type string `json:"type" validate:"required,oneof=helicopter_update helicopter" example:"helicopter_update"`
|
||||
ID string `json:"id" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
Attributes HelicopterUpdateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type HelicopterUpdateRequest struct {
|
||||
Data HelicopterUpdateData `json:"data" validate:"required"`
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package request
|
||||
|
||||
type MasterSettingsMicrosoftEntraUpsertAttributes struct {
|
||||
TenantID string `json:"MS_ENTRA_TENANT_ID" validate:"required" example:"your-tenant-id"`
|
||||
ClientID string `json:"MS_ENTRA_CLIENT_ID" validate:"required" example:"your-client-id"`
|
||||
ClientSecret string `json:"MS_ENTRA_CLIENT_SECRET" example:"********"`
|
||||
RedirectURL string `json:"MS_ENTRA_REDIRECT_URL" validate:"required" example:"https://example.com/api/v1/auth/microsoft/callback"`
|
||||
Authority string `json:"MS_ENTRA_AUTHORITY" validate:"required" example:"https://login.microsoftonline.com/"`
|
||||
Scopes string `json:"MS_ENTRA_SCOPES" validate:"required" example:"openid,profile,email"`
|
||||
}
|
||||
|
||||
type MasterSettingsMicrosoftEntraUpsertData struct {
|
||||
Type string `json:"type" validate:"required,oneof=master_settings_microsoft_entra_upsert master_settings" example:"master_settings_microsoft_entra_upsert"`
|
||||
Attributes MasterSettingsMicrosoftEntraUpsertAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type MasterSettingsMicrosoftEntraUpsertRequest struct {
|
||||
Data MasterSettingsMicrosoftEntraUpsertData `json:"data" validate:"required"`
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package request
|
||||
|
||||
type MasterSettingsCreateAttributes struct {
|
||||
CompanyName string `json:"company_name" validate:"required" 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,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
CoverFileUUID *string `json:"cover_file_uuid,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
}
|
||||
|
||||
type MasterSettingsCreateData struct {
|
||||
Type string `json:"type" validate:"required,oneof=master_settings_create master_settings" example:"master_settings_create"`
|
||||
Attributes MasterSettingsCreateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type MasterSettingsCreateRequest struct {
|
||||
Data MasterSettingsCreateData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
type MasterSettingsUpdateAttributes struct {
|
||||
CompanyName *string `json:"company_name,omitempty" 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,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
CoverFileUUID *string `json:"cover_file_uuid,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
}
|
||||
|
||||
type MasterSettingsUpdateData struct {
|
||||
Type string `json:"type" validate:"required,oneof=master_settings_update master_settings" example:"master_settings_update"`
|
||||
ID string `json:"id" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
Attributes MasterSettingsUpdateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type MasterSettingsUpdateRequest struct {
|
||||
Data MasterSettingsUpdateData `json:"data" validate:"required"`
|
||||
}
|
||||
52
internal/transport/http/dto/request/mcf_request.go
Normal file
52
internal/transport/http/dto/request/mcf_request.go
Normal file
@@ -0,0 +1,52 @@
|
||||
package request
|
||||
|
||||
// MCFSetAttributes toggles a helicopter's MCF (Yes/No) and is the DRAFT work endpoint.
|
||||
// active=true (or omitted) ACTIVATES it — creates the draft MCF if none is open, or
|
||||
// UPDATES the open draft with the provided check-flight fields (all optional; partial
|
||||
// edits allowed). Finalize it later via POST /mcf/sign (sign:true).
|
||||
// active=false DEACTIVATES it — cancels the open 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 by this.
|
||||
type MCFSetAttributes struct {
|
||||
Active *bool `json:"active,omitempty" example:"true"`
|
||||
// FlightID — OPTIONAL flight this check flight is performed on (on activate).
|
||||
FlightID string `json:"flight_id,omitempty" validate:"omitempty,uuid" example:"019d6774-98e8-7fba-9ef4-3795c0da8a13"`
|
||||
AFHours string `json:"af_hours,omitempty" example:"1245.3"`
|
||||
LandingCount *int `json:"landing_count,omitempty" example:"3"`
|
||||
UTCTime string `json:"utc_time,omitempty" example:"2026-06-17T08:30:00Z"`
|
||||
Date string `json:"date,omitempty" example:"2026-06-17"`
|
||||
Result string `json:"result,omitempty" validate:"omitempty,oneof=passed failed" enums:"passed,failed" example:"passed"`
|
||||
Notes *string `json:"notes,omitempty" example:"MCF required after engine mount work"`
|
||||
}
|
||||
|
||||
type MCFSetData struct {
|
||||
Type string `json:"type" validate:"required,oneof=mcf_set mcf" example:"mcf_set"`
|
||||
Attributes MCFSetAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type MCFSetRequest struct {
|
||||
Data MCFSetData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
// MCFCompleteAttributes signs (completes) or unsigns an MCF. sign toggles the state:
|
||||
// - sign=true (or omitted) SIGNS it — af_hours, landing_count, utc_time, date and
|
||||
// result are required. "passed" clears the aircraft; "failed" keeps it grounded.
|
||||
// - sign=false UNSIGNS it — reverts the MCF to a draft (the fields below are ignored).
|
||||
type MCFCompleteAttributes struct {
|
||||
Sign *bool `json:"sign,omitempty" example:"true"`
|
||||
AFHours string `json:"af_hours,omitempty" example:"1245.3"`
|
||||
LandingCount *int `json:"landing_count,omitempty" example:"3"`
|
||||
UTCTime string `json:"utc_time,omitempty" example:"2026-06-17T08:30:00Z"`
|
||||
Date string `json:"date,omitempty" example:"2026-06-17"`
|
||||
Result string `json:"result,omitempty" validate:"omitempty,oneof=passed failed" enums:"passed,failed" example:"passed"`
|
||||
Notes *string `json:"notes,omitempty" example:"Vibration within limits after check flight"`
|
||||
}
|
||||
|
||||
type MCFCompleteData struct {
|
||||
Type string `json:"type" validate:"required,oneof=mcf_complete mcf_sign mcf" example:"mcf_sign"`
|
||||
Attributes MCFCompleteAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type MCFCompleteRequest struct {
|
||||
Data MCFCompleteData `json:"data" validate:"required"`
|
||||
}
|
||||
53
internal/transport/http/dto/request/mission_request.go
Normal file
53
internal/transport/http/dto/request/mission_request.go
Normal file
@@ -0,0 +1,53 @@
|
||||
package request
|
||||
|
||||
type MissionFileInput struct {
|
||||
UploadIntentUUID string `json:"upload_intent_uuid" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
Name string `json:"name" example:"mission-brief.pdf"`
|
||||
}
|
||||
|
||||
type MissionCreateAttributes struct {
|
||||
FlightID string `json:"flight_id" validate:"required" example:"019d6774-98e8-7fba-9ef4-3795c0da8a13"`
|
||||
Type string `json:"type" validate:"required" example:"HEMS"`
|
||||
SubtypeID string `json:"subtype_id,omitempty" example:"019d6774-98e8-7fba-9ef4-3795c0da8a99"`
|
||||
Note string `json:"note,omitempty" example:"Mission note"`
|
||||
Files []MissionFileInput `json:"files,omitempty"`
|
||||
}
|
||||
|
||||
type MissionCreateData struct {
|
||||
Type string `json:"type" validate:"required,oneof=mission_create mission" example:"mission_create"`
|
||||
Attributes MissionCreateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type MissionCreateRequest struct {
|
||||
Data MissionCreateData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
type MissionUpdateAttributes struct {
|
||||
Type string `json:"type" validate:"required" example:"SPO"`
|
||||
SubtypeID string `json:"subtype_id,omitempty" example:"019d6774-98e8-7fba-9ef4-3795c0da8a99"`
|
||||
Note string `json:"note,omitempty" example:"Mission note"`
|
||||
Files []MissionFileInput `json:"files,omitempty"`
|
||||
}
|
||||
|
||||
type MissionUpdateData struct {
|
||||
Type string `json:"type" validate:"required,oneof=mission_update mission" example:"mission_update"`
|
||||
Attributes MissionUpdateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type MissionUpdateRequest struct {
|
||||
Data MissionUpdateData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
type MissionTypeCreateAttributes struct {
|
||||
CodeType string `json:"code_type" validate:"required" example:"HEMS"`
|
||||
TypeName string `json:"name" validate:"required" example:"HEMS"`
|
||||
}
|
||||
|
||||
type MissionTypeCreateData struct {
|
||||
Type string `json:"type" validate:"required,oneof=mission_type_create mission_type" example:"mission_type_create"`
|
||||
Attributes MissionTypeCreateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type MissionTypeCreateRequest struct {
|
||||
Data MissionTypeCreateData `json:"data" validate:"required"`
|
||||
}
|
||||
18
internal/transport/http/dto/request/other_person_request.go
Normal file
18
internal/transport/http/dto/request/other_person_request.go
Normal file
@@ -0,0 +1,18 @@
|
||||
package request
|
||||
|
||||
// OtherPersonAttributesInput carries the editable fields of a reusable non-staff person.
|
||||
type OtherPersonAttributesInput 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 OtherPersonRequestData struct {
|
||||
Type string `json:"type,omitempty" example:"other_person"`
|
||||
Attributes OtherPersonAttributesInput `json:"attributes"`
|
||||
}
|
||||
|
||||
// OtherPersonRequest is the JSON:API body for create/update of the other-people master.
|
||||
type OtherPersonRequest struct {
|
||||
Data OtherPersonRequestData `json:"data"`
|
||||
}
|
||||
249
internal/transport/http/dto/request/reserve_ac_request.go
Normal file
249
internal/transport/http/dto/request/reserve_ac_request.go
Normal file
@@ -0,0 +1,249 @@
|
||||
package request
|
||||
|
||||
import "encoding/json"
|
||||
|
||||
type ReserveAcCreateAttributes struct {
|
||||
AircraftID string `json:"helicopter_id" validate:"required" example:"019d6771-5fb5-7337-837f-bc5ed85181a1"`
|
||||
FlightID string `json:"flight_id" validate:"required" example:"019d6773-ccca-71dd-b9c7-8e6f531deb90"`
|
||||
Inspection ReserveAcInspectionCreateAttributes `json:"inspection" validate:"required"`
|
||||
}
|
||||
|
||||
type ReserveAcInspectionCreateAttributes struct {
|
||||
InspectionDate string `json:"inspection_date" validate:"required" example:"2026-04-15"`
|
||||
Before ReserveAcBeforeInspectionAttributes `json:"before" validate:"required"`
|
||||
Prepare ReserveAcPrepareInspectionAttributes `json:"prepare" validate:"required"`
|
||||
FleetStatusFile ReserveAcFleetStatusFileAttributes `json:"fleet_status_file,omitempty"`
|
||||
}
|
||||
|
||||
type ReserveAcBeforeInspectionAttributes struct {
|
||||
OilEngineNR1Checked *bool `json:"oil_engine_nr1_checked,omitempty"`
|
||||
OilEngineNR2Checked *bool `json:"oil_engine_nr2_checked,omitempty"`
|
||||
HydraulicLHChecked *bool `json:"hydraulic_lh_checked,omitempty"`
|
||||
HydraulicRHChecked *bool `json:"hydraulic_rh_checked,omitempty"`
|
||||
OilTransmissionMGBChecked *bool `json:"oil_transmission_mgb_checked,omitempty"`
|
||||
OilTransmissionIGBChecked *bool `json:"oil_transmission_igb_checked,omitempty"`
|
||||
OilTransmissionTGBChecked *bool `json:"oil_transmission_tgb_checked,omitempty"`
|
||||
FuelAmount *float64 `json:"fuel_amount,omitempty"`
|
||||
FuelUnit *string `json:"fuel_unit,omitempty"`
|
||||
FuelAddedAmount *float64 `json:"fuel_added_amount,omitempty"`
|
||||
Note *string `json:"note,omitempty"`
|
||||
FileChecklist []ReserveAcFileChecklistItem `json:"file_checklist,omitempty"`
|
||||
}
|
||||
|
||||
type ReserveAcFileChecklistItem struct {
|
||||
HelicopterFileID string `json:"helicopter_file_id" validate:"required" example:"019d7000-aaaa-7bbb-8ccc-111111111111"`
|
||||
IsDone bool `json:"is_done" example:"true"`
|
||||
}
|
||||
|
||||
type ReserveAcPrepareInspectionAttributes struct {
|
||||
NotamBriefing *bool `json:"notam_briefing,omitempty"`
|
||||
WeatherBriefing *bool `json:"weather_briefing,omitempty"`
|
||||
OperationalFlightPlan *bool `json:"operational_flight_plan,omitempty"`
|
||||
FileChecklist []ReserveAcFileChecklistItem `json:"file_checklist,omitempty"`
|
||||
}
|
||||
|
||||
type ReserveAcFleetStatusFileAttributes struct {
|
||||
FileChecklist []ReserveAcFileChecklistItem `json:"file_checklist,omitempty"`
|
||||
}
|
||||
|
||||
type ReserveAcAfterFlightInspectionAttributes struct {
|
||||
OilEngineNR1Checked *string `json:"oil_engine_nr1_checked,omitempty"`
|
||||
OilEngineNR2Checked *string `json:"oil_engine_nr2_checked,omitempty"`
|
||||
HydraulicLHChecked *string `json:"hydraulic_lh_checked,omitempty"`
|
||||
HydraulicRHChecked *string `json:"hydraulic_rh_checked,omitempty"`
|
||||
OilTransmissionMGBChecked *string `json:"oil_transmission_mgb_checked,omitempty"`
|
||||
OilTransmissionIGBChecked *string `json:"oil_transmission_igb_checked,omitempty"`
|
||||
OilTransmissionTGBChecked *string `json:"oil_transmission_tgb_checked,omitempty"`
|
||||
Note *string `json:"note,omitempty"`
|
||||
FileChecklist []ReserveAcFileChecklistItem `json:"file_checklist,omitempty"`
|
||||
}
|
||||
|
||||
type ReserveAcAfterFlightInspectionUpsertData struct {
|
||||
Type string `json:"type" validate:"required,oneof=after_flight_inspection_upsert after_flight_inspection"`
|
||||
Attributes ReserveAcAfterFlightInspectionAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type ReserveAcAfterFlightInspectionUpsertRequest struct {
|
||||
Data ReserveAcAfterFlightInspectionUpsertData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
type LastFlightsInspectionUpsertAttributes struct {
|
||||
FlightInspectionID string `json:"flight_inspection_id" validate:"required"`
|
||||
ReserveAcAfterFlightInspectionAttributes
|
||||
}
|
||||
|
||||
type LastFlightsInspectionCreateData struct {
|
||||
Type string `json:"type" validate:"required,oneof=last_flights_inspection_create last_flights_inspection"`
|
||||
Attributes LastFlightsInspectionUpsertAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type LastFlightsInspectionCreateRequest struct {
|
||||
Data LastFlightsInspectionCreateData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
type LastFlightsInspectionUpdateData struct {
|
||||
Type string `json:"type" validate:"required,oneof=last_flights_inspection_update last_flights_inspection"`
|
||||
Attributes LastFlightsInspectionUpsertAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type LastFlightsInspectionUpdateRequest struct {
|
||||
Data LastFlightsInspectionUpdateData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
type LastFlightsInspectionDeleteAttributes struct {
|
||||
FlightInspectionID string `json:"flight_inspection_id" validate:"required"`
|
||||
}
|
||||
|
||||
type LastFlightsInspectionDeleteData struct {
|
||||
Type string `json:"type" validate:"required,oneof=last_flights_inspection_delete last_flights_inspection"`
|
||||
Attributes LastFlightsInspectionDeleteAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type LastFlightsInspectionDeleteRequest struct {
|
||||
Data LastFlightsInspectionDeleteData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
type ReserveAcCreateData struct {
|
||||
Type string `json:"type" validate:"required,oneof=reserve_ac_create reserve_ac" example:"reserve_ac_create"`
|
||||
Attributes ReserveAcCreateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type ReserveAcCreateRequest struct {
|
||||
Data ReserveAcCreateData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
type ReserveAcUpdateAttributes struct {
|
||||
AircraftID *string `json:"helicopter_id,omitempty" example:"019d6771-5fb5-7337-837f-bc5ed85181a1"`
|
||||
FlightID *string `json:"flight_id,omitempty" example:"019d6773-ccca-71dd-b9c7-8e6f531deb90"`
|
||||
Inspection *ReserveAcInspectionUpdateAttributes `json:"inspection,omitempty"`
|
||||
}
|
||||
|
||||
type ReserveAcInspectionUpdateAttributes struct {
|
||||
InspectionDate *string `json:"inspection_date,omitempty" example:"2026-04-15"`
|
||||
Before *ReserveAcBeforeInspectionAttributes `json:"before,omitempty"`
|
||||
Prepare *ReserveAcPrepareInspectionAttributes `json:"prepare,omitempty"`
|
||||
}
|
||||
|
||||
type ReserveAcUpdateData struct {
|
||||
Type string `json:"type" validate:"required,oneof=reserve_ac_update reserve_ac" example:"reserve_ac_update"`
|
||||
ID string `json:"id" example:"019d6773-ccca-71dd-b9c7-8e6f531deb90"`
|
||||
Attributes ReserveAcUpdateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type ReserveAcUpdateRequest struct {
|
||||
Data ReserveAcUpdateData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
type ReserveAcDeleteData struct {
|
||||
ID string `json:"id" validate:"required" example:"019d6773-ccca-71dd-b9c7-8e6f531deb90"`
|
||||
}
|
||||
|
||||
type ReserveAcDeleteRequest struct {
|
||||
Data ReserveAcDeleteData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
type TakeoverCreateAttributes struct {
|
||||
BaseID *string `json:"base_id,omitempty"`
|
||||
DutyDate string `json:"duty_date" validate:"required"`
|
||||
Notes *string `json:"notes,omitempty"`
|
||||
Detail *TakeoverRosterDetailsInput `json:"roster_detail,omitempty"`
|
||||
AircraftID *string `json:"helicopter_id,omitempty"`
|
||||
Inspection *ReserveAcInspectionCreateAttributes `json:"inspection,omitempty"`
|
||||
Files []TakeoverCreateFileInput `json:"files,omitempty" validate:"omitempty,dive"`
|
||||
EditedTemplateFileIDs []string `json:"edited_template_file_ids,omitempty" validate:"omitempty,dive,uuid"`
|
||||
}
|
||||
|
||||
type TakeoverCreateData struct {
|
||||
Type string `json:"type" validate:"required,oneof=takeover_create takeover"`
|
||||
Attributes TakeoverCreateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type TakeoverCreateRequest struct {
|
||||
Data TakeoverCreateData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
type TakeoverCreateFileInput struct {
|
||||
FileID string `json:"file_id,omitempty" validate:"omitempty,uuid" example:"019e8713-aa19-7fb7-a510-a0332dc69697"`
|
||||
UploadIntentUUID string `json:"upload_intent_uuid,omitempty" validate:"omitempty,uuid" example:"019e8713-aa19-7fb7-a510-a0332dc69697"`
|
||||
Name string `json:"name,omitempty" example:"takeover-report.pdf"`
|
||||
}
|
||||
|
||||
type TakeoverUpdateAttributes struct {
|
||||
BaseID *string `json:"base_id,omitempty"`
|
||||
Bases *TakeoverBaseRef `json:"bases,omitempty"`
|
||||
DutyDate *string `json:"duty_date,omitempty"`
|
||||
Notes *string `json:"notes,omitempty"`
|
||||
Detail *TakeoverRosterDetailsInput `json:"roster_detail,omitempty"`
|
||||
RosterDetail *TakeoverRosterDetailsInput `json:"roster_details,omitempty"`
|
||||
AircraftID *string `json:"helicopter_id,omitempty"`
|
||||
Inspection *ReserveAcInspectionCreateAttributes `json:"inspection,omitempty"`
|
||||
Files []TakeoverCreateFileInput `json:"files,omitempty" validate:"omitempty,dive"`
|
||||
FilesAdd []TakeoverCreateFileInput `json:"files_add,omitempty" validate:"omitempty,dive"`
|
||||
FilesRemove []string `json:"files_remove,omitempty" validate:"omitempty,dive,uuid"`
|
||||
FilesReplace []TakeoverCreateFileInput `json:"files_replace,omitempty" validate:"omitempty,dive"`
|
||||
}
|
||||
|
||||
type TakeoverUpdateData struct {
|
||||
Type string `json:"type" validate:"required,oneof=takeover_update takeover"`
|
||||
ID string `json:"id"`
|
||||
Attributes TakeoverUpdateAttributes `json:"attributes" validate:"required"`
|
||||
}
|
||||
|
||||
type TakeoverUpdateRequest struct {
|
||||
Data TakeoverUpdateData `json:"data" validate:"required"`
|
||||
}
|
||||
|
||||
func (a *TakeoverUpdateAttributes) UnmarshalJSON(data []byte) error {
|
||||
type alias TakeoverUpdateAttributes
|
||||
var raw struct {
|
||||
alias
|
||||
Bases *TakeoverBaseRef `json:"bases,omitempty"`
|
||||
RosterDetail *TakeoverRosterDetailsInput `json:"roster_details,omitempty"`
|
||||
}
|
||||
if err := json.Unmarshal(data, &raw); err != nil {
|
||||
return err
|
||||
}
|
||||
*a = TakeoverUpdateAttributes(raw.alias)
|
||||
if a.BaseID == nil && raw.Bases != nil && raw.Bases.ID != "" {
|
||||
id := raw.Bases.ID
|
||||
a.BaseID = &id
|
||||
}
|
||||
if a.Detail == nil && raw.RosterDetail != nil {
|
||||
a.Detail = raw.RosterDetail
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type TakeoverBaseRef struct {
|
||||
ID string `json:"id,omitempty"`
|
||||
}
|
||||
|
||||
type TakeoverRosterCrewInput struct {
|
||||
ID string `json:"id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
}
|
||||
|
||||
type TakeoverRosterPilotInput struct {
|
||||
ID string `json:"id,omitempty" example:"018f3a5c-7a6f-7c2a-8d4a-4b5b1f6c8e9d"`
|
||||
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"`
|
||||
CrewType string `json:"crew_type,omitempty" example:"main" enums:"main,additional"`
|
||||
}
|
||||
|
||||
type TakeoverRosterOtherPersonInput struct {
|
||||
// OtherPersonID — OPTIONAL master person id to reuse (from GET /contact/other).
|
||||
OtherPersonID string `json:"other_person_id,omitempty" example:"019d6771-5fb5-7337-837f-bc5ed85181a1"`
|
||||
Name string `json:"name,omitempty" example:"Guest Person"`
|
||||
MobilePhone string `json:"mobile_phone,omitempty" example:"+43-1234"`
|
||||
Email string `json:"email,omitempty" example:"guest@example.com"`
|
||||
}
|
||||
|
||||
type TakeoverRosterDetailsInput struct {
|
||||
Pilot []TakeoverRosterPilotInput `json:"pilot"`
|
||||
Doctor []TakeoverRosterCrewInput `json:"doctor"`
|
||||
Rescuer []TakeoverRosterCrewInput `json:"rescuer"`
|
||||
Helper []TakeoverRosterCrewInput `json:"helper"`
|
||||
OtherPerson []TakeoverRosterOtherPersonInput `json:"other_person"`
|
||||
}
|
||||
Reference in New Issue
Block a user