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

import (
	"time"
)

// AdditionalLocationInfo defines model for AdditionalLocationInfo.
type AdditionalLocationInfo string

// List of AdditionalLocationInfo
const (
	AdditionalLocationInfo_AS_INSTRUCTED   AdditionalLocationInfo = "AS_INSTRUCTED"
	AdditionalLocationInfo_CARPORT         AdditionalLocationInfo = "CARPORT"
	AdditionalLocationInfo_CUSTOMER_PICKUP AdditionalLocationInfo = "CUSTOMER_PICKUP"
	AdditionalLocationInfo_DECK            AdditionalLocationInfo = "DECK"
	AdditionalLocationInfo_DOOR_PERSON     AdditionalLocationInfo = "DOOR_PERSON"
	AdditionalLocationInfo_FRONT_DESK      AdditionalLocationInfo = "FRONT_DESK"
	AdditionalLocationInfo_FRONT_DOOR      AdditionalLocationInfo = "FRONT_DOOR"
	AdditionalLocationInfo_GARAGE          AdditionalLocationInfo = "GARAGE"
	AdditionalLocationInfo_GUARD           AdditionalLocationInfo = "GUARD"
	AdditionalLocationInfo_MAILBOX         AdditionalLocationInfo = "MAILBOX"
	AdditionalLocationInfo_MAIL_ROOM       AdditionalLocationInfo = "MAIL_ROOM"
	AdditionalLocationInfo_MAIL_SLOT       AdditionalLocationInfo = "MAIL_SLOT"
	AdditionalLocationInfo_MC_BOY          AdditionalLocationInfo = "MC_BOY"
	AdditionalLocationInfo_MC_GIRL         AdditionalLocationInfo = "MC_GIRL"
	AdditionalLocationInfo_MC_MAN          AdditionalLocationInfo = "MC_MAN"
	AdditionalLocationInfo_MC_WOMAN        AdditionalLocationInfo = "MC_WOMAN"
	AdditionalLocationInfo_NEIGHBOR        AdditionalLocationInfo = "NEIGHBOR"
	AdditionalLocationInfo_OFFICE          AdditionalLocationInfo = "OFFICE"
	AdditionalLocationInfo_OUTBUILDING     AdditionalLocationInfo = "OUTBUILDING"
	AdditionalLocationInfo_PATIO           AdditionalLocationInfo = "PATIO"
	AdditionalLocationInfo_PORCH           AdditionalLocationInfo = "PORCH"
	AdditionalLocationInfo_REAR_DOOR       AdditionalLocationInfo = "REAR_DOOR"
	AdditionalLocationInfo_RECEIVER        AdditionalLocationInfo = "RECEIVER"
	AdditionalLocationInfo_RECEPTIONIST    AdditionalLocationInfo = "RECEPTIONIST"
	AdditionalLocationInfo_SECURE_LOCATION AdditionalLocationInfo = "SECURE_LOCATION"
	AdditionalLocationInfo_SIDE_DOOR       AdditionalLocationInfo = "SIDE_DOOR"
)

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

	// The first line of the address.
	AddressLine1 string `json:"addressLine1"`

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

	// Additional address information, if required.
	AddressLine3 *string `json:"addressLine3,omitempty"`

	// The city where the person, business, or institution is located.
	City *string `json:"city,omitempty"`

	// The two digit country code. In ISO 3166-1 alpha-2 format.
	CountryCode string `json:"countryCode"`

	// The district or county where the person, business, or institution is located.
	DistrictOrCounty string `json:"districtOrCounty"`

	// The name of the person, business or institution at the address.
	Name string `json:"name"`

	// The phone number of the person, business, or institution located at the address.
	Phone *string `json:"phone,omitempty"`

	// The postal code of the address.
	PostalCode *string `json:"postalCode,omitempty"`

	// The state or region where the person, business or institution is located.
	StateOrRegion *string `json:"stateOrRegion,omitempty"`
}

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

	// An amount of money, including units in the form of currency.
	CodCharge *Money `json:"codCharge,omitempty"`

	// An amount of money, including units in the form of currency.
	CodChargeTax *Money `json:"codChargeTax,omitempty"`

	// When true, this fulfillment order requires a COD (Cash On Delivery) payment.
	IsCodRequired bool `json:"isCodRequired"`

	// An amount of money, including units in the form of currency.
	ShippingCharge *Money `json:"shippingCharge,omitempty"`

	// An amount of money, including units in the form of currency.
	ShippingChargeTax *Money `json:"shippingChargeTax,omitempty"`
}

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

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

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

	// Item-specific text that displays in recipient-facing materials such as the outbound shipment packing slip.
	DisplayableComment *string `json:"displayableComment,omitempty"`

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

	// A message to the gift recipient, if applicable.
	GiftMessage *string `json:"giftMessage,omitempty"`

	// An amount of money, including units in the form of currency.
	PerUnitDeclaredValue *Money `json:"perUnitDeclaredValue,omitempty"`

	// An amount of money, including units in the form of currency.
	PerUnitPrice *Money `json:"perUnitPrice,omitempty"`

	// An amount of money, including units in the form of currency.
	PerUnitTax *Money `json:"perUnitTax,omitempty"`

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

	// A fulfillment order item identifier that the seller creates to track fulfillment order items. Used to disambiguate multiple fulfillment items that have the same SellerSKU. For example, the seller might assign different SellerFulfillmentOrderItemId values to two items in a fulfillment order that share the same SellerSKU but have different GiftMessage values.
	SellerFulfillmentOrderItemId string `json:"sellerFulfillmentOrderItemId"`

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

// CreateFulfillmentOrderItemList defines model for CreateFulfillmentOrderItemList.
type CreateFulfillmentOrderItemList []CreateFulfillmentOrderItem

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

	// The COD (Cash On Delivery) charges that you associate with a COD fulfillment order.
	CodSettings *CODSettings `json:"codSettings,omitempty"`

	// The time range within which a Scheduled Delivery fulfillment order should be delivered.
	DeliveryWindow *DeliveryWindow `json:"deliveryWindow,omitempty"`

	// A physical address.
	DestinationAddress Address `json:"destinationAddress"`

	// Order-specific text that appears in recipient-facing materials such as the outbound shipment packing slip.
	DisplayableOrderComment string    `json:"displayableOrderComment"`
	DisplayableOrderDate    Timestamp `json:"displayableOrderDate"`

	// A fulfillment order identifier that the seller creates. This value displays as the order identifier in recipient-facing materials such as the outbound shipment packing slip. The value of DisplayableOrderId should match the order identifier that the seller provides to the recipient. The seller can use the SellerFulfillmentOrderId for this value or they can specify an alternate value if they want the recipient to reference an alternate order identifier.
	//
	// The value must be an alpha-numeric or ISO 8859-1 compliant string from one to 40 characters in length. Cannot contain two spaces in a row. Leading and trailing white space is removed.
	DisplayableOrderId string `json:"displayableOrderId"`

	// A list of features and their fulfillment policies to apply to the order.
	FeatureConstraints *[]FeatureSettings `json:"featureConstraints,omitempty"`

	// Specifies whether the fulfillment order should ship now or have an order hold put on it.
	FulfillmentAction *FulfillmentAction `json:"fulfillmentAction,omitempty"`

	// The FulfillmentPolicy value specified when you submitted the createFulfillmentOrder operation.
	FulfillmentPolicy *FulfillmentPolicy `json:"fulfillmentPolicy,omitempty"`

	// An array of item information for creating a fulfillment order.
	Items CreateFulfillmentOrderItemList `json:"items"`

	// The marketplace the fulfillment order is placed against.
	MarketplaceId *string `json:"marketplaceId,omitempty"`

	// A list of email addresses that the seller provides that are used by Amazon to send ship-complete notifications to recipients on behalf of the seller.
	NotificationEmails *NotificationEmailList `json:"notificationEmails,omitempty"`

	// A fulfillment order identifier that the seller creates to track their fulfillment order. The SellerFulfillmentOrderId must be unique for each fulfillment order that a seller creates. If the seller's system already creates unique order identifiers, then these might be good values for them to use.
	SellerFulfillmentOrderId string `json:"sellerFulfillmentOrderId"`

	// The two-character country code for the country from which the fulfillment order ships. Must be in ISO 3166-1 alpha-2 format.
	ShipFromCountryCode *string `json:"shipFromCountryCode,omitempty"`

	// The shipping method used for the fulfillment order.
	ShippingSpeedCategory ShippingSpeedCategory `json:"shippingSpeedCategory"`
}

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

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

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

	// An array of items to be returned.
	Items CreateReturnItemList `json:"items"`
}

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

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

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

	// An array of invalid return item information.
	InvalidReturnItems *InvalidReturnItemList `json:"invalidReturnItems,omitempty"`

	// An array of return authorization information.
	ReturnAuthorizations *ReturnAuthorizationList `json:"returnAuthorizations,omitempty"`

	// An array of items that Amazon accepted for return. Returns empty if no items were accepted for return.
	ReturnItems *ReturnItemList `json:"returnItems,omitempty"`
}

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

	// The identifier for the shipment that is associated with the return item.
	AmazonShipmentId string `json:"amazonShipmentId"`

	// An optional comment about the return item.
	ReturnComment *string `json:"returnComment,omitempty"`

	// The return reason code assigned to the return item by the seller.
	ReturnReasonCode string `json:"returnReasonCode"`

	// The identifier assigned to the item by the seller when the fulfillment order was created.
	SellerFulfillmentOrderItemId string `json:"sellerFulfillmentOrderItemId"`

	// An identifier assigned by the seller to the return item.
	SellerReturnItemId string `json:"sellerReturnItemId"`
}

// CreateReturnItemList defines model for CreateReturnItemList.
type CreateReturnItemList []CreateReturnItem

// CurrentStatus defines model for CurrentStatus.
type CurrentStatus string

// List of CurrentStatus
const (
	CurrentStatus_AVAILABLE_FOR_PICKUP CurrentStatus = "AVAILABLE_FOR_PICKUP"
	CurrentStatus_CUSTOMER_ACTION      CurrentStatus = "CUSTOMER_ACTION"
	CurrentStatus_DELAYED              CurrentStatus = "DELAYED"
	CurrentStatus_DELIVERED            CurrentStatus = "DELIVERED"
	CurrentStatus_IN_TRANSIT           CurrentStatus = "IN_TRANSIT"
	CurrentStatus_RETURNED             CurrentStatus = "RETURNED"
	CurrentStatus_RETURNING            CurrentStatus = "RETURNING"
	CurrentStatus_UNDELIVERABLE        CurrentStatus = "UNDELIVERABLE"
)

// Decimal defines model for Decimal.
type Decimal string

// DeliveryWindow defines model for DeliveryWindow.
type DeliveryWindow struct {
	EndDate   Timestamp `json:"endDate"`
	StartDate Timestamp `json:"startDate"`
}

// DeliveryWindowList defines model for DeliveryWindowList.
type DeliveryWindowList []DeliveryWindow

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

	// An error code that identifies the type of error that occurred.
	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.
	Message string `json:"message"`
}

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

// EventCode defines model for EventCode.
type EventCode string

// List of EventCode
const (
	EventCode_EVENT_101 EventCode = "EVENT_101"
	EventCode_EVENT_102 EventCode = "EVENT_102"
	EventCode_EVENT_201 EventCode = "EVENT_201"
	EventCode_EVENT_202 EventCode = "EVENT_202"
	EventCode_EVENT_203 EventCode = "EVENT_203"
	EventCode_EVENT_204 EventCode = "EVENT_204"
	EventCode_EVENT_205 EventCode = "EVENT_205"
	EventCode_EVENT_206 EventCode = "EVENT_206"
	EventCode_EVENT_301 EventCode = "EVENT_301"
	EventCode_EVENT_302 EventCode = "EVENT_302"
	EventCode_EVENT_304 EventCode = "EVENT_304"
	EventCode_EVENT_306 EventCode = "EVENT_306"
	EventCode_EVENT_307 EventCode = "EVENT_307"
	EventCode_EVENT_308 EventCode = "EVENT_308"
	EventCode_EVENT_309 EventCode = "EVENT_309"
	EventCode_EVENT_401 EventCode = "EVENT_401"
	EventCode_EVENT_402 EventCode = "EVENT_402"
	EventCode_EVENT_403 EventCode = "EVENT_403"
	EventCode_EVENT_404 EventCode = "EVENT_404"
	EventCode_EVENT_405 EventCode = "EVENT_405"
	EventCode_EVENT_406 EventCode = "EVENT_406"
	EventCode_EVENT_407 EventCode = "EVENT_407"
	EventCode_EVENT_408 EventCode = "EVENT_408"
	EventCode_EVENT_409 EventCode = "EVENT_409"
	EventCode_EVENT_411 EventCode = "EVENT_411"
	EventCode_EVENT_412 EventCode = "EVENT_412"
	EventCode_EVENT_413 EventCode = "EVENT_413"
	EventCode_EVENT_414 EventCode = "EVENT_414"
	EventCode_EVENT_415 EventCode = "EVENT_415"
	EventCode_EVENT_416 EventCode = "EVENT_416"
	EventCode_EVENT_417 EventCode = "EVENT_417"
	EventCode_EVENT_418 EventCode = "EVENT_418"
	EventCode_EVENT_419 EventCode = "EVENT_419"
)

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

	// The feature description.
	FeatureDescription string `json:"featureDescription"`

	// The feature name.
	FeatureName string `json:"featureName"`

	// When true, indicates that the seller is eligible to use the feature.
	SellerEligible *bool `json:"sellerEligible,omitempty"`
}

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

	// Specifies the policy to use when fulfilling an order.
	FeatureFulfillmentPolicy *string `json:"featureFulfillmentPolicy,omitempty"`

	// The name of the feature.
	FeatureName *string `json:"featureName,omitempty"`
}

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

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

	// The unique SKU used by Amazon's fulfillment network.
	FnSku *string `json:"fnSku,omitempty"`

	// Other seller SKUs that are shared across the same inventory.
	OverlappingSkus *[]string `json:"overlappingSkus,omitempty"`

	// Used to identify an item in the given marketplace. SellerSKU is qualified by the seller's SellerId, which is included with every operation that you submit.
	SellerSku *string `json:"sellerSku,omitempty"`

	// The number of SKUs available for this service.
	SkuCount *float32 `json:"skuCount,omitempty"`
}

// Features defines model for Features.
type Features []Feature

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

	// An amount of money, including units in the form of currency.
	Amount Money `json:"amount"`

	// The type of fee.
	Name string `json:"name"`
}

// FeeList defines model for FeeList.
type FeeList []Fee

// FulfillmentAction defines model for FulfillmentAction.
type FulfillmentAction string

// List of FulfillmentAction
const (
	FulfillmentAction_Hold FulfillmentAction = "Hold"
	FulfillmentAction_Ship FulfillmentAction = "Ship"
)

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

	// The COD (Cash On Delivery) charges that you associate with a COD fulfillment order.
	CodSettings *CODSettings `json:"codSettings,omitempty"`

	// The time range within which a Scheduled Delivery fulfillment order should be delivered.
	DeliveryWindow *DeliveryWindow `json:"deliveryWindow,omitempty"`

	// A physical address.
	DestinationAddress Address `json:"destinationAddress"`

	// A text block submitted with the createFulfillmentOrder operation. Displays in recipient-facing materials such as the packing slip.
	DisplayableOrderComment string    `json:"displayableOrderComment"`
	DisplayableOrderDate    Timestamp `json:"displayableOrderDate"`

	// A fulfillment order identifier submitted with the createFulfillmentOrder operation. Displays as the order identifier in recipient-facing materials such as the packing slip.
	DisplayableOrderId string `json:"displayableOrderId"`

	// A list of features and their fulfillment policies to apply to the order.
	FeatureConstraints *[]FeatureSettings `json:"featureConstraints,omitempty"`

	// Specifies whether the fulfillment order should ship now or have an order hold put on it.
	FulfillmentAction *FulfillmentAction `json:"fulfillmentAction,omitempty"`

	// The current status of the fulfillment order.
	FulfillmentOrderStatus FulfillmentOrderStatus `json:"fulfillmentOrderStatus"`

	// The FulfillmentPolicy value specified when you submitted the createFulfillmentOrder operation.
	FulfillmentPolicy *FulfillmentPolicy `json:"fulfillmentPolicy,omitempty"`

	// The identifier for the marketplace the fulfillment order is placed against.
	MarketplaceId string `json:"marketplaceId"`

	// A list of email addresses that the seller provides that are used by Amazon to send ship-complete notifications to recipients on behalf of the seller.
	NotificationEmails *NotificationEmailList `json:"notificationEmails,omitempty"`
	ReceivedDate       Timestamp              `json:"receivedDate"`

	// The fulfillment order identifier submitted with the createFulfillmentOrder operation.
	SellerFulfillmentOrderId string `json:"sellerFulfillmentOrderId"`

	// The shipping method used for the fulfillment order.
	ShippingSpeedCategory ShippingSpeedCategory `json:"shippingSpeedCategory"`
	StatusUpdatedDate     Timestamp             `json:"statusUpdatedDate"`
}

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

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

	// Item-specific text that displays in recipient-facing materials such as the outbound shipment packing slip.
	DisplayableComment   *string    `json:"displayableComment,omitempty"`
	EstimatedArrivalDate *Timestamp `json:"estimatedArrivalDate,omitempty"`
	EstimatedShipDate    *Timestamp `json:"estimatedShipDate,omitempty"`

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

	// A message to the gift recipient, if applicable.
	GiftMessage *string `json:"giftMessage,omitempty"`

	// Indicates whether the item is sellable or unsellable.
	OrderItemDisposition *string `json:"orderItemDisposition,omitempty"`

	// An amount of money, including units in the form of currency.
	PerUnitDeclaredValue *Money `json:"perUnitDeclaredValue,omitempty"`

	// An amount of money, including units in the form of currency.
	PerUnitPrice *Money `json:"perUnitPrice,omitempty"`

	// An amount of money, including units in the form of currency.
	PerUnitTax *Money `json:"perUnitTax,omitempty"`

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

	// A fulfillment order item identifier submitted with a call to the createFulfillmentOrder operation.
	SellerFulfillmentOrderItemId string `json:"sellerFulfillmentOrderItemId"`

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

	// The item quantity.
	UnfulfillableQuantity Quantity `json:"unfulfillableQuantity"`
}

// FulfillmentOrderItemList defines model for FulfillmentOrderItemList.
type FulfillmentOrderItemList []FulfillmentOrderItem

// FulfillmentOrderStatus defines model for FulfillmentOrderStatus.
type FulfillmentOrderStatus string

// List of FulfillmentOrderStatus
const (
	FulfillmentOrderStatus_Cancelled          FulfillmentOrderStatus = "Cancelled"
	FulfillmentOrderStatus_Complete           FulfillmentOrderStatus = "Complete"
	FulfillmentOrderStatus_CompletePartialled FulfillmentOrderStatus = "CompletePartialled"
	FulfillmentOrderStatus_Invalid            FulfillmentOrderStatus = "Invalid"
	FulfillmentOrderStatus_New                FulfillmentOrderStatus = "New"
	FulfillmentOrderStatus_Planning           FulfillmentOrderStatus = "Planning"
	FulfillmentOrderStatus_Processing         FulfillmentOrderStatus = "Processing"
	FulfillmentOrderStatus_Received           FulfillmentOrderStatus = "Received"
	FulfillmentOrderStatus_Unfulfillable      FulfillmentOrderStatus = "Unfulfillable"
)

// FulfillmentPolicy defines model for FulfillmentPolicy.
type FulfillmentPolicy string

// List of FulfillmentPolicy
const (
	FulfillmentPolicy_FillAll          FulfillmentPolicy = "FillAll"
	FulfillmentPolicy_FillAllAvailable FulfillmentPolicy = "FillAllAvailable"
	FulfillmentPolicy_FillOrKill       FulfillmentPolicy = "FillOrKill"
)

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

	// An array of fee type and cost pairs.
	EstimatedFees *FeeList `json:"estimatedFees,omitempty"`

	// The weight.
	EstimatedShippingWeight *Weight `json:"estimatedShippingWeight,omitempty"`

	// A list of features and their fulfillment policies to apply to the order.
	FeatureConstraints *[]FeatureSettings `json:"featureConstraints,omitempty"`

	// An array of fulfillment preview shipment information.
	FulfillmentPreviewShipments *FulfillmentPreviewShipmentList `json:"fulfillmentPreviewShipments,omitempty"`

	// When true, this fulfillment order preview is for COD (Cash On Delivery).
	IsCODCapable bool `json:"isCODCapable"`

	// When true, this fulfillment order preview is fulfillable.
	IsFulfillable bool `json:"isFulfillable"`

	// The marketplace the fulfillment order is placed against.
	MarketplaceId             string      `json:"marketplaceId"`
	OrderUnfulfillableReasons *StringList `json:"orderUnfulfillableReasons,omitempty"`

	// Delivery information for a scheduled delivery.
	ScheduledDeliveryInfo *ScheduledDeliveryInfo `json:"scheduledDeliveryInfo,omitempty"`

	// The shipping method used for the fulfillment order.
	ShippingSpeedCategory ShippingSpeedCategory `json:"shippingSpeedCategory"`

	// An array of unfulfillable preview item information.
	UnfulfillablePreviewItems *UnfulfillablePreviewItemList `json:"unfulfillablePreviewItems,omitempty"`
}

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

	// The weight.
	EstimatedShippingWeight *Weight `json:"estimatedShippingWeight,omitempty"`

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

	// A fulfillment order item identifier that the seller created with a call to the createFulfillmentOrder operation.
	SellerFulfillmentOrderItemId string `json:"sellerFulfillmentOrderItemId"`

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

	// The method used to calculate the estimated shipping weight.
	ShippingWeightCalculationMethod *string `json:"shippingWeightCalculationMethod,omitempty"`
}

// FulfillmentPreviewItemList defines model for FulfillmentPreviewItemList.
type FulfillmentPreviewItemList []FulfillmentPreviewItem

// FulfillmentPreviewList defines model for FulfillmentPreviewList.
type FulfillmentPreviewList []FulfillmentPreview

// FulfillmentPreviewShipment defines model for FulfillmentPreviewShipment.
type FulfillmentPreviewShipment struct {
	EarliestArrivalDate *Timestamp `json:"earliestArrivalDate,omitempty"`
	EarliestShipDate    *Timestamp `json:"earliestShipDate,omitempty"`

	// An array of fulfillment preview item information.
	FulfillmentPreviewItems FulfillmentPreviewItemList `json:"fulfillmentPreviewItems"`
	LatestArrivalDate       *Timestamp                 `json:"latestArrivalDate,omitempty"`
	LatestShipDate          *Timestamp                 `json:"latestShipDate,omitempty"`

	// Provides additional insight into the shipment timeline when exact delivery dates are not able to be precomputed.
	ShippingNotes *[]string `json:"shippingNotes,omitempty"`
}

// FulfillmentPreviewShipmentList defines model for FulfillmentPreviewShipmentList.
type FulfillmentPreviewShipmentList []FulfillmentPreviewShipment

// FulfillmentReturnItemStatus defines model for FulfillmentReturnItemStatus.
type FulfillmentReturnItemStatus string

// List of FulfillmentReturnItemStatus
const (
	FulfillmentReturnItemStatus_New       FulfillmentReturnItemStatus = "New"
	FulfillmentReturnItemStatus_Processed FulfillmentReturnItemStatus = "Processed"
)

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

	// A shipment identifier assigned by Amazon.
	AmazonShipmentId     string     `json:"amazonShipmentId"`
	EstimatedArrivalDate *Timestamp `json:"estimatedArrivalDate,omitempty"`

	// An identifier for the fulfillment center that the shipment will be sent from.
	FulfillmentCenterId string `json:"fulfillmentCenterId"`

	// An array of fulfillment shipment item information.
	FulfillmentShipmentItem FulfillmentShipmentItemList `json:"fulfillmentShipmentItem"`

	// An array of fulfillment shipment package information.
	FulfillmentShipmentPackage *FulfillmentShipmentPackageList `json:"fulfillmentShipmentPackage,omitempty"`

	// The current status of the shipment.
	FulfillmentShipmentStatus string     `json:"fulfillmentShipmentStatus"`
	ShippingDate              *Timestamp `json:"shippingDate,omitempty"`

	// Provides additional insight into shipment timeline. Primairly used to communicate that actual delivery dates aren't available.
	ShippingNotes *[]string `json:"shippingNotes,omitempty"`
}

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

	// An identifier for the package that contains the item quantity.
	PackageNumber *int32 `json:"packageNumber,omitempty"`

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

	// The fulfillment order item identifier that the seller created and submitted with a call to the createFulfillmentOrder operation.
	SellerFulfillmentOrderItemId string `json:"sellerFulfillmentOrderItemId"`

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

	// The serial number of the shipped item.
	SerialNumber *string `json:"serialNumber,omitempty"`
}

// FulfillmentShipmentItemList defines model for FulfillmentShipmentItemList.
type FulfillmentShipmentItemList []FulfillmentShipmentItem

// FulfillmentShipmentList defines model for FulfillmentShipmentList.
type FulfillmentShipmentList []FulfillmentShipment

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

	// Identifies the carrier who will deliver the shipment to the recipient.
	CarrierCode          string     `json:"carrierCode"`
	EstimatedArrivalDate *Timestamp `json:"estimatedArrivalDate,omitempty"`

	// Identifies a package in a shipment.
	PackageNumber int32 `json:"packageNumber"`

	// The tracking number, if provided, can be used to obtain tracking and delivery information.
	TrackingNumber *string `json:"trackingNumber,omitempty"`
}

// FulfillmentShipmentPackageList defines model for FulfillmentShipmentPackageList.
type FulfillmentShipmentPackageList []FulfillmentShipmentPackage

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

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

	// The payload for the getEligibileInventory operation.
	Payload *GetFeatureInventoryResult `json:"payload,omitempty"`
}

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

	// The name of the feature.
	FeatureName string `json:"featureName"`

	// An array of SKUs eligible for this feature and the quantity available.
	FeatureSkus *[]FeatureSku `json:"featureSkus,omitempty"`

	// The requested marketplace.
	MarketplaceId string `json:"marketplaceId"`

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

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

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

	// The payload for the getFeatureSKU operation.
	Payload *GetFeatureSkuResult `json:"payload,omitempty"`
}

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

	// The name of the feature.
	FeatureName string `json:"featureName"`

	// A list of one or more reasons that the seller SKU is ineligibile for the feature.
	//
	// Possible values:
	// * MERCHANT_NOT_ENROLLED - The merchant isn't enrolled for the feature.
	// * SKU_NOT_ELIGIBLE - The SKU doesn't reside in a warehouse that supports the feature.
	// * INVALID_SKU - There is an issue with the SKU provided.
	IneligibleReasons *[]string `json:"ineligibleReasons,omitempty"`

	// When true, the seller SKU is eligible for the requested feature.
	IsEligible bool `json:"isEligible"`

	// The requested marketplace.
	MarketplaceId string `json:"marketplaceId"`

	// Information about an SKU, including the count available, identifiers, and a list of overlapping SKUs that share the same inventory pool.
	SkuInfo *FeatureSku `json:"skuInfo,omitempty"`
}

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

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

	// The payload for the getFeatures operation.
	Payload *GetFeaturesResult `json:"payload,omitempty"`
}

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

	// An array of features.
	Features Features `json:"features"`
}

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

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

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

	// General information about a fulfillment order, including its status.
	FulfillmentOrder FulfillmentOrder `json:"fulfillmentOrder"`

	// An array of fulfillment order item information.
	FulfillmentOrderItems FulfillmentOrderItemList `json:"fulfillmentOrderItems"`

	// An array of fulfillment shipment information.
	FulfillmentShipments *FulfillmentShipmentList `json:"fulfillmentShipments,omitempty"`

	// An array of return authorization information.
	ReturnAuthorizations ReturnAuthorizationList `json:"returnAuthorizations"`

	// An array of items that Amazon accepted for return. Returns empty if no items were accepted for return.
	ReturnItems ReturnItemList `json:"returnItems"`
}

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

	// An amount of money, including units in the form of currency.
	PerUnitDeclaredValue *Money `json:"perUnitDeclaredValue,omitempty"`

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

	// A fulfillment order item identifier that the seller creates to track items in the fulfillment preview.
	SellerFulfillmentOrderItemId string `json:"sellerFulfillmentOrderItemId"`

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

// GetFulfillmentPreviewItemList defines model for GetFulfillmentPreviewItemList.
type GetFulfillmentPreviewItemList []GetFulfillmentPreviewItem

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

	// A physical address.
	Address Address `json:"address"`

	// A list of features and their fulfillment policies to apply to the order.
	FeatureConstraints *[]FeatureSettings `json:"featureConstraints,omitempty"`

	// Specifies whether to return fulfillment order previews that are for COD (Cash On Delivery).
	//
	// Possible values:
	//
	// * true - Returns all fulfillment order previews (both for COD and not for COD).
	// * false - Returns only fulfillment order previews that are not for COD.
	IncludeCODFulfillmentPreview *bool `json:"includeCODFulfillmentPreview,omitempty"`

	// Specifies whether to return the ScheduledDeliveryInfo response object, which contains the available delivery windows for a Scheduled Delivery. The ScheduledDeliveryInfo response object can only be returned for fulfillment order previews with ShippingSpeedCategories = ScheduledDelivery.
	IncludeDeliveryWindows *bool `json:"includeDeliveryWindows,omitempty"`

	// An array of fulfillment preview item information.
	Items GetFulfillmentPreviewItemList `json:"items"`

	// The marketplace the fulfillment order is placed against.
	MarketplaceId           *string                    `json:"marketplaceId,omitempty"`
	ShippingSpeedCategories *ShippingSpeedCategoryList `json:"shippingSpeedCategories,omitempty"`
}

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

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

	// A list of fulfillment order previews, including estimated shipping weights, estimated shipping fees, and estimated ship dates and arrival dates.
	Payload *GetFulfillmentPreviewResult `json:"payload,omitempty"`
}

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

	// An array of fulfillment preview information.
	FulfillmentPreviews *FulfillmentPreviewList `json:"fulfillmentPreviews,omitempty"`
}

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

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

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

	// A human readable description of the invalid item reason code.
	Description string `json:"description"`

	// A code for why the item is invalid for return.
	InvalidItemReasonCode InvalidItemReasonCode `json:"invalidItemReasonCode"`
}

// InvalidItemReasonCode defines model for InvalidItemReasonCode.
type InvalidItemReasonCode string

// List of InvalidItemReasonCode
const (
	InvalidItemReasonCode_DuplicateRequest     InvalidItemReasonCode = "DuplicateRequest"
	InvalidItemReasonCode_InvalidValues        InvalidItemReasonCode = "InvalidValues"
	InvalidItemReasonCode_NoCompletedShipItems InvalidItemReasonCode = "NoCompletedShipItems"
	InvalidItemReasonCode_NoReturnableQuantity InvalidItemReasonCode = "NoReturnableQuantity"
)

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

	// The reason that the item is invalid for return.
	InvalidItemReason InvalidItemReason `json:"invalidItemReason"`

	// The identifier assigned to the item by the seller when the fulfillment order was created.
	SellerFulfillmentOrderItemId string `json:"sellerFulfillmentOrderItemId"`

	// An identifier assigned by the seller to the return item.
	SellerReturnItemId string `json:"sellerReturnItemId"`
}

// InvalidReturnItemList defines model for InvalidReturnItemList.
type InvalidReturnItemList []InvalidReturnItem

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

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

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

	// An array of fulfillment order information.
	FulfillmentOrders *[]FulfillmentOrder `json:"fulfillmentOrders,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"`
}

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

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

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

	// An array of return reason code details.
	ReasonCodeDetails *ReasonCodeDetailsList `json:"reasonCodeDetails,omitempty"`
}

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

	// Three digit currency code in ISO 4217 format.
	CurrencyCode string `json:"currencyCode"`

	// A decimal number with no loss of precision. Useful when precision loss is unacceptable, as with currencies. Follows RFC7159 for number representation.
	Value Decimal `json:"value"`
}

// NotificationEmailList defines model for NotificationEmailList.
type NotificationEmailList []string

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

	// Additional location information.
	AdditionalLocationInfo *AdditionalLocationInfo `json:"additionalLocationInfo,omitempty"`

	// The name of the carrier.
	CarrierCode *string `json:"carrierCode,omitempty"`

	// The phone number of the carrier.
	CarrierPhoneNumber *string `json:"carrierPhoneNumber,omitempty"`

	// The URL of the carrier’s website.
	CarrierURL *string `json:"carrierURL,omitempty"`

	// The current delivery status of the package.
	CurrentStatus *CurrentStatus `json:"currentStatus,omitempty"`

	// Description corresponding to the CurrentStatus value.
	CurrentStatusDescription *string `json:"currentStatusDescription,omitempty"`

	// Link on swiship.com that allows customers to track the package.
	CustomerTrackingLink *string    `json:"customerTrackingLink,omitempty"`
	EstimatedArrivalDate *Timestamp `json:"estimatedArrivalDate,omitempty"`

	// The package identifier.
	PackageNumber int32      `json:"packageNumber"`
	ShipDate      *Timestamp `json:"shipDate,omitempty"`

	// Address information for tracking the package.
	ShipToAddress *TrackingAddress `json:"shipToAddress,omitempty"`

	// The name of the person who signed for the package.
	SignedForBy *string `json:"signedForBy,omitempty"`

	// An array of tracking event information.
	TrackingEvents *TrackingEventList `json:"trackingEvents,omitempty"`

	// The tracking number for the package.
	TrackingNumber *string `json:"trackingNumber,omitempty"`
}

// Quantity defines model for Quantity.
type Quantity int32

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

	// A human readable description of the return reason code.
	Description string `json:"description"`

	// A code that indicates a valid return reason.
	ReturnReasonCode string `json:"returnReasonCode"`

	// A translation of the description. The translation is in the language specified in the Language request parameter.
	TranslatedDescription *string `json:"translatedDescription,omitempty"`
}

// ReasonCodeDetailsList defines model for ReasonCodeDetailsList.
type ReasonCodeDetailsList []ReasonCodeDetails

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

	// The return merchandise authorization (RMA) that Amazon needs to process the return.
	AmazonRmaId string `json:"amazonRmaId"`

	// An identifier for the Amazon fulfillment center that the return items should be sent to.
	FulfillmentCenterId string `json:"fulfillmentCenterId"`

	// An identifier for the return authorization. This identifier associates return items with the return authorization used to return them.
	ReturnAuthorizationId string `json:"returnAuthorizationId"`

	// A physical address.
	ReturnToAddress Address `json:"returnToAddress"`

	// A URL for a web page that contains the return authorization barcode and the mailing label. This does not include pre-paid shipping.
	RmaPageURL string `json:"rmaPageURL"`
}

// ReturnAuthorizationList defines model for ReturnAuthorizationList.
type ReturnAuthorizationList []ReturnAuthorization

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

	// The return reason code that the Amazon fulfillment center assigned to the return item.
	AmazonReturnReasonCode *string `json:"amazonReturnReasonCode,omitempty"`

	// The identifier for the shipment that is associated with the return item.
	AmazonShipmentId string `json:"amazonShipmentId"`

	// The identifier for the Amazon fulfillment center that processed the return item.
	FulfillmentCenterId *string `json:"fulfillmentCenterId,omitempty"`

	// Identifies the return authorization used to return this item. See ReturnAuthorization.
	ReturnAuthorizationId *string `json:"returnAuthorizationId,omitempty"`

	// An optional comment about the return item.
	ReturnComment *string `json:"returnComment,omitempty"`

	// The condition of the return item when received by an Amazon fulfillment center.
	ReturnReceivedCondition *ReturnItemDisposition `json:"returnReceivedCondition,omitempty"`

	// The identifier assigned to the item by the seller when the fulfillment order was created.
	SellerFulfillmentOrderItemId string `json:"sellerFulfillmentOrderItemId"`

	// An identifier assigned by the seller to the return item.
	SellerReturnItemId string `json:"sellerReturnItemId"`

	// The return reason code assigned to the return item by the seller.
	SellerReturnReasonCode string `json:"sellerReturnReasonCode"`

	// Indicates if the return item has been processed by a fulfillment center.
	Status            FulfillmentReturnItemStatus `json:"status"`
	StatusChangedDate Timestamp                   `json:"statusChangedDate"`
}

// ReturnItemDisposition defines model for ReturnItemDisposition.
type ReturnItemDisposition string

// List of ReturnItemDisposition
const (
	ReturnItemDisposition_CarrierDamaged   ReturnItemDisposition = "CarrierDamaged"
	ReturnItemDisposition_CustomerDamaged  ReturnItemDisposition = "CustomerDamaged"
	ReturnItemDisposition_Defective        ReturnItemDisposition = "Defective"
	ReturnItemDisposition_FulfillerDamaged ReturnItemDisposition = "FulfillerDamaged"
	ReturnItemDisposition_Sellable         ReturnItemDisposition = "Sellable"
)

// ReturnItemList defines model for ReturnItemList.
type ReturnItemList []ReturnItem

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

	// The time zone of the destination address for the fulfillment order preview. Must be an IANA time zone name. Example: Asia/Tokyo.
	DeliveryTimeZone string `json:"deliveryTimeZone"`

	// An array of delivery windows.
	DeliveryWindows DeliveryWindowList `json:"deliveryWindows"`
}

// ShippingSpeedCategory defines model for ShippingSpeedCategory.
type ShippingSpeedCategory string

// List of ShippingSpeedCategory
const (
	ShippingSpeedCategory_Expedited         ShippingSpeedCategory = "Expedited"
	ShippingSpeedCategory_Priority          ShippingSpeedCategory = "Priority"
	ShippingSpeedCategory_ScheduledDelivery ShippingSpeedCategory = "ScheduledDelivery"
	ShippingSpeedCategory_Standard          ShippingSpeedCategory = "Standard"
)

// ShippingSpeedCategoryList defines model for ShippingSpeedCategoryList.
type ShippingSpeedCategoryList []ShippingSpeedCategory

// StringList defines model for StringList.
type StringList []string

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

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

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

	// The country.
	Country string `json:"country"`

	// The state.
	State string `json:"state"`
}

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

	// Address information for tracking the package.
	EventAddress TrackingAddress `json:"eventAddress"`

	// The event code for the delivery event.
	EventCode EventCode `json:"eventCode"`
	EventDate Timestamp `json:"eventDate"`

	// A description for the corresponding event code.
	EventDescription string `json:"eventDescription"`
}

// TrackingEventList defines model for TrackingEventList.
type TrackingEventList []TrackingEvent

// UnfulfillablePreviewItem defines model for UnfulfillablePreviewItem.
type UnfulfillablePreviewItem struct {
	ItemUnfulfillableReasons *StringList `json:"itemUnfulfillableReasons,omitempty"`

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

	// A fulfillment order item identifier created with a call to the getFulfillmentPreview operation.
	SellerFulfillmentOrderItemId string `json:"sellerFulfillmentOrderItemId"`

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

// UnfulfillablePreviewItemList defines model for UnfulfillablePreviewItemList.
type UnfulfillablePreviewItemList []UnfulfillablePreviewItem

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

	// Item-specific text that displays in recipient-facing materials such as the outbound shipment packing slip.
	DisplayableComment *string `json:"displayableComment,omitempty"`

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

	// A message to the gift recipient, if applicable.
	GiftMessage *string `json:"giftMessage,omitempty"`

	// Indicates whether the item is sellable or unsellable.
	OrderItemDisposition *string `json:"orderItemDisposition,omitempty"`

	// An amount of money, including units in the form of currency.
	PerUnitDeclaredValue *Money `json:"perUnitDeclaredValue,omitempty"`

	// An amount of money, including units in the form of currency.
	PerUnitPrice *Money `json:"perUnitPrice,omitempty"`

	// An amount of money, including units in the form of currency.
	PerUnitTax *Money `json:"perUnitTax,omitempty"`

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

	// Identifies the fulfillment order item to update. Created with a previous call to the createFulfillmentOrder operation.
	SellerFulfillmentOrderItemId string `json:"sellerFulfillmentOrderItemId"`

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

// UpdateFulfillmentOrderItemList defines model for UpdateFulfillmentOrderItemList.
type UpdateFulfillmentOrderItemList []UpdateFulfillmentOrderItem

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

	// A physical address.
	DestinationAddress *Address `json:"destinationAddress,omitempty"`

	// Order-specific text that appears in recipient-facing materials such as the outbound shipment packing slip.
	DisplayableOrderComment *string    `json:"displayableOrderComment,omitempty"`
	DisplayableOrderDate    *Timestamp `json:"displayableOrderDate,omitempty"`

	// A fulfillment order identifier that the seller creates. This value displays as the order identifier in recipient-facing materials such as the outbound shipment packing slip. The value of DisplayableOrderId should match the order identifier that the seller provides to the recipient. The seller can use the SellerFulfillmentOrderId for this value or they can specify an alternate value if they want the recipient to reference an alternate order identifier.
	DisplayableOrderId *string `json:"displayableOrderId,omitempty"`

	// A list of features and their fulfillment policies to apply to the order.
	FeatureConstraints *[]FeatureSettings `json:"featureConstraints,omitempty"`

	// Specifies whether the fulfillment order should ship now or have an order hold put on it.
	FulfillmentAction *FulfillmentAction `json:"fulfillmentAction,omitempty"`

	// The FulfillmentPolicy value specified when you submitted the createFulfillmentOrder operation.
	FulfillmentPolicy *FulfillmentPolicy `json:"fulfillmentPolicy,omitempty"`

	// An array of fulfillment order item information for updating a fulfillment order.
	Items *UpdateFulfillmentOrderItemList `json:"items,omitempty"`

	// The marketplace the fulfillment order is placed against.
	MarketplaceId *string `json:"marketplaceId,omitempty"`

	// A list of email addresses that the seller provides that are used by Amazon to send ship-complete notifications to recipients on behalf of the seller.
	NotificationEmails *NotificationEmailList `json:"notificationEmails,omitempty"`

	// The two-character country code for the country from which the fulfillment order ships. Must be in ISO 3166-1 alpha-2 format.
	ShipFromCountryCode *string `json:"shipFromCountryCode,omitempty"`

	// The shipping method used for the fulfillment order.
	ShippingSpeedCategory *ShippingSpeedCategory `json:"shippingSpeedCategory,omitempty"`
}

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

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

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

	// The unit of weight.
	Unit string `json:"unit"`

	// The weight value.
	Value string `json:"value"`
}

// GetFeaturesParams defines parameters for GetFeatures.
type GetFeaturesParams struct {

	// The marketplace for which to return the list of features.
	MarketplaceId string `json:"marketplaceId"`
}

// GetFeatureInventoryParams defines parameters for GetFeatureInventory.
type GetFeatureInventoryParams struct {

	// The marketplace for which to return a list of the inventory that is eligible for the specified feature.
	MarketplaceId string `json:"marketplaceId"`

	// A string token returned in the response to your previous request that is used to return the next response page. A value of null will return the first page.
	NextToken *string `json:"nextToken,omitempty"`
}

// GetFeatureSKUParams defines parameters for GetFeatureSKU.
type GetFeatureSKUParams struct {

	// The marketplace for which to return the count.
	MarketplaceId string `json:"marketplaceId"`
}

// ListAllFulfillmentOrdersParams defines parameters for ListAllFulfillmentOrders.
type ListAllFulfillmentOrdersParams struct {

	// A date used to select fulfillment orders that were last updated after (or at) a specified time. An update is defined as any change in fulfillment order status, including the creation of a new fulfillment order.
	QueryStartDate *time.Time `json:"queryStartDate,omitempty"`

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

// CreateFulfillmentOrderJSONBody defines parameters for CreateFulfillmentOrder.
type CreateFulfillmentOrderJSONBody CreateFulfillmentOrderRequest

// GetFulfillmentPreviewJSONBody defines parameters for GetFulfillmentPreview.
type GetFulfillmentPreviewJSONBody GetFulfillmentPreviewRequest

// UpdateFulfillmentOrderJSONBody defines parameters for UpdateFulfillmentOrder.
type UpdateFulfillmentOrderJSONBody UpdateFulfillmentOrderRequest

// CreateFulfillmentReturnJSONBody defines parameters for CreateFulfillmentReturn.
type CreateFulfillmentReturnJSONBody CreateFulfillmentReturnRequest

// ListReturnReasonCodesParams defines parameters for ListReturnReasonCodes.
type ListReturnReasonCodesParams struct {

	// The seller SKU for which return reason codes are required.
	SellerSku string `json:"sellerSku"`

	// The marketplace for which the seller wants return reason codes.
	MarketplaceId *string `json:"marketplaceId,omitempty"`

	// The identifier assigned to the item by the seller when the fulfillment order was created. The service uses this value to determine the marketplace for which the seller wants return reason codes.
	SellerFulfillmentOrderId *string `json:"sellerFulfillmentOrderId,omitempty"`

	// The language that the TranslatedDescription property of the ReasonCodeDetails response object should be translated into.
	Language string `json:"language"`
}

// GetPackageTrackingDetailsParams defines parameters for GetPackageTrackingDetails.
type GetPackageTrackingDetailsParams struct {

	// The unencrypted package identifier returned by the getFulfillmentOrder operation.
	PackageNumber int32 `json:"packageNumber"`
}

// CreateFulfillmentOrderRequestBody defines body for CreateFulfillmentOrder for application/json ContentType.
type CreateFulfillmentOrderJSONRequestBody CreateFulfillmentOrderJSONBody

// GetFulfillmentPreviewRequestBody defines body for GetFulfillmentPreview for application/json ContentType.
type GetFulfillmentPreviewJSONRequestBody GetFulfillmentPreviewJSONBody

// UpdateFulfillmentOrderRequestBody defines body for UpdateFulfillmentOrder for application/json ContentType.
type UpdateFulfillmentOrderJSONRequestBody UpdateFulfillmentOrderJSONBody

// CreateFulfillmentReturnRequestBody defines body for CreateFulfillmentReturn for application/json ContentType.
type CreateFulfillmentReturnJSONRequestBody CreateFulfillmentReturnJSONBody
