/*
 * Copyright 2018-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with
 * the License. A copy of the License is located at
 * 
 * http://aws.amazon.com/apache2.0
 * 
 * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
 * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions
 * and limitations under the License.
 */
package com.amazonaws.services.ec2.model;
import java.io.Serializable;
import javax.annotation.Generated;
import com.amazonaws.AmazonWebServiceRequest;
import com.amazonaws.Request;
import com.amazonaws.services.ec2.model.transform.DescribeSnapshotsRequestMarshaller;
/**
 * 
 */
@Generated("com.amazonaws:aws-java-sdk-code-generator")
public class DescribeSnapshotsRequest extends AmazonWebServiceRequest implements Serializable, Cloneable, DryRunSupportedRequest 
     * The filters.
     *  
     *  
     *  
     *  
     *  
     *  
     *  
     *  
     *  
     *  
     *  
     *  
     *  
     *  
     * The maximum number of snapshots to return for this request. This value can be between 5 and 1,000; if this value
     * is larger than 1,000, only 1,000 results are returned. If this parameter is not used, then the request returns
     * all snapshots. You cannot specify this parameter and the snapshot IDs parameter in the same request. For more
     * information, see Pagination.
     *  
     * The token returned from a previous paginated request. Pagination continues from the end of the items returned by
     * the previous request.
     *  
     * Scopes the results to snapshots with the specified owners. You can specify a combination of Amazon Web Services
     * account IDs,  
     * The IDs of the Amazon Web Services accounts that can create volumes from the snapshot.
     *  
     * The snapshot IDs.
     *  
     * Default: Describes the snapshots for which you have create volume permissions.
     *  
     * The filters.
     *  
     *  
     *  
     *  
     *  
     *  
     *  
     *  
     *  
     *  
     *  
     *  
     *  
     * 
     * 
     */
    private com.amazonaws.internal.SdkInternalListdescription - A description of the snapshot.
     * encrypted - Indicates whether the snapshot is encrypted (true | false)
     * owner-alias - The owner alias, from an Amazon-maintained list (amazon). This is not the
     * user-configured Amazon Web Services account alias set using the IAM console. We recommend that you use the
     * related parameter instead of this filter.
     * owner-id - The Amazon Web Services account ID of the owner. We recommend that you use the related
     * parameter instead of this filter.
     * progress - The progress of the snapshot, as a percentage (for example, 80%).
     * snapshot-id - The snapshot ID.
     * start-time - The time stamp when the snapshot was initiated.
     * status - The status of the snapshot (pending | completed |
     * error).
     * storage-tier - The storage tier of the snapshot (archive | standard).
     * tag:<key> - The key/value combination of a tag assigned to the resource. Use the tag key in
     * the filter name and the tag value as the filter value. For example, to find all resources that have a tag with
     * the key Owner and the value TeamA, specify tag:Owner for the filter name
     * and TeamA for the filter value.
     * tag-key - The key of a tag assigned to the resource. Use this filter to find all resources assigned
     * a tag with a specific key, regardless of the tag value.
     * volume-id - The ID of the volume the snapshot is for.
     * volume-size - The size of the volume, in GiB.
     * self, and amazon.
     * 
     * 
     * 
     * @return The filters.description - A description of the snapshot.
     * encrypted - Indicates whether the snapshot is encrypted (true | false)
     * owner-alias - The owner alias, from an Amazon-maintained list (amazon). This is not the
     * user-configured Amazon Web Services account alias set using the IAM console. We recommend that you use the
     * related parameter instead of this filter.
     * owner-id - The Amazon Web Services account ID of the owner. We recommend that you use the related
     * parameter instead of this filter.
     * progress - The progress of the snapshot, as a percentage (for example, 80%).
     * snapshot-id - The snapshot ID.
     * start-time - The time stamp when the snapshot was initiated.
     * status - The status of the snapshot (pending | completed |
     * error).
     * storage-tier - The storage tier of the snapshot (archive | standard).
     * tag:<key> - The key/value combination of a tag assigned to the resource. Use the tag key in
     * the filter name and the tag value as the filter value. For example, to find all resources that have a tag with
     * the key Owner and the value TeamA, specify tag:Owner for the filter name
     * and TeamA for the filter value.
     * tag-key - The key of a tag assigned to the resource. Use this filter to find all resources assigned
     * a tag with a specific key, regardless of the tag value.
     * volume-id - The ID of the volume the snapshot is for.
     * volume-size - The size of the volume, in GiB.
     * 
     *         description - A description of the snapshot.
     *         
     *         encrypted - Indicates whether the snapshot is encrypted (true |
     *         false)
     *         
     *         owner-alias - The owner alias, from an Amazon-maintained list (amazon). This is
     *         not the user-configured Amazon Web Services account alias set using the IAM console. We recommend that
     *         you use the related parameter instead of this filter.
     *         
     *         owner-id - The Amazon Web Services account ID of the owner. We recommend that you use the
     *         related parameter instead of this filter.
     *         
     *         progress - The progress of the snapshot, as a percentage (for example, 80%).
     *         
     *         snapshot-id - The snapshot ID.
     *         
     *         start-time - The time stamp when the snapshot was initiated.
     *         
     *         status - The status of the snapshot (pending | completed |
     *         error).
     *         
     *         storage-tier - The storage tier of the snapshot (archive |
     *         standard).
     *         
     *         tag:<key> - The key/value combination of a tag assigned to the resource. Use the tag
     *         key in the filter name and the tag value as the filter value. For example, to find all resources that
     *         have a tag with the key Owner and the value TeamA, specify
     *         tag:Owner for the filter name and TeamA for the filter value.
     *         
     *         tag-key - The key of a tag assigned to the resource. Use this filter to find all resources
     *         assigned a tag with a specific key, regardless of the tag value.
     *         
     *         volume-id - The ID of the volume the snapshot is for.
     *         
     *         volume-size - The size of the volume, in GiB.
     *         
* The filters. *
*
     * description - A description of the snapshot.
     * 
     * encrypted - Indicates whether the snapshot is encrypted (true | false)
     * 
     * owner-alias - The owner alias, from an Amazon-maintained list (amazon). This is not the
     * user-configured Amazon Web Services account alias set using the IAM console. We recommend that you use the
     * related parameter instead of this filter.
     * 
     * owner-id - The Amazon Web Services account ID of the owner. We recommend that you use the related
     * parameter instead of this filter.
     * 
     * progress - The progress of the snapshot, as a percentage (for example, 80%).
     * 
     * snapshot-id - The snapshot ID.
     * 
     * start-time - The time stamp when the snapshot was initiated.
     * 
     * status - The status of the snapshot (pending | completed |
     * error).
     * 
     * storage-tier - The storage tier of the snapshot (archive | standard).
     * 
     * tag:<key> - The key/value combination of a tag assigned to the resource. Use the tag key in
     * the filter name and the tag value as the filter value. For example, to find all resources that have a tag with
     * the key Owner and the value TeamA, specify tag:Owner for the filter name
     * and TeamA for the filter value.
     * 
     * tag-key - The key of a tag assigned to the resource. Use this filter to find all resources assigned
     * a tag with a specific key, regardless of the tag value.
     * 
     * volume-id - The ID of the volume the snapshot is for.
     * 
     * volume-size - The size of the volume, in GiB.
     * 
     *        description - A description of the snapshot.
     *        
     *        encrypted - Indicates whether the snapshot is encrypted (true |
     *        false)
     *        
     *        owner-alias - The owner alias, from an Amazon-maintained list (amazon). This is
     *        not the user-configured Amazon Web Services account alias set using the IAM console. We recommend that you
     *        use the related parameter instead of this filter.
     *        
     *        owner-id - The Amazon Web Services account ID of the owner. We recommend that you use the
     *        related parameter instead of this filter.
     *        
     *        progress - The progress of the snapshot, as a percentage (for example, 80%).
     *        
     *        snapshot-id - The snapshot ID.
     *        
     *        start-time - The time stamp when the snapshot was initiated.
     *        
     *        status - The status of the snapshot (pending | completed |
     *        error).
     *        
     *        storage-tier - The storage tier of the snapshot (archive | standard
     *        ).
     *        
     *        tag:<key> - The key/value combination of a tag assigned to the resource. Use the tag
     *        key in the filter name and the tag value as the filter value. For example, to find all resources that have
     *        a tag with the key Owner and the value TeamA, specify tag:Owner for
     *        the filter name and TeamA for the filter value.
     *        
     *        tag-key - The key of a tag assigned to the resource. Use this filter to find all resources
     *        assigned a tag with a specific key, regardless of the tag value.
     *        
     *        volume-id - The ID of the volume the snapshot is for.
     *        
     *        volume-size - The size of the volume, in GiB.
     *        
* The filters. *
*
     * description - A description of the snapshot.
     * 
     * encrypted - Indicates whether the snapshot is encrypted (true | false)
     * 
     * owner-alias - The owner alias, from an Amazon-maintained list (amazon). This is not the
     * user-configured Amazon Web Services account alias set using the IAM console. We recommend that you use the
     * related parameter instead of this filter.
     * 
     * owner-id - The Amazon Web Services account ID of the owner. We recommend that you use the related
     * parameter instead of this filter.
     * 
     * progress - The progress of the snapshot, as a percentage (for example, 80%).
     * 
     * snapshot-id - The snapshot ID.
     * 
     * start-time - The time stamp when the snapshot was initiated.
     * 
     * status - The status of the snapshot (pending | completed |
     * error).
     * 
     * storage-tier - The storage tier of the snapshot (archive | standard).
     * 
     * tag:<key> - The key/value combination of a tag assigned to the resource. Use the tag key in
     * the filter name and the tag value as the filter value. For example, to find all resources that have a tag with
     * the key Owner and the value TeamA, specify tag:Owner for the filter name
     * and TeamA for the filter value.
     * 
     * tag-key - The key of a tag assigned to the resource. Use this filter to find all resources assigned
     * a tag with a specific key, regardless of the tag value.
     * 
     * volume-id - The ID of the volume the snapshot is for.
     * 
     * volume-size - The size of the volume, in GiB.
     * 
* NOTE: This method appends the values to the existing list (if any). Use * {@link #setFilters(java.util.Collection)} or {@link #withFilters(java.util.Collection)} if you want to override * the existing values. *
* * @param filters * The filters. *
     *        description - A description of the snapshot.
     *        
     *        encrypted - Indicates whether the snapshot is encrypted (true |
     *        false)
     *        
     *        owner-alias - The owner alias, from an Amazon-maintained list (amazon). This is
     *        not the user-configured Amazon Web Services account alias set using the IAM console. We recommend that you
     *        use the related parameter instead of this filter.
     *        
     *        owner-id - The Amazon Web Services account ID of the owner. We recommend that you use the
     *        related parameter instead of this filter.
     *        
     *        progress - The progress of the snapshot, as a percentage (for example, 80%).
     *        
     *        snapshot-id - The snapshot ID.
     *        
     *        start-time - The time stamp when the snapshot was initiated.
     *        
     *        status - The status of the snapshot (pending | completed |
     *        error).
     *        
     *        storage-tier - The storage tier of the snapshot (archive | standard
     *        ).
     *        
     *        tag:<key> - The key/value combination of a tag assigned to the resource. Use the tag
     *        key in the filter name and the tag value as the filter value. For example, to find all resources that have
     *        a tag with the key Owner and the value TeamA, specify tag:Owner for
     *        the filter name and TeamA for the filter value.
     *        
     *        tag-key - The key of a tag assigned to the resource. Use this filter to find all resources
     *        assigned a tag with a specific key, regardless of the tag value.
     *        
     *        volume-id - The ID of the volume the snapshot is for.
     *        
     *        volume-size - The size of the volume, in GiB.
     *        
* The filters. *
*
     * description - A description of the snapshot.
     * 
     * encrypted - Indicates whether the snapshot is encrypted (true | false)
     * 
     * owner-alias - The owner alias, from an Amazon-maintained list (amazon). This is not the
     * user-configured Amazon Web Services account alias set using the IAM console. We recommend that you use the
     * related parameter instead of this filter.
     * 
     * owner-id - The Amazon Web Services account ID of the owner. We recommend that you use the related
     * parameter instead of this filter.
     * 
     * progress - The progress of the snapshot, as a percentage (for example, 80%).
     * 
     * snapshot-id - The snapshot ID.
     * 
     * start-time - The time stamp when the snapshot was initiated.
     * 
     * status - The status of the snapshot (pending | completed |
     * error).
     * 
     * storage-tier - The storage tier of the snapshot (archive | standard).
     * 
     * tag:<key> - The key/value combination of a tag assigned to the resource. Use the tag key in
     * the filter name and the tag value as the filter value. For example, to find all resources that have a tag with
     * the key Owner and the value TeamA, specify tag:Owner for the filter name
     * and TeamA for the filter value.
     * 
     * tag-key - The key of a tag assigned to the resource. Use this filter to find all resources assigned
     * a tag with a specific key, regardless of the tag value.
     * 
     * volume-id - The ID of the volume the snapshot is for.
     * 
     * volume-size - The size of the volume, in GiB.
     * 
     *        description - A description of the snapshot.
     *        
     *        encrypted - Indicates whether the snapshot is encrypted (true |
     *        false)
     *        
     *        owner-alias - The owner alias, from an Amazon-maintained list (amazon). This is
     *        not the user-configured Amazon Web Services account alias set using the IAM console. We recommend that you
     *        use the related parameter instead of this filter.
     *        
     *        owner-id - The Amazon Web Services account ID of the owner. We recommend that you use the
     *        related parameter instead of this filter.
     *        
     *        progress - The progress of the snapshot, as a percentage (for example, 80%).
     *        
     *        snapshot-id - The snapshot ID.
     *        
     *        start-time - The time stamp when the snapshot was initiated.
     *        
     *        status - The status of the snapshot (pending | completed |
     *        error).
     *        
     *        storage-tier - The storage tier of the snapshot (archive | standard
     *        ).
     *        
     *        tag:<key> - The key/value combination of a tag assigned to the resource. Use the tag
     *        key in the filter name and the tag value as the filter value. For example, to find all resources that have
     *        a tag with the key Owner and the value TeamA, specify tag:Owner for
     *        the filter name and TeamA for the filter value.
     *        
     *        tag-key - The key of a tag assigned to the resource. Use this filter to find all resources
     *        assigned a tag with a specific key, regardless of the tag value.
     *        
     *        volume-id - The ID of the volume the snapshot is for.
     *        
     *        volume-size - The size of the volume, in GiB.
     *        
* The maximum number of snapshots to return for this request. This value can be between 5 and 1,000; if this value * is larger than 1,000, only 1,000 results are returned. If this parameter is not used, then the request returns * all snapshots. You cannot specify this parameter and the snapshot IDs parameter in the same request. For more * information, see Pagination. *
* * @param maxResults * The maximum number of snapshots to return for this request. This value can be between 5 and 1,000; if this * value is larger than 1,000, only 1,000 results are returned. If this parameter is not used, then the * request returns all snapshots. You cannot specify this parameter and the snapshot IDs parameter in the * same request. For more information, see Pagination. */ public void setMaxResults(Integer maxResults) { this.maxResults = maxResults; } /** ** The maximum number of snapshots to return for this request. This value can be between 5 and 1,000; if this value * is larger than 1,000, only 1,000 results are returned. If this parameter is not used, then the request returns * all snapshots. You cannot specify this parameter and the snapshot IDs parameter in the same request. For more * information, see Pagination. *
* * @return The maximum number of snapshots to return for this request. This value can be between 5 and 1,000; if * this value is larger than 1,000, only 1,000 results are returned. If this parameter is not used, then the * request returns all snapshots. You cannot specify this parameter and the snapshot IDs parameter in the * same request. For more information, see Pagination. */ public Integer getMaxResults() { return this.maxResults; } /** ** The maximum number of snapshots to return for this request. This value can be between 5 and 1,000; if this value * is larger than 1,000, only 1,000 results are returned. If this parameter is not used, then the request returns * all snapshots. You cannot specify this parameter and the snapshot IDs parameter in the same request. For more * information, see Pagination. *
* * @param maxResults * The maximum number of snapshots to return for this request. This value can be between 5 and 1,000; if this * value is larger than 1,000, only 1,000 results are returned. If this parameter is not used, then the * request returns all snapshots. You cannot specify this parameter and the snapshot IDs parameter in the * same request. For more information, see Pagination. * @return Returns a reference to this object so that method calls can be chained together. */ public DescribeSnapshotsRequest withMaxResults(Integer maxResults) { setMaxResults(maxResults); return this; } /** ** The token returned from a previous paginated request. Pagination continues from the end of the items returned by * the previous request. *
* * @param nextToken * The token returned from a previous paginated request. Pagination continues from the end of the items * returned by the previous request. */ public void setNextToken(String nextToken) { this.nextToken = nextToken; } /** ** The token returned from a previous paginated request. Pagination continues from the end of the items returned by * the previous request. *
* * @return The token returned from a previous paginated request. Pagination continues from the end of the items * returned by the previous request. */ public String getNextToken() { return this.nextToken; } /** ** The token returned from a previous paginated request. Pagination continues from the end of the items returned by * the previous request. *
* * @param nextToken * The token returned from a previous paginated request. Pagination continues from the end of the items * returned by the previous request. * @return Returns a reference to this object so that method calls can be chained together. */ public DescribeSnapshotsRequest withNextToken(String nextToken) { setNextToken(nextToken); return this; } /** *
     * Scopes the results to snapshots with the specified owners. You can specify a combination of Amazon Web Services
     * account IDs, self, and amazon.
     * 
self, and amazon.
     */
    public java.util.List
     * Scopes the results to snapshots with the specified owners. You can specify a combination of Amazon Web Services
     * account IDs, self, and amazon.
     * 
self, and amazon.
     */
    public void setOwnerIds(java.util.Collection
     * Scopes the results to snapshots with the specified owners. You can specify a combination of Amazon Web Services
     * account IDs, self, and amazon.
     * 
* NOTE: This method appends the values to the existing list (if any). Use * {@link #setOwnerIds(java.util.Collection)} or {@link #withOwnerIds(java.util.Collection)} if you want to override * the existing values. *
* * @param ownerIds * Scopes the results to snapshots with the specified owners. You can specify a combination of Amazon Web * Services account IDs,self, and amazon.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public DescribeSnapshotsRequest withOwnerIds(String... ownerIds) {
        if (this.ownerIds == null) {
            setOwnerIds(new com.amazonaws.internal.SdkInternalList
     * Scopes the results to snapshots with the specified owners. You can specify a combination of Amazon Web Services
     * account IDs, self, and amazon.
     * 
self, and amazon.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public DescribeSnapshotsRequest withOwnerIds(java.util.Collection* The IDs of the Amazon Web Services accounts that can create volumes from the snapshot. *
* * @return The IDs of the Amazon Web Services accounts that can create volumes from the snapshot. */ public java.util.List* The IDs of the Amazon Web Services accounts that can create volumes from the snapshot. *
* * @param restorableByUserIds * The IDs of the Amazon Web Services accounts that can create volumes from the snapshot. */ public void setRestorableByUserIds(java.util.Collection* The IDs of the Amazon Web Services accounts that can create volumes from the snapshot. *
** NOTE: This method appends the values to the existing list (if any). Use * {@link #setRestorableByUserIds(java.util.Collection)} or {@link #withRestorableByUserIds(java.util.Collection)} * if you want to override the existing values. *
* * @param restorableByUserIds * The IDs of the Amazon Web Services accounts that can create volumes from the snapshot. * @return Returns a reference to this object so that method calls can be chained together. */ public DescribeSnapshotsRequest withRestorableByUserIds(String... restorableByUserIds) { if (this.restorableByUserIds == null) { setRestorableByUserIds(new com.amazonaws.internal.SdkInternalList* The IDs of the Amazon Web Services accounts that can create volumes from the snapshot. *
* * @param restorableByUserIds * The IDs of the Amazon Web Services accounts that can create volumes from the snapshot. * @return Returns a reference to this object so that method calls can be chained together. */ public DescribeSnapshotsRequest withRestorableByUserIds(java.util.Collection* The snapshot IDs. *
** Default: Describes the snapshots for which you have create volume permissions. *
* * @return The snapshot IDs. *
     *         Default: Describes the snapshots for which you have create volume permissions.
     */
    public java.util.List 
     * The snapshot IDs.
     *  
     * Default: Describes the snapshots for which you have create volume permissions.
     * 
     *        Default: Describes the snapshots for which you have create volume permissions.
     */
    public void setSnapshotIds(java.util.Collection 
     * The snapshot IDs.
     *  
     * Default: Describes the snapshots for which you have create volume permissions.
     *  
     * NOTE: This method appends the values to the existing list (if any). Use
     * {@link #setSnapshotIds(java.util.Collection)} or {@link #withSnapshotIds(java.util.Collection)} if you want to
     * override the existing values.
     * 
     *        Default: Describes the snapshots for which you have create volume permissions.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public DescribeSnapshotsRequest withSnapshotIds(String... snapshotIds) {
        if (this.snapshotIds == null) {
            setSnapshotIds(new com.amazonaws.internal.SdkInternalList 
     * The snapshot IDs.
     *  
     * Default: Describes the snapshots for which you have create volume permissions.
     * 
     *        Default: Describes the snapshots for which you have create volume permissions.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public DescribeSnapshotsRequest withSnapshotIds(java.util.Collection