diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2782ec6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,55 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build +/output + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env.local +.env.development.local +.env.test.local +.env.production.local + +# Editor cache and lock files +*.swp +*.swo + +# vercel +.vercel + +# Jetbrains +.idea + +# Auto-generated robots.txt and sitemap.xml +/public/robots.txt +/public/sitemap.xml +/public/blog/feed.xml +/public/changelog/feed.xml +/public/images/docs +/public/images/reference_examples +/steampipe-docs-local +/tmp +content/docs + +.vscode \ No newline at end of file diff --git a/docs/build/input.md b/docs/build/input.md index d6cd1f4..d8182db 100644 --- a/docs/build/input.md +++ b/docs/build/input.md @@ -7,7 +7,7 @@ sidebar_label: Ask for Input Flowpipe allows you to optimize and automate your operational and business processes, but there are times when human interaction is required. For example, a manager may be required to approve a privilege escalation request. Furthermore, we live in an era of constant communication across multiple channels. People prefer to use specific tools (Email, Slack, etc.) for communication and expect these interactions to occur in their tools. The Flowpipe `input` step primitive provides the ability to prompt for human input via multiple channels and wait for a response. -To interact with the various tools and services, Flowpipe also includes an `integration` configuration resource. This allows you to configure Flowpipe for 2-way communication with your tool (Slack, email, etc). `integration` is a configuration resource (defined in `.fpc` files) like `credential`, thus the configuration is installation level, not mod level; you can define the integrations for your installation once and refer to them from any mods. +To interact with the various tools and services, Flowpipe also includes an `integration` configuration resource. This allows you to configure Flowpipe for 2-way communication with your tool (Slack, email, etc). `integration` is a configuration resource (defined in `.fpc` files) like `connection`, thus the configuration is installation level, not mod level; you can define the integrations for your installation once and refer to them from any mods. Sending notifications is a common pattern, and often users will want to route a request to more than one user, group, or channel, and via more than one delivery mechanism. For instance, you may want to request approval via Slack AND email. The `notifier` resource allows you to define a list of integrations to send notifications to. Like `integration`, a `notifier` is an installation-level configuration resource. diff --git a/docs/build/mod-variables.md b/docs/build/mod-variables.md index c49876b..c93b4c8 100644 --- a/docs/build/mod-variables.md +++ b/docs/build/mod-variables.md @@ -12,36 +12,153 @@ sidebar_label: Pass Variables ## Input Variables ### Defining Input Variables -Flowpipe mods support input variables that are similar to [Terraform input variables](https://www.terraform.io/docs/language/values/variables.html): - -You declare them with a `variable` block: +Flowpipe mods support input variables that are similar to [Terraform input variables](https://www.terraform.io/docs/language/values/variables.html). You declare them with a `variable` block: ```hcl variable "instance_id" { type = string } +``` + +The [type](#types) is optional, though it is generally recommended that you provide the type explicitly to provide clarity to the user and to avoid unexpected run time errors due to unforeseen type coercions. +You can optionally define a `default` value and `description` for the variable. + +```hcl variable "mandatory_tag_keys" { type = list(string) description = "A list of mandatory tag keys to check for (case sensitive)." default = ["Environment", "Owner"] } +``` + +If a variable does not define a `default`, the user will be prompted for its value when flowpipe starts. If a variable defines a `default`, the user is not prompted and the default value is used if the variable is not explicitly set. + +You may also provide a `description` of the variable. The description helps to provide information about the intent and format of the variable to the user of the mod. The description is included when the user is prompted for a variable's value. + + +#### Types + +Flowpipe supports the standard HCL `string`, `number`, and `bool` type primitives. + +```hcl +variable "my_string" { + type = string +} + +variable "counter" { + type = number +} + +variable "force" { + type = bool +} +``` + + +The keyword `any` may be used to indicate that any type is acceptable. If no type is defined, it is assumed to be `any`: + +```hcl +variable "myvar" { + type = any +} +``` + + +Collection types (`list`, `map`, `set`, `object`) may also be used: + +```hcl +variable "people" { + type = list(string) + default = ["Kramer", "Elaine", "George"] +} + +variable "employers" { + type = map(string) + + default = { + Kramer = "Kramerica Industries" + Elaine = "J. Peterman, Inc" + George = "Vandelay Industries" + } +} +``` + +You can even create deeply nested types: + +```hcl +variable "base_tag_rules" { + type = object({ + add = optional(map(string)) + remove = optional(list(string)) + remove_except = optional(list(string)) + update_keys = optional(map(list(string))) + update_values = optional(map(map(list(string)))) + }) + description = "Base rules to apply to resources unless overridden when merged with any provided resource-specific rules." + default = { + add = {} + remove = [] + remove_except = [] + update_keys = {} + update_values = {} + } +} + +``` + +In addition to the standard `string`, `number`, and `bool` primitives, Flowpipe `connection` and `notifier` config primitives may be specified. + +```hcl +variable "conn" { + type = connection +} + +variable "approver" { + type = notifier +} +``` + +You can even specify a variable as a specific *type* of connection: +```hcl +variable "aws_conn" { + type = connection.aws + default = connection.aws.default +} + +variable "github_conn" { + type = connection.github + default = connection.github.default +} +``` + +As with any type, collections may also be defined: + +```hcl +variable "aws_connections" { + type = list(connection.aws) + default = [connection.aws.default] +} + +variable "approvers" { + type = list(notifier) + default = ["default"] +} +``` + + +#### Enum + +Flowpipe supports an `enum` argument to provide a set of allowed values; no other values are allowed. + +```hcl +variable "log_level" { + type = string + default = "info" + enum = ["emerg", "alert", "crit", "err", "warning", "notice", "info", "debug" ] +} ``` -You can optionally define: -- `default` - A default value. If no value is passed, the user is not prompted and the default is used. -- `type` - The data type of the variable. This may be a simple type or a collection. - - The supported type primitives are: - - `string` - - `number` - - `bool` - - Collections types may also be used: - - `list()` - - `set()` - - `map()` - - `object({ = , ... })` - - The keyword `any` may be used to indicate that any type is acceptable -- `description` - A description of the variable. This text is included when the user is prompted for a variable's value. ### Using Input Variables Variables may be referenced as `var.`. Variables are often used as defaults for pipeline parameters: @@ -75,6 +192,12 @@ When running Flowpipe, you can pass variables in several ways. You can pass ind flowpipe pipeline run list_org_workspaces --var=org="my_org" ``` +For `connection` or `notifier` variables, pass them by name: +```bash +flowpipe pipeline run list_org_workspaces --var conn=connection.aws.prod --var approver=notifier.admins +``` + + When passing list variables, they must be enclosed in single quotes: ```bash diff --git a/docs/flowpipe-hcl/mod.md b/docs/flowpipe-hcl/mod.md index 84d1a72..09e2c95 100644 --- a/docs/flowpipe-hcl/mod.md +++ b/docs/flowpipe-hcl/mod.md @@ -41,10 +41,17 @@ mod "aws" { ## Example - Composite Mod with Dependency ```hcl +variable "database" { + type = connection.steampipe + description = "Steampipe database connection string." + default = connection.steampipe.default +} + mod "deactivate_expired_aws_iam_access_keys" { title = "Deactivate expired AWS IAM keys" description = "Deactivates AWS IAM keys that have been active for a certain period of time." - + database = var.database + require { flowpipe { min_version = "0.1.0" @@ -68,7 +75,8 @@ mod "deactivate_expired_aws_iam_access_keys" { | Name | Type | Required? | Description |-|-|-|- | `categories` | List(String) | Optional | A list of labels, used to categorize mods (such as on the Flowpipe Hub). -| `color` | String |Optional | A hexadecimal RGB value to use as the color scheme for the mod on hub.flowpipe.io. +| `color` | String | Optional | A hexadecimal RGB value to use as the color scheme for the mod on hub.flowpipe.io. +| `database` | String | Optional | The database to use as the default for [query steps](/docs/flowpipe-hcl/step/query) and [query triggers](/docs/flowpipe-hcl/trigger/query). The `database` may be a connection reference (`connection.steampipe.default`), a connection string (`postgres://steampipe@127.0.0.1:9193/steampipe`), or a Pipes workspace (`acme/anvils`). If not set, the default is the local Steampipe database instance. | `description` | String | Optional | A string containing a short description. | `documentation` | String (Markdown)| Optional | A markdown string containing a long form description, used as documentation for the mod on hub.flowpipe.io. | `icon` | String | Optional | The URL of an icon to use for the mod on hub.flowpipe.io. diff --git a/docs/flowpipe-hcl/pipeline.md b/docs/flowpipe-hcl/pipeline.md index 13e66ca..c0cddfe 100644 --- a/docs/flowpipe-hcl/pipeline.md +++ b/docs/flowpipe-hcl/pipeline.md @@ -57,6 +57,7 @@ pipeline "get_astronauts" { ## Parameters One or more `param` blocks may optionally be used in a pipeline to define parameters that the pipeline accepts. + ```hcl param "url" { type = string @@ -79,8 +80,9 @@ step "http" "whos_in_space" { |---------------|---------|-------------------------- | `default` | Any | A value to use if no argument is passed for this parameter when the query is run. | `description` | String | A description of the parameter. +| `enum` | Set | A set of allowed values for the param; no other values are allowed. | `tags` | Map | A map of key:value metadata for the benchmark, used to categorize, search, and filter. The structure is up to the mod author and varies by benchmark and provider. -| `type` | String | The data type of the parameter: `string`, `number`, `bool`, `list`, `map`, `any` (default `any`). +| `type` | String | The data type of the parameter: a primitive type `string`, `number`, `bool`, `connection`, `connection.{type}`, `notifier`, or a collection type `list()`, `map()`, or `any` (default `any`). ---- diff --git a/docs/flowpipe-hcl/step/query.md b/docs/flowpipe-hcl/step/query.md index cb8760b..aa7106e 100644 --- a/docs/flowpipe-hcl/step/query.md +++ b/docs/flowpipe-hcl/step/query.md @@ -33,11 +33,11 @@ pipeline "enabled_regions" { ## Arguments -| Argument | Type | Optional? | Description | -| -----------| ------ | --------- | ---------------------------------------------------- | -| `database` | String | Required | A connection string used to connect to the database. | -| `sql` | String | Required | A SQL query string. | -| `args` | List | Optional | A list of arguments to pass to the query. | +| Argument | Type | Optional? | Description +| -----------| ------ | --------- | ---------------------------------------------------- +| `sql` | String | Required | A SQL query string. +| `args` | List | Optional | A list of arguments to pass to the query. +| `database` | String | Optional | A connection string used to connect to the database. If not set, the default set in the [mod `database`](/docs/flowpipe-hcl/mod) will be used. The `database` may be a connection reference (`connection.steampipe.default`), a connection string (`postgres://steampipe@127.0.0.1:9193/steampipe`), or a Pipes workspace (`acme/anvils`). This step also supports the [common step arguments](/docs/flowpipe-hcl/step#common-step-arguments) and [attributes](/docs/flowpipe-hcl/step#common-step-attributes-read-only). @@ -137,44 +137,77 @@ to extract data. ## More Examples + +### Steampipe Query + +If no `database` is specified, then the default defined in the [mod `database`](/docs/flowpipe-hcl/mod) will be used. If that is not set, the local Steampipe instance will be used by default. + +You can also specify a [Steampipe connection](/docs/reference/config-files/connection/postgres) to connect to a Steampipe database: + + +```hcl +pipeline "instances_by_region" { + step "query" "get_instances_by_region" { + database = connection.steampipe.default + sql = "select region, count(*) from aws_ec2_instance group by region;" + } +} +``` + + ### Postgres Query -Postgres `database` follows the standard URI syntax supported by `psql` and `pgcli`: +You can use a [Postgres connection](/docs/reference/config-files/connection/postgres) to connect to a PostgreSQL database: + + +```hcl +pipeline "enabled_regions" { + step "query" "get_enabled_regions" { + database = connection.postgres.mydb + sql = "select name, account_id, opt_in_status from aws_region where opt_in_status <> 'not-opted-in'" + } +} +``` + +Alternatively, you can pass the connection string directly, with the standard URI syntax supported by `psql` and `pgcli`: ```bash postgresql://[user[:password]@][host][:port][/dbname][?param1=value1&...] ``` + ```hcl pipeline "enabled_regions" { - step "query" "get_enabled_regions" { database = "postgres://steampipe@localhost:9193/steampipe" - sql = <<-EOQ - select - name, - account_id, - opt_in_status - from - aws_region - where - opt_in_status <> 'not-opted-in' - EOQ - - } - - output "enabled_regions" { - value = step.query.get_enabled_regions.rows + sql = "select name, account_id, opt_in_status from aws_region where opt_in_status <> 'not-opted-in'" } } ``` ### SQLite query -The SQLite `database` is the path to a SQLite database file: +You can use a [SQLite connection](/docs/reference/config-files/connection/sqlite) to connect to a SQLite database: -```bash -sqlite:path/to/file + +```hcl +pipeline "sqlite_query" { + step "query" "step_1" { + database = connection.sqlite.my_db + sql = "select * from my_sqlite_table;" + } +} +``` + +Alternatively, pass the connection string directly, in the format `sqlite:path/to/file`: + +```hcl +pipeline "sqlite_query" { + step "query" "step_1" { + database = "sqlite:./my_sqlite_db.db" + sql = "select * from my_sqlite_table;" + } +} ``` The path is relative to the [mod location](/docs/run#mod-location), and `//` is optional after the scheme, thus the following are equivalent: @@ -185,31 +218,29 @@ database = "sqlite://./my_sqlite_db.db" database = "sqlite://my_sqlite_db.db" ``` -```hcl -pipeline "sqlite_query" { - step "query" "step_1" { - database = "sqlite:./my_sqlite_db.db" - sql = <` variable "region" { type = string description = "The name of the Region." - default = "" + default = "us-east-1" + enum = [ "us-east-1", "us-east-2", "us-west-1", "us-west-2" ] } -variable "access_key_id" { - type = string - description = "The ID for this access key." - default = "" -} - -variable "secret_access_key" { - type = string - description = "The secret key used to sign requests." - default = "" +variable "conn" { + type = connection.aws + description = "AWS connection to connect with" + default = connection.aws.default } -variable "session_token" { - type = string - description = "The token that users must pass to the service API to use the temporary credentials." - default = "" -} - - pipeline "describe_vpcs" { title = "Describe VPCs" description = "Describes the specified VPCs or all VPCs." @@ -47,16 +35,10 @@ pipeline "describe_vpcs" { default = var.region } - param "access_key_id" { - type = string - description = "The ID for this access key." - default = var.access_key_id - } - - param "secret_access_key" { - type = string - description = "The secret key used to sign requests." - default = var.secret_access_key + param "conn" { + type = connection.aws + description = "AWS connection to connect with" + default = connection.aws.default } param "vpc_ids" { @@ -67,17 +49,12 @@ pipeline "describe_vpcs" { step "container" "describe_vpcs" { image = "amazon/aws-cli" + env = merge(param.conn.env, {AWS_REGION = param.region}) - cmd = concat( - ["ec2", "describe-vpcs"], - try(length(param.vpc_ids), 0) > 0 ? concat(["--vpc-ids"], param.vpc_ids) : [] + cmd = concat( + ["ec2", "describe-vpcs"], + try(length(param.vpc_ids), 0) > 0 ? concat(["--vpc-ids"], param.vpc_ids) : [] ) - - env = { - AWS_REGION = param.region - AWS_ACCESS_KEY_ID = param.access_key_id - AWS_SECRET_ACCESS_KEY = param.secret_access_key - } } output "stdout" { @@ -85,20 +62,18 @@ pipeline "describe_vpcs" { value = jsondecode(step.container.describe_vpcs.stdout) } - output "stderr" { - description = "The standard error stream from the AWS CLI." - value = step.container.describe_vpcs.stderr - } } ``` ## Argument Reference -| Argument | Type | Optional? | Description +| Argument | Type | Optional? | Description |-|-|-|- | `default` | Any |Optional| A default value. If no value is passed, the user is not prompted and the default is used. | `description` | String| Optional| A description of the variable. This text is included when the user is prompted for a variable's value. -| `tags` | Map | Optional | A map of key:value metadata for the benchmark, used to categorize, search, and filter. The structure is up to the mod author and varies by benchmark and provider. -| `type` | Type | Optional | The [variable type](#variable-types). This may be a simple type or a collection. +| `enum` | Set | Optional| A set of allowed values for the variable; no other values are allowed. +| `tags` | Map | Optional | A map of key:value metadata for the benchmark, used to categorize, search, and filter. The structure is up to the mod author and varies by benchmark and provider. +| `type` | Type | Optional | The [variable type](#variable-types). This may be a primitive type `string`, `number`, `bool`, `connection`, `connection.{type}`, `notifier`, or a collection type `list()`, `map()`, or `any` (default `any`). + ## Variable Types @@ -106,6 +81,10 @@ Variables may be simple types: - `string` - `number` - `bool` +- `connection` +- a typed `connection`, eg `connection.aws`, `connection.github` , etc. +- `notifier` + Variables may also be collection types: - `list()` @@ -115,3 +94,16 @@ Variables may also be collection types: - `tuple([, ...])` The keyword `any` may be used to indicate that any type is acceptable + + +## Enum + +Flowpipe supports an `enum` argument to provide a set of allowed values; no other values are allowed. + +```hcl +variable "log_level" { + type = string + default = "info" + enum = ["emerg", "alert", "crit", "err", "warning", "notice", "info", "debug" ] +} +``` \ No newline at end of file diff --git a/docs/reference/cli/index.md b/docs/reference/cli/index.md index 4a2de56..c8cd132 100644 --- a/docs/reference/cli/index.md +++ b/docs/reference/cli/index.md @@ -39,7 +39,7 @@ sidebar_label: Flowpipe CLI --config-path - Sets the search path for configuration files. This argument accepts a colon-separated list of directories. All configuration files (*.fpc) will be loaded from each path, with decreasing precedence. The default is .:$FLOWPIPE_INSTALL_DIR/config (.:~/.flowpipe/config). This allows you to manage your workspaces and credentials centrally in the ~/.flowpipe/config directory, but override them in the working directory / mod location if desired. + Sets the search path for configuration files. This argument accepts a colon-separated list of directories. All configuration files (*.fpc) will be loaded from each path, with decreasing precedence. The default is .:$FLOWPIPE_INSTALL_DIR/config (.:~/.flowpipe/config). This allows you to manage your workspaces and connections centrally in the ~/.flowpipe/config directory, but override them in the working directory / mod location if desired. @@ -128,3 +128,20 @@ sidebar_label: Flowpipe CLI --- + +## Exit Codes + +| Value | Name | Description +|---------|---------------------------------------|---------------------------------------- +| **0** | `ExitCodeSuccessful` | Flowpipe ran successfully +| **1** | `ExitCodeExecutionPaused` | Flowpipe ran without errors but paused waiting input +| **2** | `ExitCodeExecutionFailed` | Flowpipe completed with one or more errors +| **3** | `ExitCodeExecutionCancelled` | The Flowpipe command was canceelled by user request +| **61** | `ExitCodeModInitFailed` | Mod init failed +| **62** | `ExitCodeModInstallFailed` | Mod install failed +| **250** | `ExitCodeInitializationFailed` | Initialization failed +| **251** | `ExitCodeBindPortUnavailable` | Network port binding failed +| **252** | `ExitCodeNoModFile` | The command requires a mod, but no mod file was found +| **253** | `ExitCodeFileSystemAccessFailure` | File system access failed +| **254** | `ExitCodeInsufficientOrWrongInputs` | Runtime error - insufficient or incorrect input +| **255** | `ExitCodeUnknownErrorPanic` | Runtime error - an unknown panic occurred diff --git a/docs/reference/config-files/connection/abuseipdb.md b/docs/reference/config-files/connection/abuseipdb.md new file mode 100644 index 0000000..8492868 --- /dev/null +++ b/docs/reference/config-files/connection/abuseipdb.md @@ -0,0 +1,32 @@ +--- +title: abuseipdb +sidebar_label: abuseipdb +--- + +# abuseipdb + +The `abuseipdb` connection can be used to access AbuseIPDB resources. + +```hcl +connection "abuseipdb" "abuseipdb_api_key" { + api_key = "bfc6f1c42dfakefdxxxx26977977b2xxxsfake98f310123456789de0d" +} +``` + +## Arguments + +| Name | Type | Required? | Description | +| --------- | ------ | --------- | ----------- | +| `api_key` | String | Optional | API Key | + +All arguments are optional, and an `abuseipdb` connection with no arguments will behave the same as the [default connection](#default-connection). + +## Default Connection + +The `abuseipdb` connection type includes an implicit, default connection (`connection.abuseipdb.default`) that will be configured to set the `api_key` to the `ABUSEIPDB_API_KEY` environment variable. + +```hcl +connection "abuseipdb" "default" { + api_key = env("ABUSEIPDB_API_KEY") +} +``` diff --git a/docs/reference/config-files/connection/alicloud.md b/docs/reference/config-files/connection/alicloud.md new file mode 100644 index 0000000..6a0ab0b --- /dev/null +++ b/docs/reference/config-files/connection/alicloud.md @@ -0,0 +1,55 @@ +--- +title: alicloud +sidebar_label: alicloud +--- + +# alicloud + +The `alicloud` connection can be used to access Alibaba Cloud resources. + +```hcl +connection "alicloud" "alicloud" { + access_key = "LTAI4GBVFakeKey09Kxezv66" + secret_key = "6iNPvThisIsNotARealSecretk1sZF" +} +``` + +## Arguments + +| Name | Type | Required? | Description | +| ------------ | ------ | --------- | ------------------------------------------- | +| `access_key` | String | Optional | A static access key to use to authenticate. | +| `secret_key` | String | Optional | A static secret key to use to authenticate. | + +All arguments are optional, and a `alicloud` connection with no arguments will behave the same as the [default connection](#default-connection). + +## Default Connection + +The `alicloud` connection type includes an implicit, default connection (`connection.alicloud.default`) that will be configured using either of the following environment variables: + +1.`ALIBABACLOUD_ACCESS_KEY_ID` and `ALIBABACLOUD_ACCESS_KEY_SECRET`. + +```hcl +connection "alicloud" "default" { + access_key = env("ALIBABACLOUD_ACCESS_KEY_ID") + secret_key = env("ALIBABACLOUD_ACCESS_KEY_SECRET") +} +``` + +2.`ALICLOUD_ACCESS_KEY_ID` and `ALICLOUD_ACCESS_KEY_SECRET`. + +```hcl +connection "alicloud" "default" { + access_key = env("ALICLOUD_ACCESS_KEY_ID") + secret_key = env("ALICLOUD_ACCESS_KEY_SECRET") +} +``` + +3.`ALICLOUD_ACCESS_KEY` and `ALICLOUD_SECRET_KEY`. + +```hcl +connection "alicloud" "default" { + access_key = env("ALICLOUD_ACCESS_KEY") + secret_key = env("ALICLOUD_SECRET_KEY") +} +``` diff --git a/docs/reference/config-files/connection/aws.md b/docs/reference/config-files/connection/aws.md new file mode 100644 index 0000000..c4b3678 --- /dev/null +++ b/docs/reference/config-files/connection/aws.md @@ -0,0 +1,78 @@ +--- +title: aws +sidebar_label: aws +--- + +# aws + +The `aws` connection can be used to access Amazon Web Services resources. + +```hcl +connection "aws" "my_connection" { + profile = "aws-account-01" +} +``` + +## Arguments + +| Name | Type | Required? | Description | +| --------------- | ------ | --------- | -------------------------------------------------------------------------------------------------------------------------- | +| `profile` | String | Optional | The [AWS Profile](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) to use to obtain connections. | +| `access_key` | String | Optional | A static AWS access key to use to authenticate. | +| `secret_key` | String | Optional | A static AWS secret key to use to authenticate. | +| `session_token` | String | Optional | A static AWS session token to use to authenticate. This is only used if you specify `access_key` and `secret_key`. | +| `ttl` | Number | Optional | The time, in seconds, to cache the connections. By default, the AWS connection will be cached for 5 minutes. | + +All arguments are optional, and an `aws` connection with no arguments will behave the same as the [AWS default connection](#default-connection). You may instead specify exactly one of: + +- `profile` +- `access_key` and `secret_key` (and optionally `session_token`) + +## Attributes (Read-Only) + +| Attribute | Type | Description | +| --------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `access_key` | String | The AWS access key to use to authenticate. If you specified the `access_key` arg, then this is the argument value verbatim. If you have specified `profile`, then this is the resolved temporary access key for that profile. | +| `secret_key` | String | The AWS secret key to use to authenticate. If you specified the `secret_key` arg, then this is the argument value verbatim. If you have specified `profile`, then this is the resolved temporary secret key for that profile. | +| `session_token` | String | The AWS session token to use to authenticate. If you specified the `session_token` arg, then this is the argument value verbatim. If you have specified `profile`, then this is the resolved temporary session token for that profile. | +| `env` | Map | A map of the resolved [connection-related environment variables](https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/guide_connections_environment.html) (`AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_SESSION_TOKEN`, `AWS_PROFILE`) | + +## Default Connection + +The AWS connection type includes an implicit, default connection (`connection.aws.default`) that will be configured using the same mechanism as the AWS CLI (AWS environment variables, default profile, etc); the effective connections of this default are the same as if you run the `aws` command. + +## Examples + +### Static Connections + +```hcl +connection "aws" "aws_static" { + access_key = "ASIAQGDFAKEKGUI5MCEU" + secret_key = "QhLNLGM5MBkXiZm2k2tfake+TduEaCkCdpCSLl6U" +} +``` + +### AWS Profile + +```hcl +connection "aws" "aws_profile" { + profile = "awx_prod_01" +} +``` + +### Using AWS Connections in Container Step + +```hcl +pipeline "ex1" { + param "connection" { + type = string + default = "default" + } + + step "container" "aws" { + image = "public.ecr.aws/aws-cli/aws-cli" + cmd = [ "s3", "ls" ] + env = connection.aws[param.connection].env + } +} +``` diff --git a/docs/reference/config-files/connection/azure.md b/docs/reference/config-files/connection/azure.md new file mode 100644 index 0000000..0a0ecf6 --- /dev/null +++ b/docs/reference/config-files/connection/azure.md @@ -0,0 +1,46 @@ +--- +title: azure +sidebar_label: azure +--- + +# azure + +The `azure` connection can be used to access Azure resources. + +```hcl +connection "azure" "azure_connection" { + tenant_id = "YourTenantID" + client_secret = "YourClientSecret" + client_id = "YourClientID" +} +``` + +## Arguments + +| Name | Type | Required? | Description | +| --------------- | ------ | --------- | --------------------------------------------------------------------------------------------------------------- | +| `tenant_id` | String | Optional | The Microsoft Entra tenant (directory) ID. | +| `client_id` | String | Optional | The client (application) ID of an App Registration in the tenant | +| `client_secret` | String | Optional | A client secret that was generated for the App Registration. | +| `environment` | String | Optional | The Azure cloud where your resources exist - `AzureCloud` (default), `AzureChinaCloud`, or `AzureUSGovernment`. | + +All arguments are optional, and a `azure` connection with no arguments will behave the same as the [default connection](#default-connection). + +## Attributes (Read-Only) + +| Attribute | Type | Description | +| --------- | ---- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `env` | Map | A map of the resolved connection-related environment variables (`AZURE_TENANT_ID`, `AZURE_CLIENT_SECRET`, `AZURE_CLIENT_ID`, `AZURE_ENVIRONMENT`) | + +## Default Connection + +The `azure` connection type includes an implicit, default connection (`connection.azure.default`) that will be configured using the Azure environment variables: + +```hcl +connection "azure" "default" { + tenant_id = env("AZURE_TENANT_ID") + client_secret = env("AZURE_CLIENT_SECRET") + client_id = env("AZURE_CLIENT_ID") + environment = env("AZURE_ENVIRONMENT") +} +``` diff --git a/docs/reference/config-files/connection/bitbucket.md b/docs/reference/config-files/connection/bitbucket.md new file mode 100644 index 0000000..c28c972 --- /dev/null +++ b/docs/reference/config-files/connection/bitbucket.md @@ -0,0 +1,44 @@ +--- +title: bitbucket +sidebar_label: bitbucket +--- + +# bitbucket + +The `bitbucket` connection can be used to access Bitbucket resources. + +```hcl +connection "bitbucket" "bb_connection" { + username = "user_name" + password = "P@ss123!" + base_url = "https://api.bitbucket.org/2.0" +} +``` + +## Arguments + +| Name | Type | Required? | Description | +| ---------- | ------ | --------- | --------------------------------- | +| `username` | String | Optional | Bitbucket username | +| `password` | String | Optional | Bitbucket app password | +| `base_url` | String | Optional | Base URL of your Bitbucket Server | + +All arguments are optional, and a `bitbucket` connection with no arguments will behave the same as the [default connection](#default-connection). + +## Attributes (Read-Only) + +| Attribute | Type | Description | +| --------- | ---- | ------------------------------------------------------------------------------------------------------------------------------------- | +| `env` | Map | A map of the resolved connection-related environment variables (`BITBUCKET_USERNAME`, `BITBUCKET_PASSWORD`, `BITBUCKET_API_BASE_URL`) | + +## Default Connection + +The `bitbucket` connection type includes an implicit, default connection (`connection.bitbucket.default`) that will be configured using the environment variables `BITBUCKET_USERNAME`, `BITBUCKET_PASSWORD`, and `BITBUCKET_API_BASE_URL`. + +```hcl +connection "bitbucket" "default" { + username = env("BITBUCKET_USERNAME") + password = env("BITBUCKET_PASSWORD") + base_url = env("BITBUCKET_API_BASE_URL") +} +``` diff --git a/docs/reference/config-files/connection/clickup.md b/docs/reference/config-files/connection/clickup.md new file mode 100644 index 0000000..58412ed --- /dev/null +++ b/docs/reference/config-files/connection/clickup.md @@ -0,0 +1,32 @@ +--- +title: clickup +sidebar_label: clickup +--- + +# clickup + +The `clickup` connection can be used to access ClickUp resources. + +```hcl +connection "clickup" "my_clickup" { + token = "pk_616_L5H36X3CXXXXXXXWEAZZF0NM5" +} +``` + +## Arguments + +| Name | Type | Required?| Description +|-----------------|---------|----------|------------------- +| `token` | String | Optional | API token + +All arguments are optional, and a `clickup` connection with no arguments will behave the same as the [default connection](#default-connection). + +## Default Connection + +The `clickup` connection type includes an implicit, default connection (`connection.clickup.default`) that will be configured to set the `token` to the `CLICKUP_TOKEN` environment variable. + +```hcl +connection "clickup" "default" { + token = env("CLICKUP_TOKEN") +} +``` diff --git a/docs/reference/config-files/connection/datadog.md b/docs/reference/config-files/connection/datadog.md new file mode 100644 index 0000000..43e2e00 --- /dev/null +++ b/docs/reference/config-files/connection/datadog.md @@ -0,0 +1,37 @@ +--- +title: datadog +sidebar_label: datadog +--- + +# datadog + +The `datadog` connection can be used to access Datadog resources. + +```hcl +connection "datadog" "my_datadog_connection" { + api_key = "b1cf234................." + app_key = "1a2345bc..................." + api_url = "https://api.adoghq.com/" +} +``` + +## Arguments + +| Name | Type | Required? | Description | +| --------- | ------ | --------- | --------------- | +| `api_key` | String | Optional | API key | +| `app_key` | String | Optional | Application key | +| `api_url` | String | Optional | API URL | + +All arguments are optional, and a `datadog` connection with no arguments will behave the same as the [default connection](#default-connection). + +## Default Connection + +The `datadog` connection type includes an implicit, default connection (`connection.datadog.default`) that will be configured using the environment variables `DD_CLIENT_API_KEY`, and `DD_CLIENT_APP_KEY`. + +```hcl +connection "datadog" "my_datadog_connection" { + api_key = env("DD_CLIENT_API_KEY") + app_key = env("DD_CLIENT_APP_KEY") +} +``` diff --git a/docs/reference/config-files/connection/discord.md b/docs/reference/config-files/connection/discord.md new file mode 100644 index 0000000..ba88723 --- /dev/null +++ b/docs/reference/config-files/connection/discord.md @@ -0,0 +1,38 @@ +--- +title: discord +sidebar_label: discord +--- + +# discord + +The `discord` connection can be used to access Discord resources. + +```hcl +connection "discord" "my_discord" { + token = "00B630jSCGU4Fake5Yh4KQMFakezwE2OgVcS7N999b" +} +``` + +## Arguments + +| Name | Type | Required? | Description | +| ------- | ------ | --------- | ----------- | +| `token` | String | Optional | API token | + +All arguments are optional, and a `discord` connection with no arguments will behave the same as the [default connection](#default-connection). + +## Attributes (Read-Only) + +| Attribute | Type | Description | +| --------- | ---- | -------------------------------------------------------------------------------- | +| `env` | Map | A map of the resolved connection-related environment variables (`DISCORD_TOKEN`) | + +## Default Connection + +The `discord` connection type includes an implicit, default connection (`connection.discord.default`) that will be configured to set the `token` to the `DISCORD_TOKEN` environment variable. + +```hcl +connection "discord" "default" { + token = env("DISCORD_TOKEN") +} +``` diff --git a/docs/reference/config-files/connection/duckdb.md b/docs/reference/config-files/connection/duckdb.md new file mode 100644 index 0000000..bc1cc97 --- /dev/null +++ b/docs/reference/config-files/connection/duckdb.md @@ -0,0 +1,41 @@ +--- +title: duckdb +sidebar_label: duckdb +--- + +# duckdb + +The `duckdb` connection can be used to access a [DuckDB](https://duckdb.org/) database. + +```hcl +connection "duckdb" "duckdb_connection" { + file = "my_ducks.db" +} +``` + +## Arguments + +| Name | Type | Required?| Description +|------------|---------|----------|------------------- +| `filename` | String | Optional | Path to a DuckDB database file to open. The filename is relative to the [mod location](/docs/run#mod-location) + + +All arguments are optional, and a `postgres` connection with no arguments will behave the same as the [default connection](#default-connection). + +## Attributes (Read-Only) + +| Attribute | Type | Description +| --------------------| ------ |------------------------------------------------------------------------------ +| `connection_string` | String | The connection string built from the arguments to this connection, in the format `duckdb://path/to/file` + + + +## Default Connection + +The `duckdb` connection type includes an implicit, default connection (`connection.duckdb.default`), which will use the `DUCKDB_FILENAME` environment variable unless overridden. + +```hcl +connection "duckcb" "default" { + file = env("DUCKDB_FILENAME") +} +``` diff --git a/docs/reference/config-files/connection/freshdesk.md b/docs/reference/config-files/connection/freshdesk.md new file mode 100644 index 0000000..f434755 --- /dev/null +++ b/docs/reference/config-files/connection/freshdesk.md @@ -0,0 +1,35 @@ +--- +title: freshdesk +sidebar_label: freshdesk +--- + +# freshdesk + +The `freshdesk` connection can be used to access Freshdesk resources. + +```hcl +connection "freshdesk" "freshdesk_connection" { + api_key = "sk-jwgthNa..." + subdomain = "domain_name" +} +``` + +## Arguments + +| Name | Type | Required? | Description | +| ----------- | ------ | --------- | ------------------- | +| `api_key` | String | Optional | Freshdesk API key | +| `subdomain` | String | Optional | Freshdesk subdomain | + +All arguments are optional, and a `freshdesk` connection with no arguments will behave the same as the [default connection](#default-connection). + +## Default Connection + +The `freshdesk` connection type includes an implicit, default connection (`connection.freshdesk.default`) that will be configured using the environment variables `FRESHDESK_API_KEY` and `FRESHDESK_SUBDOMAIN`. + +```hcl +connection "freshdesk" "default" { + api_key = env("FRESHDESK_API_KEY") + subdomain = env("FRESHDESK_SUBDOMAIN") +} +``` diff --git a/docs/reference/config-files/connection/gcp.md b/docs/reference/config-files/connection/gcp.md new file mode 100644 index 0000000..9d69cb4 --- /dev/null +++ b/docs/reference/config-files/connection/gcp.md @@ -0,0 +1,103 @@ +--- +title: gcp +sidebar_label: gcp +--- + +# gcp + +The `gcp` connection can be used to access Google Cloud Platform resources. + +```hcl +connection "gcp" "gcp_def" { + connections = "~/.config/gcloud/my_connections.json" +} +``` + +## Arguments + +| Name | Type | Required? | Description | +| ------------- | ------ | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| `credentials` | String | Optional | Either the path to a JSON credential file that contains Google application credentials or the contents of a service account key file in JSON format. | +| `ttl` | Number | Optional | The time, in seconds, to cache the connections. By default, the GP connection will be cached for 5 minutes. | + +All arguments are optional, and a `gcp` connection with no arguments will behave the same as the [GCP default connection](#default-connection). + +## Attributes (Read-Only) + +| Attribute | Type | Description | +| -------------- | ------ | ---------------------------------------------------- | +| `access_token` | String | An OAuth access token to use to authenticate to GCP. | + +## Default Connection + +The GCP connection type includes an implicit, default connection (`connection.gcp.default`) that will be configured using the same mechanism as the GCloud CLI (environment variables, config files, etc); the effective connections of this default are the same as if you run the `gcloud` command. Connections will be loaded from: + +- The path specified in the `GOOGLE_APPLICATION_CONNECTIONS` environment variable, if set; otherwise +- The standard location (`~/.config/gcloud/application_default_connections.json`) + +## Examples + +### Static Connections from Connection File + +```hcl +connection "gcp" "gcp_def" { + connections = "~/.config/gcloud/my_connections.json" +} +``` + +### Static Connections defined inline + +```hcl +connection "gcp_inline" { + #project = "my_project" + connections = < \ No newline at end of file diff --git a/docs/reference/config-files/connection/steampipe.md b/docs/reference/config-files/connection/steampipe.md new file mode 100644 index 0000000..960747e --- /dev/null +++ b/docs/reference/config-files/connection/steampipe.md @@ -0,0 +1,55 @@ +--- +title: steampipe +sidebar_label: steampipe +--- + +# steampipe + +The `steampipe` connection can be used to access a [Steampipe](https://steampipe.io/) database. + +```hcl +connection "steampipe" "steampipe_connection" { + host = "localhost" + port = 9193 + db = "steampipe" + username = "steampipe" + password = "mypassword123" +} +``` + +## Arguments + +| Name | Type | Required?| Description +|---------------------|---------|----------|------------------- +| `db` | String | Optional | Database name. Defaults to `steampipe`. +| `host` | String | Optional | Database hostname. Defaults to `127.0.0.1`. +| `password` | String | Optional | Database password. +| `port` | Number | Optional | Database port. Defaults to `9193`. +| `search_path` | String | Optional | Database search path. +| `search_path_prefix`| String | Optional | Database search path prefix. +| `ssl_mode` | String | Optional | PostgreSQL [SSL Mode](https://www.postgresql.org/docs/current/libpq-ssl.html#LIBPQ-SSL-PROTECTION), one of `disable`, `allow`, `prefer`, `require`, `verify-ca`, `verify-full`. The default is `require`. +| `username` | String | Optional | Database username. Default is `steampipe`. + + +All arguments are optional, and a `steampipe` connection with no arguments will behave the same as the [default connection](#default-connection). + + +## Attributes (Read-Only) + +| Attribute | Type | Description +| --------------------| ------ |------------------------------------------------------------------------------ +| `connection_string` | String | The connection string built from the arguments to this connection, in the format `postgresql://[username[:password]@][host][:port][/db]` +| `env` | Map | A map of the resolved [libpq environment variables](https://www.postgresql.org/docs/current/libpq-envars.html) (`PGHOST`, `PGDATABASE`, `PGUSER`, `PGPASSWORD`, `PGPORT`, `PGSSLNEGOTIATION`) + + + +## Default Connection + +The `steampipe` connection type includes an implicit, default connection (`connection.steampipe.default`) that will be configured to use the local Steampipe instance, eg: + +```hcl + host = "localhost" + port = 9193 + db = "steampipe" + username = "steampipe" +``` \ No newline at end of file diff --git a/docs/reference/config-files/connection/teams.md b/docs/reference/config-files/connection/teams.md new file mode 100644 index 0000000..1bdf7a7 --- /dev/null +++ b/docs/reference/config-files/connection/teams.md @@ -0,0 +1,38 @@ +--- +title: teams +sidebar_label: teams +--- + +# teams + +The `teams` connection can be used to access Microsoft Teams resources. + +```hcl +connection "teams" "my_teams" { + access_token= "bfc6f1c4fakesdfdxxxx26fake977b2xxxsfsdfakef313c3d389126de0d" +} +``` + +## Arguments + +| Name | Type | Required? | Description | +| -------------- | ------ | --------- | ----------- | +| `access_token` | String | Optional | API token | + +All arguments are optional, and a `teams` connection with no arguments will behave the same as the [default connection](#default-connection). + +## Attributes (Read-Only) + +| Attribute | Type | Description | +| --------- | ---- | ------------------------------------------------------------------------------------- | +| `env` | Map | A map of the resolved connection-related environment variables (`TEAMS_ACCESS_TOKEN`) | + +## Default Connection + +The `teams` connection type includes an implicit, default connection (`connection.teams.default`) that will be configured to set the `access_token` to the `TEAMS_ACCESS_TOKEN` environment variable. + +```hcl +connection "teams" "default" { + access_token = env("TEAMS_ACCESS_TOKEN") +} +``` diff --git a/docs/reference/config-files/connection/template.keep b/docs/reference/config-files/connection/template.keep new file mode 100644 index 0000000..1798caa --- /dev/null +++ b/docs/reference/config-files/connection/template.keep @@ -0,0 +1,39 @@ +--- +title: xxxxx +sidebar_label: xxxxx +--- + +# xxxxx + +The `xxxxx` connection can be used to access XXXXX resources. + +```hcl + +``` + +## Arguments + +| Name | Type | Required?| Description +|-----------------|---------|----------|------------------- +| `TTTTTT` | String | Optional | API + + +All arguments are optional, and a `xxxxx` connection with no arguments will behave the same as the [default connection](#default-connection). + +## Default Connection +The `xxxxx` connection type includes an implicit, default connection (`connection.xxxxx.default`) that will be configured to set the `TTTTTT` to the `EEEEEEE` environment variable. + +```hcl +connection "xxxxx" "default" { + TTTTTT = env("EEEEEEE") +} +``` + +## Examples + +### Static Connections +```hcl +connection "xxxxx" "my_xxxxx" { + TTTTTT = "xoxp-234567890" +} +``` diff --git a/docs/reference/config-files/connection/trello.md b/docs/reference/config-files/connection/trello.md new file mode 100644 index 0000000..44ddc10 --- /dev/null +++ b/docs/reference/config-files/connection/trello.md @@ -0,0 +1,35 @@ +--- +title: trello +sidebar_label: trello +--- + +# trello + +The `trello` connection can be used to access Trello resources. + +```hcl +connection "trello" "my_trello" { + api_key = "a25ad2e..." + token = "ATTAb179ea..." +} +``` + +## Arguments + +| Name | Type | Required? | Description | +| --------- | ------ | --------- | ----------- | +| `api_key` | String | Optional | API key | +| `token` | String | Optional | API token | + +All arguments are optional, and a `trello` connection with no arguments will behave the same as the [default connection](#default-connection). + +## Default Connection + +The `trello` connection type includes an implicit, default connection (`connection.trello.default`) that will be configured to set the `api_key` to the `TRELLO_API_KEY` environment variable and the `token` to the `TRELLO_TOKEN` environment variable. + +```hcl +connection "trello" "default" { + api_key = env("TRELLO_API_KEY") + token = env("TRELLO_TOKEN") +} +``` diff --git a/docs/reference/config-files/connection/turbot_guardrails.md b/docs/reference/config-files/connection/turbot_guardrails.md new file mode 100644 index 0000000..b9be4be --- /dev/null +++ b/docs/reference/config-files/connection/turbot_guardrails.md @@ -0,0 +1,44 @@ +--- +title: guardrails +sidebar_label: guardrails +--- + +# guardrails + +The `guardrails` connection can be used to access [Turbot Guardrails](https://turbot.com/guardrails) resources. + +```hcl +connection "guardrails" "my_guardrail" { + access_key = "c8e2c2ed-1ca8-429b-b369-123..." + secret_key = "a3d8385d-47f7-40c5-a90c-123..." + workspace = "https://my_workspace.sass.turbot.com" +} +``` + +## Arguments + +| Name | Type | Required? | Description | +| ------------ | ------ | --------- | ------------- | +| `access_key` | String | Optional | Access key | +| `secret_key` | String | Optional | Secret key | +| `workspace` | String | Optional | Workspace URL | + +All arguments are optional, and a `guardrails` connection with no arguments will behave the same as the [default connection](#default-connection). + +## Attributes (Read-Only) + +| Attribute | Type | Description | +| --------- | ---- | ----------------------------------------------------------------------------------------------------------------------------- | +| `env` | Map | A map of the resolved connection-related environment variables (`TURBOT_ACCESS_KEY`, `TURBOT_SECRET_KEY`, `TURBOT_WORKSPACE`) | + +## Default Connection + +The `guardrails` connection type includes an implicit, default connection (`connection.guardrails.default`) that will be configured using the environment variables `TURBOT_ACCESS_KEY`, `TURBOT_SECRET_KEY`, and `TURBOT_WORKSPACE`. + +```hcl +connection "guardrails" "my_guardrail" { + access_key = env("TURBOT_ACCESS_KEY") + secret_key = env("TURBOT_SECRET_KEY") + workspace = env("TURBOT_WORKSPACE") +} +``` diff --git a/docs/reference/config-files/connection/uptimerobot.md b/docs/reference/config-files/connection/uptimerobot.md new file mode 100644 index 0000000..e0e0735 --- /dev/null +++ b/docs/reference/config-files/connection/uptimerobot.md @@ -0,0 +1,38 @@ +--- +title: uptimerobot +sidebar_label: uptimerobot +--- + +# uptimerobot + +The `uptimerobot` connection can be used to access UptimeRobot resources. + +```hcl +connection "uptimerobot" "my_uptimerobot" { + api_key = "u123456-ecaf32fakekey633ff33dd3c445" +} +``` + +## Arguments + +| Name | Type | Required? | Description | +| --------- | ------ | --------- | ----------- | +| `api_key` | String | Optional | API Key | + +All arguments are optional, and a `uptimerobot` connection with no arguments will behave the same as the [default connection](#default-connection). + +## Attributes (Read-Only) + +| Attribute | Type | Description | +| --------- | ---- | -------------------------------------------------------------------------------------- | +| `env` | Map | A map of the resolved connection-related environment variables (`UPTIMEROBOT_API_KEY`) | + +## Default Connection + +The `uptimerobot` connection type includes an implicit, default connection (`connection.uptimerobot.default`) that will be configured to set the `api_key` to the `UPTIMEROBOT_API_KEY` environment variable. + +```hcl +connection "uptimerobot" "default" { + api_key = env("UPTIMEROBOT_API_KEY") +} +``` diff --git a/docs/reference/config-files/connection/urlscan.md b/docs/reference/config-files/connection/urlscan.md new file mode 100644 index 0000000..2176516 --- /dev/null +++ b/docs/reference/config-files/connection/urlscan.md @@ -0,0 +1,38 @@ +--- +title: urlscan +sidebar_label: urlscan +--- + +# urlscan + +The `urlscan` connection can be used to access URLScan resources. + +```hcl +connection "urlscan" "my_urlscan" { + api_key = "11111111-e127-1234-adcd-59cad2f12abc" +} +``` + +## Arguments + +| Name | Type | Required? | Description | +| --------- | ------ | --------- | ----------- | +| `api_key` | String | Optional | API Key | + +All arguments are optional, and a `urlscan` connection with no arguments will behave the same as the [default connection](#default-connection). + +## Attributes (Read-Only) + +| Attribute | Type | Description | +| --------- | ---- | ---------------------------------------------------------------------------------- | +| `env` | Map | A map of the resolved connection-related environment variables (`URLSCAN_API_KEY`) | + +## Default Connection + +The `urlscan` connection type includes an implicit, default connection (`connection.urlscan.default`) that will be configured to set the `api_key` to the `URLSCAN_API_KEY` environment variable. + +```hcl +connection "urlscan" "default" { + api_key = env("URLSCAN_API_KEY") +} +``` diff --git a/docs/reference/config-files/connection/vault.md b/docs/reference/config-files/connection/vault.md new file mode 100644 index 0000000..dd89c76 --- /dev/null +++ b/docs/reference/config-files/connection/vault.md @@ -0,0 +1,41 @@ +--- +title: vault +sidebar_label: vault +--- + +# vault + +The `vault` connection can be used to access Vault resources. + +```hcl +connection "vault" "my_vault" { + address = "http://127.0.0.1:8200" + token = "hvs.FaKe" +} +``` + +## Arguments + +| Name | Type | Required? | Description | +| --------- | ------ | --------- | -------------------- | +| `address` | String | Optional | Vault server address | +| `token` | String | Optional | API token | + +All arguments are optional, and a `vault` connection with no arguments will behave the same as the [default connection](#default-connection). + +## Attributes (Read-Only) + +| Attribute | Type | Description | +| --------- | ---- | -------------------------------------------------------------------------------------------- | +| `env` | Map | A map of the resolved connection-related environment variables (`VAULT_ADDR`, `VAULT_TOKEN`) | + +## Default Connection + +The `vault` connection type includes an implicit, default connection (`connection.vault.default`) that will be configured to set the `token` to the `VAULT_TOKEN` environment variable and the `domain` to `VAULT_ADDR`. + +```hcl +connection "vault" "default" { + domain = env("VAULT_ADDR") + token = env("VAULT_TOKEN") +} +``` diff --git a/docs/reference/config-files/connection/virustotal.md b/docs/reference/config-files/connection/virustotal.md new file mode 100644 index 0000000..a3e08d2 --- /dev/null +++ b/docs/reference/config-files/connection/virustotal.md @@ -0,0 +1,32 @@ +--- +title: virustotal +sidebar_label: virustotal +--- + +# virustotal + +The `virustotal` connection can be used to access VirusTotal resources. + +```hcl +connection "virustotal" "my_ virustotal" { + api_key = "SG.R7..." +} +``` + +## Arguments + +| Name | Type | Required? | Description | +| --------- | ------ | --------- | ----------- | +| `api_key` | String | Optional | API key | + +All arguments are optional, and a `virustotal` connection with no arguments will behave the same as the [default connection](#default-connection). + +## Default Connection + +The `virustotal` connection type includes an implicit, default connection (`connection.virustotal.default`) that will be configured to set the `api_key` to the `VTCLI_APIKEY` environment variable. + +```hcl +connection "virustotal" "default" { + api_key = env("VTCLI_APIKEY") +} +``` diff --git a/docs/reference/config-files/connection/zendesk.md b/docs/reference/config-files/connection/zendesk.md new file mode 100644 index 0000000..59dd001 --- /dev/null +++ b/docs/reference/config-files/connection/zendesk.md @@ -0,0 +1,38 @@ +--- +title: zendesk +sidebar_label: zendesk +--- + +# zendesk + +The `zendesk` connection can be used to access Zendesk resources. + +```hcl +connection "zendesk" "my_zendesk" { + subdomain = "dmi" + email = "pam@dmi.com" + token = "17ImlCYdfThisIsFakepJn1fi1pLwVdrb21114" +} +``` + +## Arguments + +| Name | Type | Required?| Description +|-----------------|---------|----------|------------------- +| `subdomain` | String | Optional | The subdomain name of your Zendesk account. +| `email` | String | Optional | Email address of agent user who have permission to access the API. +| `token` | String | Optional | API Token for your Zendesk instance. + +All arguments are optional, and a `zendesk` connection with no arguments will behave the same as the [default connection](#default-connection). + +## Default Connection + +The `zendesk` connection type includes an implicit, default connection (`connection.zendesk.default`) that will be configured to set defaults using the environment variables `ZENDESK_EMAIL`, `ZENDESK_SUBDOMAIN`, and `ZENDESK_API_TOKEN`. + +```hcl +connection "zendesk" "default" { + subdomain = env("ZENDESK_SUBDOMAIN") + email = env("ZENDESK_EMAIL") + token = env("ZENDESK_API_TOKEN") +} +``` diff --git a/docs/reference/config-files/connection_import/index.md b/docs/reference/config-files/connection_import/index.md new file mode 100644 index 0000000..d65edb8 --- /dev/null +++ b/docs/reference/config-files/connection_import/index.md @@ -0,0 +1,109 @@ +--- +title: connection_import +sidebar_label: connection_import +--- + + +# Connection Import + + +The `connection_import` resource allows you to bulk import connections from other systems & formats. `connection_import` is a top-level block defined in config files (`*.fpc`) like `connection` and `workspace`. + +```hcl +connection_import "steampipe" { + source = "~/.steampipe/config/*.spc" + connections = ["*"] + prefix = "sp1_" +} +``` + +Imported connections are converted to the native Flowpipe connection type - Steampipe `aws` connections become `aws` connections, `slack` connections are `slack` connections, etc. + +The imported connections are merged into the map of all connections like any other connection, and they are referenced the same way. For example, if you have connections defined as: + +```hcl +connection "gcp_dev_aaa" { + plugin = "gcp" + project = "dev-aaa" +} + +connection "gcp_demo" { + plugin = "gcp" + project = "demo" +} + +connection "aws_001" { + plugin = "aws" + regions = ["*"] + profile = "aws-001" +} + +connection "aws_002" { + plugin = "aws" + regions = ["*"] + profile = "aws-002" +} + +connection "slack" { + plugin = "slack" + token = "xoxp-12345678902345" +} +``` + +and import with: + +```hcl +connection_import "steampipe" { + source = "~/.steampipe/config/*.spc" + connections = ["*"] +} +``` + +Then they will be available in Flowpipe as: + +```hcl +connection.gcp.gcp_dev_aaa +connection.gcp.gcp_demo +connection.aws.aws_001 +connection.aws.aws_002 +connection.slack.slack +``` + +and they will have the same attributes as the native Flowpipe connection types: + +```hcl +connection.gcp.gcp_dev_aaa.access_token +connection.aws.aws_001.env +connection.aws.aws_001.access_key +connection.aws.aws_001.secret_key +connection.aws.aws_001.session_token +connection.slack.slack.token +# etc... +``` + +If you specify a `prefix`, the connection names will be prepended with it: +```hcl +connection_import "steampipe" { + source = "~/.steampipe/config/*.spc" + connections = ["*"] + prefix = "sp1_" +} +``` + +Results in: + +```hcl +connection.gcp.sp1_gcp_dev_aaa +connection.gcp.sp1_gcp_demo +connection.aws.sp1_aws_001 +connection.aws.sp1_aws_002 +connection.slack.sp1_slack +``` + +If there is a name conflict for any connections, Flowpipe will throw an error when loading. + +At this time, you may only use a single `import_connection` block. + + \ No newline at end of file diff --git a/docs/reference/config-files/connection_import/steampipe.md b/docs/reference/config-files/connection_import/steampipe.md new file mode 100644 index 0000000..0642782 --- /dev/null +++ b/docs/reference/config-files/connection_import/steampipe.md @@ -0,0 +1,54 @@ +--- +title: steampipe +sidebar_label: steampipe +--- + + +# steampipe + +The `steampipe` connection import resource allows you to bulk import connections from Steampipe connections. This allows you to import the plugin connections from your Steampipe installation into Flowpipe. + +```hcl +connection_import "steampipe" { + source = "~/.steampipe/config/*.spc" + connections = ["*"] +} +``` + +## Arguments + +| Name | Type | Required?| Description +|-----------------|---------|----------|------------------- +| `source` | String | Optional | Path to the config file(s) with the connections to import. Defaults to `~/.steampipe/config/*.spc`. +| `connections` | List<String> | Optional | A list of connection names to import. You may use the `*` globbing wildcard in these entries. The default is `["*"]` (all connections). +| `prefix` | String | Optional | A string to prepend to the connection name to create the connection name. + +## Examples + +### Import ALL Steampipe connections +```hcl +connection_import "steampipe" {} +``` +or +```hcl +connection_import "steampipe" { + source = "~/.steampipe/config/*.spc" + connections = ["*"] +} +``` + +### Import ALL Steampipe connections and prefix them +```hcl +connection_import "steampipe" { + prefix = "sp_" +} +``` + +### Import specific Steampipe connections only + +```hcl +connection_import "steampipe" { + source = "~/.steampipe/config/aws.spc" + connections = ["aws_prod*", "aws_all"] +} +``` \ No newline at end of file diff --git a/docs/reference/config-files/credential/abuseipdb.md b/docs/reference/config-files/credential/abuseipdb.md index 138d3a7..884aca3 100644 --- a/docs/reference/config-files/credential/abuseipdb.md +++ b/docs/reference/config-files/credential/abuseipdb.md @@ -5,6 +5,9 @@ sidebar_label: abuseipdb # abuseipdb +> ***As of Flowpipe 1.0.0, `credential` has been renamed to `connection`. The `abuseipdb` credential resource is deprecated and will be removed in a future version of Flowpipe. Use the [abuseipdb connection](/docs/reference/config-files/connection/abuseipdb) instead.*** + + The `abuseipdb` credential can be used to access AbuseIPDB resources. ```hcl diff --git a/docs/reference/config-files/credential/alicloud.md b/docs/reference/config-files/credential/alicloud.md index 282ad9c..98658c7 100644 --- a/docs/reference/config-files/credential/alicloud.md +++ b/docs/reference/config-files/credential/alicloud.md @@ -5,6 +5,9 @@ sidebar_label: alicloud # alicloud +> ***As of Flowpipe 1.0.0, `credential` has been renamed to `connection`. The `alicloud` credential resource is deprecated and will be removed in a future version of Flowpipe. Use the [alicloud connection](/docs/reference/config-files/connection/alicloud) instead.*** + + The `alicloud` credential can be used to access Alibaba Cloud resources. ```hcl diff --git a/docs/reference/config-files/credential/aws.md b/docs/reference/config-files/credential/aws.md index 42fa2f6..9340de1 100644 --- a/docs/reference/config-files/credential/aws.md +++ b/docs/reference/config-files/credential/aws.md @@ -5,6 +5,8 @@ sidebar_label: aws # aws +> ***As of Flowpipe 1.0.0, `credential` has been renamed to `connection`. The `aws` credential resource is deprecated and will be removed in a future version of Flowpipe. Use the [aws connection](/docs/reference/config-files/connection/aws) instead.*** + The `aws` credential can be used to access Amazon Web Services resources. ```hcl diff --git a/docs/reference/config-files/credential/azure.md b/docs/reference/config-files/credential/azure.md index 7478c90..24c8aca 100644 --- a/docs/reference/config-files/credential/azure.md +++ b/docs/reference/config-files/credential/azure.md @@ -5,6 +5,9 @@ sidebar_label: azure # azure +> ***As of Flowpipe 1.0.0, `credential` has been renamed to `connection`. The `azure` credential resource is deprecated and will be removed in a future version of Flowpipe. Use the [azure connection](/docs/reference/config-files/connection/azure) instead.*** + + The `azure` credential can be used to access Azure resources. ```hcl diff --git a/docs/reference/config-files/credential/bitbucket.md b/docs/reference/config-files/credential/bitbucket.md index d81af52..f120caa 100644 --- a/docs/reference/config-files/credential/bitbucket.md +++ b/docs/reference/config-files/credential/bitbucket.md @@ -5,6 +5,8 @@ sidebar_label: bitbucket # bitbucket +> ***As of Flowpipe 1.0.0, `credential` has been renamed to `connection`. The `bitbucket` credential resource is deprecated and will be removed in a future version of Flowpipe. Use the [bitbucket connection](/docs/reference/config-files/connection/bitbucket) instead.*** + The `bitbucket` credential can be used to access Bitbucket resources. ```hcl diff --git a/docs/reference/config-files/credential/clickup.md b/docs/reference/config-files/credential/clickup.md index fa681cc..3f70b47 100644 --- a/docs/reference/config-files/credential/clickup.md +++ b/docs/reference/config-files/credential/clickup.md @@ -5,6 +5,8 @@ sidebar_label: clickup # clickup +> ***As of Flowpipe 1.0.0, `credential` has been renamed to `connection`. The `clickup` credential resource is deprecated and will be removed in a future version of Flowpipe. Use the [clickup connection](/docs/reference/config-files/connection/clickup) instead.*** + The `clickup` credential can be used to access ClickUp resources. ```hcl diff --git a/docs/reference/config-files/credential/datadog.md b/docs/reference/config-files/credential/datadog.md index 275a2b0..33e0bc8 100644 --- a/docs/reference/config-files/credential/datadog.md +++ b/docs/reference/config-files/credential/datadog.md @@ -5,6 +5,9 @@ sidebar_label: datadog # datadog +> ***As of Flowpipe 1.0.0, `credential` has been renamed to `connection`. The `datadog` credential resource is deprecated and will be removed in a future version of Flowpipe. Use the [datadog connection](/docs/reference/config-files/connection/datadog) instead.*** + + The `datadog` credential can be used to access Datadog resources. ```hcl diff --git a/docs/reference/config-files/credential/discord.md b/docs/reference/config-files/credential/discord.md index 0f9bb59..e694c5d 100644 --- a/docs/reference/config-files/credential/discord.md +++ b/docs/reference/config-files/credential/discord.md @@ -5,6 +5,8 @@ sidebar_label: discord # discord +> ***As of Flowpipe 1.0.0, `credential` has been renamed to `connection`. The `discord` credential resource is deprecated and will be removed in a future version of Flowpipe. Use the [discord connection](/docs/reference/config-files/connection/discord) instead.*** + The `discord` credential can be used to access Discord resources. ```hcl diff --git a/docs/reference/config-files/credential/freshdesk.md b/docs/reference/config-files/credential/freshdesk.md index e074a8b..59061e5 100644 --- a/docs/reference/config-files/credential/freshdesk.md +++ b/docs/reference/config-files/credential/freshdesk.md @@ -5,6 +5,8 @@ sidebar_label: freshdesk # freshdesk +> ***As of Flowpipe 1.0.0, `credential` has been renamed to `connection`. The `freshdesk` credential resource is deprecated and will be removed in a future version of Flowpipe. Use the [freshdesk connection](/docs/reference/config-files/connection/freshdesk) instead.*** + The `freshdesk` credential can be used to access Freshdesk resources. ```hcl diff --git a/docs/reference/config-files/credential/gcp.md b/docs/reference/config-files/credential/gcp.md index d13495f..31b5da8 100644 --- a/docs/reference/config-files/credential/gcp.md +++ b/docs/reference/config-files/credential/gcp.md @@ -5,6 +5,8 @@ sidebar_label: gcp # gcp +> ***As of Flowpipe 1.0.0, `credential` has been renamed to `connection`. The `gcp` credential resource is deprecated and will be removed in a future version of Flowpipe. Use the [gcp connection](/docs/reference/config-files/connection/gcp) instead.*** + The `gcp` credential can be used to access Google Cloud Platform resources. ```hcl diff --git a/docs/reference/config-files/credential/github.md b/docs/reference/config-files/credential/github.md index c6b102f..57e4d15 100644 --- a/docs/reference/config-files/credential/github.md +++ b/docs/reference/config-files/credential/github.md @@ -5,6 +5,8 @@ sidebar_label: github # github +> ***As of Flowpipe 1.0.0, `credential` has been renamed to `connection`. The `github` credential resource is deprecated and will be removed in a future version of Flowpipe. Use the [github connection](/docs/reference/config-files/connection/github) instead.*** + The `github` credential can be used to access GitHub resources. ```hcl diff --git a/docs/reference/config-files/credential/gitlab.md b/docs/reference/config-files/credential/gitlab.md index 1483541..172bf7d 100644 --- a/docs/reference/config-files/credential/gitlab.md +++ b/docs/reference/config-files/credential/gitlab.md @@ -5,6 +5,8 @@ sidebar_label: gitlab # gitlab +> ***As of Flowpipe 1.0.0, `credential` has been renamed to `connection`. The `gitlab` credential resource is deprecated and will be removed in a future version of Flowpipe. Use the [gitlab connection](/docs/reference/config-files/connection/gitlab) instead.*** + The `gitlab` credential can be used to access GitLab resources. ```hcl diff --git a/docs/reference/config-files/credential/index.md b/docs/reference/config-files/credential/index.md index bb5006e..111440b 100644 --- a/docs/reference/config-files/credential/index.md +++ b/docs/reference/config-files/credential/index.md @@ -5,6 +5,9 @@ sidebar_label: credential # Credential +> ***As of Flowpipe 1.0.0, `credential` has been renamed to `connection`. The `credential` resource is deprecated and will be removed in a future version of Flowpipe. Use [connection](/docs/reference/config-files/connection) instead.*** + + Flowpipe **Credentials** provide a mechanism for defining and sharing secrets in your Flowpipe environment. ```hcl diff --git a/docs/reference/config-files/credential/ip2locationio.md b/docs/reference/config-files/credential/ip2locationio.md index 54184e2..f722147 100644 --- a/docs/reference/config-files/credential/ip2locationio.md +++ b/docs/reference/config-files/credential/ip2locationio.md @@ -5,6 +5,10 @@ sidebar_label: ip2locationio # ip2locationio + +> ***As of Flowpipe 1.0.0, `credential` has been renamed to `connection`. The `ip2locationio` credential resource is deprecated and will be removed in a future version of Flowpipe. Use the [ip2locationio connection](/docs/reference/config-files/connection/ip2locationio) instead.*** + + The `ip2locationio` credential can be used to access Ip2Location.io resources. ```hcl diff --git a/docs/reference/config-files/credential/ipstack.md b/docs/reference/config-files/credential/ipstack.md index 0c82e2b..b4251c5 100644 --- a/docs/reference/config-files/credential/ipstack.md +++ b/docs/reference/config-files/credential/ipstack.md @@ -5,6 +5,9 @@ sidebar_label: ipstack # ipstack +> ***As of Flowpipe 1.0.0, `credential` has been renamed to `connection`. The `ipstack` credential resource is deprecated and will be removed in a future version of Flowpipe. Use the [ipstack connection](/docs/reference/config-files/connection/ipstack) instead.*** + + The `ipstack` credential can be used to access IpStack resources. ```hcl diff --git a/docs/reference/config-files/credential/jira.md b/docs/reference/config-files/credential/jira.md index 7cf548b..d8bb4ac 100644 --- a/docs/reference/config-files/credential/jira.md +++ b/docs/reference/config-files/credential/jira.md @@ -5,6 +5,8 @@ sidebar_label: jira # jira +> ***As of Flowpipe 1.0.0, `credential` has been renamed to `connection`. The `jira` credential resource is deprecated and will be removed in a future version of Flowpipe. Use the [jira connection](/docs/reference/config-files/connection/jira) instead.*** + The `jira` credential can be used to access Jira resources. ```hcl diff --git a/docs/reference/config-files/credential/jumpcloud.md b/docs/reference/config-files/credential/jumpcloud.md index f18208e..f19856e 100644 --- a/docs/reference/config-files/credential/jumpcloud.md +++ b/docs/reference/config-files/credential/jumpcloud.md @@ -5,6 +5,9 @@ sidebar_label: jumpcloud # jumpcloud + +> ***As of Flowpipe 1.0.0, `credential` has been renamed to `connection`. The `jumpcloud` credential resource is deprecated and will be removed in a future version of Flowpipe. Use the [jumpcloud connection](/docs/reference/config-files/connection/jumpcloud) instead.*** + The `jumpcloud` credential can be used to access JumpCloud resources. ```hcl diff --git a/docs/reference/config-files/credential/mastodon.md b/docs/reference/config-files/credential/mastodon.md index d4e5739..6e243ef 100644 --- a/docs/reference/config-files/credential/mastodon.md +++ b/docs/reference/config-files/credential/mastodon.md @@ -5,6 +5,8 @@ sidebar_label: mastodon # mastodon +> ***As of Flowpipe 1.0.0, `credential` has been renamed to `connection`. The `mastodon` credential resource is deprecated and will be removed in a future version of Flowpipe. Use the [mastodon connection](/docs/reference/config-files/connection/mastodon) instead.*** + The `mastodon` credential can be used to access Mastodon resources. ```hcl diff --git a/docs/reference/config-files/credential/okta.md b/docs/reference/config-files/credential/okta.md index f2c95f7..6c0244f 100644 --- a/docs/reference/config-files/credential/okta.md +++ b/docs/reference/config-files/credential/okta.md @@ -5,6 +5,8 @@ sidebar_label: okta # okta +> ***As of Flowpipe 1.0.0, `credential` has been renamed to `connection`. The `okta` credential resource is deprecated and will be removed in a future version of Flowpipe. Use the [okta connection](/docs/reference/config-files/connection/okta) instead.*** + The `okta` credential can be used to access Okta resources. ```hcl diff --git a/docs/reference/config-files/credential/openai.md b/docs/reference/config-files/credential/openai.md index 07bef70..0c79d07 100644 --- a/docs/reference/config-files/credential/openai.md +++ b/docs/reference/config-files/credential/openai.md @@ -5,6 +5,8 @@ sidebar_label: openai # openai +> ***As of Flowpipe 1.0.0, `credential` has been renamed to `connection`. The `openai` credential resource is deprecated and will be removed in a future version of Flowpipe. Use the [openai connection](/docs/reference/config-files/connection/openai) instead.*** + The `openai` credential can be used to access OpenAI resources. ```hcl diff --git a/docs/reference/config-files/credential/opsgenie.md b/docs/reference/config-files/credential/opsgenie.md index d623dfb..9289b6d 100644 --- a/docs/reference/config-files/credential/opsgenie.md +++ b/docs/reference/config-files/credential/opsgenie.md @@ -5,6 +5,8 @@ sidebar_label: opsgenie # opsgenie +> ***As of Flowpipe 1.0.0, `credential` has been renamed to `connection`. The `opsgenie` credential resource is deprecated and will be removed in a future version of Flowpipe. Use the [opsgenie connection](/docs/reference/config-files/connection/opsgenie) instead.*** + The `opsgenie` credential can be used to access OpsGenie resources. ```hcl diff --git a/docs/reference/config-files/credential/pagerduty.md b/docs/reference/config-files/credential/pagerduty.md index 3af5d6f..d02308a 100644 --- a/docs/reference/config-files/credential/pagerduty.md +++ b/docs/reference/config-files/credential/pagerduty.md @@ -5,6 +5,8 @@ sidebar_label: pagerduty # pagerduty +> ***As of Flowpipe 1.0.0, `credential` has been renamed to `connection`. The `pagerduty` credential resource is deprecated and will be removed in a future version of Flowpipe. Use the [pagerduty connection](/docs/reference/config-files/connection/pagerduty) instead.*** + The `pagerduty` credential can be used to access PagerDuty resources. ```hcl diff --git a/docs/reference/config-files/credential/pipes.md b/docs/reference/config-files/credential/pipes.md index 1e97272..cea526e 100644 --- a/docs/reference/config-files/credential/pipes.md +++ b/docs/reference/config-files/credential/pipes.md @@ -5,6 +5,8 @@ sidebar_label: pipes # pipes +> ***As of Flowpipe 1.0.0, `credential` has been renamed to `connection`. The `pipes` credential resource is deprecated and will be removed in a future version of Flowpipe. Use the [pipes connection](/docs/reference/config-files/connection/pipes) instead.*** + The `pipes` credential can be used to access [Turbot Pipes](https://pipes.turbot.com/) resources. ```hcl diff --git a/docs/reference/config-files/credential/sendgrid.md b/docs/reference/config-files/credential/sendgrid.md index 754165a..91641b2 100644 --- a/docs/reference/config-files/credential/sendgrid.md +++ b/docs/reference/config-files/credential/sendgrid.md @@ -5,6 +5,8 @@ sidebar_label: sendgrid # sendgrid +> ***As of Flowpipe 1.0.0, `credential` has been renamed to `connection`. The `sendgrid` credential resource is deprecated and will be removed in a future version of Flowpipe. Use the [sendgrid connection](/docs/reference/config-files/connection/sendgrid) instead.*** + The `sendgrid` credential can be used to access SendGrid resources. ```hcl diff --git a/docs/reference/config-files/credential/servicenow.md b/docs/reference/config-files/credential/servicenow.md index 6df82e0..9a4bb68 100644 --- a/docs/reference/config-files/credential/servicenow.md +++ b/docs/reference/config-files/credential/servicenow.md @@ -5,6 +5,8 @@ sidebar_label: servicenow # servicenow +> ***As of Flowpipe 1.0.0, `credential` has been renamed to `connection`. The `servicenow` credential resource is deprecated and will be removed in a future version of Flowpipe. Use the [servicenow connection](/docs/reference/config-files/connection/servicenow) instead.*** + The `servicenow` credential can be used to access ServiceNow resources. ```hcl diff --git a/docs/reference/config-files/credential/slack.md b/docs/reference/config-files/credential/slack.md index 32fbc79..ff39ebf 100644 --- a/docs/reference/config-files/credential/slack.md +++ b/docs/reference/config-files/credential/slack.md @@ -5,6 +5,8 @@ sidebar_label: slack # slack +> ***As of Flowpipe 1.0.0, `credential` has been renamed to `connection`. The `slack` credential resource is deprecated and will be removed in a future version of Flowpipe. Use the [slack connection](/docs/reference/config-files/connection/slack) instead.*** + The `slack` credential can be used to access Slack resources. ```hcl diff --git a/docs/reference/config-files/credential/teams.md b/docs/reference/config-files/credential/teams.md index 2ee4ad0..e9b60a8 100644 --- a/docs/reference/config-files/credential/teams.md +++ b/docs/reference/config-files/credential/teams.md @@ -5,6 +5,8 @@ sidebar_label: teams # teams +> ***As of Flowpipe 1.0.0, `credential` has been renamed to `connection`. The `teams` credential resource is deprecated and will be removed in a future version of Flowpipe. Use the [teams connection](/docs/reference/config-files/connection/teams) instead.*** + The `teams` credential can be used to access Microsoft Teams resources. ```hcl diff --git a/docs/reference/config-files/credential/trello.md b/docs/reference/config-files/credential/trello.md index 8d5fed6..0e79ad3 100644 --- a/docs/reference/config-files/credential/trello.md +++ b/docs/reference/config-files/credential/trello.md @@ -5,6 +5,8 @@ sidebar_label: trello # trello +> ***As of Flowpipe 1.0.0, `credential` has been renamed to `connection`. The `trello` credential resource is deprecated and will be removed in a future version of Flowpipe. Use the [trello connection](/docs/reference/config-files/connection/trello) instead.*** + The `trello` credential can be used to access Trello resources. ```hcl diff --git a/docs/reference/config-files/credential/turbot_guardrails.md b/docs/reference/config-files/credential/turbot_guardrails.md index b42a50c..93820d0 100644 --- a/docs/reference/config-files/credential/turbot_guardrails.md +++ b/docs/reference/config-files/credential/turbot_guardrails.md @@ -5,6 +5,8 @@ sidebar_label: guardrails # guardrails +> ***As of Flowpipe 1.0.0, `credential` has been renamed to `connection`. The `guardrails` credential resource is deprecated and will be removed in a future version of Flowpipe. Use the [guardrails connection](/docs/reference/config-files/connection/guardrails) instead.*** + The `guardrails` credential can be used to access [Turbot Guardrails](https://turbot.com/guardrails) resources. ```hcl diff --git a/docs/reference/config-files/credential/uptimerobot.md b/docs/reference/config-files/credential/uptimerobot.md index 3c3f713..29ebf80 100644 --- a/docs/reference/config-files/credential/uptimerobot.md +++ b/docs/reference/config-files/credential/uptimerobot.md @@ -5,6 +5,8 @@ sidebar_label: uptimerobot # uptimerobot +> ***As of Flowpipe 1.0.0, `credential` has been renamed to `connection`. The `uptimerobot` credential resource is deprecated and will be removed in a future version of Flowpipe. Use the [uptimerobot connection](/docs/reference/config-files/connection/uptimerobot) instead.*** + The `uptimerobot` credential can be used to access UptimeRobot resources. ```hcl diff --git a/docs/reference/config-files/credential/urlscan.md b/docs/reference/config-files/credential/urlscan.md index 29bb4f4..2658af5 100644 --- a/docs/reference/config-files/credential/urlscan.md +++ b/docs/reference/config-files/credential/urlscan.md @@ -5,6 +5,9 @@ sidebar_label: urlscan # urlscan +> ***As of Flowpipe 1.0.0, `credential` has been renamed to `connection`. The `urlscan` credential resource is deprecated and will be removed in a future version of Flowpipe. Use the [urlscan connection](/docs/reference/config-files/connection/urlscan) instead.*** + + The `urlscan` credential can be used to access URLScan resources. ```hcl diff --git a/docs/reference/config-files/credential/vault.md b/docs/reference/config-files/credential/vault.md index 7f94659..c00a3ff 100644 --- a/docs/reference/config-files/credential/vault.md +++ b/docs/reference/config-files/credential/vault.md @@ -5,6 +5,9 @@ sidebar_label: vault # vault +> ***As of Flowpipe 1.0.0, `credential` has been renamed to `connection`. The `vault` credential resource is deprecated and will be removed in a future version of Flowpipe. Use the [vault connection](/docs/reference/config-files/connection/vault) instead.*** + + The `vault` credential can be used to access Vault resources. ```hcl diff --git a/docs/reference/config-files/credential/virustotal.md b/docs/reference/config-files/credential/virustotal.md index 299bfa3..0ed7c9a 100644 --- a/docs/reference/config-files/credential/virustotal.md +++ b/docs/reference/config-files/credential/virustotal.md @@ -5,6 +5,9 @@ sidebar_label: virustotal # virustotal + +> ***As of Flowpipe 1.0.0, `credential` has been renamed to `connection`. The `virustotal` credential resource is deprecated and will be removed in a future version of Flowpipe. Use the [virustotal connection](/docs/reference/config-files/connection/virustotal) instead.*** + The `virustotal` credential can be used to access VirusTotal resources. ```hcl diff --git a/docs/reference/config-files/credential/zendesk.md b/docs/reference/config-files/credential/zendesk.md index 41bd0ad..e70cd71 100644 --- a/docs/reference/config-files/credential/zendesk.md +++ b/docs/reference/config-files/credential/zendesk.md @@ -5,6 +5,8 @@ sidebar_label: zendesk # zendesk +> ***As of Flowpipe 1.0.0, `credential` has been renamed to `connection`. The `zendesk` credential resource is deprecated and will be removed in a future version of Flowpipe. Use the [zendesk connection](/docs/reference/config-files/connection/zendesk) instead.*** + The `zendesk` credential can be used to access Zendesk resources. ```hcl diff --git a/docs/reference/config-files/credential_import/index.md b/docs/reference/config-files/credential_import/index.md index a735887..59e7880 100644 --- a/docs/reference/config-files/credential_import/index.md +++ b/docs/reference/config-files/credential_import/index.md @@ -7,6 +7,9 @@ sidebar_label: credential_import # Credential Import +> ***As of Flowpipe 1.0.0, `credential_import` has been renamed to `connection_import`. The `credential_import` resource is deprecated and will be removed in a future version of Flowpipe. Use [connection_import](/docs/reference/config-files/connection_import) instead.*** + + The `credential_import` resource allows you to bulk import credentials from other systems & formats. `credential_import` is a top-level block defined in config files (`*.fpc`) like `credential` and `workspace`. ```hcl diff --git a/docs/reference/config-files/credential_import/steampipe.md b/docs/reference/config-files/credential_import/steampipe.md index 5367c6a..09ec2a1 100644 --- a/docs/reference/config-files/credential_import/steampipe.md +++ b/docs/reference/config-files/credential_import/steampipe.md @@ -6,6 +6,10 @@ sidebar_label: steampipe # steampipe + +> ***As of Flowpipe 1.0.0, `credential_import` has been renamed to `connection_import`. The `credential_import` resource is deprecated and will be removed in a future version of Flowpipe. Use [connection_import](/docs/reference/config-files/connection_import) instead.*** + + The `steampipe` credential import resource allows you to bulk import credentials from Steampipe connections. This allows you to import the plugin credentials from your Steampipe installation into Flowpipe. ```hcl diff --git a/docs/reference/config-files/index.md b/docs/reference/config-files/index.md index 51b45b0..7e27329 100644 --- a/docs/reference/config-files/index.md +++ b/docs/reference/config-files/index.md @@ -5,6 +5,6 @@ sidebar_label: Configuration Files # Configuration Files -Configuration resources like [workspaces](/docs/reference/config-files/workspace) and [credentials](/docs/reference/config-files/credential) are defined using HCL in one or more Flowpipe config files. +Configuration resources like [workspaces](/docs/reference/config-files/workspace) and [connections](/docs/reference/config-files/connection) are defined using HCL in one or more Flowpipe config files. -Flowpipe will load ALL configuration files (`*.fpc`) from every directory in the [configuration search path](/docs/reference/env-vars/flowpipe_config_path), with decreasing precedence. By default, the configuration search path includes the current directory (or `--mod-location` if specified) followed by the `config` directory in the [FLOWPIPE_INSTALL_DIR](/docs/reference/env-vars/flowpipe_install_dir): `.:$FLOWPIPE_INSTALL_DIR/config`. This allows you to manage your workspaces and credentials centrally in the `~/.flowpipe/config` directory, but override them in the working directory / mod location if desired. \ No newline at end of file +Flowpipe will load ALL configuration files (`*.fpc`) from every directory in the [configuration search path](/docs/reference/env-vars/flowpipe_config_path), with decreasing precedence. By default, the configuration search path includes the current directory (or `--mod-location` if specified) followed by the `config` directory in the [FLOWPIPE_INSTALL_DIR](/docs/reference/env-vars/flowpipe_install_dir): `.:$FLOWPIPE_INSTALL_DIR/config`. This allows you to manage your workspaces and connections centrally in the `~/.flowpipe/config` directory, but override them in the working directory / mod location if desired. \ No newline at end of file diff --git a/docs/reference/env-vars/flowpipe_config_path.md b/docs/reference/env-vars/flowpipe_config_path.md index 2e30ecf..27c739a 100644 --- a/docs/reference/env-vars/flowpipe_config_path.md +++ b/docs/reference/env-vars/flowpipe_config_path.md @@ -7,7 +7,7 @@ sidebar_label: FLOWPIPE_CONFIG_PATH Sets the search path for [configuration files](/docs/reference/config-files). `FLOWPIPE_CONFIG_PATH` accepts a colon-separated list of directories. - All configuration files (`*.fpc`) will be loaded from each path, with decreasing precedence. The default is the mod location, followed by the `config` directory in the [FLOWPIPE_INSTALL_DIR](/docs/reference/env-vars/flowpipe_install_dir): `.:$FLOWPIPE_INSTALL_DIR/config`. This allows you to manage your [workspaces](/docs/reference/config-files/workspace) and [credentials](/docs/reference/config-files/credential) centrally in the `~/.flowpipe/config` directory, but override them in the working directory/mod-location if desired. + All configuration files (`*.fpc`) will be loaded from each path, with decreasing precedence. The default is the mod location, followed by the `config` directory in the [FLOWPIPE_INSTALL_DIR](/docs/reference/env-vars/flowpipe_install_dir): `.:$FLOWPIPE_INSTALL_DIR/config`. This allows you to manage your [workspaces](/docs/reference/config-files/workspace) and [connections](/docs/reference/config-files/connection) centrally in the `~/.flowpipe/config` directory, but override them in the working directory/mod-location if desired. ## Usage diff --git a/docs/run/credentials.md b/docs/run/connections.md similarity index 50% rename from docs/run/credentials.md rename to docs/run/connections.md index 76b0aac..f97f83a 100644 --- a/docs/run/credentials.md +++ b/docs/run/connections.md @@ -1,24 +1,24 @@ --- -title: Managing Credentials -sidebar_label: Credentials +title: Managing Connections +sidebar_label: Connections --- -# Managing Credentials +# Managing Connections -Flowpipe **Credentials** provide a mechanism for defining and sharing secrets in your Flowpipe environment. +Flowpipe **Connections** provide a mechanism for defining and sharing secrets in your Flowpipe environment. -## Defining / Declaring Credentials -`credential` is a top-level resource in a config file (.fpc). Credentials are defined in configuration files (`.fpc`), NOT mod files (`.fp`). Like `workspace`, a `credential` can be defined in any .fpc file in the config directory (`~/.flowpipe/config/*.fpc`) or in the root of the `mod-location` (usually `$PWD/*.fpc`). +## Defining / Declaring Connections +`connection` is a top-level resource in a config file (.fpc). Connections are defined in configuration files (`.fpc`), NOT mod files (`.fp`). Like `workspace`, a `connection` can be defined in any .fpc file in the config directory (`~/.flowpipe/config/*.fpc`) or in the root of the `mod-location` (usually `$PWD/*.fpc`). -While it is *possible* to add credentials in `.fpc` in a mod repo, you should usually avoid doing so: +While it is *possible* to add connections in `.fpc` in a mod repo, you should usually avoid doing so: - They often contain secrets - - Different users will have different secrets - you should not share credentials + - Different users will have different secrets - you should not share connections -Credentials are defined in a `credential` block. They have a type label and a name. +Connections are defined in a `connection` block. They have a type label and a name. ```hcl -credential "aws" "aws_01" { +connection "aws" "aws_01" { access_key = "ASIAQGDFAKEKGUI5MCEU" secret_key = "QhLNLGM5MBkXiZm2k2tfake+TduEaCkCdpCSLl6U" } @@ -27,46 +27,38 @@ credential "aws" "aws_01" { There is a type for each service: `aws`, `gcp`, `azure`, `github`, `slack`, etc... The arguments and attributes vary by type. ```hcl -credential "gcp" "gcp_01" { +connection "gcp" "gcp_01" { credentials = "~/.config/gcloud/application_default_credentials.json" } -credential "slack" "slack" { +connection "slack" "slack" { token = "xoxp-asd7f8fd0fake9890" } ``` -You can use the `env()` function to set credentials to the value of an environment variable: +You can use the `env()` function to set connections to the value of an environment variable: ```hcl -credential "slack" "default" { +connection "slack" "default" { token = env("SLACK_TOKEN") } ``` -### Default credentials -Flowpipe also creates a single **implicit default** credential for each credential type. The credential is named `default`, eg `credential.aws.default`, `credential.github.default`, etc. The intent of the default credential is that Flowpipe can "just work" with your existing setup, and is similar to the default connection that Steampipe creates for each plugin. For example, the AWS default credential will use the standard AWS SDK credential resolution mechanism to create a Flowpipe credential that will use the same credential that the `aws` CLI would use. +### Default connections +Flowpipe also creates a single **implicit default** connection for each connection type. The connection is named `default`, eg `connection.aws.default`, `connection.github.default`, etc. The intent of the default connection is that Flowpipe can "just work" with your existing setup, and is similar to the default connection that Steampipe creates for each plugin. For example, the AWS default connection will use the standard AWS SDK credential resolution mechanism to create a Flowpipe connection that will use the same credential that the `aws` CLI would use. -You can override the default by simply creating a credential for that type that is named `default`: +You can override the default by simply creating a connection for that type that is named `default`: ```hcl -credential "slack" "default" { +connection "slack" "default" { token = "xoxp-mydefaulttoken" } ``` - - ---- -## Using / Referencing Credentials +## Using / Referencing Connections -Although credentials are defined in config files (not mod files), Flowpipe makes all the credentials available to mods using the `credential` variable. This special variable is a map of all credential types by type and name, so you can reference it with standard HCL syntax: `credential.{type}.{name}` eg `credential.aws.aws01` or `credential[{type}][{name}]` eg `credential["aws"["aws01"]`. +Although connections are defined in config files (not mod files), Flowpipe makes all the connections available to mods using the `connection` variable. This special variable is a map of all connection types by type and name, so you can reference it with standard HCL syntax: `connection.{type}.{name}` eg `connection.aws.aws01` or `connection[{type}][{name}]` eg `connection["aws"["aws01"]`. You can reference them directly in a mod: ```hcl @@ -74,7 +66,7 @@ pipeline "ex1" { step "container" "aws" { image = "public.ecr.aws/aws-cli/aws-cli" cmd = [ "s3", "ls" ] - env = credential.aws.aws01.env + env = connection.aws.aws01.env } } ``` @@ -84,17 +76,17 @@ Since they are a map, you can even loop through them: ```hcl pipeline "ex1" { step "container" "aws" { - for_each = credential.aws + for_each = connection.aws image = "public.ecr.aws/aws-cli/aws-cli" cmd = [ "s3", "ls" ] - env = credential.aws[each.value].env + env = connection.aws[each.value].env } } ``` Or reference them dynamically: ```hcl @@ -123,20 +115,27 @@ pipeline "ex1" { "--instance-ids", each.value["instance_id" "--region", each.value["region"]] ] - env = credential.aws[each.value.connection_name].env + env = connection.aws[each.value.connection_name].env } } ``` -### Passing credentials -Generally, referencing credentials literally by name in a mod is bad practice, especially in library mods because the details are instance-specific - You are making assumptions about what credentials have been set up, including the names of those credentials. Instead, you should generally pass in the credential name as a pipeline parameter. By convention, you should set the value of the credential name to `default` so that it will use the [default credentials](#default-credentials) if no credential is passed: +### Passing connections +Generally, referencing connections literally by name in a mod is bad practice, especially in library mods because the details are instance-specific - You are making assumptions about what connections have been set up, including the names of those connections. Instead, you should generally pass in the connection as a pipeline parameter. + +Flowpipe supports `connection` as a `type` for `param` and `variable`, in addition to the builtin `string`, `number`, and `bool` types. You may define the type as `connection`, in which case the variable or param accepts any connection, or `connection.{type}` (e.g `connection.aws`) to limit the types of connections that may be passed. + +By convention, you should set the default value of the variable to the [default connection](#default-connections) so that your mod will work even if the user does not pass the argument or variable. + + + ```hcl pipeline "ex01" { - param "cred" { - type = string - default = "default" + param "conn" { + type = connection.slack + default = connection.slack.default } step "http" "send_msg" { @@ -144,7 +143,7 @@ pipeline "ex01" { request_headers = { Content-Type = "application/json; charset=utf-8" - Authorization = "Bearer ${credential.slack[param.cred].token}" + Authorization = "Bearer ${param.conn.token}" } } @@ -155,59 +154,59 @@ pipeline "ex01" { } ``` -You can run the pipeline without argument to use your slack default credentials: +You can run the pipeline without argument to use your slack default connections: ```bash flowpipe pipeline run ex01 ``` -If you want to use a different credential instead, you can pass it as an argument: +If you want to use a different connection instead, you can pass it as an argument: ```bash -flowpipe pipeline run ex01 --arg cred=my_other_slack_credential +flowpipe pipeline run ex01 --arg conn=connection.slack.my_connection ``` -### Dynamic Credentials +### Dynamic Connections -Some credentials support dynamic attributes that contain temporary credentials. Cloud services like AWS and GCP provide many mechanisms for defining credentials (static keys, SSO, assumed roles, profiles,etc) but in all cases can be exchanged for a "standard" format such as an access token or AWS key pair. +Some connections support dynamic attributes that contain temporary credentials. Cloud services like AWS and GCP provide many mechanisms for defining credentials (static keys, SSO, assumed roles, profiles,etc) but in all cases can be exchanged for a "standard" format such as an access token or AWS key pair. -For example, you can specify AWS credentials in many formats: +For example, you can specify AWS connections in many formats: ```hcl -credential "aws" "aws_static" { +connection "aws" "aws_static" { access_key = "ASIAQGDFAKEKGUI5MCEU" secret_key = "QhLNLGM5MBkXiZm2k2tfake+TduEaCkCdpCSLl6U" } -credential "aws" "aws_profile" { +connection "aws" "aws_profile" { profile = "awx_prod_01" } ``` -For *all* of these cases you can resolve to an access key / secret key / session token, which are available as attributes. Additionally, the `aws` credential provides an `env` attribute which is a map of the [credential-related environment variables](https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/guide_credentials_environment.html) (`AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_SESSION_TOKEN`) +For *all* of these cases you can resolve to an access key / secret key / session token, which are available as attributes. Additionally, the `aws` connection provides an `env` attribute which is a map of the [credential-related environment variables](https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/guide_credentials_environment.html) (`AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_SESSION_TOKEN`) -When writing a library mod, you should use these dynamic attributes where possible, as it simplifies the code and minimizes the number of credential-related parameters: +When writing a library mod, you should use these dynamic attributes where possible, as it simplifies the code and minimizes the number of connection-related parameters: ```hcl pipeline "ex1" { - param "cred" { - type = string - default = "default" + param "conn" { + type = connection.aws + default = connection.aws.default } step "container" "aws" { image = "public.ecr.aws/aws-cli/aws-cli" cmd = [ "s3", "ls" ] - env = credential.aws[param.cred].env + env = param.conn.env } } ``` -When using dynamic credential attributes, the credentials are resolved as late as possible. When the *step instance* runs that uses the credential, it is fetched (from the cache if not expired) or generated. This is important because the dynamic credentials are usually temporary and will expire and become invalid. You can tell Flowpipe how long to cache these temporary credentials with the `ttl` argument. This specifies the number of seconds to cache the credentials. Not all credentials support (or require) `ttl`, and for those that do, the default value varies by type. Note that the cache is in-memory only, and does not persist when Flowpipe stops. +When using dynamic connection attributes, the credentials are resolved as late as possible. When the *step instance* runs that uses the connection, it is fetched (from the cache if not expired) or generated. This is important because the dynamic credentials are usually temporary and will expire and become invalid. You can tell Flowpipe how long to cache these temporary connections with the `ttl` argument. This specifies the number of seconds to cache the connection. Not all connections support (or require) `ttl`, and for those that do, the default value varies by type. Note that the cache is in-memory only, and does not persist when Flowpipe stops. ```hcl -credential "gcp" " my_creds" { +connection "gcp" " my_creds" { credentials = "~/.config/gcloud/application_default_credentials.json" ttl = 900 # 15 minutes } diff --git a/docs/run/index.md b/docs/run/index.md index ab167b3..0c60be1 100644 --- a/docs/run/index.md +++ b/docs/run/index.md @@ -13,7 +13,7 @@ Flowpipe always runs in the context of a [mod](/docs/build), which is a collecti Flowpipe loads the mod from the current directory by default, but you can pass the [--mod-location](/docs/reference/cli) flag or set the [FLOWPIPE_MOD_LOCATION](/docs/reference/env-vars/flowpipe_mod_location) to set it to a different path. The event store is also written to this mod location, in the `.flowpipe/store/` subdirectory. ## Configuration Files -Flowpipe will load [configuration files](/docs/reference/config-files) (`*.fpc`) according to the configuration search path. You can change this path with the `--config-path` argument or the [FLOWPIPE_CONFIG_PATH](/docs/reference/env-vars/flowpipe_config_path) environment variable, but it defaults to `.:$FLOWPIPE_INSTALL_DIR/config` (`.:~/.flowpipe/config`). This allows you to manage your [workspaces](/docs/run/workspaces) and [credentials](/docs/run/credentials) centrally in the `~/.flowpipe/config` directory, but override them in the working directory / mod location if desired. +Flowpipe will load [configuration files](/docs/reference/config-files) (`*.fpc`) according to the configuration search path. You can change this path with the `--config-path` argument or the [FLOWPIPE_CONFIG_PATH](/docs/reference/env-vars/flowpipe_config_path) environment variable, but it defaults to `.:$FLOWPIPE_INSTALL_DIR/config` (`.:~/.flowpipe/config`). This allows you to manage your [workspaces](/docs/run/workspaces) and [connections](/docs/run/connections) centrally in the `~/.flowpipe/config` directory, but override them in the working directory / mod location if desired. ## Operating Modes diff --git a/docs/sidebar.json b/docs/sidebar.json index ee343f5..193100d 100644 --- a/docs/sidebar.json +++ b/docs/sidebar.json @@ -15,7 +15,7 @@ "items": [ "run/pipelines", "run/server", - "run/credentials", + "run/connections", "run/workspaces" ] }, @@ -141,6 +141,51 @@ "label": "Configuration Files", "link": "reference/config-files", "items": [ + { + "type": "category", + "id": "connection", + "link": "reference/config-files/connection", + "items": [ + "reference/config-files/connection/abuseipdb", + "reference/config-files/connection/alicloud", + "reference/config-files/connection/aws", + "reference/config-files/connection/azure", + "reference/config-files/connection/bitbucket", + "reference/config-files/connection/clickup", + "reference/config-files/connection/datadog", + "reference/config-files/connection/discord", + "reference/config-files/connection/duckdb", + "reference/config-files/connection/freshdesk", + "reference/config-files/connection/gcp", + "reference/config-files/connection/github", + "reference/config-files/connection/gitlab", + "reference/config-files/connection/ip2locationio", + "reference/config-files/connection/ipstack", + "reference/config-files/connection/jira", + "reference/config-files/connection/jumpcloud", + "reference/config-files/connection/mastodon", + "reference/config-files/connection/mysql", + "reference/config-files/connection/okta", + "reference/config-files/connection/openai", + "reference/config-files/connection/opsgenie", + "reference/config-files/connection/pagerduty", + "reference/config-files/connection/pipes", + "reference/config-files/connection/postgres", + "reference/config-files/connection/sendgrid", + "reference/config-files/connection/servicenow", + "reference/config-files/connection/slack", + "reference/config-files/connection/sqlite", + "reference/config-files/connection/steampipe", + "reference/config-files/connection/teams", + "reference/config-files/connection/trello", + "reference/config-files/connection/turbot_guardrails", + "reference/config-files/connection/uptimerobot", + "reference/config-files/connection/urlscan", + "reference/config-files/connection/vault", + "reference/config-files/connection/virustotal", + "reference/config-files/connection/zendesk" + ] + }, { "type": "category", "id": "credential", @@ -181,6 +226,14 @@ "reference/config-files/credential/zendesk" ] }, + { + "type": "category", + "id": "connection_import", + "link": "reference/config-files/connection_import", + "items": [ + "reference/config-files/connection_import/steampipe" + ] + }, { "type": "category", "id": "credential_import",