/**
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * SPDX-License-Identifier: Apache-2.0.
 */

#pragma once
#include <aws/auditmanager/AuditManager_EXPORTS.h>
#include <aws/auditmanager/model/DeleteResources.h>

#include <utility>

namespace Aws {
namespace Utils {
namespace Json {
class JsonValue;
class JsonView;
}  // namespace Json
}  // namespace Utils
namespace AuditManager {
namespace Model {

/**
 * <p>The deregistration policy for the data that's stored in Audit Manager. You
 * can use this attribute to determine how your data is handled when you <a
 * href="https://docs.aws.amazon.com/audit-manager/latest/APIReference/API_DeregisterAccount.html">deregister
 * Audit Manager</a>.</p> <p>By default, Audit Manager retains evidence data for
 * two years from the time of its creation. Other Audit Manager resources
 * (including assessments, custom controls, and custom frameworks) remain in Audit
 * Manager indefinitely, and are available if you <a
 * href="https://docs.aws.amazon.com/audit-manager/latest/APIReference/API_RegisterAccount.html">re-register
 * Audit Manager</a> in the future. For more information about data retention, see
 * <a
 * href="https://docs.aws.amazon.com/audit-manager/latest/userguide/data-protection.html">Data
 * Protection</a> in the <i>Audit Manager User Guide</i>.</p>  <p>If you
 * choose to delete all data, this action permanently deletes all evidence data in
 * your account within seven days. It also deletes all of the Audit Manager
 * resources that you created, including assessments, custom controls, and custom
 * frameworks. Your data will not be available if you re-register Audit Manager in
 * the future.</p> <p><h3>See Also:</h3>   <a
 * href="http://docs.aws.amazon.com/goto/WebAPI/auditmanager-2017-07-25/DeregistrationPolicy">AWS
 * API Reference</a></p>
 */
class DeregistrationPolicy {
 public:
  AWS_AUDITMANAGER_API DeregistrationPolicy() = default;
  AWS_AUDITMANAGER_API DeregistrationPolicy(Aws::Utils::Json::JsonView jsonValue);
  AWS_AUDITMANAGER_API DeregistrationPolicy& operator=(Aws::Utils::Json::JsonView jsonValue);
  AWS_AUDITMANAGER_API Aws::Utils::Json::JsonValue Jsonize() const;

  ///@{
  /**
   * <p>Specifies which Audit Manager data will be deleted when you deregister Audit
   * Manager.</p> <ul> <li> <p>If you set the value to <code>ALL</code>, all of your
   * data is deleted within seven days of deregistration.</p> </li> <li> <p>If you
   * set the value to <code>DEFAULT</code>, none of your data is deleted at the time
   * of deregistration. However, keep in mind that the Audit Manager data retention
   * policy still applies. As a result, any evidence data will be deleted two years
   * after its creation date. Your other Audit Manager resources will continue to
   * exist indefinitely.</p> </li> </ul>
   */
  inline DeleteResources GetDeleteResources() const { return m_deleteResources; }
  inline bool DeleteResourcesHasBeenSet() const { return m_deleteResourcesHasBeenSet; }
  inline void SetDeleteResources(DeleteResources value) {
    m_deleteResourcesHasBeenSet = true;
    m_deleteResources = value;
  }
  inline DeregistrationPolicy& WithDeleteResources(DeleteResources value) {
    SetDeleteResources(value);
    return *this;
  }
  ///@}
 private:
  DeleteResources m_deleteResources{DeleteResources::NOT_SET};
  bool m_deleteResourcesHasBeenSet = false;
};

}  // namespace Model
}  // namespace AuditManager
}  // namespace Aws
