/* tslint:disable */
/* eslint-disable */
/**
 * 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.
 */


// May contain unused imports in some cases
// @ts-ignore
import type { AlternativeIdentifier } from './alternative-identifier';
// May contain unused imports in some cases
// @ts-ignore
import type { DisplayScheme } from './display-scheme';
// May contain unused imports in some cases
// @ts-ignore
import type { LabelChargeEvent } from './label-charge-event';
// May contain unused imports in some cases
// @ts-ignore
import type { LabelDownload } from './label-download';
// May contain unused imports in some cases
// @ts-ignore
import type { LabelDownloadType } from './label-download-type';
// May contain unused imports in some cases
// @ts-ignore
import type { LabelFormat } from './label-format';
// May contain unused imports in some cases
// @ts-ignore
import type { LabelLayout } from './label-layout';
// May contain unused imports in some cases
// @ts-ignore
import type { LabelPackagesInner } from './label-packages-inner';
// May contain unused imports in some cases
// @ts-ignore
import type { LabelStatus } from './label-status';
// May contain unused imports in some cases
// @ts-ignore
import type { Link } from './link';
// May contain unused imports in some cases
// @ts-ignore
import type { MonetaryValue } from './monetary-value';
// May contain unused imports in some cases
// @ts-ignore
import type { PaperlessDownload } from './paperless-download';
// May contain unused imports in some cases
// @ts-ignore
import type { Shipment } from './shipment';
// May contain unused imports in some cases
// @ts-ignore
import type { TrackingStatus } from './tracking-status';
// May contain unused imports in some cases
// @ts-ignore
import type { ValidateAddress } from './validate-address';

/**
 * A label represents the physical sticker that you affix to a package to ship it.  ShipStation makes it easy for you to [create labels] and then download them in PDF, PNG, or ZPL format so you can print them. 
 * @export
 * @interface Label
 */
export interface Label {
    [key: string]: any;

    /**
     * A string that uniquely identifies the label. This ID is generated by ShipStation when the label is created. 
     * @type {string}
     * @memberof Label
     */
    'label_id'?: string;
    /**
     * 
     * @type {LabelStatus}
     * @memberof Label
     */
    'status'?: LabelStatus;
    /**
     * The shipment that this label is for.  ShipStation  can create a shipment for you automatically when you [create a label], or you can [create your own shipment] and then [use it to print a label] 
     * @type {string}
     * @memberof Label
     */
    'shipment_id'?: string;
    /**
     * The shipment information used to generate the label
     * @type {Shipment}
     * @memberof Label
     */
    'shipment'?: Shipment;
    /**
     * The date that the package 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 Label
     */
    'ship_date'?: string;
    /**
     * The date and time that the label was created in ShipStation .
     * @type {string}
     * @memberof Label
     */
    'created_at'?: string;
    /**
     * The cost of shipping, delivery confirmation, and other carrier charges.  This amount **does not** include insurance costs. 
     * @type {MonetaryValue}
     * @memberof Label
     */
    'shipment_cost'?: MonetaryValue;
    /**
     * The insurance cost for this package.  Add this to the `shipment_cost` field to get the total cost. 
     * @type {MonetaryValue}
     * @memberof Label
     */
    'insurance_cost'?: MonetaryValue;
    /**
     * The total shipping cost for the specified comparison_rate_type. 
     * @type {MonetaryValue}
     * @memberof Label
     */
    'requested_comparison_amount'?: MonetaryValue;
    /**
     * The tracking number for the package. Tracking number formats vary across carriers.
     * @type {string}
     * @memberof Label
     */
    'tracking_number'?: string;
    /**
     * Indicates whether this is a return label.  You may also want to set the `rma_number` so you know what is being returned. 
     * @type {boolean}
     * @memberof Label
     */
    'is_return_label'?: boolean;
    /**
     * An optional Return Merchandise Authorization number.  This field is useful for return labels.  You can set it to any string value. 
     * @type {string}
     * @memberof Label
     */
    'rma_number'?: string | null;
    /**
     * Indicates whether this is an international shipment.  That is, the originating country and destination country are different. 
     * @type {boolean}
     * @memberof Label
     */
    'is_international'?: boolean;
    /**
     * If this label was created as part of a [batch], then this is the unique ID of that batch. 
     * @type {string}
     * @memberof Label
     */
    'batch_id'?: string;
    /**
     * The unique ID of the [carrier account] that was used to create this label 
     * @type {string}
     * @memberof Label
     */
    'carrier_id'?: string;
    /**
     * The label charge event. 
     * @type {LabelChargeEvent}
     * @memberof Label
     */
    'charge_event'?: LabelChargeEvent;
    /**
     * The `label_id` of the original (outgoing) label that the return label is for. This associates the two labels together, which is required by some carriers. 
     * @type {string}
     * @memberof Label
     */
    'outbound_label_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 Label
     */
    'service_code'?: string;
    /**
     * Indicate if this label is being used only for testing purposes. If true, then no charge will be added to your account.
     * @type {boolean}
     * @memberof Label
     * @deprecated
     */
    'test_label'?: boolean;
    /**
     * The [package type], such as `thick_envelope`, `small_flat_rate_box`, `large_package`, etc.  The code `package` indicates a custom or unknown package type. 
     * @type {string}
     * @memberof Label
     */
    'package_code'?: string;
    /**
     * 
     * @type {ValidateAddress}
     * @memberof Label
     */
    'validate_address'?: ValidateAddress;
    /**
     * Indicates whether the label has been [voided] 
     * @type {boolean}
     * @memberof Label
     */
    'voided'?: boolean;
    /**
     * The date and time that the label was [voided] , or `null` if the label has not been voided 
     * @type {string}
     * @memberof Label
     */
    'voided_at'?: string | null;
    /**
     * 
     * @type {LabelDownloadType}
     * @memberof Label
     */
    'label_download_type'?: LabelDownloadType;
    /**
     * The file format that you want the label to be in.  We recommend `pdf` format because it is supported by all carriers, whereas some carriers do not support the `png` or `zpl` formats. 
     * @type {LabelFormat}
     * @memberof Label
     */
    'label_format'?: LabelFormat;
    /**
     * The display format that the label should be shown in.
     * @type {DisplayScheme}
     * @memberof Label
     */
    'display_scheme'?: DisplayScheme;
    /**
     * The layout (size) that you want the label to be in.  The `label_format` determines which sizes are allowed.  `4x6` is supported for all label formats, whereas `letter` (8.5\" x 11\") is only supported for `pdf` format. 
     * @type {LabelLayout}
     * @memberof Label
     */
    'label_layout'?: LabelLayout;
    /**
     * Indicates whether the shipment is trackable, in which case the `tracking_status` field will reflect the current status and each package will have a `tracking_number`. 
     * @type {boolean}
     * @memberof Label
     */
    'trackable'?: boolean;
    /**
     * The label image resource that was used to create a custom label image.
     * @type {string}
     * @memberof Label
     */
    'label_image_id'?: string | null;
    /**
     * The [shipping carrier] who will ship the package, such as `fedex`, `dhl_express`, `stamps_com`, etc. 
     * @type {string}
     * @memberof Label
     */
    'carrier_code'?: string;
    /**
     * The current status of the package, such as `in_transit` or `delivered`
     * @type {TrackingStatus}
     * @memberof Label
     */
    'tracking_status'?: TrackingStatus;
    /**
     * 
     * @type {LabelDownload}
     * @memberof Label
     */
    'label_download'?: LabelDownload;
    /**
     * The link to download the customs form (a.k.a. commercial invoice) for this shipment, if any.  Forms are in PDF format. This field is null if the shipment does not require a customs form, or if the carrier does not support it. 
     * @type {Link}
     * @memberof Label
     */
    'form_download'?: Link | null;
    /**
     * The paperless details which may contain elements like `href`, `instructions` and `handoff_code`. 
     * @type {PaperlessDownload}
     * @memberof Label
     */
    'paperless_download'?: PaperlessDownload | null;
    /**
     * The link to submit an insurance claim for the shipment.  This field is null if the shipment is not insured or if the insurance provider does not support online claim submission. 
     * @type {Link}
     * @memberof Label
     */
    'insurance_claim'?: Link | null;
    /**
     * The label\'s package(s).  > **Note:** Some carriers only allow one package per label.  If you attempt to create a multi-package label for a carrier that doesn\'t allow it, an error will be returned. 
     * @type {Array<LabelPackagesInner>}
     * @memberof Label
     */
    'packages'?: Array<LabelPackagesInner>;
    /**
     * Additional information some carriers may provide by which to identify a given label in their system. 
     * @type {Array<AlternativeIdentifier>}
     * @memberof Label
     */
    'alternative_identifiers'?: Array<AlternativeIdentifier> | null;
    /**
     * The URL to track the package. This URL is provided by the carrier and is unique to the tracking number. 
     * @type {string}
     * @memberof Label
     */
    'tracking_url'?: string | null;
}



