@pulumi/slack
Version:
A Pulumi package for managing Slack workspaces.
303 lines (302 loc) • 10.8 kB
TypeScript
import * as pulumi from "@pulumi/pulumi";
/**
* Manages a Slack channel
*
* ## Required scopes
*
* This resource requires the following scopes:
*
* If using `bot` tokens:
*
* - [channels:read](https://api.slack.com/scopes/channels:read)
* (public channels)
* - [channels:manage](https://api.slack.com/scopes/channels:manage)
* (public channels)
* - [channels:join](https://api.slack.com/scopes/channels:join)
* (adopting existing public channels)
* - [groups:read](https://api.slack.com/scopes/groups:read)
* (private channels)
* - [groups:write](https://api.slack.com/scopes/groups:write)
* (private channels)
*
* If using `user` tokens:
*
* - [channels:read](https://api.slack.com/scopes/channels:read) (public channels)
* - [channels:write](https://api.slack.com/scopes/channels:manage) (public channels)
* - [groups:read](https://api.slack.com/scopes/groups:read) (private channels)
* - [groups:write](https://api.slack.com/scopes/groups:write) (private channels)
*
* The Slack API methods used by the resource are:
*
* - [conversations.create](https://api.slack.com/methods/conversations.create)
* - [conversations.join](https://api.slack.com/methods/conversations.join)
* - [conversations.setTopic](https://api.slack.com/methods/conversations.setTopic)
* - [conversations.setPurpose](https://api.slack.com/methods/conversations.setPurpose)
* - [conversations.info](https://api.slack.com/methods/conversations.info)
* - [conversations.members](https://api.slack.com/methods/conversations.members)
* - [conversations.kick](https://api.slack.com/methods/conversations.kick)
* - [conversations.invite](https://api.slack.com/methods/conversations.invite)
* - [conversations.rename](https://api.slack.com/methods/conversations.rename)
* - [conversations.archive](https://api.slack.com/methods/conversations.archive)
* - [conversations.unarchive](https://api.slack.com/methods/conversations.unarchive)
*
* If you get `missingScope` errors while using this resource check the scopes against
* the documentation for the methods above.
*
* ## Example Usage
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as slack from "@pulumi/slack";
*
* const test = new slack.Conversation("test", {
* name: "my-channel",
* topic: "The topic for my channel",
* permanentMembers: [],
* isPrivate: true,
* });
* ```
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as slack from "@pulumi/slack";
*
* const nonadmin = new slack.Conversation("nonadmin", {
* name: "my-channel01",
* topic: "The channel won't be archived on destroy",
* permanentMembers: [],
* isPrivate: true,
* actionOnDestroy: "none",
* });
* ```
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as slack from "@pulumi/slack";
*
* const adopted = new slack.Conversation("adopted", {
* name: "my-channel02",
* topic: "Adopt existing, don't kick members",
* permanentMembers: [],
* adoptExistingChannel: true,
* actionOnUpdatePermanentMembers: "none",
* });
* ```
*
* ## Import
*
* `slack_conversation` can be imported using the ID of the conversation/channel, e.g.
*
* ```sh
* $ pulumi import slack:index/conversation:Conversation my_conversation C023X7QTFHQ
* ```
*/
export declare class Conversation extends pulumi.CustomResource {
/**
* Get an existing Conversation 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?: ConversationState, opts?: pulumi.CustomResourceOptions): Conversation;
/**
* Returns true if the given object is an instance of Conversation. 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 Conversation;
/**
* indicates whether the
* conversation should be archived or left behind on destroy. Valid values are
* `archive | none`. Note that when set to `none` the conversation will be left
* as it is and as a result any subsequent runs of pulumi up with the same
* name will fail.
*/
readonly actionOnDestroy: pulumi.Output<string | undefined>;
/**
* indicate
* whether the members should be kick of the channel when removed from
* `permanentMembers`. When set to `none` the user are never kicked, this prevent
* a side effect on public channels where user that joined the channel are kicked.
*/
readonly actionOnUpdatePermanentMembers: pulumi.Output<string | undefined>;
readonly adoptExistingChannel: pulumi.Output<boolean | undefined>;
/**
* is a unix timestamp.
*/
readonly created: pulumi.Output<number>;
/**
* is the user ID of the member that created this channel.
*/
readonly creator: pulumi.Output<string>;
/**
* indicates a conversation is archived. Frozen in time.
*/
readonly isArchived: pulumi.Output<boolean | undefined>;
/**
* represents this conversation as being part of a Shared Channel
* with a remote organization.
*/
readonly isExtShared: pulumi.Output<boolean>;
/**
* will be true if this channel is the "general" channel that includes
* all regular team members.
*/
readonly isGeneral: pulumi.Output<boolean>;
/**
* explains whether this shared channel is shared between Enterprise
* Grid workspaces within the same organization.
*/
readonly isOrgShared: pulumi.Output<boolean>;
/**
* create a private channel instead of a public one.
*/
readonly isPrivate: pulumi.Output<boolean>;
/**
* means the conversation is in some way shared between multiple workspaces.
*/
readonly isShared: pulumi.Output<boolean>;
/**
* name of the public or private channel.
*/
readonly name: pulumi.Output<string>;
/**
* user IDs to add to the channel.
*/
readonly permanentMembers: pulumi.Output<string[] | undefined>;
/**
* purpose of the channel.
*/
readonly purpose: pulumi.Output<string | undefined>;
/**
* topic for the channel.
*/
readonly topic: pulumi.Output<string | undefined>;
/**
* Create a Conversation 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: ConversationArgs, opts?: pulumi.CustomResourceOptions);
}
/**
* Input properties used for looking up and filtering Conversation resources.
*/
export interface ConversationState {
/**
* indicates whether the
* conversation should be archived or left behind on destroy. Valid values are
* `archive | none`. Note that when set to `none` the conversation will be left
* as it is and as a result any subsequent runs of pulumi up with the same
* name will fail.
*/
actionOnDestroy?: pulumi.Input<string>;
/**
* indicate
* whether the members should be kick of the channel when removed from
* `permanentMembers`. When set to `none` the user are never kicked, this prevent
* a side effect on public channels where user that joined the channel are kicked.
*/
actionOnUpdatePermanentMembers?: pulumi.Input<string>;
adoptExistingChannel?: pulumi.Input<boolean>;
/**
* is a unix timestamp.
*/
created?: pulumi.Input<number>;
/**
* is the user ID of the member that created this channel.
*/
creator?: pulumi.Input<string>;
/**
* indicates a conversation is archived. Frozen in time.
*/
isArchived?: pulumi.Input<boolean>;
/**
* represents this conversation as being part of a Shared Channel
* with a remote organization.
*/
isExtShared?: pulumi.Input<boolean>;
/**
* will be true if this channel is the "general" channel that includes
* all regular team members.
*/
isGeneral?: pulumi.Input<boolean>;
/**
* explains whether this shared channel is shared between Enterprise
* Grid workspaces within the same organization.
*/
isOrgShared?: pulumi.Input<boolean>;
/**
* create a private channel instead of a public one.
*/
isPrivate?: pulumi.Input<boolean>;
/**
* means the conversation is in some way shared between multiple workspaces.
*/
isShared?: pulumi.Input<boolean>;
/**
* name of the public or private channel.
*/
name?: pulumi.Input<string>;
/**
* user IDs to add to the channel.
*/
permanentMembers?: pulumi.Input<pulumi.Input<string>[]>;
/**
* purpose of the channel.
*/
purpose?: pulumi.Input<string>;
/**
* topic for the channel.
*/
topic?: pulumi.Input<string>;
}
/**
* The set of arguments for constructing a Conversation resource.
*/
export interface ConversationArgs {
/**
* indicates whether the
* conversation should be archived or left behind on destroy. Valid values are
* `archive | none`. Note that when set to `none` the conversation will be left
* as it is and as a result any subsequent runs of pulumi up with the same
* name will fail.
*/
actionOnDestroy?: pulumi.Input<string>;
/**
* indicate
* whether the members should be kick of the channel when removed from
* `permanentMembers`. When set to `none` the user are never kicked, this prevent
* a side effect on public channels where user that joined the channel are kicked.
*/
actionOnUpdatePermanentMembers?: pulumi.Input<string>;
adoptExistingChannel?: pulumi.Input<boolean>;
/**
* indicates a conversation is archived. Frozen in time.
*/
isArchived?: pulumi.Input<boolean>;
/**
* create a private channel instead of a public one.
*/
isPrivate: pulumi.Input<boolean>;
/**
* name of the public or private channel.
*/
name?: pulumi.Input<string>;
/**
* user IDs to add to the channel.
*/
permanentMembers?: pulumi.Input<pulumi.Input<string>[]>;
/**
* purpose of the channel.
*/
purpose?: pulumi.Input<string>;
/**
* topic for the channel.
*/
topic?: pulumi.Input<string>;
}