/**
 * ShipStation API v2
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 2.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
import type { AdvancedShipmentOptions } from './advanced-shipment-options';
import type { DeliveryConfirmation } from './delivery-confirmation';
import type { InsuranceProvider } from './insurance-provider';
import type { InternationalShipmentOptions } from './international-shipment-options';
import type { OrderSourceName } from './order-source-name';
import type { Package } from './package';
import type { ShipmentItem } from './shipment-item';
import type { ShipmentStatus } from './shipment-status';
import type { ShippingAddress } from './shipping-address';
import type { ShippingAddressTo } from './shipping-address-to';
import type { Tag } from './tag';
import type { TaxIdentifier } from './tax-identifier';
import type { Weigth } from './weigth';
/**
 * The information necessary to ship a package, such as the origin, the destination, the carrier service, and the package dimensions and weight.
 * @export
 * @interface PartialShipment
 */
export interface PartialShipment {
    [key: string]: any;
    /**
     * A string that uniquely identifies the shipment
     * @type {string}
     * @memberof PartialShipment
     */
    'shipment_id'?: string;
    /**
     * The carrier account that is billed for the shipping charges
     * @type {string}
     * @memberof PartialShipment
     */
    'carrier_id'?: string;
    /**
     * The [carrier service] used to ship the package, such as `fedex_ground`, `usps_first_class_mail`, `flat_rate_envelope`, etc.
     * @type {string}
     * @memberof PartialShipment
     */
    'service_code'?: string;
    /**
     * ID of the shipping rule, which you want to use to automate carrier/carrier service selection for the shipment
     * @type {string}
     * @memberof PartialShipment
     */
    'shipping_rule_id'?: string;
    /**
     * ID that the Order Source assigned
     * @type {string}
     * @memberof PartialShipment
     */
    'external_order_id'?: string | null;
    /**
     * Describe the packages included in this shipment as related to potential metadata that was imported from external order sources
     * @type {Array<ShipmentItem>}
     * @memberof PartialShipment
     */
    'items'?: Array<ShipmentItem>;
    /**
     *
     * @type {Array<TaxIdentifier>}
     * @memberof PartialShipment
     */
    'tax_identifiers'?: Array<TaxIdentifier> | null;
    /**
     * A unique user-defined key to identify a shipment.  This can be used to retrieve the shipment.  > **Warning:** The `external_shipment_id` is limited to 50 characters. Any additional characters will be truncated.
     * @type {string}
     * @memberof PartialShipment
     */
    'external_shipment_id'?: string | null;
    /**
     * A non-unique user-defined number used to identify a shipment.  If undefined, this will match the external_shipment_id of the shipment.  > **Warning:** The `shipment_number` is limited to 50 characters. Any additional characters will be truncated.
     * @type {string}
     * @memberof PartialShipment
     */
    'shipment_number'?: string | null;
    /**
     * The date that the shipment was (or will be) shippped.  ShipStation will take the day of week into consideration. For example, if the carrier does not operate on Sundays, then a package that would have shipped on Sunday will ship on Monday instead.
     * @type {string}
     * @memberof PartialShipment
     */
    'ship_date'?: string;
    /**
     * The date and time that the shipment was created in ShipStation .
     * @type {string}
     * @memberof PartialShipment
     */
    'created_at'?: string;
    /**
     * The date and time that the shipment was created or last modified.
     * @type {string}
     * @memberof PartialShipment
     */
    'modified_at'?: string;
    /**
     * The current status of the shipment
     * @type {ShipmentStatus}
     * @memberof PartialShipment
     */
    'shipment_status'?: ShipmentStatus;
    /**
     * The recipient\'s mailing address
     * @type {ShippingAddressTo}
     * @memberof PartialShipment
     */
    'ship_to'?: ShippingAddressTo;
    /**
     * The shipment\'s origin address. If you frequently ship from the same location, consider [creating a warehouse].  Then you can simply specify the `warehouse_id` rather than the complete address each time.
     * @type {ShippingAddress}
     * @memberof PartialShipment
     */
    'ship_from'?: ShippingAddress;
    /**
     * The [warehouse] that the shipment is being shipped from.  Either `warehouse_id` or `ship_from` must be specified.
     * @type {string}
     * @memberof PartialShipment
     */
    'warehouse_id'?: string | null;
    /**
     * The return address for this shipment.  Defaults to the `ship_from` address.
     * @type {ShippingAddress}
     * @memberof PartialShipment
     */
    'return_to'?: ShippingAddress;
    /**
     * An optional indicator if the shipment is intended to be a return. Defaults to false if not provided.
     * @type {boolean}
     * @memberof PartialShipment
     */
    'is_return'?: boolean | null;
    /**
     * The type of delivery confirmation that is required for this shipment.
     * @type {DeliveryConfirmation}
     * @memberof PartialShipment
     */
    'confirmation'?: DeliveryConfirmation;
    /**
     * Customs information.  This is usually only needed for international shipments.
     * @type {InternationalShipmentOptions}
     * @memberof PartialShipment
     */
    'customs'?: InternationalShipmentOptions | null;
    /**
     * Advanced shipment options.  These are entirely optional.
     * @type {AdvancedShipmentOptions}
     * @memberof PartialShipment
     */
    'advanced_options'?: AdvancedShipmentOptions;
    /**
     * The insurance provider to use for any insured packages in the shipment.
     * @type {InsuranceProvider}
     * @memberof PartialShipment
     */
    'insurance_provider'?: InsuranceProvider;
    /**
     * Arbitrary tags associated with this shipment.  Tags can be used to categorize shipments, and shipments can be queried by their tags.
     * @type {Array<Tag>}
     * @memberof PartialShipment
     */
    'tags'?: Array<Tag>;
    /**
     *
     * @type {OrderSourceName}
     * @memberof PartialShipment
     */
    'order_source_code'?: OrderSourceName;
    /**
     * The packages in the shipment.  > **Note:** Some carriers only allow one package per shipment.  If you attempt to create a multi-package shipment for a carrier that doesn\'t allow it, an error will be returned.
     * @type {Array<Package>}
     * @memberof PartialShipment
     */
    'packages'?: Array<Package>;
    /**
     * The combined weight of all packages in the shipment
     * @type {Weigth}
     * @memberof PartialShipment
     */
    'total_weight'?: Weigth;
    /**
     * Calculate a rate for this shipment with the requested carrier using a ratecard that differs from the default.  Only supported for UPS and USPS.
     * @type {string}
     * @memberof PartialShipment
     */
    'comparison_rate_type'?: string | null;
}
