/**
 * Object Storage Service API
 * Common set of Object Storage and Archive Storage APIs for managing buckets, objects, and related resources.
For more information, see [Overview of Object Storage](/Content/Object/Concepts/objectstorageoverview.htm) and
[Overview of Archive Storage](/Content/Archive/Concepts/archivestorageoverview.htm).

 * OpenAPI spec version: 20160918
 * Contact: opc_casper_users_us_grp@oracle.com
 *
 * NOTE: This class is auto generated by OracleSDKGenerator.
 * Do not edit the class manually.
 *
 * Copyright (c) 2020, 2022, Oracle and/or its affiliates.  All rights reserved.
 * This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
 */ import * as model from "../model" ; import common = require ( "oci-common" ) ; /**
 * To use any of the API operations, you must be authorized in an IAM policy. If you are not authorized,
 * talk to an administrator. If you are an administrator who needs to write policies to give users access, see
 * [Getting Started with Policies](https://docs.cloud.oracle.com/Content/Identity/Concepts/policygetstarted.htm).
 *
 */ export interface UpdateBucketDetails { /**
     * The Object Storage namespace in which the bucket lives.
     */ "namespace" ? : string ; /**
     * The compartmentId for the compartment to move the bucket to.
     */ "compartmentId" ? : string ; /**
     * The name of the bucket. Valid characters are uppercase or lowercase letters, numbers, hyphens, underscores, and periods.
     * Bucket names must be unique within an Object Storage namespace. Avoid entering confidential information.
     * Example: my-new-bucket1
     *
     */ "name" ? : string ; /**
     * Arbitrary string, up to 4KB, of keys and values for user-defined metadata.
     */ "metadata" ? : { [ key ] : string ; } ; /**
     * The type of public access enabled on this bucket. A bucket is set to `NoPublicAccess` by default, which only allows an
     * authenticated caller to access the bucket and its contents. When `ObjectRead` is enabled on the bucket, public access
     * is allowed for the `GetObject`, `HeadObject`, and `ListObjects` operations. When `ObjectReadWithoutList` is enabled
     * on the bucket, public access is allowed for the `GetObject` and `HeadObject` operations.
     *
     */ "publicAccessType" ? : UpdateBucketDetails . PublicAccessType ; /**
     * Whether or not events are emitted for object state changes in this bucket. By default, `objectEventsEnabled` is
     * set to `false`. Set `objectEventsEnabled` to `true` to emit events for object state changes. For more information
     * about events, see [Overview of Events](https://docs.cloud.oracle.com/Content/Events/Concepts/eventsoverview.htm).
     *
     */ "objectEventsEnabled" ? : boolean ; /**
     * Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace.
     * For more information, see [Resource Tags](https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm).
     * Example: `{\"Department\": \"Finance\"}`
     *
     */ "freeformTags" ? : { [ key ] : string ; } ; /**
     * Defined tags for this resource. Each key is predefined and scoped to a namespace.
     * For more information, see [Resource Tags](https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm).
     * Example: `{\"Operations\": {\"CostCenter\": \"42\"}}
     *
     */ "definedTags" ? : { [ key ] : { [ key ] : any ; } ; } ; /**
     * The [OCID](https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the Key Management master encryption key to associate
     * with the specified bucket. If this value is empty, the Update operation will remove the associated key, if
     * there is one, from the bucket. (The bucket will continue to be encrypted, but with an encryption key managed
     * by Oracle.)
     *
     */ "kmsKeyId" ? : string ; /**
     * The versioning status on the bucket. If in state `Enabled`, multiple versions of the same object can be kept in the bucket.
     * When the object is overwritten or deleted, previous versions will still be available. When versioning is `Suspended`, the previous versions will still remain but new versions will no longer be created when overwitten or deleted.
     * Versioning cannot be disabled on a bucket once enabled.
     *
     */ "versioning" ? : UpdateBucketDetails . Versioning ; /**
     * The auto tiering status on the bucket. If in state `InfrequentAccess`, objects are transitioned
     * automatically between the 'Standard' and 'InfrequentAccess' tiers based on the access pattern of the objects.
     * When auto tiering is `Disabled`, there will be no automatic transitions between storage tiers.
     *
     */ "autoTiering" ? : string ; } export namespace UpdateBucketDetails { export enum PublicAccessType { NoPublicAccess = "NoPublicAccess" , ObjectRead = "ObjectRead" , ObjectReadWithoutList = "ObjectReadWithoutList" } export enum Versioning { Enabled = "Enabled" , Suspended = "Suspended" } export function getJsonObj ( obj ) { const jsonObj = { ... obj , ... { } } ; return jsonObj ; } export function getDeserializedJsonObj ( obj ) { const jsonObj = { ... obj , ... { } } ; return jsonObj ; } }