mirror of
https://github.com/LukeHagar/sailpoint-cli.git
synced 2025-12-06 04:21:15 +00:00
CLI doc edits
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
==Long==
|
||||
# Sanitize
|
||||
|
||||
Sanitize a har file of sensitive data
|
||||
Specifically removes access tokens and origin urls similar to the examples below:
|
||||
Run this command to sanitize a HAR file of sensitive data.
|
||||
Sanitizing a HAR file means specifically removing access tokens and origin URLS from the file to ensure that such sensitive information is secure.
|
||||
|
||||
Access Token
|
||||
```
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
# Search
|
||||
|
||||
The `search` command makes it easy to search in identitynow using the SailPoint CLI.
|
||||
In IdentityNow, you can search all the sources connected to your tenant and return virtually any information you have access to. To learn more about search in IdentityNow, refer to [Search](https://documentation.sailpoint.com/saas/help/search/index.html).
|
||||
|
||||
The `search` command makes it easy to search in IdentityNow with the SailPoint CLI. Read this guide to learn how to use the `query` and `template` commands to search IdentityNow with the CLI.
|
||||
|
||||
- [Search](#search)
|
||||
- [Query](#query)
|
||||
- [Command](#command)
|
||||
- [Flags](#flags)
|
||||
- [Indicies](#indicies)
|
||||
- [Indices](#indices)
|
||||
- [Sort](#sort)
|
||||
- [Output Types](#output-types)
|
||||
- [Folder Path](#folder-path)
|
||||
@@ -18,78 +20,136 @@ The `search` command makes it easy to search in identitynow using the SailPoint
|
||||
|
||||
## Query
|
||||
|
||||
### Command
|
||||
Search queries in IdentityNow are flexible - they can be very broad or very narrow, and you can further narrow your results by using IdentityNow's specific syntax to structure your queries. To learn about structuring search queries, refer to [Building a Search Query](https://documentation.sailpoint.com/saas/help/search/building-query.html).
|
||||
|
||||
Run the following command to search with manually provided search attributes.
|
||||
The `query` command allows you to search IdentityNow for a query you specify.
|
||||
|
||||
To use the `query` command to search IdentityNow, you must understand how to format your search queries.
|
||||
|
||||
The basic format of a query is "field:term", so an example `query` command would like this:
|
||||
|
||||
```shell
|
||||
sail search query <search query string> -indicies <indicie to search on>
|
||||
sail search query "name:a*" --indices identities
|
||||
```
|
||||
|
||||
The CLI will use the [V3 Search endpoint](https://developer.sailpoint.com/idn/api/v3/search-post) to search for all identities starting with names starting with the letter "a".
|
||||
The CLI will then generate a JSON file containing the search results. This JSON file will be located in a folder titled "search_results", within the current working directory, unless a folder path is specified.
|
||||
|
||||
### Command
|
||||
|
||||
This example can help you understand the `query` command structure:
|
||||
|
||||
```shell
|
||||
sail search query <search query string> --indices <index to search>
|
||||
```
|
||||
|
||||
You must start your search query with `sail search query`, and you must specify a query string to search for and a set of indices to search.
|
||||
|
||||
### Flags
|
||||
|
||||
#### Indicies
|
||||
You can append a number of flags to the `query` command to refine it:
|
||||
- The first flag, `indices`, is required. It specifies the indices to run the search operation on.
|
||||
- The second possible flag, `sort`, allows you to specify the sort strings to use for the search query, as well as the sorting arrangement for the results.
|
||||
- The third possible flag, `outputTypes`, allows you to specify the output data format as either `json` or `csv`.
|
||||
- The fourth possible flag, `folderPath`, allows you to specify the folder path where you want to save the search query result files.
|
||||
|
||||
#### Indices
|
||||
|
||||
Specifies the indicies to run the search operation on
|
||||
Use the `indices` flag to specify the indices you want to search. The `indices` flag is required to use the `query` command.
|
||||
|
||||
Here is an example of a `query` command with specified `indices`:
|
||||
|
||||
```shell
|
||||
sail search query "name:a*" -indicies identities
|
||||
sail search query "name:a*" --indices identities
|
||||
```
|
||||
|
||||
You can search multiple indicies by added additional flags
|
||||
You can search multiple indices.
|
||||
|
||||
Here is an example of a `query` command with multiple specified `indices`.
|
||||
|
||||
```shell
|
||||
sail search query "name:a*" -indicies identities -indicies accessprofiles
|
||||
sail search query "name:a*" --indices identities --indices accessprofiles
|
||||
```
|
||||
|
||||
#### Sort
|
||||
|
||||
Specified the sort strings used for the search query
|
||||
Use the `sort` flag to specify the sort strings you want to use to determine the sorting arrangement of your search query results.
|
||||
When you specify a string to sort by, like `name`, the CLI sorts results by `name` in ascending order. If you add a "-" before the sort string, like `-name`, the CLI will sort the results in descending order instead.
|
||||
|
||||
Here is an example of a `query` command that sorts the results in descending order based on the identities' `created` dates:
|
||||
|
||||
```shell
|
||||
sail search query "name:a*" -indicies identities -sort name -sort "-created"
|
||||
sail search query "name:a*" --indices identities --sort "-created"
|
||||
```
|
||||
|
||||
You can specify multiple sort strings for your search queries.
|
||||
|
||||
Here is an example of a `query` command that sorts the results in ascending order based on `name`, as well as in descending order based on the identities' `created` dates:
|
||||
|
||||
```shell
|
||||
sail search query "name:a*" --indices identities --sort name --sort "-created"
|
||||
```
|
||||
|
||||
#### Output Types
|
||||
|
||||
Specify the output data format currently `json` and `csv` are the only supported types
|
||||
Use the `outputTypes` flag to specify the output data format for the search query results. Currently, the only supported output types are `json` and `csv`.
|
||||
|
||||
Here is an example of a `query` command that specifies the `json` output type:
|
||||
|
||||
```shell
|
||||
sail search query "name:a*" -indicies identities -outputTypes json
|
||||
sail search query "name:a*" --indices identities --outputTypes json
|
||||
```
|
||||
|
||||
#### Folder Path
|
||||
|
||||
Specify the folder path to save the search results in
|
||||
Use the `folderPath` flag to specify the folder path to save the search results in.
|
||||
If you don't specify a `folderPath`, the results will save to a folder called "search_results", located within your current working directory.
|
||||
|
||||
Here is an example of a `query` command that specifies a `folderPath`:
|
||||
|
||||
```shell
|
||||
sail search query "name:a*" -indicies identities -folderPath ./local/folder/path
|
||||
sail search query "name:a*" --indices identities --folderPath ./local/folder/path
|
||||
```
|
||||
|
||||
## Template
|
||||
|
||||
For more detailed search queries, you can provide a predefined template instead of constructing the whole query every time. This allows you to run very detailed search queries quickly and easily.
|
||||
|
||||
The `template` command allows you to use predefined templates to search IdentityNow.
|
||||
|
||||
### Command
|
||||
|
||||
Run the following command to search with a predefined template.
|
||||
This example shows the essential `template` command structure:
|
||||
|
||||
```shell
|
||||
sail search template all-provisioning-events-90-days
|
||||
```
|
||||
|
||||
The specified template file will give the CLI all the information it needs to perform its search in IdentityNow.
|
||||
|
||||
### Flags
|
||||
|
||||
You can append two flags to the `template` command to refine it:
|
||||
- The first possible flag, `outputTypes`, allows you to specify the output data format as either `json` or `csv`.
|
||||
- The second possible flag, `folderPath`, allows you to specify the folder path where you want to save the search query result files.
|
||||
|
||||
#### Output Types
|
||||
|
||||
Specify the output data format currently `json` and `csv` are the only supported types
|
||||
Use the `outputTypes` flag to specify the output data format for the search template query results. Currently, the only supported output types are `json` and `csv`.
|
||||
|
||||
Here is an example of a `template` command that specifies the `json` output type:
|
||||
|
||||
```shell
|
||||
sail search query "name:a*" -indicies identities -outputTypes json
|
||||
sail search template all-provisioning-events-90-days --outputTypes json
|
||||
```
|
||||
|
||||
#### Folder Path
|
||||
|
||||
Specify the folder path to save the search results in
|
||||
Use the `folderPath` flag to specify the folder path to save the search results in.
|
||||
If you don't specify a `folderPath`, the results will save to a folder called "search_results", located within your current working directory.
|
||||
|
||||
Here is an example of a `template` command that specifies a `folderPath`:
|
||||
|
||||
```shell
|
||||
sail search query "name:a*" -indicies identities -folderPath ./local/folder/path
|
||||
sail search template all-provisioning-events-90-days --folderPath ./local/folder/path
|
||||
```
|
||||
|
||||
@@ -15,8 +15,8 @@ func newQueryCmd() *cobra.Command {
|
||||
var folderPath string
|
||||
cmd := &cobra.Command{
|
||||
Use: "query",
|
||||
Short: "Manually Search using a specific Query and Indicies",
|
||||
Long: "\nRun a search query in IdentityNow using a specific Query and Indicies\n\n",
|
||||
Short: "Manually search using a specific query and indices",
|
||||
Long: "\nRun a search query in IdentityNow, using a specific query and indicies\n\n",
|
||||
Example: "sail search query \"(type:provisioning AND created:[now-90d TO now])\" --indices events",
|
||||
Aliases: []string{"que"},
|
||||
Args: cobra.ExactArgs(1),
|
||||
@@ -57,8 +57,8 @@ func newQueryCmd() *cobra.Command {
|
||||
}
|
||||
|
||||
cmd.Flags().StringVarP(&folderPath, "folderPath", "f", "search_results", "Folder path to save the search results to. If the directory doesn't exist, then it will be created. (defaults to the current working directory)")
|
||||
cmd.Flags().StringArrayVar(&indices, "indices", []string{}, "indices to perform the search query on (accessprofiles, accountactivities, entitlements, events, identities, roles)")
|
||||
cmd.Flags().StringArrayVar(&sort, "sort", []string{}, "the sort value for the api call (displayName, +id...)")
|
||||
cmd.Flags().StringArrayVar(&indices, "indices", []string{}, "Indices to perform the search query on (accessprofiles, accountactivities, entitlements, events, identities, roles)")
|
||||
cmd.Flags().StringArrayVar(&sort, "sort", []string{}, "The sort value for the api call (displayName, +id...)")
|
||||
cmd.MarkFlagRequired("indices")
|
||||
|
||||
return cmd
|
||||
|
||||
@@ -8,8 +8,8 @@ import (
|
||||
func NewSearchCommand() *cobra.Command {
|
||||
cmd := &cobra.Command{
|
||||
Use: "search",
|
||||
Short: "Perform Search operations in IdentityNow with a specific query or a template",
|
||||
Long: "\nPerform Search operations in IdentityNow with a specific query or a template\n\n",
|
||||
Short: "Perform search operations in IdentityNow, using a specific query or a template",
|
||||
Long: "\nPerform search operations in IdentityNow, using a specific query or a template\n\n",
|
||||
Example: "sail search",
|
||||
Aliases: []string{"se"},
|
||||
Args: cobra.MaximumNArgs(1),
|
||||
|
||||
@@ -20,8 +20,8 @@ func newTemplateCmd() *cobra.Command {
|
||||
var template string
|
||||
cmd := &cobra.Command{
|
||||
Use: "template",
|
||||
Short: "Perform Search operations in IdentityNow using a predefined search template",
|
||||
Long: "\nPerform Search operations in IdentityNow using a predefined search template\n\n",
|
||||
Short: "Perform search operations in IdentityNow, using a predefined search template",
|
||||
Long: "\nPerform search operations in IdentityNow, using a predefined search template\n\n",
|
||||
Example: "sail search template",
|
||||
Aliases: []string{"temp"},
|
||||
Args: cobra.MaximumNArgs(1),
|
||||
|
||||
@@ -12,7 +12,7 @@ import (
|
||||
func PromptAuth() (string, error) {
|
||||
items := []tui.Choice{
|
||||
{Title: "PAT", Description: "Person Access Token - Single User PAT Configuration"},
|
||||
{Title: "OAuth", Description: "OAuth2.0 Authentication - Sign in via the IdentityNow Web Portal"},
|
||||
{Title: "OAuth", Description: "OAuth2.0 Authentication - Sign in via the IdentityNow web portal"},
|
||||
}
|
||||
|
||||
choice, err := tui.PromptList(items, "Choose an authentication method to configure")
|
||||
|
||||
@@ -11,8 +11,8 @@ import (
|
||||
func newDebugCommand() *cobra.Command {
|
||||
cmd := &cobra.Command{
|
||||
Use: "debug",
|
||||
Short: "Enable or Disable Debug Mode for the CLI",
|
||||
Long: "\nEnable or Disable Debug Mode for the CLI, Primarily used for troubleshooting.\n\n",
|
||||
Short: "Enable or disable Debug Mode for the CLI",
|
||||
Long: "\nEnable or disable Debug Mode for the CLI. Primarily used for troubleshooting.\n\n",
|
||||
Example: "sail set debug disable | sail set debug enable | sail set debug true | sail set debug false",
|
||||
Args: cobra.ExactArgs(1),
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
@@ -20,12 +20,12 @@ func newDebugCommand() *cobra.Command {
|
||||
switch strings.ToLower(args[0]) {
|
||||
case "enable", "true":
|
||||
viper.Set("debug", true)
|
||||
log.Info("Debug Enabled")
|
||||
log.Info("Debug enabled")
|
||||
case "disable", "false":
|
||||
viper.Set("debug", false)
|
||||
log.Info("Debug Disabled")
|
||||
log.Info("Debug disabled")
|
||||
default:
|
||||
log.Error("Invalid Selection")
|
||||
log.Error("Invalid selection")
|
||||
}
|
||||
|
||||
return nil
|
||||
|
||||
@@ -9,8 +9,8 @@ import (
|
||||
func newExportTemplateCommand() *cobra.Command {
|
||||
cmd := &cobra.Command{
|
||||
Use: "exportTemplates",
|
||||
Short: "Set the custom SPConfig Export templates file path",
|
||||
Long: "\nSet the custom SPConfig Export templates file path\n\n",
|
||||
Short: "Set the custom SPConfig export templates file path",
|
||||
Long: "\nSet the custom SPConfig export templates file path\n\n",
|
||||
Example: "sail set export full/path/to/export/templates.json",
|
||||
Aliases: []string{"export"},
|
||||
Args: cobra.ExactArgs(1),
|
||||
@@ -18,7 +18,7 @@ func newExportTemplateCommand() *cobra.Command {
|
||||
|
||||
filePath := args[0]
|
||||
if filePath == "" {
|
||||
log.Error("File Path Cannot Be Blank")
|
||||
log.Error("File path cannot be blank")
|
||||
}
|
||||
|
||||
config.SetCustomExportTemplatePath(filePath)
|
||||
|
||||
@@ -13,8 +13,8 @@ func newPATCommand(term terminal.Terminal) *cobra.Command {
|
||||
var err error
|
||||
cmd := &cobra.Command{
|
||||
Use: "pat",
|
||||
Short: "Configure PAT Authentication for the currently active environment",
|
||||
Long: "\nConfigure PAT Authentication for the CLI\n\nPrerequisites:\n\nCreate a Client ID and Client Secret\nhttps://developer.sailpoint.com/idn/api/authentication#personal-access-tokens",
|
||||
Short: "Configure PAT authentication for the currently active environment",
|
||||
Long: "\nConfigure PAT authentication for the CLI\n\nPrerequisites:\n\nCreate a client ID and client secret\nhttps://developer.sailpoint.com/idn/api/authentication#personal-access-tokens",
|
||||
Args: cobra.NoArgs,
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
|
||||
|
||||
@@ -9,8 +9,8 @@ import (
|
||||
func newSearchTemplateCommand() *cobra.Command {
|
||||
cmd := &cobra.Command{
|
||||
Use: "searchTemplates",
|
||||
Short: "Set the custom IdentityNow Search templates file path",
|
||||
Long: "\nSet the custom IdentityNow Search templates file path\n\n",
|
||||
Short: "Set the custom IdentityNow search templates file path",
|
||||
Long: "\nSet the custom IdentityNow search templates file path\n\n",
|
||||
Example: "sail set search /path/to/search/templates.json",
|
||||
Aliases: []string{"search"},
|
||||
Args: cobra.ExactArgs(1),
|
||||
@@ -18,7 +18,7 @@ func newSearchTemplateCommand() *cobra.Command {
|
||||
|
||||
filePath := args[0]
|
||||
if filePath == "" {
|
||||
log.Error("File Path Cannot Be Blank")
|
||||
log.Error("File path cannot be blank")
|
||||
}
|
||||
|
||||
config.SetCustomSearchTemplatePath(filePath)
|
||||
|
||||
@@ -53,9 +53,9 @@ func newDownloadCommand() *cobra.Command {
|
||||
},
|
||||
}
|
||||
|
||||
cmd.Flags().StringArrayVarP(&importIDs, "import", "", []string{}, "specify the IDs of the import jobs to download results for")
|
||||
cmd.Flags().StringArrayVarP(&exportIDs, "export", "", []string{}, "specify the IDs of the export jobs to download results for")
|
||||
cmd.Flags().StringVarP(&folderPath, "folderPath", "f", "spconfig-exports", "folder path to save the search results in. If the directory doesn't exist, then it will be automatically created. (default is the current working directory)")
|
||||
cmd.Flags().StringArrayVarP(&importIDs, "import", "", []string{}, "Specify the IDs of the import jobs to download results for")
|
||||
cmd.Flags().StringArrayVarP(&exportIDs, "export", "", []string{}, "Specify the IDs of the export jobs to download results for")
|
||||
cmd.Flags().StringVarP(&folderPath, "folderPath", "f", "spconfig-exports", "Folder path to save the search results in. If the directory doesn't exist, then it will be automatically created. (default is the current working directory)")
|
||||
|
||||
return cmd
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
==Long==
|
||||
# Download
|
||||
|
||||
Download the results of Import or Export jobs from IdentityNow
|
||||
Download the results of import or export jobs from IdentityNow.
|
||||
|
||||
====
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ func newExportCommand() *cobra.Command {
|
||||
|
||||
cmd := &cobra.Command{
|
||||
Use: "export",
|
||||
Short: "Start an Export job in IdentityNow",
|
||||
Short: "Start an export job in IdentityNow",
|
||||
Long: help.Long,
|
||||
Example: help.Example,
|
||||
Aliases: []string{"exp"},
|
||||
@@ -70,12 +70,12 @@ func newExportCommand() *cobra.Command {
|
||||
},
|
||||
}
|
||||
|
||||
cmd.Flags().StringVarP(&folderPath, "folderPath", "f", "spconfig-exports", "folder path to save the search results in. If the directory doesn't exist, then it will be automatically created. (default is the current working directory)")
|
||||
cmd.Flags().StringVarP(&description, "description", "", "", "optional description for the export job")
|
||||
cmd.Flags().StringArrayVarP(&includeTypes, "include", "i", []string{}, "types to include in export job")
|
||||
cmd.Flags().StringArrayVarP(&excludeTypes, "exclude", "e", []string{}, "types to exclude in export job")
|
||||
cmd.Flags().StringVarP(&objectOptions, "objectOptions", "o", "", "options for the object types being exported")
|
||||
cmd.Flags().BoolVarP(&wait, "wait", "w", false, "wait for the export job to finish, and download the results")
|
||||
cmd.Flags().StringVarP(&folderPath, "folderPath", "f", "spconfig-exports", "Folder path to save the search results in. If the directory doesn't exist, then it will be automatically created. (default is the current working directory)")
|
||||
cmd.Flags().StringVarP(&description, "description", "", "", "Optional description for the export job")
|
||||
cmd.Flags().StringArrayVarP(&includeTypes, "include", "i", []string{}, "Types to include in export job")
|
||||
cmd.Flags().StringArrayVarP(&excludeTypes, "exclude", "e", []string{}, "Types to exclude in export job")
|
||||
cmd.Flags().StringVarP(&objectOptions, "objectOptions", "o", "", "Options for the object types being exported")
|
||||
cmd.Flags().BoolVarP(&wait, "wait", "w", false, "Wait for the export job to finish, and then download the results")
|
||||
|
||||
return cmd
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
==Long==
|
||||
# Export
|
||||
Start an Export job in IdentityNow
|
||||
Start an export job in IdentityNow.
|
||||
|
||||
Valid Types that can be included or excluded are:
|
||||
You can include or exclude the following valid types:
|
||||
- ACCESS_PROFILE
|
||||
- ACCESS_REQUEST_CONFIG
|
||||
- ATTR_SYNC_SOURCE_CONFIG
|
||||
|
||||
@@ -18,8 +18,8 @@ func newImportCommand() *cobra.Command {
|
||||
|
||||
cmd := &cobra.Command{
|
||||
Use: "import",
|
||||
Short: "Start an Import job in IdentityNow",
|
||||
Long: "\nStart an Import job in IdentityNow\n\n",
|
||||
Short: "Start an import job in IdentityNow",
|
||||
Long: "\nStart an import job in IdentityNow\n\n",
|
||||
Example: "sail spconfig import",
|
||||
Aliases: []string{"imp"},
|
||||
Args: cobra.NoArgs,
|
||||
@@ -57,9 +57,9 @@ func newImportCommand() *cobra.Command {
|
||||
},
|
||||
}
|
||||
|
||||
cmd.Flags().StringVarP(&filePath, "filePath", "f", "", "the path to the file containing the import payload")
|
||||
cmd.Flags().StringVarP(&folderPath, "folderPath", "p", "spconfig-imports", "folder path to save the import results in. If the directory doesn't exist, then it will be automatically created. (default is the current working directory)")
|
||||
cmd.Flags().BoolVarP(&wait, "wait", "w", false, "wait for the import job to finish, and download the results")
|
||||
cmd.Flags().StringVarP(&filePath, "filePath", "f", "", "Path to the file containing the import payload")
|
||||
cmd.Flags().StringVarP(&folderPath, "folderPath", "p", "spconfig-imports", "Folder path to save the import results in. If the directory doesn't exist, then it will be automatically created. (default is the current working directory)")
|
||||
cmd.Flags().BoolVarP(&wait, "wait", "w", false, "Wait for the import job to finish, and then download the results")
|
||||
cmd.MarkFlagRequired("filepath")
|
||||
|
||||
return cmd
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
==Long==
|
||||
# SPConfig
|
||||
Perform SP-Config operations in IdentityNow
|
||||
Perform SP-Config operations in IdentityNow.
|
||||
|
||||
API References:
|
||||
- https://developer.sailpoint.com/idn/api/beta/sp-config
|
||||
|
||||
@@ -14,8 +14,8 @@ func newStatusCommand() *cobra.Command {
|
||||
var importJobs []string
|
||||
cmd := &cobra.Command{
|
||||
Use: "status",
|
||||
Short: "Get the Status of SPConfig jobs in IdentityNow",
|
||||
Long: "\nGet the Status of SPConfig jobs in IdentityNow\n\n",
|
||||
Short: "Get the status of SPConfig jobs in IdentityNow",
|
||||
Long: "\nGet the status of SPConfig jobs in IdentityNow\n\n",
|
||||
Example: "sail spconfig status --export 2b3b68f4-cfe7-43a6-8fb0-a518c6218111",
|
||||
Aliases: []string{"stat"},
|
||||
Args: cobra.NoArgs,
|
||||
|
||||
@@ -28,7 +28,7 @@ func newTemplateCommand() *cobra.Command {
|
||||
var wait bool
|
||||
cmd := &cobra.Command{
|
||||
Use: "template",
|
||||
Short: "Begin an SPConfig Export task in IdentityNow using a template",
|
||||
Short: "Begin an SPConfig export task in IdentityNow, using a template",
|
||||
Long: help.Long,
|
||||
Example: help.Example,
|
||||
Aliases: []string{"temp"},
|
||||
@@ -96,8 +96,8 @@ func newTemplateCommand() *cobra.Command {
|
||||
},
|
||||
}
|
||||
|
||||
cmd.Flags().StringVarP(&folderPath, "folderPath", "f", "spconfig-exports", "folder path to save the search results in. If the directory doesn't exist, then it will be automatically created. (default is the current working directory)")
|
||||
cmd.Flags().BoolVarP(&wait, "wait", "w", false, "wait for the export job to finish, and download the results")
|
||||
cmd.Flags().StringVarP(&folderPath, "folderPath", "f", "spconfig-exports", "Folder path to save the search results in. If the directory doesn't exist, then it will be automatically created. (default is the current working directory)")
|
||||
cmd.Flags().BoolVarP(&wait, "wait", "w", false, "Wait for the export job to finish, and then download the results")
|
||||
|
||||
return cmd
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
# Template
|
||||
|
||||
Begin an SPConfig Export task in IdentityNow using a template
|
||||
Begin an SPConfig export task in IdentityNow, using a template.
|
||||
|
||||
====
|
||||
|
||||
|
||||
@@ -20,8 +20,8 @@ func newCreateCommand() *cobra.Command {
|
||||
var filepath string
|
||||
cmd := &cobra.Command{
|
||||
Use: "create",
|
||||
Short: "Create an IdentityNow Transform from a file",
|
||||
Long: "\nCreate an IdentityNow Transform from a file\n\n",
|
||||
Short: "Create an IdentityNow transform from a file",
|
||||
Long: "\nCreate an IdentityNow transform from a file\n\n",
|
||||
Example: "sail transform c -f /path/to/transform.json\nsail transform c < /path/to/transform.json\necho /path/to/transform.json | sail transform c",
|
||||
Aliases: []string{"c"},
|
||||
Args: cobra.NoArgs,
|
||||
@@ -49,7 +49,7 @@ func newCreateCommand() *cobra.Command {
|
||||
log.Debug("Transform", "transform", transform)
|
||||
|
||||
if transform.GetName() == "" {
|
||||
return fmt.Errorf("the transform must have a name")
|
||||
return fmt.Errorf("The transform must have a name")
|
||||
}
|
||||
|
||||
apiClient, err := config.InitAPIClient()
|
||||
|
||||
@@ -12,8 +12,8 @@ import (
|
||||
func newDeleteCommand() *cobra.Command {
|
||||
cmd := &cobra.Command{
|
||||
Use: "delete",
|
||||
Short: "Delete an IdentityNow Transform",
|
||||
Long: "\nDelete an IdentityNow Transform\n\n",
|
||||
Short: "Delete an IdentityNow transform",
|
||||
Long: "\nDelete an IdentityNow transform\n\n",
|
||||
Example: "sail transform delete 03d5187b-ab96-402c-b5a1-40b74285d77a",
|
||||
Aliases: []string{"d"},
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
|
||||
@@ -18,8 +18,8 @@ func newDownloadCommand() *cobra.Command {
|
||||
var destination string
|
||||
cmd := &cobra.Command{
|
||||
Use: "download",
|
||||
Short: "Download all Transforms from IdentityNow",
|
||||
Long: "\nDownload all Transforms from IdentityNow\n\n",
|
||||
Short: "Download all transforms from IdentityNow",
|
||||
Long: "\nDownload all transforms from IdentityNow\n\n",
|
||||
Example: "sail transform download -d transform_files | sail transform dl",
|
||||
Aliases: []string{"dl"},
|
||||
Args: cobra.NoArgs,
|
||||
@@ -50,7 +50,7 @@ func newDownloadCommand() *cobra.Command {
|
||||
},
|
||||
}
|
||||
|
||||
cmd.Flags().StringVarP(&destination, "destination", "d", "transform_files", "The path to the directory to save the files in (default current working directory). If the directory doesn't exist, then it will be automatically created.")
|
||||
cmd.Flags().StringVarP(&destination, "destination", "d", "transform_files", "Path to the directory to save the files in (default current working directory). If the directory doesn't exist, then it will be automatically created.")
|
||||
|
||||
return cmd
|
||||
}
|
||||
|
||||
@@ -15,8 +15,8 @@ import (
|
||||
func newListCommand() *cobra.Command {
|
||||
return &cobra.Command{
|
||||
Use: "list",
|
||||
Short: "List all Transforms in IdentityNow",
|
||||
Long: "\nList all Transforms in IdentityNow\n\n",
|
||||
Short: "List all transforms in IdentityNow",
|
||||
Long: "\nList all transforms in IdentityNow\n\n",
|
||||
Example: "sail transform list | sail transform ls",
|
||||
Aliases: []string{"ls"},
|
||||
Args: cobra.NoArgs,
|
||||
|
||||
@@ -22,8 +22,8 @@ var implicitInput bool
|
||||
func newPreviewCommand() *cobra.Command {
|
||||
cmd := &cobra.Command{
|
||||
Use: "preview",
|
||||
Short: "Preview the effects of an IdentityNow Transform",
|
||||
Long: "\nPreview the effects of an IdentityNow Transform\n\n",
|
||||
Short: "Preview the effects of an IdentityNow transform",
|
||||
Long: "\nPreview the effects of an IdentityNow transform\n\n",
|
||||
Example: "sail transform preview -i 020523e172fb4448b0814643ae52ff32 -a lastname -n ToLower --implicit\nsail transform preview -i 020523e172fb4448b0814643ae52ff32 -a lastname -n ToUpper --implicit\nsail transform p -i 12a199b967b64ffe992ef4ecfd076728 -a lastname -f /path/to/transform.json\nsail transform p -i 12a199b967b64ffe992ef4ecfd076728 -a lastname -n ToLower --implicit",
|
||||
Aliases: []string{"p"},
|
||||
Args: cobra.NoArgs,
|
||||
@@ -204,14 +204,14 @@ func newPreviewCommand() *cobra.Command {
|
||||
},
|
||||
}
|
||||
|
||||
cmd.Flags().StringP("identity-profile", "i", "", "The GUID of an identity profile (required)")
|
||||
cmd.Flags().StringP("identity-profile", "i", "", "GUID of an identity profile (required)")
|
||||
cmd.Flags().StringP("attribute", "a", "", "Attribute name (required)")
|
||||
cmd.Flags().StringP("name", "n", "", "Transform name. Only needed if using implicit input. The transform must be uploaded to IDN first.")
|
||||
cmd.Flags().BoolVar(&implicitInput, "implicit", false, "Use implicit input. Default is explicit input defined by the transform.")
|
||||
cmd.Flags().String("preview-endpoint", previewEndpoint, "Override preview endpoint")
|
||||
cmd.Flags().String("identity-profile-endpoint", identityProfileEndpoint, "Override identity profile endpoint")
|
||||
cmd.Flags().String("user-endpoint", userEndpoint, "Override user endpoint")
|
||||
cmd.Flags().StringP("file", "f", "", "The path to the transform file. Only needed if using explicit input.")
|
||||
cmd.Flags().StringP("file", "f", "", "Path to the transform file. Only needed if using explicit input.")
|
||||
|
||||
cmd.MarkFlagRequired("identity-profile")
|
||||
cmd.MarkFlagRequired("attribute")
|
||||
|
||||
@@ -15,8 +15,8 @@ const (
|
||||
func NewTransformCommand() *cobra.Command {
|
||||
cmd := &cobra.Command{
|
||||
Use: "transform",
|
||||
Short: "Manage Transforms in IdentityNow",
|
||||
Long: "\nManage Transforms in IdentityNow\n\n",
|
||||
Short: "Manage transforms in IdentityNow",
|
||||
Long: "\nManage transforms in IdentityNow\n\n",
|
||||
Example: "sail transform | sail tran",
|
||||
Aliases: []string{"tran"},
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
|
||||
@@ -17,8 +17,8 @@ import (
|
||||
func newUpdateCommand() *cobra.Command {
|
||||
cmd := &cobra.Command{
|
||||
Use: "update",
|
||||
Short: "Update a Transform in IdentityNow from a File",
|
||||
Long: "\nUpdate a Transform in IdentityNow from a File\n\n",
|
||||
Short: "Update a transform in IdentityNow from a file",
|
||||
Long: "\nUpdate a transform in IdentityNow from a file\n\n",
|
||||
Example: "sail transform update --file ./assets/demo_update.json\nsail transform u -f /path/to/transform.json\nsail transform u < /path/to/transform.json\necho /path/to/transform.json | sail transform u",
|
||||
Aliases: []string{"u"},
|
||||
Args: cobra.NoArgs,
|
||||
@@ -69,7 +69,7 @@ func newUpdateCommand() *cobra.Command {
|
||||
},
|
||||
}
|
||||
|
||||
cmd.Flags().StringP("file", "f", "", "The path to the transform file")
|
||||
cmd.Flags().StringP("file", "f", "", "Path to the transform file")
|
||||
|
||||
return cmd
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ func newCollectCommand(term terminal.Terminal) *cobra.Command {
|
||||
var config bool
|
||||
cmd := &cobra.Command{
|
||||
Use: "collect [-c | -l] [-o output] VA-Network-Address... [-p va-password]",
|
||||
Short: "Collect files from a SailPoint Virtual Appliance",
|
||||
Short: "Collect files from a SailPoint virtual appliance",
|
||||
Long: help.Long,
|
||||
Example: help.Example,
|
||||
Args: cobra.MinimumNArgs(1),
|
||||
@@ -90,10 +90,10 @@ func newCollectCommand(term terminal.Terminal) *cobra.Command {
|
||||
},
|
||||
}
|
||||
|
||||
cmd.Flags().StringVarP(&output, "output", "o", "", "The path to save the log files")
|
||||
cmd.Flags().BoolVarP(&logs, "log", "l", false, "retrieve log files")
|
||||
cmd.Flags().BoolVarP(&config, "config", "c", false, "retrieve config files")
|
||||
cmd.Flags().StringArrayVarP(&credentials, "passwords", "p", []string{}, "passwords for the servers in the same order that the servers are listed as arguments")
|
||||
cmd.Flags().StringVarP(&output, "output", "o", "", "Path to save the log files")
|
||||
cmd.Flags().BoolVarP(&logs, "log", "l", false, "Retrieve log files")
|
||||
cmd.Flags().BoolVarP(&config, "config", "c", false, "Retrieve config files")
|
||||
cmd.Flags().StringArrayVarP(&credentials, "passwords", "p", []string{}, "Passwords for the servers in the same order that the servers are listed as arguments")
|
||||
|
||||
cmd.MarkFlagsMutuallyExclusive("config", "log")
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
==Long==
|
||||
# Collect
|
||||
|
||||
Collect files from a remote Virtual Appliance
|
||||
Collect files from a remote virtual appliance.
|
||||
|
||||
Files are collected over SFTP. Passwords are provided via the --password (-p) flag or they will be prompted for at runtime. Server addresses can be DNS names or IP addresses, and are provided as arguments separated by spaces.
|
||||
Files are collected over SFTP. Passwords are provided via the --password (-p) flag or they will be prompted for at runtime. Server addresses can be DNS names or IP addresses, and they're provided as arguments, separated by spaces.
|
||||
|
||||
Log Files:
|
||||
```bash
|
||||
|
||||
@@ -20,7 +20,7 @@ func newGetCommand() *cobra.Command {
|
||||
help := util.ParseHelp(getHelp)
|
||||
cmd := &cobra.Command{
|
||||
Use: "get",
|
||||
Short: "Get a Virtual Appliance configuration from IdentityNow",
|
||||
Short: "Get a virtual appliance configuration from IdentityNow",
|
||||
Long: help.Long,
|
||||
Example: help.Example,
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
# Get
|
||||
|
||||
Get a Virtual Appliance configuration from IdentityNow
|
||||
Get a virtual appliance configuration from IdentityNow.
|
||||
|
||||
====
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ func newListCommand() *cobra.Command {
|
||||
help := util.ParseHelp(listHelp)
|
||||
cmd := &cobra.Command{
|
||||
Use: "list",
|
||||
Short: "List the Virtual Appliances configured in IdentityNow",
|
||||
Short: "List the virtual appliances configured in IdentityNow",
|
||||
Long: help.Long,
|
||||
Example: help.Example,
|
||||
Args: cobra.NoArgs,
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
# List
|
||||
|
||||
List the Clusters and Virtual Appliances in the configured IdentityNow tenant
|
||||
List the clusters and virtual appliances in the configured IdentityNow tenant.
|
||||
|
||||
====
|
||||
|
||||
|
||||
@@ -329,7 +329,7 @@ func newParseCommand() *cobra.Command {
|
||||
var all bool
|
||||
cmd := &cobra.Command{
|
||||
Use: "parse",
|
||||
Short: "Parse Log Files from SailPoint Virtual Appliances",
|
||||
Short: "Parse log files from SailPoint virtual appliances",
|
||||
Long: help.Long,
|
||||
Example: help.Example,
|
||||
Args: cobra.MinimumNArgs(1),
|
||||
@@ -345,7 +345,7 @@ func newParseCommand() *cobra.Command {
|
||||
mpb.WithRefreshRate(180*time.Millisecond),
|
||||
)
|
||||
|
||||
log.Info("Parsing Log Files", "files", args)
|
||||
log.Info("Parsing log files", "files", args)
|
||||
|
||||
log.SetOutput(p)
|
||||
for _, filepath := range args {
|
||||
@@ -382,7 +382,7 @@ func newParseCommand() *cobra.Command {
|
||||
}
|
||||
|
||||
cmd.Flags().StringVarP(&fileType, "type", "t", "", "Specifies the log type to parse (ccg, canal)")
|
||||
cmd.Flags().BoolVarP(&all, "all", "a", false, "Specifies all log traffic should be parsed, not just errors")
|
||||
cmd.Flags().BoolVarP(&all, "all", "a", false, "Specifies that all log traffic should be parsed, not just errors")
|
||||
|
||||
return cmd
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
==Long==
|
||||
# Parse
|
||||
|
||||
Parse Log Files from SailPoint Virtual Appliances
|
||||
Parse log files from SailPoint virtual appliances.
|
||||
====
|
||||
|
||||
==Example==
|
||||
|
||||
@@ -20,8 +20,8 @@ func NewTroubleshootCmd(term terminal.Terminal) *cobra.Command {
|
||||
var output string
|
||||
cmd := &cobra.Command{
|
||||
Use: "troubleshoot",
|
||||
Short: "Perform Troubleshooting Operations against a Virtual Appliance",
|
||||
Long: "\nPerform Troubleshooting Operations against a Virtual Appliance\n\n",
|
||||
Short: "Perform troubleshooting operations against a virtual appliance",
|
||||
Long: "\nPerform troubleshooting operations against a virtual appliance\n\n",
|
||||
Example: "sail va troubleshoot 10.10.10.10",
|
||||
Args: cobra.MinimumNArgs(1),
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
@@ -71,8 +71,8 @@ func NewTroubleshootCmd(term terminal.Terminal) *cobra.Command {
|
||||
|
||||
}}
|
||||
|
||||
cmd.Flags().StringP("endpoint", "e", "", "The host to troubleshoot")
|
||||
cmd.Flags().StringVarP(&output, "output", "o", "", "The path to save the log file")
|
||||
cmd.Flags().StringP("endpoint", "e", "", "Host to troubleshoot")
|
||||
cmd.Flags().StringVarP(&output, "output", "o", "", "Path to save the log file")
|
||||
|
||||
return cmd
|
||||
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
==Long==
|
||||
# Troubleshoot
|
||||
|
||||
Perform troubleshooting operations against a virtual appliance.
|
||||
|
||||
====
|
||||
|
||||
==Example==
|
||||
```bash
|
||||
sail va troubleshoot 10.10.10.10
|
||||
```
|
||||
====
|
||||
@@ -10,18 +10,18 @@ import (
|
||||
)
|
||||
|
||||
func updateAndRebootVA(endpoint, password string) {
|
||||
log.Info("Attempting to Update", "VA", endpoint)
|
||||
log.Info("Attempting to update", "VA", endpoint)
|
||||
|
||||
update, updateErr := va.RunVACmd(endpoint, password, UpdateCommand)
|
||||
if updateErr != nil {
|
||||
log.Error("Problem Updating", "VA", endpoint, "err", updateErr, "resp", update)
|
||||
log.Error("Problem updating", "VA", endpoint, "err", updateErr, "resp", update)
|
||||
} else {
|
||||
log.Info("Virtual Appliance Updating", "VA", endpoint)
|
||||
log.Info("Virtual appliance updating", "VA", endpoint)
|
||||
reboot, rebootErr := va.RunVACmd(endpoint, password, RebootCommand)
|
||||
if rebootErr != nil && rebootErr.Error() != "wait: remote command exited without exit status or exit signal" {
|
||||
log.Error("Problem Rebooting", "Server", endpoint, "err", rebootErr, "resp", reboot)
|
||||
log.Error("Problem rebooting", "Server", endpoint, "err", rebootErr, "resp", reboot)
|
||||
} else {
|
||||
log.Info("Virtual Appliance Rebooting", "VA", endpoint)
|
||||
log.Info("Virtual appliance rebooting", "VA", endpoint)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,8 +32,8 @@ func newUpdateCommand(term terminal.Terminal) *cobra.Command {
|
||||
var credentials []string
|
||||
cmd := &cobra.Command{
|
||||
Use: "update",
|
||||
Short: "Perform Update Operations on a SailPoint Virtual Appliance",
|
||||
Long: "\nPerform Update Operations on a SailPoint Virtual Appliance\n\n",
|
||||
Short: "Perform update operations on a SailPoint virtual appliance",
|
||||
Long: "\nPerform update operations on a SailPoint virtual appliance\n\n",
|
||||
Example: "sail va update 10.10.10.10 10.10.10.11 -c S@ilp0int -c S@ilp0int",
|
||||
Args: cobra.MinimumNArgs(1),
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
@@ -45,7 +45,7 @@ func newUpdateCommand(term terminal.Terminal) *cobra.Command {
|
||||
}
|
||||
|
||||
if password == "" {
|
||||
password, _ = term.PromptPassword("Enter Password for " + endpoint + ":")
|
||||
password, _ = term.PromptPassword("Enter password for " + endpoint + ":")
|
||||
}
|
||||
|
||||
updateAndRebootVA(endpoint, password)
|
||||
@@ -54,7 +54,7 @@ func newUpdateCommand(term terminal.Terminal) *cobra.Command {
|
||||
},
|
||||
}
|
||||
|
||||
cmd.Flags().StringArrayVarP(&credentials, "Passwords", "p", []string{}, "You can enter the Passwords for the servers in the same order that the servers are listed as arguments")
|
||||
cmd.Flags().StringArrayVarP(&credentials, "Passwords", "p", []string{}, "You can enter the passwords for the servers in the same order that the servers are listed as arguments")
|
||||
|
||||
return cmd
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
==Long==
|
||||
# Update
|
||||
|
||||
Update a SailPoint Virtual Appliance
|
||||
Update a SailPoint virtual appliance.
|
||||
====
|
||||
|
||||
==Example==
|
||||
|
||||
@@ -16,7 +16,7 @@ func NewVACommand(term terminal.Terminal) *cobra.Command {
|
||||
help := util.ParseHelp(vaHelp)
|
||||
cmd := &cobra.Command{
|
||||
Use: "va",
|
||||
Short: "Manage SailPoint Virtual Appliances",
|
||||
Short: "Manage SailPoint virtual appliances",
|
||||
Long: help.Long,
|
||||
Example: help.Example,
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
==Long==
|
||||
# VA
|
||||
|
||||
Manage Virtual Appliances in IdentityNow
|
||||
Manage virtual appliances in IdentityNow.
|
||||
|
||||
====
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ func newCreateCommand() *cobra.Command {
|
||||
var directory bool
|
||||
cmd := &cobra.Command{
|
||||
Use: "create [-f file1 file2 ... | -d workflowDirectory ]",
|
||||
Short: "Create Workflows in IdentityNow",
|
||||
Short: "Create workflows in IdentityNow",
|
||||
Long: help.Long,
|
||||
Example: help.Example,
|
||||
Aliases: []string{"cr"},
|
||||
@@ -112,8 +112,8 @@ func newCreateCommand() *cobra.Command {
|
||||
},
|
||||
}
|
||||
|
||||
cmd.Flags().BoolVarP(&file, "file", "f", false, "specifies that workflow file paths are provided as arguments to be created")
|
||||
cmd.Flags().BoolVarP(&directory, "directory", "d", false, "specifies that a directory of workflows is provided to be created")
|
||||
cmd.Flags().BoolVarP(&file, "file", "f", false, "Specifies that workflow file paths are provided as arguments to be created")
|
||||
cmd.Flags().BoolVarP(&directory, "directory", "d", false, "Specifies that a directory of workflows is provided to be created")
|
||||
cmd.MarkFlagsMutuallyExclusive("file", "directory")
|
||||
|
||||
return cmd
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
==Long==
|
||||
# Create
|
||||
Create Workflows in IdentityNow
|
||||
Create workflows in IdentityNow
|
||||
|
||||
## API References:
|
||||
- https://developer.sailpoint.com/idn/api/beta/create-workflow
|
||||
@@ -9,7 +9,7 @@ Create Workflows in IdentityNow
|
||||
|
||||
==Example==
|
||||
## File Paths:
|
||||
**Note:** File paths are relative to the current working directory, and only one workflow is allowed per file path. Multiple Workflows can be provided by specifying multiple file paths as arguments.
|
||||
**Note:** File paths are relative to the current working directory, and only one workflow is allowed per file path. Multiple workflows can be provided by specifying multiple file paths as arguments.
|
||||
|
||||
```bash
|
||||
sail workflow create -f {file-path}
|
||||
|
||||
@@ -19,7 +19,7 @@ func newDeleteCommand() *cobra.Command {
|
||||
help := util.ParseHelp(deleteHelp)
|
||||
cmd := &cobra.Command{
|
||||
Use: "delete workflowID... ",
|
||||
Short: "Delete a Workflow in IdentityNow",
|
||||
Short: "Delete a workflow in IdentityNow",
|
||||
Long: help.Long,
|
||||
Example: help.Example,
|
||||
Aliases: []string{"del"},
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
==Long==
|
||||
# Delete
|
||||
Delete a workflow in IdentityNow
|
||||
Delete a workflow in IdentityNow.
|
||||
|
||||
## API References:
|
||||
- https://developer.sailpoint.com/idn/api/beta/delete-workflow
|
||||
|
||||
@@ -22,7 +22,7 @@ func newDownloadCommand() *cobra.Command {
|
||||
var folderPath string
|
||||
cmd := &cobra.Command{
|
||||
Use: "download",
|
||||
Short: "Download Workflows from IdentityNow",
|
||||
Short: "Download workflows from IdentityNow",
|
||||
Long: help.Long,
|
||||
Example: help.Example,
|
||||
Aliases: []string{"down"},
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
==Long==
|
||||
# Download
|
||||
Downloads all Workflows from IdentityNow
|
||||
Downloads all workflows from IdentityNow.
|
||||
|
||||
## API References:
|
||||
- https://developer.sailpoint.com/idn/api/beta/list-workflows
|
||||
|
||||
@@ -20,7 +20,7 @@ func newGetCommand() *cobra.Command {
|
||||
help := util.ParseHelp(getHelp)
|
||||
cmd := &cobra.Command{
|
||||
Use: "get",
|
||||
Short: "Get Workflows in IdentityNow",
|
||||
Short: "Get workflows in IdentityNow",
|
||||
Long: help.Long,
|
||||
Example: help.Example,
|
||||
Aliases: []string{"g"},
|
||||
|
||||
@@ -19,7 +19,7 @@ func newListCommand() *cobra.Command {
|
||||
help := util.ParseHelp(listHelp)
|
||||
cmd := &cobra.Command{
|
||||
Use: "list",
|
||||
Short: "List all Workflows in IdentityNow",
|
||||
Short: "List all workflows in IdentityNow",
|
||||
Long: help.Long,
|
||||
Example: help.Example,
|
||||
Aliases: []string{"ls"},
|
||||
|
||||
@@ -23,7 +23,7 @@ func newUpdateCommand() *cobra.Command {
|
||||
var directory bool
|
||||
cmd := &cobra.Command{
|
||||
Use: "update",
|
||||
Short: "Update a Workflow in IdentityNow",
|
||||
Short: "Update a workflow in IdentityNow",
|
||||
Long: help.Long,
|
||||
Example: help.Example,
|
||||
Aliases: []string{"up"},
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
==Long==
|
||||
# Update
|
||||
|
||||
Update a Workflow in IdentityNow
|
||||
Update a workflow in IdentityNow.
|
||||
|
||||
Arguments can be a list of directories or files.
|
||||
If a directory is specified, all JSON files in the directory will be parsed and the workflows uploaded.
|
||||
|
||||
@@ -15,7 +15,7 @@ func NewWorkflowCommand() *cobra.Command {
|
||||
help := util.ParseHelp(workflowHelp)
|
||||
cmd := &cobra.Command{
|
||||
Use: "workflow",
|
||||
Short: "Manage Workflows in IdentityNow",
|
||||
Short: "Manage workflows in IdentityNow",
|
||||
Long: help.Long,
|
||||
Example: help.Example,
|
||||
Aliases: []string{"work"},
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
# Workflows
|
||||
|
||||
Manage Workflows in IdentityNow
|
||||
Manage workflows in IdentityNow.
|
||||
|
||||
====
|
||||
|
||||
|
||||
Reference in New Issue
Block a user