# Search crew positions for an aircraft Returns a paginated list of crew positions configured for a specific aircraft. Exactly one of aircraftId or tailNumber must be provided in filters. Features: - Search by aircraft id or tail number - Filter by assignability to show only positions usable in roster assignments - Sort results by position name - Paginated response Crew positions returned by this endpoint can be used as crewPositionId in roster assignment create and update requests (see aircraft.crewPositionId on roster assignment endpoints). The crew position must belong to the aircraft specified in the assignment. Endpoint: POST /api/v2/crew-position-search Version: 2.4.0 Security: X-Api-Client-Id, X-Auth-Token ## Request fields (application/json): - `filters` (object, required) Filter criteria. Exactly one of aircraftId or tailNumber is required. - `filters.aircraftId` (string) Aircraft identifier. Mutually exclusive with tailNumber. Example: "12345" - `filters.tailNumber` (string) Aircraft registration (tail number). Mutually exclusive with aircraftId. Example: "OE-FLX" - `filters.isAssignable` (boolean) When true, returns only positions that can be assigned in roster assignments. When false, returns only non-assignable positions. - `limit` (integer) Maximum number of records to return. Example: 20 - `offset` (integer) Number of records to skip for pagination. - `sorts` (object) Sort criteria for the results. - `sorts.name` (string) Sort direction for the crew position name. Enum: "ASC", "DESC" ## Response 200 fields (application/json): - `data` (array) The list of crew positions for the current page. - `data.id` (string) Unique identifier of the crew position. Example: "101" - `data.code` (string) Short code for the crew position. Example: "CP" - `data.name` (string) Display name of the crew position. Example: "Captain" - `data.role` (string) Qualification role associated with this position. Enum: "CMD", "FO", "CC", "MED1", "ATPL", "LST", "AQ", "OPCRH", "PA", "FA", "CPL", "DG", "ESET", "Sec", "FF", "ENL4", "ENL5", "ENL6", "LC", "OPC", "LVTO", "LV", "RVSM", "TRI", "TRE", "AUS", "SQMM", "SECG", "BMVIT", "EFB", "GRT", "ESE", "OCC", "OICC", "PICC", "DITCH", "FAID", "WINTER", "BRNAV", "MNPS_ETOPS", "RACQ", "ETOPS", "TCAS", "CRM", "ASH", "USER0", "USER1", "USER2", "USER3", "USER4", "USER5", "USER6", "USER7", "USER8", "USER9", "ENG", "AUGM_CREW", "ADD_CREW", "CREW", "IR", "HW_OPS", "PBN", "PFI", "FM", "SEP", "SEP_IR", "FI_A", "MEP", "CR", "RC", "OBS", "DHC", "EX_CM" - `data.crewType` (string) Crew type classification. Absent when not configured. Enum: "FLIGHT_DECK", "CABIN" - `data.isAssignable` (boolean) Whether this position can be used in roster assignments. Example: true - `pagination` (object) Pagination details - `pagination.offset` (integer) Number of records skipped - `pagination.limit` (integer) Maximum number of records returned Example: 20 - `pagination.totalItems` (integer) Total number of items available Example: 150 - `pagination.sortItems` (array) List of fields used for sorting Example: ["issueDate desc"] - `pagination.filters` (array) List of applied filters - `pagination.filters.field` (string) Field name to filter by Example: "issueDate" - `pagination.filters.operator` (string) Filter operator Example: "gte" - `pagination.filters.value` (string) Filter value Example: "2024-01-01T00:00:00.000Z" ## 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 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: []