// Package fbaInbound provides primitives to interact the openapi HTTP API.
//
// Code generated by go-sdk-codegen DO NOT EDIT.
package fbaInbound

import (
	"time"

	openapi_types "github.com/amzapi/selling-partner-api-sdk/pkg/types"
)

// ASINInboundGuidance defines model for ASINInboundGuidance.
type ASINInboundGuidance struct {

	// The Amazon Standard Identification Number (ASIN) of the item.
	ASIN string `json:"ASIN"`

	// A list of inbound guidance reason information.
	GuidanceReasonList *GuidanceReasonList `json:"GuidanceReasonList,omitempty"`

	// Specific inbound guidance for an item.
	InboundGuidance InboundGuidance `json:"InboundGuidance"`
}

// ASINInboundGuidanceList defines model for ASINInboundGuidanceList.
type ASINInboundGuidanceList []ASINInboundGuidance

// ASINPrepInstructions defines model for ASINPrepInstructions.
type ASINPrepInstructions struct {

	// The Amazon Standard Identification Number (ASIN) of the item.
	ASIN *string `json:"ASIN,omitempty"`

	// Labeling requirements for the item. For more information about FBA labeling requirements, see the Seller Central Help for your marketplace.
	BarcodeInstruction *BarcodeInstruction `json:"BarcodeInstruction,omitempty"`

	// Item preparation instructions.
	PrepGuidance *PrepGuidance `json:"PrepGuidance,omitempty"`

	// A list of preparation instructions to help with item sourcing decisions.
	PrepInstructionList *PrepInstructionList `json:"PrepInstructionList,omitempty"`
}

// ASINPrepInstructionsList defines model for ASINPrepInstructionsList.
type ASINPrepInstructionsList []ASINPrepInstructions

// Address defines model for Address.
type Address struct {

	// The street address information.
	AddressLine1 string `json:"AddressLine1"`

	// Additional street address information, if required.
	AddressLine2 *string `json:"AddressLine2,omitempty"`

	// The city.
	City string `json:"City"`

	// The country code in two-character ISO 3166-1 alpha-2 format.
	CountryCode string `json:"CountryCode"`

	// The district or county.
	DistrictOrCounty *string `json:"DistrictOrCounty,omitempty"`

	// Name of the individual or business.
	Name string `json:"Name"`

	// The postal code.
	//
	// If postal codes are used in your marketplace, we recommended that you include one with your request. This helps Amazon select the most appropriate Amazon fulfillment center for the inbound shipment plan.
	PostalCode string `json:"PostalCode"`

	// The state or province code.
	//
	// If state or province codes are used in your marketplace, it is recommended that you include one with your request. This helps Amazon to select the most appropriate Amazon fulfillment center for your inbound shipment plan.
	StateOrProvinceCode string `json:"StateOrProvinceCode"`
}

// AmazonPrepFeesDetails defines model for AmazonPrepFeesDetails.
type AmazonPrepFeesDetails struct {

	// The monetary value.
	FeePerUnit *Amount `json:"FeePerUnit,omitempty"`

	// Preparation instructions for shipping an item to Amazon's fulfillment network. For more information about preparing items for shipment to Amazon's fulfillment network, see the Seller Central Help for your marketplace.
	PrepInstruction *PrepInstruction `json:"PrepInstruction,omitempty"`
}

// AmazonPrepFeesDetailsList defines model for AmazonPrepFeesDetailsList.
type AmazonPrepFeesDetailsList []AmazonPrepFeesDetails

// Amount defines model for Amount.
type Amount struct {

	// The currency code.
	CurrencyCode CurrencyCode   `json:"CurrencyCode"`
	Value        BigDecimalType `json:"Value"`
}

// BarcodeInstruction defines model for BarcodeInstruction.
type BarcodeInstruction string

// List of BarcodeInstruction
const (
	BarcodeInstruction_CanUseOriginalBarcode BarcodeInstruction = "CanUseOriginalBarcode"
	BarcodeInstruction_MustProvideSellerSKU  BarcodeInstruction = "MustProvideSellerSKU"
	BarcodeInstruction_RequiresFNSKULabel    BarcodeInstruction = "RequiresFNSKULabel"
)

// BigDecimalType defines model for BigDecimalType.
type BigDecimalType float64

// BillOfLadingDownloadURL defines model for BillOfLadingDownloadURL.
type BillOfLadingDownloadURL struct {

	// URL to download the bill of lading for the package. Note: The URL will only be valid for 15 seconds
	DownloadURL *string `json:"DownloadURL,omitempty"`
}

// BoxContentsFeeDetails defines model for BoxContentsFeeDetails.
type BoxContentsFeeDetails struct {

	// The monetary value.
	FeePerUnit *Amount `json:"FeePerUnit,omitempty"`

	// The monetary value.
	TotalFee *Amount `json:"TotalFee,omitempty"`

	// The item quantity.
	TotalUnits *Quantity `json:"TotalUnits,omitempty"`
}

// BoxContentsSource defines model for BoxContentsSource.
type BoxContentsSource string

// List of BoxContentsSource
const (
	BoxContentsSource_FEED        BoxContentsSource = "FEED"
	BoxContentsSource_INTERACTIVE BoxContentsSource = "INTERACTIVE"
	BoxContentsSource_NONE        BoxContentsSource = "NONE"
	BoxContentsSource__D_BARCODE  BoxContentsSource = "2D_BARCODE"
)

// CommonTransportResult defines model for CommonTransportResult.
type CommonTransportResult struct {

	// The workflow status for a shipment with an Amazon-partnered carrier.
	TransportResult *TransportResult `json:"TransportResult,omitempty"`
}

// Condition defines model for Condition.
type Condition string

// List of Condition
const (
	Condition_Club                    Condition = "Club"
	Condition_CollectibleAcceptable   Condition = "CollectibleAcceptable"
	Condition_CollectibleGood         Condition = "CollectibleGood"
	Condition_CollectibleLikeNew      Condition = "CollectibleLikeNew"
	Condition_CollectiblePoor         Condition = "CollectiblePoor"
	Condition_CollectibleVeryGood     Condition = "CollectibleVeryGood"
	Condition_NewItem                 Condition = "NewItem"
	Condition_NewOEM                  Condition = "NewOEM"
	Condition_NewOpenBox              Condition = "NewOpenBox"
	Condition_NewWithWarranty         Condition = "NewWithWarranty"
	Condition_Refurbished             Condition = "Refurbished"
	Condition_RefurbishedWithWarranty Condition = "RefurbishedWithWarranty"
	Condition_UsedAcceptable          Condition = "UsedAcceptable"
	Condition_UsedGood                Condition = "UsedGood"
	Condition_UsedLikeNew             Condition = "UsedLikeNew"
	Condition_UsedPoor                Condition = "UsedPoor"
	Condition_UsedRefurbished         Condition = "UsedRefurbished"
	Condition_UsedVeryGood            Condition = "UsedVeryGood"
)

// ConfirmPreorderResponse defines model for ConfirmPreorderResponse.
type ConfirmPreorderResponse struct {

	// A list of error responses returned when a request is unsuccessful.
	Errors  *ErrorList             `json:"errors,omitempty"`
	Payload *ConfirmPreorderResult `json:"payload,omitempty"`
}

// ConfirmPreorderResult defines model for ConfirmPreorderResult.
type ConfirmPreorderResult struct {
	ConfirmedFulfillableDate *DateStringType `json:"ConfirmedFulfillableDate,omitempty"`
	ConfirmedNeedByDate      *DateStringType `json:"ConfirmedNeedByDate,omitempty"`
}

// ConfirmTransportResponse defines model for ConfirmTransportResponse.
type ConfirmTransportResponse struct {

	// A list of error responses returned when a request is unsuccessful.
	Errors  *ErrorList             `json:"errors,omitempty"`
	Payload *CommonTransportResult `json:"payload,omitempty"`
}

// Contact defines model for Contact.
type Contact struct {

	// The email address of the contact person.
	Email string `json:"Email"`

	// The fax number of the contact person.
	Fax *string `json:"Fax,omitempty"`

	// The name of the contact person.
	Name string `json:"Name"`

	// The phone number of the contact person.
	Phone string `json:"Phone"`
}

// CreateInboundShipmentPlanRequest defines model for CreateInboundShipmentPlanRequest.
type CreateInboundShipmentPlanRequest struct {
	InboundShipmentPlanRequestItems InboundShipmentPlanRequestItemList `json:"InboundShipmentPlanRequestItems"`

	// The preference for label preparation for an inbound shipment.
	LabelPrepPreference LabelPrepPreference `json:"LabelPrepPreference"`
	ShipFromAddress     Address             `json:"ShipFromAddress"`

	// The two-character country code for the country where the inbound shipment is to be sent.
	//
	// Note: Not required. Specifying both ShipToCountryCode and ShipToCountrySubdivisionCode returns an error.
	//
	//  Values:
	//
	//  ShipToCountryCode values for North America:
	//  * CA – Canada
	//  * MX - Mexico
	//  * US - United States
	//
	// ShipToCountryCode values for MCI sellers in Europe:
	//  * DE – Germany
	//  * ES – Spain
	//  * FR – France
	//  * GB – United Kingdom
	//  * IT – Italy
	//
	// Default: The country code for the seller's home marketplace.
	ShipToCountryCode *string `json:"ShipToCountryCode,omitempty"`

	// The two-character country code, followed by a dash and then up to three characters that represent the subdivision of the country where the inbound shipment is to be sent. For example, "IN-MH". In full ISO 3166-2 format.
	//
	// Note: Not required. Specifying both ShipToCountryCode and ShipToCountrySubdivisionCode returns an error.
	ShipToCountrySubdivisionCode *string `json:"ShipToCountrySubdivisionCode,omitempty"`
}

// CreateInboundShipmentPlanResponse defines model for CreateInboundShipmentPlanResponse.
type CreateInboundShipmentPlanResponse struct {

	// A list of error responses returned when a request is unsuccessful.
	Errors  *ErrorList                       `json:"errors,omitempty"`
	Payload *CreateInboundShipmentPlanResult `json:"payload,omitempty"`
}

// CreateInboundShipmentPlanResult defines model for CreateInboundShipmentPlanResult.
type CreateInboundShipmentPlanResult struct {

	// A list of inbound shipment plan information
	InboundShipmentPlans *InboundShipmentPlanList `json:"InboundShipmentPlans,omitempty"`
}

// CurrencyCode defines model for CurrencyCode.
type CurrencyCode string

// List of CurrencyCode
const (
	CurrencyCode_GBP CurrencyCode = "GBP"
	CurrencyCode_USD CurrencyCode = "USD"
)

// DateStringType defines model for DateStringType.
type DateStringType openapi_types.Date

// Dimensions defines model for Dimensions.
type Dimensions struct {
	Height BigDecimalType `json:"Height"`
	Length BigDecimalType `json:"Length"`

	// Indicates the unit of measurement.
	Unit  UnitOfMeasurement `json:"Unit"`
	Width BigDecimalType    `json:"Width"`
}

// Error defines model for Error.
type Error struct {

	// An error code that identifies the type of error that occured.
	Code string `json:"code"`

	// Additional details that can help the caller understand or fix the issue.
	Details *string `json:"details,omitempty"`

	// A message that describes the error condition in a human-readable form.
	Message string `json:"message"`
}

// ErrorList defines model for ErrorList.
type ErrorList []Error

// ErrorReason defines model for ErrorReason.
type ErrorReason string

// List of ErrorReason
const (
	ErrorReason_DoesNotExist ErrorReason = "DoesNotExist"
	ErrorReason_InvalidASIN  ErrorReason = "InvalidASIN"
)

// EstimateTransportResponse defines model for EstimateTransportResponse.
type EstimateTransportResponse struct {

	// A list of error responses returned when a request is unsuccessful.
	Errors  *ErrorList             `json:"errors,omitempty"`
	Payload *CommonTransportResult `json:"payload,omitempty"`
}

// GetBillOfLadingResponse defines model for GetBillOfLadingResponse.
type GetBillOfLadingResponse struct {

	// A list of error responses returned when a request is unsuccessful.
	Errors  *ErrorList               `json:"errors,omitempty"`
	Payload *BillOfLadingDownloadURL `json:"payload,omitempty"`
}

// GetInboundGuidanceResponse defines model for GetInboundGuidanceResponse.
type GetInboundGuidanceResponse struct {

	// A list of error responses returned when a request is unsuccessful.
	Errors  *ErrorList                `json:"errors,omitempty"`
	Payload *GetInboundGuidanceResult `json:"payload,omitempty"`
}

// GetInboundGuidanceResult defines model for GetInboundGuidanceResult.
type GetInboundGuidanceResult struct {

	// A list of ASINs and their associated inbound guidance.
	ASINInboundGuidanceList *ASINInboundGuidanceList `json:"ASINInboundGuidanceList,omitempty"`

	// A list of invalid ASIN values and the reasons they are invalid.
	InvalidASINList *InvalidASINList `json:"InvalidASINList,omitempty"`

	// A list of invalid SKU values and the reason they are invalid.
	InvalidSKUList *InvalidSKUList `json:"InvalidSKUList,omitempty"`

	// A list of SKU inbound guidance information.
	SKUInboundGuidanceList *SKUInboundGuidanceList `json:"SKUInboundGuidanceList,omitempty"`
}

// GetLabelsResponse defines model for GetLabelsResponse.
type GetLabelsResponse struct {

	// A list of error responses returned when a request is unsuccessful.
	Errors  *ErrorList        `json:"errors,omitempty"`
	Payload *LabelDownloadURL `json:"payload,omitempty"`
}

// GetPreorderInfoResponse defines model for GetPreorderInfoResponse.
type GetPreorderInfoResponse struct {

	// A list of error responses returned when a request is unsuccessful.
	Errors  *ErrorList             `json:"errors,omitempty"`
	Payload *GetPreorderInfoResult `json:"payload,omitempty"`
}

// GetPreorderInfoResult defines model for GetPreorderInfoResult.
type GetPreorderInfoResult struct {
	ConfirmedFulfillableDate *DateStringType `json:"ConfirmedFulfillableDate,omitempty"`
	NeedByDate               *DateStringType `json:"NeedByDate,omitempty"`

	// Indicates whether this shipment has been confirmed for pre-order.
	ShipmentConfirmedForPreorder *bool `json:"ShipmentConfirmedForPreorder,omitempty"`

	// Indicates whether the shipment contains items that have been enabled for pre-order. For more information about enabling items for pre-order, see the Seller Central Help.
	ShipmentContainsPreorderableItems *bool `json:"ShipmentContainsPreorderableItems,omitempty"`
}

// GetPrepInstructionsResponse defines model for GetPrepInstructionsResponse.
type GetPrepInstructionsResponse struct {

	// A list of error responses returned when a request is unsuccessful.
	Errors  *ErrorList                 `json:"errors,omitempty"`
	Payload *GetPrepInstructionsResult `json:"payload,omitempty"`
}

// GetPrepInstructionsResult defines model for GetPrepInstructionsResult.
type GetPrepInstructionsResult struct {

	// A list of item preparation instructions.
	ASINPrepInstructionsList *ASINPrepInstructionsList `json:"ASINPrepInstructionsList,omitempty"`

	// A list of invalid ASIN values and the reasons they are invalid.
	InvalidASINList *InvalidASINList `json:"InvalidASINList,omitempty"`

	// A list of invalid SKU values and the reason they are invalid.
	InvalidSKUList *InvalidSKUList `json:"InvalidSKUList,omitempty"`

	// A list of SKU labeling requirements and item preparation instructions.
	SKUPrepInstructionsList *SKUPrepInstructionsList `json:"SKUPrepInstructionsList,omitempty"`
}

// GetShipmentItemsResponse defines model for GetShipmentItemsResponse.
type GetShipmentItemsResponse struct {

	// A list of error responses returned when a request is unsuccessful.
	Errors  *ErrorList              `json:"errors,omitempty"`
	Payload *GetShipmentItemsResult `json:"payload,omitempty"`
}

// GetShipmentItemsResult defines model for GetShipmentItemsResult.
type GetShipmentItemsResult struct {

	// A list of inbound shipment item information.
	ItemData *InboundShipmentItemList `json:"ItemData,omitempty"`

	// When present and not empty, pass this string token in the next request to return the next response page.
	NextToken *string `json:"NextToken,omitempty"`
}

// GetShipmentsResponse defines model for GetShipmentsResponse.
type GetShipmentsResponse struct {

	// A list of error responses returned when a request is unsuccessful.
	Errors  *ErrorList          `json:"errors,omitempty"`
	Payload *GetShipmentsResult `json:"payload,omitempty"`
}

// GetShipmentsResult defines model for GetShipmentsResult.
type GetShipmentsResult struct {

	// When present and not empty, pass this string token in the next request to return the next response page.
	NextToken *string `json:"NextToken,omitempty"`

	// A list of inbound shipment information.
	ShipmentData *InboundShipmentList `json:"ShipmentData,omitempty"`
}

// GetTransportDetailsResponse defines model for GetTransportDetailsResponse.
type GetTransportDetailsResponse struct {

	// A list of error responses returned when a request is unsuccessful.
	Errors  *ErrorList                 `json:"errors,omitempty"`
	Payload *GetTransportDetailsResult `json:"payload,omitempty"`
}

// GetTransportDetailsResult defines model for GetTransportDetailsResult.
type GetTransportDetailsResult struct {

	// Inbound shipment information, including carrier details, shipment status, and the workflow status for a request for shipment with an Amazon-partnered carrier.
	TransportContent *TransportContent `json:"TransportContent,omitempty"`
}

// GuidanceReason defines model for GuidanceReason.
type GuidanceReason string

// List of GuidanceReason
const (
	GuidanceReason_NoApplicableGuidance GuidanceReason = "NoApplicableGuidance"
	GuidanceReason_SlowMovingASIN       GuidanceReason = "SlowMovingASIN"
)

// GuidanceReasonList defines model for GuidanceReasonList.
type GuidanceReasonList []GuidanceReason

// InboundGuidance defines model for InboundGuidance.
type InboundGuidance string

// List of InboundGuidance
const (
	InboundGuidance_InboundNotRecommended InboundGuidance = "InboundNotRecommended"
	InboundGuidance_InboundOK             InboundGuidance = "InboundOK"
)

// InboundShipmentHeader defines model for InboundShipmentHeader.
type InboundShipmentHeader struct {

	// Indicates whether or not an inbound shipment contains case-packed boxes. Note: A shipment must contain either all case-packed boxes or all individually packed boxes.
	//
	// Possible values:
	//
	// true - All boxes in the shipment must be case packed.
	//
	// false - All boxes in the shipment must be individually packed.
	//
	// Note: If AreCasesRequired = true for an inbound shipment, then the value of QuantityInCase must be greater than zero for every item in the shipment. Otherwise the service returns an error.
	AreCasesRequired *bool `json:"AreCasesRequired,omitempty"`

	// The identifier for the fulfillment center to which the shipment will be shipped. Get this value from the InboundShipmentPlan object in the response returned by the createInboundShipmentPlan operation.
	DestinationFulfillmentCenterId string `json:"DestinationFulfillmentCenterId"`

	// How the seller intends to provide box contents information for a shipment.
	IntendedBoxContentsSource *IntendedBoxContentsSource `json:"IntendedBoxContentsSource,omitempty"`

	// The preference for label preparation for an inbound shipment.
	LabelPrepPreference LabelPrepPreference `json:"LabelPrepPreference"`
	ShipFromAddress     Address             `json:"ShipFromAddress"`

	// The name for the shipment. Use a naming convention that helps distinguish between shipments over time, such as the date the shipment was created.
	ShipmentName string `json:"ShipmentName"`

	// Indicates the status of the inbound shipment. When used with the createInboundShipment operation, WORKING is the only valid value. When used with the updateInboundShipment operation, possible values are WORKING, SHIPPED or CANCELLED.
	ShipmentStatus ShipmentStatus `json:"ShipmentStatus"`
}

// InboundShipmentInfo defines model for InboundShipmentInfo.
type InboundShipmentInfo struct {

	// Indicates whether or not an inbound shipment contains case-packed boxes. When AreCasesRequired = true for an inbound shipment, all items in the inbound shipment must be case packed.
	AreCasesRequired bool `json:"AreCasesRequired"`

	// Where the seller provided box contents information for a shipment.
	BoxContentsSource   *BoxContentsSource `json:"BoxContentsSource,omitempty"`
	ConfirmedNeedByDate *DateStringType    `json:"ConfirmedNeedByDate,omitempty"`

	// An Amazon fulfillment center identifier created by Amazon.
	DestinationFulfillmentCenterId *string `json:"DestinationFulfillmentCenterId,omitempty"`

	// The manual processing fee per unit and total fee for a shipment.
	EstimatedBoxContentsFee *BoxContentsFeeDetails `json:"EstimatedBoxContentsFee,omitempty"`

	// The type of label preparation that is required for the inbound shipment.
	LabelPrepType   *LabelPrepType `json:"LabelPrepType,omitempty"`
	ShipFromAddress Address        `json:"ShipFromAddress"`

	// The shipment identifier submitted in the request.
	ShipmentId *string `json:"ShipmentId,omitempty"`

	// The name for the inbound shipment.
	ShipmentName *string `json:"ShipmentName,omitempty"`

	// Indicates the status of the inbound shipment. When used with the createInboundShipment operation, WORKING is the only valid value. When used with the updateInboundShipment operation, possible values are WORKING, SHIPPED or CANCELLED.
	ShipmentStatus *ShipmentStatus `json:"ShipmentStatus,omitempty"`
}

// InboundShipmentItem defines model for InboundShipmentItem.
type InboundShipmentItem struct {

	// Amazon's fulfillment network SKU of the item.
	FulfillmentNetworkSKU *string `json:"FulfillmentNetworkSKU,omitempty"`

	// A list of preparation instructions and who is responsible for that preparation.
	PrepDetailsList *PrepDetailsList `json:"PrepDetailsList,omitempty"`

	// The item quantity.
	QuantityInCase *Quantity `json:"QuantityInCase,omitempty"`

	// The item quantity.
	QuantityReceived *Quantity `json:"QuantityReceived,omitempty"`

	// The item quantity.
	QuantityShipped Quantity        `json:"QuantityShipped"`
	ReleaseDate     *string `json:"ReleaseDate,omitempty"`

	// The seller SKU of the item.
	SellerSKU string `json:"SellerSKU"`

	// A shipment identifier originally returned by the createInboundShipmentPlan operation.
	ShipmentId *string `json:"ShipmentId,omitempty"`
}

// InboundShipmentItemList defines model for InboundShipmentItemList.
type InboundShipmentItemList []InboundShipmentItem

// InboundShipmentList defines model for InboundShipmentList.
type InboundShipmentList []InboundShipmentInfo

// InboundShipmentPlan defines model for InboundShipmentPlan.
type InboundShipmentPlan struct {

	// An Amazon fulfillment center identifier created by Amazon.
	DestinationFulfillmentCenterId string `json:"DestinationFulfillmentCenterId"`

	// The manual processing fee per unit and total fee for a shipment.
	EstimatedBoxContentsFee *BoxContentsFeeDetails `json:"EstimatedBoxContentsFee,omitempty"`

	// A list of inbound shipment plan item information.
	Items InboundShipmentPlanItemList `json:"Items"`

	// The type of label preparation that is required for the inbound shipment.
	LabelPrepType LabelPrepType `json:"LabelPrepType"`
	ShipToAddress Address       `json:"ShipToAddress"`

	// A shipment identifier originally returned by the createInboundShipmentPlan operation.
	ShipmentId string `json:"ShipmentId"`
}

// InboundShipmentPlanItem defines model for InboundShipmentPlanItem.
type InboundShipmentPlanItem struct {

	// Amazon's fulfillment network SKU of the item.
	FulfillmentNetworkSKU string `json:"FulfillmentNetworkSKU"`

	// A list of preparation instructions and who is responsible for that preparation.
	PrepDetailsList *PrepDetailsList `json:"PrepDetailsList,omitempty"`

	// The item quantity.
	Quantity Quantity `json:"Quantity"`

	// The seller SKU of the item.
	SellerSKU string `json:"SellerSKU"`
}

// InboundShipmentPlanItemList defines model for InboundShipmentPlanItemList.
type InboundShipmentPlanItemList []InboundShipmentPlanItem

// InboundShipmentPlanList defines model for InboundShipmentPlanList.
type InboundShipmentPlanList []InboundShipmentPlan

// InboundShipmentPlanRequestItem defines model for InboundShipmentPlanRequestItem.
type InboundShipmentPlanRequestItem struct {

	// The Amazon Standard Identification Number (ASIN) of the item.
	ASIN string `json:"ASIN"`

	// The condition of the item.
	Condition Condition `json:"Condition"`

	// A list of preparation instructions and who is responsible for that preparation.
	PrepDetailsList *PrepDetailsList `json:"PrepDetailsList,omitempty"`

	// The item quantity.
	Quantity Quantity `json:"Quantity"`

	// The item quantity.
	QuantityInCase *Quantity `json:"QuantityInCase,omitempty"`

	// The seller SKU of the item.
	SellerSKU string `json:"SellerSKU"`
}

// InboundShipmentPlanRequestItemList defines model for InboundShipmentPlanRequestItemList.
type InboundShipmentPlanRequestItemList []InboundShipmentPlanRequestItem

// InboundShipmentRequest defines model for InboundShipmentRequest.
type InboundShipmentRequest struct {

	// Inbound shipment information used to create and update inbound shipments.
	InboundShipmentHeader InboundShipmentHeader `json:"InboundShipmentHeader"`

	// A list of inbound shipment item information.
	InboundShipmentItems InboundShipmentItemList `json:"InboundShipmentItems"`

	// A marketplace identifier. Specifies the marketplace where the product would be stored.
	MarketplaceId string `json:"MarketplaceId"`
}

// InboundShipmentResponse defines model for InboundShipmentResponse.
type InboundShipmentResponse struct {

	// A list of error responses returned when a request is unsuccessful.
	Errors  *ErrorList             `json:"errors,omitempty"`
	Payload *InboundShipmentResult `json:"payload,omitempty"`
}

// InboundShipmentResult defines model for InboundShipmentResult.
type InboundShipmentResult struct {

	// The shipment identifier submitted in the request.
	ShipmentId string `json:"ShipmentId"`
}

// IntendedBoxContentsSource defines model for IntendedBoxContentsSource.
type IntendedBoxContentsSource string

// List of IntendedBoxContentsSource
const (
	IntendedBoxContentsSource_FEED       IntendedBoxContentsSource = "FEED"
	IntendedBoxContentsSource_NONE       IntendedBoxContentsSource = "NONE"
	IntendedBoxContentsSource__D_BARCODE IntendedBoxContentsSource = "2D_BARCODE"
)

// InvalidASIN defines model for InvalidASIN.
type InvalidASIN struct {

	// The Amazon Standard Identification Number (ASIN) of the item.
	ASIN *string `json:"ASIN,omitempty"`

	// The reason that the ASIN is invalid.
	ErrorReason *ErrorReason `json:"ErrorReason,omitempty"`
}

// InvalidASINList defines model for InvalidASINList.
type InvalidASINList []InvalidASIN

// InvalidSKU defines model for InvalidSKU.
type InvalidSKU struct {

	// The reason that the ASIN is invalid.
	ErrorReason *ErrorReason `json:"ErrorReason,omitempty"`

	// The seller SKU of the item.
	SellerSKU *string `json:"SellerSKU,omitempty"`
}

// InvalidSKUList defines model for InvalidSKUList.
type InvalidSKUList []InvalidSKU

// LabelDownloadURL defines model for LabelDownloadURL.
type LabelDownloadURL struct {

	// URL to download the label for the package. Note: The URL will only be valid for 15 seconds
	DownloadURL *string `json:"DownloadURL,omitempty"`
}

// LabelPrepPreference defines model for LabelPrepPreference.
type LabelPrepPreference string

// List of LabelPrepPreference
const (
	LabelPrepPreference_AMAZON_LABEL_ONLY      LabelPrepPreference = "AMAZON_LABEL_ONLY"
	LabelPrepPreference_AMAZON_LABEL_PREFERRED LabelPrepPreference = "AMAZON_LABEL_PREFERRED"
	LabelPrepPreference_SELLER_LABEL           LabelPrepPreference = "SELLER_LABEL"
)

// LabelPrepType defines model for LabelPrepType.
type LabelPrepType string

// List of LabelPrepType
const (
	LabelPrepType_AMAZON_LABEL LabelPrepType = "AMAZON_LABEL"
	LabelPrepType_NO_LABEL     LabelPrepType = "NO_LABEL"
	LabelPrepType_SELLER_LABEL LabelPrepType = "SELLER_LABEL"
)

// NonPartneredLtlDataInput defines model for NonPartneredLtlDataInput.
type NonPartneredLtlDataInput struct {

	// The carrier that you are using for the inbound shipment.
	CarrierName string `json:"CarrierName"`

	// The PRO number ("progressive number" or "progressive ID") assigned to the shipment by the carrier.
	ProNumber ProNumber `json:"ProNumber"`
}

// NonPartneredLtlDataOutput defines model for NonPartneredLtlDataOutput.
type NonPartneredLtlDataOutput struct {

	// The carrier that you are using for the inbound shipment.
	CarrierName string `json:"CarrierName"`

	// The PRO number ("progressive number" or "progressive ID") assigned to the shipment by the carrier.
	ProNumber ProNumber `json:"ProNumber"`
}

// NonPartneredSmallParcelDataInput defines model for NonPartneredSmallParcelDataInput.
type NonPartneredSmallParcelDataInput struct {

	// The carrier that you are using for the inbound shipment.
	CarrierName string `json:"CarrierName"`

	// A list of package tracking information.
	PackageList NonPartneredSmallParcelPackageInputList `json:"PackageList"`
}

// NonPartneredSmallParcelDataOutput defines model for NonPartneredSmallParcelDataOutput.
type NonPartneredSmallParcelDataOutput struct {

	// A list of packages, including carrier, tracking number, and status information for each package.
	PackageList NonPartneredSmallParcelPackageOutputList `json:"PackageList"`
}

// NonPartneredSmallParcelPackageInput defines model for NonPartneredSmallParcelPackageInput.
type NonPartneredSmallParcelPackageInput struct {

	// The tracking number of the package, provided by the carrier.
	TrackingId TrackingId `json:"TrackingId"`
}

// NonPartneredSmallParcelPackageInputList defines model for NonPartneredSmallParcelPackageInputList.
type NonPartneredSmallParcelPackageInputList []NonPartneredSmallParcelPackageInput

// NonPartneredSmallParcelPackageOutput defines model for NonPartneredSmallParcelPackageOutput.
type NonPartneredSmallParcelPackageOutput struct {

	// The carrier that you are using for the inbound shipment.
	CarrierName string `json:"CarrierName"`

	// The shipment status of the package.
	PackageStatus PackageStatus `json:"PackageStatus"`

	// The tracking number of the package, provided by the carrier.
	TrackingId TrackingId `json:"TrackingId"`
}

// NonPartneredSmallParcelPackageOutputList defines model for NonPartneredSmallParcelPackageOutputList.
type NonPartneredSmallParcelPackageOutputList []NonPartneredSmallParcelPackageOutput

// PackageStatus defines model for PackageStatus.
type PackageStatus string

// List of PackageStatus
const (
	PackageStatus_CHECKED_IN PackageStatus = "CHECKED_IN"
	PackageStatus_CLOSED     PackageStatus = "CLOSED"
	PackageStatus_DELETED    PackageStatus = "DELETED"
	PackageStatus_DELIVERED  PackageStatus = "DELIVERED"
	PackageStatus_IN_TRANSIT PackageStatus = "IN_TRANSIT"
	PackageStatus_RECEIVING  PackageStatus = "RECEIVING"
	PackageStatus_SHIPPED    PackageStatus = "SHIPPED"
)

// Pallet defines model for Pallet.
type Pallet struct {

	// The dimension values and unit of measurement.
	Dimensions Dimensions `json:"Dimensions"`

	// Indicates whether pallets will be stacked when carrier arrives for pick-up.
	IsStacked bool `json:"IsStacked"`

	// The weight of the package.
	Weight *Weight `json:"Weight,omitempty"`
}

// PalletList defines model for PalletList.
type PalletList []Pallet

// PartneredEstimate defines model for PartneredEstimate.
type PartneredEstimate struct {

	// The monetary value.
	Amount          Amount               `json:"Amount"`
	ConfirmDeadline *TimeStampStringType `json:"ConfirmDeadline,omitempty"`
	VoidDeadline    *TimeStampStringType `json:"VoidDeadline,omitempty"`
}

// PartneredLtlDataInput defines model for PartneredLtlDataInput.
type PartneredLtlDataInput struct {
	BoxCount *UnsignedIntType `json:"BoxCount,omitempty"`

	// Contact information for the person in the seller's organization who is responsible for a Less Than Truckload/Full Truckload (LTL/FTL) shipment.
	Contact          *Contact        `json:"Contact,omitempty"`
	FreightReadyDate *DateStringType `json:"FreightReadyDate,omitempty"`

	// A list of pallet information.
	PalletList *PalletList `json:"PalletList,omitempty"`

	// The monetary value.
	SellerDeclaredValue *Amount `json:"SellerDeclaredValue,omitempty"`

	// The freight class of the shipment. For information about determining the freight class, contact the carrier.
	SellerFreightClass *SellerFreightClass `json:"SellerFreightClass,omitempty"`

	// The weight of the package.
	TotalWeight *Weight `json:"TotalWeight,omitempty"`
}

// PartneredLtlDataOutput defines model for PartneredLtlDataOutput.
type PartneredLtlDataOutput struct {

	// The monetary value.
	AmazonCalculatedValue *Amount `json:"AmazonCalculatedValue,omitempty"`

	// A unique identifier created by Amazon that identifies this Amazon-partnered, Less Than Truckload/Full Truckload (LTL/FTL) shipment.
	AmazonReferenceId string          `json:"AmazonReferenceId"`
	BoxCount          UnsignedIntType `json:"BoxCount"`

	// The carrier for the inbound shipment.
	CarrierName string `json:"CarrierName"`

	// Contact information for the person in the seller's organization who is responsible for a Less Than Truckload/Full Truckload (LTL/FTL) shipment.
	Contact          Contact        `json:"Contact"`
	FreightReadyDate DateStringType `json:"FreightReadyDate"`

	// Indicates whether the bill of lading for the shipment is available.
	IsBillOfLadingAvailable bool `json:"IsBillOfLadingAvailable"`

	// A list of pallet information.
	PalletList PalletList `json:"PalletList"`

	// The estimated shipping cost for a shipment using an Amazon-partnered carrier.
	PartneredEstimate   *PartneredEstimate `json:"PartneredEstimate,omitempty"`
	PreviewDeliveryDate DateStringType     `json:"PreviewDeliveryDate"`

	// The freight class of the shipment. For information about determining the freight class, contact the carrier.
	PreviewFreightClass SellerFreightClass `json:"PreviewFreightClass"`
	PreviewPickupDate   DateStringType     `json:"PreviewPickupDate"`

	// The monetary value.
	SellerDeclaredValue *Amount `json:"SellerDeclaredValue,omitempty"`

	// The freight class of the shipment. For information about determining the freight class, contact the carrier.
	SellerFreightClass *SellerFreightClass `json:"SellerFreightClass,omitempty"`

	// The weight of the package.
	TotalWeight Weight `json:"TotalWeight"`
}

// PartneredSmallParcelDataInput defines model for PartneredSmallParcelDataInput.
type PartneredSmallParcelDataInput struct {

	// The Amazon-partnered carrier to use for the inbound shipment.
	CarrierName *string `json:"CarrierName,omitempty"`

	// A list of dimensions and weight information for packages.
	PackageList *PartneredSmallParcelPackageInputList `json:"PackageList,omitempty"`
}

// PartneredSmallParcelDataOutput defines model for PartneredSmallParcelDataOutput.
type PartneredSmallParcelDataOutput struct {

	// A list of packages, including shipping information from the Amazon-partnered carrier.
	PackageList PartneredSmallParcelPackageOutputList `json:"PackageList"`

	// The estimated shipping cost for a shipment using an Amazon-partnered carrier.
	PartneredEstimate *PartneredEstimate `json:"PartneredEstimate,omitempty"`
}

// PartneredSmallParcelPackageInput defines model for PartneredSmallParcelPackageInput.
type PartneredSmallParcelPackageInput struct {

	// The dimension values and unit of measurement.
	Dimensions Dimensions `json:"Dimensions"`

	// The weight of the package.
	Weight Weight `json:"Weight"`
}

// PartneredSmallParcelPackageInputList defines model for PartneredSmallParcelPackageInputList.
type PartneredSmallParcelPackageInputList []PartneredSmallParcelPackageInput

// PartneredSmallParcelPackageOutput defines model for PartneredSmallParcelPackageOutput.
type PartneredSmallParcelPackageOutput struct {

	// The carrier specified with a previous call to putTransportDetails.
	CarrierName string `json:"CarrierName"`

	// The dimension values and unit of measurement.
	Dimensions Dimensions `json:"Dimensions"`

	// The shipment status of the package.
	PackageStatus PackageStatus `json:"PackageStatus"`

	// The tracking number of the package, provided by the carrier.
	TrackingId TrackingId `json:"TrackingId"`

	// The weight of the package.
	Weight Weight `json:"Weight"`
}

// PartneredSmallParcelPackageOutputList defines model for PartneredSmallParcelPackageOutputList.
type PartneredSmallParcelPackageOutputList []PartneredSmallParcelPackageOutput

// PrepDetails defines model for PrepDetails.
type PrepDetails struct {

	// Preparation instructions for shipping an item to Amazon's fulfillment network. For more information about preparing items for shipment to Amazon's fulfillment network, see the Seller Central Help for your marketplace.
	PrepInstruction PrepInstruction `json:"PrepInstruction"`

	// Indicates who will prepare the item.
	PrepOwner PrepOwner `json:"PrepOwner"`
}

// PrepDetailsList defines model for PrepDetailsList.
type PrepDetailsList []PrepDetails

// PrepGuidance defines model for PrepGuidance.
type PrepGuidance string

// List of PrepGuidance
const (
	PrepGuidance_ConsultHelpDocuments     PrepGuidance = "ConsultHelpDocuments"
	PrepGuidance_NoAdditionalPrepRequired PrepGuidance = "NoAdditionalPrepRequired"
	PrepGuidance_SeePrepInstructionsList  PrepGuidance = "SeePrepInstructionsList"
)

// PrepInstruction defines model for PrepInstruction.
type PrepInstruction string

// List of PrepInstruction
const (
	PrepInstruction_BlackShrinkWrapping PrepInstruction = "BlackShrinkWrapping"
	PrepInstruction_BubbleWrapping      PrepInstruction = "BubbleWrapping"
	PrepInstruction_HangGarment         PrepInstruction = "HangGarment"
	PrepInstruction_Labeling            PrepInstruction = "Labeling"
	PrepInstruction_Polybagging         PrepInstruction = "Polybagging"
	PrepInstruction_Taping              PrepInstruction = "Taping"
)

// PrepInstructionList defines model for PrepInstructionList.
type PrepInstructionList []PrepInstruction

// PrepOwner defines model for PrepOwner.
type PrepOwner string

// List of PrepOwner
const (
	PrepOwner_AMAZON PrepOwner = "AMAZON"
	PrepOwner_SELLER PrepOwner = "SELLER"
)

// ProNumber defines model for ProNumber.
type ProNumber string

// PutTransportDetailsRequest defines model for PutTransportDetailsRequest.
type PutTransportDetailsRequest struct {

	// Indicates whether a putTransportDetails request is for an Amazon-partnered carrier.
	IsPartnered bool `json:"IsPartnered"`

	// Specifies the carrier shipment type in a putTransportDetails request.
	ShipmentType ShipmentType `json:"ShipmentType"`

	// Information required to create an Amazon-partnered carrier shipping estimate, or to alert the Amazon fulfillment center to the arrival of an inbound shipment by a non-Amazon-partnered carrier.
	TransportDetails TransportDetailInput `json:"TransportDetails"`
}

// PutTransportDetailsResponse defines model for PutTransportDetailsResponse.
type PutTransportDetailsResponse struct {

	// A list of error responses returned when a request is unsuccessful.
	Errors  *ErrorList             `json:"errors,omitempty"`
	Payload *CommonTransportResult `json:"payload,omitempty"`
}

// Quantity defines model for Quantity.
type Quantity int32

// SKUInboundGuidance defines model for SKUInboundGuidance.
type SKUInboundGuidance struct {

	// The Amazon Standard Identification Number (ASIN) of the item.
	ASIN string `json:"ASIN"`

	// A list of inbound guidance reason information.
	GuidanceReasonList *GuidanceReasonList `json:"GuidanceReasonList,omitempty"`

	// Specific inbound guidance for an item.
	InboundGuidance InboundGuidance `json:"InboundGuidance"`

	// The seller SKU of the item.
	SellerSKU string `json:"SellerSKU"`
}

// SKUInboundGuidanceList defines model for SKUInboundGuidanceList.
type SKUInboundGuidanceList []SKUInboundGuidance

// SKUPrepInstructions defines model for SKUPrepInstructions.
type SKUPrepInstructions struct {

	// The Amazon Standard Identification Number (ASIN) of the item.
	ASIN *string `json:"ASIN,omitempty"`

	// A list of preparation instructions and fees for Amazon to prep goods for shipment.
	AmazonPrepFeesDetailsList *AmazonPrepFeesDetailsList `json:"AmazonPrepFeesDetailsList,omitempty"`

	// Labeling requirements for the item. For more information about FBA labeling requirements, see the Seller Central Help for your marketplace.
	BarcodeInstruction *BarcodeInstruction `json:"BarcodeInstruction,omitempty"`

	// Item preparation instructions.
	PrepGuidance *PrepGuidance `json:"PrepGuidance,omitempty"`

	// A list of preparation instructions to help with item sourcing decisions.
	PrepInstructionList *PrepInstructionList `json:"PrepInstructionList,omitempty"`

	// The seller SKU of the item.
	SellerSKU *string `json:"SellerSKU,omitempty"`
}

// SKUPrepInstructionsList defines model for SKUPrepInstructionsList.
type SKUPrepInstructionsList []SKUPrepInstructions

// SellerFreightClass defines model for SellerFreightClass.
type SellerFreightClass string

// List of SellerFreightClass
const (
	SellerFreightClass__0   SellerFreightClass = "50"
	SellerFreightClass__00  SellerFreightClass = "100"
	SellerFreightClass__001 SellerFreightClass = "500"
	SellerFreightClass__01  SellerFreightClass = "70"
	SellerFreightClass__10  SellerFreightClass = "110"
	SellerFreightClass__25  SellerFreightClass = "125"
	SellerFreightClass__2_5 SellerFreightClass = "92.5"
	SellerFreightClass__5   SellerFreightClass = "55"
	SellerFreightClass__50  SellerFreightClass = "150"
	SellerFreightClass__501 SellerFreightClass = "250"
	SellerFreightClass__51  SellerFreightClass = "85"
	SellerFreightClass__75  SellerFreightClass = "175"
	SellerFreightClass__7_5 SellerFreightClass = "77.5"
)

// ShipmentStatus defines model for ShipmentStatus.
type ShipmentStatus string

// List of ShipmentStatus
const (
	ShipmentStatus_CANCELLED  ShipmentStatus = "CANCELLED"
	ShipmentStatus_CHECKED_IN ShipmentStatus = "CHECKED_IN"
	ShipmentStatus_CLOSED     ShipmentStatus = "CLOSED"
	ShipmentStatus_DELETED    ShipmentStatus = "DELETED"
	ShipmentStatus_DELIVERED  ShipmentStatus = "DELIVERED"
	ShipmentStatus_ERROR      ShipmentStatus = "ERROR"
	ShipmentStatus_IN_TRANSIT ShipmentStatus = "IN_TRANSIT"
	ShipmentStatus_RECEIVING  ShipmentStatus = "RECEIVING"
	ShipmentStatus_SHIPPED    ShipmentStatus = "SHIPPED"
	ShipmentStatus_WORKING    ShipmentStatus = "WORKING"
)

// ShipmentType defines model for ShipmentType.
type ShipmentType string

// List of ShipmentType
const (
	ShipmentType_LTL ShipmentType = "LTL"
	ShipmentType_SP  ShipmentType = "SP"
)

// TimeStampStringType defines model for TimeStampStringType.
type TimeStampStringType time.Time

// TrackingId defines model for TrackingId.
type TrackingId string

// TransportContent defines model for TransportContent.
type TransportContent struct {

	// Inbound shipment information, including carrier details and shipment status.
	TransportDetails TransportDetailOutput `json:"TransportDetails"`

	// The shipping identifier, information about whether the shipment is by an Amazon-partnered carrier, and information about whether the shipment is Small Parcel or Less Than Truckload/Full Truckload (LTL/FTL).
	TransportHeader TransportHeader `json:"TransportHeader"`

	// The workflow status for a shipment with an Amazon-partnered carrier.
	TransportResult TransportResult `json:"TransportResult"`
}

// TransportDetailInput defines model for TransportDetailInput.
type TransportDetailInput struct {

	// Information that you provide to Amazon about a Less Than Truckload/Full Truckload (LTL/FTL) shipment by a carrier that has not partnered with Amazon.
	NonPartneredLtlData *NonPartneredLtlDataInput `json:"NonPartneredLtlData,omitempty"`

	// Information that you provide to Amazon about a Small Parcel shipment shipped by a carrier that has not partnered with Amazon.
	NonPartneredSmallParcelData *NonPartneredSmallParcelDataInput `json:"NonPartneredSmallParcelData,omitempty"`

	// Information that is required by an Amazon-partnered carrier to ship a Less Than Truckload/Full Truckload (LTL/FTL) inbound shipment.
	PartneredLtlData *PartneredLtlDataInput `json:"PartneredLtlData,omitempty"`

	// Information that is required by an Amazon-partnered carrier to ship a Small Parcel inbound shipment.
	PartneredSmallParcelData *PartneredSmallParcelDataInput `json:"PartneredSmallParcelData,omitempty"`
}

// TransportDetailOutput defines model for TransportDetailOutput.
type TransportDetailOutput struct {

	// Information returned by Amazon about a Less Than Truckload/Full Truckload (LTL/FTL) shipment shipped by a carrier that has not partnered with Amazon.
	NonPartneredLtlData *NonPartneredLtlDataOutput `json:"NonPartneredLtlData,omitempty"`

	// Information returned by Amazon about a Small Parcel shipment by a carrier that has not partnered with Amazon.
	NonPartneredSmallParcelData *NonPartneredSmallParcelDataOutput `json:"NonPartneredSmallParcelData,omitempty"`

	// Information returned by Amazon about a Less Than Truckload/Full Truckload (LTL/FTL) shipment by an Amazon-partnered carrier.
	PartneredLtlData *PartneredLtlDataOutput `json:"PartneredLtlData,omitempty"`

	// Information returned by Amazon about a Small Parcel shipment by an Amazon-partnered carrier.
	PartneredSmallParcelData *PartneredSmallParcelDataOutput `json:"PartneredSmallParcelData,omitempty"`
}

// TransportHeader defines model for TransportHeader.
type TransportHeader struct {

	// Indicates whether a putTransportDetails request is for a partnered carrier.
	//
	// Possible values:
	//
	// * true – Request is for an Amazon-partnered carrier.
	//
	// * false – Request is for a non-Amazon-partnered carrier.
	IsPartnered bool `json:"IsPartnered"`

	// The Amazon seller identifier.
	SellerId string `json:"SellerId"`

	// A shipment identifier originally returned by the createInboundShipmentPlan operation.
	ShipmentId string `json:"ShipmentId"`

	// Specifies the carrier shipment type in a putTransportDetails request.
	ShipmentType ShipmentType `json:"ShipmentType"`
}

// TransportResult defines model for TransportResult.
type TransportResult struct {

	// An error code that identifies the type of error that occured.
	ErrorCode *string `json:"ErrorCode,omitempty"`

	// A message that describes the error condition.
	ErrorDescription *string `json:"ErrorDescription,omitempty"`

	// Indicates the status of the Amazon-partnered carrier shipment.
	TransportStatus TransportStatus `json:"TransportStatus"`
}

// TransportStatus defines model for TransportStatus.
type TransportStatus string

// List of TransportStatus
const (
	TransportStatus_CONFIRMED           TransportStatus = "CONFIRMED"
	TransportStatus_CONFIRMING          TransportStatus = "CONFIRMING"
	TransportStatus_ERROR               TransportStatus = "ERROR"
	TransportStatus_ERROR_IN_VOIDING    TransportStatus = "ERROR_IN_VOIDING"
	TransportStatus_ERROR_ON_CONFIRMING TransportStatus = "ERROR_ON_CONFIRMING"
	TransportStatus_ERROR_ON_ESTIMATING TransportStatus = "ERROR_ON_ESTIMATING"
	TransportStatus_ESTIMATED           TransportStatus = "ESTIMATED"
	TransportStatus_ESTIMATING          TransportStatus = "ESTIMATING"
	TransportStatus_VOIDED              TransportStatus = "VOIDED"
	TransportStatus_VOIDING             TransportStatus = "VOIDING"
	TransportStatus_WORKING             TransportStatus = "WORKING"
)

// UnitOfMeasurement defines model for UnitOfMeasurement.
type UnitOfMeasurement string

// List of UnitOfMeasurement
const (
	UnitOfMeasurement_centimeters UnitOfMeasurement = "centimeters"
	UnitOfMeasurement_inches      UnitOfMeasurement = "inches"
)

// UnitOfWeight defines model for UnitOfWeight.
type UnitOfWeight string

// List of UnitOfWeight
const (
	UnitOfWeight_kilograms UnitOfWeight = "kilograms"
	UnitOfWeight_pounds    UnitOfWeight = "pounds"
)

// UnsignedIntType defines model for UnsignedIntType.
type UnsignedIntType int64

// VoidTransportResponse defines model for VoidTransportResponse.
type VoidTransportResponse struct {

	// A list of error responses returned when a request is unsuccessful.
	Errors  *ErrorList             `json:"errors,omitempty"`
	Payload *CommonTransportResult `json:"payload,omitempty"`
}

// Weight defines model for Weight.
type Weight struct {

	// Indicates the unit of weight.
	Unit  UnitOfWeight   `json:"Unit"`
	Value BigDecimalType `json:"Value"`
}

// GetInboundGuidanceParams defines parameters for GetInboundGuidance.
type GetInboundGuidanceParams struct {

	// A marketplace identifier. Specifies the marketplace where the product would be stored.
	MarketplaceId string `json:"MarketplaceId"`

	// A list of SellerSKU values. Used to identify items for which you want inbound guidance for shipment to Amazon's fulfillment network. Note: SellerSKU is qualified by the SellerId, which is included with every Selling Partner API operation that you submit. If you specify a SellerSKU that identifies a variation parent ASIN, this operation returns an error. A variation parent ASIN represents a generic product that cannot be sold. Variation child ASINs represent products that have specific characteristics (such as size and color) and can be sold.
	SellerSKUList *[]string `json:"SellerSKUList,omitempty"`

	// A list of ASIN values. Used to identify items for which you want inbound guidance for shipment to Amazon's fulfillment network. Note: If you specify a ASIN that identifies a variation parent ASIN, this operation returns an error. A variation parent ASIN represents a generic product that cannot be sold. Variation child ASINs represent products that have specific characteristics (such as size and color) and can be sold.
	ASINList *[]string `json:"ASINList,omitempty"`
}

// CreateInboundShipmentPlanJSONBody defines parameters for CreateInboundShipmentPlan.
type CreateInboundShipmentPlanJSONBody CreateInboundShipmentPlanRequest

// GetPrepInstructionsParams defines parameters for GetPrepInstructions.
type GetPrepInstructionsParams struct {

	// The country code of the country to which the items will be shipped. Note that labeling requirements and item preparation instructions can vary by country.
	ShipToCountryCode string `json:"ShipToCountryCode"`

	// A list of SellerSKU values. Used to identify items for which you want labeling requirements and item preparation instructions for shipment to Amazon's fulfillment network. The SellerSKU is qualified by the Seller ID, which is included with every call to the Seller Partner API.
	//
	// Note: Include seller SKUs that you have used to list items on Amazon's retail website. If you include a seller SKU that you have never used to list an item on Amazon's retail website, the seller SKU is returned in the InvalidSKUList property in the response.
	SellerSKUList *[]string `json:"SellerSKUList,omitempty"`

	// A list of ASIN values. Used to identify items for which you want item preparation instructions to help with item sourcing decisions.
	//
	// Note: ASINs must be included in the product catalog for at least one of the marketplaces that the seller  participates in. Any ASIN that is not included in the product catalog for at least one of the marketplaces that the seller participates in is returned in the InvalidASINList property in the response. You can find out which marketplaces a seller participates in by calling the getMarketplaceParticipations operation in the Selling Partner API for Sellers.
	ASINList *[]string `json:"ASINList,omitempty"`
}

// GetShipmentItemsParams defines parameters for GetShipmentItems.
type GetShipmentItemsParams struct {

	// A date used for selecting inbound shipment items that were last updated after (or at) a specified time. The selection includes updates made by Amazon and by the seller.
	LastUpdatedAfter *time.Time `json:"LastUpdatedAfter,omitempty"`

	// A date used for selecting inbound shipment items that were last updated before (or at) a specified time. The selection includes updates made by Amazon and by the seller.
	LastUpdatedBefore *time.Time `json:"LastUpdatedBefore,omitempty"`

	// Indicates whether items are returned using a date range (by providing the LastUpdatedAfter and LastUpdatedBefore parameters), or using NextToken, which continues returning items specified in a previous request.
	QueryType string `json:"QueryType"`

	// A string token returned in the response to your previous request.
	NextToken *string `json:"NextToken,omitempty"`

	// A marketplace identifier. Specifies the marketplace where the product would be stored.
	MarketplaceId string `json:"MarketplaceId"`
}

// GetShipmentsParams defines parameters for GetShipments.
type GetShipmentsParams struct {

	// A list of ShipmentStatus values. Used to select shipments with a current status that matches the status values that you specify.
	ShipmentStatusList *[]string `json:"ShipmentStatusList,omitempty"`

	// A list of shipment IDs used to select the shipments that you want. If both ShipmentStatusList and ShipmentIdList are specified, only shipments that match both parameters are returned.
	ShipmentIdList *[]string `json:"ShipmentIdList,omitempty"`

	// A date used for selecting inbound shipments that were last updated after (or at) a specified time. The selection includes updates made by Amazon and by the seller.
	LastUpdatedAfter *time.Time `json:"LastUpdatedAfter,omitempty"`

	// A date used for selecting inbound shipments that were last updated before (or at) a specified time. The selection includes updates made by Amazon and by the seller.
	LastUpdatedBefore *time.Time `json:"LastUpdatedBefore,omitempty"`

	// Indicates whether shipments are returned using shipment information (by providing the ShipmentStatusList or ShipmentIdList parameters), using a date range (by providing the LastUpdatedAfter and LastUpdatedBefore parameters), or by using NextToken to continue returning items specified in a previous request.
	QueryType string `json:"QueryType"`

	// A string token returned in the response to your previous request.
	NextToken *string `json:"NextToken,omitempty"`

	// A marketplace identifier. Specifies the marketplace where the product would be stored.
	MarketplaceId string `json:"MarketplaceId"`
}

// CreateInboundShipmentJSONBody defines parameters for CreateInboundShipment.
type CreateInboundShipmentJSONBody InboundShipmentRequest

// UpdateInboundShipmentJSONBody defines parameters for UpdateInboundShipment.
type UpdateInboundShipmentJSONBody InboundShipmentRequest

// GetShipmentItemsByShipmentIdParams defines parameters for GetShipmentItemsByShipmentId.
type GetShipmentItemsByShipmentIdParams struct {

	// A marketplace identifier. Specifies the marketplace where the product would be stored.
	MarketplaceId string `json:"MarketplaceId"`
}

// GetLabelsParams defines parameters for GetLabels.
type GetLabelsParams struct {

	// The page type to use to print the labels. Submitting a PageType value that is not supported in your marketplace returns an error.
	PageType string `json:"PageType"`

	// The type of labels requested.
	LabelType string `json:"LabelType"`

	// The number of packages in the shipment.
	NumberOfPackages *int `json:"NumberOfPackages,omitempty"`

	// A list of identifiers that specify packages for which you want package labels printed.
	//
	// Must match CartonId values previously passed using the FBA Inbound Shipment Carton Information Feed. If not, the operation returns the IncorrectPackageIdentifier error code.
	PackageLabelsToPrint *[]string `json:"PackageLabelsToPrint,omitempty"`

	// The number of pallets in the shipment. This returns four identical labels for each pallet.
	NumberOfPallets *int `json:"NumberOfPallets,omitempty"`
}

// GetPreorderInfoParams defines parameters for GetPreorderInfo.
type GetPreorderInfoParams struct {

	// A marketplace identifier. Specifies the marketplace the shipment is tied to.
	MarketplaceId string `json:"MarketplaceId"`
}

// ConfirmPreorderParams defines parameters for ConfirmPreorder.
type ConfirmPreorderParams struct {

	// Date that the shipment must arrive at the Amazon fulfillment center to avoid delivery promise breaks for pre-ordered items. Must be in YYYY-MM-DD format. The response to the getPreorderInfo operation returns this value.
	NeedByDate openapi_types.Date `json:"NeedByDate"`

	// A marketplace identifier. Specifies the marketplace the shipment is tied to.
	MarketplaceId string `json:"MarketplaceId"`
}

// PutTransportDetailsJSONBody defines parameters for PutTransportDetails.
type PutTransportDetailsJSONBody PutTransportDetailsRequest

// CreateInboundShipmentPlanRequestBody defines body for CreateInboundShipmentPlan for application/json ContentType.
type CreateInboundShipmentPlanJSONRequestBody CreateInboundShipmentPlanJSONBody

// CreateInboundShipmentRequestBody defines body for CreateInboundShipment for application/json ContentType.
type CreateInboundShipmentJSONRequestBody CreateInboundShipmentJSONBody

// UpdateInboundShipmentRequestBody defines body for UpdateInboundShipment for application/json ContentType.
type UpdateInboundShipmentJSONRequestBody UpdateInboundShipmentJSONBody

// PutTransportDetailsRequestBody defines body for PutTransportDetails for application/json ContentType.
type PutTransportDetailsJSONRequestBody PutTransportDetailsJSONBody
