{
  "kind": "discovery#restDescription",
  "resources": {
    "flights": {
      "methods": {
        "computeFlightEmissions": {
          "parameterOrder": [],
          "response": {
            "$ref": "ComputeFlightEmissionsResponse"
          },
          "path": "v1/flights:computeFlightEmissions",
          "httpMethod": "POST",
          "description": "Retrieves emission estimates. Details on how emission estimates are computed are in [GitHub](https://github.com/google/travel-impact-model). The response will contain all entries that match the input flight legs, in the same order. If there are no estimates available for a certain flight leg, the response will return the flight leg object with empty emission fields. The request will still be considered successful. Reasons for missing emission estimates include: * The flight is unknown to the server. * The input flight leg is missing one or more identifiers. * The flight date is in the past. * The aircraft type is not supported by the model. * Missing seat configuration. The request can contain up to 1000 flight legs. If the request has more than 1000 direct flights, if will fail with an INVALID_ARGUMENT error.",
          "flatPath": "v1/flights:computeFlightEmissions",
          "request": {
            "$ref": "ComputeFlightEmissionsRequest"
          },
          "parameters": {},
          "id": "travelimpactmodel.flights.computeFlightEmissions"
        },
        "computeTypicalFlightEmissions": {
          "description": "Retrieves typical flight emissions estimates between two airports, also known as a market. If there are no estimates available for a certain market, the response will return the market object with empty emission fields. The request will still be considered successful. Details on how the typical emissions estimates are computed are on [GitHub](https://github.com/google/travel-impact-model/blob/main/projects/typical_flight_emissions.md). The request can contain up to 1000 markets. If the request has more than 1000 markets, it will fail with an INVALID_ARGUMENT error.",
          "flatPath": "v1/flights:computeTypicalFlightEmissions",
          "parameters": {},
          "request": {
            "$ref": "ComputeTypicalFlightEmissionsRequest"
          },
          "id": "travelimpactmodel.flights.computeTypicalFlightEmissions",
          "parameterOrder": [],
          "response": {
            "$ref": "ComputeTypicalFlightEmissionsResponse"
          },
          "path": "v1/flights:computeTypicalFlightEmissions",
          "httpMethod": "POST"
        },
        "computeScope3FlightEmissions": {
          "path": "v1/flights:computeScope3FlightEmissions",
          "httpMethod": "POST",
          "parameterOrder": [],
          "response": {
            "$ref": "ComputeScope3FlightEmissionsResponse"
          },
          "flatPath": "v1/flights:computeScope3FlightEmissions",
          "description": "Retrieves GHG emissions estimates for a set of flight segments for Scope 3 reporting. The response will contain all entries that match the input Scope3FlightSegment flight segments, in the same order provided. The estimates will be computed using the following cascading logic (using the first one that is available): 1. TIM-based emissions given origin, destination, carrier, flightNumber, departureDate, and cabinClass. 2. Typical flight emissions given origin, destination, year in departureDate, and cabinClass. 3. Distance-based emissions calculated using distanceKm, year in departureDate, and cabinClass. If there is a future flight requested in this calendar year, we do not support Tier 1 emissions and will fallback to Tier 2 or 3 emissions. If the requested future flight is in not in this calendar year, we will return an empty response. We recommend that for future flights, computeFlightEmissions API is used instead. If there are no estimates available for a certain flight with any of the three methods, the response will return a Scope3FlightEmissions object with empty emission fields. The request will still be considered successful. Generally, missing emissions estimates occur when the flight is unknown to the server (e.g. no specific flight exists, or typical flight emissions are not available for the requested pair). The request will fail with an `INVALID_ARGUMENT` error if: * The request contains more than 1,000 flight legs. * The input flight leg is missing one or more identifiers. For example, missing origin/destination without a valid distance for TIM_EMISSIONS or TYPICAL_FLIGHT_EMISSIONS type matching, or missing distance for a DISTANCE_BASED_EMISSIONS type matching (if you want to fallback to distance-based emissions or want a distance-based emissions estimate, you need to specify a distance). * The flight date is before 2019 (Scope 3 data is only available for 2019 and after). * The flight distance is 0 or lower. * Missing cabin class. Because the request is processed with fallback logic, it is possible that misconfigured requests return valid emissions estimates using fallback methods. For example, if a request has the wrong flight number but specifies the origin and destination, the request will still succeed, but the returned emissions will be based solely on the typical flight emissions. Similarly, if a request is missing the origin for a typical flight emissions request, but specifies a valid distance, the request could succeed based solely on the distance-based emissions. Consequently, one should check the source of the returned emissions (source) to confirm the results are as expected.",
          "id": "travelimpactmodel.flights.computeScope3FlightEmissions",
          "parameters": {},
          "request": {
            "$ref": "ComputeScope3FlightEmissionsRequest"
          }
        },
        "computeDetailedFlightEmissions": {
          "parameters": {},
          "request": {
            "$ref": "ComputeDetailedFlightEmissionsRequest"
          },
          "id": "travelimpactmodel.flights.computeDetailedFlightEmissions",
          "description": "Retrieves detailed emission estimates. Detailed Flight Emissions are transparent per-passenger greenhouse gas emission estimates supplemented by comprehensive metadata detailing the calculation methodology, emissions breakdown, contrail impact, and data provenance. Details on how emission estimates are computed are in [GitHub](https://github.com/google/travel-impact-model). The response will contain all entries that match the input flight legs, in the same order. If there are no estimates available for a certain flight leg, the response will return the flight leg object with empty emission fields. The request will still be considered successful. Reasons for missing emission estimates include: * The flight is unknown to the server. * The input flight leg is missing one or more identifiers. * The flight date is in the past. * The aircraft type is not supported by the model. * Missing seat configuration. The request can contain up to 100 flight legs. If the request has more than 100 flight legs, it will fail with an INVALID_ARGUMENT error.",
          "flatPath": "v1/flights:computeDetailedFlightEmissions",
          "parameterOrder": [],
          "response": {
            "$ref": "ComputeDetailedFlightEmissionsResponse"
          },
          "path": "v1/flights:computeDetailedFlightEmissions",
          "httpMethod": "POST"
        }
      }
    }
  },
  "name": "travelimpactmodel",
  "canonicalName": "Travel Impact Model",
  "title": "Travel Impact Model API",
  "mtlsRootUrl": "https://travelimpactmodel.mtls.googleapis.com/",
  "baseUrl": "https://travelimpactmodel.googleapis.com/",
  "description": "Travel Impact Model API lets you query travel carbon emission estimates.",
  "version": "v1",
  "discoveryVersion": "v1",
  "rootUrl": "https://travelimpactmodel.googleapis.com/",
  "parameters": {
    "prettyPrint": {
      "type": "boolean",
      "default": "true",
      "location": "query",
      "description": "Returns response with indentations and line breaks."
    },
    "alt": {
      "description": "Data format for response.",
      "enumDescriptions": [
        "Responses with Content-Type of application/json",
        "Media download with context-dependent Content-Type",
        "Responses with Content-Type of application/x-protobuf"
      ],
      "type": "string",
      "default": "json",
      "enum": [
        "json",
        "media",
        "proto"
      ],
      "location": "query"
    },
    "upload_protocol": {
      "type": "string",
      "location": "query",
      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\")."
    },
    "uploadType": {
      "type": "string",
      "location": "query",
      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\")."
    },
    "callback": {
      "description": "JSONP",
      "type": "string",
      "location": "query"
    },
    "oauth_token": {
      "description": "OAuth 2.0 token for the current user.",
      "type": "string",
      "location": "query"
    },
    "fields": {
      "location": "query",
      "type": "string",
      "description": "Selector specifying which fields to include in a partial response."
    },
    "quotaUser": {
      "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
      "type": "string",
      "location": "query"
    },
    "key": {
      "location": "query",
      "type": "string",
      "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token."
    },
    "$.xgafv": {
      "description": "V1 error format.",
      "enumDescriptions": [
        "v1 error format",
        "v2 error format"
      ],
      "type": "string",
      "enum": [
        "1",
        "2"
      ],
      "location": "query"
    },
    "access_token": {
      "description": "OAuth access token.",
      "location": "query",
      "type": "string"
    }
  },
  "documentationLink": "https://developers.google.com/travel/impact-model",
  "fullyEncodeReservedExpansion": true,
  "icons": {
    "x32": "http://www.google.com/images/icons/product/search-32.gif",
    "x16": "http://www.google.com/images/icons/product/search-16.gif"
  },
  "ownerDomain": "google.com",
  "protocol": "rest",
  "batchPath": "batch",
  "revision": "20260628",
  "ownerName": "Google",
  "schemas": {
    "Scope3FlightEmissions": {
      "type": "object",
      "id": "Scope3FlightEmissions",
      "properties": {
        "flight": {
          "$ref": "Scope3FlightSegment",
          "description": "Identifier. Matches the flight identifiers in the request."
        },
        "source": {
          "description": "Optional. The source of the emissions data.",
          "enumDescriptions": [
            "Unspecified data type.",
            "TIM-based emissions given origin, destination, carrier, flight number, departure date, and year.",
            "Typical flight emissions given origin, destination, and year.",
            "Distance-based emissions based on the distance traveled and year."
          ],
          "enum": [
            "SCOPE3_DATA_TYPE_UNSPECIFIED",
            "TIM_EMISSIONS",
            "TYPICAL_FLIGHT_EMISSIONS",
            "DISTANCE_BASED_EMISSIONS"
          ],
          "type": "string"
        },
        "ttwEmissionsGramsPerPax": {
          "description": "Optional. Tank-to-wake flight emissions per passenger based on the requested info.",
          "type": "string",
          "format": "int64"
        },
        "wtwEmissionsGramsPerPax": {
          "type": "string",
          "format": "int64",
          "description": "Optional. Total flight emissions (sum of well-to-tank and tank-to-wake) per passenger based on the requested info. This is the total emissions and unless you have specific reasons for using TTW or WTT emissions, you should use this number."
        },
        "wttEmissionsGramsPerPax": {
          "description": "Optional. Well-to-tank flight emissions per passenger based on the requested info.",
          "type": "string",
          "format": "int64"
        }
      },
      "description": "Scope 3 flight with emission estimates."
    },
    "ComputeDetailedFlightEmissionsResponse": {
      "description": "Output definition for the ComputeDetailedFlightEmissions response.",
      "id": "ComputeDetailedFlightEmissionsResponse",
      "properties": {
        "flightsWithDetailedEmissions": {
          "type": "array",
          "items": {
            "$ref": "FlightWithDetailedEmissions"
          },
          "description": "List of flight legs with emission estimates."
        },
        "modelVersion": {
          "$ref": "ModelVersion",
          "description": "The model version under which emission estimates for all flights in this response were computed."
        }
      },
      "type": "object"
    },
    "EmissionsProvenance": {
      "description": "Information about the provenance of the data used to calculate emissions estimates, including contributing factors and their data sources.",
      "id": "EmissionsProvenance",
      "properties": {
        "provenanceEntries": {
          "description": "Output only. All contributing factors used to calculate emissions.",
          "readOnly": true,
          "items": {
            "$ref": "EmissionsProvenanceEntry"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "Scope3FlightSegment": {
      "type": "object",
      "id": "Scope3FlightSegment",
      "properties": {
        "distanceKm": {
          "description": "Optional. Distance in kilometers, e.g. `2423`, from [1, 2.5e16) km. This is used to match a flight to distance-based emissions when origin and destination are not provided or there are no matching typical flights.",
          "type": "string",
          "format": "int64"
        },
        "cabinClass": {
          "description": "Required. The cabin class of the flight.",
          "enumDescriptions": [
            "Unspecified cabin class.",
            "Economy class.",
            "Premium economy class.",
            "Business class.",
            "First class."
          ],
          "enum": [
            "CABIN_CLASS_UNSPECIFIED",
            "ECONOMY",
            "PREMIUM_ECONOMY",
            "BUSINESS",
            "FIRST"
          ],
          "type": "string"
        },
        "origin": {
          "description": "Optional. 3-character [IATA airport code](https://www.iata.org/en/publications/directories/code-search/) for flight origin, e.g. `YVR`. This is used to match specific flight if provided alongside destination, carrier, and flight number. If there is no match, we will first try to match the flight to a typical flight between the provided origin and destination airports. Otherwise, we will use the distance-based emissions model if the flight distance is provided.",
          "type": "string"
        },
        "destination": {
          "description": "Optional. 3-character [IATA airport code](https://www.iata.org/en/publications/directories/code-search/) for flight destination, e.g. `ICN`. This is used to match specific flight if provided alongside origin, carrier, and flight number. If there is no match, we will first try to match the flight to a typical flight between the provided origin and destination airports. Otherwise, we will use the distance-based emissions model if the flight distance is provided.",
          "type": "string"
        },
        "carrierCode": {
          "type": "string",
          "description": "Optional. 2-character [IATA carrier code](https://www.iata.org/en/publications/directories/code-search/), e.g. `KE`. This is required if specific flight matching is desired. Otherwise, this is unused for typical flight and distance-based emissions models. This could be both operating and marketing carrier code (i.e. codeshare is covered)."
        },
        "flightNumber": {
          "type": "integer",
          "format": "int32",
          "description": "Optional. Up to 4-digit [flight number](https://en.wikipedia.org/wiki/Flight_number), e.g. `71`, from [1, 9999]. This is first used to match a specific flight if a flight number is specified alongside origin, destination, and carrier. If a flight number is not specified, we will first try to match the flight to a typical flight between the provided origin and destination airports. If that fails and/or origin & destination are not provided, we will use the distance-based emissions model based on the flight distance provided."
        },
        "departureDate": {
          "description": "Required. Date of the flight in the time zone of the origin airport. Only year is required for typical flight and distance-based emissions models (month and day values are ignored and therefore, can be either omitted, set to 0, or set to a valid date for those cases). Correspondingly, if a specific date is not provided for TIM emissions, we will fallback to typical flight (or distance-based) emissions.",
          "$ref": "Date"
        }
      },
      "description": "Flight parameters with which the Scope 3 emissions are fetched."
    },
    "FlightWithEmissions": {
      "description": "Direct flight with emission estimates.",
      "type": "object",
      "id": "FlightWithEmissions",
      "properties": {
        "source": {
          "description": "Optional. The source of the emissions data.",
          "enumDescriptions": [
            "The source of the emissions data is unspecified.",
            "The emissions data is from the Travel Impact Model.",
            "The emissions data is from the EASA environmental labels."
          ],
          "enum": [
            "SOURCE_UNSPECIFIED",
            "TIM",
            "EASA"
          ],
          "type": "string"
        },
        "emissionsGramsPerPax": {
          "$ref": "EmissionsGramsPerPax",
          "description": "Optional. Per-passenger emission estimate numbers. Will not be present if emissions could not be computed. For the list of reasons why emissions could not be computed, see ComputeFlightEmissions."
        },
        "flight": {
          "$ref": "Flight",
          "description": "Identifier. Matches the flight identifiers in the request. Note: all IATA codes are capitalized."
        },
        "easaLabelMetadata": {
          "description": "Optional. Metadata about the EASA Flight Emissions Label. Only set when the emissions data source is EASA.",
          "$ref": "EasaLabelMetadata"
        },
        "contrailsImpactBucket": {
          "description": "Optional. The significance of contrails warming impact compared to the total CO2e emissions impact.",
          "enumDescriptions": [
            "The contrails impact is unspecified.",
            "The contrails impact is negligible compared to the total CO2e emissions.",
            "The contrails impact is comparable to the total CO2e emissions.",
            "The contrails impact is higher than the total CO2e emissions impact."
          ],
          "enum": [
            "CONTRAILS_IMPACT_UNSPECIFIED",
            "CONTRAILS_IMPACT_NEGLIGIBLE",
            "CONTRAILS_IMPACT_MODERATE",
            "CONTRAILS_IMPACT_SEVERE"
          ],
          "type": "string"
        }
      }
    },
    "Date": {
      "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
      "type": "object",
      "id": "Date",
      "properties": {
        "year": {
          "type": "integer",
          "format": "int32",
          "description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year."
        },
        "day": {
          "description": "Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.",
          "type": "integer",
          "format": "int32"
        },
        "month": {
          "description": "Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.",
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "ComputeTypicalFlightEmissionsRequest": {
      "description": "A list of pair of airports (markets) to request the typical emissions for.",
      "type": "object",
      "id": "ComputeTypicalFlightEmissionsRequest",
      "properties": {
        "markets": {
          "items": {
            "$ref": "Market"
          },
          "type": "array",
          "description": "Required. Request the typical flight emissions estimates for this market pair. A maximum of 1000 markets can be requested."
        }
      }
    },
    "EasaLabelMetadata": {
      "description": "Metadata about the EASA Flight Emissions Label.",
      "id": "EasaLabelMetadata",
      "properties": {
        "labelExpiryDate": {
          "description": "The date when the label expires. The label can be displayed until the end of this date.",
          "$ref": "Date"
        },
        "labelIssueDate": {
          "description": "The date when the label was issued.",
          "$ref": "Date"
        },
        "labelVersion": {
          "description": "Version of the label.",
          "type": "string"
        },
        "safDiscountPercentage": {
          "type": "number",
          "format": "double",
          "description": "Sustainable Aviation Fuel (SAF) emissions discount percentage applied to the label. It is a percentage as a decimal. The values are in the interval [0,1]. For example, 0.0021 means 0.21%. This discount and reduction in emissions are reported by the EASA label but they are not included in the CO2e estimates distributed by this API."
        }
      },
      "type": "object"
    },
    "EmissionsBreakdown": {
      "description": "Details about the various emissions portions of the total emissions_grams_per_pax value. The value of the summed breakdowns should always equal emissions_grams_per_pax.",
      "type": "object",
      "id": "EmissionsBreakdown",
      "properties": {
        "wttEmissionsGramsPerPax": {
          "$ref": "EmissionsGramsPerPax",
          "description": "Per-passenger well-to-tank emission estimate numbers. Will not be present if emissions could not be computed. For the list of reasons why emissions could not be computed, see ComputeFlightEmissions."
        },
        "ttwEmissionsGramsPerPax": {
          "description": "Per-passenger tank-to-wake emission estimate numbers. Will not be present if emissions could not be computed. For the list of reasons why emissions could not be computed, see ComputeFlightEmissions.",
          "$ref": "EmissionsGramsPerPax"
        }
      }
    },
    "Flight": {
      "id": "Flight",
      "properties": {
        "operatingCarrierCode": {
          "type": "string",
          "description": "Required. IATA carrier code, e.g. \"AA\"."
        },
        "departureDate": {
          "$ref": "Date",
          "description": "Required. Date of the flight in the time zone of the origin airport. Must be a date in the present or future."
        },
        "destination": {
          "type": "string",
          "description": "Required. IATA airport code for flight destination, e.g. \"JFK\"."
        },
        "flightNumber": {
          "type": "integer",
          "format": "int32",
          "description": "Required. Flight number, e.g. 324."
        },
        "origin": {
          "type": "string",
          "description": "Required. IATA airport code for flight origin, e.g. \"LHR\"."
        }
      },
      "type": "object",
      "description": "All details related to a single request item for a direct flight emission estimates."
    },
    "ModelVersion": {
      "type": "object",
      "id": "ModelVersion",
      "properties": {
        "patch": {
          "type": "integer",
          "format": "int32",
          "description": "Patch versions: Implementation changes meant to address bugs or inaccuracies in the model implementation."
        },
        "major": {
          "type": "integer",
          "format": "int32",
          "description": "Major versions: Major changes to methodology (e.g. adding new data sources to the model that lead to major output changes). Such changes will be infrequent and announced well in advance. Might involve API version changes, which will respect [Google Cloud API guidelines](https://cloud.google.com/endpoints/docs/openapi/versioning-an-api#backwards-incompatible)"
        },
        "minor": {
          "description": "Minor versions: Changes to the model that, while being consistent across schema versions, change the model parameters or implementation.",
          "type": "integer",
          "format": "int32"
        },
        "dated": {
          "description": "Dated versions: Model datasets are recreated with refreshed input data but no change to the algorithms regularly.",
          "type": "string"
        }
      },
      "description": "Travel Impact Model version. For more information about the model versioning see [GitHub](https://github.com/google/travel-impact-model/#versioning)."
    },
    "FlightEmissionsDetails": {
      "description": "Details about the specific flight's emissions.",
      "type": "object",
      "id": "FlightEmissionsDetails",
      "properties": {
        "emissionsGramsPerPax": {
          "$ref": "EmissionsGramsPerPax",
          "readOnly": true,
          "description": "Output only. Per-passenger emission estimate numbers. Will not be present if emissions could not be computed. For the list of reasons why emissions could not be computed, see ComputeDetailedFlightEmissions"
        },
        "emissionsBreakdown": {
          "description": "Output only. Details about the various emissions portions of the total emissions_grams_per_pax value. The value of the summed breakdowns should always equal emissions_grams_per_pax.",
          "readOnly": true,
          "$ref": "EmissionsBreakdown"
        },
        "contrailsImpactBucket": {
          "readOnly": true,
          "description": "Output only. The significance of contrails warming impact compared to the total CO2e emissions impact.",
          "enumDescriptions": [
            "The contrails impact is unspecified.",
            "The contrails impact is negligible compared to the total CO2e emissions.",
            "The contrails impact is comparable to the total CO2e emissions.",
            "The contrails impact is higher than the total CO2e emissions impact."
          ],
          "type": "string",
          "enum": [
            "CONTRAILS_IMPACT_UNSPECIFIED",
            "CONTRAILS_IMPACT_NEGLIGIBLE",
            "CONTRAILS_IMPACT_MODERATE",
            "CONTRAILS_IMPACT_SEVERE"
          ]
        },
        "source": {
          "type": "string",
          "readOnly": true,
          "description": "Output only. The source of the emissions data.",
          "enumDescriptions": [
            "The source of the emissions data is unspecified.",
            "The emissions data is from the Travel Impact Model.",
            "The emissions data is from the EASA environmental labels."
          ],
          "enum": [
            "SOURCE_UNSPECIFIED",
            "TIM",
            "EASA"
          ]
        }
      }
    },
    "Market": {
      "id": "Market",
      "properties": {
        "destination": {
          "type": "string",
          "description": "Required. IATA airport code for flight destination, e.g. \"JFK\"."
        },
        "origin": {
          "type": "string",
          "description": "Required. IATA airport code for flight origin, e.g. \"LHR\"."
        }
      },
      "type": "object",
      "description": "A pair of airports."
    },
    "EmissionsProvenanceEntry": {
      "type": "object",
      "id": "EmissionsProvenanceEntry",
      "properties": {
        "cargoMassFractionData": {
          "type": "number",
          "format": "double",
          "description": "Output only. The cargo mass fraction value. If not set, the cargo mass fraction value is not available.",
          "readOnly": true
        },
        "distanceAdjustmentStrategy": {
          "enum": [
            "STRATEGY_UNSPECIFIED",
            "ORIGIN_DESTINATION",
            "COUNTRY_PAIR",
            "DEFAULT"
          ],
          "type": "string",
          "readOnly": true,
          "description": "Output only. Strategy for distance adjustment.",
          "enumDescriptions": [
            "Strategy unspecified.",
            "Distance adjustment factor determined by origin and destination airport pair.",
            "Distance adjustment factor determined by origin and destination country pair.",
            "The distance adjustment factor is based on the default value because we did not find an airport- or country-specific adjustment factor."
          ]
        },
        "fuelBurnEeaStrategy": {
          "enum": [
            "STRATEGY_UNSPECIFIED",
            "AIRCRAFT_MAPPING_FALLBACK_WITH_CORRECTION_FACTOR",
            "AIRCRAFT_MAPPING_EXACT",
            "AIRCRAFT_MAPPING_FALLBACK"
          ],
          "type": "string",
          "readOnly": true,
          "description": "Output only. Strategy for EEA fuel burn.",
          "enumDescriptions": [
            "Strategy unspecified.",
            "A static correction factor was applied.",
            "Exact aircraft mapping was used.",
            "Fallback aircraft mapping was used."
          ]
        },
        "estimatedFlightDistanceKm": {
          "type": "integer",
          "format": "int32",
          "description": "Output only. The estimated distance flown in CCD flight phase in kilometers value calculated using the distance adjustment factor (DAF). If not set, the estimated flight distance value is not available.",
          "readOnly": true
        },
        "provenanceEntryType": {
          "type": "string",
          "description": "Output only. The type of the provenance entry.",
          "enumDescriptions": [
            "Unspecified provenance entry type.",
            "Fuel burn entry type.",
            "Load factors entry type.",
            "Cargo mass fraction entry type.",
            "Seating configuration entry type.",
            "Seat area ratios entry type.",
            "Distance adjustment entry type."
          ],
          "readOnly": true,
          "enum": [
            "EMISSIONS_PROVENANCE_ENTRY_TYPE_UNSPECIFIED",
            "FUEL_BURN",
            "LOAD_FACTORS",
            "CARGO_MASS_FRACTION",
            "SEATING_CONFIG",
            "SEAT_AREA_RATIOS",
            "DISTANCE_ADJUSTMENT"
          ]
        },
        "loadFactorsChAviationStrategy": {
          "enum": [
            "STRATEGY_UNSPECIFIED",
            "CARRIER_MONTH",
            "ACTUAL_CARRIER_YEAR_MONTH"
          ],
          "description": "Output only. Strategy for CH Aviation load factors.",
          "enumDescriptions": [
            "Strategy unspecified.",
            "Data by carrier and month of travel.",
            "Historical data matching carrier, year, and month."
          ],
          "readOnly": true,
          "type": "string"
        },
        "sourceVersion": {
          "description": "Output only. The version of the source data. For example, \"2025/04\".",
          "readOnly": true,
          "type": "string"
        },
        "source": {
          "enum": [
            "DATA_SOURCE_UNSPECIFIED",
            "EEA",
            "T100",
            "CH_AVIATION",
            "OAG",
            "OPERATING_CARRIER",
            "AIRCRAFT_MODEL_TYPICAL",
            "GLOBAL_DEFAULT",
            "IATA",
            "ICL"
          ],
          "description": "Output only. The source of the data.",
          "enumDescriptions": [
            "Data source unspecified.",
            "Data provided by the European Environment Agency (EEA).",
            "Data from the T-100 dataset, provided by the US Bureau of Transportation Statistics.",
            "Data provided by ch-aviation.",
            "Data provided by the Official Aviation Guide (OAG).",
            "Data provided by the operating carrier.",
            "Typical data based on the aircraft model.",
            "A global default value, used when no other data source is available.",
            "Data provided by the International Air Transport Association (IATA).",
            "Data provided by Imperial College London."
          ],
          "readOnly": true,
          "type": "string"
        },
        "cargoMassFractionT100Strategy": {
          "type": "string",
          "description": "Output only. Strategy for T100 cargo mass fraction.",
          "enumDescriptions": [
            "Strategy unspecified.",
            "Data by carrier, route, and aircraft class.",
            "Data by route and aircraft class.",
            "Data by distance band and aircraft class.",
            "Historical data matching carrier, route, year, month, and aircraft class."
          ],
          "readOnly": true,
          "enum": [
            "STRATEGY_UNSPECIFIED",
            "CARRIER_ROUTE_AIRCRAFT_CLASS",
            "ROUTE_AIRCRAFT_CLASS",
            "DISTANCE_AIRCRAFT_CLASS",
            "ACTUAL_CARRIER_ROUTE_YEAR_MONTH_AIRCRAFT_CLASS"
          ]
        },
        "loadFactorsT100Strategy": {
          "enum": [
            "STRATEGY_UNSPECIFIED",
            "CARRIER_ROUTE_MONTH",
            "CARRIER_MONTH",
            "ACTUAL_CARRIER_ROUTE_YEAR_MONTH"
          ],
          "type": "string",
          "readOnly": true,
          "description": "Output only. Strategy for T100 load factors.",
          "enumDescriptions": [
            "Strategy unspecified.",
            "Data by carrier, route, and month of travel.",
            "Data by carrier and month of travel.",
            "Historical data matching carrier, route, year, and month."
          ]
        },
        "dataCategory": {
          "type": "string",
          "readOnly": true,
          "description": "Output only. Data category of the data source.",
          "enumDescriptions": [
            "Data category unspecified.",
            "Primary data, as defined in ISO 14083.",
            "Modeled data, as defined in ISO 14083.",
            "Default value data, as defined in ISO 14083."
          ],
          "enum": [
            "DATA_CATEGORY_UNSPECIFIED",
            "PRIMARY",
            "MODELED",
            "DEFAULT"
          ]
        },
        "seatAreaRatioIataStrategy": {
          "enum": [
            "STRATEGY_UNSPECIFIED",
            "NARROW_AIRCRAFT_BODY",
            "WIDE_AIRCRAFT_BODY"
          ],
          "type": "string",
          "description": "Output only. Strategy for IATA seat area ratios.",
          "enumDescriptions": [
            "Strategy unspecified.",
            "Seat area ratios for narrow body aircraft were used.",
            "Seat area ratios for wide body aircraft were used."
          ],
          "readOnly": true
        },
        "loadFactorsData": {
          "description": "Output only. The load factors data value. If not set, the load factors value is not available.",
          "readOnly": true,
          "type": "number",
          "format": "double"
        }
      },
      "description": "Details about a single contributing factor in emissions calculations."
    },
    "ComputeTypicalFlightEmissionsResponse": {
      "id": "ComputeTypicalFlightEmissionsResponse",
      "properties": {
        "typicalFlightEmissions": {
          "items": {
            "$ref": "TypicalFlightEmissions"
          },
          "type": "array",
          "description": "Market's Typical Flight Emissions requested."
        },
        "modelVersion": {
          "$ref": "ModelVersion",
          "description": "The model version under which typical flight emission estimates for all flights in this response were computed."
        }
      },
      "type": "object",
      "description": "The response includes the emissions but also the model version."
    },
    "ComputeScope3FlightEmissionsRequest": {
      "type": "object",
      "id": "ComputeScope3FlightEmissionsRequest",
      "properties": {
        "modelVersion": {
          "description": "Optional. The model version under which emission estimates for all flights in this request were computed.",
          "$ref": "ModelVersion"
        },
        "flights": {
          "description": "Required. Flights to return emission estimates for.",
          "items": {
            "$ref": "Scope3FlightSegment"
          },
          "type": "array"
        }
      },
      "description": "A list of flight segments to request the Scope 3 emissions for."
    },
    "ComputeDetailedFlightEmissionsRequest": {
      "description": "Input definition for the ComputeDetailedFlightEmissions request.",
      "id": "ComputeDetailedFlightEmissionsRequest",
      "properties": {
        "flights": {
          "type": "array",
          "items": {
            "$ref": "Flight"
          },
          "description": "Required. Direct flights to return emission estimates for."
        }
      },
      "type": "object"
    },
    "ComputeFlightEmissionsResponse": {
      "type": "object",
      "id": "ComputeFlightEmissionsResponse",
      "properties": {
        "flightEmissions": {
          "description": "List of flight legs with emission estimates.",
          "type": "array",
          "items": {
            "$ref": "FlightWithEmissions"
          }
        },
        "modelVersion": {
          "description": "The model version under which emission estimates for all flights in this response were computed.",
          "$ref": "ModelVersion"
        }
      },
      "description": "Output definition for the ComputeFlightEmissions response."
    },
    "EmissionsGramsPerPax": {
      "type": "object",
      "id": "EmissionsGramsPerPax",
      "properties": {
        "first": {
          "description": "Emissions for one passenger in first class in grams. This field is always computed and populated, regardless of whether the aircraft has first class seats or not.",
          "type": "integer",
          "format": "int32"
        },
        "business": {
          "type": "integer",
          "format": "int32",
          "description": "Emissions for one passenger in business class in grams. This field is always computed and populated, regardless of whether the aircraft has business class seats or not."
        },
        "economy": {
          "type": "integer",
          "format": "int32",
          "description": "Emissions for one passenger in economy class in grams. This field is always computed and populated, regardless of whether the aircraft has economy class seats or not."
        },
        "premiumEconomy": {
          "type": "integer",
          "format": "int32",
          "description": "Emissions for one passenger in premium economy class in grams. This field is always computed and populated, regardless of whether the aircraft has premium economy class seats or not."
        }
      },
      "description": "Grouped emissions per seating class results."
    },
    "FlightWithDetailedEmissions": {
      "type": "object",
      "id": "FlightWithDetailedEmissions",
      "properties": {
        "flight": {
          "readOnly": true,
          "description": "Output only. Matches the flight identifiers in the request. Note: all IATA codes are capitalized.",
          "$ref": "Flight"
        },
        "flightEmissionsDetails": {
          "$ref": "FlightEmissionsDetails",
          "readOnly": true,
          "description": "Output only. All the flight emissions data."
        },
        "emissionsMetadata": {
          "readOnly": true,
          "description": "Output only. Additional metadata about the flight emissions calculation.",
          "$ref": "EmissionsMetadata"
        }
      },
      "description": "Direct flight with emission estimates details."
    },
    "ComputeFlightEmissionsRequest": {
      "id": "ComputeFlightEmissionsRequest",
      "properties": {
        "flights": {
          "description": "Required. Direct flights to return emission estimates for.",
          "type": "array",
          "items": {
            "$ref": "Flight"
          }
        }
      },
      "type": "object",
      "description": "Input definition for the ComputeFlightEmissions request."
    },
    "TypicalFlightEmissions": {
      "description": "Typical flight emission estimates for a certain market",
      "id": "TypicalFlightEmissions",
      "properties": {
        "market": {
          "description": "Identifier. Matches the flight identifiers in the request. Note: all IATA codes are capitalized.",
          "$ref": "Market"
        },
        "emissionsGramsPerPax": {
          "$ref": "EmissionsGramsPerPax",
          "description": "Optional. Typical flight emissions per passenger for requested market. Will not be present if a typical emissions could not be computed. For the list of reasons why typical flight emissions could not be computed, see [GitHub](https://github.com/google/travel-impact-model/blob/main/projects/typical_flight_emissions.md#step-7-validate-dataset)."
        }
      },
      "type": "object"
    },
    "ComputeScope3FlightEmissionsResponse": {
      "id": "ComputeScope3FlightEmissionsResponse",
      "properties": {
        "flightEmissions": {
          "type": "array",
          "items": {
            "$ref": "Scope3FlightEmissions"
          },
          "description": "List of flight segments with emission estimates."
        },
        "modelVersion": {
          "$ref": "ModelVersion",
          "description": "The model version under which emission estimates for all flights in this response were computed."
        }
      },
      "type": "object",
      "description": "A list of flights with Scope 3 emission estimates."
    },
    "EmissionsMetadata": {
      "id": "EmissionsMetadata",
      "properties": {
        "emissionsProvenance": {
          "$ref": "EmissionsProvenance",
          "description": "Output only. Details about the provenance of data used to calculate the emissions data, including the contributing factors with their data sources.",
          "readOnly": true
        },
        "easaLabelMetadata": {
          "description": "Output only. Metadata about the EASA Flight Emissions Label. Only set when the emissions data source is EASA.",
          "readOnly": true,
          "$ref": "EasaLabelMetadata"
        },
        "timWebsiteEmissionsCalculatorUrl": {
          "description": "Output only. Link to the `travelimpactmodel.org` Emissions Calculator website. Example: https://travelimpactmodel.org/lookup/flight?itinerary=ZRH-BOS-LX-52-20261225.",
          "readOnly": true,
          "type": "string"
        }
      },
      "type": "object",
      "description": "All additional metadata."
    }
  },
  "version_module": true,
  "basePath": "",
  "id": "travelimpactmodel:v1",
  "servicePath": ""
}
