{
  "openapi": "3.0.1",
  "info": {
    "title": "FL3XX API",
    "version": "2.4.0",
    "description": "<div class=\"api-wrapper\">\n\n  <!-- Beta Banner -->\n  <div class=\"api-beta-banner\">\n    <div class=\"api-beta-content\">\n      <div class=\"api-beta-icon\">\n        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n          <path d=\"M12 2L2 7l10 5 10-5-10-5z\"></path>\n          <path d=\"M2 17l10 5 10-5\"></path>\n          <path d=\"M2 12l10 5 10-5\"></path>\n        </svg>\n      </div>\n      <div class=\"api-beta-text\">\n        <h3 class=\"api-beta-title\">FL3XX API v2.0 — Beta Release</h3>\n        <p class=\"api-beta-subtitle\">Currently in active development with our trusted beta partners. Explore the next generation of aviation API capabilities.</p>\n      </div>\n      <div class=\"api-beta-badge\">BETA</div>\n    </div>\n  </div>\n</div>\n\n<style>\n  /* Beta Banner */\n  .api-beta-banner {\n    background: linear-gradient(135deg, rgba(241, 90, 42, 0.05), rgba(241, 90, 42, 0.02));\n    border: 2px solid rgba(241, 90, 42, 0.2);\n    border-radius: 12px;\n    padding: 20px;\n    margin-bottom: 40px;\n  }\n\n  .api-beta-content {\n    display: flex;\n    align-items: center;\n    gap: 16px;\n  }\n\n  .api-beta-icon {\n    width: 48px;\n    height: 48px;\n    background: rgba(241, 90, 42, 0.1);\n    border-radius: 12px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    color: #f15a2a;\n    flex-shrink: 0;\n  }\n\n  .api-beta-text {\n    flex: 1;\n  }\n\n  .api-beta-title {\n    font-size: 18px;\n    font-weight: 700;\n    color: var(--text-color-primary);\n    margin: 0 0 6px 0;\n  }\n\n  .api-beta-subtitle {\n    font-size: 14px;\n    color: #6B7280;\n    margin: 0;\n    line-height: 1.4;\n  }\n\n  .api-beta-badge {\n    background: #f15a2a;\n    color: white;\n    font-size: 12px;\n    font-weight: 700;\n    padding: 6px 12px;\n    border-radius: 16px;\n    text-transform: uppercase;\n    letter-spacing: 0.5px;\n    flex-shrink: 0;\n  }\n</style>\n",
    "contact": {
      "name": "FL3XX Integration Support",
      "email": "integrations@fl3xx.com",
      "url": "https://www.fl3xx.com"
    },
    "x-audience": "external-partner",
    "license": {
      "name": "MIT",
      "url": "https://opensource.org/licenses/MIT"
    }
  },
  "servers": [
    {
      "url": "https://test.fl3xx.com",
      "description": "Test Server"
    }
  ],
  "security": [
    {
      "X-Api-Client-Id": [],
      "X-Auth-Token": []
    }
  ],
  "tags": [
    {
      "name": "Airports",
      "description": "Access comprehensive airport information.\n\n**Business Value**\n- Filter airports by various criteria, including ICAO, IATA, FAA codes, and local identifiers\n- Support high‑performance applications with optimized data retrieval\n\n<br/>\n\n**Use Cases**\n- Filter airports by specific codes for targeted data retrieval\n- Integrate airport data into flight‑planning and scheduling systems\n- Build airport‑selection interfaces with efficient pagination\n\n<br/>\n"
    },
    {
      "name": "Airport Fuel Prices",
      "description": "Manage and optimize airport‑fuel pricing data for your organization. These endpoints enable operators to efficiently update, remove, and bulk‑manage fuel prices, supporting streamlined fuel‑order workflows and provider management.\n\n**Business Value**\n- Ensure accurate, up‑to‑date fuel pricing for all airport operations.\n- Reduce manual effort and errors by enabling bulk updates and deletions.\n- Support cost control and negotiation with providers through transparent pricing data.\n- Enhance operational planning and financial forecasting with reliable fuel‑cost data.\n\n<br/>\n\n**Use Cases**\n- Update fuel prices for a specific airport to reflect new agreements or market changes.\n- Remove outdated or incorrect fuel prices for compliance and data integrity.\n- Perform bulk deletions to quickly adapt to network‑wide pricing changes.\n- Integrate with internal systems to automate fuel‑price management and reporting.\n\n  <br/>\n\n**Note:**  \n> Data managed by the Airport Fuel Prices endpoints is strictly bound to the operator associated with the authentication token. All operations — creating, updating, or deleting airport fuel prices — apply only to the operator for which the provided token is valid.\n"
    },
    {
      "name": "Webhooks",
      "description": "Manage webhook subscriptions for near‑real‑time event notifications. These endpoints enable partners to create, manage, and monitor webhook subscriptions for receiving flight‑related events and updates.\n\n**Business Value**\n- Receive near‑real‑time notifications for flight events and updates.\n- Automate integration workflows with external systems.\n- Monitor flight operations and passenger changes in near‑real‑time.\n- Reduce polling overhead by using event-driven architecture.\n\n<br/>\n\n**Use Cases**\n- Subscribe to flight updates to sync data with external booking systems.\n- Monitor passenger‑count changes for catering and ground‑service coordination.\n- Track aircraft changes for maintenance and operational planning.\n- Receive notifications for flight cancellations and time updates.\n\n<br/>      \n\n**Group Event Types** (not subscribable; appear in webhook deliveries when multiple events occur in a short period):\n- `FLIGHT_UPDATE`: Group event that combines multiple flight update events. Includes: `FLIGHT_CREATE`, `FLIGHT_CANCEL`, `FLIGHT_TIME_UPDATE`, `FLIGHT_AIRCRAFT_UPDATE`, `FLIGHT_AIRPORT_UPDATE`, `FLIGHT_POST_FLIGHT_STATUS`, `FLIGHT_MOVEMENT_UPDATE`, `FLIGHT_PERMIT_UPDATE`.\n- `FLIGHT_PASSENGER_UPDATE`: Group event that combines passenger-related events. Includes: `FLIGHT_PAX_COUNT_UPDATE`, `FLIGHT_PAX_LIST_UPDATE`.\n- `FLIGHT_PERMIT_UPDATE`: Group event that combines permit-related events. Includes: `FLIGHT_PERMIT_ASSIGNMENT`, `FLIGHT_PERMIT_UNASSIGNMENT`.\n- `FLIGHT_SLOT_PPR_UPDATE`: Group event that combines slot/PPR-related events. Includes: `FLIGHT_SLOT_PPR_ASSIGNMENT`, `FLIGHT_SLOT_PPR_UNASSIGNMENT`.\n- `FLIGHT_FBO_UPDATE`: Group event that combines FBO-related events. Includes: `FLIGHT_FBO_ASSIGNMENT`, `FLIGHT_FBO_UNASSIGNMENT`.\n- `FLIGHT_TRANSPORT_UPDATE`: Group event that combines transport-related events. Includes: `FLIGHT_TRANSPORT_ASSIGNMENT`, `FLIGHT_TRANSPORT_UNASSIGNMENT`.\n- `FLIGHT_HOTEL_UPDATE`: Group event that combines hotel-related events. Includes: `FLIGHT_HOTEL_ASSIGNMENT`, `FLIGHT_HOTEL_UNASSIGNMENT`.\n- `FLIGHT_CATERING_UPDATE`: Group event that combines catering-related events. Includes: `FLIGHT_CATERING_ASSIGNMENT`, `FLIGHT_CATERING_UNASSIGNMENT`.\n- `FLIGHT_CREW_UPDATE`: Group event that combines flight crew-related events. Includes: `FLIGHT_CREW_LIST_UPDATE`, `FLIGHT_CREW_ASSIGNMENT`, `FLIGHT_CREW_DOCUMENT_UPDATE`, `FLIGHT_CREW_ADDRESS_UPDATE`.\n\n<br/>\n            \nFor more information on setting up and managing webhooks, see the [Event Notifications (Webhook) Guide](/guides/guides/event-notifications).\n\n**Important:**  \n> Webhook endpoints must respond within 1 second with a `200` status code. To avoid timeouts, we strongly recommend handling webhook processing on a different task/thread and immediately returning the response to FL3XX.\n"
    },
    {
      "name": "Crew Qualifications",
      "description": "Manage crew qualifications and certifications. These endpoints enable partners to assign, update, and manage crew‑member qualifications, including licenses, certifications, and associated documents.\n\n**Business Value**\n- Maintain accurate crew qualification records for compliance and safety.\n- Streamline qualification assignment and management processes.\n- Support document management for qualification certificates and licenses.\n- Ensure crew members meet operational requirements and regulations.\n\n<br/>\n\n**Use Cases**\n- Assign new qualifications to crew members with license details and expiration dates.\n- Update existing qualification information, including license numbers and issuing authorities.\n- Upload and manage qualification documents, such as certificates and licenses.\n- Retrieve qualification information for crew members and compliance reporting.\n- Delete obsolete qualifications and associated documents.\n\n<br/>\n\nFor more information on managing crew qualifications, see the [Crew Qualification Management Guide](/guides/guides/crew-qualification).\n\n**Note:**  \n> All crew‑qualification operations are bound to the operator context associated with the authentication token. Partners can manage qualifications only for crew members within their own organization.\n"
    },
    {
      "name": "Roster Types",
      "description": "Retrieve roster (duty) types that define which fields and behaviors are available when creating or updating a roster assignment. These endpoints provide access to the operator's roster configuration, enabling dynamic UI and validation.\n\n**Business Value**\n- Ensure accurate roster data by identifying relevant fields for each duty type.\n- Align integration behavior with the operator’s specific roster configuration.\n- Support dynamic roster interfaces that only display fields enabled for the selected type.\n- Streamline the roster management process by reducing validation errors.\n\n<br/>\n\n**Use Cases**\n- Retrieve the full list of available roster types and their hierarchical structure.\n- Inspect a specific roster type to determine which features (e.g., aircraft, airports, FTL) are enabled.\n- Build dynamic forms that adapt based on the chosen roster duty type.\n\n<br/>\n"
    },
    {
      "name": "Roster Assignment",
      "description": "Manage crew roster assignments, including creating, retrieving, updating, and deleting duties. These endpoints enable partners to synchronize crew schedules and manage operational duties with the same semantics as the FL3XX web interface.\n\n**Business Value**\n- Automate crew schedule management and updates in real‑time.\n- Keep crew schedules perfectly synchronized with external systems.\n- Support crew self‑service and scheduler workflows via API.\n- Reduce manual data entry and errors in crew roster management.\n\n<br/>\n\n**Use Cases**\n- Create a new roster assignment (e.g., Off, Flight, Standby) for a crew member.\n- Retrieve detailed information about a specific roster duty, including associated aircraft and airports.\n- Update existing roster assignments to reflect changes in schedules or duty types.\n- Search and filter roster assignments by crew member, type, or date range.\n\n<br/>\n"
    },
    {
      "name": "Flight Permits",
      "description": "Retrieve flight permit information for takeoff, landing, and overflight permissions. These endpoints enable operators to access flight permit data within the context of the operator data.\n\n**Business Value**\n- Retrieve accurate flight permit records for compliance and regulatory requirements.\n- Access permit information for operational planning and verification.\n- Monitor permit statuses and details for flights.\n\n<br/>\n\n**Use Cases**\n- Retrieve permit information for flights to verify compliance status.\n- Review permit details including status, dates, and associated documents.\n- Access permit information for operational planning and audits.\n\n<br/>\n"
    },
    {
      "name": "Flight Slots & PPRs",
      "description": "Retrieve flight slot and PPR (Prior Permission Required) information. These endpoints enable operators to access flight slot and PPR data within the context of the operator data.\n\n**Business Value**\n- Retrieve accurate flight slot and PPR records for compliance and operational requirements.\n- Access slot and PPR information for operational planning and verification.\n- Monitor slot and PPR statuses and details for flights.\n\n<br/>\n\n**Use Cases**\n- Retrieve slot and PPR information for flights to verify compliance status.\n- Review slot and PPR details including status, approval dates, and associated documents.\n- Access slot and PPR information for operational planning and audits.\n\n<br/>\n"
    },
    {
      "name": "Flight Slots & PPRs (Provider)",
      "description": "Manage flight slots and PPRs (Prior Permission Required). These endpoints enable Trip Support Providers to update, retrieve, and manage flight slots and PPRs, as well as manage associated documents.\n\n**Business Value**\n- Maintain accurate flight slot and PPR records for compliance and operational requirements.\n- Streamline slot and PPR management processes with automated workflows.\n- Support document management for slot and PPR certificates and approvals.\n- Ensure flights have the necessary slots and PPRs before operations.\n\n<br/>\n\n**Use Cases**\n- Update existing slot and PPR information, including permit numbers, status, and approval dates.\n- Retrieve slot and PPR information for flights to verify compliance status.\n- Upload and manage slot and PPR documents, such as certificates and approvals.\n- Delete obsolete slot and PPR documents that are no longer valid or relevant.\n\n<br/>\n\n**Note:**  \n> All flight slot and PPR operations are bound to the operator context associated with the authentication token. Trip Support Providers can manage slots and PPRs only for flights within their own organization.\n"
    },
    {
      "name": "Flight Permits (Provider)",
      "description": "Manage flight permits for takeoff, landing, and overflight permissions. These endpoints enable Trip Support Providers to create, update, retrieve, and delete flight permits, as well as manage associated documents.\n\n**Business Value**\n- Maintain accurate flight permit records for compliance and regulatory requirements.\n- Streamline permit management processes with automated workflows.\n- Support document management for permit certificates and approvals.\n- Ensure flights have the necessary permissions before operations.\n\n<br/>\n\n**Use Cases**\n- Create new flight permits for upcoming flights with permit details and expiration dates.\n- Update existing permit information, including permit numbers, status, and dates.\n- Retrieve permit information for flights to verify compliance status.\n- Upload and manage permit documents, such as certificates and approvals.\n- Delete obsolete permits that are no longer valid or relevant.\n\n<br/>\n\n**Note:**  \n> All flight‑permit operations are bound to the operator context associated with the authentication token. Trip Support Providers can manage permits only for flights within their own organization.\n"
    },
    {
      "name": "FBO (Provider)",
      "description": "Manage FBO (Fixed Base Operator) services. These endpoints enable Trip Support Providers to update and retrieve FBO service entries, as well as manage associated documents.\n\n**Note:**  \n> FBO services are read-only for properties - only status and remarks can be updated. Creation and deletion are not allowed.\n"
    },
    {
      "name": "Transport (Provider)",
      "description": "Manage transport services. These endpoints enable Trip Support Providers to create, update, retrieve, and delete transport service entries, as well as manage associated documents.\n\n**Note:**  \n> Transport services can be created if the partner is assigned to the flight. Deletion is only allowed if the transport service was created by the partner.\n"
    },
    {
      "name": "Hotel (Provider)",
      "description": "Manage hotel services. These endpoints enable Trip Support Providers to create, update, retrieve, and delete hotel service entries, as well as manage associated documents.\n\n**Note:**  \n> Hotel services can be created if the partner is assigned to the flight. Deletion is only allowed if the hotel service was created by the partner.\n"
    },
    {
      "name": "Catering (Provider)",
      "description": "Manage catering services. These endpoints enable Trip Support Providers to create, update, retrieve, and delete catering service entries, as well as manage associated documents.\n\n**Note:**  \n> Catering services can be created if the partner is assigned to the flight. Deletion is only allowed if the catering service was created by the partner.\n"
    },
    {
      "name": "Flights",
      "description": "Access comprehensive flight information and data. These endpoints enable partners to retrieve flight details with advanced filtering and pagination.\n\n**Business Value**\n- Retrieve flight data with flexible date‑range filtering.\n- Support high‑performance applications with optimized data retrieval and pagination.\n- Access essential flight information, including schedules, aircraft assignments, and passenger counts.\n\n<br/>\n\n**Use Cases**\n- Retrieve flights within a specific date range for operational planning.\n- Integrate flight data into external systems for scheduling and logistics.\n- Monitor flight schedules and aircraft assignments in near‑real‑time.\n- Build flight‑tracking and reporting dashboards with paginated results.\n"
    },
    {
      "name": "Aircraft",
      "description": "Access comprehensive aircraft and fleet information. These endpoints enable partners to retrieve aircraft data, including status, specifications, and operational details.\n\n**Business Value**\n- Retrieve complete fleet information, including active and inactive aircraft.\n- Support fleet management and operational planning with detailed aircraft data.\n- Access aircraft specifications, including capacity, category, and home‑base information.\n\n<br/>\n\n**Use Cases**\n- Retrieve fleet data for operational planning and scheduling.\n- Integrate aircraft information into external systems for maintenance and logistics.\n- Monitor aircraft status and availability across the fleet.\n- Build fleet‑management dashboards with paginated results.\n"
    }
  ],
  "x-tagGroups": [
    {
      "name": "Airports",
      "tags": [
        "Airports"
      ]
    },
    {
      "name": "Fuel Providers",
      "tags": [
        "Airport Fuel Prices"
      ]
    },
    {
      "name": "Webhooks",
      "tags": [
        "Webhooks"
      ]
    },
    {
      "name": "Crew Management",
      "tags": [
        "Crew Qualifications",
        "Roster Types",
        "Roster Assignment"
      ]
    },
    {
      "name": "Operations",
      "tags": [
        "Flights",
        "Aircraft",
        "Flight Permits",
        "Flight Slots & PPRs"
      ]
    },
    {
      "name": "Trip Support Providers",
      "tags": [
        "Flight Permits (Provider)",
        "Flight Slots & PPRs (Provider)",
        "FBO (Provider)",
        "Transport (Provider)",
        "Hotel (Provider)",
        "Catering (Provider)"
      ]
    }
  ],
  "paths": {
    "/api/v2/airports/{airportCode}": {
      "get": {
        "operationId": "v2AirportsGet",
        "summary": "Get airport",
        "description": "This endpoint provides efficient access to airport data.\n\n**Features:**\n- Filter by multiple codes (ICAO, IATA, FAA, local identifier)\n- Automatically exclude deleted or inactive airports\n",
        "tags": [
          "Airports"
        ],
        "parameters": [
          {
            "name": "airportCode",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Airport reference code (FL3XX ID, IATA, ICAO, FAA, or local identifier).\n",
            "example": "LMML"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved airport",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AirportV2Dto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid parameters"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          }
        }
      }
    },
    "/api/v2/partners/airports/{airportCode}/fuel-prices": {
      "get": {
        "operationId": "v2AirportsFuelPricesGet",
        "summary": "Get fuel prices for an airport",
        "description": "Retrieves all fuel prices for a specific airport that were submitted by the partner associated with the authentication token.\n\n**Note:** This endpoint is for Partner Fuel Providers. Only fuel prices associated with the operator linked to the authentication token will be returned.\n",
        "tags": [
          "Airport Fuel Prices"
        ],
        "parameters": [
          {
            "name": "airportCode",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The airport code for which fuel prices are being retrieved. This can be an IATA, ICAO, or FAA code, or an airport ID.\n<br/>\nValid demo examples include: AGAT, AGGR, EBCR, EGSK, EHPC, EPJA, DAOS\n",
            "example": "AGAT"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved fuel prices",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AirportFuelPriceDto"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid airport code"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          }
        }
      },
      "put": {
        "operationId": "v2AirportsFuelPricesPut",
        "summary": "Update fuel prices for an airport",
        "description": "Update or set fuel prices for a specific airport. This endpoint allows partners to submit fuel pricing information that will be used for operational and financial processes.\n\n**Note:** This endpoint is for Partner Fuel Providers. Only fuel prices associated with the operator linked to the authentication token can be updated.\n\n**Example Use Case:** A fuel provider needs to update the fuel price for a particular airport after receiving new rates. By using this endpoint, they can ensure that all future fuel orders and cost calculations use the most current pricing data.\n",
        "tags": [
          "Airport Fuel Prices"
        ],
        "parameters": [
          {
            "name": "airportCode",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The airport code for which fuel prices are being updated. This can be an IATA, ICAO, or FAA code, or an airport ID.\n<br/>\nValid demo examples include: AGAT, AGGR, EBCR, EGSK, EHPC, EPJA, DAOS\n",
            "example": "AGGR"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "minItems": 1,
                "maxItems": 10,
                "items": {
                  "$ref": "#/components/schemas/AirportFuelPriceCreateDto"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully updated fuel prices",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AirportFuelPriceDto"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request - validation error"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          }
        }
      },
      "delete": {
        "operationId": "v2AirportsFuelPricesDelete",
        "summary": "Delete all fuel prices for an airport",
        "description": "Delete all fuel prices for a specific airport that were submitted by the partner associated with the authentication token.\n\n**Note:** This endpoint is for Partner Fuel Providers. Only fuel prices associated with the operator linked to the authentication token can be deleted.\n\n**Example Use Case:** A fuel provider needs to remove all fuel prices for an airport after a contract ends or when prices are no longer valid. Using this endpoint ensures that no obsolete pricing data is used in future fuel orders or cost calculations.\n",
        "tags": [
          "Airport Fuel Prices"
        ],
        "parameters": [
          {
            "name": "airportCode",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The airport code for which fuel prices are being deleted. This can be an IATA, ICAO, or FAA code, or an airport ID.\n<br/>\nValid demo examples include: AGAT, AGGR, EBCR, EGSK, EHPC, EPJA, DAOS\n",
            "example": "AGGR"
          }
        ],
        "responses": {
          "204": {
            "description": "Successfully deleted fuel prices"
          },
          "400": {
            "description": "Bad request - invalid airport code"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          }
        }
      }
    },
    "/api/v2/partners/airport-fuel-prices": {
      "delete": {
        "operationId": "v2AirportsFuelPricesAllDelete",
        "summary": "Delete all fuel prices",
        "description": "Delete all fuel prices submitted by the partner associated with the authentication token across all airports.\n\n**Note:** This endpoint is for Partner Fuel Providers. Only fuel prices associated with the operator linked to the authentication token can be deleted in bulk.\n\n**Example Use Case:** A fuel provider needs to remove fuel prices for several airports after a system-wide update or contract changes. Using this endpoint ensures that obsolete pricing data is quickly cleared from all affected locations.\n",
        "tags": [
          "Airport Fuel Prices"
        ],
        "responses": {
          "204": {
            "description": "Successfully deleted all fuel prices"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          }
        }
      }
    },
    "/api/v2/partners/airport-fuel-prices/{fuelPriceId}": {
      "put": {
        "operationId": "v2AirportsFuelPricesByIdPut",
        "summary": "Update individual fuel price",
        "description": "Updates a specific fuel price by its ID. This endpoint allows partners to modify individual fuel pricing records.\n\n**Note:** This endpoint is for Partner Fuel Providers. Only fuel prices associated with the operator linked to the authentication token can be updated.\n",
        "tags": [
          "Airport Fuel Prices"
        ],
        "parameters": [
          {
            "name": "fuelPriceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the fuel price to update",
            "example": "12345"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AirportFuelPriceCreateDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully updated fuel price",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AirportFuelPriceDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - validation error or fuel price not found"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          }
        }
      },
      "delete": {
        "operationId": "v2AirportsFuelPricesByIdDelete",
        "summary": "Delete individual fuel price",
        "description": "Deletes a specific fuel price by its ID. This endpoint allows partners to remove individual fuel pricing records.\n\n**Note:** This endpoint is for Partner Fuel Providers. Only fuel prices associated with the operator linked to the authentication token can be deleted.\n",
        "tags": [
          "Airport Fuel Prices"
        ],
        "parameters": [
          {
            "name": "fuelPriceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the fuel price to delete",
            "example": "12345"
          }
        ],
        "responses": {
          "204": {
            "description": "Successfully deleted fuel price"
          },
          "400": {
            "description": "Bad request - fuel price not found"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          }
        }
      }
    },
    "/api/v2/webhooks/subscriptions": {
      "get": {
        "operationId": "webhookSubscriptionsGet",
        "summary": "Get webhook subscriptions",
        "description": "Retrieves all webhook subscriptions for the authenticated partner and operator.\n\n**Features:**\n- Returns active and inactive webhook subscriptions\n- Filtered by partner and operator context\n\nFor more information on setting up and managing webhooks, see the [Event Notifications (Webhook) Guide](/guides/guides/event-notifications).\n",
        "tags": [
          "Webhooks"
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved webhook subscriptions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WebhookSubscriptionResponse"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          }
        }
      },
      "post": {
        "operationId": "webhookSubscriptionPost",
        "summary": "Create a new webhook subscription",
        "description": "Creates a new webhook subscription for receiving near‑real‑time event notifications.\n\n**Features:**\n- Validates the callback URL format; only HTTPS is supported\n- Sets an automatic expiration date of 30 days for subscriptions\n\n**Example Use Case:** An operations manager needs to receive near‑real‑time notifications when flight times change. By creating a webhook subscription for `FLIGHT_TIME_UPDATE` events, they can automatically sync flight data with external systems.\n\nFor more information on setting up and managing webhooks, see the [Event Notifications (Webhook) Guide](/guides/guides/event-notifications).\n",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookSubscriptionCreateDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successfully created webhook subscription",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookSubscriptionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - validation error"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions or event not allowed in API plan"
          }
        }
      }
    },
    "/api/v2/webhooks/subscriptions/{subscriptionId}": {
      "get": {
        "operationId": "gebhookSubscriptionByIdGet",
        "summary": "Get webhook subscription by ID",
        "description": "Retrieves a specific webhook subscription by its unique identifier.\n\n**Features:**\n- Returns detailed subscription information\n\nFor more information on setting up and managing webhooks, see the [Event Notifications (Webhook) Guide](/guides/guides/event-notifications).\n",
        "tags": [
          "Webhooks"
        ],
        "parameters": [
          {
            "name": "subscriptionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the webhook subscription to retrieve.\n",
            "example": "webhook-sub-12345"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved webhook subscription",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookSubscriptionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid subscription ID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - subscription does not exist"
          }
        }
      },
      "patch": {
        "operationId": "webhookSubscriptionByIdPatch",
        "summary": "Update webhook subscription callback URL or status",
        "description": "Updates the callback URL and/or the status (active or inactive) for an existing webhook subscription.\n\n**Features:**\n- Validates the new callback URL format; only HTTPS is supported\n- Updates the subscription status to active or inactive\n\n**Example Use Case:** An operations manager needs to change the webhook endpoint URL after migrating to a new server. Using this endpoint, they can update the callback URL without recreating the entire subscription.\n\nFor more information on setting up and managing webhooks, see the [Event Notifications (Webhook) Guide](/guides/guides/event-notifications).\n",
        "tags": [
          "Webhooks"
        ],
        "parameters": [
          {
            "name": "subscriptionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the webhook subscription to update.\n",
            "example": "webhook-sub-12345"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookSubscriptionPatchDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully updated webhook subscription",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookSubscriptionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - validation error"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - subscription does not exist"
          }
        }
      },
      "delete": {
        "operationId": "webhookSubscriptionByIdDelete",
        "summary": "Delete a webhook subscription",
        "description": "Deletes a webhook subscription and stops receiving notifications for the associated event type.\n\n**Features:**\n- Immediately stops webhook deliveries\n\n**Example Use Case:** An operations manager needs to stop receiving flight update notifications after completing a system migration. Using this endpoint, they can cleanly remove the webhook subscription.\n\nFor more information on setting up and managing webhooks, see the [Event Notifications (Webhook) Guide](/guides/guides/event-notifications).\n",
        "tags": [
          "Webhooks"
        ],
        "parameters": [
          {
            "name": "subscriptionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the webhook subscription to delete.\n",
            "example": "webhook-sub-12345"
          }
        ],
        "responses": {
          "204": {
            "description": "Successfully deleted webhook subscription"
          },
          "400": {
            "description": "Bad request - invalid subscription ID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - subscription does not exist"
          }
        }
      }
    },
    "/api/v2/webhooks/subscriptions/{subscriptionId}/renewals": {
      "post": {
        "operationId": "webhookSubscriptionRenewalPost",
        "summary": "Renew a webhook subscription",
        "description": "Renews an existing webhook subscription to extend its expiration date.\n\n**Features:**\n- Extends subscription expiration by 1 month from current expiration date.\n- Subscriptions can only be renewed 5 days before expiration.\n\n**Example Use Case:** An operations manager wants to continue receiving webhook notifications for an existing subscription. Using this endpoint, they can extend the subscription without recreating it.\n\nFor more information on setting up and managing webhooks, see the [Event Notifications (Webhook) Guide](/guides/guides/event-notifications).\n",
        "tags": [
          "Webhooks"
        ],
        "parameters": [
          {
            "name": "subscriptionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the webhook subscription to renew.\n",
            "example": "webhook-sub-12345"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully renewed webhook subscription",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookSubscriptionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid subscription ID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - subscription does not exist"
          }
        }
      }
    },
    "/api/v2/webhooks/deliveries": {
      "get": {
        "operationId": "webhookDeliveriesGet",
        "summary": "Get webhook deliveries",
        "description": "Retrieve paginated webhook delivery history for the authenticated partner and operator.\n\n`Note: Only failed deliveries are supported at this time.`\n\n**Features:**\n- Returns paginated delivery history with filtering and sorting\n- Supports filtering by issue date and status\n- Default sorting by issue date (descending)\n<br/> <br/>\n**Example Use Case:** An operations manager needs to monitor webhook delivery to troubleshoot failed deliveries. Using this endpoint, they can review delivery history and identify patterns in webhook failures.\n\nFor more information on setting up and managing webhooks, see the [Event Notifications (Webhook) Guide](/guides/guides/event-notifications).\n",
        "tags": [
          "Webhooks"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 10,
              "maximum": 50,
              "default": 10
            },
            "description": "Maximum number of records to return.",
            "example": 20
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            },
            "description": "Number of records to skip before starting to return results.",
            "example": 6
          },
          {
            "name": "filter",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Filter by issueDate and status.\n\n**Required filters:**\n- `issueDate` with `GTE` operator (greater than or equal)\n  - Date Constraints: Can be up to 2 months in the past.\n  - Date format: YYYY-MM-DDTHH:mm:ss.SSSZ\n  - Date value must be url encoded. Example: the following value `issueDate,GTE,2025-01-01T10:23:57.980Z&filter=status,EQ,FAILED` would be encoded and sent as `issueDate%2CGTE%2C2025-01-01T10%3A23%3A57.980Z&filter=status%2CEQ%2CFAILED`.\n- `status` with `EQ` operator (equal)\n  - Supported values: `FAILED`\n",
            "example": "issueDate%2CGTE%2C2025-01-01T10%3A23%3A57.980Z&filter=status%2CEQ%2CFAILED"
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "issueDate desc"
            },
            "description": "Sort criteria in the format: field direction\n\nSupported sort fields:\n- `issueDate` (default: desc)\n",
            "example": "issueDate,desc"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved webhook deliveries",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PageResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid parameters or missing required filters"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          }
        }
      }
    },
    "/api/v2/crew-qualifications": {
      "get": {
        "operationId": "crewQualificationsGet",
        "summary": "Get crew qualifications",
        "description": "Retrieves crew qualifications with pagination and filtering capabilities.\n\n**Features:**\n- Filter by crew ID (required)\n- Paginated results\n\n**Example Use Case:** An operations manager needs to retrieve all qualifications for a specific crew member to verify compliance status and upcoming expiration dates.\n\nFor more information on managing crew qualifications, see the [Crew Qualification Management Guide](/guides/guides/crew-qualification).\n",
        "tags": [
          "Crew Qualifications"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 10,
              "maximum": 50,
              "default": 10
            },
            "description": "Maximum number of records to return.",
            "example": 20
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            },
            "description": "Number of records to skip before starting to return results.",
            "example": 0
          },
          {
            "name": "filter",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Filter by crewId (required).\n\n**Required filters:**\n- `crewId` with `EQ` operator (equal)\n  - Example: `crewId,EQ,12345`\n",
            "example": "crewId,EQ,12345"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved crew qualifications",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CrewQualificationPageResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid parameters or missing required filters"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          }
        }
      },
      "post": {
        "operationId": "crewQualificationPost",
        "summary": "Assign a qualification to a crew member",
        "description": "Assigns a new qualification to a crew member with license details, expiration dates, and other relevant information.\n\n**Features:**\n- Validates required fields including crew ID and qualification ID\n- Supports license numbers, issuing authorities, and country information\n- Handles pilot-in-command designations and base month calculations\n\n**Example Use Case:** An operations manager needs to assign a new type rating qualification to a pilot after completing training. This endpoint allows them to create the qualification record with all necessary details.\n\nFor more information on managing crew qualifications, see the [Crew Qualification Management Guide](/guides/guides/crew-qualification).\n",
        "tags": [
          "Crew Qualifications"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CrewQualificationCreateDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully assigned qualification to crew member",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CrewQualificationSimplifiedDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - validation error"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          }
        }
      }
    },
    "/api/v2/crew-qualifications/{crewQualificationId}": {
      "get": {
        "operationId": "crewQualificationByIdGet",
        "summary": "Get a crew qualification by ID",
        "description": "Retrieves detailed information about a specific crew qualification including associated documents.\n\n**Features:**\n- Returns complete qualification details including document references\n- Includes creation and update timestamps\n\n**Example Use Case:** An operations manager needs to review the complete details of a specific qualification, including any uploaded documents, to verify compliance or prepare for audits.\n\nFor more information on managing crew qualifications, see the [Crew Qualification Management Guide](/guides/guides/crew-qualification).\n",
        "tags": [
          "Crew Qualifications"
        ],
        "parameters": [
          {
            "name": "crewQualificationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the crew qualification to retrieve",
            "example": "qual-12345"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved crew qualification",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CrewQualificationDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid qualification ID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - qualification does not exist"
          }
        }
      },
      "patch": {
        "operationId": "crewQualificationByIdPatch",
        "summary": "Update a crew qualification by ID",
        "description": "Updates an existing crew qualification with new information.\n\n**Features:**\n- Updates qualification details including license numbers and dates\n- Supports partial updates of qualification information\n\n**Example Use Case:** An operations manager needs to update a qualification after a license renewal or when additional information becomes available.\n\nFor more information on managing crew qualifications, see the [Crew Qualification Management Guide](/guides/guides/crew-qualification).\n",
        "tags": [
          "Crew Qualifications"
        ],
        "parameters": [
          {
            "name": "crewQualificationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the crew qualification to update",
            "example": "qual-12345"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CrewQualificationPatchDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully updated crew qualification",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CrewQualificationDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - validation error or qualification not found"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - qualification does not exist"
          }
        }
      },
      "delete": {
        "operationId": "crewQualificationByIdDelete",
        "summary": "Delete a crew qualification by ID",
        "description": "Deletes a crew qualification and removes it from the system.\n\n**Features:**\n- Permanently removes the qualification record\n- Returns confirmation of deletion\n\n**Example Use Case:** An operations manager needs to remove an obsolete qualification that is no longer valid or relevant for a crew member.\n\nFor more information on managing crew qualifications, see the [Crew Qualification Management Guide](/guides/guides/crew-qualification).\n",
        "tags": [
          "Crew Qualifications"
        ],
        "parameters": [
          {
            "name": "crewQualificationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the crew qualification to delete",
            "example": "qual-12345"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully deleted crew qualification",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeletedDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - qualification not found"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - qualification does not exist"
          }
        }
      }
    },
    "/api/v2/crew-qualifications/{crewQualificationId}/documents/{uuid}": {
      "delete": {
        "operationId": "crewQualificationDocumentDelete",
        "summary": "Delete document associated with a crew qualification",
        "description": "Deletes a document associated with a crew qualification.\n\n**Features:**\n- Permanently removes the document file\n- Returns confirmation of deletion\n\n**Example Use Case:** An operations manager needs to remove an outdated or incorrect document that was previously uploaded for a qualification.\n\nFor more information on managing crew qualifications, see the [Crew Qualification Management Guide](/guides/guides/crew-qualification).\n",
        "tags": [
          "Crew Qualifications"
        ],
        "parameters": [
          {
            "name": "crewQualificationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the crew qualification",
            "example": "qual-12345"
          },
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the document to delete",
            "example": "doc-uuid-67890"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully deleted document",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeletedDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid qualification ID or document UUID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - qualification or document does not exist"
          }
        }
      },
      "get": {
        "operationId": "crewQualificationDocumentGet",
        "summary": "Get document associated with a crew qualification",
        "description": "Downloads a document associated with a crew qualification.\n\n**Features:**\n- Downloads the actual document file\n- Validates document ownership and access permissions\n\n**Example Use Case:** An operations manager needs to download a qualification certificate or license document for verification or compliance purposes.\n\nFor more information on managing crew qualifications, see the [Crew Qualification Management Guide](/guides/guides/crew-qualification).\n",
        "tags": [
          "Crew Qualifications"
        ],
        "parameters": [
          {
            "name": "crewQualificationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the crew qualification",
            "example": "qual-12345"
          },
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the document to download",
            "example": "doc-uuid-67890"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved document",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid qualification ID or document UUID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - qualification or document does not exist"
          }
        }
      }
    },
    "/api/v2/crew-qualifications/{crewQualificationId}/documents": {
      "post": {
        "operationId": "crewQualificationDocumentPost",
        "summary": "Upload document associated with a crew qualification",
        "description": "Uploads a document file to be associated with a crew qualification.\n\n**Features:**\n- Supports various document formats\n- Associates the document with the specific qualification\n- Returns document metadata including UUID for future access\n\n**Example Use Case:** An operations manager needs to upload a scanned copy of a pilot's license or certificate to maintain digital records for compliance and verification.\n\nFor more information on managing crew qualifications, see the [Crew Qualification Management Guide](/guides/guides/crew-qualification).\n",
        "tags": [
          "Crew Qualifications"
        ],
        "parameters": [
          {
            "name": "crewQualificationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the crew qualification",
            "example": "qual-12345"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary",
                    "description": "The document file to upload"
                  }
                },
                "required": [
                  "file"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully uploaded document",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/B2CBinaryReferenceDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid file or qualification ID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - qualification does not exist"
          }
        }
      }
    },
    "/api/v2/qualification-types": {
      "get": {
        "operationId": "qualificationTypesGet",
        "summary": "Get qualification types",
        "description": "Retrieves available qualification types and their details for use in crew qualification assignments.\n\n**Features:**\n- Returns paginated list of available qualifications\n- Includes qualification metadata and configuration\n\n**Example Use Case:** An operations manager needs to see all available qualification types in the system to properly assign qualifications to crew members.\n\nFor more information on managing crew qualifications, see the [Crew Qualification Management Guide](/guides/guides/crew-qualification).\n",
        "tags": [
          "Crew Qualifications"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 10,
              "maximum": 50,
              "default": 10
            },
            "description": "Maximum number of records to return.",
            "example": 20
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            },
            "description": "Number of records to skip before starting to return results.",
            "example": 0
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved qualifications",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedQualificationDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          }
        }
      }
    },
    "/api/v2/qualification-types/{id}": {
      "get": {
        "operationId": "qualificationTypeByIdGet",
        "summary": "Get qualification type by ID",
        "description": "Retrieves detailed information about a specific qualification type.\n\n**Features:**\n- Returns complete qualification configuration and metadata\n- Includes validity periods, grace periods, and relation information\n\n**Example Use Case:** An operations manager needs to understand the specific requirements and configuration of a qualification type before assigning it to a crew member.\n\nFor more information on managing crew qualifications, see the [Crew Qualification Management Guide](/guides/guides/crew-qualification).\n",
        "tags": [
          "Crew Qualifications"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the qualification to retrieve",
            "example": "qual-type-12345"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved qualification",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QualificationDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid qualification ID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - qualification does not exist"
          }
        }
      }
    },
    "/api/v2/roster-types-search": {
      "post": {
        "operationId": "rosterTypesSearch",
        "summary": "Get roster types",
        "description": "Returns roster (duty) types with pagination. **This endpoint supports only pagination:** send `limit` and `offset` in the request body. Filters and sorts are **not supported** for roster types; do not send `filters` or `sorts`.\n\nEach item is a simplified type (id, name, displayLabel, isNative, isCustom, displayOrder, nestedTypes). Use GET /api/v2/roster-types/{id} for the full type including boolean flags.\n",
        "tags": [
          "Roster Types"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RosterTypesSearchRequest"
              },
              "example": {
                "limit": 20,
                "offset": 0
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully retrieved roster types (paginated; each item is simplified with nestedTypes tree)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RosterTypePageResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          }
        }
      }
    },
    "/api/v2/roster-types/{id}": {
      "get": {
        "operationId": "rosterTypeByIdGet",
        "summary": "Get roster type",
        "description": "Retrieves detailed information for a specific roster type by its unique identifier.\n\n**Features:**\n- Returns boolean flags indicating enabled features (aircraft, airports, logbook, FTL, etc.)\n- Provides configuration details for specific duty fields\n- Supports dynamic UI validation based on the roster type\n\n**Example Use Case:** Before creating a roster assignment, the system calls this endpoint to check if the chosen duty type requires aircraft and airport information, ensuring only relevant fields are presented to the user.\n",
        "tags": [
          "Roster Types"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Unique identifier of the roster type (same value you use as rosterTypeId in roster assignments).",
            "example": "112233"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved roster type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RosterTypeDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - roster type does not exist"
          }
        }
      }
    },
    "/api/v2/rosters-search": {
      "post": {
        "operationId": "rosterAssignmentsSearch",
        "summary": "Get roster assignments",
        "description": "Returns a paginated list of roster assignments. **Request body uses the same pagination structure as other v2 search endpoints** (e.g. GET /api/v2/flights): `limit`, `offset`, `filters`, `sorts`.\n\n**Supported filters:** Each filter is an object with `field`, `operator`, `value`. All optional.\n- `crewId` — operator `EQ` — crew member identifier\n- `rosterTypeId` — operator `EQ` — roster type id (same as RosterTypeDto.id)\n- `startDateTime` — operator `GTE` — assignments on or after this date-time (ISO 8601)\n- `endDateTime` — operator `LTE` — assignments on or before this date-time (ISO 8601)\n\n**Supported sorts:** `startDateTime` (direction ASC or DESC).\n\nEach item is simplified; use GET /api/v2/rosters/{id} for full details.\n",
        "tags": [
          "Roster Assignment"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchPageRequest"
              },
              "example": {
                "limit": 20,
                "offset": 0,
                "filters": [
                  {
                    "field": "crewId",
                    "operator": "EQ",
                    "value": "crew-12345"
                  },
                  {
                    "field": "startDateTime",
                    "operator": "GTE",
                    "value": "2025-03-01T00:00:00+01:00"
                  },
                  {
                    "field": "endDateTime",
                    "operator": "LTE",
                    "value": "2025-03-31T23:59:59+01:00"
                  }
                ],
                "sorts": [
                  {
                    "field": "startDateTime",
                    "sortDirection": "ASC"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully retrieved roster assignments (paginated; each item is simplified; use GET /rosters/{id} for full details)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RosterAssignmentPageResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          }
        }
      }
    },
    "/api/v2/rosters": {
      "post": {
        "operationId": "rosterAssignmentCreate",
        "summary": "Create roster assignment",
        "description": "Creates a new roster assignment for a crew member. This is equivalent to adding a duty or day in the FL3XX roster interface.\n\n**Features:**\n- Create various duty types (e.g., Off, Flight, Standby, Training)\n- Supports detailed duty information including aircraft, airports, and notes\n- Dynamic validation based on the selected roster type\n\n**Example Use Case:** An automated scheduling system creates a \"Standby\" duty for a crew member, providing the start and end times, and ensuring all required references are correctly resolved.\n\n**Important:**\nThe fields required for a successful creation depend on the selected roster type. You should first check the roster type's configuration using the Roster Types endpoints to determine which features (e.g., aircraft, airports, FTL) are enabled.\n",
        "tags": [
          "Roster Assignment"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RosterAssignmentCreateDto"
              },
              "example": {
                "crewId": "crew-12345",
                "rosterTypeId": "112233",
                "startDateTime": "2025-03-01T09:00:00+01:00",
                "endDateTime": "2025-03-01T17:00:00+01:00",
                "dutySubtype": "ALL_DAY",
                "notes": "Day off as requested"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successfully created roster assignment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RosterAssignmentDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - validation error (e.g. missing required fields)"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          }
        }
      }
    },
    "/api/v2/rosters/{id}": {
      "get": {
        "operationId": "rosterAssignmentByIdGet",
        "summary": "Get roster assignment",
        "description": "Retrieves the full details of a specific roster assignment.\n\n**Features:**\n- Returns complete assignment data including aircraft, airports, and logbook details\n- Provides timing and status information\n- Dynamic response structure based on the assignment's roster type\n\n**Example Use Case:** A crew member's mobile app retrieves the full details of a \"Flight\" duty to display the assigned aircraft and the departure/arrival airports to the user.\n\n**Note:** Sections such as `aircraft`, `logbook`, and `ftl` will be populated only if they are enabled for that specific duty type; otherwise, they will be null.\n",
        "tags": [
          "Roster Assignment"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Unique identifier of the roster assignment.",
            "example": "98765"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved roster assignment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RosterAssignmentDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - roster assignment does not exist"
          }
        }
      },
      "put": {
        "operationId": "rosterAssignmentByIdPut",
        "summary": "Update roster assignment",
        "description": "Updates an existing roster assignment. All fields in the request body are optional; only the provided fields will be modified.\n\n**Features:**\n- Update timing, status, and associated data for a roster duty\n- Support for changing the roster type of an existing assignment\n- Partial updates allow for efficient synchronization of roster data\n\n**Example Use Case:** A scheduler updates the end time of an existing duty or changes the assigned aircraft after an operational adjustment.\n\n**Note:**\nAs with the create operation, the relevance of fields depends on the roster type of the assignment. If you change the `rosterTypeId`, ensure that any other updated fields are supported by the new type.\n",
        "tags": [
          "Roster Assignment"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Unique identifier of the roster assignment to update.",
            "example": "98765"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RosterAssignmentPatchDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully updated roster assignment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RosterAssignmentDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - validation error"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - roster assignment does not exist"
          }
        }
      },
      "delete": {
        "operationId": "rosterAssignmentByIdDelete",
        "summary": "Delete a roster assignment",
        "description": "Permanently removes the roster assignment.",
        "tags": [
          "Roster Assignment"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Unique identifier of the roster assignment to delete.",
            "example": "98765"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully deleted roster assignment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeletedDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - roster assignment does not exist"
          }
        }
      }
    },
    "/api/v2/flights": {
      "get": {
        "operationId": "flightsGet",
        "summary": "Get flights",
        "description": "Retrieves flights with pagination and filtering capabilities. This endpoint provides access to simplified flight information including schedules, aircraft assignments, airports, and passenger counts.\n\n**Features:**\n- Filter by estimated blocks‑off date and time range (required) using the `BTW` (between) operator\n- Paginated results with configurable limit (10–50) and offset\n- Default sorting by estimated blocks‑off date and time (descending)\n- Returns flight data, including arrival and departure airport details, quote information, and workflow type\n\n**Response Data:**\n- Flight identification (ID, flight number, tail number)\n- Quote information (quote ID, external reference, identifier)\n- Time estimates (blocks‑off and blocks‑on estimated times)\n- Airport details (arrival and departure airports with ICAO, IATA, FAA codes)\n- Passenger and trip information\n- Customer and account identifiers\n- Workflow type and custom workflow name\n\n**Example Use Case:** An operations manager needs to retrieve all flights scheduled between two dates to plan crew assignments and resource allocation. The endpoint returns paginated results with complete airport information for both departure and arrival locations.\n",
        "tags": [
          "Flights"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 10,
              "maximum": 50,
              "default": 10
            },
            "description": "Maximum number of records to return.",
            "example": 20
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            },
            "description": "Number of records to skip before starting to return results.",
            "example": 0
          },
          {
            "name": "filter",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Filter by `blocksOffEstimatedDateTime` (required).\n\n**Required filters:**\n- `blocksOffEstimatedDateTime` with the `BTW` operator (between)\n  - Date format: `YYYY-MM-DDTHH:mm:ss.SSSZ`\n  - Date values must be URL‑encoded. For example, the following value `blocksOffEstimatedDateTime,BTW,2025-01-01T00:00:00.000Z/2025-01-31T23:59:59.999Z` must be encoded and sent as `blocksOffEstimatedDateTime,BTW,2025-01-01T00%3A00%3A00.000Z/2025-01-31T23%3A59%3A59.999Z`.\n",
            "example": "blocksOffEstimatedDateTime,BTW,2025-01-01T00%3A00%3A00.000Z/2025-01-31T23%3A59%3A59.999Z"
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "blocksOffEstimatedDateTime desc"
            },
            "description": "Sort criteria in the format: field direction\n\nSupported sort fields:\n- `blocksOffEstimatedDateTime` (default: desc)\n",
            "example": "blocksOffEstimatedDateTime desc"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved flights",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlightPageResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid parameters or missing required filters"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          }
        }
      }
    },
    "/api/v2/flights/{flightId}/permits": {
      "get": {
        "operationId": "flightPermitsGet",
        "summary": "Get flight permits",
        "description": "Retrieves all flight permits for a specific flight.\n\n**Features:**\n- Returns all permits associated with the flight\n- Includes permit details, status, and document information\n\n**Note:** This endpoint is for operators within the context of the operator data. For FL3XX Partner Providers, use the `/partners` endpoints instead.\n\n**Example Use Case:** An operations manager needs to retrieve all permits for a flight to verify compliance and check permit statuses before departure.\n",
        "tags": [
          "Flight Permits"
        ],
        "parameters": [
          {
            "name": "flightId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the flight",
            "example": "12345"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved flight permits",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FlightPermitSimplifiedDto"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid flight ID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          }
        }
      }
    },
    "/api/v2/flight-permits/{flightPermitId}": {
      "get": {
        "operationId": "flightPermitsByIdGet",
        "summary": "Get flight permit by ID",
        "description": "Retrieves detailed information about a specific flight permit including associated documents.\n\n**Features:**\n- Returns complete permit details including document references\n- Includes creation and update timestamps\n\n**Note:** This endpoint is for operators within the context of the operator data. For FL3XX Partner Providers, use the `/partners` endpoints instead.\n\n**Example Use Case:** An operations manager needs to review the complete details of a specific permit, including any uploaded documents, to verify compliance or prepare for audits.\n",
        "tags": [
          "Flight Permits"
        ],
        "parameters": [
          {
            "name": "flightPermitId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the flight permit to retrieve",
            "example": "permit-12345"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved flight permit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlightPermitDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid permit ID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - permit does not exist"
          }
        }
      }
    },
    "/api/v2/partners/flights/{flightId}/permits": {
      "get": {
        "operationId": "partnerFlightPermitsGet",
        "summary": "Get flight permits - partner scope",
        "description": "Retrieves all flight permits for a specific flight within the partner's scope.\n\n**Features:**\n- Returns only permits accessible to the authenticated partner\n- Includes permit details, status, and document information\n\n**Note:** This endpoint is for Trip Support Providers. Only permits associated with the operator linked to the authentication token will be returned.\n\n**Example Use Case:** A trip support provider needs to retrieve all permits for a flight to verify compliance and check permit statuses before departure.\n",
        "tags": [
          "Flight Permits (Provider)"
        ],
        "parameters": [
          {
            "name": "flightId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the flight",
            "example": "12345"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved flight permits",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FlightPermitSimplifiedDto"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid flight ID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          }
        }
      }
    },
    "/api/v2/partners/flight-permits/{flightPermitId}": {
      "get": {
        "operationId": "partnerFlightPermitsByIdGet",
        "summary": "Get flight permit by ID - partner scope",
        "description": "Retrieves detailed information about a specific flight permit within the partner's scope, including associated documents.\n\n**Features:**\n- Returns complete permit details including document references\n- Includes creation and update timestamps\n\n**Note:** This endpoint is for Trip Support Providers. Only permits associated with the operator linked to the authentication token can be retrieved.\n\n**Example Use Case:** A trip support provider needs to review the complete details of a specific permit, including any uploaded documents, to verify compliance or prepare for audits.\n",
        "tags": [
          "Flight Permits (Provider)"
        ],
        "parameters": [
          {
            "name": "flightPermitId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the flight permit to retrieve",
            "example": "permit-12345"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved flight permit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlightPermitDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid permit ID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - permit does not exist"
          }
        }
      },
      "patch": {
        "operationId": "partnerFlightPermitsPatch",
        "summary": "Update flight permit by ID - partner scope",
        "description": "Updates an existing flight permit with new information.\n\n**Features:**\n- Updates permit details including permit number, status, dates, and notes\n- Supports partial updates of permit information\n\n**Note:** This endpoint is for Trip Support Providers. Only permits associated with the operator linked to the authentication token can be updated.\n\n**Example Use Case:** A trip support provider needs to update a permit after receiving a new permit number or when permit status changes.\n",
        "tags": [
          "Flight Permits (Provider)"
        ],
        "parameters": [
          {
            "name": "flightPermitId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the flight permit to update",
            "example": "permit-12345"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FlightPermitPathDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully updated flight permit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlightPermitSimplifiedDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - validation error or permit not found"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - permit does not exist"
          }
        }
      },
      "delete": {
        "operationId": "partnerFlightPermitsDelete",
        "summary": "Delete flight permit by ID - partner scope",
        "description": "Deletes a flight permit and removes it from the system.\n\n**Features:**\n- Permanently removes the permit record\n- Returns confirmation of deletion\n\n**Note:** This endpoint is for Trip Support Providers. Only permits associated with the operator linked to the authentication token can be deleted.\n\n**Example Use Case:** A trip support provider needs to remove an obsolete permit that is no longer valid or relevant for a flight.\n",
        "tags": [
          "Flight Permits (Provider)"
        ],
        "parameters": [
          {
            "name": "flightPermitId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the flight permit to delete",
            "example": "permit-12345"
          }
        ],
        "responses": {
          "204": {
            "description": "Successfully deleted flight permit"
          },
          "400": {
            "description": "Bad request - permit not found"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - permit does not exist"
          }
        }
      }
    },
    "/api/v2/partners/flight-permits": {
      "post": {
        "operationId": "partnerFlightPermitsPost",
        "summary": "Create flight permit - partner scope",
        "description": "Creates a new flight permit for a flight with permit details, status, and dates.\n\n**Features:**\n- Validates required fields including flight ID and permit type\n- Supports permit number, status, dates, country, and airport information\n- Handles takeoff, landing, and overflight permit types\n\n**Note:** This endpoint is for Trip Support Providers. Only permits for flights associated with the operator linked to the authentication token can be created.\n\n**Example Use Case:** A trip support provider needs to create a new landing permit for a flight after receiving approval from the destination country's aviation authority.\n",
        "tags": [
          "Flight Permits (Provider)"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FlightPermitCreateDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully created flight permit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlightPermitSimplifiedDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - validation error"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          }
        }
      }
    },
    "/api/v2/partners/flight-permits/{flightPermitId}/documents": {
      "post": {
        "operationId": "partnerFlightPermitDocumentPost",
        "summary": "Upload document associated with a flight permit - partner scope",
        "description": "Uploads a document file to be associated with a flight permit.\n\n**Features:**\n- Supports various document formats\n- Associates the document with the specific permit\n- Returns confirmation of upload\n\n**Supported File Types:**\n- Images: All image formats (JPEG, PNG, GIF, BMP, etc.) except SVG\n- Documents: PDF, Microsoft Office (Word, Excel, PowerPoint: .doc, .docx, .xls, .xlsx, .ppt, .pptx), OpenDocument formats (.odt, .ods), Microsoft Word legacy (.doc)\n- Other: Email messages (.eml), Apple Passbook (.pkpass)\n\n**File Size Limits:**\n- Maximum file size: 5 MB (5,242,880 bytes)\n\n**Note:** This endpoint is for Trip Support Providers. Only permits associated with the operator linked to the authentication token can have documents uploaded. Each permit can have only one document associated with it.\n\n**Example Use Case:** A trip support provider needs to upload a scanned copy of a permit certificate or approval document to maintain digital records for compliance and verification.\n",
        "tags": [
          "Flight Permits (Provider)"
        ],
        "parameters": [
          {
            "name": "flightPermitId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the flight permit",
            "example": "permit-12345"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary",
                    "description": "The document file to upload. Maximum file size is 5 MB. Supported formats include images (except SVG), PDF, Microsoft Office documents, OpenDocument formats, and email messages.\n"
                  }
                },
                "required": [
                  "file"
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Successfully uploaded document"
          },
          "400": {
            "description": "Bad request - invalid file or permit ID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - permit does not exist"
          }
        }
      }
    },
    "/api/v2/partners/flight-permits/{flightPermitId}/documents/{documentUuid}": {
      "get": {
        "operationId": "partnerFlightPermitDocumentGet",
        "summary": "Get document associated with a flight permit - partner scope",
        "description": "Downloads a document associated with a flight permit.\n\n**Features:**\n- Downloads the actual document file\n- Validates document ownership and access permissions\n\n**Note:** This endpoint is for Trip Support Providers. Only documents for permits associated with the operator linked to the authentication token can be downloaded.\n\n**Example Use Case:** A trip support provider needs to download a permit certificate or approval document for verification or compliance purposes.\n",
        "tags": [
          "Flight Permits (Provider)"
        ],
        "parameters": [
          {
            "name": "flightPermitId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the flight permit",
            "example": "permit-12345"
          },
          {
            "name": "documentUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the document to download",
            "example": "doc-uuid-67890"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved document",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid permit ID or document UUID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - permit or document does not exist"
          }
        }
      },
      "delete": {
        "operationId": "deleteFlightPermitDocumentForPartner",
        "summary": "Delete document associated with a flight permit - partner scope",
        "description": "Deletes a document associated with a flight permit.\n\n**Features:**\n- Permanently removes the document file\n- Returns confirmation of deletion\n\n**Note:** This endpoint is for Trip Support Providers. Only documents for permits associated with the operator linked to the authentication token can be deleted.\n\n**Example Use Case:** A trip support provider needs to remove an outdated or incorrect document that was previously uploaded for a permit.\n",
        "tags": [
          "Flight Permits (Provider)"
        ],
        "parameters": [
          {
            "name": "flightPermitId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the flight permit",
            "example": "permit-12345"
          },
          {
            "name": "documentUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the document to delete",
            "example": "doc-uuid-67890"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully deleted document",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeletedDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid permit ID or document UUID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - permit or document does not exist"
          }
        }
      }
    },
    "/api/v2/flights/{flightId}/slots-pprs": {
      "get": {
        "operationId": "slotsAndPprsGet",
        "summary": "Get flight slots and PPRs",
        "description": "Retrieves all flight slots and PPRs for a specific flight.\n\n**Features:**\n- Returns all slots and PPRs associated with the flight\n- Includes slot/PPR details, status, and document information\n\n**Note:** This endpoint is for operators within the context of the operator data. For Trip Support Providers, use the `/partners` endpoints instead.\n\n**Example Use Case:** An operations manager needs to retrieve all slots and PPRs for a flight to verify compliance and check statuses before departure.\n",
        "tags": [
          "Flight Slots & PPRs"
        ],
        "parameters": [
          {
            "name": "flightId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the flight",
            "example": "12345"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved flight slots and PPRs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FlightSlotPprSimplifiedDto"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid flight ID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          }
        }
      }
    },
    "/api/v2/flight-slots-pprs/{slotPprId}": {
      "get": {
        "operationId": "slotPprByIdGet",
        "summary": "Get flight slot/PPR by ID",
        "description": "Retrieves detailed information about a specific flight slot or PPR including associated documents.\n\n**Features:**\n- Returns complete slot/PPR details including document references\n- Includes creation and update timestamps\n\n**Note:** This endpoint is for operators within the context of the operator data. For Trip Support Providers, use the `/partners` endpoints instead.\n\n**Example Use Case:** An operations manager needs to review the complete details of a specific slot or PPR, including any uploaded documents, to verify compliance or prepare for audits.\n",
        "tags": [
          "Flight Slots & PPRs"
        ],
        "parameters": [
          {
            "name": "slotPprId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the flight slot or PPR to retrieve",
            "example": "slot-ppr-12345"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved flight slot/PPR",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlightSlotPprDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid slot/PPR ID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - slot/PPR does not exist"
          }
        }
      }
    },
    "/api/v2/partners/flights/{flightId}/slots-pprs": {
      "get": {
        "operationId": "partnerSlotsAndPprsGet",
        "summary": "Get flight slots and PPRs - partner scope",
        "description": "Retrieves all flight slots and PPRs for a specific flight within the partner's scope.\n\n**Features:**\n- Returns only slots and PPRs accessible to the authenticated partner\n- Includes slot/PPR details, status, and document information\n\n**Note:** This endpoint is for Trip Support Providers. Only slots and PPRs associated with the operator linked to the authentication token will be returned.\n\n**Example Use Case:** A trip support provider needs to retrieve all slots and PPRs for a flight to verify compliance and check statuses before departure.\n",
        "tags": [
          "Flight Slots & PPRs (Provider)"
        ],
        "parameters": [
          {
            "name": "flightId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the flight",
            "example": "12345"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved flight slots and PPRs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FlightSlotPprSimplifiedDto"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid flight ID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - flight does not exist"
          }
        }
      }
    },
    "/api/v2/partners/flight-slots-pprs/{slotPprId}": {
      "get": {
        "operationId": "partnerSlotsAndPprsByIdGet",
        "summary": "Get flight slot/PPR by ID - partner scope",
        "description": "Retrieves detailed information about a specific flight slot or PPR within the partner's scope, including associated documents.\n\n**Features:**\n- Returns complete slot/PPR details including document references\n- Includes creation and update timestamps\n\n**Note:** This endpoint is for Trip Support Providers. Only slots and PPRs associated with the operator linked to the authentication token can be retrieved.\n\n**Example Use Case:** A trip support provider needs to review the complete details of a specific slot or PPR, including any uploaded documents, to verify compliance or prepare for audits.\n",
        "tags": [
          "Flight Slots & PPRs (Provider)"
        ],
        "parameters": [
          {
            "name": "slotPprId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the flight slot or PPR to retrieve",
            "example": "slot-ppr-12345"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved flight slot/PPR",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlightSlotPprDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid slot/PPR ID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - slot/PPR does not exist"
          }
        }
      },
      "patch": {
        "operationId": "partnerSlotsAndPprsByIdPatch",
        "summary": "Update flight slot/PPR by ID - partner scope",
        "description": "Updates an existing flight slot or PPR with new information.\n\n**Features:**\n- Updates slot/PPR details including permit number, status, approval date, and notes\n- Supports partial updates of slot/PPR information\n\n**Note:** This endpoint is for Trip Support Providers. Only slots and PPRs associated with the operator linked to the authentication token can be updated.\n\n**Example Use Case:** A trip support provider needs to update a slot or PPR after receiving a new permit number or when status changes.\n",
        "tags": [
          "Flight Slots & PPRs (Provider)"
        ],
        "parameters": [
          {
            "name": "slotPprId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the flight slot or PPR to update",
            "example": "slot-ppr-12345"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FlightSlotPprPathDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully updated flight slot/PPR",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlightSlotPprSimplifiedDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - validation error or slot/PPR not found"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - slot/PPR does not exist"
          }
        }
      }
    },
    "/api/v2/partners/flight-slots-pprs/{slotPprId}/documents": {
      "post": {
        "operationId": "partnerSlotPprDocumentsPost",
        "summary": "Upload document associated with a flight slot/PPR - partner scope",
        "description": "Uploads a document file to be associated with a flight slot or PPR.\n\n**Features:**\n- Supports various document formats\n- Associates the document with the specific slot/PPR\n- Returns confirmation of upload\n\n**Supported File Types:**\n- Images: All image formats (JPEG, PNG, GIF, BMP, etc.) except SVG\n- Documents: PDF, Microsoft Office (Word, Excel, PowerPoint: .doc, .docx, .xls, .xlsx, .ppt, .pptx), OpenDocument formats (.odt, .ods), Microsoft Word legacy (.doc)\n- Other: Email messages (.eml), Apple Passbook (.pkpass)\n\n**File Size Limits:**\n- Maximum file size: 5 MB (5,242,880 bytes)\n\n**Note:** This endpoint is for Trip Support Providers. Only slots and PPRs associated with the operator linked to the authentication token can have documents uploaded. Each slot/PPR can have only one document associated with it.\n\n**Example Use Case:** A trip support provider needs to upload a scanned copy of a slot confirmation or PPR approval document to maintain digital records for compliance and verification.\n",
        "tags": [
          "Flight Slots & PPRs (Provider)"
        ],
        "parameters": [
          {
            "name": "slotPprId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the flight slot or PPR",
            "example": "slot-ppr-12345"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary",
                    "description": "The document file to upload. Maximum file size is 5 MB. Supported formats include images (except SVG), PDF, Microsoft Office documents, OpenDocument formats, and email messages.\n"
                  }
                },
                "required": [
                  "file"
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Successfully uploaded document"
          },
          "400": {
            "description": "Bad request - invalid file or slot/PPR ID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - slot/PPR does not exist"
          },
          "422": {
            "description": "Unprocessable entity - slot/PPR already has a document associated"
          }
        }
      }
    },
    "/api/v2/partners/flight-slots-pprs/{slotPprId}/documents/{documentUuid}": {
      "get": {
        "operationId": "partnerSlotPprDocumentsGet",
        "summary": "Get document associated with a flight slot/PPR - partner scope",
        "description": "Downloads a document associated with a flight slot or PPR.\n\n**Features:**\n- Downloads the actual document file\n- Validates document ownership and access permissions\n\n**Note:** This endpoint is for Trip Support Providers. Only documents for slots and PPRs associated with the operator linked to the authentication token can be downloaded.\n\n**Example Use Case:** A trip support provider needs to download a slot confirmation or PPR approval document for verification or compliance purposes.\n",
        "tags": [
          "Flight Slots & PPRs (Provider)"
        ],
        "parameters": [
          {
            "name": "slotPprId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the flight slot or PPR",
            "example": "slot-ppr-12345"
          },
          {
            "name": "documentUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the document to download",
            "example": "doc-uuid-67890"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved document",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid slot/PPR ID or document UUID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - slot/PPR or document does not exist"
          }
        }
      },
      "delete": {
        "operationId": "partnerSlotPprDocumentsDelete",
        "summary": "Delete document associated with a flight slot/PPR - partner scope",
        "description": "Deletes a document associated with a flight slot or PPR.\n\n**Features:**\n- Permanently removes the document file\n- Returns confirmation of deletion\n\n**Note:** This endpoint is for Trip Support Providers. Only documents for slots and PPRs associated with the operator linked to the authentication token can be deleted.\n\n**Example Use Case:** A trip support provider needs to remove an outdated or incorrect document that was previously uploaded for a slot or PPR.\n",
        "tags": [
          "Flight Slots & PPRs (Provider)"
        ],
        "parameters": [
          {
            "name": "slotPprId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the flight slot or PPR",
            "example": "slot-ppr-12345"
          },
          {
            "name": "documentUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the document to delete",
            "example": "doc-uuid-67890"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully deleted document",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeletedDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid slot/PPR ID or document UUID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - slot/PPR or document does not exist"
          }
        }
      }
    },
    "/api/v2/partners/flights/{flightId}/fbo-services": {
      "get": {
        "operationId": "partnerFboGet",
        "summary": "Get FBO service for a flight - partner scope",
        "description": "Retrieves the FBO (Fixed Base Operator) service information for a specific flight within the partner's scope.\n\n**Features:**\n- Returns FBO service details including status, remarks, and documents\n- Includes creation and update timestamps\n\n**Note:** This endpoint is for Trip Support Providers. Only FBO services associated with the operator linked to the authentication token will be returned.\n\n**Example Use Case:** A trip support provider needs to retrieve FBO service information for a flight to verify service arrangements and check status.\n",
        "tags": [
          "FBO (Provider)"
        ],
        "parameters": [
          {
            "name": "flightId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the flight",
            "example": "12345"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved FBO service",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FboSimplifiedDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid flight ID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - flight or FBO service does not exist"
          }
        }
      }
    },
    "/api/v2/partners/fbo-services/{serviceId}": {
      "get": {
        "operationId": "partnerFboByIdGet",
        "summary": "Get FBO service by ID - partner scope",
        "description": "Retrieves detailed information about a specific FBO service within the partner's scope, including associated documents.\n\n**Features:**\n- Returns complete FBO service details including document references\n- Includes creation and update timestamps\n\n**Note:** This endpoint is for Trip Support Providers. Only FBO services associated with the operator linked to the authentication token can be retrieved.\n\n**Example Use Case:** A trip support provider needs to review the complete details of a specific FBO service, including any uploaded documents, to verify compliance or prepare for audits.\n",
        "tags": [
          "FBO (Provider)"
        ],
        "parameters": [
          {
            "name": "serviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the FBO service to retrieve",
            "example": "fbo-12345"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved FBO service",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FboDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid FBO ID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - FBO service does not exist"
          }
        }
      },
      "patch": {
        "operationId": "partnerFboPatch",
        "summary": "Update FBO service by ID - partner scope",
        "description": "Updates an existing FBO service with new information.\n\n**Features:**\n- Updates FBO service details including status and remarks\n- Supports partial updates of FBO service information\n\n**Note:** This endpoint is for Trip Support Providers. Only FBO services associated with the operator linked to the authentication token can be updated. FBO services are read-only for properties - creation and deletion are not allowed.\n\n**Example Use Case:** A trip support provider needs to update an FBO service after receiving new status information or when remarks change.\n",
        "tags": [
          "FBO (Provider)"
        ],
        "parameters": [
          {
            "name": "serviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the FBO service to update",
            "example": "fbo-12345"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FboPathDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully updated FBO service",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FboSimplifiedDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - validation error or FBO service not found"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - FBO service does not exist"
          }
        }
      }
    },
    "/api/v2/partners/fbo-services/{serviceId}/documents": {
      "post": {
        "operationId": "partnerFboDocumentPost",
        "summary": "Upload document associated with an FBO service - partner scope",
        "description": "Uploads a document file to be associated with an FBO service.\n\n**Features:**\n- Supports various document formats\n- Associates the document with the specific FBO service\n- Returns confirmation of upload\n\n**Supported File Types:**\n- Images: All image formats (JPEG, PNG, GIF, BMP, etc.) except SVG\n- Documents: PDF, Microsoft Office (Word, Excel, PowerPoint: .doc, .docx, .xls, .xlsx, .ppt, .pptx), OpenDocument formats (.odt, .ods), Microsoft Word legacy (.doc)\n- Other: Email messages (.eml), Apple Passbook (.pkpass)\n\n**File Size Limits:**\n- Maximum file size: 5 MB (5,242,880 bytes)\n\n**Note:** This endpoint is for Trip Support Providers. Only FBO services associated with the operator linked to the authentication token can have documents uploaded.\n\n**Example Use Case:** A trip support provider needs to upload a scanned copy of an FBO confirmation or approval document to maintain digital records for compliance and verification.\n",
        "tags": [
          "FBO (Provider)"
        ],
        "parameters": [
          {
            "name": "serviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the FBO service",
            "example": "fbo-12345"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary",
                    "description": "The document file to upload. Maximum file size is 5 MB. Supported formats include images (except SVG), PDF, Microsoft Office documents, OpenDocument formats, and email messages.\n"
                  }
                },
                "required": [
                  "file"
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Successfully uploaded document"
          },
          "400": {
            "description": "Bad request - invalid file or FBO ID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - FBO service does not exist"
          }
        }
      }
    },
    "/api/v2/partners/fbo-services/{serviceId}/documents/{uuid}": {
      "get": {
        "operationId": "partnerFboDocumentGet",
        "summary": "Get document associated with an FBO service - partner scope",
        "description": "Downloads a document associated with an FBO service.\n\n**Features:**\n- Downloads the actual document file\n- Validates document ownership and access permissions\n\n**Note:** This endpoint is for Trip Support Providers. Only documents for FBO services associated with the operator linked to the authentication token can be downloaded.\n\n**Example Use Case:** A trip support provider needs to download an FBO confirmation or approval document for verification or compliance purposes.\n",
        "tags": [
          "FBO (Provider)"
        ],
        "parameters": [
          {
            "name": "serviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the FBO service",
            "example": "fbo-12345"
          },
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the document to download",
            "example": "doc-uuid-67890"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved document",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid FBO ID or document UUID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - FBO service or document does not exist"
          }
        }
      },
      "delete": {
        "operationId": "partnerFboDocumentDelete",
        "summary": "Delete document associated with an FBO service - partner scope",
        "description": "Deletes a document associated with an FBO service.\n\n**Features:**\n- Permanently removes the document file\n- Returns confirmation of deletion\n\n**Note:** This endpoint is for Trip Support Providers. Only documents for FBO services associated with the operator linked to the authentication token can be deleted.\n\n**Example Use Case:** A trip support provider needs to remove an outdated or incorrect document that was previously uploaded for an FBO service.\n",
        "tags": [
          "FBO (Provider)"
        ],
        "parameters": [
          {
            "name": "serviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the FBO service",
            "example": "fbo-12345"
          },
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the document to delete",
            "example": "doc-uuid-67890"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully deleted document",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeletedDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid FBO ID or document UUID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - FBO service or document does not exist"
          }
        }
      }
    },
    "/api/v2/partners/flights/{flightId}/transport-services": {
      "get": {
        "operationId": "partnerTransportsGet",
        "summary": "Get transport services for a flight - partner scope",
        "description": "Retrieves all transport services for a specific flight within the partner's scope.\n\n**Features:**\n- Returns only transport services accessible to the authenticated partner\n- Includes transport service details, status, type, person, and document information\n\n**Note:** This endpoint is for Trip Support Providers. Only transport services associated with the operator linked to the authentication token will be returned.\n\n**Example Use Case:** A trip support provider needs to retrieve all transport services for a flight to verify service arrangements and check statuses.\n",
        "tags": [
          "Transport (Provider)"
        ],
        "parameters": [
          {
            "name": "flightId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the flight",
            "example": "12345"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved transport services",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TransportSimplifiedDto"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid flight ID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - flight does not exist"
          }
        }
      }
    },
    "/api/v2/partners/transport-services/{serviceId}": {
      "get": {
        "operationId": "partnerTransportByIdGet",
        "summary": "Get transport service by ID - partner scope",
        "description": "Retrieves detailed information about a specific transport service within the partner's scope, including associated documents.\n\n**Features:**\n- Returns complete transport service details including document references\n- Includes creation and update timestamps\n\n**Note:** This endpoint is for Trip Support Providers. Only transport services associated with the operator linked to the authentication token can be retrieved.\n\n**Example Use Case:** A trip support provider needs to review the complete details of a specific transport service, including any uploaded documents, to verify compliance or prepare for audits.\n",
        "tags": [
          "Transport (Provider)"
        ],
        "parameters": [
          {
            "name": "serviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the transport service to retrieve",
            "example": "transport-12345"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved transport service",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransportDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid transport ID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - transport service does not exist"
          }
        }
      },
      "patch": {
        "operationId": "partnerTransportPatch",
        "summary": "Update transport service by ID - partner scope",
        "description": "Updates an existing transport service with new information.\n\n**Features:**\n- Updates transport service details including status, type, person, and notes\n- Supports partial updates of transport service information\n\n**Note:** This endpoint is for Trip Support Providers. Only transport services associated with the operator linked to the authentication token can be updated.\n\n**Example Use Case:** A trip support provider needs to update a transport service after receiving new status information or when service details change.\n",
        "tags": [
          "Transport (Provider)"
        ],
        "parameters": [
          {
            "name": "serviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the transport service to update",
            "example": "transport-12345"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TransportPathDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully updated transport service",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransportSimplifiedDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - validation error or transport service not found"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - transport service does not exist"
          }
        }
      },
      "delete": {
        "operationId": "partnerTransportDelete",
        "summary": "Delete transport service by ID - partner scope",
        "description": "Deletes a transport service and removes it from the system.\n\n**Features:**\n- Permanently removes the transport service record\n- Returns confirmation of deletion\n- Only allowed if the transport service was created by the partner (check \"by\" field)\n\n**Note:** This endpoint is for Trip Support Providers. Only transport services associated with the operator linked to the authentication token and created by the partner can be deleted.\n\n**Example Use Case:** A trip support provider needs to remove a transport service entry that was created in error or is no longer needed.\n",
        "tags": [
          "Transport (Provider)"
        ],
        "parameters": [
          {
            "name": "serviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the transport service to delete",
            "example": "transport-12345"
          }
        ],
        "responses": {
          "204": {
            "description": "Successfully deleted transport service"
          },
          "400": {
            "description": "Bad request - transport service not found or not created by partner"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions or transport service not created by partner"
          },
          "404": {
            "description": "Not found - transport service does not exist"
          }
        }
      }
    },
    "/api/v2/partners/transport-services": {
      "post": {
        "operationId": "partnerTransportPost",
        "summary": "Create transport service - partner scope",
        "description": "Creates a new transport service for a flight with transport details, status, type, person, and notes.\n\n**Features:**\n- Validates required fields including flight ID\n- Supports transport type, status, person assignment, and notes\n- Handles various transport types (Limousine, CarRental, Taxi, GroundTransportation)\n\n**Note:** This endpoint is for Trip Support Providers. Only transport services for flights associated with the operator linked to the authentication token and where the partner is assigned can be created.\n\n**Example Use Case:** A trip support provider needs to create a new transport service for a flight after arranging transportation for passengers or crew.\n",
        "tags": [
          "Transport (Provider)"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TransportCreateDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully created transport service",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransportSimplifiedDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - validation error"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions or partner not assigned to flight"
          }
        }
      }
    },
    "/api/v2/partners/transport-services/{serviceId}/documents": {
      "post": {
        "operationId": "partnerTransportDocumentPost",
        "summary": "Upload document associated with a transport service - partner scope",
        "description": "Uploads a document file to be associated with a transport service.\n\n**Features:**\n- Supports various document formats\n- Associates the document with the specific transport service\n- Returns confirmation of upload\n\n**Supported File Types:**\n- Images: All image formats (JPEG, PNG, GIF, BMP, etc.) except SVG\n- Documents: PDF, Microsoft Office (Word, Excel, PowerPoint: .doc, .docx, .xls, .xlsx, .ppt, .pptx), OpenDocument formats (.odt, .ods), Microsoft Word legacy (.doc)\n- Other: Email messages (.eml), Apple Passbook (.pkpass)\n\n**File Size Limits:**\n- Maximum file size: 5 MB (5,242,880 bytes)\n\n**Note:** This endpoint is for Trip Support Providers. Only transport services associated with the operator linked to the authentication token can have documents uploaded.\n\n**Example Use Case:** A trip support provider needs to upload a scanned copy of a transport confirmation or approval document to maintain digital records for compliance and verification.\n",
        "tags": [
          "Transport (Provider)"
        ],
        "parameters": [
          {
            "name": "serviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the transport service",
            "example": "transport-12345"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary",
                    "description": "The document file to upload. Maximum file size is 5 MB. Supported formats include images (except SVG), PDF, Microsoft Office documents, OpenDocument formats, and email messages.\n"
                  }
                },
                "required": [
                  "file"
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Successfully uploaded document"
          },
          "400": {
            "description": "Bad request - invalid file or transport ID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - transport service does not exist"
          }
        }
      }
    },
    "/api/v2/partners/transport-services/{serviceId}/documents/{documentUuid}": {
      "get": {
        "operationId": "partnerTransportDocumentGet",
        "summary": "Get document associated with a transport service - partner scope",
        "description": "Downloads a document associated with a transport service.\n\n**Features:**\n- Downloads the actual document file\n- Validates document ownership and access permissions\n\n**Note:** This endpoint is for Trip Support Providers. Only documents for transport services associated with the operator linked to the authentication token can be downloaded.\n\n**Example Use Case:** A trip support provider needs to download a transport confirmation or approval document for verification or compliance purposes.\n",
        "tags": [
          "Transport (Provider)"
        ],
        "parameters": [
          {
            "name": "serviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the transport service",
            "example": "transport-12345"
          },
          {
            "name": "documentUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the document to download",
            "example": "doc-uuid-67890"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved document",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid transport ID or document UUID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - transport service or document does not exist"
          }
        }
      },
      "delete": {
        "operationId": "partnerTransportDocumentDelete",
        "summary": "Delete document associated with a transport service - partner scope",
        "description": "Deletes a document associated with a transport service.\n\n**Features:**\n- Permanently removes the document file\n- Returns confirmation of deletion\n\n**Note:** This endpoint is for Trip Support Providers. Only documents for transport services associated with the operator linked to the authentication token can be deleted.\n\n**Example Use Case:** A trip support provider needs to remove an outdated or incorrect document that was previously uploaded for a transport service.\n",
        "tags": [
          "Transport (Provider)"
        ],
        "parameters": [
          {
            "name": "serviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the transport service",
            "example": "transport-12345"
          },
          {
            "name": "documentUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the document to delete",
            "example": "doc-uuid-67890"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully deleted document",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeletedDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid transport ID or document UUID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - transport service or document does not exist"
          }
        }
      }
    },
    "/api/v2/partners/flights/{flightId}/hotel-services": {
      "get": {
        "operationId": "partnerHotelsGet",
        "summary": "Get hotel services for a flight - partner scope",
        "description": "Retrieves all hotel services for a specific flight within the partner's scope.\n\n**Features:**\n- Returns only hotel services accessible to the authenticated partner\n- Includes hotel service details, status, service for, and document information\n\n**Note:** This endpoint is for Trip Support Providers. Only hotel services associated with the operator linked to the authentication token will be returned.\n\n**Example Use Case:** A trip support provider needs to retrieve all hotel services for a flight to verify service arrangements and check statuses.\n",
        "tags": [
          "Hotel (Provider)"
        ],
        "parameters": [
          {
            "name": "flightId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the flight",
            "example": "12345"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved hotel services",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/HotelSimplifiedDto"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid flight ID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - flight does not exist"
          }
        }
      }
    },
    "/api/v2/partners/hotel-services/{serviceId}": {
      "get": {
        "operationId": "partnerHotelByIdGet",
        "summary": "Get hotel service by ID - partner scope",
        "description": "Retrieves detailed information about a specific hotel service within the partner's scope, including associated documents.\n\n**Features:**\n- Returns complete hotel service details including document references\n- Includes creation and update timestamps\n\n**Note:** This endpoint is for Trip Support Providers. Only hotel services associated with the operator linked to the authentication token can be retrieved.\n\n**Example Use Case:** A trip support provider needs to review the complete details of a specific hotel service, including any uploaded documents, to verify compliance or prepare for audits.\n",
        "tags": [
          "Hotel (Provider)"
        ],
        "parameters": [
          {
            "name": "serviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the hotel service to retrieve",
            "example": "hotel-12345"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved hotel service",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HotelDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid hotel ID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - hotel service does not exist"
          }
        }
      },
      "patch": {
        "operationId": "partnerHotelPatch",
        "summary": "Update hotel service by ID - partner scope",
        "description": "Updates an existing hotel service with new information.\n\n**Features:**\n- Updates hotel service details including status, service for, and notes\n- Supports partial updates of hotel service information\n\n**Note:** This endpoint is for Trip Support Providers. Only hotel services associated with the operator linked to the authentication token can be updated.\n\n**Example Use Case:** A trip support provider needs to update a hotel service after receiving new status information or when service details change.\n",
        "tags": [
          "Hotel (Provider)"
        ],
        "parameters": [
          {
            "name": "serviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the hotel service to update",
            "example": "hotel-12345"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/HotelPathDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully updated hotel service",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HotelSimplifiedDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - validation error or hotel service not found"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - hotel service does not exist"
          }
        }
      },
      "delete": {
        "operationId": "partnerHotelDelete",
        "summary": "Delete hotel service by ID - partner scope",
        "description": "Deletes a hotel service and removes it from the system.\n\n**Features:**\n- Permanently removes the hotel service record\n- Returns confirmation of deletion\n- Only allowed if the hotel service was created by the partner (check \"by\" field)\n\n**Note:** This endpoint is for Trip Support Providers. Only hotel services associated with the operator linked to the authentication token and created by the partner can be deleted.\n\n**Example Use Case:** A trip support provider needs to remove a hotel service entry that was created in error or is no longer needed.\n",
        "tags": [
          "Hotel (Provider)"
        ],
        "parameters": [
          {
            "name": "serviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the hotel service to delete",
            "example": "hotel-12345"
          }
        ],
        "responses": {
          "204": {
            "description": "Successfully deleted hotel service"
          },
          "400": {
            "description": "Bad request - hotel service not found or not created by partner"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions or hotel service not created by partner"
          },
          "404": {
            "description": "Not found - hotel service does not exist"
          }
        }
      }
    },
    "/api/v2/partners/hotel-services": {
      "post": {
        "operationId": "partnerHotelPost",
        "summary": "Create hotel service - partner scope",
        "description": "Creates a new hotel service for a flight with hotel details, status, service for, and notes.\n\n**Features:**\n- Validates required fields including flight ID\n- Supports service for (PAX, CREW, etc.), status, and notes\n- Handles hotel service assignments\n\n**Note:** This endpoint is for Trip Support Providers. Only hotel services for flights associated with the operator linked to the authentication token and where the partner is assigned can be created.\n\n**Example Use Case:** A trip support provider needs to create a new hotel service for a flight after arranging hotel accommodations for passengers or crew.\n",
        "tags": [
          "Hotel (Provider)"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/HotelCreateDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully created hotel service",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HotelSimplifiedDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - validation error"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions or partner not assigned to flight"
          }
        }
      }
    },
    "/api/v2/partners/hotel-services/{serviceId}/documents": {
      "post": {
        "operationId": "partnerHotelDocumentPost",
        "summary": "Upload document associated with a hotel service - partner scope",
        "description": "Uploads a document file to be associated with a hotel service.\n\n**Features:**\n- Supports various document formats\n- Associates the document with the specific hotel service\n- Returns confirmation of upload\n\n**Supported File Types:**\n- Images: All image formats (JPEG, PNG, GIF, BMP, etc.) except SVG\n- Documents: PDF, Microsoft Office (Word, Excel, PowerPoint: .doc, .docx, .xls, .xlsx, .ppt, .pptx), OpenDocument formats (.odt, .ods), Microsoft Word legacy (.doc)\n- Other: Email messages (.eml), Apple Passbook (.pkpass)\n\n**File Size Limits:**\n- Maximum file size: 5 MB (5,242,880 bytes)\n\n**Note:** This endpoint is for Trip Support Providers. Only hotel services associated with the operator linked to the authentication token can have documents uploaded.\n\n**Example Use Case:** A trip support provider needs to upload a scanned copy of a hotel confirmation or approval document to maintain digital records for compliance and verification.\n",
        "tags": [
          "Hotel (Provider)"
        ],
        "parameters": [
          {
            "name": "serviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the hotel service",
            "example": "hotel-12345"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary",
                    "description": "The document file to upload. Maximum file size is 5 MB. Supported formats include images (except SVG), PDF, Microsoft Office documents, OpenDocument formats, and email messages.\n"
                  }
                },
                "required": [
                  "file"
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Successfully uploaded document"
          },
          "400": {
            "description": "Bad request - invalid file or hotel ID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - hotel service does not exist"
          }
        }
      }
    },
    "/api/v2/partners/hotel-services/{serviceId}/documents/{documentUuid}": {
      "get": {
        "operationId": "partnerHotelDocumentGet",
        "summary": "Get document associated with a hotel service - partner scope",
        "description": "Downloads a document associated with a hotel service.\n\n**Features:**\n- Downloads the actual document file\n- Validates document ownership and access permissions\n\n**Note:** This endpoint is for Trip Support Providers. Only documents for hotel services associated with the operator linked to the authentication token can be downloaded.\n\n**Example Use Case:** A trip support provider needs to download a hotel confirmation or approval document for verification or compliance purposes.\n",
        "tags": [
          "Transport (Provider)"
        ],
        "parameters": [
          {
            "name": "serviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the hotel service",
            "example": "hotel-12345"
          },
          {
            "name": "documentUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the document to download",
            "example": "doc-uuid-67890"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved document",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid hotel ID or document UUID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - hotel service or document does not exist"
          }
        }
      },
      "delete": {
        "operationId": "partnerHotelDocumentDelete",
        "summary": "Delete document associated with a hotel service - partner scope",
        "description": "Deletes a document associated with a hotel service.\n\n**Features:**\n- Permanently removes the document file\n- Returns confirmation of deletion\n\n**Note:** This endpoint is for Trip Support Providers. Only documents for hotel services associated with the operator linked to the authentication token can be deleted.\n\n**Example Use Case:** A trip support provider needs to remove an outdated or incorrect document that was previously uploaded for a hotel service.\n",
        "tags": [
          "Transport (Provider)"
        ],
        "parameters": [
          {
            "name": "serviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the hotel service",
            "example": "hotel-12345"
          },
          {
            "name": "documentUuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the document to delete",
            "example": "doc-uuid-67890"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully deleted document",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeletedDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid hotel ID or document UUID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - hotel service or document does not exist"
          }
        }
      }
    },
    "/api/v2/partners/flights/{flightId}/catering-services": {
      "get": {
        "operationId": "partnerCateringGet",
        "summary": "Get catering services for a flight - partner scope",
        "description": "Retrieves all catering services for a specific flight within the partner's scope.\n\n**Features:**\n- Returns only catering services accessible to the authenticated partner\n- Includes catering service details, status, service for, order, pax, and document information\n\n**Note:** This endpoint is for Trip Support Providers. Only catering services associated with the operator linked to the authentication token will be returned.\n\n**Example Use Case:** A trip support provider needs to retrieve all catering services for a flight to verify service arrangements and check statuses.\n",
        "tags": [
          "Catering (Provider)"
        ],
        "parameters": [
          {
            "name": "flightId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the flight",
            "example": "12345"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved catering services",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CateringSimplifiedDto"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid flight ID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - flight does not exist"
          }
        }
      }
    },
    "/api/v2/partners/catering-services/{serviceId}": {
      "get": {
        "operationId": "partnerCateringByIdGet",
        "summary": "Get catering service by ID - partner scope",
        "description": "Retrieves detailed information about a specific catering service within the partner's scope, including associated documents.\n\n**Features:**\n- Returns complete catering service details including document references\n- Includes creation and update timestamps\n\n**Note:** This endpoint is for Trip Support Providers. Only catering services associated with the operator linked to the authentication token can be retrieved.\n\n**Example Use Case:** A trip support provider needs to review the complete details of a specific catering service, including any uploaded documents, to verify compliance or prepare for audits.\n",
        "tags": [
          "Catering (Provider)"
        ],
        "parameters": [
          {
            "name": "serviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the catering service to retrieve",
            "example": "catering-12345"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved catering service",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CateringDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid catering ID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - catering service does not exist"
          }
        }
      },
      "patch": {
        "operationId": "partnerCateringPatch",
        "summary": "Update catering service by ID - partner scope",
        "description": "Updates an existing catering service with new information.\n\n**Features:**\n- Updates catering service details including status, service for, order, and pax\n- Supports partial updates of catering service information\n\n**Note:** This endpoint is for Trip Support Providers. Only catering services associated with the operator linked to the authentication token can be updated.\n\n**Example Use Case:** A trip support provider needs to update a catering service after receiving new status information or when service details change.\n",
        "tags": [
          "Catering (Provider)"
        ],
        "parameters": [
          {
            "name": "serviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the catering service to update",
            "example": "catering-12345"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CateringPathDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully updated catering service",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CateringSimplifiedDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - validation error or catering service not found"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - catering service does not exist"
          }
        }
      },
      "delete": {
        "operationId": "partnerCateringDelete",
        "summary": "Delete catering service by ID - partner scope",
        "description": "Deletes a catering service and removes it from the system.\n\n**Features:**\n- Permanently removes the catering service record\n- Returns confirmation of deletion\n- Only allowed if the catering service was created by the partner (check \"by\" field)\n\n**Note:** This endpoint is for Trip Support Providers. Only catering services associated with the operator linked to the authentication token and created by the partner can be deleted.\n\n**Example Use Case:** A trip support provider needs to remove a catering service entry that was created in error or is no longer needed.\n",
        "tags": [
          "Catering (Provider)"
        ],
        "parameters": [
          {
            "name": "serviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the catering service to delete",
            "example": "catering-12345"
          }
        ],
        "responses": {
          "204": {
            "description": "Successfully deleted catering service"
          },
          "400": {
            "description": "Bad request - catering service not found or not created by partner"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions or catering service not created by partner"
          },
          "404": {
            "description": "Not found - catering service does not exist"
          }
        }
      }
    },
    "/api/v2/partners/catering-services": {
      "post": {
        "operationId": "partnerCateringPost",
        "summary": "Create catering service - partner scope",
        "description": "Creates a new catering service for a flight with catering details, status, service for, order, and pax.\n\n**Features:**\n- Validates required fields including flight ID\n- Supports service for (PAX, CREW, etc.), status, order, and pax count\n- Handles catering service assignments\n\n**Note:** This endpoint is for Trip Support Providers. Only catering services for flights associated with the operator linked to the authentication token and where the partner is assigned can be created.\n\n**Example Use Case:** A trip support provider needs to create a new catering service for a flight after arranging catering for passengers or crew.\n",
        "tags": [
          "Catering (Provider)"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CateringCreateDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully created catering service",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CateringSimplifiedDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - validation error"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions or partner not assigned to flight"
          }
        }
      }
    },
    "/api/v2/partners/catering-services/{serviceId}/documents": {
      "post": {
        "operationId": "partnerCateringDocumentPost",
        "summary": "Upload document associated with a catering service - partner scope",
        "description": "Uploads a document file to be associated with a catering service.\n\n**Features:**\n- Supports various document formats\n- Associates the document with the specific catering service\n- Returns confirmation of upload\n\n**Supported File Types:**\n- Images: All image formats (JPEG, PNG, GIF, BMP, etc.) except SVG\n- Documents: PDF, Microsoft Office (Word, Excel, PowerPoint: .doc, .docx, .xls, .xlsx, .ppt, .pptx), OpenDocument formats (.odt, .ods), Microsoft Word legacy (.doc)\n- Other: Email messages (.eml), Apple Passbook (.pkpass)\n\n**File Size Limits:**\n- Maximum file size: 5 MB (5,242,880 bytes)\n\n**Note:** This endpoint is for Trip Support Providers. Only catering services associated with the operator linked to the authentication token can have documents uploaded.\n\n**Example Use Case:** A trip support provider needs to upload a scanned copy of a catering confirmation or approval document to maintain digital records for compliance and verification.\n",
        "tags": [
          "Catering (Provider)"
        ],
        "parameters": [
          {
            "name": "serviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the catering service",
            "example": "catering-12345"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary",
                    "description": "The document file to upload. Maximum file size is 5 MB. Supported formats include images (except SVG), PDF, Microsoft Office documents, OpenDocument formats, and email messages.\n"
                  }
                },
                "required": [
                  "file"
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Successfully uploaded document"
          },
          "400": {
            "description": "Bad request - invalid file or catering ID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - catering service does not exist"
          }
        }
      }
    },
    "/api/v2/partners/catering-services/{serviceId}/documents/{uuid}": {
      "get": {
        "operationId": "partnerCateringDocumentGet",
        "summary": "Get document associated with a catering service - partner scope",
        "description": "Downloads a document associated with a catering service.\n\n**Features:**\n- Downloads the actual document file\n- Validates document ownership and access permissions\n\n**Note:** This endpoint is for Trip Support Providers. Only documents for catering services associated with the operator linked to the authentication token can be downloaded.\n\n**Example Use Case:** A trip support provider needs to download a catering confirmation or approval document for verification or compliance purposes.\n",
        "tags": [
          "Catering (Provider)"
        ],
        "parameters": [
          {
            "name": "serviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the catering service",
            "example": "catering-12345"
          },
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the document to download",
            "example": "doc-uuid-67890"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved document",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid catering ID or document UUID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - catering service or document does not exist"
          }
        }
      },
      "delete": {
        "operationId": "partnerCateringDocumentDelete",
        "summary": "Delete document associated with a catering service - partner scope",
        "description": "Deletes a document associated with a catering service.\n\n**Features:**\n- Permanently removes the document file\n- Returns confirmation of deletion\n\n**Note:** This endpoint is for Trip Support Providers. Only documents for catering services associated with the operator linked to the authentication token can be deleted.\n\n**Example Use Case:** A trip support provider needs to remove an outdated or incorrect document that was previously uploaded for a catering service.\n",
        "tags": [
          "Catering (Provider)"
        ],
        "parameters": [
          {
            "name": "serviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the catering service",
            "example": "catering-12345"
          },
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The unique identifier of the document to delete",
            "example": "doc-uuid-67890"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully deleted document",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeletedDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid catering ID or document UUID"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          },
          "404": {
            "description": "Not found - catering service or document does not exist"
          }
        }
      }
    },
    "/api/v2/aircraft": {
      "get": {
        "operationId": "fleetGet",
        "summary": "Get fleet data",
        "description": "Retrieves aircraft fleet data with pagination capabilities. This endpoint provides access to comprehensive aircraft information, including status, specifications, and operational details for both active and inactive aircraft.\n\n**Features:**\n- Returns both active and inactive aircraft in the fleet\n- Paginated results with configurable limit (10–50) and offset\n- Default sorting by updated date and time (descending)\n- Returns complete aircraft details, including home‑base airport information\n\n**Response Data:**\n- Aircraft identification (ID, tail number, name)\n- Operational details (type of use, status, number of seats)\n- Aircraft category (for example, HEAVY_JET, LIGHT_JET, HELICOPTER)\n- Home‑base airport information (ICAO, IATA, FAA codes, name, local identifier, AID)\n- Timestamps (creation and last update dates)\n- Additional notes and metadata\n\n**Example Use Case:** An operations manager needs to retrieve the complete fleet list to plan aircraft assignments and monitor aircraft status across the organization. The endpoint returns paginated results with detailed airport information for each aircraft’s home base.\n",
        "tags": [
          "Aircraft"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 10,
              "maximum": 50,
              "default": 10
            },
            "description": "Maximum number of records to return.",
            "example": 20
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            },
            "description": "Number of records to skip before starting to return results.",
            "example": 0
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "updatedAtDateTime desc"
            },
            "description": "Sort criteria in the format: field direction\n\nSupported sort fields:\n- `updatedAtDateTime` (default: desc)\n",
            "example": "updatedAtDateTime desc"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved fleet data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AircraftPageResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid parameters"
          },
          "401": {
            "description": "Unauthorized - invalid authentication"
          },
          "403": {
            "description": "Forbidden - insufficient permissions"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "X-Api-Client-Id": {
        "type": "apiKey",
        "in": "header",
        "name": "X-Api-Client-Id"
      },
      "X-Auth-Token": {
        "type": "apiKey",
        "in": "header",
        "name": "X-Auth-Token"
      }
    },
    "schemas": {
      "AirportV2Dto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the airport.",
            "example": "123"
          },
          "name": {
            "type": "string",
            "description": "Full name of the airport.",
            "example": "Vienna International Airport"
          },
          "icao": {
            "type": "string",
            "description": "ICAO code of the airport.",
            "example": "LOWW"
          },
          "iata": {
            "type": "string",
            "description": "IATA code of the airport.",
            "example": "VIE"
          },
          "faa": {
            "type": "string",
            "description": "FAA code of the airport (US airports only).",
            "example": "KJFK"
          },
          "localIdentifier": {
            "type": "string",
            "description": "Local identifier code for the airport.",
            "example": "ABC"
          },
          "servedCity": {
            "type": "string",
            "description": "City primarily served by the airport.",
            "example": "Vienna"
          },
          "timezone": {
            "type": "string",
            "description": "Timezone of the airport.",
            "example": "Europe/Vienna"
          },
          "location": {
            "$ref": "#/components/schemas/AirportLocation"
          }
        }
      },
      "AirportLocation": {
        "type": "object",
        "properties": {
          "country": {
            "type": "string",
            "description": "Country name where the airport is located",
            "example": "Austria"
          },
          "countryCode": {
            "type": "string",
            "description": "ISO country code alpha-3",
            "example": "AUT"
          }
        }
      },
      "AirportFuelPriceDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the fuel price record",
            "example": "12345"
          },
          "fboName": {
            "type": "string",
            "description": "Name of the Fixed Base Operator (FBO)",
            "example": "Jet FBO"
          },
          "contractorName": {
            "type": "string",
            "description": "Name of the fuel contractor",
            "example": "Shell Aviation"
          },
          "currency": {
            "type": "string",
            "description": "Currency code for the fuel prices",
            "example": "EUR"
          },
          "volumeFrom": {
            "type": "number",
            "format": "double",
            "description": "Minimum volume for this price tier",
            "example": 1000
          },
          "volumeTo": {
            "type": "number",
            "format": "double",
            "description": "Maximum volume for this price tier",
            "example": 5000
          },
          "unit": {
            "$ref": "#/components/schemas/UnitVolume"
          },
          "pricingPrivate": {
            "$ref": "#/components/schemas/FuelPrice"
          },
          "pricingCommercial": {
            "$ref": "#/components/schemas/FuelPrice"
          },
          "preArrivalRemarks": {
            "type": "string",
            "description": "Remarks for pre-arrival fuel services",
            "example": "24-hour notice required"
          },
          "paymentMethod": {
            "type": "string",
            "description": "Accepted payment methods",
            "example": "Credit Card, Invoice"
          },
          "phone": {
            "type": "string",
            "description": "Contact phone number",
            "example": "+1-555-123-4567"
          },
          "email": {
            "type": "string",
            "format": "email",
            "description": "Contact email address",
            "example": "fuel@jetfbo.com"
          },
          "remarks": {
            "type": "string",
            "description": "Additional remarks or notes",
            "example": "Preferred fuel provider"
          },
          "airport": {
            "$ref": "#/components/schemas/AirportMinimalDto"
          },
          "source": {
            "type": "string",
            "description": "Source of the fuel price data",
            "example": "Partner API"
          },
          "vendorId": {
            "type": "string",
            "description": "Vendor identifier",
            "example": "vendor123"
          },
          "vendorName": {
            "type": "string",
            "description": "Vendor name",
            "example": "Fuel Provider Inc"
          },
          "expirationDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Expiration date and time for the fuel price",
            "example": "2024-12-31T23:59:59.000Z"
          },
          "createdAtDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Creation date and time",
            "example": "2024-12-31T23:59:59.000Z"
          },
          "updatedAtDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Last update date and time",
            "example": "2024-12-31T23:59:59.000Z"
          }
        }
      },
      "AirportFuelPriceCreateDto": {
        "type": "object",
        "required": [
          "fboName",
          "contractorName",
          "currency",
          "unit"
        ],
        "properties": {
          "fboName": {
            "type": "string",
            "description": "The name of the Fixed Base Operator (FBO) at the airport. This is the entity responsible for providing fuel services.\n",
            "example": "Jet FBO"
          },
          "contractorName": {
            "type": "string",
            "description": "The name of the contractor providing the fuel services. This could be a fuel supplier or service provider.\n",
            "example": "Shell Aviation"
          },
          "currency": {
            "$ref": "#/components/schemas/Currency"
          },
          "volumeFrom": {
            "type": "number",
            "format": "double",
            "minimum": 0,
            "description": "The minimum volume (inclusive) for which this fuel price applies. Used to define the lower bound of the applicable volume range.\n",
            "example": 1000
          },
          "volumeTo": {
            "type": "number",
            "format": "double",
            "minimum": 0,
            "description": "The maximum volume (inclusive) for which this fuel price applies. Used to define the upper bound of the applicable volume range.\n",
            "example": 5000
          },
          "unit": {
            "$ref": "#/components/schemas/UnitVolume"
          },
          "pricingPrivate": {
            "$ref": "#/components/schemas/FuelPrice"
          },
          "pricingCommercial": {
            "$ref": "#/components/schemas/FuelPrice"
          },
          "preArrivalRemarks": {
            "type": "string",
            "description": "Remarks or instructions for pre-arrival fuel services. This could include special handling instructions or requirements.\n",
            "example": "24-hour notice required"
          },
          "paymentMethod": {
            "type": "string",
            "description": "The method of payment for the fuel services. This could include options like credit card, invoice, or cash.\n",
            "example": "Credit Card, Invoice"
          },
          "phone": {
            "type": "string",
            "description": "The contact phone number for the FBO or fuel provider. This is used for communication regarding fuel services.\n",
            "example": "+1-555-123-4567"
          },
          "email": {
            "type": "string",
            "format": "email",
            "description": "The contact email address for the FBO or fuel provider. This is used for communication regarding fuel services.\n",
            "example": "fuel@jetfbo.com"
          },
          "remarks": {
            "type": "string",
            "description": "Additional remarks or comments regarding the fuel services. This could include special requests or notes for the fuel provider.\n",
            "example": "Preferred fuel provider"
          },
          "expirationDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "The expiration date and time for the fuel price offer. After this time, the offer may no longer be valid.\n",
            "example": "2024-12-31T23:59:59.000Z"
          }
        }
      },
      "FuelPrice": {
        "type": "object",
        "properties": {
          "price": {
            "type": "number",
            "format": "double",
            "minimum": 0,
            "description": "The price of the fuel per unit. Specified in the currency defined in the `currency` field.\n",
            "example": 1.85
          },
          "priceIndex": {
            "type": "number",
            "format": "double",
            "minimum": 0,
            "description": "Price in the given location divided by the Price Private in the base location multiplied by 100\n",
            "example": 105.5
          }
        }
      },
      "AirportDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the airport",
            "example": "123"
          },
          "name": {
            "type": "string",
            "description": "Full name of the airport",
            "example": "Vienna International Airport"
          },
          "icao": {
            "type": "string",
            "description": "ICAO code of the airport",
            "example": "LOWW"
          },
          "iata": {
            "type": "string",
            "description": "IATA code of the airport",
            "example": "VIE"
          },
          "faa": {
            "type": "string",
            "description": "FAA code of the airport (US airports only)",
            "example": "KJFK"
          },
          "localIdentifier": {
            "type": "string",
            "description": "Local identifier code for the airport",
            "example": "ABC"
          },
          "aid": {
            "type": "string",
            "description": "Airport AID (Airport Identifier) code",
            "example": "AID123"
          }
        }
      },
      "AirportMinimalDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Airport identifier",
            "example": "123"
          },
          "name": {
            "type": "string",
            "description": "Airport name",
            "example": "Vienna International Airport"
          },
          "icao": {
            "type": "string",
            "description": "ICAO code",
            "example": "LOWW"
          },
          "iata": {
            "type": "string",
            "description": "IATA code",
            "example": "VIE"
          }
        }
      },
      "Currency": {
        "type": "string",
        "enum": [
          "EUR",
          "USD"
        ],
        "description": "The currency in which the fuel prices are specified. This is a three-letter ISO currency code, such as EUR for Euro or USD for US Dollar.\n"
      },
      "UnitVolume": {
        "type": "string",
        "enum": [
          "LITER",
          "GALLON_USA"
        ],
        "description": "The unit of volume for the fuel prices. This indicates whether the prices are specified per liter or per US gallon. The options are:\n  - `LITER`: Prices are specified per liter.\n  - `GALLON_USA`: Prices are specified per US gallon.\n"
      },
      "WebhookSubscriptionResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the webhook subscription.\n",
            "example": "webhook-sub-12345"
          },
          "event": {
            "$ref": "#/components/schemas/WebhookEventType"
          },
          "callbackUrl": {
            "type": "string",
            "format": "uri",
            "description": "The URL where webhook notifications will be sent.\n",
            "example": "https://example.com/webhooks"
          },
          "status": {
            "$ref": "#/components/schemas/DbStatusType"
          },
          "createdAtDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time when the webhook subscription was created.\n",
            "example": "2024-01-15T10:30:00.000Z"
          },
          "updatedAtDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time when the webhook subscription was last updated.\n",
            "example": "2024-01-15T10:30:00.000Z"
          },
          "expirationDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time when the webhook subscription will expire.\n",
            "example": "2024-02-15T10:30:00.000Z"
          }
        }
      },
      "WebhookSubscriptionCreateDto": {
        "type": "object",
        "required": [
          "event",
          "callbackUrl",
          "signingKey"
        ],
        "properties": {
          "event": {
            "$ref": "#/components/schemas/WebhookEventType"
          },
          "callbackUrl": {
            "type": "string",
            "format": "uri",
            "description": "The URL where webhook notifications will be sent. Must be a valid HTTPS URL.\n",
            "example": "https://example.com/webhooks/flight-updates"
          },
          "signingKey": {
            "type": "string",
            "description": "A secret key used to verify webhook authenticity. This key will be used to sign webhook payloads.\n",
            "example": "your-secret-signing-key-123"
          }
        }
      },
      "WebhookSubscriptionPatchDto": {
        "type": "object",
        "properties": {
          "callbackUrl": {
            "type": "string",
            "format": "uri",
            "description": "The new URL where webhook notifications will be sent. Must be a valid HTTPS URL.\n",
            "example": "https://new-example.com/webhooks"
          },
          "status": {
            "$ref": "#/components/schemas/DbStatusType"
          }
        }
      },
      "WebhookEventType": {
        "type": "string",
        "enum": [
          "FLIGHT_CREATE",
          "FLIGHT_CANCEL",
          "FLIGHT_TIME_UPDATE",
          "FLIGHT_AIRCRAFT_UPDATE",
          "FLIGHT_AIRPORT_UPDATE",
          "FLIGHT_POST_FLIGHT_STATUS",
          "FLIGHT_MOVEMENT_UPDATE",
          "FLIGHT_PAX_COUNT_UPDATE",
          "FLIGHT_PAX_LIST_UPDATE",
          "FLIGHT_PERMIT_ASSIGNMENT",
          "FLIGHT_PERMIT_UNASSIGNMENT",
          "FLIGHT_SLOT_PPR_ASSIGNMENT",
          "FLIGHT_SLOT_PPR_UNASSIGNMENT",
          "FLIGHT_FBO_ASSIGNMENT",
          "FLIGHT_FBO_UNASSIGNMENT",
          "FLIGHT_HOTEL_ASSIGNMENT",
          "FLIGHT_HOTEL_UNASSIGNMENT",
          "FLIGHT_CATERING_ASSIGNMENT",
          "FLIGHT_CATERING_UNASSIGNMENT",
          "FLIGHT_TRANSPORT_ASSIGNMENT",
          "FLIGHT_TRANSPORT_UNASSIGNMENT",
          "FLIGHT_CREW_ASSIGNMENT",
          "FLIGHT_CREW_DOCUMENT_UPDATE",
          "FLIGHT_CREW_ADDRESS_UPDATE"
        ],
        "description": "The type of event that triggers the webhook notification. Each event type corresponds to specific flight-related changes or operations.\n"
      },
      "DbStatusType": {
        "type": "string",
        "enum": [
          "ACTIVE",
          "INACTIVE"
        ],
        "description": "Status of the webhook subscription indicating whether it is active and receiving notifications or inactive.\n"
      },
      "WebhookDeliveryDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the webhook delivery attempt.\n",
            "example": "delivery-12345"
          },
          "resourceType": {
            "type": "string",
            "description": "The type of resource that triggered the webhook delivery.\n",
            "enum": [
              "FLIGHT"
            ]
          },
          "resourceId": {
            "type": "string",
            "description": "The unique identifier of the resource that triggered the webhook delivery.\n",
            "example": "flight-67890"
          },
          "event": {
            "type": "string",
            "description": "The event type that triggered this webhook delivery.\n\n**Subscribable Event Types:**\n- `FLIGHT_CREATE`, `FLIGHT_CANCEL`, `FLIGHT_TIME_UPDATE`, `FLIGHT_AIRCRAFT_UPDATE`, `FLIGHT_AIRPORT_UPDATE`, `FLIGHT_POST_FLIGHT_STATUS`, `FLIGHT_MOVEMENT_UPDATE`, `FLIGHT_PAX_COUNT_UPDATE`, `FLIGHT_PAX_LIST_UPDATE`, `FLIGHT_CREW_LIST_UPDATE`, `FLIGHT_CREW_ASSIGNMENT`, `FLIGHT_CREW_DOCUMENT_UPDATE`, `FLIGHT_CREW_ADDRESS_UPDATE`, `FLIGHT_PERMIT_ASSIGNMENT`, `FLIGHT_PERMIT_UNASSIGNMENT`, `FLIGHT_SLOT_PPR_ASSIGNMENT`, `FLIGHT_SLOT_PPR_UNASSIGNMENT`, `FLIGHT_FBO_ASSIGNMENT`, `FLIGHT_FBO_UNASSIGNMENT`, `FLIGHT_HOTEL_ASSIGNMENT`, `FLIGHT_HOTEL_UNASSIGNMENT`, `FLIGHT_CATERING_ASSIGNMENT`, `FLIGHT_CATERING_UNASSIGNMENT`, `FLIGHT_TRANSPORT_ASSIGNMENT`, `FLIGHT_TRANSPORT_UNASSIGNMENT`\n\n**Group Event Types** (not subscribable; appear when multiple events occur in a short period):\n- `FLIGHT_UPDATE`: Group event that combines multiple flight update events. Includes: `FLIGHT_CREATE`, `FLIGHT_CANCEL`, `FLIGHT_TIME_UPDATE`, `FLIGHT_AIRCRAFT_UPDATE`, `FLIGHT_AIRPORT_UPDATE`, `FLIGHT_POST_FLIGHT_STATUS`, `FLIGHT_MOVEMENT_UPDATE`, `FLIGHT_PERMIT_UPDATE`.\n- `FLIGHT_PASSENGER_UPDATE`: Group event that combines passenger-related events. Includes: `FLIGHT_PAX_COUNT_UPDATE`, `FLIGHT_PAX_LIST_UPDATE`.\n- `FLIGHT_PERMIT_UPDATE`: Group event that combines permit-related events. Includes: `FLIGHT_PERMIT_ASSIGNMENT`, `FLIGHT_PERMIT_UNASSIGNMENT`.\n- `FLIGHT_SLOT_PPR_UPDATE`: Group event that combines slot/PPR-related events. Includes: `FLIGHT_SLOT_PPR_ASSIGNMENT`, `FLIGHT_SLOT_PPR_UNASSIGNMENT`.\n- `FLIGHT_FBO_UPDATE`: Group event that combines FBO-related events. Includes: `FLIGHT_FBO_ASSIGNMENT`, `FLIGHT_FBO_UNASSIGNMENT`.\n- `FLIGHT_TRANSPORT_UPDATE`: Group event that combines transport-related events. Includes: `FLIGHT_TRANSPORT_ASSIGNMENT`, `FLIGHT_TRANSPORT_UNASSIGNMENT`.\n- `FLIGHT_HOTEL_UPDATE`: Group event that combines hotel-related events. Includes: `FLIGHT_HOTEL_ASSIGNMENT`, `FLIGHT_HOTEL_UNASSIGNMENT`.\n- `FLIGHT_CATERING_UPDATE`: Group event that combines catering-related events. Includes: `FLIGHT_CATERING_ASSIGNMENT`, `FLIGHT_CATERING_UNASSIGNMENT`.\n- `FLIGHT_CREW_UPDATE`: Group event that combines flight crew-related events. Includes: `FLIGHT_CREW_LIST_UPDATE`, `FLIGHT_CREW_ASSIGNMENT`, `FLIGHT_CREW_DOCUMENT_UPDATE`, `FLIGHT_CREW_ADDRESS_UPDATE`.\n",
            "enum": [
              "FLIGHT_CREATE",
              "FLIGHT_CANCEL",
              "FLIGHT_TIME_UPDATE",
              "FLIGHT_AIRCRAFT_UPDATE",
              "FLIGHT_AIRPORT_UPDATE",
              "FLIGHT_POST_FLIGHT_STATUS",
              "FLIGHT_MOVEMENT_UPDATE",
              "FLIGHT_PAX_COUNT_UPDATE",
              "FLIGHT_PAX_LIST_UPDATE",
              "FLIGHT_CREW_LIST_UPDATE",
              "FLIGHT_CREW_ASSIGNMENT",
              "FLIGHT_CREW_DOCUMENT_UPDATE",
              "FLIGHT_CREW_ADDRESS_UPDATE",
              "FLIGHT_PERMIT_ASSIGNMENT",
              "FLIGHT_PERMIT_UNASSIGNMENT",
              "FLIGHT_SLOT_PPR_ASSIGNMENT",
              "FLIGHT_SLOT_PPR_UNASSIGNMENT",
              "FLIGHT_FBO_ASSIGNMENT",
              "FLIGHT_FBO_UNASSIGNMENT",
              "FLIGHT_HOTEL_ASSIGNMENT",
              "FLIGHT_HOTEL_UNASSIGNMENT",
              "FLIGHT_CATERING_ASSIGNMENT",
              "FLIGHT_CATERING_UNASSIGNMENT",
              "FLIGHT_TRANSPORT_ASSIGNMENT",
              "FLIGHT_TRANSPORT_UNASSIGNMENT",
              "FLIGHT_UPDATE",
              "FLIGHT_PASSENGER_UPDATE",
              "FLIGHT_PERMIT_UPDATE",
              "FLIGHT_SLOT_PPR_UPDATE",
              "FLIGHT_FBO_UPDATE",
              "FLIGHT_TRANSPORT_UPDATE",
              "FLIGHT_HOTEL_UPDATE",
              "FLIGHT_CATERING_UPDATE",
              "FLIGHT_CREW_UPDATE"
            ]
          },
          "status": {
            "type": "string",
            "description": "The delivery status indicating whether the webhook was successfully delivered.\n",
            "enum": [
              "FAILED"
            ]
          },
          "completedAtDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time (UTC) when the webhook delivery attempt was completed.\n",
            "example": "2024-01-15T10:30:00.000Z"
          }
        }
      },
      "PageResult": {
        "type": "object",
        "description": "Paginated list of webhook deliveries",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WebhookDeliveryDto"
            },
            "description": "The list of webhook deliveries for the current page.\n"
          },
          "pagination": {
            "$ref": "#/components/schemas/Pagination"
          }
        }
      },
      "Pagination": {
        "type": "object",
        "description": "Pagination details",
        "properties": {
          "offset": {
            "type": "integer",
            "description": "Number of records skipped",
            "example": 0
          },
          "limit": {
            "type": "integer",
            "description": "Maximum number of records returned",
            "example": 20
          },
          "totalItems": {
            "type": "integer",
            "description": "Total number of items available",
            "example": 150
          },
          "sortItems": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of fields used for sorting",
            "example": [
              "issueDate desc"
            ]
          },
          "filters": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "field": {
                  "type": "string",
                  "description": "Field name to filter by",
                  "example": "issueDate"
                },
                "operator": {
                  "type": "string",
                  "description": "Filter operator",
                  "example": "gte"
                },
                "value": {
                  "type": "string",
                  "description": "Filter value",
                  "example": "2024-01-01T00:00:00.000Z"
                }
              }
            },
            "description": "List of applied filters"
          }
        }
      },
      "CrewQualificationDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the crew qualification",
            "example": "qual-12345"
          },
          "crewId": {
            "type": "string",
            "description": "Unique identifier of the crew member",
            "example": "crew-67890"
          },
          "qualificationTypeId": {
            "type": "string",
            "description": "Unique identifier of the qualification type",
            "example": "qual-type-12345"
          },
          "licenseNumber": {
            "type": "string",
            "description": "License or certificate number",
            "example": "ATP-123456"
          },
          "issuingAuthority": {
            "type": "string",
            "description": "Authority that issued the license or certificate",
            "example": "FAA"
          },
          "country": {
            "type": "string",
            "description": "Country where the license was issued (ISO 3166-1 alpha-3)",
            "example": "AUT"
          },
          "issueDate": {
            "type": "string",
            "format": "date",
            "description": "Date when the license was issued",
            "example": "2023-01-15"
          },
          "expiryDate": {
            "type": "string",
            "format": "date",
            "description": "Date when the license expires",
            "example": "2025-01-15"
          },
          "trainingStartDate": {
            "type": "string",
            "format": "date",
            "description": "Date when training for this qualification started",
            "example": "2022-12-01"
          },
          "notes": {
            "type": "string",
            "description": "Additional notes or comments about the qualification",
            "example": "Completed simulator training"
          },
          "isPilotInCommand": {
            "type": "boolean",
            "description": "Whether this qualification allows pilot-in-command privileges",
            "example": true
          },
          "baseMonth": {
            "type": "string",
            "enum": [
              "JANUARY",
              "FEBRUARY",
              "MARCH",
              "APRIL",
              "MAY",
              "JUNE",
              "JULY",
              "AUGUST",
              "SEPTEMBER",
              "OCTOBER",
              "NOVEMBER",
              "DECEMBER"
            ],
            "description": "Base month for qualification calculations",
            "example": "JANUARY"
          },
          "document": {
            "$ref": "#/components/schemas/BinaryDocumentDto"
          },
          "createdAtDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the qualification was created",
            "example": "2024-01-15T10:30:00.000Z"
          },
          "updatedAtDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the qualification was last updated",
            "example": "2024-01-15T10:30:00.000Z"
          }
        }
      },
      "CrewQualificationSimplifiedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the crew qualification",
            "example": "qual-12345"
          },
          "crewId": {
            "type": "string",
            "description": "Unique identifier of the crew member",
            "example": "crew-67890"
          },
          "qualificationTypeId": {
            "type": "string",
            "description": "Unique identifier of the qualification type",
            "example": "qual-type-12345"
          },
          "licenseNumber": {
            "type": "string",
            "description": "License or certificate number",
            "example": "ATP-123456"
          },
          "issuingAuthority": {
            "type": "string",
            "description": "Authority that issued the license or certificate",
            "example": "FAA"
          },
          "country": {
            "type": "string",
            "description": "Country where the license was issued (ISO 3166-1 alpha-3)",
            "example": "AUT"
          },
          "issueDate": {
            "type": "string",
            "format": "date",
            "description": "Date when the license was issued",
            "example": "2023-01-15"
          },
          "expiryDate": {
            "type": "string",
            "format": "date",
            "description": "Date when the license expires",
            "example": "2025-01-15"
          },
          "trainingStartDate": {
            "type": "string",
            "format": "date",
            "description": "Date when training for this qualification started",
            "example": "2022-12-01"
          },
          "notes": {
            "type": "string",
            "description": "Additional notes or comments about the qualification",
            "example": "Completed simulator training"
          },
          "isPilotInCommand": {
            "type": "boolean",
            "description": "Whether this qualification allows pilot-in-command privileges",
            "example": true
          },
          "baseMonth": {
            "type": "string",
            "enum": [
              "JANUARY",
              "FEBRUARY",
              "MARCH",
              "APRIL",
              "MAY",
              "JUNE",
              "JULY",
              "AUGUST",
              "SEPTEMBER",
              "OCTOBER",
              "NOVEMBER",
              "DECEMBER"
            ],
            "description": "Base month for qualification calculations",
            "example": "JANUARY"
          },
          "createdAtDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the qualification was created",
            "example": "2024-01-15T10:30:00.000Z"
          },
          "updatedAtDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the qualification was last updated",
            "example": "2024-01-15T10:30:00.000Z"
          }
        }
      },
      "CrewQualificationCreateDto": {
        "type": "object",
        "required": [
          "crewId",
          "qualificationTypeId"
        ],
        "properties": {
          "crewId": {
            "type": "string",
            "description": "Unique identifier of the crew member",
            "example": "crew-67890"
          },
          "qualificationTypeId": {
            "type": "string",
            "description": "Unique identifier of the qualification type",
            "example": "qual-type-12345"
          },
          "licenseNumber": {
            "type": "string",
            "description": "License or certificate number",
            "example": "ATP-123456"
          },
          "issuingAuthority": {
            "type": "string",
            "description": "Authority that issued the license or certificate",
            "example": "FAA"
          },
          "country": {
            "type": "string",
            "description": "Country where the license was issued (ISO 3166-1 alpha-3)",
            "example": "AUT"
          },
          "issueDate": {
            "type": "string",
            "format": "date",
            "description": "Date when the license was issued",
            "example": "2023-01-15"
          },
          "expiryDate": {
            "type": "string",
            "format": "date",
            "description": "Date when the license expires",
            "example": "2025-01-15"
          },
          "trainingStartDate": {
            "type": "string",
            "format": "date",
            "description": "Date when training for this qualification started",
            "example": "2022-12-01"
          },
          "notes": {
            "type": "string",
            "description": "Additional notes or comments about the qualification",
            "example": "Completed simulator training"
          },
          "isPilotInCommand": {
            "type": "boolean",
            "description": "Whether this qualification allows pilot-in-command privileges",
            "example": true
          },
          "baseMonth": {
            "type": "string",
            "enum": [
              "JANUARY",
              "FEBRUARY",
              "MARCH",
              "APRIL",
              "MAY",
              "JUNE",
              "JULY",
              "AUGUST",
              "SEPTEMBER",
              "OCTOBER",
              "NOVEMBER",
              "DECEMBER"
            ],
            "description": "Base month for qualification calculations",
            "example": "JANUARY"
          }
        }
      },
      "CrewQualificationPatchDto": {
        "type": "object",
        "properties": {
          "qualificationTypeId": {
            "type": "string",
            "description": "Unique identifier of the qualification type",
            "example": "qual-type-12345"
          },
          "licenseNumber": {
            "type": "string",
            "description": "License or certificate number",
            "example": "ATP-123456"
          },
          "issuingAuthority": {
            "type": "string",
            "description": "Authority that issued the license or certificate",
            "example": "FAA"
          },
          "country": {
            "type": "string",
            "description": "Country where the license was issued (ISO 3166-1 alpha-3)",
            "example": "AUT"
          },
          "issueDate": {
            "type": "string",
            "format": "date",
            "description": "Date when the license was issued",
            "example": "2023-01-15"
          },
          "expiryDate": {
            "type": "string",
            "format": "date",
            "description": "Date when the license expires",
            "example": "2025-01-15"
          },
          "trainingStartDate": {
            "type": "string",
            "format": "date",
            "description": "Date when training for this qualification started",
            "example": "2022-12-01"
          },
          "notes": {
            "type": "string",
            "description": "Additional notes or comments about the qualification",
            "example": "Completed simulator training"
          },
          "isPilotInCommand": {
            "type": "boolean",
            "description": "Whether this qualification allows pilot-in-command privileges",
            "example": true
          },
          "baseMonth": {
            "type": "string",
            "enum": [
              "JANUARY",
              "FEBRUARY",
              "MARCH",
              "APRIL",
              "MAY",
              "JUNE",
              "JULY",
              "AUGUST",
              "SEPTEMBER",
              "OCTOBER",
              "NOVEMBER",
              "DECEMBER"
            ],
            "description": "Base month for qualification calculations",
            "example": "JANUARY"
          }
        }
      },
      "BinaryDocumentDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Unique identifier for the document",
            "example": 12345
          },
          "uuid": {
            "type": "string",
            "description": "Unique identifier for the document file",
            "example": "doc-uuid-67890"
          },
          "originalName": {
            "type": "string",
            "description": "Original filename of the uploaded document",
            "example": "pilot_license.pdf"
          },
          "fileSize": {
            "type": "number",
            "format": "double",
            "description": "Size of the document file in bytes",
            "example": 1024000
          },
          "createdAtDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the document was uploaded",
            "example": "2024-01-15T10:30:00.000Z"
          },
          "customName": {
            "type": "string",
            "description": "Custom name assigned to the document",
            "example": "Captain License"
          },
          "imageSizeX": {
            "type": "number",
            "format": "double",
            "description": "Width of the image in pixels (if applicable)",
            "example": 1920
          },
          "imageSizeY": {
            "type": "number",
            "format": "double",
            "description": "Height of the image in pixels (if applicable)",
            "example": 1080
          },
          "isThumbnail": {
            "type": "boolean",
            "description": "Whether this is a thumbnail version of the document",
            "example": false
          }
        }
      },
      "FlightPermitDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the flight permit",
            "example": "permit-12345"
          },
          "permitNumber": {
            "type": "string",
            "description": "Permit number or reference identifier",
            "example": "PER-2025-001"
          },
          "status": {
            "$ref": "#/components/schemas/FlightPermitStatus"
          },
          "notes": {
            "type": "string",
            "description": "Additional notes or comments about the permit",
            "example": "Permit approved for landing at LMML"
          },
          "tripProviderId": {
            "type": "string",
            "description": "Unique identifier of the trip provider associated with the permit",
            "example": "provider-123"
          },
          "providerPublicId": {
            "type": "string",
            "description": "Public identifier of the permit provider",
            "example": "provider-public-abc"
          },
          "type": {
            "$ref": "#/components/schemas/PermissionType"
          },
          "externalNotes": {
            "type": "string",
            "description": "External notes or comments from the permit provider",
            "example": "Additional requirements apply"
          },
          "externalStatus": {
            "type": "string",
            "description": "External status from the permit provider system",
            "example": "APPROVED"
          },
          "country": {
            "type": "string",
            "description": "Country code (ISO 3166-1 alpha-3) where the permit applies",
            "example": "MLT"
          },
          "airport": {
            "$ref": "#/components/schemas/AirportMinimalDto"
          },
          "issueDate": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the permit was issued",
            "example": "2025-01-15T10:30:00.000Z"
          },
          "document": {
            "$ref": "#/components/schemas/BinaryDocumentDto"
          },
          "expirationDate": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the permit expires",
            "example": "2025-02-15T23:59:59.000Z"
          },
          "createdAtDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the permit was created",
            "example": "2025-01-15T10:30:00.000Z"
          },
          "updatedAtDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the permit was last updated",
            "example": "2025-01-15T10:30:00.000Z"
          }
        }
      },
      "FlightPermitSimplifiedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the flight permit",
            "example": "permit-12345"
          },
          "permitNumber": {
            "type": "string",
            "description": "Permit number or reference identifier",
            "example": "PER-2025-001"
          },
          "status": {
            "$ref": "#/components/schemas/FlightPermitStatus"
          },
          "notes": {
            "type": "string",
            "description": "Additional notes or comments about the permit",
            "example": "Permit approved for landing at LMML"
          },
          "tripProviderId": {
            "type": "string",
            "description": "Unique identifier of the trip provider associated with the permit",
            "example": "provider-123"
          },
          "providerPublicId": {
            "type": "string",
            "description": "Public identifier of the permit provider",
            "example": "provider-public-abc"
          },
          "type": {
            "$ref": "#/components/schemas/PermissionType"
          },
          "externalNotes": {
            "type": "string",
            "description": "External notes or comments from the permit provider",
            "example": "Additional requirements apply"
          },
          "externalStatus": {
            "type": "string",
            "description": "External status from the permit provider system",
            "example": "APPROVED"
          },
          "country": {
            "type": "string",
            "description": "Country code (ISO 3166-1 alpha-3) where the permit applies",
            "example": "MLT"
          },
          "airport": {
            "$ref": "#/components/schemas/AirportMinimalDto"
          },
          "issueDate": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the permit was issued",
            "example": "2025-01-15T10:30:00.000Z"
          },
          "documentUuid": {
            "type": "string",
            "description": "Unique identifier of the document associated with the permit",
            "example": "doc-uuid-67890"
          },
          "expirationDate": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the permit expires",
            "example": "2025-02-15T23:59:59.000Z"
          },
          "createdAtDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the permit was created",
            "example": "2025-01-15T10:30:00.000Z"
          },
          "updatedAtDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the permit was last updated",
            "example": "2025-01-15T10:30:00.000Z"
          }
        }
      },
      "FlightPermitCreateDto": {
        "type": "object",
        "required": [
          "flightId",
          "type"
        ],
        "properties": {
          "flightId": {
            "type": "string",
            "description": "Unique identifier of the flight for which the permit is being created",
            "example": "12345"
          },
          "permitNumber": {
            "type": "string",
            "description": "Permit number or reference identifier",
            "example": "PER-2025-001"
          },
          "status": {
            "$ref": "#/components/schemas/FlightPermitStatus"
          },
          "notes": {
            "type": "string",
            "description": "Additional notes or comments about the permit",
            "example": "Permit approved for landing at LMML"
          },
          "type": {
            "$ref": "#/components/schemas/PermissionType"
          },
          "externalNotes": {
            "type": "string",
            "description": "External notes or comments from the permit provider",
            "example": "Additional requirements apply"
          },
          "externalStatus": {
            "type": "string",
            "description": "External status from the permit provider system",
            "example": "APPROVED"
          },
          "country": {
            "type": "string",
            "description": "Country code (ISO 3166-1 alpha-3) where the permit applies",
            "example": "MLT"
          },
          "airportCode": {
            "type": "string",
            "description": "Airport code (IATA, ICAO, or FAA) where the permit applies",
            "example": "LMML"
          },
          "issueDate": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the permit was issued",
            "example": "2025-01-15T10:30:00.000Z"
          },
          "expirationDate": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the permit expires",
            "example": "2025-02-15T23:59:59.000Z"
          }
        }
      },
      "FlightPermitPathDto": {
        "type": "object",
        "properties": {
          "permitNumber": {
            "type": "string",
            "description": "Permit number or reference identifier",
            "example": "PER-2025-001"
          },
          "status": {
            "$ref": "#/components/schemas/FlightPermitStatus"
          },
          "notes": {
            "type": "string",
            "description": "Additional notes or comments about the permit",
            "example": "Permit approved for landing at LMML"
          },
          "type": {
            "$ref": "#/components/schemas/PermissionType"
          },
          "externalNotes": {
            "type": "string",
            "description": "External notes or comments from the permit provider",
            "example": "Additional requirements apply"
          },
          "externalStatus": {
            "type": "string",
            "description": "External status from the permit provider system",
            "example": "APPROVED"
          },
          "country": {
            "type": "string",
            "description": "Country code (ISO 3166-1 alpha-3) where the permit applies",
            "example": "MLT"
          },
          "airportCode": {
            "type": "string",
            "description": "Airport code (IATA, ICAO, or FAA) where the permit applies",
            "example": "LMML"
          },
          "issueDate": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the permit was issued",
            "example": "2025-01-15T10:30:00.000Z"
          },
          "expirationDate": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the permit expires",
            "example": "2025-02-15T23:59:59.000Z"
          }
        }
      },
      "FlightPermitStatus": {
        "type": "string",
        "enum": [
          "NA",
          "NR",
          "DO",
          "HOLD",
          "REQ",
          "OK",
          "INIT",
          "OK_REVISED",
          "REQ_REVISED",
          "HOLD_REVISED",
          "DO_REVISED",
          "CNL"
        ],
        "description": "Status of the flight permit. The status indicates the current state of the permit request or approval.\n\n- `INIT`: Initial state\n- `NA`: Not applicable\n- `NR`: Not requested\n- `REQ`: Requested\n- `HOLD`: On hold\n- `DO`: Done/Approved\n- `OK`: Confirmed\n- `CNL`: Cancelled\n- `OK_REVISED`, `REQ_REVISED`, `HOLD_REVISED`, `DO_REVISED`: Revised statuses\n",
        "example": "OK"
      },
      "PermissionType": {
        "type": "string",
        "enum": [
          "TAKEOFF",
          "LANDING",
          "OVERFLIGHT"
        ],
        "description": "Type of flight permit. Indicates the nature of the permission required.\n\n- `TAKEOFF`: Permission for takeoff from an airport\n- `LANDING`: Permission for landing at an airport\n- `OVERFLIGHT`: Permission to overfly a country or airspace\n",
        "example": "LANDING"
      },
      "FlightSlotPprDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the flight slot or PPR",
            "example": "slot-ppr-12345"
          },
          "permitNumber": {
            "type": "string",
            "description": "Permit number, slot number, or PPR reference identifier",
            "example": "SLOT-2025-001"
          },
          "status": {
            "$ref": "#/components/schemas/FlightPermitStatus"
          },
          "notes": {
            "type": "string",
            "description": "Additional notes or comments about the slot or PPR",
            "example": "Slot confirmed for departure"
          },
          "tripProviderId": {
            "type": "string",
            "description": "Unique identifier of the trip provider associated with the slot/PPR",
            "example": "provider-123"
          },
          "providerPublicId": {
            "type": "string",
            "description": "Public identifier of the slot/PPR provider",
            "example": "provider-public-abc"
          },
          "type": {
            "$ref": "#/components/schemas/SlotPprType"
          },
          "direction": {
            "$ref": "#/components/schemas/SlotPprDirection"
          },
          "airport": {
            "$ref": "#/components/schemas/AirportMinimalDto"
          },
          "approvalDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the slot or PPR was approved",
            "example": "2025-01-15T10:30:00.000Z"
          },
          "document": {
            "$ref": "#/components/schemas/BinaryDocumentDto"
          },
          "createdAtDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the slot/PPR was created",
            "example": "2025-01-15T10:30:00.000Z"
          },
          "updatedAtDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the slot/PPR was last updated",
            "example": "2025-01-15T10:30:00.000Z"
          }
        }
      },
      "FlightSlotPprSimplifiedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the flight slot or PPR",
            "example": "slot-ppr-12345"
          },
          "permitNumber": {
            "type": "string",
            "description": "Permit number, slot number, or PPR reference identifier",
            "example": "SLOT-2025-001"
          },
          "status": {
            "$ref": "#/components/schemas/FlightPermitStatus"
          },
          "notes": {
            "type": "string",
            "description": "Additional notes or comments about the slot or PPR",
            "example": "Slot confirmed for departure"
          },
          "tripProviderId": {
            "type": "string",
            "description": "Unique identifier of the trip provider associated with the slot/PPR",
            "example": "provider-123"
          },
          "providerPublicId": {
            "type": "string",
            "description": "Public identifier of the slot/PPR provider",
            "example": "provider-public-abc"
          },
          "type": {
            "$ref": "#/components/schemas/SlotPprType"
          },
          "direction": {
            "$ref": "#/components/schemas/SlotPprDirection"
          },
          "airport": {
            "$ref": "#/components/schemas/AirportMinimalDto"
          },
          "approvalDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the slot or PPR was approved",
            "example": "2025-01-15T10:30:00.000Z"
          },
          "documentUuid": {
            "type": "string",
            "description": "Unique identifier of the document associated with the slot/PPR",
            "example": "doc-uuid-67890"
          },
          "createdAtDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the slot/PPR was created",
            "example": "2025-01-15T10:30:00.000Z"
          },
          "updatedAtDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the slot/PPR was last updated",
            "example": "2025-01-15T10:30:00.000Z"
          }
        }
      },
      "FlightSlotPprPathDto": {
        "type": "object",
        "properties": {
          "permitNumber": {
            "type": "string",
            "description": "Permit number, slot number, or PPR reference identifier",
            "example": "SLOT-2025-001"
          },
          "status": {
            "$ref": "#/components/schemas/FlightPermitStatus"
          },
          "notes": {
            "type": "string",
            "description": "Additional notes or comments about the slot or PPR",
            "example": "Slot confirmed for departure"
          },
          "approvalDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the slot or PPR was approved",
            "example": "2025-01-15T10:30:00.000Z"
          }
        }
      },
      "SlotPprType": {
        "type": "string",
        "enum": [
          "UNDEFINED",
          "SLOT",
          "PPR"
        ],
        "description": "Type of flight slot or PPR. Indicates the nature of the slot or permission.\n\n- `SLOT`: Airport slot allocation\n- `PPR`: Prior Permission Required\n- `UNDEFINED`: Type not specified\n",
        "example": "SLOT"
      },
      "SlotPprDirection": {
        "type": "string",
        "enum": [
          "DEPARTURE",
          "ARRIVAL"
        ],
        "description": "Direction of the flight slot or PPR. Indicates whether it applies to departure or arrival.\n\n- `DEPARTURE`: Slot or PPR for departure airport\n- `ARRIVAL`: Slot or PPR for arrival airport\n",
        "example": "DEPARTURE"
      },
      "GroundServiceStatus": {
        "type": "string",
        "enum": [
          "NA",
          "NR",
          "DO",
          "HOLD",
          "REQ",
          "OK",
          "INIT",
          "OK_REVISED",
          "REQ_REVISED",
          "HOLD_REVISED",
          "DO_REVISED",
          "CNL"
        ],
        "description": "Status of the ground service. The status indicates the current state of the service request or confirmation.\n\n- `INIT`: Initial state\n- `NA`: Not applicable\n- `NR`: Not requested\n- `REQ`: Requested\n- `HOLD`: On hold\n- `DO`: Done/Confirmed\n- `OK`: Confirmed\n- `CNL`: Cancelled\n- `OK_REVISED`, `REQ_REVISED`, `HOLD_REVISED`, `DO_REVISED`: Revised statuses\n",
        "example": "OK"
      },
      "TransportType": {
        "type": "string",
        "enum": [
          "LIMOUSINE",
          "CARRENTAL",
          "TAXI",
          "GROUNDTRANSPORTATION"
        ],
        "description": "Type of transport service. Indicates the nature of the transportation.\n\n- `LIMOUSINE`: Limousine service\n- `CARRENTAL`: Car rental service\n- `TAXI`: Taxi service\n- `GROUNDTRANSPORTATION`: General ground transportation\n",
        "example": "LIMOUSINE"
      },
      "FlightServiceFor": {
        "type": "string",
        "enum": [
          "PAX",
          "CREW"
        ],
        "description": "Indicates who the service is for. Specifies whether the service is for passengers or crew.\n\n- `PAX`: Service for passengers\n- `CREW`: Service for crew\n",
        "example": "PAX"
      },
      "FboDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the FBO service",
            "example": "fbo-12345"
          },
          "status": {
            "$ref": "#/components/schemas/GroundServiceStatus"
          },
          "remarks": {
            "type": "string",
            "description": "Additional remarks or comments about the FBO service",
            "example": "FBO service confirmed"
          },
          "documents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BinaryDocumentDto"
            },
            "description": "List of documents associated with the FBO service"
          },
          "createdAtDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the FBO service was created",
            "example": "2025-01-15T10:30:00.000Z"
          },
          "updatedAtDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the FBO service was last updated",
            "example": "2025-01-15T10:30:00.000Z"
          }
        }
      },
      "FboSimplifiedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the FBO service",
            "example": "fbo-12345"
          },
          "status": {
            "$ref": "#/components/schemas/GroundServiceStatus"
          },
          "remarks": {
            "type": "string",
            "description": "Additional remarks or comments about the FBO service",
            "example": "FBO service confirmed"
          },
          "documentUuids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of unique identifiers of documents associated with the FBO service",
            "example": [
              "doc-uuid-67890",
              "doc-uuid-67891"
            ]
          },
          "createdAtDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the FBO service was created",
            "example": "2025-01-15T10:30:00.000Z"
          },
          "updatedAtDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the FBO service was last updated",
            "example": "2025-01-15T10:30:00.000Z"
          }
        }
      },
      "FboPathDto": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/GroundServiceStatus"
          },
          "remarks": {
            "type": "string",
            "description": "Additional remarks or comments about the FBO service",
            "example": "FBO service confirmed"
          }
        }
      },
      "TransportDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the transport service",
            "example": "transport-12345"
          },
          "status": {
            "$ref": "#/components/schemas/GroundServiceStatus"
          },
          "type": {
            "$ref": "#/components/schemas/TransportType"
          },
          "person": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "Unique identifier of the person",
                "example": "person-123"
              },
              "name": {
                "type": "string",
                "description": "Name of the person",
                "example": "John Doe"
              }
            },
            "description": "Person assigned to the transport service"
          },
          "notes": {
            "type": "string",
            "description": "Additional notes or comments about the transport service",
            "example": "Transport confirmed for 2 passengers"
          },
          "documents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BinaryDocumentDto"
            },
            "description": "List of documents associated with the transport service"
          },
          "createdAtDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the transport service was created",
            "example": "2025-01-15T10:30:00.000Z"
          },
          "updatedAtDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the transport service was last updated",
            "example": "2025-01-15T10:30:00.000Z"
          }
        }
      },
      "TransportSimplifiedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the transport service",
            "example": "transport-12345"
          },
          "status": {
            "$ref": "#/components/schemas/GroundServiceStatus"
          },
          "type": {
            "$ref": "#/components/schemas/TransportType"
          },
          "person": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "Unique identifier of the person",
                "example": "person-123"
              },
              "name": {
                "type": "string",
                "description": "Name of the person",
                "example": "John Doe"
              }
            },
            "description": "Person assigned to the transport service"
          },
          "notes": {
            "type": "string",
            "description": "Additional notes or comments about the transport service",
            "example": "Transport confirmed for 2 passengers"
          },
          "documentUuids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of unique identifiers of documents associated with the transport service",
            "example": [
              "doc-uuid-67890",
              "doc-uuid-67891"
            ]
          },
          "createdAtDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the transport service was created",
            "example": "2025-01-15T10:30:00.000Z"
          },
          "updatedAtDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the transport service was last updated",
            "example": "2025-01-15T10:30:00.000Z"
          }
        }
      },
      "TransportCreateDto": {
        "type": "object",
        "required": [
          "flightId"
        ],
        "properties": {
          "flightId": {
            "type": "string",
            "description": "Unique identifier of the flight for which the transport service is being created",
            "example": "12345"
          },
          "status": {
            "$ref": "#/components/schemas/GroundServiceStatus"
          },
          "type": {
            "$ref": "#/components/schemas/TransportType"
          },
          "person": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "Unique identifier of the person",
                "example": "person-123"
              },
              "name": {
                "type": "string",
                "description": "Name of the person",
                "example": "John Doe"
              }
            },
            "description": "Person assigned to the transport service"
          },
          "notes": {
            "type": "string",
            "description": "Additional notes or comments about the transport service",
            "example": "Transport confirmed for 2 passengers"
          }
        }
      },
      "TransportPathDto": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/GroundServiceStatus"
          },
          "type": {
            "$ref": "#/components/schemas/TransportType"
          },
          "person": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "Unique identifier of the person",
                "example": "person-123"
              },
              "name": {
                "type": "string",
                "description": "Name of the person",
                "example": "John Doe"
              }
            },
            "description": "Person assigned to the transport service"
          },
          "notes": {
            "type": "string",
            "description": "Additional notes or comments about the transport service",
            "example": "Transport confirmed for 2 passengers"
          }
        }
      },
      "HotelDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the hotel service",
            "example": "hotel-12345"
          },
          "status": {
            "$ref": "#/components/schemas/GroundServiceStatus"
          },
          "for": {
            "$ref": "#/components/schemas/FlightServiceFor"
          },
          "notes": {
            "type": "string",
            "description": "Additional notes or comments about the hotel service",
            "example": "Hotel confirmed for 2 rooms"
          },
          "documents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BinaryDocumentDto"
            },
            "description": "List of documents associated with the hotel service"
          },
          "createdAtDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the hotel service was created",
            "example": "2025-01-15T10:30:00.000Z"
          },
          "updatedAtDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the hotel service was last updated",
            "example": "2025-01-15T10:30:00.000Z"
          }
        }
      },
      "HotelSimplifiedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the hotel service",
            "example": "hotel-12345"
          },
          "status": {
            "$ref": "#/components/schemas/GroundServiceStatus"
          },
          "for": {
            "$ref": "#/components/schemas/FlightServiceFor"
          },
          "notes": {
            "type": "string",
            "description": "Additional notes or comments about the hotel service",
            "example": "Hotel confirmed for 2 rooms"
          },
          "documentUuids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of unique identifiers of documents associated with the hotel service",
            "example": [
              "doc-uuid-67890",
              "doc-uuid-67891"
            ]
          },
          "createdAtDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the hotel service was created",
            "example": "2025-01-15T10:30:00.000Z"
          },
          "updatedAtDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the hotel service was last updated",
            "example": "2025-01-15T10:30:00.000Z"
          }
        }
      },
      "HotelCreateDto": {
        "type": "object",
        "required": [
          "flightId"
        ],
        "properties": {
          "flightId": {
            "type": "string",
            "description": "Unique identifier of the flight for which the hotel service is being created",
            "example": "12345"
          },
          "status": {
            "$ref": "#/components/schemas/GroundServiceStatus"
          },
          "for": {
            "$ref": "#/components/schemas/FlightServiceFor"
          },
          "notes": {
            "type": "string",
            "description": "Additional notes or comments about the hotel service",
            "example": "Hotel confirmed for 2 rooms"
          }
        }
      },
      "HotelPathDto": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/GroundServiceStatus"
          },
          "for": {
            "$ref": "#/components/schemas/FlightServiceFor"
          },
          "notes": {
            "type": "string",
            "description": "Additional notes or comments about the hotel service",
            "example": "Hotel confirmed for 2 rooms"
          }
        }
      },
      "CateringDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the catering service",
            "example": "catering-12345"
          },
          "status": {
            "$ref": "#/components/schemas/GroundServiceStatus"
          },
          "for": {
            "$ref": "#/components/schemas/FlightServiceFor"
          },
          "order": {
            "type": "string",
            "description": "Order details or reference for the catering service",
            "example": "Order #12345"
          },
          "pax": {
            "type": "integer",
            "description": "Number of passengers for the catering service",
            "example": 8
          },
          "documents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BinaryDocumentDto"
            },
            "description": "List of documents associated with the catering service"
          },
          "createdAtDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the catering service was created",
            "example": "2025-01-15T10:30:00.000Z"
          },
          "updatedAtDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the catering service was last updated",
            "example": "2025-01-15T10:30:00.000Z"
          }
        }
      },
      "CateringSimplifiedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the catering service",
            "example": "catering-12345"
          },
          "status": {
            "$ref": "#/components/schemas/GroundServiceStatus"
          },
          "for": {
            "$ref": "#/components/schemas/FlightServiceFor"
          },
          "order": {
            "type": "string",
            "description": "Order details or reference for the catering service",
            "example": "Order #12345"
          },
          "pax": {
            "type": "integer",
            "description": "Number of passengers for the catering service",
            "example": 8
          },
          "documentUuids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of unique identifiers of documents associated with the catering service",
            "example": [
              "doc-uuid-67890",
              "doc-uuid-67891"
            ]
          },
          "createdAtDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the catering service was created",
            "example": "2025-01-15T10:30:00.000Z"
          },
          "updatedAtDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the catering service was last updated",
            "example": "2025-01-15T10:30:00.000Z"
          }
        }
      },
      "CateringCreateDto": {
        "type": "object",
        "required": [
          "flightId"
        ],
        "properties": {
          "flightId": {
            "type": "string",
            "description": "Unique identifier of the flight for which the catering service is being created",
            "example": "12345"
          },
          "status": {
            "$ref": "#/components/schemas/GroundServiceStatus"
          },
          "for": {
            "$ref": "#/components/schemas/FlightServiceFor"
          },
          "order": {
            "type": "string",
            "description": "Order details or reference for the catering service",
            "example": "Order #12345"
          },
          "pax": {
            "type": "integer",
            "description": "Number of passengers for the catering service",
            "example": 8
          }
        }
      },
      "CateringPathDto": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/GroundServiceStatus"
          },
          "for": {
            "$ref": "#/components/schemas/FlightServiceFor"
          },
          "order": {
            "type": "string",
            "description": "Order details or reference for the catering service",
            "example": "Order #12345"
          },
          "pax": {
            "type": "integer",
            "description": "Number of passengers for the catering service",
            "example": 8
          }
        }
      },
      "B2CBinaryReferenceDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Unique identifier for the document",
            "example": 12345
          },
          "uuid": {
            "type": "string",
            "description": "Unique identifier for the document file",
            "example": "doc-uuid-67890"
          },
          "originalName": {
            "type": "string",
            "description": "Original filename of the uploaded document",
            "example": "pilot_license.pdf"
          },
          "fileSize": {
            "type": "integer",
            "format": "int64",
            "description": "Size of the document file in bytes",
            "example": 1024000
          },
          "creationDate": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the document was uploaded",
            "example": "2024-01-15T10:30:00.000Z"
          },
          "customName": {
            "type": "string",
            "description": "Custom name assigned to the document",
            "example": "Captain License"
          },
          "imageSizeX": {
            "type": "integer",
            "description": "Width of the image in pixels (if applicable)",
            "example": 1920
          },
          "imageSizeY": {
            "type": "integer",
            "description": "Height of the image in pixels (if applicable)",
            "example": 1080
          },
          "isThumbnail": {
            "type": "boolean",
            "description": "Whether this is a thumbnail version of the document",
            "example": false
          }
        }
      },
      "DeletedDto": {
        "type": "object",
        "properties": {
          "deleted": {
            "type": "boolean",
            "description": "Indicates whether the deletion was successful",
            "example": true
          }
        }
      },
      "QualificationDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the qualification type",
            "example": "qual-type-12345"
          },
          "name": {
            "type": "string",
            "description": "Name of the qualification type",
            "example": "Airline Transport Pilot License"
          },
          "abbreviation": {
            "type": "string",
            "description": "Abbreviated name of the qualification",
            "example": "ATPL"
          },
          "warning": {
            "type": "string",
            "description": "Warning message associated with the qualification",
            "example": "Requires medical certificate"
          },
          "notes": {
            "type": "string",
            "description": "Additional notes about the qualification",
            "example": "Valid for commercial operations"
          },
          "parentId": {
            "type": "string",
            "description": "Identifier of the parent qualification (if applicable)",
            "example": "parent-qual-123"
          },
          "appliesTo": {
            "type": "string",
            "enum": [
              "FLIGHT_DECK",
              "PIC",
              "SIC",
              "CREW_CABIN",
              "CREW_POSITIONS_AND_ROLES"
            ],
            "description": "Specifies which crew positions this qualification applies to",
            "example": "FLIGHT_DECK"
          },
          "type": {
            "type": "string",
            "enum": [
              "LICENSE",
              "CERTIFICATE",
              "RATING",
              "ENDORSEMENT",
              "TRAINING",
              "MEDICAL",
              "OTHER"
            ],
            "description": "Type of qualification",
            "example": "LICENSE"
          },
          "trainingType": {
            "type": "string",
            "enum": [
              "INITIAL",
              "RECURRENT",
              "REFRESHER",
              "CONVERSION",
              "OTHER"
            ],
            "description": "Type of training required for this qualification",
            "example": "INITIAL"
          },
          "isActive": {
            "type": "boolean",
            "description": "Whether this qualification type is currently active",
            "example": true
          },
          "validity": {
            "$ref": "#/components/schemas/ValidityDto"
          },
          "gracePeriod": {
            "$ref": "#/components/schemas/GracePeriodDto"
          },
          "relations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/QualificationRelationDto"
            },
            "description": "Relations to other entities (aircraft, airports, etc.)"
          },
          "alternativeQualificationIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of alternative qualification IDs",
            "example": [
              "alt-qual-1",
              "alt-qual-2"
            ]
          },
          "createdAtDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the qualification type was created",
            "example": "2024-01-15T10:30:00.000Z"
          },
          "updatedAtDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the qualification type was last updated",
            "example": "2024-01-15T10:30:00.000Z"
          }
        }
      },
      "ValidityDto": {
        "type": "object",
        "properties": {
          "unit": {
            "type": "string",
            "enum": [
              "DAYS",
              "MONTHS",
              "YEARS"
            ],
            "description": "Unit of time for validity period",
            "example": "MONTHS"
          },
          "value": {
            "type": "integer",
            "description": "Value of the validity period",
            "example": 24
          }
        }
      },
      "GracePeriodDto": {
        "type": "object",
        "properties": {
          "start": {
            "$ref": "#/components/schemas/GracePeriodItemDto"
          },
          "end": {
            "$ref": "#/components/schemas/GracePeriodItemDto"
          }
        }
      },
      "GracePeriodItemDto": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "DAYS_BEFORE",
              "DAYS_AFTER",
              "MONTHS_BEFORE",
              "MONTHS_AFTER",
              "YEARS_BEFORE",
              "YEARS_AFTER"
            ],
            "description": "Type of grace period adjustment",
            "example": "DAYS_BEFORE"
          },
          "value": {
            "type": "integer",
            "description": "Value of the grace period",
            "example": 30
          }
        }
      },
      "QualificationRelationDto": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "AIRCRAFT",
              "AIRPORT",
              "AIRPORT_C",
              "PILOT_AND_AIRCRAFT"
            ],
            "description": "Type of relation",
            "example": "AIRCRAFT"
          },
          "value": {
            "type": "string",
            "description": "Value of the relation",
            "example": "Boeing 737"
          }
        }
      },
      "PaginatedQualificationDto": {
        "type": "object",
        "description": "Paginated list of qualifications",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/QualificationDto"
            },
            "description": "The list of qualifications for the current page.\n"
          },
          "pagination": {
            "$ref": "#/components/schemas/Pagination"
          }
        }
      },
      "RosterTypeDto": {
        "type": "object",
        "description": "A roster (duty) type: defines the kind of duty (e.g. Off, Flight, Training) and **which fields are enabled** for roster assignments using this type. When creating or updating a roster assignment with this type’s `id` as `rosterTypeId`, only fields for which the corresponding flag below is true are relevant.\n",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of the roster type. Use this value as `rosterTypeId` when creating or updating a roster assignment.",
            "example": "112233"
          },
          "name": {
            "type": "string",
            "description": "Short code (e.g. OFF, TRV, FLT) used in grids and exports.",
            "example": "OFF"
          },
          "displayLabel": {
            "type": "string",
            "description": "Label shown in the UI.",
            "example": "Off"
          },
          "isNative": {
            "type": "boolean",
            "description": "True if this is a system duty kind; false for custom variants."
          },
          "isCustom": {
            "type": "boolean",
            "description": "True if added or customized by the operator."
          },
          "displayOrder": {
            "type": "integer",
            "format": "int64",
            "description": "Sort order in lists and trees."
          },
          "isHidden": {
            "type": "boolean",
            "description": "When true, type is hidden from normal roster UI."
          },
          "isSubtypeVisible": {
            "type": "boolean",
            "description": "When true, roster assignments of this type support **Subtype (Early/Late/All Day/Night)**. Use assignment field `dutySubtype`.\n"
          },
          "isAircraftEnabled": {
            "type": "boolean",
            "description": "When true, roster assignments of this type support **Aircraft**. Use assignment object `aircraft` with `aircraftId`, `crewPositionId` (if `isCrewPositionVisible`), `aircraftTypeId` (if `isAircraftTypeVisible`), `typeRating` (if `isTypeRatingVisible`), `externalAircraftRegistration` and `engineConfiguration` (if `isExternalAircraftVisible`).\n"
          },
          "isAircraftTypeVisible": {
            "type": "boolean",
            "description": "When true (and `isAircraftEnabled`), aircraft type (ICAO) is relevant. Use assignment `aircraft.aircraftTypeId`.\n"
          },
          "isTypeRatingVisible": {
            "type": "boolean",
            "description": "When true (and `isAircraftEnabled`), type rating is relevant. Use assignment `aircraft.typeRating`.\n"
          },
          "isDepartureAirportEnabled": {
            "type": "boolean",
            "description": "When true, roster assignments of this type support **From** airport. Use assignment field `departureAirportId`.\n"
          },
          "isArrivalAirportEnabled": {
            "type": "boolean",
            "description": "When true, roster assignments of this type support **To** airport. Use assignment field `arrivalAirportId`.\n"
          },
          "isForAirportEnabled": {
            "type": "boolean",
            "description": "When true, roster assignments of this type support **For airport**. Use assignment field `serviceAirportId`.\n"
          },
          "isNotesVisible": {
            "type": "boolean",
            "description": "When true, roster assignments of this type support **Notes**. Use assignment field `notes`.\n"
          },
          "isAttachmentVisible": {
            "type": "boolean",
            "description": "When true, roster assignments of this type support **Attachments**. Use assignment field `travelDocumentIds` (on update).\n"
          },
          "isLandingsVisible": {
            "type": "boolean",
            "description": "When true, roster assignments of this type support **Logbook** landings/takeoffs. Use `logbook.dayTakeoffs`, `logbook.nightTakeoffs`, `logbook.dayLandings`, `logbook.nightLandings`.\n"
          },
          "isRoleVisible": {
            "type": "boolean",
            "description": "When true, roster assignments of this type support **Role (PIC, SIC, etc.)**. Use assignment field `crewRole`.\n"
          },
          "isCrewPositionVisible": {
            "type": "boolean",
            "description": "When true (and `isAircraftEnabled`), crew position on aircraft is relevant. Use assignment `aircraft.crewPositionId`.\n"
          },
          "isLocationVisible": {
            "type": "boolean",
            "description": "When true, roster assignments of this type support **Location airport (\"In\")**. Use assignment field `locationAirportId`.\n"
          },
          "isDutyTimeVisible": {
            "type": "boolean",
            "description": "When true, roster assignments of this type support **Duty time / FTL**. Use assignment object `ftl` (isCountedAsDutyTime, isDutyPeriodStart, isDutyPeriodEnd, isSplitDutyBreakStart, isSplitDutyBreakEnd, dutyTimeMinutes, fdpTimeMinutes, blockTimeMinutes). When `isDpTimeEnabled`, `isFdpTimeVisible`, or `isBlockTimeVisible` are also true, the corresponding manual time fields are supported.\n"
          },
          "isActualTimeVisible": {
            "type": "boolean",
            "description": "When true, roster assignments of this type support **Actual start/end time**. Use assignment fields `actualStartDateTime`, `actualEndDateTime`.\n"
          },
          "isRelatedBookingVisible": {
            "type": "boolean",
            "description": "When true, roster assignments of this type support **Related booking**. Use assignment field `bookingPairing`.\n"
          },
          "isExternalAircraftVisible": {
            "type": "boolean",
            "description": "When true (and `isAircraftEnabled`), roster assignments support **External aircraft registration** and engine config. Use assignment `aircraft.externalAircraftRegistration` and `aircraft.engineConfiguration`.\n"
          },
          "isFlightTimeVisible": {
            "type": "boolean",
            "description": "When true, roster assignments of this type support **Flight time (takeoff/landing)**. Use assignment fields `takeoffDateTime`, `landingDateTime`.\n"
          },
          "isFlightNumberVisible": {
            "type": "boolean",
            "description": "When true, roster assignments of this type support **Flight number**. Use assignment field `flightNumber`.\n"
          },
          "isPilotFlightTypeVisible": {
            "type": "boolean",
            "description": "When true, roster assignments of this type support **Logbook** pilot flight type. Use `logbook.logbookFlightType`.\n"
          },
          "isOperationalConditionVisible": {
            "type": "boolean",
            "description": "When true, roster assignments of this type support **Logbook** operational condition and type of operation. Use `logbook.operationalCondition`, `logbook.operationType`. When duty time is counted and multiple AOCs exist, use `logbook.aocId` for **Operation type (AOC)**.\n"
          },
          "isApproachesVisible": {
            "type": "boolean",
            "description": "When true, roster assignments of this type support **Logbook** approaches (precision, non-precision, visual, hold, category). Use `logbook.precisionApproaches`, `logbook.approachCategory`, `logbook.nonPrecisionApproaches`, `logbook.isVisualApproach`, `logbook.isInstrumentHold`. For SIM duties, full-motion simulator is in `logbook.isFullMotionSimulator`.\n"
          },
          "isDpTimeEnabled": {
            "type": "boolean",
            "description": "When true (and `isDutyTimeVisible`), manual **Duty time** (minutes) is supported. Use `ftl.dutyTimeMinutes`.\n"
          },
          "isFdpTimeVisible": {
            "type": "boolean",
            "description": "When true (and `isDutyTimeVisible`), **FDP time** (minutes) is supported. Use `ftl.fdpTimeMinutes`.\n"
          },
          "isBlockTimeVisible": {
            "type": "boolean",
            "description": "When true (and `isDutyTimeVisible`), **Block time** (minutes) is supported. Use `ftl.blockTimeMinutes`.\n"
          },
          "nestedTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RosterTypeDto"
            },
            "description": "Child roster types in the tree (same structure recursively)."
          }
        }
      },
      "RosterTypeSimplifiedDto": {
        "type": "object",
        "description": "Simplified roster type for list responses. Contains id, name, displayLabel, isNative, isCustom, displayOrder, and nestedTypes (same shape). Use GET /api/v2/roster-types/{id} for the full type including boolean flags that control which assignment fields are enabled.\n",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of the roster type. Use as rosterTypeId when creating/updating assignments.",
            "example": "112233"
          },
          "name": {
            "type": "string",
            "description": "Short code (e.g. OFF, TRV, FLT).",
            "example": "OFF"
          },
          "displayLabel": {
            "type": "string",
            "description": "Label shown in the UI.",
            "example": "Off"
          },
          "isNative": {
            "type": "boolean",
            "description": "True if system duty kind; false for custom variants."
          },
          "isCustom": {
            "type": "boolean",
            "description": "True if added or customized by the operator."
          },
          "displayOrder": {
            "type": "integer",
            "format": "int64",
            "description": "Sort order in lists and trees."
          },
          "nestedTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RosterTypeSimplifiedDto"
            },
            "description": "Child roster types (same simplified structure recursively)."
          }
        }
      },
      "RosterTypePageResult": {
        "type": "object",
        "description": "Paginated list of roster types (simplified). Each item is a tree node with nestedTypes.",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RosterTypeSimplifiedDto"
            },
            "description": "The list of roster types for the current page (root level; each may have nestedTypes)."
          },
          "pagination": {
            "$ref": "#/components/schemas/Pagination"
          }
        }
      },
      "RosterTypesSearchRequest": {
        "type": "object",
        "description": "Request body for POST /api/v2/roster-types-search. **Pagination only** — no filters or sorts. Only `limit` and `offset` are used; do not send `filters` or `sorts` for this endpoint.\n",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "default": 10,
            "description": "Maximum number of root-level roster types to return.",
            "example": 20
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "default": 0,
            "description": "Number of root-level records to skip.",
            "example": 0
          }
        }
      },
      "SearchPageRequest": {
        "type": "object",
        "description": "Pagination request body for v2 search endpoints that support filters and sorts (e.g. POST rosters-search). Not used for roster-types-search, which accepts only limit and offset (see RosterTypesSearchRequest).\n",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "default": 10,
            "description": "Maximum number of records to return.",
            "example": 20
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "default": 0,
            "description": "Number of records to skip.",
            "example": 0
          },
          "filters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SearchPageRequestFilterItem"
            },
            "description": "Optional list of filters. Each endpoint supports specific filter fields and operators (e.g. EQ, GTE, LTE, BTW)."
          },
          "sorts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SearchPageRequestSortItem"
            },
            "description": "Optional sort criteria. Each endpoint supports specific sort fields."
          }
        }
      },
      "SearchPageRequestFilterItem": {
        "type": "object",
        "required": [
          "field",
          "operator",
          "value"
        ],
        "description": "One filter criterion. Operator must be one of EQ, EQI, NEQ, GT, GTE, LT, LTE, BTW (between; value format start/end), etc. See endpoint description for supported fields per API.",
        "properties": {
          "field": {
            "type": "string",
            "description": "Field name to filter by (e.g. crewId, rosterTypeId, startDateTime).",
            "example": "crewId"
          },
          "operator": {
            "type": "string",
            "enum": [
              "EQ",
              "EQI",
              "NEQ",
              "NEQI",
              null,
              "NNULL",
              "HAS",
              "GT",
              "GTE",
              "LT",
              "LTE",
              "BTW",
              "IN",
              "NIN"
            ],
            "description": "Filter operator.",
            "example": "EQ"
          },
          "value": {
            "type": "string",
            "description": "Filter value. For BTW use slash-separated range (e.g. 2025-01-01T00:00:00Z/2025-01-31T23:59:59Z).",
            "example": "crew-12345"
          }
        }
      },
      "SearchPageRequestSortItem": {
        "type": "object",
        "required": [
          "field",
          "sortDirection"
        ],
        "properties": {
          "field": {
            "type": "string",
            "description": "Field to sort by (e.g. displayOrder, startDateTime).",
            "example": "startDateTime"
          },
          "sortDirection": {
            "type": "string",
            "enum": [
              "ASC",
              "DESC"
            ],
            "example": "ASC"
          }
        }
      },
      "RosterAssignmentDto": {
        "type": "object",
        "description": "Roster assignment response (GET, or body of POST/PUT). A roster type assigned to a crew member for a time period. **Sections `aircraft`, `logbook`, `ftl` are null when the roster type does not enable them.** All entity references are returned as IDs; use other v2 endpoints to resolve them.\n",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of this roster assignment."
          },
          "crewId": {
            "type": "string",
            "description": "Identifier of the crew member."
          },
          "rosterTypeId": {
            "type": "string",
            "description": "Id of the roster type (same as RosterTypeDto.id from roster-types API)."
          },
          "dutySubtype": {
            "type": "string",
            "enum": [
              "EARLY",
              "LATE",
              "ALL_DAY",
              "NIGHT"
            ],
            "description": "Time-of-day subdivision; only when type has isSubtypeVisible."
          },
          "crewRole": {
            "type": "string",
            "description": "Crew role (e.g. PIC, SIC); only when type has isRoleVisible."
          },
          "startDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Scheduled duty start (Begins / Check-in)."
          },
          "endDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Scheduled duty end (Ends / Check-out)."
          },
          "actualStartDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Actual duty start when different from scheduled; only when type has isActualTimeVisible."
          },
          "actualEndDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Actual duty end when different from scheduled; only when type has isActualTimeVisible."
          },
          "locationAirportId": {
            "type": "string",
            "description": "Airport where crew is stationed (In); only when type has isLocationVisible."
          },
          "departureAirportId": {
            "type": "string",
            "description": "Departure airport (From); only when type has isDepartureAirportEnabled."
          },
          "arrivalAirportId": {
            "type": "string",
            "description": "Arrival airport (To); only when type has isArrivalAirportEnabled."
          },
          "serviceAirportId": {
            "type": "string",
            "description": "Airport this duty is performed for; only when type has isForAirportEnabled."
          },
          "flightNumber": {
            "type": "string",
            "description": "Flight number; only when type has isFlightNumberVisible."
          },
          "flightId": {
            "type": "string",
            "description": "Id of linked flight leg."
          },
          "quoteId": {
            "type": "string",
            "description": "Id of linked quote/booking."
          },
          "takeoffDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Actual takeoff time; only when type has isFlightTimeVisible."
          },
          "landingDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Actual landing time; only when type has isFlightTimeVisible."
          },
          "aircraft": {
            "$ref": "#/components/schemas/RosterAssignmentAircraftDto",
            "description": "Aircraft assignment; null when type does not have isAircraftEnabled."
          },
          "logbook": {
            "$ref": "#/components/schemas/RosterAssignmentLogbookDto",
            "description": "Logbook/AFT data; null when type does not enable logbook features."
          },
          "ftl": {
            "$ref": "#/components/schemas/RosterAssignmentFtlDto",
            "description": "FTL flags and time overrides; null when type does not have isDutyTimeVisible."
          },
          "notes": {
            "type": "string",
            "description": "Free-text notes (max 2000 chars); only when type has isNotesVisible."
          },
          "travelDocumentIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Ids of attached travel documents."
          },
          "bookingPairing": {
            "type": "string",
            "description": "Related booking/pairing reference; only when type has isRelatedBookingVisible."
          },
          "poNumber": {
            "type": "string",
            "description": "Purchase order number (read-only; from ERP integration)."
          },
          "poCreatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "When PO was created (read-only)."
          },
          "requestStatus": {
            "$ref": "#/components/schemas/RosterAssignmentRequestStatus",
            "description": "Crew request state (PENDING, APPROVED, DENIED); null when not a crew request."
          },
          "requestedAt": {
            "type": "string",
            "format": "date-time"
          },
          "approvedAt": {
            "type": "string",
            "format": "date-time"
          },
          "approvedByUserId": {
            "type": "string"
          }
        }
      },
      "RosterAssignmentAircraftDto": {
        "type": "object",
        "description": "Aircraft assignment (response). Only present when roster type has isAircraftEnabled.",
        "properties": {
          "aircraftId": {
            "type": "string",
            "description": "Id of the aircraft (tail). Mutually exclusive with externalAircraftRegistration."
          },
          "crewPositionId": {
            "type": "string",
            "description": "Id of crew position on aircraft; requires aircraftId."
          },
          "aircraftTypeId": {
            "type": "string",
            "description": "Id of aircraft ICAO type (model)."
          },
          "typeRating": {
            "type": "string"
          },
          "aircraftVariant": {
            "type": "string",
            "description": "Read-only; from aircraft model."
          },
          "externalAircraftRegistration": {
            "type": "string",
            "description": "Tail of aircraft not in system; mutually exclusive with aircraftId."
          },
          "engineConfiguration": {
            "type": "string",
            "enum": [
              "SINGLE_ENGINE",
              "MULTI_ENGINE"
            ],
            "description": "Only when externalAircraftRegistration is set."
          }
        }
      },
      "RosterAssignmentAircraftInputDto": {
        "type": "object",
        "description": "Aircraft assignment for create/update. Only send when roster type has isAircraftEnabled. Same as response but without read-only aircraftVariant.",
        "properties": {
          "aircraftId": {
            "type": "string"
          },
          "crewPositionId": {
            "type": "string"
          },
          "aircraftTypeId": {
            "type": "string"
          },
          "typeRating": {
            "type": "string"
          },
          "externalAircraftRegistration": {
            "type": "string"
          },
          "engineConfiguration": {
            "type": "string",
            "enum": [
              "SINGLE_ENGINE",
              "MULTI_ENGINE"
            ]
          }
        }
      },
      "RosterAssignmentLogbookDto": {
        "type": "object",
        "description": "Logbook/AFT data. Only send when roster type enables logbook (e.g. isLandingsVisible, isOperationalConditionVisible, isApproachesVisible, isPilotFlightTypeVisible). For SIM duties, isFullMotionSimulator is used.",
        "properties": {
          "logbookFlightType": {
            "type": "string",
            "enum": [
              "SINGLE_PILOT",
              "MULTI_PILOT"
            ]
          },
          "operationalCondition": {
            "type": "string",
            "enum": [
              "IFR",
              "VFR",
              "NIGHT"
            ]
          },
          "operationType": {
            "type": "string",
            "enum": [
              "COMMERCIAL",
              "PRIVATE"
            ]
          },
          "aocId": {
            "type": "string",
            "description": "Id of AOC (Operation Type); when duty counts as duty time and multiple AOCs exist."
          },
          "dayTakeoffs": {
            "type": "integer",
            "format": "int64"
          },
          "nightTakeoffs": {
            "type": "integer",
            "format": "int64"
          },
          "dayLandings": {
            "type": "integer",
            "format": "int64"
          },
          "nightLandings": {
            "type": "integer",
            "format": "int64"
          },
          "precisionApproaches": {
            "type": "integer"
          },
          "approachCategory": {
            "type": "string",
            "description": "e.g. CAT1, CAT2, CAT3, ILS, etc."
          },
          "nonPrecisionApproaches": {
            "type": "integer"
          },
          "isVisualApproach": {
            "type": "boolean"
          },
          "isInstrumentHold": {
            "type": "boolean"
          },
          "isFullMotionSimulator": {
            "type": "boolean",
            "description": "For SIM duties only."
          }
        }
      },
      "RosterAssignmentFtlDto": {
        "type": "object",
        "description": "FTL duty period flags and manual times. Only send when roster type has isDutyTimeVisible. Split-duty and period start/end flags only apply when isCountedAsDutyTime is true.",
        "properties": {
          "isCountedAsDutyTime": {
            "type": "boolean"
          },
          "isDutyPeriodStart": {
            "type": "boolean"
          },
          "isDutyPeriodEnd": {
            "type": "boolean"
          },
          "isSplitDutyBreakStart": {
            "type": "boolean"
          },
          "isSplitDutyBreakEnd": {
            "type": "boolean"
          },
          "dutyTimeMinutes": {
            "type": "integer"
          },
          "fdpTimeMinutes": {
            "type": "integer"
          },
          "blockTimeMinutes": {
            "type": "integer"
          }
        }
      },
      "RosterAssignmentRequestStatus": {
        "type": "string",
        "enum": [
          "PENDING",
          "APPROVED",
          "DENIED"
        ],
        "description": "Crew self-service request state for a roster assignment."
      },
      "RosterAssignmentSimplifiedDto": {
        "type": "object",
        "description": "Simplified roster assignment for list responses. Contains only fields always present (id, crewId, rosterTypeId, start/end, request status). Use GET /api/v2/rosters/{id} for full details (aircraft, logbook, ftl, airports, notes, etc.).\n",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of this roster assignment."
          },
          "crewId": {
            "type": "string",
            "description": "Identifier of the crew member."
          },
          "rosterTypeId": {
            "type": "string",
            "description": "Id of the roster type (same as RosterTypeDto.id)."
          },
          "startDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Scheduled duty start (ISO 8601 with timezone offset)."
          },
          "endDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Scheduled duty end (ISO 8601 with timezone offset)."
          },
          "requestStatus": {
            "$ref": "#/components/schemas/RosterAssignmentRequestStatus",
            "description": "Crew request state; null when assignment was created by scheduler."
          },
          "requestedAt": {
            "type": "string",
            "format": "date-time",
            "description": "When the crew submitted the request; null when not a crew request."
          },
          "approvedAt": {
            "type": "string",
            "format": "date-time",
            "description": "When the request was approved or denied; null when not yet decided."
          },
          "approvedByUserId": {
            "type": "string",
            "description": "Id of the user who approved or denied; null when not yet decided."
          }
        }
      },
      "RosterAssignmentPageResult": {
        "type": "object",
        "description": "Paginated list of roster assignments (simplified). Use GET /api/v2/rosters/{id} for full assignment details.",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RosterAssignmentSimplifiedDto"
            },
            "description": "The list of roster assignments for the current page."
          },
          "pagination": {
            "$ref": "#/components/schemas/Pagination"
          }
        }
      },
      "RosterAssignmentCreateDto": {
        "type": "object",
        "required": [
          "crewId",
          "rosterTypeId",
          "startDateTime",
          "endDateTime"
        ],
        "description": "Input for creating a roster assignment. **Required:** crewId, rosterTypeId, startDateTime, endDateTime. All other fields are optional and only relevant when the roster type enables them — check the type’s flags from POST /api/v2/roster-types-search or GET /api/v2/roster-types/{id}. Send only IDs for references (aircraft, airports, crew position, AOC).\n",
        "properties": {
          "crewId": {
            "type": "string",
            "description": "Identifier of the crew member to assign."
          },
          "rosterTypeId": {
            "type": "string",
            "description": "Id of the roster type from roster-types API."
          },
          "startDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "endDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "dutySubtype": {
            "type": "string",
            "enum": [
              "EARLY",
              "LATE",
              "ALL_DAY",
              "NIGHT"
            ],
            "description": "Only when roster type has isSubtypeVisible."
          },
          "crewRole": {
            "type": "string",
            "description": "Only when roster type has isRoleVisible."
          },
          "actualStartDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "actualEndDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "locationAirportId": {
            "type": "string"
          },
          "departureAirportId": {
            "type": "string"
          },
          "arrivalAirportId": {
            "type": "string"
          },
          "serviceAirportId": {
            "type": "string"
          },
          "flightNumber": {
            "type": "string"
          },
          "flightId": {
            "type": "string"
          },
          "quoteId": {
            "type": "string"
          },
          "takeoffDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "landingDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "aircraft": {
            "$ref": "#/components/schemas/RosterAssignmentAircraftInputDto"
          },
          "logbook": {
            "$ref": "#/components/schemas/RosterAssignmentLogbookDto"
          },
          "ftl": {
            "$ref": "#/components/schemas/RosterAssignmentFtlDto"
          },
          "notes": {
            "type": "string"
          },
          "bookingPairing": {
            "type": "string"
          }
        }
      },
      "RosterAssignmentPatchDto": {
        "type": "object",
        "description": "Input for updating a roster assignment. All fields optional; only provided fields are updated. Same roster-type rules as create: only include fields that the (current or new) roster type supports.\n",
        "properties": {
          "dutySubtype": {
            "type": "string",
            "enum": [
              "EARLY",
              "LATE",
              "ALL_DAY",
              "NIGHT"
            ]
          },
          "crewRole": {
            "type": "string"
          },
          "startDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "endDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "actualStartDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "actualEndDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "locationAirportId": {
            "type": "string"
          },
          "departureAirportId": {
            "type": "string"
          },
          "arrivalAirportId": {
            "type": "string"
          },
          "serviceAirportId": {
            "type": "string"
          },
          "flightNumber": {
            "type": "string"
          },
          "flightId": {
            "type": "string"
          },
          "quoteId": {
            "type": "string"
          },
          "takeoffDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "landingDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "aircraft": {
            "$ref": "#/components/schemas/RosterAssignmentAircraftInputDto"
          },
          "logbook": {
            "$ref": "#/components/schemas/RosterAssignmentLogbookDto"
          },
          "ftl": {
            "$ref": "#/components/schemas/RosterAssignmentFtlDto"
          },
          "notes": {
            "type": "string"
          },
          "travelDocumentIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int64"
            },
            "description": "Ids of travel documents to attach (existing binary references)."
          },
          "bookingPairing": {
            "type": "string"
          }
        }
      },
      "FlightWorkflow": {
        "type": "string",
        "enum": [
          "COMMERCIAL",
          "MAINTENANCE",
          "PRIVATE",
          "TRAINING",
          "OWNER",
          "INTERNAL",
          "RESERVED",
          "CHARTER",
          "SUBCHARTER",
          "SCHEDULED",
          "AMBULANCE",
          "CUSTOM1",
          "CUSTOM2",
          "CUSTOM3",
          "CUSTOM4",
          "CUSTOM5",
          "CUSTOM6",
          "BROKER",
          "BROKER_SUBCHARTER"
        ],
        "description": "Workflow type for the flight. This indicates the nature or type of the flight operation.\n"
      },
      "FlightPageResult": {
        "type": "object",
        "description": "Paginated list of flights.",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FlightSimplifiedDto"
            },
            "description": "The list of flights for the current page.\n"
          },
          "pagination": {
            "$ref": "#/components/schemas/Pagination"
          }
        }
      },
      "CrewQualificationPageResult": {
        "type": "object",
        "description": "Paginated list of crew qualifications.",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CrewQualificationSimplifiedDto"
            },
            "description": "The list of crew qualifications for the current page.\n"
          },
          "pagination": {
            "$ref": "#/components/schemas/Pagination"
          }
        }
      },
      "AircraftPageResult": {
        "type": "object",
        "description": "Paginated list of aircraft.",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AircraftSimplifiedDto"
            },
            "description": "The list of aircraft for the current page.\n"
          },
          "pagination": {
            "$ref": "#/components/schemas/Pagination"
          }
        }
      },
      "FlightSimplifiedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the flight.",
            "example": "12345"
          },
          "flightNumber": {
            "type": "string",
            "description": "Flight number.",
            "example": "FL123"
          },
          "tailNumber": {
            "type": "string",
            "description": "Aircraft tail number or registration.",
            "example": "N123AB"
          },
          "quoteId": {
            "type": "string",
            "description": "Unique identifier of the associated quote.",
            "example": "quote-67890"
          },
          "quoteExternalReference": {
            "type": "string",
            "description": "External reference for the quote.",
            "example": "EXT-REF-123"
          },
          "quoteIdentifier": {
            "type": "string",
            "description": "Quote identifier.",
            "example": "Q-2025-001"
          },
          "blocksOffEstimated": {
            "type": "string",
            "format": "date-time",
            "description": "Estimated blocks‑off date and time (UTC)",
            "example": "2025-01-15T10:30:00.000Z"
          },
          "blocksOnEstimated": {
            "type": "string",
            "format": "date-time",
            "description": "Estimated blocks‑on date and time (UTC)",
            "example": "2025-01-15T14:45:00.000Z"
          },
          "tripNumber": {
            "type": "integer",
            "description": "Trip number for this flight.",
            "example": 1
          },
          "paxNumber": {
            "type": "integer",
            "description": "Number of passengers on the flight.",
            "example": 8
          },
          "arrivalAirport": {
            "$ref": "#/components/schemas/AirportDto"
          },
          "departureAirport": {
            "$ref": "#/components/schemas/AirportDto"
          },
          "customerId": {
            "type": "string",
            "description": "Unique identifier of the customer.",
            "example": "customer-123"
          },
          "accountId": {
            "type": "string",
            "description": "Unique identifier of the account.",
            "example": "account-456"
          },
          "workflow": {
            "$ref": "#/components/schemas/FlightWorkflow"
          },
          "workflowCustomName": {
            "type": "string",
            "description": "Custom name for the workflow.",
            "example": "Charter Flight"
          }
        }
      },
      "AircraftSimplifiedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the aircraft.",
            "example": "12345"
          },
          "tailNumber": {
            "type": "string",
            "description": "Aircraft tail number or registration.",
            "example": "N123AB"
          },
          "name": {
            "type": "string",
            "description": "Aircraft name.",
            "example": "Gulfstream G650"
          },
          "notes": {
            "type": "string",
            "description": "Additional notes about the aircraft.",
            "example": "Recently serviced"
          },
          "typeOfUse": {
            "type": "string",
            "enum": [
              "CHARTER",
              "PRIVATE"
            ],
            "description": "Type of use for the aircraft.",
            "example": "CHARTER"
          },
          "numberOfSeats": {
            "type": "integer",
            "description": "Number of seats in the aircraft.",
            "example": 14
          },
          "status": {
            "type": "string",
            "enum": [
              "OTHER",
              "ACTIVE",
              "INACTIVE"
            ],
            "description": "Status of the aircraft.",
            "example": "ACTIVE"
          },
          "homeBase": {
            "$ref": "#/components/schemas/AirportDto"
          },
          "category": {
            "type": "string",
            "enum": [
              "PISTON",
              "TURBO_PROP",
              "VERY_LIGHT_JET",
              "LIGHT_JET",
              "SUPER_LIGHT_JET",
              "MIDSIZE_JET",
              "SUPER_MIDSIZE_JET",
              "HEAVY_JET",
              "ULTRA_LONG_RANGE_JET",
              "VIP_JET",
              "AIRLINER",
              "AMPHIBIAN",
              "GYROCOPTER",
              "HELICOPTER",
              "SEA_PLANE",
              "TILT_ROTOR"
            ],
            "description": "Category of the aircraft.",
            "example": "HEAVY_JET"
          },
          "updatedAtDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the aircraft was last updated (UTC).",
            "example": "2025-01-15T10:30:00.000Z"
          },
          "createdAtDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the aircraft was created (UTC).",
            "example": "2024-01-15T10:30:00.000Z"
          }
        }
      }
    }
  },
  "x-original-swagger-version": "2.0"
}