import * as pulumi from "@pulumi/pulumi";
/**
 * Workflow program to be executed by Workflows.
 *
 * To get more information about Workflow, see:
 *
 * * [API documentation](https://cloud.google.com/workflows/docs/reference/rest/v1/projects.locations.workflows)
 * * How-to Guides
 *     * [Managing Workflows](https://cloud.google.com/workflows/docs/creating-updating-workflow)
 *
 * ## Example Usage
 *
 * ### Workflow Basic
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 *
 * const testAccount = new gcp.serviceaccount.Account("test_account", {
 *     accountId: "my-account",
 *     displayName: "Test Service Account",
 * });
 * const example = new gcp.workflows.Workflow("example", {
 *     name: "workflow",
 *     region: "us-central1",
 *     description: "Magic",
 *     serviceAccount: testAccount.id,
 *     callLogLevel: "LOG_ERRORS_ONLY",
 *     labels: {
 *         env: "test",
 *     },
 *     userEnvVars: {
 *         url: "https://timeapi.io/api/Time/current/zone?timeZone=Europe/Amsterdam",
 *     },
 *     deletionProtection: false,
 *     sourceContents: `# This is a sample workflow. You can replace it with your source code.
 * #
 * # This workflow does the following:
 * # - reads current time and date information from an external API and stores
 * #   the response in currentTime variable
 * # - retrieves a list of Wikipedia articles related to the day of the week
 * #   from currentTime
 * # - returns the list of articles as an output of the workflow
 * #
 * # Note: In Terraform you need to escape the  or it will cause errors.
 *
 * - getCurrentTime:
 *     call: http.get
 *     args:
 *         url: \${sys.get_env(\\"url\\")}
 *     result: currentTime
 * - readWikipedia:
 *     call: http.get
 *     args:
 *         url: https://en.wikipedia.org/w/api.php
 *         query:
 *             action: opensearch
 *             search: \${currentTime.body.dayOfWeek}
 *     result: wikiResult
 * - returnOutput:
 *     return: \${wikiResult.body[1]}
 * `,
 * });
 * ```
 * ### Workflow Tags
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 *
 * const project = gcp.organizations.getProject({});
 * const tagKey = new gcp.tags.TagKey("tag_key", {
 *     parent: project.then(project => `projects/${project.number}`),
 *     shortName: "tag_key",
 * });
 * const tagValue = new gcp.tags.TagValue("tag_value", {
 *     parent: pulumi.interpolate`tagKeys/${tagKey.name}`,
 *     shortName: "tag_value",
 * });
 * const testAccount = new gcp.serviceaccount.Account("test_account", {
 *     accountId: "my-account",
 *     displayName: "Test Service Account",
 * });
 * const example = new gcp.workflows.Workflow("example", {
 *     name: "workflow",
 *     region: "us-central1",
 *     description: "Magic",
 *     serviceAccount: testAccount.id,
 *     deletionProtection: false,
 *     tags: pulumi.all([project, tagKey.shortName, tagValue.shortName]).apply(([project, tagKeyShortName, tagValueShortName]) => {
 *         [`${project.projectId}/${tagKeyShortName}`]: tagValueShortName,
 *     }),
 *     sourceContents: `# This is a sample workflow. You can replace it with your source code.
 * #
 * # This workflow does the following:
 * # - reads current time and date information from an external API and stores
 * #   the response in currentTime variable
 * # - retrieves a list of Wikipedia articles related to the day of the week
 * #   from currentTime
 * # - returns the list of articles as an output of the workflow
 * #
 * # Note: In Terraform you need to escape the  or it will cause errors.
 *
 * - getCurrentTime:
 *     call: http.get
 *     args:
 *         url: \${sys.get_env(\\"url\\")}
 *     result: currentTime
 * - readWikipedia:
 *     call: http.get
 *     args:
 *         url: https://en.wikipedia.org/w/api.php
 *         query:
 *             action: opensearch
 *             search: \${currentTime.body.dayOfWeek}
 *     result: wikiResult
 * - returnOutput:
 *     return: \${wikiResult.body[1]}
 * `,
 * });
 * ```
 *
 * ## Import
 *
 * This resource does not support import.
 */
export declare class Workflow extends pulumi.CustomResource {
    /**
     * Get an existing Workflow 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?: WorkflowState, opts?: pulumi.CustomResourceOptions): Workflow;
    /**
     * Returns true if the given object is an instance of Workflow.  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 Workflow;
    /**
     * Describes the level of platform logging to apply to calls and call responses during
     * executions of this workflow. If both the workflow and the execution specify a logging level,
     * the execution level takes precedence.
     * Possible values are: `CALL_LOG_LEVEL_UNSPECIFIED`, `LOG_ALL_CALLS`, `LOG_ERRORS_ONLY`, `LOG_NONE`.
     */
    readonly callLogLevel: pulumi.Output<string | undefined>;
    /**
     * The timestamp of when the workflow was created in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits.
     */
    readonly createTime: pulumi.Output<string>;
    /**
     * The KMS key used to encrypt workflow and execution data.
     * Format: projects/{project}/locations/{location}/keyRings/{keyRing}/cryptoKeys/{cryptoKey}
     */
    readonly cryptoKeyName: pulumi.Output<string | undefined>;
    readonly deletionProtection: pulumi.Output<boolean | undefined>;
    /**
     * Description of the workflow provided by the user. Must be at most 1000 unicode characters long.
     */
    readonly description: pulumi.Output<string>;
    /**
     * All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
     */
    readonly effectiveLabels: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * Describes the level of execution history to be stored for this workflow. This configuration
     * determines how much information about workflow executions is preserved. If not specified,
     * defaults to EXECUTION_HISTORY_LEVEL_UNSPECIFIED.
     * Possible values are: `EXECUTION_HISTORY_LEVEL_UNSPECIFIED`, `EXECUTION_HISTORY_BASIC`, `EXECUTION_HISTORY_DETAILED`.
     */
    readonly executionHistoryLevel: pulumi.Output<string | undefined>;
    /**
     * A set of key/value label pairs to assign to this Workflow.
     *
     * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
     * Please refer to the field `effectiveLabels` for all of the labels present on the resource.
     */
    readonly labels: pulumi.Output<{
        [key: string]: string;
    } | undefined>;
    /**
     * Name of the Workflow.
     */
    readonly name: pulumi.Output<string>;
    /**
     * Creates a unique name beginning with the
     * specified prefix. If this and name are unspecified, a random value is chosen for the name.
     */
    readonly namePrefix: pulumi.Output<string>;
    /**
     * The ID of the project in which the resource belongs.
     * If it is not provided, the provider project is used.
     */
    readonly project: pulumi.Output<string>;
    /**
     * The combination of labels configured directly on the resource
     * and default labels configured on the provider.
     */
    readonly pulumiLabels: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * The region of the workflow.
     */
    readonly region: pulumi.Output<string | undefined>;
    /**
     * The revision of the workflow. A new one is generated if the service account or source contents is changed.
     */
    readonly revisionId: pulumi.Output<string>;
    /**
     * Name of the service account associated with the latest workflow version. This service
     * account represents the identity of the workflow and determines what permissions the workflow has.
     * Format: projects/{project}/serviceAccounts/{account} or {account}.
     * Using - as a wildcard for the {project} or not providing one at all will infer the project from the account.
     * The {account} value can be the email address or the uniqueId of the service account.
     * If not provided, workflow will use the project's default service account.
     * Modifying this field for an existing workflow results in a new workflow revision.
     */
    readonly serviceAccount: pulumi.Output<string>;
    /**
     * Workflow code to be executed. The size limit is 128KB.
     */
    readonly sourceContents: pulumi.Output<string | undefined>;
    /**
     * State of the workflow deployment.
     */
    readonly state: pulumi.Output<string>;
    /**
     * A map of resource manager tags. Resource manager tag keys and values have the same definition
     * as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in
     * the format tagValues/456. The field is ignored (both PUT & PATCH) when empty.
     */
    readonly tags: pulumi.Output<{
        [key: string]: string;
    } | undefined>;
    /**
     * The timestamp of when the workflow was last updated in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits.
     */
    readonly updateTime: pulumi.Output<string>;
    /**
     * User-defined environment variables associated with this workflow revision. This map has a maximum length of 20. Each string can take up to 4KiB. Keys cannot be empty strings and cannot start with "GOOGLE" or "WORKFLOWS".
     */
    readonly userEnvVars: pulumi.Output<{
        [key: string]: string;
    } | undefined>;
    /**
     * Create a Workflow 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?: WorkflowArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering Workflow resources.
 */
export interface WorkflowState {
    /**
     * Describes the level of platform logging to apply to calls and call responses during
     * executions of this workflow. If both the workflow and the execution specify a logging level,
     * the execution level takes precedence.
     * Possible values are: `CALL_LOG_LEVEL_UNSPECIFIED`, `LOG_ALL_CALLS`, `LOG_ERRORS_ONLY`, `LOG_NONE`.
     */
    callLogLevel?: pulumi.Input<string>;
    /**
     * The timestamp of when the workflow was created in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits.
     */
    createTime?: pulumi.Input<string>;
    /**
     * The KMS key used to encrypt workflow and execution data.
     * Format: projects/{project}/locations/{location}/keyRings/{keyRing}/cryptoKeys/{cryptoKey}
     */
    cryptoKeyName?: pulumi.Input<string>;
    deletionProtection?: pulumi.Input<boolean>;
    /**
     * Description of the workflow provided by the user. Must be at most 1000 unicode characters long.
     */
    description?: pulumi.Input<string>;
    /**
     * All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
     */
    effectiveLabels?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
    /**
     * Describes the level of execution history to be stored for this workflow. This configuration
     * determines how much information about workflow executions is preserved. If not specified,
     * defaults to EXECUTION_HISTORY_LEVEL_UNSPECIFIED.
     * Possible values are: `EXECUTION_HISTORY_LEVEL_UNSPECIFIED`, `EXECUTION_HISTORY_BASIC`, `EXECUTION_HISTORY_DETAILED`.
     */
    executionHistoryLevel?: pulumi.Input<string>;
    /**
     * A set of key/value label pairs to assign to this Workflow.
     *
     * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
     * Please refer to the field `effectiveLabels` for all of the labels present on the resource.
     */
    labels?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
    /**
     * Name of the Workflow.
     */
    name?: pulumi.Input<string>;
    /**
     * Creates a unique name beginning with the
     * specified prefix. If this and name are unspecified, a random value is chosen for the name.
     */
    namePrefix?: pulumi.Input<string>;
    /**
     * The ID of the project in which the resource belongs.
     * If it is not provided, the provider project is used.
     */
    project?: pulumi.Input<string>;
    /**
     * The combination of labels configured directly on the resource
     * and default labels configured on the provider.
     */
    pulumiLabels?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
    /**
     * The region of the workflow.
     */
    region?: pulumi.Input<string>;
    /**
     * The revision of the workflow. A new one is generated if the service account or source contents is changed.
     */
    revisionId?: pulumi.Input<string>;
    /**
     * Name of the service account associated with the latest workflow version. This service
     * account represents the identity of the workflow and determines what permissions the workflow has.
     * Format: projects/{project}/serviceAccounts/{account} or {account}.
     * Using - as a wildcard for the {project} or not providing one at all will infer the project from the account.
     * The {account} value can be the email address or the uniqueId of the service account.
     * If not provided, workflow will use the project's default service account.
     * Modifying this field for an existing workflow results in a new workflow revision.
     */
    serviceAccount?: pulumi.Input<string>;
    /**
     * Workflow code to be executed. The size limit is 128KB.
     */
    sourceContents?: pulumi.Input<string>;
    /**
     * State of the workflow deployment.
     */
    state?: pulumi.Input<string>;
    /**
     * A map of resource manager tags. Resource manager tag keys and values have the same definition
     * as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in
     * the format tagValues/456. The field is ignored (both PUT & PATCH) when empty.
     */
    tags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
    /**
     * The timestamp of when the workflow was last updated in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits.
     */
    updateTime?: pulumi.Input<string>;
    /**
     * User-defined environment variables associated with this workflow revision. This map has a maximum length of 20. Each string can take up to 4KiB. Keys cannot be empty strings and cannot start with "GOOGLE" or "WORKFLOWS".
     */
    userEnvVars?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
}
/**
 * The set of arguments for constructing a Workflow resource.
 */
export interface WorkflowArgs {
    /**
     * Describes the level of platform logging to apply to calls and call responses during
     * executions of this workflow. If both the workflow and the execution specify a logging level,
     * the execution level takes precedence.
     * Possible values are: `CALL_LOG_LEVEL_UNSPECIFIED`, `LOG_ALL_CALLS`, `LOG_ERRORS_ONLY`, `LOG_NONE`.
     */
    callLogLevel?: pulumi.Input<string>;
    /**
     * The KMS key used to encrypt workflow and execution data.
     * Format: projects/{project}/locations/{location}/keyRings/{keyRing}/cryptoKeys/{cryptoKey}
     */
    cryptoKeyName?: pulumi.Input<string>;
    deletionProtection?: pulumi.Input<boolean>;
    /**
     * Description of the workflow provided by the user. Must be at most 1000 unicode characters long.
     */
    description?: pulumi.Input<string>;
    /**
     * Describes the level of execution history to be stored for this workflow. This configuration
     * determines how much information about workflow executions is preserved. If not specified,
     * defaults to EXECUTION_HISTORY_LEVEL_UNSPECIFIED.
     * Possible values are: `EXECUTION_HISTORY_LEVEL_UNSPECIFIED`, `EXECUTION_HISTORY_BASIC`, `EXECUTION_HISTORY_DETAILED`.
     */
    executionHistoryLevel?: pulumi.Input<string>;
    /**
     * A set of key/value label pairs to assign to this Workflow.
     *
     * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
     * Please refer to the field `effectiveLabels` for all of the labels present on the resource.
     */
    labels?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
    /**
     * Name of the Workflow.
     */
    name?: pulumi.Input<string>;
    /**
     * Creates a unique name beginning with the
     * specified prefix. If this and name are unspecified, a random value is chosen for the name.
     */
    namePrefix?: pulumi.Input<string>;
    /**
     * The ID of the project in which the resource belongs.
     * If it is not provided, the provider project is used.
     */
    project?: pulumi.Input<string>;
    /**
     * The region of the workflow.
     */
    region?: pulumi.Input<string>;
    /**
     * Name of the service account associated with the latest workflow version. This service
     * account represents the identity of the workflow and determines what permissions the workflow has.
     * Format: projects/{project}/serviceAccounts/{account} or {account}.
     * Using - as a wildcard for the {project} or not providing one at all will infer the project from the account.
     * The {account} value can be the email address or the uniqueId of the service account.
     * If not provided, workflow will use the project's default service account.
     * Modifying this field for an existing workflow results in a new workflow revision.
     */
    serviceAccount?: pulumi.Input<string>;
    /**
     * Workflow code to be executed. The size limit is 128KB.
     */
    sourceContents?: pulumi.Input<string>;
    /**
     * A map of resource manager tags. Resource manager tag keys and values have the same definition
     * as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in
     * the format tagValues/456. The field is ignored (both PUT & PATCH) when empty.
     */
    tags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
    /**
     * User-defined environment variables associated with this workflow revision. This map has a maximum length of 20. Each string can take up to 4KiB. Keys cannot be empty strings and cannot start with "GOOGLE" or "WORKFLOWS".
     */
    userEnvVars?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
}
