content: /*
   * The Selling Partner API for FBA inbound operations.
   * The Selling Partner API for Fulfillment By Amazon (FBA) Inbound. The FBA Inbound API enables building inbound workflows to create, manage, and send shipments into Amazon's fulfillment network. The API has interoperability with the Send-to-Amazon user interface.
   *
   * OpenAPI spec version: 2024-03-20
   *
   *
   * NOTE: This class is auto generated by the swagger code generator program.
   * https://github.com/swagger-api/swagger-codegen.git
   * Do not edit the class manually.
   */
  
  
  package io.swagger.client.model.fbav2024;
  
  import java.util.Objects;
  import java.util.Arrays;
  
  import com.google.gson.TypeAdapter;
  import com.google.gson.annotations.JsonAdapter;
  import com.google.gson.annotations.SerializedName;
  import com.google.gson.stream.JsonReader;
  import com.google.gson.stream.JsonWriter;
  import io.swagger.annotations.ApiModel;
  import io.swagger.annotations.ApiModelProperty;
  import io.swagger.client.model.fbav2024.Address;
  import io.swagger.client.model.fbav2024.PackingOptionSummary;
  import io.swagger.client.model.fbav2024.PlacementOptionSummary;
  import io.swagger.client.model.fbav2024.ShipmentSummary;
  
  import java.io.IOException;
  import java.util.ArrayList;
  import java.util.List;
  
  import org.threeten.bp.OffsetDateTime;
  
  /**
   * Inbound plan containing details of the inbound workflow.
   */
  @ApiModel(description = "Inbound plan containing details of the inbound workflow.")
  @javax.annotation.Generated(value = "io.swagger.codegen.languages.JavaClientCodegen", date = "2024-06-05T21:26:38.822Z")
  public class InboundPlan {
      @SerializedName("createdAt")
      private OffsetDateTime createdAt = null;
  
      @SerializedName("inboundPlanId")
      private String inboundPlanId = null;
  
      @SerializedName("lastUpdatedAt")
      private OffsetDateTime lastUpdatedAt = null;
  
      @SerializedName("marketplaceIds")
      private List<String> marketplaceIds = new ArrayList<String>();
  
      @SerializedName("name")
      private String name = null;
  
      @SerializedName("packingOptions")
      private List<PackingOptionSummary> packingOptions = null;
  
      @SerializedName("placementOptions")
      private List<PlacementOptionSummary> placementOptions = null;
  
      @SerializedName("shipments")
      private List<ShipmentSummary> shipments = null;
  
      @SerializedName("sourceAddress")
      private Address sourceAddress = null;
  
      @SerializedName("status")
      private String status = null;
  
      public InboundPlan createdAt(OffsetDateTime createdAt) {
          this.createdAt = createdAt;
          return this;
      }
  
      /**
       * The ISO 8601 datetime with pattern &#x60;yyyy-MM-ddTHH:mm:ss.sssZ&#x60;.
       *
       * @return createdAt
       **/
      @ApiModelProperty(required = true, value = "The ISO 8601 datetime with pattern `yyyy-MM-ddTHH:mm:ss.sssZ`.")
      public OffsetDateTime getCreatedAt() {
          return createdAt;
      }
  
      public void setCreatedAt(OffsetDateTime createdAt) {
          this.createdAt = createdAt;
      }
  
      public InboundPlan inboundPlanId(String inboundPlanId) {
          this.inboundPlanId = inboundPlanId;
          return this;
      }
  
      /**
       * Identifier of an inbound plan.
       *
       * @return inboundPlanId
       **/
      @ApiModelProperty(required = true, value = "Identifier of an inbound plan.")
      public String getInboundPlanId() {
          return inboundPlanId;
      }
  
      public void setInboundPlanId(String inboundPlanId) {
          this.inboundPlanId = inboundPlanId;
      }
  
      public InboundPlan lastUpdatedAt(OffsetDateTime lastUpdatedAt) {
          this.lastUpdatedAt = lastUpdatedAt;
          return this;
      }
  
      /**
       * The ISO 8601 datetime with pattern &#x60;yyyy-MM-ddTHH:mm:ss.sssZ&#x60;.
       *
       * @return lastUpdatedAt
       **/
      @ApiModelProperty(required = true, value = "The ISO 8601 datetime with pattern `yyyy-MM-ddTHH:mm:ss.sssZ`.")
      public OffsetDateTime getLastUpdatedAt() {
          return lastUpdatedAt;
      }
  
      public void setLastUpdatedAt(OffsetDateTime lastUpdatedAt) {
          this.lastUpdatedAt = lastUpdatedAt;
      }
  
      public InboundPlan marketplaceIds(List<String> marketplaceIds) {
          this.marketplaceIds = marketplaceIds;
          return this;
      }
  
      public InboundPlan addMarketplaceIdsItem(String marketplaceIdsItem) {
          this.marketplaceIds.add(marketplaceIdsItem);
          return this;
      }
  
      /**
       * Marketplace IDs.
       *
       * @return marketplaceIds
       **/
      @ApiModelProperty(required = true, value = "Marketplace IDs.")
      public List<String> getMarketplaceIds() {
          return marketplaceIds;
      }
  
      public void setMarketplaceIds(List<String> marketplaceIds) {
          this.marketplaceIds = marketplaceIds;
      }
  
      public InboundPlan name(String name) {
          this.name = name;
          return this;
      }
  
      /**
       * Human-readable name of the inbound plan.
       *
       * @return name
       **/
      @ApiModelProperty(required = true, value = "Human-readable name of the inbound plan.")
      public String getName() {
          return name;
      }
  
      public void setName(String name) {
          this.name = name;
      }
  
      public InboundPlan packingOptions(List<PackingOptionSummary> packingOptions) {
          this.packingOptions = packingOptions;
          return this;
      }
  
      public InboundPlan addPackingOptionsItem(PackingOptionSummary packingOptionsItem) {
          if (this.packingOptions == null) {
              this.packingOptions = new ArrayList<PackingOptionSummary>();
          }
          this.packingOptions.add(packingOptionsItem);
          return this;
      }
  
      /**
       * Packing options for the inbound plan. This property will be populated when it has been generated via the corresponding operation. If there is a chosen placement option, only packing options for that placement option will be returned. If there are confirmed shipments, only packing options for those shipments will be returned. Query the packing option for more details.
       *
       * @return packingOptions
       **/
      @ApiModelProperty(value = "Packing options for the inbound plan. This property will be populated when it has been generated via the corresponding operation. If there is a chosen placement option, only packing options for that placement option will be returned. If there are confirmed shipments, only packing options for those shipments will be returned. Query the packing option for more details.")
      public List<PackingOptionSummary> getPackingOptions() {
          return packingOptions;
      }
  
      public void setPackingOptions(List<PackingOptionSummary> packingOptions) {
          this.packingOptions = packingOptions;
      }
  
      public InboundPlan placementOptions(List<PlacementOptionSummary> placementOptions) {
          this.placementOptions = placementOptions;
          return this;
      }
  
      public InboundPlan addPlacementOptionsItem(PlacementOptionSummary placementOptionsItem) {
          if (this.placementOptions == null) {
              this.placementOptions = new ArrayList<PlacementOptionSummary>();
          }
          this.placementOptions.add(placementOptionsItem);
          return this;
      }
  
      /**
       * Placement options for the inbound plan. This property will be populated when it has been generated via the corresponding operation. If there is a chosen placement option, that will be the only returned option. Query the placement option for more details.
       *
       * @return placementOptions
       **/
      @ApiModelProperty(value = "Placement options for the inbound plan. This property will be populated when it has been generated via the corresponding operation. If there is a chosen placement option, that will be the only returned option. Query the placement option for more details.")
      public List<PlacementOptionSummary> getPlacementOptions() {
          return placementOptions;
      }
  
      public void setPlacementOptions(List<PlacementOptionSummary> placementOptions) {
          this.placementOptions = placementOptions;
      }
  
      public InboundPlan shipments(List<ShipmentSummary> shipments) {
          this.shipments = shipments;
          return this;
      }
  
      public InboundPlan addShipmentsItem(ShipmentSummary shipmentsItem) {
          if (this.shipments == null) {
              this.shipments = new ArrayList<ShipmentSummary>();
          }
          this.shipments.add(shipmentsItem);
          return this;
      }
  
      /**
       * Shipment IDs for the inbound plan. This property will be populated when it has been generated via the corresponding operation. If there is a chosen placement option, only shipments for that option will be returned. If there are confirmed shipments, only those shipments will be returned. Query the shipment for more details.
       *
       * @return shipments
       **/
      @ApiModelProperty(value = "Shipment IDs for the inbound plan. This property will be populated when it has been generated via the corresponding operation. If there is a chosen placement option, only shipments for that option will be returned. If there are confirmed shipments, only those shipments will be returned. Query the shipment for more details.")
      public List<ShipmentSummary> getShipments() {
          return shipments;
      }
  
      public void setShipments(List<ShipmentSummary> shipments) {
          this.shipments = shipments;
      }
  
      public InboundPlan sourceAddress(Address sourceAddress) {
          this.sourceAddress = sourceAddress;
          return this;
      }
  
      /**
       * Get sourceAddress
       *
       * @return sourceAddress
       **/
      @ApiModelProperty(required = true, value = "")
      public Address getSourceAddress() {
          return sourceAddress;
      }
  
      public void setSourceAddress(Address sourceAddress) {
          this.sourceAddress = sourceAddress;
      }
  
      public InboundPlan status(String status) {
          this.status = status;
          return this;
      }
  
      /**
       * Current status of the inbound plan. Can be: &#x60;ACTIVE&#x60;, &#x60;VOIDED&#x60;, &#x60;SHIPPED&#x60;, &#39;ERRORED&#39;.
       *
       * @return status
       **/
      @ApiModelProperty(required = true, value = "Current status of the inbound plan. Can be: `ACTIVE`, `VOIDED`, `SHIPPED`, 'ERRORED'.")
      public String getStatus() {
          return status;
      }
  
      public void setStatus(String status) {
          this.status = status;
      }
  
  
      @Override
      public boolean equals(java.lang.Object o) {
          if (this == o) {
              return true;
          }
          if (o == null || getClass() != o.getClass()) {
              return false;
          }
          InboundPlan inboundPlan = (InboundPlan) o;
          return Objects.equals(this.createdAt, inboundPlan.createdAt) &&
                  Objects.equals(this.inboundPlanId, inboundPlan.inboundPlanId) &&
                  Objects.equals(this.lastUpdatedAt, inboundPlan.lastUpdatedAt) &&
                  Objects.equals(this.marketplaceIds, inboundPlan.marketplaceIds) &&
                  Objects.equals(this.name, inboundPlan.name) &&
                  Objects.equals(this.packingOptions, inboundPlan.packingOptions) &&
                  Objects.equals(this.placementOptions, inboundPlan.placementOptions) &&
                  Objects.equals(this.shipments, inboundPlan.shipments) &&
                  Objects.equals(this.sourceAddress, inboundPlan.sourceAddress) &&
                  Objects.equals(this.status, inboundPlan.status);
      }
  
      @Override
      public int hashCode() {
          return Objects.hash(createdAt, inboundPlanId, lastUpdatedAt, marketplaceIds, name, packingOptions, placementOptions, shipments, sourceAddress, status);
      }
  
  
      @Override
      public String toString() {
          StringBuilder sb = new StringBuilder();
          sb.append("class InboundPlan {\n");
  
          sb.append("    createdAt: ").append(toIndentedString(createdAt)).append("\n");
          sb.append("    inboundPlanId: ").append(toIndentedString(inboundPlanId)).append("\n");
          sb.append("    lastUpdatedAt: ").append(toIndentedString(lastUpdatedAt)).append("\n");
          sb.append("    marketplaceIds: ").append(toIndentedString(marketplaceIds)).append("\n");
          sb.append("    name: ").append(toIndentedString(name)).append("\n");
          sb.append("    packingOptions: ").append(toIndentedString(packingOptions)).append("\n");
          sb.append("    placementOptions: ").append(toIndentedString(placementOptions)).append("\n");
          sb.append("    shipments: ").append(toIndentedString(shipments)).append("\n");
          sb.append("    sourceAddress: ").append(toIndentedString(sourceAddress)).append("\n");
          sb.append("    status: ").append(toIndentedString(status)).append("\n");
          sb.append("}");
          return sb.toString();
      }
  
      /**
       * Convert the given object to string with each line indented by 4 spaces
       * (except the first line).
       */
      private String toIndentedString(java.lang.Object o) {
          if (o == null) {
              return "null";
          }
          return o.toString().replace("\n", "\n    ");
      }
  
  }
  
  