{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/fedex/json-schema/fedex-edt-details-request-vo-schema.json",
  "title": "EdtDetailsRequestVO",
  "x-generated": "2026-11-05",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/fedex-dutiestaxes-api-openapi.yml#/components/schemas/EdtDetailsRequestVO",
  "required": [
    "commodities",
    "recipient",
    "shipper"
  ],
  "type": "object",
  "properties": {
    "shipper": {
      "$ref": "#/$defs/Shipper"
    },
    "recipient": {
      "$ref": "#/$defs/Recipient"
    },
    "commodities": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Commodities"
      }
    },
    "shipmentPurpose": {
      "type": "string",
      "description": "The intended purpose of the shipment",
      "enum": [
        "DOCUMENTS",
        "FOR_RESALE",
        "NOT_FOR_RESALE",
        "GIFT",
        "RETURN"
      ]
    },
    "serviceType": {
      "type": "string",
      "description": "The FedEx shipping service type."
    },
    "shippingCost": {
      "$ref": "#/$defs/ShippingCost"
    },
    "preferredCurrency": {
      "type": "string",
      "description": "Preferred currency for estimated duties and taxes."
    }
  },
  "$defs": {
    "Commodities": {
      "required": [
        "description",
        "quantity",
        "unitPrice"
      ],
      "type": "object",
      "properties": {
        "commodityName": {
          "maxLength": 256,
          "type": "string",
          "description": "The name of the commodity requested for duty and tax estimation."
        },
        "countryOfManufacture": {
          "maxLength": 2,
          "type": "string",
          "description": "The country where the commodity was manufactured."
        },
        "description": {
          "maxLength": 512,
          "type": "string",
          "description": "A description of the commodity."
        },
        "harmonizedCode": {
          "type": "string",
          "description": "The Harmonized System code for the commodity."
        },
        "quantity": {
          "type": "integer",
          "description": "The number of units of this commodity.",
          "format": "int32"
        },
        "unitPrice": {
          "$ref": "#/$defs/UnitPrice"
        }
      },
      "description": "List of items to estimate"
    },
    "Recipient": {
      "required": [
        "countryCode"
      ],
      "type": "object",
      "properties": {
        "countryCode": {
          "type": "string",
          "description": "The two-letter code used to identify a country."
        },
        "postalCode": {
          "type": "string",
          "description": "The postal or ZIP code"
        },
        "stateOrProvinceCode": {
          "type": "string",
          "description": "The state or province code. stateOrProvinceCode is required for the countires Canada & Brazil."
        }
      },
      "description": "The destination address information"
    },
    "Shipper": {
      "required": [
        "countryCode"
      ],
      "type": "object",
      "properties": {
        "countryCode": {
          "type": "string",
          "description": "The two-letter code used to identify a country."
        },
        "postalCode": {
          "type": "string",
          "description": "The postal or ZIP code"
        },
        "stateOrProvinceCode": {
          "type": "string",
          "description": "The state or province code. stateOrProvinceCode is required for the countires Canada & Brazil."
        }
      },
      "description": "The origin address information"
    },
    "ShippingCost": {
      "type": "object",
      "properties": {
        "amount": {
          "type": "number",
          "description": "The numeric value of the unit price.",
          "format": "double"
        },
        "currency": {
          "type": "string",
          "description": "The currency code associated with the price (e.g., USD)."
        }
      },
      "description": "The cost to transport the shipment from origin to destination"
    },
    "UnitPrice": {
      "required": [
        "amount",
        "currencyCode"
      ],
      "type": "object",
      "properties": {
        "amount": {
          "type": "number",
          "description": "The numeric value of the unit price.",
          "format": "double"
        },
        "currencyCode": {
          "type": "string",
          "description": "The currency code associated with the price (e.g., USD)."
        }
      },
      "description": "The price per unit of the commodity."
    }
  }
}