import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * This resource provides the Object resource in Oracle Cloud Infrastructure Object Storage service.
 * Api doc link for the resource: https://docs.oracle.com/iaas/api/#/en/objectstorage/latest/Object
 *
 * Example terraform configs related to the resource : https://github.com/oracle/terraform-provider-oci/tree/master/examples/
 *
 * Creates a new object or overwrites an existing object with the same name. The maximum object size allowed by
 * PutObject is 50 GiB.
 *
 * See [Object Names](https://docs.cloud.oracle.com/iaas/Content/Object/Tasks/managingobjects.htm#namerequirements)
 * for object naming requirements.
 *
 * See [Special Instructions for Object Storage PUT](https://docs.cloud.oracle.com/iaas/Content/API/Concepts/signingrequests.htm#ObjectStoragePut)
 * for request signature requirements.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as oci from "@pulumi/oci";
 *
 * const testObject = new oci.objectstorage.StorageObject("test_object", {
 *     bucket: objectBucket,
 *     content: objectContent,
 *     namespace: objectNamespace,
 *     object: objectObject,
 *     cacheControl: objectCacheControl,
 *     contentDisposition: objectContentDisposition,
 *     contentEncoding: objectContentEncoding,
 *     contentLanguage: objectContentLanguage,
 *     contentType: objectContentType,
 *     deleteAllObjectVersions: objectDeleteAllObjectVersions === "true",
 *     metadata: objectMetadata,
 *     storageTier: objectStorageTier,
 *     opcSseKmsKeyId: objectOpcSseKmsKeyId,
 * });
 * ```
 *
 * ## Import
 *
 * Objects can be imported using the `id`, e.g.
 *
 * ```sh
 * $ pulumi import oci:ObjectStorage/storageObject:StorageObject test_object "n/{namespaceName}/b/{bucketName}/o/{objectName}"
 * ```
 */
export declare class StorageObject extends pulumi.CustomResource {
    /**
     * Get an existing StorageObject resource's state with the given name, ID, and optional extra
     * properties used to qualify the lookup.
     *
     * @param name The _unique_ name of the resulting resource.
     * @param id The _unique_ provider ID of the resource to lookup.
     * @param state Any extra arguments used during the lookup.
     * @param opts Optional settings to control the behavior of the CustomResource.
     */
    static get(name: string, id: pulumi.Input<pulumi.ID>, state?: StorageObjectState, opts?: pulumi.CustomResourceOptions): StorageObject;
    /**
     * Returns true if the given object is an instance of StorageObject.  This is designed to work even
     * when multiple copies of the Pulumi SDK have been loaded into the same process.
     */
    static isInstance(obj: any): obj is StorageObject;
    /**
     * The name of the bucket. Avoid entering confidential information. Example: `my-new-bucket1`
     */
    readonly bucket: pulumi.Output<string>;
    /**
     * The optional Cache-Control header that defines the caching behavior value to be returned in GetObject and HeadObject responses. Specifying values for this header has no effect on Object Storage behavior. Programs that read the object determine what to do based on the value provided. For example, you could use this header to identify objects that require caching restrictions.
     */
    readonly cacheControl: pulumi.Output<string | undefined>;
    /**
     * The object to upload to the object store. Cannot be defined if `source` or `sourceUriDetails` is defined.
     */
    readonly content: pulumi.Output<string | undefined>;
    /**
     * The optional Content-Disposition header that defines presentational information for the object to be returned in GetObject and HeadObject responses. Specifying values for this header has no effect on Object Storage behavior. Programs that read the object determine what to do based on the value provided. For example, you could use this header to let users download objects with custom filenames in a browser.
     */
    readonly contentDisposition: pulumi.Output<string | undefined>;
    /**
     * The optional Content-Encoding header that defines the content encodings that were applied to the object to upload. Specifying values for this header has no effect on Object Storage behavior. Programs that read the object determine what to do based on the value provided. For example, you could use this header to determine what decoding mechanisms need to be applied to obtain the media-type specified by the Content-Type header of the object.
     */
    readonly contentEncoding: pulumi.Output<string | undefined>;
    /**
     * The optional Content-Language header that defines the content language of the object to upload. Specifying values for this header has no effect on Object Storage behavior. Programs that read the object determine what to do based on the value provided. For example, you could use this header to identify and differentiate objects based on a particular language.
     */
    readonly contentLanguage: pulumi.Output<string | undefined>;
    /**
     * (Updatable) The content length of the body.
     */
    readonly contentLength: pulumi.Output<string>;
    /**
     * (Updatable) The optional header that defines the base64-encoded MD5 hash of the body. If the optional Content-MD5 header is present, Object Storage performs an integrity check on the body of the HTTP request by computing the MD5 hash for the body and comparing it to the MD5 hash supplied in the header. If the two hashes do not match, the object is rejected and an HTTP-400 Unmatched Content MD5 error is returned with the message:
     *
     * "The computed MD5 of the request body (ACTUAL_MD5) does not match the Content-MD5 header (HEADER_MD5)"
     */
    readonly contentMd5: pulumi.Output<string>;
    /**
     * The optional Content-Type header that defines the standard MIME type format of the object. Content type defaults to 'application/octet-stream' if not specified in the PutObject call. Specifying values for this header has no effect on Object Storage behavior. Programs that read the object determine what to do based on the value provided. For example, you could use this header to identify and perform special operations on text only objects.
     */
    readonly contentType: pulumi.Output<string>;
    /**
     * (Updatable) A boolean to delete all object versions for an object in a bucket that has or ever had versioning enabled.
     */
    readonly deleteAllObjectVersions: pulumi.Output<boolean | undefined>;
    /**
     * Optional user-defined metadata key and value.
     * Note: All specified keys must be in lower case.
     */
    readonly metadata: pulumi.Output<{
        [key: string]: string;
    } | undefined>;
    /**
     * The Object Storage namespace used for the request.
     */
    readonly namespace: pulumi.Output<string>;
    /**
     * (Updatable) The name of the object. Avoid entering confidential information. Example: `test/object1.log`
     */
    readonly object: pulumi.Output<string>;
    /**
     * (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of a master encryption key used to call the Key Management service to generate a data encryption key or to encrypt or decrypt a data encryption key.
     */
    readonly opcSseKmsKeyId: pulumi.Output<string>;
    /**
     * An absolute path to a file on the local system. Cannot be defined if `content` or `sourceUriDetails` is defined.
     */
    readonly source: pulumi.Output<string | undefined>;
    /**
     * Details of the source URI of the object in the cloud. Cannot be defined if `content` or `source` is defined.
     * Note: To enable object copy, you must authorize the service to manage objects on your behalf.
     */
    readonly sourceUriDetails: pulumi.Output<outputs.ObjectStorage.StorageObjectSourceUriDetails | undefined>;
    readonly state: pulumi.Output<string>;
    /**
     * (Updatable) The storage tier that the object should be stored in. If not specified, the object will be stored in the same storage tier as the bucket.
     */
    readonly storageTier: pulumi.Output<string>;
    readonly versionId: pulumi.Output<string>;
    readonly workRequestId: pulumi.Output<string>;
    /**
     * Create a StorageObject resource with the given unique name, arguments, and options.
     *
     * @param name The _unique_ name of the resource.
     * @param args The arguments to use to populate this resource's properties.
     * @param opts A bag of options that control this resource's behavior.
     */
    constructor(name: string, args: StorageObjectArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering StorageObject resources.
 */
export interface StorageObjectState {
    /**
     * The name of the bucket. Avoid entering confidential information. Example: `my-new-bucket1`
     */
    bucket?: pulumi.Input<string | undefined>;
    /**
     * The optional Cache-Control header that defines the caching behavior value to be returned in GetObject and HeadObject responses. Specifying values for this header has no effect on Object Storage behavior. Programs that read the object determine what to do based on the value provided. For example, you could use this header to identify objects that require caching restrictions.
     */
    cacheControl?: pulumi.Input<string | undefined>;
    /**
     * The object to upload to the object store. Cannot be defined if `source` or `sourceUriDetails` is defined.
     */
    content?: pulumi.Input<string | undefined>;
    /**
     * The optional Content-Disposition header that defines presentational information for the object to be returned in GetObject and HeadObject responses. Specifying values for this header has no effect on Object Storage behavior. Programs that read the object determine what to do based on the value provided. For example, you could use this header to let users download objects with custom filenames in a browser.
     */
    contentDisposition?: pulumi.Input<string | undefined>;
    /**
     * The optional Content-Encoding header that defines the content encodings that were applied to the object to upload. Specifying values for this header has no effect on Object Storage behavior. Programs that read the object determine what to do based on the value provided. For example, you could use this header to determine what decoding mechanisms need to be applied to obtain the media-type specified by the Content-Type header of the object.
     */
    contentEncoding?: pulumi.Input<string | undefined>;
    /**
     * The optional Content-Language header that defines the content language of the object to upload. Specifying values for this header has no effect on Object Storage behavior. Programs that read the object determine what to do based on the value provided. For example, you could use this header to identify and differentiate objects based on a particular language.
     */
    contentLanguage?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The content length of the body.
     */
    contentLength?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The optional header that defines the base64-encoded MD5 hash of the body. If the optional Content-MD5 header is present, Object Storage performs an integrity check on the body of the HTTP request by computing the MD5 hash for the body and comparing it to the MD5 hash supplied in the header. If the two hashes do not match, the object is rejected and an HTTP-400 Unmatched Content MD5 error is returned with the message:
     *
     * "The computed MD5 of the request body (ACTUAL_MD5) does not match the Content-MD5 header (HEADER_MD5)"
     */
    contentMd5?: pulumi.Input<string | undefined>;
    /**
     * The optional Content-Type header that defines the standard MIME type format of the object. Content type defaults to 'application/octet-stream' if not specified in the PutObject call. Specifying values for this header has no effect on Object Storage behavior. Programs that read the object determine what to do based on the value provided. For example, you could use this header to identify and perform special operations on text only objects.
     */
    contentType?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) A boolean to delete all object versions for an object in a bucket that has or ever had versioning enabled.
     */
    deleteAllObjectVersions?: pulumi.Input<boolean | undefined>;
    /**
     * Optional user-defined metadata key and value.
     * Note: All specified keys must be in lower case.
     */
    metadata?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * The Object Storage namespace used for the request.
     */
    namespace?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The name of the object. Avoid entering confidential information. Example: `test/object1.log`
     */
    object?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of a master encryption key used to call the Key Management service to generate a data encryption key or to encrypt or decrypt a data encryption key.
     */
    opcSseKmsKeyId?: pulumi.Input<string | undefined>;
    /**
     * An absolute path to a file on the local system. Cannot be defined if `content` or `sourceUriDetails` is defined.
     */
    source?: pulumi.Input<string | undefined>;
    /**
     * Details of the source URI of the object in the cloud. Cannot be defined if `content` or `source` is defined.
     * Note: To enable object copy, you must authorize the service to manage objects on your behalf.
     */
    sourceUriDetails?: pulumi.Input<inputs.ObjectStorage.StorageObjectSourceUriDetails | undefined>;
    state?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The storage tier that the object should be stored in. If not specified, the object will be stored in the same storage tier as the bucket.
     */
    storageTier?: pulumi.Input<string | undefined>;
    versionId?: pulumi.Input<string | undefined>;
    workRequestId?: pulumi.Input<string | undefined>;
}
/**
 * The set of arguments for constructing a StorageObject resource.
 */
export interface StorageObjectArgs {
    /**
     * The name of the bucket. Avoid entering confidential information. Example: `my-new-bucket1`
     */
    bucket: pulumi.Input<string>;
    /**
     * The optional Cache-Control header that defines the caching behavior value to be returned in GetObject and HeadObject responses. Specifying values for this header has no effect on Object Storage behavior. Programs that read the object determine what to do based on the value provided. For example, you could use this header to identify objects that require caching restrictions.
     */
    cacheControl?: pulumi.Input<string | undefined>;
    /**
     * The object to upload to the object store. Cannot be defined if `source` or `sourceUriDetails` is defined.
     */
    content?: pulumi.Input<string | undefined>;
    /**
     * The optional Content-Disposition header that defines presentational information for the object to be returned in GetObject and HeadObject responses. Specifying values for this header has no effect on Object Storage behavior. Programs that read the object determine what to do based on the value provided. For example, you could use this header to let users download objects with custom filenames in a browser.
     */
    contentDisposition?: pulumi.Input<string | undefined>;
    /**
     * The optional Content-Encoding header that defines the content encodings that were applied to the object to upload. Specifying values for this header has no effect on Object Storage behavior. Programs that read the object determine what to do based on the value provided. For example, you could use this header to determine what decoding mechanisms need to be applied to obtain the media-type specified by the Content-Type header of the object.
     */
    contentEncoding?: pulumi.Input<string | undefined>;
    /**
     * The optional Content-Language header that defines the content language of the object to upload. Specifying values for this header has no effect on Object Storage behavior. Programs that read the object determine what to do based on the value provided. For example, you could use this header to identify and differentiate objects based on a particular language.
     */
    contentLanguage?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The optional header that defines the base64-encoded MD5 hash of the body. If the optional Content-MD5 header is present, Object Storage performs an integrity check on the body of the HTTP request by computing the MD5 hash for the body and comparing it to the MD5 hash supplied in the header. If the two hashes do not match, the object is rejected and an HTTP-400 Unmatched Content MD5 error is returned with the message:
     *
     * "The computed MD5 of the request body (ACTUAL_MD5) does not match the Content-MD5 header (HEADER_MD5)"
     */
    contentMd5?: pulumi.Input<string | undefined>;
    /**
     * The optional Content-Type header that defines the standard MIME type format of the object. Content type defaults to 'application/octet-stream' if not specified in the PutObject call. Specifying values for this header has no effect on Object Storage behavior. Programs that read the object determine what to do based on the value provided. For example, you could use this header to identify and perform special operations on text only objects.
     */
    contentType?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) A boolean to delete all object versions for an object in a bucket that has or ever had versioning enabled.
     */
    deleteAllObjectVersions?: pulumi.Input<boolean | undefined>;
    /**
     * Optional user-defined metadata key and value.
     * Note: All specified keys must be in lower case.
     */
    metadata?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * The Object Storage namespace used for the request.
     */
    namespace: pulumi.Input<string>;
    /**
     * (Updatable) The name of the object. Avoid entering confidential information. Example: `test/object1.log`
     */
    object: pulumi.Input<string>;
    /**
     * (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of a master encryption key used to call the Key Management service to generate a data encryption key or to encrypt or decrypt a data encryption key.
     */
    opcSseKmsKeyId?: pulumi.Input<string | undefined>;
    /**
     * An absolute path to a file on the local system. Cannot be defined if `content` or `sourceUriDetails` is defined.
     */
    source?: pulumi.Input<string | undefined>;
    /**
     * Details of the source URI of the object in the cloud. Cannot be defined if `content` or `source` is defined.
     * Note: To enable object copy, you must authorize the service to manage objects on your behalf.
     */
    sourceUriDetails?: pulumi.Input<inputs.ObjectStorage.StorageObjectSourceUriDetails | undefined>;
    /**
     * (Updatable) The storage tier that the object should be stored in. If not specified, the object will be stored in the same storage tier as the bucket.
     */
    storageTier?: pulumi.Input<string | undefined>;
}
//# sourceMappingURL=storageObject.d.ts.map