{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/lune/json-schema/lune-multi-leg-shipping-emission-estimate-schema.json",
  "title": "MultiLegShippingEmissionEstimate",
  "description": "An emission estimate result for a transport involving multiple legs.\n\nLune's API returns both the total emissions and per-leg emissions (in the `legs`\nproperty).\n\nThe ordering of the legs in the estimate is the same as the ordering of the inputs.\n\nAn error with estimating any of the legs will result in the whole estimation process\nfailing completely (we don't provide partial estimates in light of a failure).\n",
  "x-generated": "2026-10-29",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/lune-openapi.yml#/components/schemas/MultiLegShippingEmissionEstimate",
  "x-lune-name": "Multi-leg shipping estimate",
  "allOf": [
    {
      "type": "object",
      "required": [
        "is_shipment",
        "shipped_at",
        "legs",
        "raw_distance",
        "distance",
        "adjusted_distance",
        "request",
        "external_estimate_url",
        "data_quality_score",
        "created_at",
        "filename",
        "user_fullname"
      ],
      "properties": {
        "is_shipment": {
          "$ref": "#/$defs/IsShipment"
        },
        "shipped_at": {
          "$ref": "#/$defs/ShippedAt"
        },
        "data_quality_score": {
          "description": "Represents the average data quality score for each leg.\n",
          "oneOf": [
            {
              "type": "object",
              "required": [
                "score"
              ],
              "properties": {
                "score": {
                  "$ref": "#/$defs/DataQualityGrade"
                }
              }
            },
            {
              "$ref": "#/$defs/NullEnum"
            }
          ]
        },
        "legs": {
          "type": "array",
          "description": "An array representing a leg's emission estimate.\n\nReturned in the same order as the request.\n",
          "items": {
            "$ref": "#/$defs/ShippingLegEmissionEstimate"
          }
        },
        "raw_distance": {
          "$ref": "#/$defs/RawDistance"
        },
        "distance": {
          "$ref": "#/$defs/Distance"
        },
        "adjusted_distance": {
          "$ref": "#/$defs/AdjustedDistance"
        },
        "request": {
          "$ref": "#/$defs/MultiLegShippingEstimateRequest"
        },
        "external_estimate_url": {
          "description": "An external accessible URL linking to a detailed page that provides complete information about the estimate.",
          "oneOf": [
            {
              "$ref": "#/$defs/Url"
            },
            {
              "$ref": "#/$defs/NullEnum"
            }
          ]
        },
        "source": {
          "type": "string",
          "description": "Identifies the source used to create the estimate.",
          "enum": [
            "api",
            "dashboard",
            "csv",
            "chain_io",
            "ecotransit_csv",
            "widget",
            "ecotransit",
            "blue_yonder",
            "rfq"
          ]
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "description": "The date and time when the estimate was created."
        },
        "filename": {
          "description": "Name of the uploaded data sheet.",
          "oneOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/$defs/NullEnum"
            }
          ]
        },
        "user_fullname": {
          "description": "Full name of the user that uploaded the data sheet.",
          "oneOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/$defs/NullEnum"
            }
          ]
        }
      }
    },
    {
      "$ref": "#/$defs/ShippingEmissionEstimateResponse"
    }
  ],
  "$defs": {
    "AccountCurrencyCode": {
      "type": "string",
      "description": "The account's currency.\n\nISO 4217 3 character currency code.\n\nNote: Lune does not support all currency codes.\n",
      "enum": [
        "GBP",
        "EUR",
        "USD",
        "SEK",
        "CHF",
        "PLN",
        "DKK",
        "NOK",
        "BGN",
        "INR",
        "SGD",
        "AED",
        "AUD",
        "HUF",
        "ISK",
        "CZK",
        "CAD"
      ]
    },
    "AccountExternalPagesVisibility": {
      "description": "Controls the visibility of external pages such as sustainability and analytics pages.\n\n`public` pages are visible to everyone.\n`private` pages are only visible through a verified JWT.\n`hidden` pages not visible.\n\nDefaults to `hidden`.\n",
      "type": "string",
      "enum": [
        "public",
        "hidden",
        "private"
      ]
    },
    "AccountHandle": {
      "type": "string",
      "pattern": "^[a-z0-9-_]+$",
      "description": "`handle` is a client defined URL-friendly string that identifies the account.\n\nThe `handle` is unique per organisation and account type.\n"
    },
    "AccountIdempotencyKey": {
      "type": "string",
      "maxLength": 100,
      "description": "A unique identifier provided by the client.\n\n`idempotency_key` is unique per account type.\n\nIf an account with the same `idempotency_key` already exists, the API returns\nHTTP 409 Conflict with error code `account_idempotency_already_exists`.\n"
    },
    "Address": {
      "x-lune-name": "Address",
      "description": "Detailed information about an address.\n\nEven though though `street_line1`, `postcode`, `city` are optional properties, the more details\nyou provide, the more likely we are able to resolve the address to its intended location.\n\nNote: only `postcode` is guaranteed to be unique for a country.\n\n`country_code` is optional, but it is strongly recommended to provide it for\nbetter accuracy if possible.\n",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "street_line1": {
          "type": "string",
          "description": "A street and house number (or equivalent)."
        },
        "street_line2": {
          "type": "string",
          "description": "An address component more precise than a street and house number."
        },
        "postcode": {
          "type": "string",
          "description": "The postal code in the format specific to the country it's in"
        },
        "city": {
          "type": "string"
        },
        "country_code": {
          "type": "string",
          "description": "A three-letter country code."
        }
      }
    },
    "AdjustedDistance": {
      "description": "Deprecated. This value is the same as Distance.\n",
      "type": "object",
      "required": [
        "amount",
        "unit"
      ],
      "properties": {
        "amount": {
          "type": "string",
          "pattern": "^[0-9]+(\\.[0-9]+)?$"
        },
        "unit": {
          "type": "string",
          "enum": [
            "km",
            "mi",
            "nm"
          ]
        }
      }
    },
    "AirShippingMethod": {
      "x-lune-name": "Air freight",
      "oneOf": [
        {
          "$ref": "#/$defs/FlightNumberMethod"
        },
        {
          "$ref": "#/$defs/AircraftTypeMethod"
        }
      ]
    },
    "AircraftConfiguration": {
      "type": "string",
      "description": "For air transport, Lune supports one of three values:\n\n* `cargo_plane`: Indicating a full freighter plane.\n* `passenger_plane`: Indicating the plane only contains belly freight.\n* `plane`: When the freight capacity of the plane is unknown. This value uses a weighted average of cargo and passenger planes.\n\nWhen `aircraft_configuration` is omitted, it defaults to `plane`.\n",
      "enum": [
        "cargo_plane",
        "passenger_plane",
        "plane"
      ]
    },
    "AircraftTypeMethod": {
      "x-lune-name": "Aircraft type",
      "type": "object",
      "required": [
        "aircraft_type"
      ],
      "properties": {
        "aircraft_type": {
          "type": "string",
          "description": "Aircraft type ICAO code",
          "enum": [
            "A140",
            "A148",
            "A158",
            "A306",
            "A30B",
            "A310",
            "A318",
            "A319",
            "A320",
            "A321",
            "A332",
            "A333",
            "A342",
            "A343",
            "A345",
            "A346",
            "A359",
            "A380",
            "AN12",
            "B703",
            "B712",
            "B722",
            "B732",
            "B733",
            "B734",
            "B735",
            "B738",
            "B739",
            "B742",
            "B744",
            "B748",
            "B752",
            "B762",
            "B763",
            "B77L",
            "B773",
            "B77W",
            "B788",
            "B789",
            "MD11"
          ]
        }
      }
    },
    "AirportCode": {
      "type": "object",
      "oneOf": [
        {
          "$ref": "#/$defs/IATACode"
        },
        {
          "$ref": "#/$defs/ICAOCode"
        }
      ]
    },
    "BaseShippingLegEmissionEstimate": {
      "allOf": [
        {
          "$ref": "#/$defs/EmissionEstimateWithWTWBreakdown"
        },
        {
          "type": "object",
          "required": [
            "methodology",
            "distance_calculation_method",
            "distance_calculation_details",
            "route",
            "emission_factor",
            "methodology_details",
            "data_quality_score",
            "activity",
            "intensity"
          ],
          "properties": {
            "vessel_inference_details": {
              "description": "The method we used to infer a vessel from client provided input.\n\n`null` when vessel identifier provided by client or no vessel inference not relevant to estimation.\n",
              "oneOf": [
                {
                  "$ref": "#/$defs/VesselInferenceMethod"
                },
                {
                  "$ref": "#/$defs/NullEnum"
                }
              ]
            },
            "raw_distance": {
              "$ref": "#/$defs/RawDistance"
            },
            "distance": {
              "$ref": "#/$defs/Distance"
            },
            "adjusted_distance": {
              "$ref": "#/$defs/AdjustedDistance"
            },
            "distance_calculation_method": {
              "description": "The method we used to determine the shipping distance.\n\n`null` in case of logistics sites or when resolved_legs is set.\n",
              "oneOf": [
                {
                  "$ref": "#/$defs/DistanceCalculationMethod"
                },
                {
                  "$ref": "#/$defs/NullEnum"
                }
              ]
            },
            "activity": {
              "oneOf": [
                {
                  "$ref": "#/$defs/LogisticsActivity"
                },
                {
                  "$ref": "#/$defs/NullEnum"
                }
              ]
            },
            "intensity": {
              "oneOf": [
                {
                  "$ref": "#/$defs/LogisticsIntensityBreakdown"
                },
                {
                  "$ref": "#/$defs/NullEnum"
                }
              ]
            },
            "route": {
              "description": "The shipping route.\n\n`null` in case of logistics sites and situations where the concept of\na route doesn't make sense or we're unable to return the route. That\nincludes the following situations at the moment:\n\n* Routes where source or destination is an address (or both are).\n* Most land and inland waterways routes.\n* The actual distance value was provided by the user.\n* The emission estimate was created before 2023-09-22.\n",
              "oneOf": [
                {
                  "$ref": "#/$defs/CalculatedRoute"
                },
                {
                  "$ref": "#/$defs/NullEnum"
                }
              ]
            },
            "emission_factor": {
              "$ref": "#/$defs/EmissionFactorWithGasEmissions"
            },
            "methodology": {
              "type": "array",
              "description": "Summary of the methodology used to calculate emissions or any value which is a prerequisite.\n\n`imo_unavailable_container_ship_fallback`: the vessel IMO was not found, therefore a generic container ship emission factor has been used.\n`flight_number_unavailable_fallback`: the flight number could not be found or the aircraft is currently not supported, therefore a generic plane method has been used.\n",
              "items": {
                "type": "string",
                "enum": [
                  "imo_unavailable_container_ship_fallback",
                  "imo_unavailable_container_ship_trade_lane_fallback",
                  "flight_number_unavailable_fallback",
                  "invalid_flight_route_fallback"
                ]
              }
            },
            "distance_calculation_details": {
              "description": "Information regarding why an alternative distance calculation method was used.\n`null` in case several resolved legs are presented.\n",
              "oneOf": [
                {
                  "$ref": "#/$defs/DistanceCalculationDetails"
                },
                {
                  "$ref": "#/$defs/NullEnum"
                }
              ]
            },
            "methodology_details": {
              "oneOf": [
                {
                  "$ref": "#/$defs/MethodologyDetails"
                },
                {
                  "$ref": "#/$defs/RoadMethodologyDetails"
                },
                {
                  "$ref": "#/$defs/ElectricMethodMethodologyDetails"
                },
                {
                  "$ref": "#/$defs/RouteInferenceDetails"
                },
                {
                  "$ref": "#/$defs/SeaMethodologyDetails"
                },
                {
                  "$ref": "#/$defs/NullEnum"
                }
              ]
            },
            "data_quality_score": {
              "description": "Represents the quality of the emission estimation for a particular shipping leg.\n",
              "oneOf": [
                {
                  "$ref": "#/$defs/DataQualityScore"
                },
                {
                  "$ref": "#/$defs/NullEnum"
                }
              ]
            },
            "inference_details": {
              "description": "Lune infers certain properties to improve estimation accuracy.\nAny inferences made will be described in this property.\n",
              "oneOf": [
                {
                  "$ref": "#/$defs/InferenceDetails"
                },
                {
                  "$ref": "#/$defs/NullEnum"
                }
              ]
            }
          }
        }
      ]
    },
    "BundlePercentageRequest": {
      "type": "object",
      "description": "Maps a bundle id to an allocation ratio",
      "required": [
        "bundle_id"
      ],
      "properties": {
        "bundle_id": {
          "type": "string",
          "description": "The bundle's unique identifier"
        },
        "percentage": {
          "oneOf": [
            {
              "type": "integer",
              "x-lune-name": "Selection percentage as integer",
              "description": "Selection percentage"
            },
            {
              "type": "string",
              "pattern": "^[0-9]+(\\.\\d{1,2})?$",
              "x-lune-name": "Selection percentage in decimals",
              "description": "Selection percentage in decimals"
            }
          ]
        }
      }
    },
    "BundleSelectionRequest": {
      "type": "array",
      "description": "Bundle selection percentages.\n\nThe sum of all percentages must equal 100.\n\nIf not specified, the preconfigured allocation ratios are going to be used.\n\nIf, for each selection, `percentage` is not provided, the selection is divided equally (best effort) between bundles. `percentage` must be provided for all or none of the bundles.\n",
      "items": {
        "$ref": "#/$defs/BundlePercentageRequest"
      }
    },
    "CalculatedRoute": {
      "description": "A list of locations and distances betwen them.\n\nAt least one leg will always exist.\n\nThe last leg contains the final location (destination) of the route.\n",
      "type": "object",
      "required": [
        "source",
        "legs",
        "attribution"
      ],
      "properties": {
        "source": {
          "$ref": "#/$defs/CalculatedRouteLocation"
        },
        "legs": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#/$defs/CalculatedRouteLeg"
          }
        },
        "attribution": {
          "type": [
            "string",
            "null"
          ],
          "description": "Attribution for the route provider, if applicable."
        }
      }
    },
    "CalculatedRouteLeg": {
      "description": "A location and a distance from the previous location (or `source`, if this is the\nfirst leg).\n\nIf this is the last leg then the location is the final location (destination) of\nthe route.\n",
      "type": "object",
      "required": [
        "location",
        "distance"
      ],
      "properties": {
        "location": {
          "$ref": "#/$defs/CalculatedRouteLocation"
        },
        "raw_distance": {
          "$ref": "#/$defs/RawDistance"
        },
        "distance": {
          "$ref": "#/$defs/Distance"
        }
      }
    },
    "CalculatedRouteLocation": {
      "type": "object",
      "required": [
        "label",
        "coordinates"
      ],
      "properties": {
        "label": {
          "type": [
            "string",
            "null"
          ]
        },
        "coordinates": {
          "$ref": "#/$defs/GeographicCoordinates"
        }
      }
    },
    "CargoType": {
      "type": "string",
      "description": "Specify the mass of cargo in the container. If omitted, `average` is used by default.\n\nEach type applies a different conversion to mass for emissions estimation. See [TEU conversion table](https://docs.lune.co/general-concepts/logistics-methodology#13-cargo-weight) for details.\n",
      "enum": [
        "lightweight",
        "average",
        "heavyweight",
        "container_only"
      ]
    },
    "ContainerShippingMethod": {
      "x-lune-name": "Container sea transport",
      "type": "object",
      "additionalProperties": false,
      "required": [
        "vessel_type"
      ],
      "properties": {
        "vessel_type": {
          "type": "string",
          "enum": [
            "container_ship"
          ]
        },
        "refrigerated": {
          "description": "A container transport is either refrigerated or \"dry\" (not refrigerated). Dry transports\nresult in lower emissions.\n",
          "type": "boolean",
          "default": false
        },
        "load_factor": {
          "description": "Measure of how fully a vessel is utilising its cargo capacity.\n",
          "type": "number",
          "format": "float",
          "minimum": 0,
          "maximum": 1,
          "exclusiveMinimum": true
        },
        "trade_lane": {
          "type": "string",
          "description": "Container transport emissions vary per trade lane. When a trade lane is not provided,\nLune will attempt to infer it from the shipment's source and destination locations.\nIf inference is not possible (e.g. no route provided or locations fall outside mapped\nregions), an industry-wide average will be used. Any inferred trade lane is reported in\nthe response's `inference_details.trade_lane_from_route` field.\n\nProviding an `aggregated_*` trade lane group will result in a more accurate estimate.\nProviding a `disaggregated_*` trade lane will result in the best estimate precision.\n\nThe identifiers are kept relatively short for brevity: Mediterranean includes Black Sea and\nSouth America includes Central America.\n\nThe trade lanes are bidirectional, for example `disaggregated_asia_to_africa` covers both\nAsia to Africa and Africa to Asia.\n",
          "enum": [
            "aggregated_panama_trade",
            "aggregated_transatlantic",
            "aggregated_transsuez",
            "aggregated_transpacific",
            "aggregated_other",
            "disaggregated_asia_to_africa",
            "disaggregated_asia_to_mediterranean",
            "disaggregated_asia_to_middle_east",
            "disaggregated_asia_to_north_america_east",
            "disaggregated_asia_to_north_america_west",
            "disaggregated_asia_to_north_europe",
            "disaggregated_asia_to_oceania",
            "disaggregated_asia_to_south_america",
            "disaggregated_europe_to_africa",
            "disaggregated_europe_to_south_america",
            "disaggregated_europe_to_middle_east",
            "disaggregated_europe_to_oceania",
            "disaggregated_mediterranean_to_north_america_east",
            "disaggregated_mediterranean_to_north_america_west",
            "disaggregated_north_america_to_africa",
            "disaggregated_north_america_to_oceania",
            "disaggregated_north_america_to_south_america",
            "disaggregated_north_america_to_middle_east",
            "disaggregated_north_europe_to_north_america_east",
            "disaggregated_north_europe_to_north_america_west",
            "disaggregated_south_america_to_africa",
            "disaggregated_intra_africa",
            "disaggregated_intra_north_america",
            "disaggregated_intra_south_america",
            "disaggregated_se_asia_to_ne_asia",
            "disaggregated_intra_ne_asia",
            "disaggregated_intra_se_asia",
            "disaggregated_north_europe_to_mediterranean",
            "disaggregated_intra_mediterranean",
            "disaggregated_intra_north_europe",
            "disaggregated_intra_middle_east",
            "disaggregated_other"
          ]
        }
      }
    },
    "ContainerShippingMethodWithExtraProperties": {
      "x-lune-name": "Container sea transport",
      "type": "object",
      "required": [
        "vessel_type"
      ],
      "properties": {
        "vessel_type": {
          "type": "string",
          "enum": [
            "container_ship"
          ]
        },
        "refrigerated": {
          "description": "A container transport is either refrigerated or \"dry\" (not refrigerated). Dry transports\nresult in lower emissions.\n",
          "type": "boolean",
          "default": false
        },
        "load_factor": {
          "description": "Measure of how fully a vessel is utilising its cargo capacity.\n",
          "type": "number",
          "format": "float",
          "minimum": 0,
          "maximum": 1,
          "exclusiveMinimum": true
        },
        "trade_lane": {
          "type": "string",
          "description": "Container transport emissions vary per trade lane. When a trade lane is not provided,\nLune will attempt to infer it from the shipment's source and destination locations.\nIf inference is not possible (e.g. no route provided or locations fall outside mapped\nregions), an industry-wide average will be used. Any inferred trade lane is reported in\nthe response's `inference_details.trade_lane_from_route` field.\n\nProviding an `aggregated_*` trade lane group will result in a more accurate estimate.\nProviding a `disaggregated_*` trade lane will result in the best estimate precision.\n\nThe identifiers are kept relatively short for brevity: Mediterranean includes Black Sea and\nSouth America includes Central America.\n\nThe trade lanes are bidirectional, for example `disaggregated_asia_to_africa` covers both\nAsia to Africa and Africa to Asia.\n",
          "enum": [
            "aggregated_panama_trade",
            "aggregated_transatlantic",
            "aggregated_transsuez",
            "aggregated_transpacific",
            "aggregated_other",
            "disaggregated_asia_to_africa",
            "disaggregated_asia_to_mediterranean",
            "disaggregated_asia_to_middle_east",
            "disaggregated_asia_to_north_america_east",
            "disaggregated_asia_to_north_america_west",
            "disaggregated_asia_to_north_europe",
            "disaggregated_asia_to_oceania",
            "disaggregated_asia_to_south_america",
            "disaggregated_europe_to_africa",
            "disaggregated_europe_to_south_america",
            "disaggregated_europe_to_middle_east",
            "disaggregated_europe_to_oceania",
            "disaggregated_mediterranean_to_north_america_east",
            "disaggregated_mediterranean_to_north_america_west",
            "disaggregated_north_america_to_africa",
            "disaggregated_north_america_to_oceania",
            "disaggregated_north_america_to_south_america",
            "disaggregated_north_america_to_middle_east",
            "disaggregated_north_europe_to_north_america_east",
            "disaggregated_north_europe_to_north_america_west",
            "disaggregated_south_america_to_africa",
            "disaggregated_intra_africa",
            "disaggregated_intra_north_america",
            "disaggregated_intra_south_america",
            "disaggregated_se_asia_to_ne_asia",
            "disaggregated_intra_ne_asia",
            "disaggregated_intra_se_asia",
            "disaggregated_north_europe_to_mediterranean",
            "disaggregated_intra_mediterranean",
            "disaggregated_intra_north_europe",
            "disaggregated_intra_middle_east",
            "disaggregated_other"
          ]
        }
      }
    },
    "ConvertedShipment": {
      "type": "object",
      "required": [
        "amount",
        "unit"
      ],
      "properties": {
        "amount": {
          "type": "string"
        },
        "unit": {
          "oneOf": [
            {
              "$ref": "#/$defs/MassUnit"
            },
            {
              "x-lune-name": "Containers",
              "type": "string",
              "enum": [
                "TEU"
              ]
            }
          ]
        }
      }
    },
    "CurrencyCode": {
      "x-lune-name": "Currency code",
      "type": "string",
      "description": "ISO 4217 3 character currency code.\n\nNote: Lune supports most but not all currency codes.\n",
      "enum": [
        "AED",
        "AFN",
        "ALL",
        "AMD",
        "ANG",
        "AOA",
        "ARS",
        "AUD",
        "AWG",
        "AZN",
        "BAM",
        "BBD",
        "BDT",
        "BGN",
        "BHD",
        "BIF",
        "BMD",
        "BND",
        "BOB",
        "BRL",
        "BSD",
        "BTC",
        "BTN",
        "BWP",
        "BYN",
        "BYR",
        "BZD",
        "CAD",
        "CDF",
        "CHF",
        "CLF",
        "CLP",
        "CNY",
        "CNH",
        "COP",
        "CRC",
        "CUC",
        "CUP",
        "CVE",
        "CZK",
        "DJF",
        "DKK",
        "DOP",
        "DZD",
        "EGP",
        "ERN",
        "ETB",
        "EUR",
        "FJD",
        "FKP",
        "GBP",
        "GEL",
        "GGP",
        "GHS",
        "GIP",
        "GMD",
        "GNF",
        "GTQ",
        "GYD",
        "HKD",
        "HNL",
        "HRK",
        "HTG",
        "HUF",
        "IDR",
        "ILS",
        "IMP",
        "INR",
        "IQD",
        "IRR",
        "ISK",
        "JEP",
        "JMD",
        "JOD",
        "JPY",
        "KES",
        "KGS",
        "KHR",
        "KMF",
        "KPW",
        "KRW",
        "KWD",
        "KYD",
        "KZT",
        "LAK",
        "LBP",
        "LKR",
        "LRD",
        "LSL",
        "LTL",
        "LVL",
        "LYD",
        "MAD",
        "MDL",
        "MGA",
        "MKD",
        "MMK",
        "MNT",
        "MOP",
        "MRU",
        "MUR",
        "MVR",
        "MWK",
        "MXN",
        "MYR",
        "MZN",
        "NAD",
        "NGN",
        "NIO",
        "NOK",
        "NPR",
        "NZD",
        "OMR",
        "PAB",
        "PEN",
        "PGK",
        "PHP",
        "PKR",
        "PLN",
        "PYG",
        "QAR",
        "RON",
        "RSD",
        "RUB",
        "RWF",
        "SAR",
        "SBD",
        "SCR",
        "SDG",
        "SEK",
        "SGD",
        "SHP",
        "SLE",
        "SLL",
        "SOS",
        "SRD",
        "STD",
        "SVC",
        "SYP",
        "SZL",
        "THB",
        "TJS",
        "TMT",
        "TND",
        "TOP",
        "TRY",
        "TTD",
        "TWD",
        "TZS",
        "UAH",
        "UGX",
        "USD",
        "UYU",
        "UZS",
        "VES",
        "VND",
        "VUV",
        "WST",
        "XAF",
        "XAG",
        "XAU",
        "XCD",
        "XDR",
        "XOF",
        "XPF",
        "YER",
        "ZAR",
        "ZMK",
        "ZMW",
        "ZWL"
      ]
    },
    "DataQualityGrade": {
      "type": "string",
      "description": "A quality grade ranging from \"A_plus\" (excellent) to \"D\" (unsatisfactory).\n",
      "enum": [
        "A_plus",
        "A",
        "A_minus",
        "B_plus",
        "B",
        "B_minus",
        "C_plus",
        "C",
        "C_minus",
        "D"
      ]
    },
    "DataQualityScore": {
      "type": "object",
      "required": [
        "score",
        "components"
      ],
      "properties": {
        "score": {
          "$ref": "#/$defs/DataQualityGrade"
        },
        "components": {
          "type": "object",
          "required": [
            "emission_factor_score",
            "route_score",
            "shipment_score"
          ],
          "properties": {
            "emission_factor_score": {
              "$ref": "#/$defs/DataQualityGrade"
            },
            "route_score": {
              "oneOf": [
                {
                  "$ref": "#/$defs/DataQualityGrade"
                },
                {
                  "$ref": "#/$defs/NullEnum"
                }
              ]
            },
            "shipment_score": {
              "$ref": "#/$defs/DataQualityGrade"
            }
          }
        }
      }
    },
    "Distance": {
      "x-lune-name": "Distance",
      "type": "object",
      "required": [
        "amount",
        "unit"
      ],
      "properties": {
        "amount": {
          "type": "string",
          "pattern": "^[0-9]+(\\.[0-9]+)?$"
        },
        "unit": {
          "type": "string",
          "enum": [
            "km",
            "mi",
            "nm"
          ],
          "description": "The estimated distance. Unit, `km` for kilometers, `mi` for miles\n"
        }
      }
    },
    "DistanceCalculationDetails": {
      "type": "object",
      "required": [
        "vessel_tracking",
        "carrier_schedule_stops"
      ],
      "properties": {
        "vessel_tracking": {
          "oneOf": [
            {
              "type": "object",
              "x-lune-name": "Vessel tracking details",
              "required": [
                "message"
              ],
              "properties": {
                "message": {
                  "type": "string"
                }
              }
            },
            {
              "type": "object",
              "x-lune-name": "Vessel tracking adjustments",
              "required": [
                "adjustments"
              ],
              "properties": {
                "adjustments": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            },
            {
              "$ref": "#/$defs/NullEnum"
            }
          ]
        },
        "carrier_schedule_stops": {
          "oneOf": [
            {
              "type": "object",
              "x-lune-name": "Carrier schedule stops details",
              "required": [
                "message"
              ],
              "properties": {
                "message": {
                  "description": "The human-readable message describing the details of how we used or failed to use\ncarrier schedule stops to calculate the route.\n\nThe property is meant only for informational purposes and its exact format can\nchange.\n",
                  "type": "string"
                }
              }
            },
            {
              "$ref": "#/$defs/NullEnum"
            }
          ]
        }
      }
    },
    "DistanceCalculationMethod": {
      "description": "* `great_circle_distance` – Great-circle distance (as the crow flies)\n* `great_circle_distance_x2` – Great-circle distance multiplied by two\n* `sea_distance_algorithm` – our algorithm using known distances between ports\n* `inland_distance_algorithm` – our algorithm using OSM hydrographycal data\n* `mapbox` – we used the Mapbox Matrix API\n* `user_input` – the distance was provided to us directly\n* `osrm` – we used Open Source Routing Machine, the OpenStreetMap Data Routing Engine\n* `graphhopper` – we used GraphHopper routing engine\n* `google_maps` - we used the Google Distance Matrix API\n* `vessel_tracking` – we used the AIS data to track the vessel's route\n* `carrier_schedule_stops` – we used the sea distance algorithm to calculate the distance\n  between the stops reported in the carrier schedule\n",
      "type": "string",
      "enum": [
        "great_circle_distance",
        "great_circle_distance_x2",
        "sea_distance_algorithm",
        "inland_distance_algorithm",
        "mapbox",
        "user_input",
        "osrm",
        "graphhopper",
        "google_maps",
        "vessel_tracking",
        "carrier_schedule_stops"
      ]
    },
    "DistanceUnit": {
      "x-lune-name": "Distance",
      "type": "string",
      "enum": [
        "m",
        "km",
        "mi",
        "nm"
      ],
      "description": "Distance unit, `km` for kilometers, `mi` for miles and `nm` for nautical miles"
    },
    "ElectricMethodMethodologyDetails": {
      "x-lune-name": "Electric transport",
      "description": "Details about the shipping method's electricity consumption used in the methodology for estimating emissions.\n",
      "type": "object",
      "additionalProperties": false,
      "required": [
        "electricity_consumption"
      ],
      "properties": {
        "electricity_consumption": {
          "type": "object",
          "additionalProperties": false,
          "description": "The vehicle's electricity consumption per tonne kilometre.\n",
          "required": [
            "amount",
            "unit"
          ],
          "properties": {
            "amount": {
              "type": "string",
              "pattern": "^[0-9]+(\\.[0-9]+)?$"
            },
            "unit": {
              "type": "string",
              "enum": [
                "kWh/tkm"
              ]
            }
          }
        }
      }
    },
    "EmissionEstimateResponseQuoteAndId": {
      "type": "object",
      "required": [
        "id",
        "quote"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "The emission calculation unique identifier"
        },
        "quote": {
          "$ref": "#/$defs/EstimateQuote"
        }
      }
    },
    "EmissionEstimateWithWTWBreakdown": {
      "description": "A logistics emission estimate result. The value returned is in CO2e – it accounts for both CO2 and non-CO2 emissions.",
      "type": "object",
      "required": [
        "mass"
      ],
      "properties": {
        "mass": {
          "$ref": "#/$defs/EstimateMassWithBreakdowns"
        },
        "metadata": {
          "$ref": "#/$defs/Metadata"
        },
        "idempotency_key": {
          "$ref": "#/$defs/EstimateIdempotencyKey"
        }
      }
    },
    "EmissionFactor": {
      "description": "An emission factors is a coefficient representing the amount of emissions per unit of activity, eg 0.354kgCO₂/USD.\n\nThe `source` property describes what database the emission factor has been ingested from.\n",
      "type": "object",
      "required": [
        "id",
        "name",
        "source",
        "source_version",
        "publication_year",
        "numerator_unit",
        "denominator_unit",
        "created_at",
        "region",
        "category"
      ],
      "properties": {
        "id": {
          "description": "The emission factor unique identifier",
          "type": "string"
        },
        "name": {
          "description": "The emission factor name",
          "type": "string"
        },
        "source": {
          "$ref": "#/$defs/EmissionFactorSource"
        },
        "source_version": {
          "description": "Source version of the emission factor.",
          "type": "string"
        },
        "publication_year": {
          "description": "Publication year of the emission factor",
          "type": "number"
        },
        "numerator_unit": {
          "description": "Numerator unit of the emission factor",
          "$ref": "#/$defs/MassUnit"
        },
        "denominator_unit": {
          "description": "Denominator unit of the emission factor",
          "$ref": "#/$defs/EmissionFactorDenominatorUnit"
        },
        "created_at": {
          "description": "Date of creation of the emission factor",
          "type": "string",
          "format": "date-time"
        },
        "region": {
          "type": "string",
          "description": "The name of the region that the emission factor covers."
        },
        "category": {
          "type": [
            "string",
            "null"
          ],
          "description": "A category that describes the emission factor."
        }
      }
    },
    "EmissionFactorDenominatorUnit": {
      "oneOf": [
        {
          "$ref": "#/$defs/CurrencyCode"
        },
        {
          "$ref": "#/$defs/DistanceUnit"
        },
        {
          "type": "string",
          "x-lune-name": "Other units",
          "enum": [
            "item",
            "MJ",
            "GJ",
            "guest*night",
            "room*night",
            "ha",
            "hour",
            "seconds",
            "kWh",
            "kWh ICV",
            "kWh LHV",
            "kWh HHV",
            "kWh SCV",
            "toe",
            "toe ICV",
            "toe HHV",
            "toe SCV",
            "GJ ICV",
            "GJ HHV",
            "GJ SCV",
            "MJ ICV",
            "kg",
            "kg*day",
            "km*year",
            "l",
            "Ml",
            "ml",
            "m*year",
            "cm2",
            "m2",
            "ha*year",
            "m2*year",
            "m3",
            "m3*km",
            "t*km",
            "person*km",
            "person*month",
            "vehicle*km",
            "meal",
            "t",
            "fte*working_hour",
            "TEU",
            "TEU*km",
            "p",
            "A4_sheets"
          ]
        }
      ]
    },
    "EmissionFactorSource": {
      "type": "string",
      "enum": [
        "epa",
        "exiobase",
        "ecoinvent",
        "beis",
        "lune",
        "glec",
        "emsa",
        "cbam",
        "ademe",
        "idemat",
        "iata",
        "ember",
        "ceda",
        "icct"
      ]
    },
    "EmissionFactorWithGasEmissions": {
      "allOf": [
        {
          "$ref": "#/$defs/EmissionFactor"
        },
        {
          "type": "object",
          "required": [
            "gas_emissions"
          ],
          "properties": {
            "gas_emissions": {
              "description": "Detailed information about the gas emissions.\n\nThis property is always set as of March 2024.\n",
              "oneOf": [
                {
                  "$ref": "#/$defs/GasEmissions"
                },
                {
                  "$ref": "#/$defs/NullEnum"
                }
              ]
            }
          }
        }
      ]
    },
    "EmissionStandardRegion": {
      "type": "string",
      "enum": [
        "Africa",
        "Asia and Pacific",
        "North America",
        "Central and South America",
        "Europe",
        "World"
      ]
    },
    "Error": {
      "type": "object",
      "description": "Individual error information",
      "required": [
        "error_code",
        "message"
      ],
      "properties": {
        "error_code": {
          "type": "string",
          "description": "Immutable string representing a specific error.",
          "enum": [
            "api_version_invalid",
            "account_suspended",
            "bundle_selection_ratios_invalid",
            "bundle_selection_bundle_invalid",
            "order_idempotency_already_exists",
            "order_quantity_invalid",
            "order_value_invalid",
            "bundle_id_invalid",
            "id_invalid",
            "distance_invalid",
            "test_account_name_update_disallowed",
            "validation_error",
            "bundle_selection_ratios_invalid_format",
            "address_not_found",
            "port_not_found",
            "locode_not_found",
            "airport_invalid",
            "webhook_limit_reached",
            "time_range_invalid",
            "exchange_rate_not_found",
            "live_account_required",
            "unauthorised",
            "estimate_not_found",
            "estimate_order_already_placed",
            "sustainability_page_slug_not_unique",
            "sustainability_page_exists",
            "pagination_limit_invalid",
            "unsupported_image_format",
            "source_location_code_invalid",
            "destination_location_code_invalid",
            "emission_factor_id_invalid",
            "emission_factor_unit_mismatch",
            "emission_factor_gated",
            "account_scope_incorrect",
            "service_unavailable",
            "handle_not_unique",
            "estimate_idempotency_already_exists",
            "airport_route_required",
            "future_departure_invalid",
            "transaction_document_inference_failure",
            "transaction_document_creation_failure",
            "invalid_selected_account_id",
            "account_idempotency_already_exists",
            "account_handle_idempotency_key_inconsistency",
            "shipment_batch_idempotency_already_exists",
            "route_not_found",
            "insufficient_credits",
            "client_account_mismatch"
          ]
        },
        "message": {
          "type": "string",
          "description": "Human readable error message.\n\nThis value can contain some extra information about the error in\nhuman-readable form. Not suitable for programmatic consumption, the format\nis not guaranteed to be stable.\n"
        }
      }
    },
    "ErrorResponse": {
      "x-lune-name": "Error response",
      "description": "An error response containing the error details.\n\nThe `error` property provides information about the type of error that occurred.\nUse this property for error handling.\n\nThe `errors` array is present for backwards compatibility purposes. It always\ncontains a single error element which is the same seen in the `error` property.\n",
      "type": "object",
      "required": [
        "errors",
        "error"
      ],
      "properties": {
        "errors": {
          "type": "array",
          "description": "An array containing errors",
          "items": {
            "$ref": "#/$defs/Error"
          }
        },
        "error": {
          "$ref": "#/$defs/Error"
        }
      }
    },
    "EstimateClientAccountRequest": {
      "description": "Perform the estimate request on behalf of a client account.\n\nThe client account is identfied by the `handle` or `idempotency_key`.\n\nOn creating an estimate, the client account is created if it does not exist.\n\nOn updating an estimate, the client account is never created: it must already exist and match the\naccount that owns the estimate, otherwise the request fails with HTTP 409 Conflict with error code\n`client_account_mismatch`.\n\nFor existing client accounts, if both `handle` and `idempotency_key` are provided,\nthey must be consistent with the existing client account. Other properties are ignored.\n",
      "oneOf": [
        {
          "type": "object",
          "x-lune-name": "Handle",
          "additionalProperties": false,
          "required": [
            "name",
            "currency",
            "handle"
          ],
          "properties": {
            "name": {
              "description": "The account name.",
              "type": "string"
            },
            "currency": {
              "$ref": "#/$defs/AccountCurrencyCode"
            },
            "beneficiary": {
              "description": "The account beneficiary. Leading and trailing spaces are removed.",
              "type": "string"
            },
            "external_pages_visibility": {
              "$ref": "#/$defs/AccountExternalPagesVisibility"
            },
            "handle": {
              "$ref": "#/$defs/AccountHandle"
            }
          }
        },
        {
          "type": "object",
          "x-lune-name": "Idempotency key",
          "required": [
            "name",
            "currency",
            "idempotency_key"
          ],
          "properties": {
            "name": {
              "description": "The account name.",
              "type": "string"
            },
            "currency": {
              "$ref": "#/$defs/AccountCurrencyCode"
            },
            "beneficiary": {
              "description": "The account beneficiary. Leading and trailing spaces are removed.",
              "type": "string"
            },
            "external_pages_visibility": {
              "$ref": "#/$defs/AccountExternalPagesVisibility"
            },
            "handle": {
              "$ref": "#/$defs/AccountHandle"
            },
            "idempotency_key": {
              "$ref": "#/$defs/AccountIdempotencyKey"
            }
          }
        }
      ]
    },
    "EstimateIdempotencyKey": {
      "type": "string",
      "maxLength": 100,
      "description": "Account-unique identifier provided by the client.\n\n`idempotency_key` has two purposes:\n1. Clients can use `idempotency_key` to prevent duplicate estimates.\n2. Clients can use `idempotency_key` to reconcile estimates with entities on their system.\n\nIf an estimate with the same `idempotency_key` already exists, the API returns\nHTTP 409 Conflict with error code `estimate_idempotency_already_exists`.\n"
    },
    "EstimateMass": {
      "type": "object",
      "required": [
        "amount",
        "unit"
      ],
      "properties": {
        "amount": {
          "type": "string",
          "pattern": "^[0-9]+(\\.[0-9]+)?$"
        },
        "unit": {
          "$ref": "#/$defs/EstimateMassUnit"
        }
      }
    },
    "EstimateMassBreakdowns": {
      "type": "object",
      "required": [
        "wtw_details",
        "pollutants"
      ],
      "properties": {
        "wtw_details": {
          "description": "This property is `null` for any estimate created before 30/01/2025",
          "oneOf": [
            {
              "$ref": "#/$defs/WTWBreakdown"
            },
            {
              "$ref": "#/$defs/NullEnum"
            }
          ]
        },
        "pollutants": {
          "oneOf": [
            {
              "$ref": "#/$defs/NullEnum"
            },
            {
              "$ref": "#/$defs/PollutantBreakdown"
            }
          ]
        }
      }
    },
    "EstimateMassUnit": {
      "type": "string",
      "description": "Unit, `t` for tonne, `kg` for kilogram, `g` for gram, `mg` for milligram, `lbs` for pound",
      "enum": [
        "mg",
        "g",
        "kg",
        "t",
        "lbs"
      ]
    },
    "EstimateMassWithBreakdowns": {
      "allOf": [
        {
          "$ref": "#/$defs/EstimateMass"
        },
        {
          "$ref": "#/$defs/EstimateMassBreakdowns"
        }
      ]
    },
    "EstimateQuote": {
      "oneOf": [
        {
          "x-lune-name": "Quoting error",
          "$ref": "#/$defs/ErrorResponse"
        },
        {
          "x-lune-name": "Successful quote",
          "$ref": "#/$defs/OrderQuoteByQuantity"
        }
      ]
    },
    "FlightNumberMethod": {
      "x-lune-name": "Flight number",
      "type": "object",
      "required": [
        "flight_number",
        "departure_on"
      ],
      "properties": {
        "flight_number": {
          "type": "string",
          "description": "Flight number in either ICAO or IATA format.\n\nFor generic airfreight emissions without flight number, use Simple Shipping Method.\n"
        },
        "departure_on": {
          "type": "string",
          "description": "Departure date of the flight. The date is in UTC timezone. Dates that are over 24 hours in the future are not allowed.",
          "format": "date"
        },
        "aircraft_configuration": {
          "$ref": "#/$defs/AircraftConfiguration"
        }
      }
    },
    "GasEmissions": {
      "type": "object",
      "required": [
        "co2e"
      ],
      "properties": {
        "co2e": {
          "description": "Amount of CO₂ equivalent gas. All gas emissions are accounted here.",
          "type": "string",
          "pattern": "^[0-9]+(\\.[0-9]+)?$"
        },
        "co2": {
          "description": "Amount of CO₂ gas.",
          "type": "string",
          "pattern": "^[0-9]+(\\.[0-9]+)?$"
        },
        "methane": {
          "description": "Amount of methane gas.",
          "type": "string",
          "pattern": "^[0-9]+(\\.[0-9]+)?$"
        },
        "nitrous_oxide": {
          "description": "Amount of nitrous oxide gas.",
          "type": "string",
          "pattern": "^[0-9]+(\\.[0-9]+)?$"
        },
        "other": {
          "description": "Amount of CO₂ equivalent gas contributed by other greenhouse gases.",
          "type": "string",
          "pattern": "^[0-9]+(\\.[0-9]+)?$"
        },
        "wtw_breakdown": {
          "$ref": "#/$defs/GasWTWBreakdown"
        }
      }
    },
    "GasWTWBreakdown": {
      "type": "object",
      "required": [
        "source",
        "wtt_co2e",
        "ttw_co2e"
      ],
      "properties": {
        "source": {
          "type": "string",
          "enum": [
            "direct_from_source",
            "inferred_from_fuel",
            "global_fuel_mix_inferred"
          ]
        },
        "wtt_co2e": {
          "description": "Amount of CO₂ equivalent for the WTT (Well-To-Tank) stage. All gas emissions are accounted here.",
          "type": "string",
          "pattern": "^[0-9]+(\\.[0-9]+)?$"
        },
        "ttw_co2e": {
          "description": "Amount of CO₂ equivalent for the TTW (Tank-To-Wheel) stage. All gas emissions are accounted here.",
          "type": "string",
          "pattern": "^[0-9]+(\\.[0-9]+)?$"
        }
      }
    },
    "GeographicCoordinates": {
      "x-lune-name": "Geographic coordinates",
      "type": "object",
      "required": [
        "lat",
        "lon"
      ],
      "properties": {
        "lat": {
          "description": "Latitude in decimal degrees.",
          "type": "number",
          "minimum": -90.0,
          "maximum": 90.0
        },
        "lon": {
          "description": "Longitude in decimal degrees.",
          "type": "number",
          "minimum": -180.0,
          "maximum": 180.0
        }
      }
    },
    "HugeOilTankerSeaShippingMethod": {
      "x-lune-name": "Huge oil tanker",
      "type": "object",
      "required": [
        "vessel_type"
      ],
      "properties": {
        "vessel_type": {
          "type": "string",
          "description": "Oil tanker >200 dwkt",
          "enum": [
            "sea_oil_tanker_huge"
          ]
        },
        "fuel": {
          "type": "string",
          "enum": [
            "HFO",
            "MGO",
            "LNG"
          ]
        }
      }
    },
    "IATACode": {
      "x-lune-name": "IATA code",
      "type": "object",
      "required": [
        "code"
      ],
      "properties": {
        "code": {
          "type": "string",
          "pattern": "^[A-Z]{3}$",
          "description": "Airport IATA code. For a full list of options (https://openflights.org/data.html)"
        }
      }
    },
    "ICAOCode": {
      "type": "object",
      "x-lune-name": "ICAO code",
      "required": [
        "code"
      ],
      "properties": {
        "code": {
          "type": "string",
          "pattern": "^[A-Z]{4}[A-Z]?$",
          "description": "Airport ICAO code. For a full list of options (https://openflights.org/data.html)"
        }
      }
    },
    "IdentifiedVesselByIMOShippingMethod": {
      "description": "This method uses the vessel's IMO number emission factors when found, falling back to trade lane emission factors. The trade lane is either explicitly provided or inferred from the shipment's source and destination locations.\n",
      "oneOf": [
        {
          "type": "object",
          "x-lune-name": "Vessel IMO",
          "required": [
            "vessel_imo_number"
          ],
          "not": {
            "required": [
              "vessel_type"
            ]
          },
          "properties": {
            "vessel_imo_number": {
              "description": "The vessel's [IMO number](https://en.wikipedia.org/wiki/IMO_number) *without* the `IMO` prefix.\n",
              "type": "string",
              "pattern": "^[0-9]{7}$"
            }
          }
        },
        {
          "x-lune-name": "Container ship IMO",
          "allOf": [
            {
              "type": "object",
              "required": [
                "vessel_imo_number"
              ],
              "properties": {
                "vessel_imo_number": {
                  "description": "The vessel's [IMO number](https://en.wikipedia.org/wiki/IMO_number) *without* the `IMO` prefix.\n",
                  "type": "string",
                  "pattern": "^[0-9]{7}$"
                }
              }
            },
            {
              "$ref": "#/$defs/ContainerShippingMethodWithExtraProperties"
            }
          ]
        }
      ]
    },
    "IdentifiedVesselByNameShippingMethod": {
      "description": "This method uses the vessel's name to select emission factors, falling back to trade lane emission factors. The trade lane is either explicitly provided or inferred from the shipment's source and destination locations. If the vessel name matches multiple vessels with different IMOs or no vessel at all, the fallback is used.\n",
      "oneOf": [
        {
          "type": "object",
          "x-lune-name": "Vessel Name",
          "required": [
            "vessel_name"
          ],
          "not": {
            "required": [
              "vessel_type"
            ]
          },
          "properties": {
            "vessel_name": {
              "description": "The vessel's name, case-insensitive.\n",
              "type": "string"
            }
          }
        },
        {
          "x-lune-name": "Container ship vessel name",
          "allOf": [
            {
              "type": "object",
              "required": [
                "vessel_name"
              ],
              "properties": {
                "vessel_name": {
                  "description": "The vessel's name.\n",
                  "type": "string"
                }
              }
            },
            {
              "$ref": "#/$defs/ContainerShippingMethodWithExtraProperties"
            }
          ]
        }
      ]
    },
    "IdentifiedVesselShippingMethod": {
      "x-lune-name": "Identified sea vessel",
      "description": "This method uses either the vessel's IMO number or the vessel name in order to select an emission factor, falling back to trade lane emission factors. The trade lane is either explicitly provided or inferred from the shipment's source and destination locations.\n\nIf vessel tracking is to be used the `vessel_tracking` data needs to be provided.\n",
      "allOf": [
        {
          "oneOf": [
            {
              "$ref": "#/$defs/IdentifiedVesselByIMOShippingMethod"
            },
            {
              "$ref": "#/$defs/IdentifiedVesselByNameShippingMethod"
            }
          ]
        },
        {
          "type": "object",
          "properties": {
            "vessel_tracking": {
              "type": "object",
              "required": [
                "departure_on",
                "arrival_on"
              ],
              "properties": {
                "departure_on": {
                  "description": "The date of the departure from the source port in UTC time zone.\n\nVessel tracking is only available for departures within the past 3 months.\n",
                  "type": "string",
                  "format": "date"
                },
                "arrival_on": {
                  "description": "The date of the arrival to the destination port in UTC time zone.\n\nWe can only perform vessel tracking for shipments that finished more than\n24 hours ago.\n",
                  "type": "string",
                  "format": "date"
                },
                "mmsi_number": {
                  "description": "The vessel's MMSI number at the time of arrival to the destination port.\n\nOptional but can help with identifying the vessel to track if provided.\n",
                  "type": "string",
                  "pattern": "^[0-9]{9}$"
                }
              }
            }
          }
        }
      ]
    },
    "InferenceDetails": {
      "type": "object",
      "required": [
        "rail_type_from_route",
        "road_emission_standard",
        "road_truck_type",
        "road_fuel",
        "road_gradient",
        "road_situation",
        "cleaned_route"
      ],
      "properties": {
        "trade_lane_from_route": {
          "type": "string",
          "description": "The trade lane Lune has inferred as most likely for the shipment's route."
        },
        "rail_type_from_route": {
          "type": [
            "object",
            "null"
          ],
          "description": "Inferred rail transport type based on the shipment's route.",
          "required": [
            "rail_type",
            "source_country",
            "destination_country"
          ],
          "properties": {
            "rail_type": {
              "type": "string",
              "enum": [
                "electric_freight_train",
                "diesel_freight_train"
              ]
            },
            "source_country": {
              "type": "string"
            },
            "destination_country": {
              "type": "string"
            }
          }
        },
        "cleaned_route": {
          "type": [
            "object",
            "null"
          ],
          "description": "Routes that have been cleaned, corrected, and had missing parts inferred using a large language model",
          "required": [
            "source",
            "destination"
          ],
          "properties": {
            "source": {
              "oneOf": [
                {
                  "$ref": "#/$defs/Address"
                },
                {
                  "$ref": "#/$defs/Locode"
                },
                {
                  "$ref": "#/$defs/AirportCode"
                },
                {
                  "$ref": "#/$defs/NullEnum"
                }
              ]
            },
            "destination": {
              "oneOf": [
                {
                  "$ref": "#/$defs/Address"
                },
                {
                  "$ref": "#/$defs/Locode"
                },
                {
                  "$ref": "#/$defs/AirportCode"
                },
                {
                  "$ref": "#/$defs/NullEnum"
                }
              ]
            }
          }
        },
        "road_emission_standard": {
          "type": [
            "object",
            "null"
          ],
          "description": "The road emission standard trade has inferred via country information in the shipment's route.",
          "required": [
            "value",
            "from",
            "source_country_code",
            "destination_country_code",
            "source_region",
            "destination_region"
          ],
          "properties": {
            "value": {
              "$ref": "#/$defs/RoadEmissionStandard"
            },
            "from": {
              "type": "string",
              "enum": [
                "source",
                "destination",
                "both"
              ]
            },
            "source_country_code": {
              "description": "Inferred source country code",
              "oneOf": [
                {
                  "$ref": "#/$defs/ShippingCountryCode"
                },
                {
                  "$ref": "#/$defs/NullEnum"
                }
              ]
            },
            "destination_country_code": {
              "description": "Inferred destination country code",
              "oneOf": [
                {
                  "$ref": "#/$defs/ShippingCountryCode"
                },
                {
                  "$ref": "#/$defs/NullEnum"
                }
              ]
            },
            "source_region": {
              "description": "Inferred source country region, present when region information was used to infer the standard",
              "oneOf": [
                {
                  "$ref": "#/$defs/EmissionStandardRegion"
                },
                {
                  "$ref": "#/$defs/NullEnum"
                }
              ]
            },
            "destination_region": {
              "description": "Inferred destination country region, present when region information was used to infer the standard",
              "oneOf": [
                {
                  "$ref": "#/$defs/EmissionStandardRegion"
                },
                {
                  "$ref": "#/$defs/NullEnum"
                }
              ]
            }
          }
        },
        "road_truck_type": {
          "type": [
            "object",
            "null"
          ],
          "description": "The truck type infered via the shipment's route and shipment mass.",
          "required": [
            "value",
            "is_international_shipment"
          ],
          "properties": {
            "value": {
              "$ref": "#/$defs/RoadVehicleType"
            },
            "is_international_shipment": {
              "type": "boolean"
            }
          }
        },
        "road_fuel": {
          "type": [
            "object",
            "null"
          ],
          "description": "The road fuel has inferred via source country information in the shipment's route.",
          "required": [
            "value",
            "source_country_code",
            "source_region"
          ],
          "properties": {
            "value": {
              "description": "The vehicle's infered fuel.",
              "type": "string",
              "enum": [
                "gasoline",
                "diesel",
                "99_diesel_1_biodiesel",
                "98_diesel_2_biodiesel",
                "95_diesel_5_biodiesel",
                "93_diesel_7_biodiesel",
                "90_diesel_10_biodiesel",
                "80_diesel_20_biodiesel",
                "50_diesel_50_biodiesel",
                "ethanol_from_corn",
                "hvo_from_tallow",
                "lpg",
                "cng",
                "lng"
              ]
            },
            "source_country_code": {
              "description": "Inferred source country code",
              "oneOf": [
                {
                  "$ref": "#/$defs/ShippingCountryCode"
                },
                {
                  "$ref": "#/$defs/NullEnum"
                }
              ]
            },
            "source_region": {
              "description": "Inferred source country region, present when region information was used to infer the standard",
              "oneOf": [
                {
                  "$ref": "#/$defs/EmissionStandardRegion"
                },
                {
                  "$ref": "#/$defs/NullEnum"
                }
              ]
            }
          }
        },
        "road_gradient": {
          "type": [
            "object",
            "null"
          ],
          "description": "The road gradient inferred via elevation data for the shipment's route.",
          "required": [
            "value"
          ],
          "properties": {
            "value": {
              "description": "The vehicle's infered gradient.",
              "$ref": "#/$defs/RoadGradient"
            }
          }
        },
        "road_situation": {
          "type": [
            "object",
            "null"
          ],
          "description": "The road situation inferred via the road types and traffic conditions for the route.",
          "required": [
            "value"
          ],
          "properties": {
            "value": {
              "description": "The vehicle's infered situation.",
              "$ref": "#/$defs/RoadSituation"
            }
          }
        }
      }
    },
    "InferredVesselShippingMethod": {
      "x-lune-name": "Inferred sea vessel",
      "description": "This method uses either carrier schedules or historic AIS data to infer the vessel and consequently the route\nof the shipment.\n",
      "type": "object",
      "required": [
        "vessel_inference"
      ],
      "properties": {
        "vessel_inference": {
          "type": "object",
          "required": [
            "departure_on",
            "arrival_on",
            "carrier_name"
          ],
          "properties": {
            "departure_on": {
              "description": "The date of the departure from the source port in UTC time zone.\n\nCarrier Schedule inference can be used to infer schedules departing up to (7*24)-1 days in the future\nAIS Port Call inference can be used to infer schedules arriving up 2 days in the past.\n",
              "type": "string",
              "format": "date"
            },
            "arrival_on": {
              "description": "The date of the arrival to the destination port in UTC time zone.\n\nCarrier Schedule inference can be used to infer schedules departing up to (7*24)-1 days in the future\nAIS Port Call inference can be used to infer schedules arriving up 2 days in the past.\n",
              "type": "string",
              "format": "date"
            },
            "carrier_name": {
              "description": "The carrier used for shipment\n",
              "type": "string",
              "enum": [
                "ALIANÇA",
                "ANL",
                "CMA CGM",
                "CNC",
                "COSCO SHIPPING",
                "CROWLEY",
                "EVERGREEN",
                "GOLD STAR LINE",
                "HAIHUA SHIPPING",
                "HAMBURG SÜD",
                "HAPAG-LLOYD",
                "HMM",
                "ICL",
                "JINJIANG SHIPPING",
                "KAMBARA KISEN",
                "KOREA MARINE TRANSPORT",
                "MAERSK",
                "MATSON",
                "MCC",
                "MSC",
                "Namsung",
                "ONE",
                "OOCL",
                "PIL",
                "SEAGO",
                "SEALAND",
                "SITC",
                "SM LINE",
                "WAN HAI",
                "YANG MING",
                "ZIM"
              ]
            }
          }
        }
      }
    },
    "IsShipment": {
      "type": "boolean",
      "description": "Use to distinguish confirmed shipments from quotes. Defaults to `false` when omitted. Can be updated at any point.\n\nThis property must be formatted as RFC 3339, section 5.6 timestamp.\n\nExamples:\n* 2023-12-01T12:30:30.000Z\n* 2023-12-01T12:30:30Z\n* 2023-12-01T11:30:30+01.00\n"
    },
    "Load": {
      "description": "Provide the shipment mass using either `mass` (in grams, kilograms, tonnes, or pounds) or `containers` (in Twenty-foot Equivalent Units, or TEUs).\n\nWhen using `containers`, you can optionally include `mass` and `cargo_type` for more accurate estimates.\n",
      "oneOf": [
        {
          "type": "object",
          "x-lune-name": "Mass",
          "additionalProperties": false,
          "required": [
            "mass"
          ],
          "properties": {
            "mass": {
              "$ref": "#/$defs/Mass"
            }
          }
        },
        {
          "type": "object",
          "x-lune-name": "Containers",
          "required": [
            "containers"
          ],
          "properties": {
            "containers": {
              "type": "string",
              "pattern": "^[0-9]+(\\.[0-9]+)?$"
            },
            "cargo_type": {
              "$ref": "#/$defs/CargoType"
            },
            "mass": {
              "$ref": "#/$defs/Mass"
            }
          }
        }
      ]
    },
    "Locode": {
      "x-lune-name": "UN/LOCODE",
      "type": "object",
      "required": [
        "locode"
      ],
      "properties": {
        "locode": {
          "type": "string",
          "pattern": "^[A-Z]{2}[A-Z0-9]{3}$",
          "description": "UN LOCODE. For a full list of options (https://unece.org/trade/cefact/unlocode-code-list-country-and-territory)"
        }
      }
    },
    "LogisticsActivity": {
      "type": "object",
      "required": [
        "value",
        "unit"
      ],
      "properties": {
        "value": {
          "description": "The transport activity being measured.\n\nFor example, if you are measuring a truck transporting 4 tonnes of goods that traveled 15.25 kilometers, the activity value would be 61 t*km\n",
          "type": "string",
          "pattern": "^[0-9]+(\\.[0-9]+)?$"
        },
        "unit": {
          "description": "The units of the transport activity being measured.\n",
          "type": "string",
          "enum": [
            "t*km",
            "t"
          ]
        }
      }
    },
    "LogisticsIntensity": {
      "type": "object",
      "required": [
        "amount",
        "unit"
      ],
      "properties": {
        "amount": {
          "type": "string",
          "pattern": "^[0-9]+(\\.[0-9]+)?$"
        },
        "unit": {
          "description": "Carbon intensity in CO2 equivalents.\n\nExample: `t_per_tkm` for tonnes of CO2 equivalent per tonne-kilometre,\n",
          "type": "string",
          "enum": [
            "t_per_tkm",
            "kg_per_tkm",
            "g_per_tkm",
            "mg_per_tkm",
            "lbs_per_tkm",
            "t_per_t",
            "kg_per_t",
            "g_per_t",
            "mg_per_t",
            "lbs_per_t"
          ]
        }
      }
    },
    "LogisticsIntensityBreakdown": {
      "type": "object",
      "required": [
        "wtt",
        "ttw",
        "wtw",
        "unknown"
      ],
      "properties": {
        "wtt": {
          "$ref": "#/$defs/LogisticsIntensity"
        },
        "ttw": {
          "$ref": "#/$defs/LogisticsIntensity"
        },
        "wtw": {
          "$ref": "#/$defs/LogisticsIntensity"
        },
        "unknown": {
          "$ref": "#/$defs/LogisticsIntensity"
        }
      }
    },
    "LogisticsSiteMethod": {
      "x-lune-name": "Logistics site",
      "type": "string",
      "description": "Logistics sites are locations where goods are stored, repacked and distributed.\n",
      "enum": [
        "maritime_container_terminal",
        "maritime_container_terminal_ambient",
        "maritime_container_terminal_chilled",
        "transhipment_site_ambient",
        "transhipment_site_chilled",
        "transhipment_site_mixed",
        "storage_and_transhipment_ambient",
        "storage_and_transhipment_chilled",
        "storage_and_transhipment_mixed",
        "warehouse_ambient",
        "warehouse_chilled",
        "warehouse_mixed",
        "liquid_bulk_terminals_ambient",
        "liquid_bulk_terminals_mixed"
      ]
    },
    "Mass": {
      "type": "object",
      "required": [
        "amount",
        "unit"
      ],
      "properties": {
        "amount": {
          "type": "string",
          "pattern": "^[0-9]+(\\.[0-9]+)?$"
        },
        "unit": {
          "$ref": "#/$defs/MassUnit"
        }
      }
    },
    "MassUnit": {
      "x-lune-name": "Mass",
      "type": "string",
      "description": "Unit, `t` for tonne, `kg` for kilogram, `g` for gram, `lbs` for pound",
      "enum": [
        "g",
        "kg",
        "t",
        "lbs"
      ]
    },
    "Metadata": {
      "description": "An arbitrary dictionary (key-value pairs) to store application-specific information.\n\nLune doesn't use this information for order processing. Its purpose is for the API\nclients to be able to attach arbitrary information (to an order for example) and\nthen retrieve it.\n",
      "type": "object",
      "additionalProperties": {
        "type": "string"
      }
    },
    "MethodologyDetails": {
      "x-lune-name": "Air freight transport",
      "description": "Details about the parameters and calculations used in the methodology for estimating emissions.\n",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "flight": {
          "description": "Freight flight methodology details.",
          "type": "object",
          "required": [
            "aircraft_name",
            "aircraft_configuration",
            "aircraft_capacity_tonnes",
            "load_factor",
            "flight_fuel_consumed_tonnes",
            "distance_adjustment_factor",
            "emission_share"
          ],
          "properties": {
            "aircraft_name": {
              "description": "Name of the identified aircraft",
              "type": "string"
            },
            "aircraft_configuration": {
              "description": "Configuration of the aircraft",
              "type": "string",
              "enum": [
                "belly_freight",
                "cargo"
              ]
            },
            "aircraft_capacity_tonnes": {
              "description": "Total capacity of the aircraft.",
              "type": "object",
              "required": [
                "passenger",
                "cargo"
              ],
              "properties": {
                "passenger": {
                  "type": "number"
                },
                "cargo": {
                  "type": "number"
                }
              }
            },
            "load_factor": {
              "description": "Load factor for the provided flight. If the exact flight load factor is not\nknown a global average from IATA will be used.\n",
              "type": "object",
              "required": [
                "passenger",
                "cargo"
              ],
              "properties": {
                "passenger": {
                  "type": "number"
                },
                "cargo": {
                  "type": "number"
                }
              }
            },
            "flight_fuel_consumed_tonnes": {
              "description": "Estimate of the fuel consumed by the flight, measured in tonnes.",
              "type": "number"
            },
            "distance_adjustment_factor": {
              "description": "Value of the Distance Adjustment Factor (DAF) as specified by the GLEC.",
              "type": "number"
            },
            "emission_share": {
              "description": "Fraction (ranging from 0 to 1) of total flight leg emissions for which the shipment is responsible.\n",
              "type": "number"
            }
          }
        }
      }
    },
    "MultiLegShippingEstimateRequest": {
      "type": "object",
      "description": "Calculate an emission estimate for shipments with one or more legs.",
      "required": [
        "shipment",
        "legs"
      ],
      "properties": {
        "shipment": {
          "$ref": "#/$defs/Load"
        },
        "legs": {
          "type": "array",
          "description": "An array representing all the legs of a shipment.",
          "minItems": 1,
          "maxItems": 10,
          "items": {
            "oneOf": [
              {
                "type": "object",
                "x-lune-name": "Transportation",
                "x-lune-oneof-default": true,
                "additionalProperties": false,
                "required": [
                  "route",
                  "method"
                ],
                "properties": {
                  "route": {
                    "$ref": "#/$defs/ShippingRoute"
                  },
                  "method": {
                    "$ref": "#/$defs/ShippingMethod"
                  },
                  "country_code": {
                    "$ref": "#/$defs/ShippingCountryCode"
                  }
                }
              },
              {
                "type": "object",
                "x-lune-name": "Logistics site",
                "additionalProperties": false,
                "required": [
                  "method"
                ],
                "properties": {
                  "method": {
                    "$ref": "#/$defs/LogisticsSiteMethod"
                  }
                }
              }
            ]
          }
        },
        "route_inference": {
          "$ref": "#/$defs/RouteInference"
        },
        "name": {
          "description": "A name to reference this calculation.",
          "type": "string"
        },
        "bundle_selection": {
          "$ref": "#/$defs/BundleSelectionRequest"
        },
        "quantity_trunc": {
          "$ref": "#/$defs/QuantityTrunc"
        },
        "is_shipment": {
          "$ref": "#/$defs/IsShipment"
        },
        "shipped_at": {
          "$ref": "#/$defs/ShippedAt"
        },
        "metadata": {
          "$ref": "#/$defs/Metadata"
        },
        "idempotency_key": {
          "$ref": "#/$defs/EstimateIdempotencyKey"
        },
        "client_account": {
          "$ref": "#/$defs/EstimateClientAccountRequest"
        }
      }
    },
    "NullEnum": {
      "type": [
        "string",
        "null"
      ],
      "x-lune-name": "Null",
      "description": "The property is set to `null`.",
      "enum": [
        null
      ]
    },
    "OrderBundle": {
      "type": "object",
      "required": [
        "bundle_id",
        "bundle_name",
        "quantity",
        "unit_price",
        "gross_unit_price",
        "offset_cost",
        "insufficient_available_quantity"
      ],
      "properties": {
        "bundle_id": {
          "type": "string",
          "description": "The bundle's unique identifier"
        },
        "bundle_name": {
          "type": "string",
          "description": "The bundle's name"
        },
        "primary_image": {
          "type": "string",
          "description": "A bundle's image URL"
        },
        "quantity": {
          "type": "string",
          "pattern": "^[0-9]+(\\.[0-9]+)?$",
          "description": "Quantity for the specific bundle (tonnes CO2)"
        },
        "unit_price": {
          "type": "string",
          "description": "Bundle unit price per tonne CO2\n\nUnit: order currency\n",
          "pattern": "^[0-9]+(\\.[0-9]+)?$"
        },
        "gross_unit_price": {
          "type": "string",
          "description": "Bundle unit price per tonne CO2 inclusive of fees.\n\nUnit: order currency\n",
          "pattern": "^[0-9]+(\\.[0-9]+)?$"
        },
        "offset_cost": {
          "type": "string",
          "description": "The bundle's net offset cost being purchased.\n\nUnit: order currency\n",
          "pattern": "^[0-9]+(\\.[0-9]+)?$"
        },
        "insufficient_available_quantity": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "If true, there is no inventory necessary to fully satisfy the order for this bundle.\n"
        }
      }
    },
    "OrderQuoteBase": {
      "type": "object",
      "required": [
        "currency",
        "estimated_quantity",
        "estimated_commission",
        "estimated_offset_cost",
        "estimated_total_cost",
        "bundles"
      ],
      "properties": {
        "currency": {
          "type": "string",
          "description": "Currency code"
        },
        "estimated_quantity": {
          "type": "string",
          "pattern": "^[0-9]+(\\.[0-9]+)?$",
          "description": "Estimated quantity (tonnes CO2).\n\nMay be lower than `requested_quantity`.\n"
        },
        "estimated_offset_cost": {
          "type": "string",
          "description": "Estimated offset cost\n\nUnit: order quote currency\n",
          "pattern": "^[0-9]+(\\.[0-9]+)?$"
        },
        "estimated_total_cost": {
          "type": "string",
          "description": "Estimated total cost inclusive of Lune fees.\n\nUnit: order quote currency\n",
          "pattern": "^[0-9]+(\\.[0-9]+)?$"
        },
        "estimated_commission": {
          "type": "string",
          "description": "Estimated commission",
          "pattern": "^[0-9]+(\\.[0-9]+)?$"
        },
        "bundles": {
          "type": "array",
          "description": "Bundles included in the quote including quantity and cost breakdown.\n",
          "items": {
            "$ref": "#/$defs/OrderBundle"
          }
        }
      }
    },
    "OrderQuoteByQuantity": {
      "allOf": [
        {
          "$ref": "#/$defs/OrderQuoteBase"
        },
        {
          "type": "object",
          "required": [
            "requested_quantity",
            "requested_value"
          ],
          "properties": {
            "requested_quantity": {
              "type": "string",
              "pattern": "^[0-9]+(\\.[0-9]+)?$",
              "description": "Requested quantity for the specific bundle (tonnes CO2).\n\nrequested_quantity may be returned as part of an emission estimate response, in which case this property contains the equivalent value as the `mass` property.\n"
            },
            "requested_value": {
              "description": "Requested value of CO2 offsets to purchase in the account's currency.",
              "type": [
                "string",
                "null"
              ],
              "pattern": "^[0-9]+(\\.[0-9]+)?$"
            }
          }
        }
      ]
    },
    "PollutantBreakdown": {
      "description": "Individual pollutants that are part of the estimated emissions.\n\n* `nox` - Nitrogen oxides\n* `nmhc` - Non-methane hydrocarbons\n* `so2` - Sulfur dioxide\n* `co2` - Carbon dioxide\n* `pm` - Particulate matter\n",
      "type": "object",
      "required": [
        "nox",
        "nmhc",
        "so2",
        "co2",
        "pm"
      ],
      "properties": {
        "nox": {
          "$ref": "#/$defs/PollutantEmissions"
        },
        "nmhc": {
          "$ref": "#/$defs/PollutantEmissions"
        },
        "so2": {
          "$ref": "#/$defs/PollutantEmissions"
        },
        "co2": {
          "$ref": "#/$defs/PollutantEmissions"
        },
        "pm": {
          "$ref": "#/$defs/PollutantEmissions"
        }
      }
    },
    "PollutantEmissions": {
      "type": "object",
      "required": [
        "wtt",
        "ttw"
      ],
      "properties": {
        "wtt": {
          "$ref": "#/$defs/EstimateMass"
        },
        "ttw": {
          "$ref": "#/$defs/EstimateMass"
        }
      }
    },
    "QuantityTrunc": {
      "description": "Selects to which precision to truncate quantities specific to carbon offsetting.",
      "allOf": [
        {
          "$ref": "#/$defs/MassUnit"
        }
      ]
    },
    "RawDistance": {
      "x-lune-name": "Raw Distance",
      "type": "object",
      "required": [
        "amount",
        "unit"
      ],
      "properties": {
        "amount": {
          "type": "string",
          "pattern": "^[0-9]+(\\.[0-9]+)?$"
        },
        "unit": {
          "type": "string",
          "enum": [
            "km",
            "mi",
            "nm"
          ],
          "description": "A raw estimate of distance before GLEC required Distance Adjustment Factors are applied."
        }
      }
    },
    "ResolvedEmissionEstimateLegs": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/ResolvedShippingLegEmissionEstimate"
      }
    },
    "ResolvedShippingLegEmissionEstimate": {
      "allOf": [
        {
          "$ref": "#/$defs/BaseShippingLegEmissionEstimate"
        },
        {
          "type": "object",
          "required": [
            "method"
          ],
          "properties": {
            "method": {
              "$ref": "#/$defs/ShippingMethod"
            }
          }
        }
      ]
    },
    "RoRoSeaShippingMethod": {
      "type": "object",
      "x-lune-name": "RoRo sea shipping method",
      "required": [
        "vessel_type"
      ],
      "properties": {
        "vessel_type": {
          "type": "string",
          "enum": [
            "sea_roro"
          ]
        },
        "fuel": {
          "type": "string",
          "enum": [
            "HFO",
            "MGO"
          ]
        },
        "load": {
          "type": "string",
          "description": "Vessel sizes:\n* `freight_only` - Ro-Ro 5-10 dwkt\n* `truck_and_trailer` - Ro-Ro <5 dwkt\n* `trailer_only` - Ro-Ro 5-10 dwkt\n",
          "enum": [
            "freight_only",
            "truck_and_trailer",
            "trailer_only"
          ]
        }
      }
    },
    "RoadEmissionStandard": {
      "description": "The vehicle's emission standard for pollution.",
      "type": "string",
      "enum": [
        "euro1",
        "euro2",
        "euro3",
        "euro4",
        "euro5",
        "euro6"
      ]
    },
    "RoadEmptyRunsFactor": {
      "description": "Empty runs factor measures the proportion of a vehicle's travel that occurs without carrying any cargo.",
      "type": "number",
      "format": "float",
      "minimum": 0,
      "maximum": 1
    },
    "RoadFuel": {
      "description": "The vehicle's fuel.",
      "type": "string",
      "enum": [
        "gasoline",
        "diesel",
        "99_diesel_1_biodiesel",
        "98_diesel_2_biodiesel",
        "95_diesel_5_biodiesel",
        "93_diesel_7_biodiesel",
        "90_diesel_10_biodiesel",
        "80_diesel_20_biodiesel",
        "50_diesel_50_biodiesel",
        "ethanol_from_corn",
        "hvo_from_tallow",
        "lpg",
        "cng",
        "lng",
        "auto_detect"
      ]
    },
    "RoadGradient": {
      "description": "Describes the road's topology.",
      "type": "string",
      "enum": [
        "flat",
        "hilly",
        "mountainous"
      ]
    },
    "RoadLoadFactor": {
      "description": "Measure of how fully a vehicle is utilising its cargo capacity.",
      "type": "number",
      "format": "float",
      "minimum": 0,
      "maximum": 1
    },
    "RoadMethodologyDetails": {
      "x-lune-name": "Road transport",
      "description": "Details about the parameters and calculations used in the methodology for estimating road emissions.\n",
      "type": "object",
      "additionalProperties": false,
      "required": [
        "energy_consumption",
        "vehicle_capacity",
        "load_factor",
        "empty_runs_factor",
        "emission_standard",
        "capacity_utilisation",
        "situation",
        "gradient"
      ],
      "properties": {
        "energy_consumption": {
          "type": "object",
          "additionalProperties": false,
          "description": "The vehicle's energy consumption for the journey.\n\nThis value is a function of capacity utilisation.\n",
          "required": [
            "amount",
            "unit"
          ],
          "properties": {
            "amount": {
              "type": "string",
              "pattern": "^[0-9]+(\\.[0-9]+)?$"
            },
            "unit": {
              "type": "string",
              "enum": [
                "MJ/tkm"
              ]
            }
          }
        },
        "vehicle_capacity": {
          "description": "The vehicle's capacity in tonnes.",
          "type": "string",
          "pattern": "^[0-9]+(\\.[0-9]+)?$"
        },
        "load_factor": {
          "$ref": "#/$defs/RoadLoadFactor"
        },
        "empty_runs_factor": {
          "$ref": "#/$defs/RoadEmptyRunsFactor"
        },
        "emission_standard": {
          "$ref": "#/$defs/RoadEmissionStandard"
        },
        "capacity_utilisation": {
          "description": "The vehicle's capacity utilisation, which is a function of load factor and empty runs factor.\n",
          "type": "number",
          "format": "float",
          "minimum": 0,
          "maximum": 1
        },
        "situation": {
          "$ref": "#/$defs/RoadSituation"
        },
        "gradient": {
          "$ref": "#/$defs/RoadGradient"
        },
        "refrigeration_factor": {
          "$ref": "#/$defs/RoadRefrigerationFactor"
        }
      }
    },
    "RoadRefrigerationFactor": {
      "description": "The uplift percentage based on refrigeration and cargo capacity.\n\nFor refrigerated vans (up to 3.5 t GVW) an uplift of 15% is applied.\nFor refrigerated heavier vehicles (> 3.5 t GVW) an uplift of 12% is applied.\n",
      "type": [
        "number",
        "null"
      ]
    },
    "RoadShippingMethod": {
      "x-lune-name": "Road transport",
      "description": "Calculate emissions for road vehicles based on input parameters such as vehicle type, fuel type, load factor, empty runs factor, etc.\n",
      "type": "object",
      "additionalProperties": false,
      "required": [
        "vehicle_type",
        "fuel"
      ],
      "properties": {
        "vehicle_type": {
          "description": "Vehicle type used for shipping. Use the `truck` method to have Lune infer the type of truck most likely used\n",
          "oneOf": [
            {
              "$ref": "#/$defs/RoadVehicleType"
            },
            {
              "type": "string",
              "x-lune-name": "Inferred vehicle type",
              "enum": [
                "truck"
              ]
            }
          ]
        },
        "fuel": {
          "$ref": "#/$defs/RoadFuel"
        },
        "gradient": {
          "description": "Describes the road's topology.\n\nIf not defined, the most representative value is chosen.\n",
          "allOf": [
            {
              "$ref": "#/$defs/RoadGradient"
            }
          ]
        },
        "load_factor": {
          "description": "Measure of how fully a vehicle is utilising its cargo capacity.\n\nIf not defined, the most representative value is chosen.\n",
          "allOf": [
            {
              "$ref": "#/$defs/RoadLoadFactor"
            }
          ]
        },
        "empty_runs_factor": {
          "description": "Empty runs factor measures the proportion of a vehicle's travel that occurs without carrying any cargo.\n\nIf not defined, the most representative value is chosen.\n",
          "allOf": [
            {
              "$ref": "#/$defs/RoadEmptyRunsFactor"
            }
          ]
        },
        "situation": {
          "description": "Situation describes the driving environment and road condition.\n\nIf not defined, the most representative value is chosen.\n",
          "allOf": [
            {
              "$ref": "#/$defs/RoadSituation"
            }
          ]
        },
        "emission_standard": {
          "description": "The vehicle's emission standard for pollution.\n\nIf not defined, the most representative value is chosen.\n",
          "allOf": [
            {
              "$ref": "#/$defs/RoadEmissionStandard"
            }
          ]
        },
        "refrigerated": {
          "description": "The shipment is refrigerated or \"dry\" (not refrigerated).\nDry shipments result in lower emissions.\n",
          "allOf": [
            {
              "type": "boolean",
              "default": false
            }
          ]
        }
      }
    },
    "RoadSituation": {
      "description": "Situation describes the driving environment and road condition.",
      "type": "string",
      "enum": [
        "city_urban_freeflow",
        "motorway_urban_freeflow",
        "motorway_rural_freeflow",
        "city_urban_heavy_traffic",
        "city_urban_stop_and_go",
        "motorway_urban_heavy_traffic",
        "motorway_urban_stop_and_go",
        "motorway_rural_heavy_traffic",
        "motorway_rural_stop_and_go",
        "arterial_road_rural_freeflow",
        "arterial_road_rural_heavy_traffic",
        "arterial_road_rural_stop_and_go"
      ]
    },
    "RoadVehicleType": {
      "type": "string",
      "x-lune-name": "Vehicle type",
      "enum": [
        "truck_generic_van",
        "truck_rigid_7_5t",
        "truck_rigid_12t",
        "truck_rigid_20t",
        "truck_rigid_26t",
        "truck_rigid_32t",
        "truck_articulated_34t",
        "truck_articulated_40t",
        "truck_articulated_44t",
        "truck_articulated_60t",
        "truck_articulated_72t"
      ]
    },
    "RouteInference": {
      "description": "Specify whether to apply route transfer inference to the estimate calculation.\n",
      "type": "string",
      "enum": [
        true,
        false
      ]
    },
    "RouteInferenceDetails": {
      "type": "object",
      "x-lune-name": "Route inference",
      "required": [
        "route_inference"
      ],
      "properties": {
        "route_inference": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/RouteInferenceLegExplanation"
          }
        }
      }
    },
    "RouteInferenceExplanation": {
      "type": "object",
      "properties": {
        "snapped_source_to_known_location": {
          "description": "The provided source location was detected to be within a small radius of the closest known transfer point.\nYour route begins at this point.\n",
          "$ref": "#/$defs/CalculatedRouteLocation"
        },
        "snapped_destination_to_known_location": {
          "description": "The provided destination location was detected to be within a small radius of the closest known transfer point.\nYour route ends at this point.\n",
          "$ref": "#/$defs/CalculatedRouteLocation"
        },
        "inferred_source_transfer_point": {
          "description": "The provided source location is sufficiently far from any known transfer point.\nLune has inferred a road transportation leg from your provided source to the closest known transfer point.\n",
          "$ref": "#/$defs/CalculatedRouteLocation"
        },
        "inferred_destination_transfer_point": {
          "description": "The provided destination location is sufficiently far from any known transfer point.\nLune has inferred a road transportation leg from the closest known transfer point to your provided destination.\n",
          "$ref": "#/$defs/CalculatedRouteLocation"
        },
        "resolved_from_flight_number": {
          "type": "string",
          "description": "Lune has detected that your provided flight number has resolved into two or more legs."
        },
        "inferred_connection_leg": {
          "description": "Indicates Lune has detected that this leg's destination does not match the next leg's\nsource. Lune has therefore inferred an additional road connection leg.\n",
          "type": "string",
          "enum": [
            "missing_connection_to_next_leg",
            "overland_connection_to_next_leg"
          ]
        }
      }
    },
    "RouteInferenceLegExplanation": {
      "type": "object",
      "required": [
        "route",
        "method",
        "inference_explanation"
      ],
      "properties": {
        "route": {
          "type": "object",
          "required": [
            "source",
            "destination"
          ],
          "properties": {
            "source": {
              "$ref": "#/$defs/CalculatedRouteLocation"
            },
            "destination": {
              "$ref": "#/$defs/CalculatedRouteLocation"
            }
          }
        },
        "method": {
          "$ref": "#/$defs/ShippingMethod"
        },
        "inference_explanation": {
          "$ref": "#/$defs/RouteInferenceExplanation"
        }
      }
    },
    "SeaMethodologyDetails": {
      "x-lune-name": "Sea transport",
      "description": "Details about the parameters and calculations used in the methodology for estimating sea freight emissions.\n",
      "type": "object",
      "additionalProperties": false,
      "required": [
        "sea_voyage_fuel_consumed_tonnes",
        "voyage_time_hours",
        "voyage_emissions_per_teu",
        "vessel_cruising_speed_knots",
        "vessel_cruising_speed_source",
        "refrigeration_fuel_consumed_tonnes"
      ],
      "properties": {
        "sea_voyage_fuel_consumed_tonnes": {
          "description": "Estimate of the fuel consumed on the sea voyage, measured in tonnes.",
          "type": "number"
        },
        "vessel_cruising_speed_knots": {
          "description": "The estimated average crusising speed of the vessel, in knots.\n",
          "type": "number",
          "format": "float",
          "minimum": 0
        },
        "vessel_cruising_speed_source": {
          "description": "The source of the average vessel cruising speed. Can be either from:\n  - IMO published average for the vessel's TEU class\n  - Averaged cruising speed for the specific vessel calculated from AIS data\n",
          "type": "string",
          "enum": [
            "average_for_vessel_class",
            "ais",
            "ais_voyage_specific"
          ]
        },
        "voyage_time_hours": {
          "description": "The estimated time over which the voyage took place, in hours.\n",
          "type": "number",
          "format": "float",
          "minimum": 0
        },
        "voyage_emissions_per_teu": {
          "description": "The calculated emissions (tCO2e) per TEU.\n",
          "type": "number",
          "format": "float",
          "minimum": 0
        },
        "refrigeration_fuel_consumed_tonnes": {
          "description": "Estimate of the fuel consumed by refrigerating the shipment on the sea  voyage,\nmeasured in tonnes. Null if the leg was not refrigerated.\n",
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/$defs/NullEnum"
            }
          ]
        }
      }
    },
    "SeaShippingMethod": {
      "oneOf": [
        {
          "$ref": "#/$defs/VariableFuelSeaShippingMethod"
        },
        {
          "$ref": "#/$defs/VariableFuelVariableLoadSeaShippingMethod"
        },
        {
          "$ref": "#/$defs/RoRoSeaShippingMethod"
        },
        {
          "$ref": "#/$defs/HugeOilTankerSeaShippingMethod"
        }
      ]
    },
    "ShipmentConversionMethod": {
      "description": "* `user_provided_cargo_type` – `cargo_type` was provided and we used it to perform\n  the conversion\n* `average_cargo_type` – `cargo_type` was not provided and we assumed `average` when\n  converting\n",
      "type": "string",
      "enum": [
        "user_provided_cargo_type",
        "average_cargo_type"
      ]
    },
    "ShippedAt": {
      "type": "string",
      "format": "date-time",
      "description": "Provide the shipment date and time, as RFC 3339 timestamp.\n\nIf omitted, the property defaults to the time of request. Used only for analytics, with no impact on the actual estimate calculation.\n"
    },
    "ShippingCountryCode": {
      "type": "string",
      "enum": [
        "AFG",
        "ALA",
        "ALB",
        "DZA",
        "ASM",
        "AND",
        "AGO",
        "AIA",
        "ATA",
        "ATG",
        "ARG",
        "ARM",
        "ABW",
        "AUS",
        "AUT",
        "AZE",
        "BHS",
        "BHR",
        "BGD",
        "BRB",
        "BLR",
        "BEL",
        "BLZ",
        "BEN",
        "BMU",
        "BTN",
        "BOL",
        "BES",
        "BIH",
        "BWA",
        "BVT",
        "BRA",
        "IOT",
        "BRN",
        "BGR",
        "BFA",
        "BDI",
        "CPV",
        "KHM",
        "CMR",
        "CAN",
        "CYM",
        "CAF",
        "TCD",
        "CHL",
        "CHN",
        "CXR",
        "CCK",
        "COL",
        "COM",
        "COG",
        "COD",
        "COK",
        "CRI",
        "CIV",
        "HRV",
        "CUB",
        "CUW",
        "CYP",
        "CZE",
        "DNK",
        "DJI",
        "DMA",
        "DOM",
        "ECU",
        "EGY",
        "SLV",
        "GNQ",
        "ERI",
        "EST",
        "SWZ",
        "ETH",
        "FLK",
        "FRO",
        "FJI",
        "FIN",
        "FRA",
        "GUF",
        "PYF",
        "ATF",
        "GAB",
        "GMB",
        "GEO",
        "DEU",
        "GHA",
        "GIB",
        "GRC",
        "GRL",
        "GRD",
        "GLP",
        "GUM",
        "GTM",
        "GGY",
        "GIN",
        "GNB",
        "GUY",
        "HTI",
        "HMD",
        "VAT",
        "HND",
        "HKG",
        "HUN",
        "ISL",
        "IND",
        "IDN",
        "IRN",
        "IRQ",
        "IRL",
        "IMN",
        "ISR",
        "ITA",
        "JAM",
        "JPN",
        "JEY",
        "JOR",
        "KAZ",
        "KEN",
        "KIR",
        "PRK",
        "KOR",
        "XKX",
        "KWT",
        "KGZ",
        "LAO",
        "LVA",
        "LBN",
        "LSO",
        "LBR",
        "LBY",
        "LIE",
        "LTU",
        "LUX",
        "MAC",
        "MKD",
        "MDG",
        "MWI",
        "MYS",
        "MDV",
        "MLI",
        "MLT",
        "MHL",
        "MTQ",
        "MRT",
        "MUS",
        "MYT",
        "MEX",
        "FSM",
        "MDA",
        "MCO",
        "MNG",
        "MNE",
        "MSR",
        "MAR",
        "MOZ",
        "MMR",
        "NAM",
        "NRU",
        "NPL",
        "NLD",
        "NCL",
        "NZL",
        "NIC",
        "NER",
        "NGA",
        "NIU",
        "NFK",
        "MNP",
        "NOR",
        "OMN",
        "PAK",
        "PLW",
        "PSE",
        "PAN",
        "PNG",
        "PRY",
        "PER",
        "PHL",
        "PCN",
        "POL",
        "PRT",
        "PRI",
        "QAT",
        "REU",
        "ROU",
        "RUS",
        "RWA",
        "BLM",
        "SHN",
        "KNA",
        "LCA",
        "MAF",
        "SPM",
        "VCT",
        "WSM",
        "SMR",
        "STP",
        "SAU",
        "SEN",
        "SRB",
        "SYC",
        "SLE",
        "SGP",
        "SXM",
        "SVK",
        "SVN",
        "SLB",
        "SOM",
        "ZAF",
        "SGS",
        "SSD",
        "ESP",
        "LKA",
        "SDN",
        "SUR",
        "SJM",
        "SWE",
        "CHE",
        "SYR",
        "TWN",
        "TJK",
        "TZA",
        "THA",
        "TLS",
        "TGO",
        "TKL",
        "TON",
        "TTO",
        "TUN",
        "TUR",
        "TKM",
        "TCA",
        "TUV",
        "UGA",
        "UKR",
        "ARE",
        "GBR",
        "USA",
        "UMI",
        "URY",
        "UZB",
        "VUT",
        "VEN",
        "VNM",
        "VGB",
        "VIR",
        "WLF",
        "ESH",
        "YEM",
        "ZMB",
        "ZWE"
      ],
      "description": "The three-letter ISO country code where the shipment occurs. See [ISO 3166-1 alpha-3](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3) codes for the full list of valid country codes.\n\nFor multi-country shipments, use the country covering the largest portion of the route.\n"
    },
    "ShippingEmissionEstimateResponse": {
      "description": "A logistics emission estimate result including a quote",
      "allOf": [
        {
          "$ref": "#/$defs/EmissionEstimateWithWTWBreakdown"
        },
        {
          "$ref": "#/$defs/EmissionEstimateResponseQuoteAndId"
        }
      ]
    },
    "ShippingLegEmissionEstimate": {
      "allOf": [
        {
          "$ref": "#/$defs/BaseShippingLegEmissionEstimate"
        },
        {
          "type": "object",
          "required": [
            "converted_shipment",
            "shipment_conversion_method",
            "resolved_legs"
          ],
          "properties": {
            "converted_shipment": {
              "description": "The shipment after conversion to the emission factor unit (mass to/from TEU).\n\n`null` if no conversion was necessary.\n",
              "oneOf": [
                {
                  "$ref": "#/$defs/ConvertedShipment"
                },
                {
                  "$ref": "#/$defs/NullEnum"
                }
              ]
            },
            "shipment_conversion_method": {
              "description": "The method we used to convert the shipment to the emission factor unit.\n\n`null` if no conversion was necessary.\n",
              "oneOf": [
                {
                  "$ref": "#/$defs/ShipmentConversionMethod"
                },
                {
                  "$ref": "#/$defs/NullEnum"
                }
              ]
            },
            "resolved_legs": {
              "description": "If the input shipping method results in multiple legs being detected, each\nleg will be calculated and shown separately.\n",
              "oneOf": [
                {
                  "$ref": "#/$defs/ResolvedEmissionEstimateLegs"
                },
                {
                  "$ref": "#/$defs/NullEnum"
                }
              ]
            }
          }
        }
      ]
    },
    "ShippingMethod": {
      "oneOf": [
        {
          "$ref": "#/$defs/SimpleShippingMethod"
        },
        {
          "$ref": "#/$defs/SimpleSeaShippingMethod"
        },
        {
          "$ref": "#/$defs/AirShippingMethod"
        },
        {
          "$ref": "#/$defs/SeaShippingMethod"
        },
        {
          "$ref": "#/$defs/ContainerShippingMethod"
        },
        {
          "$ref": "#/$defs/IdentifiedVesselShippingMethod"
        },
        {
          "$ref": "#/$defs/InferredVesselShippingMethod"
        },
        {
          "$ref": "#/$defs/RoadShippingMethod"
        }
      ]
    },
    "ShippingRoute": {
      "description": "Provide the route of the leg using either the total `distance` travelled, or the `source` and `destination` location.\n\nIf shipping between unusual or remote locations, provide `distance` directly for best results\n",
      "oneOf": [
        {
          "$ref": "#/$defs/Distance"
        },
        {
          "$ref": "#/$defs/ShippingSourceDestination"
        }
      ]
    },
    "ShippingSourceDestination": {
      "type": "object",
      "x-lune-name": "Source and destination",
      "required": [
        "source",
        "destination"
      ],
      "properties": {
        "source": {
          "oneOf": [
            {
              "$ref": "#/$defs/Address"
            },
            {
              "$ref": "#/$defs/GeographicCoordinates"
            },
            {
              "$ref": "#/$defs/Locode"
            },
            {
              "$ref": "#/$defs/AirportCode"
            }
          ]
        },
        "destination": {
          "oneOf": [
            {
              "$ref": "#/$defs/Address"
            },
            {
              "$ref": "#/$defs/GeographicCoordinates"
            },
            {
              "$ref": "#/$defs/Locode"
            },
            {
              "$ref": "#/$defs/AirportCode"
            }
          ]
        },
        "transit_corridor": {
          "$ref": "#/$defs/TransitCorridor",
          "description": "Transit corridor to force the route through for sea shipments.\n\nOnly applicable to sea shipments.\n\nMutually exclusive with restricted_transit_corridors.\n"
        },
        "restricted_transit_corridors": {
          "type": "array",
          "description": "Transit corridors that should be avoided for sea shipments. This is used to improve the accuracy of the estimate.\nIf not provided, no corridors are restricted.\n\nOnly applicable to sea shipments.\n\nMutually exclusive with transit_corridor.\n",
          "items": {
            "$ref": "#/$defs/TransitCorridor"
          }
        }
      },
      "not": {
        "required": [
          "transit_corridor",
          "restricted_transit_corridors"
        ]
      }
    },
    "SimpleSeaShippingMethod": {
      "x-lune-name": "Single property transport method (Sea only)",
      "description": "For sea transport, values follow the pattern:\n\n`{vessel_type}_{vessel_carrying_capacity}_{vessel_fuel}`\n\nThe carrying capacity of the vessel is provided in deadweight kilotonnes. It is identified using `_Xdwkt` or `_over_Xdwkt` suffixes which indicate the vessels's upper or lower bounds respectively.\n",
      "type": "string",
      "enum": [
        "sea_bulk_carrier_10dwkt_hfo",
        "sea_bulk_carrier_10dwkt_vlsfo",
        "sea_bulk_carrier_10dwkt_mdo",
        "sea_bulk_carrier_35dwkt_hfo",
        "sea_bulk_carrier_35dwkt_vlsfo",
        "sea_bulk_carrier_35dwkt_mdo",
        "sea_bulk_carrier_60dwkt_hfo",
        "sea_bulk_carrier_60dwkt_vlsfo",
        "sea_bulk_carrier_60dwkt_mdo",
        "sea_bulk_carrier_100dwkt_hfo",
        "sea_bulk_carrier_100dwkt_vlsfo",
        "sea_bulk_carrier_100dwkt_mdo",
        "sea_bulk_carrier_200dwkt_hfo",
        "sea_bulk_carrier_200dwkt_vlsfo",
        "sea_bulk_carrier_200dwkt_mdo",
        "sea_bulk_carrier_over_200dwkt_hfo",
        "sea_bulk_carrier_over_200dwkt_vlsfo",
        "sea_bulk_carrier_over_200dwkt_mdo",
        "sea_chemical_tanker_5dwkt_hfo",
        "sea_chemical_tanker_5dwkt_vlsfo",
        "sea_chemical_tanker_5dwkt_mdo",
        "sea_chemical_tanker_10dwkt_hfo",
        "sea_chemical_tanker_10dwkt_vlsfo",
        "sea_chemical_tanker_10dwkt_mdo",
        "sea_chemical_tanker_20dwkt_hfo",
        "sea_chemical_tanker_20dwkt_vlsfo",
        "sea_chemical_tanker_20dwkt_mdo",
        "sea_chemical_tanker_40dwkt_hfo",
        "sea_chemical_tanker_40dwkt_vlsfo",
        "sea_chemical_tanker_40dwkt_mdo",
        "sea_chemical_tanker_over_40dwkt_hfo",
        "sea_chemical_tanker_over_40dwkt_vlsfo",
        "sea_chemical_tanker_over_40dwkt_mdo",
        "sea_general_cargo_5dwkt_hfo",
        "sea_general_cargo_5dwkt_vlsfo",
        "sea_general_cargo_5dwkt_mdo",
        "sea_general_cargo_10dwkt_hfo",
        "sea_general_cargo_10dwkt_vlsfo",
        "sea_general_cargo_10dwkt_mdo",
        "sea_general_cargo_20dwkt_hfo",
        "sea_general_cargo_20dwkt_vlsfo",
        "sea_general_cargo_20dwkt_mdo",
        "sea_general_cargo_over_20dwkt_hfo",
        "sea_general_cargo_over_20dwkt_vlsfo",
        "sea_general_cargo_over_20dwkt_mdo",
        "sea_liquefied_gas_tanker_50dwkt_hfo",
        "sea_liquefied_gas_tanker_50dwkt_vlsfo",
        "sea_liquefied_gas_tanker_50dwkt_mdo",
        "sea_liquefied_gas_tanker_100dwkt_hfo",
        "sea_liquefied_gas_tanker_100dwkt_vlsfo",
        "sea_liquefied_gas_tanker_100dwkt_mdo",
        "sea_liquefied_gas_tanker_200dwkt_hfo",
        "sea_liquefied_gas_tanker_200dwkt_vlsfo",
        "sea_liquefied_gas_tanker_200dwkt_mdo",
        "sea_liquefied_gas_tanker_over_200dwkt_hfo",
        "sea_liquefied_gas_tanker_over_200dwkt_vlsfo",
        "sea_liquefied_gas_tanker_over_200dwkt_mdo",
        "sea_oil_tanker_5dwkt_hfo",
        "sea_oil_tanker_5dwkt_vlsfo",
        "sea_oil_tanker_5dwkt_mdo",
        "sea_oil_tanker_10dwkt_hfo",
        "sea_oil_tanker_10dwkt_vlsfo",
        "sea_oil_tanker_10dwkt_mdo",
        "sea_oil_tanker_20dwkt_hfo",
        "sea_oil_tanker_20dwkt_vlsfo",
        "sea_oil_tanker_20dwkt_mdo",
        "sea_oil_tanker_60dwkt_hfo",
        "sea_oil_tanker_60dwkt_vlsfo",
        "sea_oil_tanker_60dwkt_mdo",
        "sea_oil_tanker_80dwkt_hfo",
        "sea_oil_tanker_80dwkt_vlsfo",
        "sea_oil_tanker_80dwkt_mdo",
        "sea_oil_tanker_112dwkt_hfo",
        "sea_oil_tanker_112dwkt_vlsfo",
        "sea_oil_tanker_112dwkt_mdo",
        "sea_oil_tanker_200dwkt_hfo",
        "sea_oil_tanker_200dwkt_vlsfo",
        "sea_oil_tanker_200dwkt_mdo",
        "sea_oil_tanker_over_200dwkt_hfo",
        "sea_oil_tanker_over_200dwkt_vlsfo",
        "sea_oil_tanker_over_200dwkt_mdo",
        "sea_other_liquids_tanker_1dwkt_hfo",
        "sea_other_liquids_tanker_1dwkt_vlsfo",
        "sea_other_liquids_tanker_1dwkt_mdo",
        "sea_other_liquids_tanker_over_1dwkt_hfo",
        "sea_other_liquids_tanker_over_1dwkt_vlsfo",
        "sea_other_liquids_tanker_over_1dwkt_mdo",
        "sea_ropax_2dwkt_hfo",
        "sea_ropax_2dwkt_vlsfo",
        "sea_ropax_2dwkt_mdo",
        "sea_ropax_5dwkt_hfo",
        "sea_ropax_5dwkt_vlsfo",
        "sea_ropax_5dwkt_mdo",
        "sea_ropax_10dwkt_hfo",
        "sea_ropax_10dwkt_vlsfo",
        "sea_ropax_10dwkt_mdo",
        "sea_ropax_20dwkt_hfo",
        "sea_ropax_20dwkt_vlsfo",
        "sea_ropax_20dwkt_mdo",
        "sea_ropax_over_20dwkt_hfo",
        "sea_ropax_over_20dwkt_vlsfo",
        "sea_ropax_over_20dwkt_mdo",
        "sea_refrigerated_bulk_carrier_2dwkt_hfo",
        "sea_refrigerated_bulk_carrier_2dwkt_vlsfo",
        "sea_refrigerated_bulk_carrier_2dwkt_mdo",
        "sea_refrigerated_bulk_carrier_6dwkt_hfo",
        "sea_refrigerated_bulk_carrier_6dwkt_vlsfo",
        "sea_refrigerated_bulk_carrier_6dwkt_mdo",
        "sea_refrigerated_bulk_carrier_10dwkt_hfo",
        "sea_refrigerated_bulk_carrier_10dwkt_vlsfo",
        "sea_refrigerated_bulk_carrier_10dwkt_mdo",
        "sea_refrigerated_bulk_carrier_over_10dwkt_hfo",
        "sea_refrigerated_bulk_carrier_over_10dwkt_vlsfo",
        "sea_refrigerated_bulk_carrier_over_10dwkt_mdo",
        "sea_roro_5dwkt_hfo",
        "sea_roro_5dwkt_vlsfo",
        "sea_roro_5dwkt_mdo",
        "sea_roro_10dwkt_hfo",
        "sea_roro_10dwkt_vlsfo",
        "sea_roro_10dwkt_mdo",
        "sea_roro_15dwkt_hfo",
        "sea_roro_15dwkt_vlsfo",
        "sea_roro_15dwkt_mdo",
        "sea_roro_over_15dwkt_hfo",
        "sea_roro_over_15dwkt_vlsfo",
        "sea_roro_over_15dwkt_mdo",
        "sea_vehicle_carrier_30dwkt_hfo",
        "sea_vehicle_carrier_30dwkt_vlsfo",
        "sea_vehicle_carrier_30dwkt_mdo",
        "sea_vehicle_carrier_50dwkt_hfo",
        "sea_vehicle_carrier_50dwkt_vlsfo",
        "sea_vehicle_carrier_50dwkt_mdo",
        "sea_vehicle_carrier_over_50dwkt_hfo",
        "sea_vehicle_carrier_over_50dwkt_vlsfo",
        "sea_vehicle_carrier_over_50dwkt_mdo"
      ]
    },
    "SimpleShippingMethod": {
      "x-lune-name": "Single property transport method",
      "type": "string",
      "description": "Provide a single enum value to describe the transport method. For each transport method, enums follow a consistent pattern, as described below.\n\nNote: This input only applies for inland waterways, road, rail, and air transport. For sea transport, please use the Single property transport method (Sea only).\n\n# Inland waterways\nFor inland waterways, values follow the pattern:\n\n`inland_waterway_{vessel_type}_{size}`\n\nOnly the `vessel_type` is required.\n\nThe full list of available enums is provided below. The following section lists only those enums that include a size component, with each size mapped to its corresponding vessel dimensions.\n\n* `inland_waterway_motor_vessel_extra_small`: Under 50 m (650 t)\n* `inland_waterway_motor_vessel_small`: 50–80 m (650–1000 t)\n* `inland_waterway_motor_vessel_medium`: 85–110 m (1000–2000 t)\n* `inland_waterway_motor_vessel_large`: 135 m (2000–3000 t)\n* `inland_waterway_coupled_convoy`: 163–185 m\n* `inland_waterway_pushed_convoy_small`: 2 barges\n* `inland_waterway_pushed_convoy_medium`: 4–5 barges\n* `inland_waterway_pushed_convoy_large`: 6 barges\n* `inland_waterway_container_vessel_medium`: 110 m\n* `inland_waterway_container_vessel_large`: 135 m\n\n# Road transport\nFor road transport, values follow the pattern:\n\n`truck_{vehicle_type}_{vehicle_size}_{fuel}_{load_characteristics}`\n\nOnly the `vehicle_type` is required. If `vehicle_size`, `fuel`, or `load_characteristics` are omitted, they default to `generic`, `diesel`, and `average` respectively.\n\nTo indicate a North American vehicle, use the prefix `truck_na` instead of `truck`.\n\nThe full list of available enums is provided below. The following section includes only those enums that specify a vehicle size, with each size mapped to its corresponding Gross Vehicle Weight (GVW). In some cases, size is included directly in the property name (e.g., truck_rigid_7_5t).\n\n* `truck_generic_van`: Under 3.5 t GVW\n* `truck_generic_urban`: 3.5-7.5 t GVW\n* `truck_generic_mgv`: 7.5-20 t GVW\n* `truck_generic_hgv`: More than 20 t GVW\n\n# Rail transport\nFor rail transport, values follow the pattern:\n\n`{train_type}_{region}_{load_characteristics}`\n\nOnly `train_type` (either `diesel_freight_train` or electric_freight_train) is required.\n\nThe region value is used to request either an EU or US emission factor. If omitted, an EU emission factor is used. When load characteristics are omitted, `average` is assumed.\n\n# Air transport\nFor air transport, Lune supports one of three values:\n\n* `cargo_plane`: Indicating a full freighter plane.\n* `passenger_plane`: Indicating the plane only contains belly freight.\n* `plane`: When the freight capacity of the plane is unknown. This value uses a weighted average of cargo and passenger planes.\n",
      "enum": [
        "inland_waterway_motor_vessel_extra_small",
        "inland_waterway_motor_vessel_small",
        "inland_waterway_motor_vessel_medium",
        "inland_waterway_motor_vessel_large",
        "inland_waterway_coupled_convoy",
        "inland_waterway_pushed_convoy_small",
        "inland_waterway_pushed_convoy_medium",
        "inland_waterway_pushed_convoy_large",
        "inland_waterway_tanker",
        "inland_waterway_container_vessel_medium",
        "inland_waterway_container_vessel_large",
        "inland_waterway_container_vessel_convoy",
        "diesel_freight_train",
        "electric_freight_train",
        "rail",
        "diesel_freight_train_us_average",
        "diesel_freight_train_eu_average",
        "diesel_freight_train_eu_container",
        "diesel_freight_train_eu_cars",
        "diesel_freight_train_eu_chemicals",
        "diesel_freight_train_eu_coal_steel",
        "diesel_freight_train_eu_building_materials",
        "diesel_freight_train_eu_manufactured_products",
        "diesel_freight_train_eu_cereals",
        "diesel_freight_train_eu_truck_and_trailer",
        "diesel_freight_train_eu_trailer_only",
        "electric_freight_train_eu_average",
        "electric_freight_train_eu_container",
        "electric_freight_train_eu_cars",
        "electric_freight_train_eu_chemicals",
        "electric_freight_train_eu_coal_steel",
        "electric_freight_train_eu_building_materials",
        "electric_freight_train_eu_manufactured_products",
        "electric_freight_train_eu_cereals",
        "electric_freight_train_eu_truck_and_trailer",
        "electric_freight_train_eu_trailer_only",
        "diesel_truck",
        "diesel_truck_refrigerated",
        "truck_generic_van",
        "truck_generic_urban",
        "truck_generic_mgv",
        "truck_generic_hgv",
        "truck_rigid_7_5t",
        "truck_rigid_12t",
        "truck_rigid_20t",
        "truck_rigid_26t",
        "truck_rigid_32t",
        "truck_articulated_34t",
        "truck_articulated_40t",
        "truck_articulated_44t",
        "truck_articulated_60t",
        "truck_articulated_72t",
        "truck_generic_van_petrol",
        "truck_generic_van_cng",
        "truck_generic_van_lpg",
        "truck_rigid_7_5t_cng",
        "truck_rigid_12t_cng",
        "truck_rigid_20t_cng",
        "truck_rigid_26t_cng",
        "truck_rigid_26t_lng",
        "truck_articulated_44t_light_load",
        "truck_articulated_44t_heavy_load",
        "truck_articulated_44t_container",
        "truck_articulated_60t_heavy_load",
        "truck_articulated_60t_container",
        "truck_articulated_72t_heavy_load",
        "truck_articulated_72t_container",
        "truck_articulated_40t_si_engine_lng_container",
        "truck_articulated_40t_si_engine_cng",
        "truck_articulated_40t_si_engine_bio_lng",
        "truck_articulated_40t_si_engine_cng_container",
        "truck_articulated_40t_si_engine_bio_lng_container",
        "truck_articulated_40t_hpdi_lng_diesel",
        "truck_articulated_40t_hpdi_cng_diesel",
        "truck_articulated_40t_hpdi_bio_lng_diesel",
        "truck_generic_van_electric",
        "truck_rigid_7_5t_electric",
        "truck_rigid_7_5t_electric_light_load",
        "truck_rigid_12t_electric",
        "truck_rigid_12t_electric_light_load",
        "truck_rigid_20t_electric",
        "truck_rigid_20t_electric_light_load",
        "truck_rigid_40t_electric",
        "truck_rigid_40t_electric_light_load",
        "truck_generic_van_refrigerated",
        "truck_generic_urban_refrigerated",
        "truck_generic_mgv_refrigerated",
        "truck_generic_hgv_refrigerated",
        "truck_rigid_7_5t_refrigerated",
        "truck_rigid_12t_refrigerated",
        "truck_rigid_20t_refrigerated",
        "truck_rigid_26t_refrigerated",
        "truck_rigid_32t_refrigerated",
        "truck_articulated_34t_refrigerated",
        "truck_articulated_40t_refrigerated",
        "truck_articulated_44t_refrigerated",
        "truck_articulated_60t_refrigerated",
        "truck_articulated_72t_refrigerated",
        "truck_generic_van_petrol_refrigerated",
        "truck_generic_van_cng_refrigerated",
        "truck_generic_van_lpg_refrigerated",
        "truck_rigid_7_5t_cng_refrigerated",
        "truck_rigid_12t_cng_refrigerated",
        "truck_rigid_20t_cng_refrigerated",
        "truck_rigid_26t_cng_refrigerated",
        "truck_rigid_26t_lng_refrigerated",
        "truck_articulated_44t_light_load_refrigerated",
        "truck_articulated_44t_heavy_load_refrigerated",
        "truck_articulated_44t_container_refrigerated",
        "truck_articulated_60t_heavy_load_refrigerated",
        "truck_articulated_60t_container_refrigerated",
        "truck_articulated_72t_heavy_load_refrigerated",
        "truck_articulated_72t_container_refrigerated",
        "truck_articulated_40t_si_engine_lng_container_refrigerated",
        "truck_articulated_40t_si_engine_cng_refrigerated",
        "truck_articulated_40t_si_engine_bio_lng_refrigerated",
        "truck_articulated_40t_si_engine_cng_container_refrigerated",
        "truck_articulated_40t_si_engine_bio_lng_container_refrigerated",
        "truck_articulated_40t_hpdi_lng_diesel_refrigerated",
        "truck_articulated_40t_hpdi_cng_diesel_refrigerated",
        "truck_articulated_40t_hpdi_bio_lng_diesel_refrigerated",
        "truck_generic_van_electric_refrigerated",
        "truck_rigid_7_5t_electric_refrigerated",
        "truck_rigid_7_5t_electric_light_load_refrigerated",
        "truck_rigid_12t_electric_refrigerated",
        "truck_rigid_12t_electric_light_load_refrigerated",
        "truck_rigid_20t_electric_refrigerated",
        "truck_rigid_20t_electric_light_load_refrigerated",
        "truck_rigid_40t_electric_refrigerated",
        "truck_rigid_40t_electric_light_load_refrigerated",
        "truck_na_van",
        "truck_na_general",
        "truck_na_auto_carrier",
        "truck_na_dray",
        "truck_na_expedited",
        "truck_na_flatbed",
        "truck_na_heavy_bulk",
        "truck_na_dry_van_ltl",
        "truck_na_dry_van_tl",
        "truck_na_mixed",
        "truck_na_moving",
        "truck_na_package",
        "truck_na_refrigerated",
        "truck_na_specialized",
        "truck_na_tanker",
        "plane",
        "passenger_plane",
        "cargo_plane"
      ]
    },
    "TransitCorridor": {
      "description": "The transit corridor used for sea shipments. This is used to improve the accuracy of the estimate.\nIf not provided, the shortest route is calculated.\n\nOnly applicable to sea shipments.\n",
      "type": "string",
      "enum": [
        "panama",
        "suez",
        "cape_of_good_hope",
        "northwest_passage",
        "northeast_passage",
        "cape_horn"
      ]
    },
    "Url": {
      "type": "string",
      "format": "https-url",
      "description": "An HTTPS URL.\n\nThe URL must match the following regular expression: `^https:\\/\\/[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_\\+.~#?&\\/\\/=]*)$`\n"
    },
    "VariableFuelSeaShippingMethod": {
      "x-lune-name": "Variable fuel sea shipping",
      "type": "object",
      "required": [
        "vessel_type"
      ],
      "properties": {
        "vessel_type": {
          "type": "string",
          "description": "Vessel sizes:\n* `sea_oil_tanker_*`:\n  * `small` – <5 dwkt\n  * `medium` – 20-60 dwkt\n  * `large` – 112-200 dwkt\n* `sea_general_cargo_*`:\n  * `small` – 5-10 dwkt\n  * `large` – 10-20 dwkt\n* `sea_bulk_carrier_small` - <10 dwkt\n* `sea_ropax` – 2-5 dwkt\n",
          "enum": [
            "sea_oil_tanker_small",
            "sea_oil_tanker_medium",
            "sea_oil_tanker_large",
            "sea_general_cargo_small",
            "sea_general_cargo_large",
            "sea_bulk_carrier_small",
            "sea_ropax"
          ]
        },
        "fuel": {
          "type": "string",
          "enum": [
            "HFO",
            "MGO"
          ]
        }
      }
    },
    "VariableFuelVariableLoadSeaShippingMethod": {
      "x-lune-name": "Variable fuel, variable load sea shipping",
      "type": "object",
      "required": [
        "vessel_type"
      ],
      "properties": {
        "vessel_type": {
          "type": "string",
          "description": "Vessel sizes:\n* `sea_bulk_carrier_*`\n  * `medium` – 60-100 dwkt\n  * `large` – 100-200 dwkt\n",
          "enum": [
            "sea_bulk_carrier_medium",
            "sea_bulk_carrier_large"
          ]
        },
        "fuel": {
          "type": "string",
          "enum": [
            "HFO",
            "MGO"
          ]
        },
        "load": {
          "type": "string",
          "enum": [
            "average",
            "heavy"
          ]
        }
      }
    },
    "VesselInferenceMethod": {
      "oneOf": [
        {
          "$ref": "#/$defs/VesselInferenceMethodError"
        },
        {
          "$ref": "#/$defs/VesselInferenceMethodDetails"
        }
      ]
    },
    "VesselInferenceMethodDetails": {
      "x-lune-name": "Vessel inferred successfully",
      "type": "object",
      "required": [
        "method",
        "details"
      ],
      "properties": {
        "method": {
          "type": "string",
          "enum": [
            "carrier_schedules",
            "ais_port_calls"
          ],
          "description": "* `carrier_schedules` – Vessel ID inferred using carrier schedules\n* `ais_port_calls` – Vessel ID inferred using historic AIS data\n"
        },
        "details": {
          "description": "Describes details of vessel inference method\n",
          "type": "string"
        }
      }
    },
    "VesselInferenceMethodError": {
      "x-lune-name": "Failed to infer the vessel",
      "type": "object",
      "required": [
        "error"
      ],
      "properties": {
        "error": {
          "description": "Describes details of any errors resulting from vessel inference\n",
          "type": "string"
        }
      }
    },
    "WTWBreakdown": {
      "type": "object",
      "required": [
        "wtt",
        "ttw",
        "unknown"
      ],
      "properties": {
        "wtt": {
          "$ref": "#/$defs/EstimateMass"
        },
        "ttw": {
          "$ref": "#/$defs/EstimateMass"
        },
        "unknown": {
          "$ref": "#/$defs/EstimateMass"
        }
      }
    }
  }
}