# Patch roster assignment Partially updates an existing roster assignment. Only the fields provided in the request body are updated; fields not included remain unchanged. Example Use Case: A scheduler updates only the end time of an existing duty without affecting any other fields. Validation rules: - If provided, startDateTime must be strictly before endDateTime - Fields the roster type does not support are rejected with 400 — they are not silently ignored - Mandatory field checks (for isDutyTimeVisible) are not enforced on PATCH — only on PUT and create - Duration constraints apply to the resulting start/end: max 31 days; max 2 days when isDutyTimeVisible - FTL interdependency rules apply if ftl is provided (see FTL schema) Endpoint: PATCH /api/v2/rosters/{id} Version: 2.4.0 Security: X-Api-Client-Id, X-Auth-Token ## Path parameters: - `id` (string, required) Unique identifier of the roster assignment to patch. Example: "98765" ## Request fields (application/json): - `dutyShiftType` (string) Duty shift classification; only when roster type has isSubtypeVisible. Enum: "EARLY", "LATE", "ALL_DAY", "NIGHT" - `crewRole` (string) Crew role; only when roster type has isRoleVisible. Enum: "CMD", "FO", "INSTRUCTOR", "FA" - `startDateTime` (string) Scheduled duty start date-time (yyyy-MM-ddTHH:mm:ss.SSSZ). - `endDateTime` (string) Scheduled duty end date-time (yyyy-MM-ddTHH:mm:ss.SSSZ). - `actualStartDateTime` (string) Actual duty start; only when type has isActualTimeVisible. - `actualEndDateTime` (string) Actual duty end; only when type has isActualTimeVisible. - `dutyAirportCode` (string) Duty location airport (ICAO/IATA); only when type has isLocationVisible. - `departureAirportCode` (string) Departure airport (ICAO/IATA); only when type has isDepartureAirportEnabled. - `arrivalAirportCode` (string) Arrival airport (ICAO/IATA); only when type has isArrivalAirportEnabled. - `serviceAirportCode` (string) Service airport (ICAO/IATA); only when type has isForAirportEnabled. - `flightNumber` (string) Flight number; only when type has isFlightNumberVisible. - `takeoffDateTime` (string) Takeoff date-time; only when type has isFlightTimeVisible. - `landingDateTime` (string) Landing date-time; only when type has isFlightTimeVisible. - `aircraft` (object) Aircraft assignment details. Only present when roster type has isAircraftEnabled. - `aircraft.tailNumber` (string) Aircraft tail number; only when type has isAircraftEnabled. - `aircraft.crewPositionId` (string) Crew position on aircraft; only when type has isCrewPositionVisible. - `aircraft.aircraftModelCode` (string) Aircraft model ICAO code; only when type has isAircraftTypeVisible. - `aircraft.qualificationTypeId` (string) Type rating qualification id; only when type has isTypeRatingVisible. - `aircraft.externalAircraftRegistration` (string) Registration of an aircraft not in the system; only when type has isExternalAircraftVisible. - `aircraft.engineConfiguration` (string) Engine configuration. Enum: "SINGLE_ENGINE", "MULTI_ENGINE" - `logbook` (object) Logbook/AFT data. Only present when roster type enables logbook features. - `logbook.crewCompositionType` (string) Crew composition; only when type has isPilotFlightTypeVisible. Enum: "SINGLE_PILOT", "MULTI_PILOT" - `logbook.operationalCondition` (string) Flight rules; only when type has isOperationalConditionVisible. Enum: "IFR", "VFR", "NIGHT" - `logbook.operationType` (string) Type of operation; only when type has isOperationalConditionVisible. Enum: "COMMERCIAL", "PRIVATE" - `logbook.aocId` (string) AOC id for operation type; relevant when multiple AOCs exist. - `logbook.numDayTakeoffs` (integer) Daytime takeoffs; only when type has isLandingsVisible. - `logbook.numNightTakeoffs` (integer) Night takeoffs; only when type has isLandingsVisible. - `logbook.numDayLandings` (integer) Daytime landings; only when type has isLandingsVisible. - `logbook.numNightLandings` (integer) Night landings; only when type has isLandingsVisible. - `logbook.numPrecisionApproaches` (integer) Precision approaches; only when type has isApproachesVisible. - `logbook.approachCategory` (string) Approach category; only when type has isApproachesVisible. Enum: "CAT1", "CAT1_LTS", "CAT2", "CAT3", "LVO", "ILS", "GCA", "GPS", "MLS", "GLS", "PAR", "LOC", "LDA", "VLR", "RNP_AR", "RNP_RNAV", "TWO_D_AZIMUTH", "TWO_D_CDI", "THREE_D_CDI", "JPALS" - `logbook.numNonPrecisionApproaches` (integer) Non-precision approaches; only when type has isApproachesVisible. - `logbook.isVisualApproach` (boolean) Visual approach; only when type has isApproachesVisible. - `logbook.isInstrumentHold` (boolean) Instrument hold; only when type has isApproachesVisible. - `logbook.isFullMotionSimulator` (boolean) Full-motion simulator duty; only for SIM roster types. - `ftl` (object) FTL duty period flags and manual times. Only send when roster type has isDutyTimeVisible. Mutual exclusivity constraints (validated — returns 400 if violated): - beginsDutyPeriod and endsSplitDutyBreak cannot both be set - endsDutyPeriod and beginsSplitDutyBreak cannot both be set - `ftl.beginsDutyPeriod` (boolean) Marks the start of a new FTL duty period. - `ftl.endsDutyPeriod` (boolean) Marks the end of an FTL duty period. - `ftl.beginsSplitDutyBreak` (boolean) Marks the start of a split-duty rest break. - `ftl.endsSplitDutyBreak` (boolean) Marks the end of a split-duty rest break. - `ftl.dutyTimeMinutes` (integer) Total duty time in minutes; only when type has isDutyTimeVisible. - `ftl.fdpTimeMinutes` (integer) Flight duty period (FDP) in minutes; only when type has isFdpTimeVisible. - `ftl.blockTimeMinutes` (integer) Block (airborne) time in minutes; only when type has isBlockTimeVisible. - `notes` (string) Free-text notes; only when type has isNotesVisible. - `bookingId` (string) Id of the booking to link to this duty. ## Response 200 fields (application/json): - `id` (string) Unique identifier of this roster assignment. - `crewId` (string) Identifier of the crew member. - `rosterTypeId` (string) Id of the roster type (same as RosterTypeDto.id from roster-types API). - `dutyShiftType` (string) Duty shift classification; only when type has isSubtypeVisible. Enum: "EARLY", "LATE", "ALL_DAY", "NIGHT" - `crewRole` (string) Crew role; only when type has isRoleVisible. Enum: "CMD", "FO", "INSTRUCTOR", "FA" - `startDateTime` (string) Scheduled duty start (Begins / Check-in). Format yyyy-MM-ddTHH:mm:ss.SSSZ. Example: "2025-03-01T09:00:00.000Z" - `endDateTime` (string) Scheduled duty end (Ends / Check-out). Format yyyy-MM-ddTHH:mm:ss.SSSZ. Example: "2025-03-01T17:00:00.000Z" - `actualStartDateTime` (string) Actual duty start; only when type has isActualTimeVisible. Format yyyy-MM-ddTHH:mm:ss.SSSZ. - `actualEndDateTime` (string) Actual duty end; only when type has isActualTimeVisible. Format yyyy-MM-ddTHH:mm:ss.SSSZ. - `dutyAirportCode` (string) Airport where crew is stationed (In); only when type has isLocationVisible. - `departureAirportCode` (string) Departure airport (From); only when type has isDepartureAirportEnabled. - `arrivalAirportCode` (string) Arrival airport (To); only when type has isArrivalAirportEnabled. - `serviceAirportCode` (string) Airport this duty is performed for (For Airport); only when type has isForAirportEnabled. - `flightNumber` (string) Flight number; only when type has isFlightNumberVisible. - `bookingId` (string) Id of the booking linked to this duty. - `takeoffDateTime` (string) Actual takeoff time; only when type has isFlightTimeVisible. Format yyyy-MM-ddTHH:mm:ss.SSSZ. - `landingDateTime` (string) Actual landing time; only when type has isFlightTimeVisible. Format yyyy-MM-ddTHH:mm:ss.SSSZ. - `aircraft` (object) Aircraft assignment details. Only present when roster type has isAircraftEnabled. - `aircraft.tailNumber` (string) Aircraft tail number; only when type has isAircraftEnabled. - `aircraft.crewPositionId` (string) Crew position on aircraft; only when type has isCrewPositionVisible. - `aircraft.aircraftModelCode` (string) Aircraft model ICAO code; only when type has isAircraftTypeVisible. - `aircraft.qualificationTypeId` (string) Type rating qualification id; only when type has isTypeRatingVisible. - `aircraft.externalAircraftRegistration` (string) Registration of an aircraft not in the system; only when type has isExternalAircraftVisible. - `aircraft.engineConfiguration` (string) Engine configuration. Enum: "SINGLE_ENGINE", "MULTI_ENGINE" - `logbook` (object) Logbook/AFT data. Only present when roster type enables logbook features. - `logbook.crewCompositionType` (string) Crew composition; only when type has isPilotFlightTypeVisible. Enum: "SINGLE_PILOT", "MULTI_PILOT" - `logbook.operationalCondition` (string) Flight rules; only when type has isOperationalConditionVisible. Enum: "IFR", "VFR", "NIGHT" - `logbook.operationType` (string) Type of operation; only when type has isOperationalConditionVisible. Enum: "COMMERCIAL", "PRIVATE" - `logbook.aocId` (string) AOC id for operation type; relevant when multiple AOCs exist. - `logbook.numDayTakeoffs` (integer) Daytime takeoffs; only when type has isLandingsVisible. - `logbook.numNightTakeoffs` (integer) Night takeoffs; only when type has isLandingsVisible. - `logbook.numDayLandings` (integer) Daytime landings; only when type has isLandingsVisible. - `logbook.numNightLandings` (integer) Night landings; only when type has isLandingsVisible. - `logbook.numPrecisionApproaches` (integer) Precision approaches; only when type has isApproachesVisible. - `logbook.approachCategory` (string) Approach category; only when type has isApproachesVisible. Enum: "CAT1", "CAT1_LTS", "CAT2", "CAT3", "LVO", "ILS", "GCA", "GPS", "MLS", "GLS", "PAR", "LOC", "LDA", "VLR", "RNP_AR", "RNP_RNAV", "TWO_D_AZIMUTH", "TWO_D_CDI", "THREE_D_CDI", "JPALS" - `logbook.numNonPrecisionApproaches` (integer) Non-precision approaches; only when type has isApproachesVisible. - `logbook.isVisualApproach` (boolean) Visual approach; only when type has isApproachesVisible. - `logbook.isInstrumentHold` (boolean) Instrument hold; only when type has isApproachesVisible. - `logbook.isFullMotionSimulator` (boolean) Full-motion simulator duty; only for SIM roster types. - `ftl` (object) FTL duty period flags and manual times. Only send when roster type has isDutyTimeVisible. Mutual exclusivity constraints (validated — returns 400 if violated): - beginsDutyPeriod and endsSplitDutyBreak cannot both be set - endsDutyPeriod and beginsSplitDutyBreak cannot both be set - `ftl.beginsDutyPeriod` (boolean) Marks the start of a new FTL duty period. - `ftl.endsDutyPeriod` (boolean) Marks the end of an FTL duty period. - `ftl.beginsSplitDutyBreak` (boolean) Marks the start of a split-duty rest break. - `ftl.endsSplitDutyBreak` (boolean) Marks the end of a split-duty rest break. - `ftl.dutyTimeMinutes` (integer) Total duty time in minutes; only when type has isDutyTimeVisible. - `ftl.fdpTimeMinutes` (integer) Flight duty period (FDP) in minutes; only when type has isFdpTimeVisible. - `ftl.blockTimeMinutes` (integer) Block (airborne) time in minutes; only when type has isBlockTimeVisible. - `notes` (string) Free-text notes (max 2000 chars); only when type has isNotesVisible. ## Response 400 fields (application/json): - `title` (string, required) Machine-readable error category. Enum: "bad_request", "unauthorized", "forbidden", "conflict", "not_found", "internal_error" - `message` (string, required) Human-readable description of the error. For validation errors this contains the specific violation message. Example: "dateRange.from must be before dateRange.to" - `errors` (array, required) Additional error details. Non-empty when multiple validation failures occur simultaneously. Example: [] ## Response 401 fields (application/json): - `title` (string, required) Machine-readable error category. Enum: "bad_request", "unauthorized", "forbidden", "conflict", "not_found", "internal_error" - `message` (string, required) Human-readable description of the error. For validation errors this contains the specific violation message. Example: "dateRange.from must be before dateRange.to" - `errors` (array, required) Additional error details. Non-empty when multiple validation failures occur simultaneously. Example: [] ## Response 403 fields (application/json): - `title` (string, required) Machine-readable error category. Enum: "bad_request", "unauthorized", "forbidden", "conflict", "not_found", "internal_error" - `message` (string, required) Human-readable description of the error. For validation errors this contains the specific violation message. Example: "dateRange.from must be before dateRange.to" - `errors` (array, required) Additional error details. Non-empty when multiple validation failures occur simultaneously. Example: [] ## Response 404 fields (application/json): - `title` (string, required) Machine-readable error category. Enum: "bad_request", "unauthorized", "forbidden", "conflict", "not_found", "internal_error" - `message` (string, required) Human-readable description of the error. For validation errors this contains the specific violation message. Example: "dateRange.from must be before dateRange.to" - `errors` (array, required) Additional error details. Non-empty when multiple validation failures occur simultaneously. Example: [] ## Response 500 fields (application/json): - `title` (string, required) Machine-readable error category. Enum: "bad_request", "unauthorized", "forbidden", "conflict", "not_found", "internal_error" - `message` (string, required) Human-readable description of the error. For validation errors this contains the specific violation message. Example: "dateRange.from must be before dateRange.to" - `errors` (array, required) Additional error details. Non-empty when multiple validation failures occur simultaneously. Example: []