{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/fedex/json-schema/fedex-pudc-response-vo-pickup-availability-schema.json",
  "title": "PudcResponseVO_PickupAvailability",
  "description": "This is a wrapper class for outputVO",
  "x-generated": "2026-11-05",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/fedex-pickup-api-openapi.yml#/components/schemas/PudcResponseVO_PickupAvailability",
  "type": "object",
  "properties": {
    "transactionId": {
      "type": "string",
      "description": "The transaction ID is a special set of numbers that defines each transaction.<br>Example: 624deea6-b709-470c-8c39-4b5511281492"
    },
    "customerTransactionId": {
      "type": "string",
      "description": "This element allows you to assign a unique identifier to your transaction. This element is also returned in the reply and helps you match the request to the reply. <br> Example: AnyCo_order123456789"
    },
    "output": {
      "$ref": "#/$defs/BaseProcessOutputVO_PickupAvailability"
    }
  },
  "$defs": {
    "Alert": {
      "type": "object",
      "properties": {
        "code": {
          "type": "string",
          "description": "Specifies the API alert code."
        },
        "alertType": {
          "type": "string",
          "description": "Specifies the API alert type.",
          "enum": [
            "NOTE",
            "WARNING"
          ]
        },
        "message": {
          "type": "string",
          "description": "Specifies the API alert message."
        }
      },
      "description": "Specifies the API alerts."
    },
    "BaseProcessOutputVO_PickupAvailability": {
      "$ref": "#/$defs/PickupAvailabilityOutputVO"
    },
    "Duration": {
      "type": "object",
      "properties": {
        "hours": {
          "type": "integer",
          "description": "This is the minimum time window in hours that is allocated for the FedEx courier to make the pickup.<br> Example: 'PT1H0M' means Pickup Time is 1 Hour and 0 Minutes",
          "format": "int32"
        },
        "minutes": {
          "type": "integer",
          "description": "This is the minimum time window in minutes that is allocated for the FedEx courier to make the pickup.<br> Example: 'PT1H0M' means Pickup Time is 1 Hour and 0 Minutes",
          "format": "int32"
        }
      },
      "description": "This is the minimum required time window  between the  shipment ReadyTime and the customer close time (or the local 'cutoff time' if it is earlier than the customer close time). <br> Example: hours: 1 minutes: 30"
    },
    "PickupAvailabilityOutputVO": {
      "type": "object",
      "properties": {
        "requestTimestamp": {
          "type": "string",
          "description": "The time when the PickupAvailability request was processed.<br>Note:<br>1.The date format must be YYYY-MM-DDTHH:MM:SS.<br> 2.The time must be in the format: HH:MM:SS using a 24-hour clock.<br>3.The date and time are separated by the letter T, such as 2015-03-25T09:30:00.<br>4.The time is local to the pickup postal code<br> 5.Do not include a TZD (time zone designator) as it will be ignored.<br>Example: 2019-11-15T11:00:00"
        },
        "options": {
          "type": "array",
          "description": "The pickup schedule details, such as the carrier, latest available time of pickup, default latest available time, availability for pickup, time when the package is ready to be picked up, indication if the address is residential, cutoff time of the pickup, and driver's access to pick up the package.",
          "items": {
            "$ref": "#/$defs/PickupScheduleOption"
          }
        },
        "alerts": {
          "type": "array",
          "description": "Any optional alert messages received when a pickup availability is requested. This includes an alert code, type, and message.",
          "items": {
            "$ref": "#/$defs/Alert"
          }
        }
      },
      "description": "The pickup availability response elements."
    },
    "PickupScheduleOption": {
      "type": "object",
      "properties": {
        "carrier": {
          "type": "string",
          "description": "Specifies the FedEx transportation carrier for the pickup option.",
          "enum": [
            "FDXE",
            "FDXG",
            "FXSP",
            "FXFR"
          ]
        },
        "available": {
          "type": "boolean",
          "description": "Indicates the availability of pickup option.If the value is true, it indicates the pickup option is available. If the value is false, it indicates pickup option is not available."
        },
        "pickupDate": {
          "type": "string",
          "description": "Indicates the date (in the pickup postal code's time zone)which refers to the pickup schedule option.<br> Format: YYYY-MM-DD <br> Example: 2019-01-20"
        },
        "cutOffTime": {
          "type": "string",
          "description": "Specifies the latest allowed ready time for the pickup option. The time is local to the pickup postal code. <br> Format:  HH:MM:SS <br> Example: 18:30:00"
        },
        "accessTime": {
          "$ref": "#/$defs/Duration"
        },
        "residentialAvailable": {
          "type": "boolean",
          "description": "Indicates whether residential pickup is available for the requested postal code."
        },
        "countryRelationship": {
          "type": "string",
          "description": "Describes the country relationship among the shipments.DOMESTIC indicates intra-country shipping and cut off times.<br> INTERNATIONAL indicates inter-country shipping and cut off times.<br>Cut off times may vary for DOMESTIC and INTERNATIONAL."
        },
        "scheduleDay": {
          "type": "string",
          "description": "Indicates scheduled pickup day of the week.",
          "enum": [
            "SAME_DAY",
            "FUTURE_DAY"
          ]
        },
        "defaultReadyTime": {
          "type": "string",
          "description": "The default ready time for the shipment to be picked up. FedEx will assume the shipment is ready for pickup at this time unless otherwise indicated on the 'CreatePickup' Request. Format:HH:MM:SS <br> Example: 14:00:00"
        },
        "defaultLatestTimeOptions": {
          "description": "The default latest time for the shipment to be picked up.<br>Format:HH:MM:SS <br> Example: 19:00:00"
        },
        "earlyCutOffTime": {
          "type": "string",
          "description": "Identifies the early cut-off time for the pickup option. The time is local to the pickup postal code. It includes a TZD (time zone designator) for FedEx Freight requests.<br> Format:  HH:MM:SS <br> Example: 18:30:00",
          "format": "HH:MM:SS"
        },
        "earlyAccessTime": {
          "$ref": "#/$defs/Duration"
        },
        "earlyPickupLocationId": {
          "type": "string",
          "description": "The location from where the package will be picked up <br> Example: PITA"
        },
        "readyTimeOptions": {
          "type": "array",
          "description": "The ReadyTimeOptions indicates the possible ready time windows for the shipment to be picked up.FedEx will assume the shipment is ready for pickup at this time <br>Example: 11:00:00, 11:30:00 <br>Note:Based on the cutOffTimes provided readyTimeOptions are returned.",
          "items": {
            "type": "string"
          }
        },
        "latestTimeOptions": {
          "type": "array",
          "description": "The LatestTimeOptions indicates the possible latest time windows for the shipment to be picked up.FedEx will assume the shipment is ready for pickup at this time <br>Example: 12:00:00,12:30:00,13:00:00,13:30:00....23:59:00<br> Note:LatestTimeOptions are return till endoftheday timings.",
          "items": {
            "type": "string"
          }
        }
      }
    }
  }
}