ftbx


Nameftbx JSON
Version 0.1.dev373 PyPI version JSON
download
home_pageNone
SummaryTool to facilitate and accelerate Flex operations.
upload_time2024-11-15 19:35:15
maintainerDavid NAISSE
docs_urlNone
authorDavid NAISSE
requires_python>=3.10
licenseCopyright 2024 Dalet Digital Media Systems, all rights reserved
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # FTBX - FLEX TOOLBOX

Just trying to make flex operations faster for all teams.

## Table of Contents

  - [Requirements](#requirements)  
  - [Installation](#installation)  
    - [Windows](#windows)  
    - [Linux](#linux)  
    - [macOS](#macos)
  - [Usage](#usage)
    - [ftbx update](#update)
    - [ftbx connect](#connect)  
    - [ftbx setup](#setup)
    - [ftbx query](#raw-queries)  
    - [ftbx list](#list-items)  
    - [ftbx pull](#pull-items)  
    - [ftbx create](#create-items)
    - [ftbx push](#push-items)  
    - [ftbx fail](#fail-items)
    - [ftbx restore](#restore-items)  
    - [ftbx compare](#compare-items)  
    - [ftbx assert](#assert)
    - [ftbx retry](#retry-items)  
    - [ftbx launch](#launch-instances--custom-scripts)  
    - [ftbx workflowDesigner](#workflow-designer)
    - [ftbx metadataDesigner](#metadata-designer)
  - [Errors & fixes](#errors--fixes)  
    - [SSLCertVerificationError](#self-signed-certificates)  
  - [Contact](#contacts)  

## __Bug/Feature Bounty Hunters__

| Bounty Hunter          | Bugs found | Features suggested | PR merged | Bounties |
|------------------------|------------|--------------------|-----------|----------|
| **Elouan GOUINGUENET** | 1          | 5                  | 1         | 7        |
| **Guillaume GAY**      | 1          | 2                  | 0         | 3        |
| **Gustavo BONASSO**    | 2          | 0                  | 1         | 3        |
| **Hugo TALBOT**        | 0          | 1                  | 1         | 2        |
| **Bowen ZHANG**        | 1          | 0                  | 0         | 1        |
| **Julius SANTUA**      | 0          | 1                  | 0         | 1        |
| **Rémi MARCHAND**      | 1          | 0                  | 0         | 1        |
| **TOTAL**              | **6**      | **9**              | **3**     | **18**   |

> See HUNT.md for full history

# REQUIREMENTS

#### [Git (click here to download)](https://git-scm.com/downloads)

#### [Python 3.10 (click here to download)](https://www.python.org/downloads/release/python-31011/)

***

# INSTALLATION

## Install python

#### Windows

* link above

#### Linux

```shell
sudo apt install python3-pip
```

#### macOS

```shell
brew install python
```

## Install FTBX

```shell
pip install ftbx
ftbx init
```

## Configure autocompletion

```shell
ftbx --install-completion
```

Then open a new terminal and you will get autocompletions by pressing 'tab'.

## Update FTBX

```shell
ftbx update
```

# USAGE

You can use the flag `--help` with any command to show the command arguments (see below).  

```shell
$ ftbx --help
                                                                                                                               
 Usage: ftbx COMMAND [ARGS] [OPTIONS]...                                                                                    
                                                                                                                               
╭─ Options ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --install-completion          Install completion for the current shell.                                                     │
│ --show-completion             Show completion for the current shell, to copy it or customize the installation.              │
│ --help                        Show this message and exit.                                                                   │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ assert             Asserts some statement(s) or condition(s). Returns 'True' or 'False'.                                    │
│ compare            Compares objects between environments. Saves the result(s) in 'compare_env1_env2/'.                      │
│ connect            Connects to an environment. Environment file is located at '~/.ftbx/environments'.                       │
│ create             Creates templated objects in an environment.                                                             │
│ env                Displays all available environments and their urls, aliases, versions and usernames.                     │
│ fail               Fail object instances (requirements: connection to the servers and `consul_host`/`consul_token`)         │
│ init               Initializes the flex-toolbox. This is the first command you must run upon installation.                  │
│ launch             Launches a job or workflow with the given parameters.                                                    │
│ list               Lists objects from an environment. Saves the results as CSV and JSON files in 'lists/'.                  │
│ metadataDesigner   Opens the metadata designer in your default web browser.                                                 │
│ pull               Pulls objects from environment(s) as files and folders.                                                  │
│ push               Creates or updates objects in one of multiple environments. Generates backups before pushing.            │
│ query              Queries an environment, useful as postman replacement. Saves the results in 'query.json'.                │
│ restore            Restores objects to a previous point in time.                                                            │
│ retry              Retries object instances in an environment either from API filters or from a file (csv or json).         │
│ setup              Setup the API documentation (in 'docs/') and the SDK (in 'sdks/') for a given flex version.              │
│ update             Updates the toolbox to the latest version.                                                               │
│ workflowDesigner   Opens the workflow designer for a given workflow in an environment.                                      │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
```

```shell
$ ftbx retry --help
                                                                                                                               
 Usage: ftbx retry OBJECT_TYPE [OPTIONS]                                                                   
                                                                                                                               
 Retries object instances in an environment either from API filters or from a file (csv or json).                              
 - ftbx retry jobs --in cs-sbx # retry all failed jobs                                                                         
 - ftbx retry jobs --filters 'name=ftbx-script' 'createdFrom=22 Jul 2024'                                                      
 - ftbx retry workflows --file 'lists/failed_workflows.csv' --in cs-sbx                                                        
                                                                                                                               
╭─ Arguments ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ *    object_type      OBJECT_TYPE:{jobs|workflows}  [default: None] [required]                                              │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --in             TEXT  [default: default]                                                                                   │
│ --filters        TEXT  ex: 'name=ftbx-script' 'createdFrom=22 Jul 2024'                                                     │
│ --file           TEXT  ex: 'lists/failed_jobs.csv' 'lists/failed_jobs.json' (from 'ftbx list') [default: None]              │
│ --help                 Show this message and exit.                                                                          │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
```

# Update

```shell
$ ftbx update
```

This command fetches the latest version of the toolbox.

# Connect

```shell
$ ftbx connect --help
                                                                                                                               
 Usage: ftbx connect ENV_OR_URL [USERNAME] [PASSWORD] [OPTIONS]                                                             
                                                                                                                               
 Connects to an environment. Environment file is located at '~/.ftbx/environments'.                                            
 - ftbx connect 'https://sandbox.flex.support.dalet.cloud' my_user --alias cs-sbx --version 2024.5.0  # first time             
 - ftbx connect cs-sbx  # once you successfully connected                                                                      
                                                                                                                               
╭─ Arguments ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ *    env_or_url      TEXT        ex: https://sandbox.flex.support.dalet.cloud [default: None] [required]                    │
│      username        [USERNAME]  [default: None]                                                                            │
│      password        [PASSWORD]  [default: None]                                                                            │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --alias          TEXT  ex: cs-sbx, wb-prod [default: None]                                                                  │
│ --version        TEXT  ex: 2022.5.7, 2024.4.5 [default: latest]                                                             │
│ --help                 Show this message and exit.                                                                          │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
```

> Note: If you're looking for how to connect to self-signed environments, see [here](#4-connect-to-self-signed-environments).

---

#### 1. Connect to a new environment

```shell
# connect without showing password (will prompt you to input password and hide characters)
ftbx connect "https://devstaging.flex.daletdemos.com" "username" --alias "devstaging" --version "2022.5.7"

# connect with plain password
ftbx connect "https://devstaging.flex.daletdemos.com" "username" "my_password" --alias "devstaging"
```

---

#### 2. Connect to a known environment (must be in `~/.ftbx/environments`)

```shell
ftbx connect "devstaging"

ftbx connect "cs-sbx"
```

---

#### 3. Display available default environments

```shell
ftbx env
```

```shell
DEFAULT       ALIAS       VERSION                          URL                             USERNAME  
   -           ae-preprod   latest           https://master.preprod.flex.aenetworks.com    masteruser
   -              ae-prod   latest                   https://master.flex.aenetworks.com    masteruser
   -           crown-prod   latest                 https://master.crownmedia.ooflex.net    masteruser
   -    cs-sandbox-master   latest           https://master.flex.support.cs.dalet.cloud    masteruser
   X               cs-sbx   latest          https://sandbox.flex.support.cs.dalet.cloud       dnaisse
   -              fm-prod   latest                 https://master.firstmedia.ooflex.net    masteruser
   -             hbo-prod   latest                        https://master.hbo.ooflex.net    masteruser
   -               hm-dev   latest https://development.flex-dev.cloud.hallmarkmedia.com       dnaisse
   -              hm-prod   latest https://production.flex-prod.cloud.hallmarkmedia.com       dnaisse
   -             ioc-prod   latest                   https://cio.images-mam.olympic.org dalet_support
   -             mbn-prod   latest                     https://master.flex.mbn-news.com    masteruser
   -             mse-prod   latest             https://master.prod.monumentalsports.com    masteruser
   -            pbsd-prod   latest                         https://master.colo.pbsd.org    masteruser
   -         peloton-prod   latest                      https://prod.mam.onepeloton.com       dnaisse
   -               wb-dev 2022.5.8            https://portal.dev.archive.warnerbros.com       dnaisse
   -              wb-prod 2022.5.7                 https://vault.archive.warnerbros.com       dnaisse
   -               wb-stg 2022.5.7             https://vault.stg.archive.warnerbros.com       dnaisse
```

#### 4. Connect to self-signed environments

Environments deployed with a self-signed certificate are not trusted by default. In order to trust this certification authority, set the environment variable `REQUESTS_CA_BUNDLE` to the path to the certificate of the root certification authority. Like:

```shell
# POSIX
export REQUESTS_CA_BUNDLE=/path/to/cert

# Windows - PowerShell
Set-Item Env:REQUESTS_CA_BUNDLE "path\to\cert"
```

#### Download Flex root certificate authority certificate

This can be done with most web browser. But here is a command for POSIX system.

```shell
echo quit | openssl s_client -showcerts -servername "devstaging.flex.daletdemos.com" -connect devstaging.flex.daletdemos.com:443 > cacert.pem
```

# Setup

```shell
$ ftbx setup --help
                                                                                                                               
 Usage: ftbx setup [OPTIONS]                                                                                                
                                                                                                                               
 Setups the API documentation (in 'docs/') and the SDK (in 'sdks/') for a given flex version.                                  
 - ftbx setup --version latest                                                                                                           
 - ftbx setup --version 2022.5.7                                                                                                         
                                                                                                                               
╭─ Options ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --version        TEXT  [default: latest]                                                                                    │
│ --help                 Show this message and exit.                                                                          │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
```

> Note: you have to be connected to the `dlt-fw-uk-UDP4-1120-full-config` VPN to be able to retrieve the SDK.

---

#### 1. Setup

```shell
# 2022.5.7
ftbx setup --version "2022.5.7"

# latest
ftbx setup --version "latest"
```

# Raw Queries

```shell
$ ftbx query --help
                                                                                                                                                                                                                   
 Usage: ftbx query METHOD URL [OPTIONS]                                                                                                                                                   
                                                                                                                                                                                                                   
 Queries an environment, useful as postman replacement. Saves the results in 'query.json'.                                                                                                                         
 - ftbx query GET 'assets/12345/annotations'                                                                                                                                                                         
 - ftbx query POST 'actions/3332/actions' --payload 'action=disable'  # disable an action                                                                                                                            
 - ftbx query GET 'collections' --from 'cs-sbx'                                                                                                                                                                        
                                                                                                                                                                                                                   
╭─ Arguments ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ *    method      METHOD:{GET|POST|PUT|DELETE}  [default: None] [required]                                                                                                                                       │
│ *    url         TEXT                          ex: 'assets/1234/annotations' 'actions/3332/configuration' [default: None] [required]                                                                            │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --from                      TEXT  [default: default]                                                                                                                                                            │
│ --payload                   TEXT  ex: 'action=enable' 'action=disable' or 'payload.json'                                                                                                                        │
│ --stdout     --no-stdout          Whether to display the result in the terminal [default: no-stdout]                                                                                                            │
│ --help                            Show this message and exit.                                                                                                                                                   │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
```

---

#### 1. Query absolutely everything

```shell
# GET
ftbx query GET "actions/410"
# Env alias
ftbx query GET "actions/410" --from "cs-sbx"
# Print query response to terminal
ftbx query GET "actions/410" --stdout

# POST/PUT (same args as above, plus --payload)
ftbx query PUT "actions/410/configuration" --payload "payload.json"

# Cancel a failed job with command line arguments
ftbx query POST "jobs/1213/actions" --payload "action=cancel"
```

# List items

```shell
$ ftbx list --help
                                                                                                                                                                                                                   
 Usage: ftbx list OBJECT_TYPE [OPTIONS]                                                                                                                                                            
                                                                                                                                                                                                                   
 Lists objects from an environment. Saves the results as CSV and JSON files in 'lists/'.                                                                                                                           
 - ftbx list actions  # list all actions                                                                                                                                                                           
 - ftbx list jobs --filters 'status=Failed' 'name=ftbx-script' --from 'cs-sbx' --name 'failed_cs-sbx_jobs'                                                                                                               
 - ftbx list actions --post-filters 'concurrentJobsLimit>0' --from 'cs-sbx'  # all actions with concurrency > 0                                                                                                      
 - ftbx list assets --filters 'fql=(name~PACKAGE and deleted=false)' --name 'live_packages'  # using fql                                                                                                           
                                                                                                                                                                                                                   
╭─ Arguments ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ *    object_type      OBJECT_TYPE:{accounts|actions|assets|collections|eventHandlers|events|groups|jobs|messageTe  [default: None] [required]                                                                   │
│                       mplates|metadataDefinitions|objectTypes|profiles|quotas|resources|roles|tagCollections|task                                                                                               │
│                       Definitions|tasks|taxonomies|timedActions|userDefinedObjectTypes|users|variants|wizards|wor                                                                                               │
│                       kflowDefinitions|workflows|workspaces}                                                                                                                                                    │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --filters             TEXT  ex: 'status=Running' 'name=asset_name'                                                                                                                                              │
│ --post-filters        TEXT  ex: 'configuration.instance.execution-lock-type=NONE' 'concurrentJobsLimit>0'                                                                                                       │
│ --from                TEXT  [default: default]                                                                                                                                                                  │
│ --from-csv            TEXT  ex: 'lists/asset_list.csv' [default: None]                                                                                                                                            │
│ --name                TEXT  Name under which the JSON and CSV files should be saved [default: None]                                                                                                             │
│ --help                      Show this message and exit.                                                                                                                                                         │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
```

---

#### 1. List anything

  ```shell
  # List all actions 
  ftbx list actions

  # List all assets with fql in the default env
  ftbx list assets --filters "fql=(mimetype~mp4)" --name "mp4Assets"

  # List all assets with fql from wb-stg
  ftbx list assets --filters "fql=(mimetype~mp4)" --name "mp4Assets" --from wb-dev
  
  # List 5 jobs in a failed status 
  ftbx list jobs --filters "status=Failed" "limit=5" --name "failedJobs"
  
  # List scripts that contains "createJob"
  ftbx list actions --filters "type=script" --post-filters "configuration.instance[text]~createJob"
  
  # List jobs for which the last (-1) history message is an error message containing "getName()" in its stackTrace
  ftbx list jobs --filters "name=basic-long-running-action" --post-filters "history.events[-1].stackTrace~getName()"
  
  # List all actions with concurrency > 0 from default env
  ftbx list actions --post-filters "concurrentJobsLimit>0" --name "jobsWithConcurrentLimit"

  # List workflows that completed, and get some metadata fields from the asset the workflow was on
  ftbx list workflows --filters "name=my_workflow" "status=Completed" --post-filters "asset.metadata.instance.general-info.sha1!=None" "asset.fileInformation.currentLocation!=None"
  
  # List all workflows in a corrupted state
  ftbx list workflows --filters "status=Running" --post-filters "jobs.jobs[-1].status!=Running"

  # List events of type 'Login Failed' from April 1, 2024 to May 14, 2024
  ftbx list events --filters "eventType=Login Failed" "from=01 Apr 2024" "to=14 May 2024"
  
  # List account properties
  ftbx list accountProperties --from "cs-sbx"
  ```
  
> Note: FQL search has a max number of results of 10 000, so if you need any more than that, you will have to split your FQL search in multiples other ones.

# Pull items

```shell
$ ftbx pull --help
                                                                                                                                                                                                                   
 Usage: ftbx pull OBJECT_TYPE [OPTIONS]                                                                                                                                                         
                                                                                                                                                                                                                   
 Pulls objects from environment(s) as files and folders.                                                                                                                                                           
 - ftbx pull jobs 12345 --from 'cs-sbx'  # pull job 12345
 - ftbx pull all --from 'wb-dev' 'wb-stg' 'wb-prod' # pull every config objects                                                                                                                                          
 - ftbx pull actions  # pull all actions                                                                                                                                                                           
 - ftbx pull workflowDefinitions --filters 'name=ftbx-workflow' --from 'cs-sbx' --with-dependencies                                                                                                                    
 - ftbx pull workflowDefinitions ftbx-workflow --from 'cs-sbx' --with-dependencies  # same as above
                                                                                                                                                                                                                   
╭─ Arguments ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ *    object_type            OBJECT_TYPE:{all|accounts|actions|assets|collections|eventHandlers|e  [default: None] [required]                                           │
│                             vents|groups|jobs|messageTemplates|metadataDefinitions|objectTypes|p                                                                       │
│                             rofiles|quotas|resources|roles|tagCollections|taskDefinitions|tasks|                                                                       │
│                             taxonomies|timedActions|userDefinedObjectTypes|users|variants|wizard                                                                       │
│                             s|workflowDefinitions|workflows|workspaces}                                                                                                │
│      object_name_or_id      [OBJECT_NAME_OR_ID]                                                   [default: None]                                                      │
╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --filters                                        TEXT  ex: 'status=Running' 'name=asset_name'                                                                          │
│ --post-filters                                   TEXT  ex: 'configuration.instance.execution-lock-type=NONE' 'concurrentJobsLimit>0'                                   │
│ --from                                           TEXT  [default: default]                                                                                              │
│ --with-dependencies    --without-dependencies          Whether to also pull the objects dependencies [default: without-dependencies]                                   │
│ --help                                                 Show this message and exit.                                                                                     │
╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
```

---

#### 1. Pull anything

```shell
# Pull **ALL** actions
ftbx pull actions # default env
ftbx pull actions --from "wb-stg"

# Pull actions matching filters
ftbx pull actions --filters "name=set-asset-metadata" --from "wb-stg"
ftbx pull actions --filters "id=309" # default env
ftbx pull actions --filters "enabled=true" # default env
ftbx pull actions --filters "type=script" --from "wb-stg"
ftbx pull actions --filters "type=script" "enabled=true" # default env

# Pull **ALL**
ftbx pull all
ftbx pull all --from "wb-stg"

# Pull env actions with dependencies
ftbx pull actions --with-dependencies # default env

# Pull all actions where script contains "context.asset.id"
ftbx pull actions --post-filters "configuration.instance[text]~context.asset.id"

# Pull workflow definitions with dependencies
ftbx pull workflowDefinitions --filters "name=ingest-workflow" --with-dependencies

# Pull actions from several envs at the same time
ftbx pull actions --from "wb-dev" "wb-stg" "wb-prod" --filters "name=set-asset-metadata"

# Pull account properties
ftbx pull accountProperties --from "cs-sbx"
```

# Create items

```shell
$ ftbx create --help
                                                                                                                                                                                                                   
 Usage: ftbx create OBJECT_TYPE PLUGIN OBJECT_NAME [OPTIONS]                                                                                                                                                                                
                                                                                                                                                                                                                   
 Creates templated objects in an environment.                                                                                                                                                                      
 - ftbx create actions script 'my-script' --in cs-sbx                                                                                                                                                              
 - ftbx create actions decision 'my-decision' --in cs-sbx                                                                                                                                                          
 - ftbx create wizards launchWorkflow 'my-launch-workflow-wizard' --in cs-sbx                                                                                                                                      
 - ftbx create accountProperties default 'my-account-property' --in cs-sbx                                                                                                                                      
                                                                                                                                                                                                                   
╭─ Arguments ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ *    object_type      OBJECT_TYPE:{accountProperties|actions|wizards}  [default: None] [required]                                                                                                               │
│ *    plugin           PLUGIN:{default|decision|script|launchWorkflow}  [default: None] [required]                                                                                                               │
│ *    object_name      TEXT                                             [default: None] [required]                                                                                                               │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --in          TEXT  [default: default]                                                                                                                                                                          │
│ --help              Show this message and exit.                                                                                                                                                                 │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
```

---

#### 1. Create items

```shell
# Create a script action in default environment
ftbx create actions script "set-asset-metadata"

# Create a script action in a specific environment
ftbx create actions script "set-asset-metadata" --in "wb-stg"

# Create a decision action 
ftbx create actions decision "check-asset-status" --in "wb-stg"

# Create a launchWorkflow wizard
ftbx create wizards launchWorkflow "launch-my-workflow"
```

# Push items

```shell
$ ftbx push --help
                                                                                                                                                                                                                   
 Usage: ftbx push OBJECT_TYPE OBJECT_NAMES... [OPTIONS]                                                                                                                                             
                                                                                                                                                                                                                   
 Creates or updates objects in one or multiple environments. Generates backups before pushing.                                                                                                                     
 - ftbx push actions 'ftbx-script' --push-to-failed-jobs 'all'  # update action and push to all failed jobs                                                                                                                  
 - ftbx push actions 'ftbx-script' 'ftbx-decision'  # update two actions                                                                                                                                           
 - ftbx push actions 'ftbx-script' --from 'wb-dev' --to 'wb-stg' 'wb-prod'  # create action in stg and prod                                                                                                        
 - ftbx push workflowDefinitions 'ftbx-workflow' --from 'wb-dev' --to 'wb-stg' --with-dependencies  # with dependencies                                                                                            
                                                                                                                                                                                                                   
╭─ Arguments ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ *    object_type       OBJECT_TYPE:{accounts|actions|assets|eventHandlers|groups|jobs|messageTemplates|metadataDef  [default: None] [required]                                                                  │
│                        initions|profiles|quotas|resources|roles|taskDefinitions|tasks|timedActions|userDefinedObje                                                                                              │
│                        ctTypes|users|variants|wizards|workflowDefinitions|workflows|workspaces}                                                                                                                 │
│ *    object_names      OBJECT_NAMES...                                                                              [default: None] [required]                                                                  │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --from                                             TEXT  [default: default]                                                                                                                                     │
│ --to                                               TEXT  [default: default]                                                                                                                                     │
│ --retry                  --no-retry                      Whether to also retry the given job [default: no-retry]                                                                                                │
│ --listen                 --no-listen                     Whether to get the logs of the job in the terminal [default: no-listen]                                                                                │
│ --push-to-failed-jobs                              TEXT  'all' OR csv file containing failed jobs to push the config to and retry (from 'ftbx list') [default: None]                                            │
│ --with-dependencies      --without-dependencies          Whether to also push the objects dependencies [default: without-dependencies]                                                                          │
│ --help                                                   Show this message and exit.                                                                                                                            │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
```

---

#### 1. Push anything

```shell
# Push action to an env
ftbx push actions check-end-node-wf # from default env to default env

# Push job and retry it (yes, you can pull jobs directly and tweak their code in your IDE)
ftbx push jobs 294036 --retry

# Push job, retry it but also LISTEN to it (logs will appear in your terminal)
ftbx push jobs 294036 --retry --listen

# Push updated action to **ALL** corresponding failed jobs and retry them
ftbx push actions "check-end-node-wf" --push-to-failed-jobs "all"

# Push updated action to failed jobs contained in .CSV or .JSON and retry them
ftbx push actions "check-end-node-wf" --push-to-failed-jobs "failed_jobs.csv"
ftbx push actions "check-end-node-wf" --push-to-failed-jobs "failed_jobs.json"

# LIST + PUSH with RETRY flow: push & retry failed jobs created after given date
ftbx list jobs --filters "name=check-end-node-wf" "createdFrom=20 Dec 2023"
ftbx push actions "check-end-node-wf" --push-to-failed-jobs "list.json"
ftbx push actions "check-end-node-wf" --push-to-failed-jobs "list.csv"

# Push (create, or update) action from wb-dev to wb-stg AND wb-prod (yes)
ftbx push actions "set-asset-metadata" --from "wb-dev" --to "wb-stg" "wb-prod"  

# Push/update workflow definition WITHOUT updating the resources configuration
ftbx push workflowDefinitions "Get Or Compute Asset Checksum" --from "templates" --to "cs-sandbox-ovh-flex-config" --with-dependencies

# Push workflow definition with ALL its dependencies (actions, resources...)
ftbx push workflowDefinitions "Get Or Compute Asset Checksum" --from "templates" --to "cs-sandbox-ovh-flex-config" --with-dependencies --include-resources

# Push accountProperties
ftbx push accountProperties "my-account-property"
```

# Fail items

```shell
$ ftbx fail --help
                                                                                                                                   
 Usage: ftbx fail OBJECT_TYPE [OBJECT_IDS] [OPTIONS]...                                                                  
                                                                                                                                   
 Fail object instances (requires to be connected to the servers and `consul_host` and `consul_token` in `~/.ftbx/environments`).                                  
 - ftbx fail jobs 1234 5678 91011  # fail the 3 jobs in the default environment                                                    
 - ftbx fail jobs --from-file 'lists/failed_jobs.csv'                                                                              
 - ftbx fail jobs --from-file 'lists/failed_jobs.json'                                                                             
                                                                                                                                   
╭─ Arguments ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ *    object_type      OBJECT_TYPE:{jobs}  [default: None] [required]                                                            │
│      object_ids       [OBJECT_IDS]...     [default: None]                                                                       │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --from-file        TEXT  ex: 'lists/failed_jobs.csv [default: None]                                                             │
│ --in               TEXT  [default: default]                                                                                     │
│ --help                   Show this message and exit.                                                                            │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
```

---

#### 1. Fail instances 

```shell
# Fail a job with id 12345
ftbx fail jobs 12345

# Fail multiple jobs
ftbx fail jobs 1234 5678 91011

# Fail jobs from file
ftbx fail jobs --from-file 'lists/failed_jobs.csv'
ftbx fail jobs --from-file 'lists/failed_jobs.json'
```

# Restore items

```shell
$ ftbx restore --help
                                                                                                                                                                                                                   
 Usage: ftbx restore OBJECT_TYPE OBJECT_NAME BACKUP_NAME [OPTIONS]                                                                                                                                          
                                                                                                                                                                                                                   
 Restores objects to a previous point in time.                                                                                                                                                                     
 - ftbx restore actions 'ftbx-script' '2024-08-30 09h50m38s' --in 'cs-sbx'                                                                                                                                           
 - ftbx restore assets 12345 '2024-07-23 09h50m38s' --in 'cs-sbx'                                                                                                                                                    
                                                                                                                                                                                                                   
╭─ Arguments ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ *    object_type      OBJECT_TYPE:{accounts|actions|assets|eventHandlers|groups|jobs|messageTemplates|metadataDef  [default: None] [required]                                                                   │
│                       initions|profiles|quotas|resources|roles|taskDefinitions|tasks|timedActions|userDefinedObje                                                                                               │
│                       ctTypes|users|variants|wizards|workflows|workspaces}                                                                                                                                      │
│ *    object_name      TEXT                                                                                         [default: None] [required]                                                                   │
│ *    backup_name      TEXT                                                                                         [default: None] [required]                                                                   │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --in          TEXT  [default: default]                                                                                                                                                                          │
│ --help              Show this message and exit.                                                                                                                                                                 │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
```

---

#### 1. Restore backup (in object_type/object_name/backup)

```shell
ftbx restore actions "set-tech-metadata-dpx" "2023-10-10 15h53m43s" --in "wb-prod"
```
  
# Compare items

```shell
$ ftbx compare --help
                                                                                                                                                                                                                   
 Usage: ftbx compare OBJECT_TYPE ENVIRONMENTS... [OPTIONS]                                                                                                                                                                          
                                                                                                                                                                                                                   
 Compares objects between environments. Saves the result(s) in 'compare_env1_env2/'.                                                                                                                               
 - ftbx compare actions 'wb-dev' 'wb-stg' 'wb-prod'  # compare all actions                                                                                                                                               
 - ftbx compare actions 'wb-dev' 'wb-stg' 'wb-prod' --filters 'name=ftbx-script'                                                                                                                                           
 - ftbx compare metadataDefinitions 'wb-stg' 'wb-prod' --filters 'name=Asset'                                                                                                                                            
                                                                                                                                                                                                                   
╭─ Arguments ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ *    object_type       OBJECT_TYPE:{accounts|actions|eventHandlers|groups|messageTemplates|metadataDefinitions|obj  [default: None] [required]                                                                  │
│                        ectTypes|profiles|quotas|resources|roles|tagCollections|taskDefinitions|taxonomies|timedAct                                                                                              │
│                        ions|userDefinedObjectTypes|users|variants|wizards|workflowDefinitions|workspaces}                                                                                                       │
│ *    environments      ENVIRONMENTS...                                                                              [default: None] [required]                                                                  │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --filters        TEXT                                                                                                                                                                                           │
│ --help                 Show this message and exit.                                                                                                                                                              │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
```

---

#### 1. Compare items

```shell
# Compare action "check-end-node-wf" between wb-dev, wb-stg and wb-prod
ftbx compare actions "wb-dev" "wb-stg" "wb-prod" --filters "name=check-end-node-wf"

# Compare **ALL** actions between wb-dev, wb-stg and wb-prod
ftbx compare actions "wb-dev" "wb-stg" "wb-prod"
```

# Assert

```shell
$ ftbx assert --help
                                                                                                                                                                                                                   
 Usage: ftbx.py assert OBJECT_TYPE OBJECT_NAME_OR_ID ASSERTIONS... [OPTIONS]                                                                                                                                                           
                                                                                                                                                                                                                   
 Asserts some statement(s) or condition(s). Returns 'True' or 'False'.                                                                                                                                             
 - ftbx assert assets 12345 'deleted!=True'                                                                                                                                                                        
 - ftbx assert actions ftbx-script 'concurrentJobsLimit>0'                                                                                                                                                         
 - ftbx assert actions ftbx-script 'configuration.instance.execution-lock-type=NONE'                                                                                                                               
                                                                                                                                                                                                                   
╭─ Arguments ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ *    object_type            OBJECT_TYPE:{accounts|actions|assets|collections|eventHandlers|events|groups|jobs|messag  [default: None] [required]                                                                │
│                             eTemplates|metadataDefinitions|objectTypes|profiles|quotas|resources|roles|tagCollection                                                                                            │
│                             s|taskDefinitions|tasks|taxonomies|timedActions|userDefinedObjectTypes|users|variants|wi                                                                                            │
│                             zards|workflowDefinitions|workflows|workspaces}                                                                                                                                     │
│ *    object_name_or_id      TEXT                                                                                      [default: None] [required]                                                                │
│ *    assertions             ASSERTIONS...                                                                             operators: [!~, !=, >=, <=, ~, =, <, >] [default: None] [required]                        │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --in          TEXT  [default: default]                                                                                                                                                                          │
│ --help              Show this message and exit.                                                                                                                                                                 │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
```

---

#### 1. Assertions

```shell
# assert asset id 12345 has metadata field 'value' set to 1 in wb-prod
ftbx assert assets 12345 'metadata.instance.value=1' --in 'wb-prod'

# assert my_action has concurrentJobsLimit set to 0 and lock = NONE
ftbx assert actions my_action "concurrentJobsLimit=0" "configuration.instance.execution-lock-type=NONE"
```

# Retry items

```shell
$ ftbx retry --help
                                                                                                                                                                                                                   
 Usage: ftbx retry OBJECT_TYPE [OPTIONS]                                                                                                                                                       
                                                                                                                                                                                                                   
 Retries object instances in an environment either from API filters or from a file (csv or json).                                                                                                                  
 - ftbx retry jobs --in 'cs-sbx' # retry all failed jobs                                                                                                                                                             
 - ftbx retry jobs --filters 'name=ftbx-script' 'createdFrom=22 Jul 2024'                                                                                                                                          
 - ftbx retry workflows --file 'lists/failed_workflows.csv' --in 'cs-sbx'                                                                                                                                           
                                                                                                                                                                                                                   
╭─ Arguments ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ *    object_type      OBJECT_TYPE:{jobs|workflows}  [default: None] [required]                                                                                                                                  │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --in             TEXT  [default: default]                                                                                                                                                                       │
│ --filters        TEXT  ex: 'name=ftbx-script' 'createdFrom=22 Jul 2024'                                                                                                                                         │
│ --file           TEXT  ex: 'lists/failed_jobs.csv' 'lists/failed_jobs.json' (from 'ftbx list') [default: None]                                                                                                  │
│ --help                 Show this message and exit.                                                                                                                                                              │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
```

---

### 1. Retry instances

```shell
# "status=Failed" is applied by the command by default 

# retry 5 failed "untar-frames" jobs with query
ftbx retry jobs --filters "name=untar-frames" "limit=5"

# retry all failed "untar-frames" jobs
ftbx retry jobs --filters "name=untar-frames"

# retry **ALL** failed jobs/workflows
ftbx retry jobs
ftbx retry workflows

# retry all failed jobs from a CSV file (CSV file must contain the "id" column)
ftbx retry jobs --file "failed_jobs.csv"

# retry all failed workflows from a JSON file (JSON file must be made of a dict for each instance, with a "id" key within each dict)
ftbx retry workflows --file "failed_workflows.json"

# LIST + RETRY flow
ftbx list jobs --filters "status=Failed" "name=untar-frames" --name "list" # this will create a JSON and CSV file with the failed items 
ftbx retry jobs --file "lists/list.json" # same as below
ftbx retry jobs --file "lists/list.csv" # same as above
```

# Launch instances & custom scripts

```shell
$ ftbx launch --help
                                                                                                                                                                                                                   
 Usage: ftbx launch OBJECT_TYPE OBJECT_NAME [OPTIONS]                                                                                                                                         
                                                                                                                                                                                                                   
 Launches a job or workflow with the given parameters.                                                                                                                                                             
 - ftbx launch jobs 'ftbx-script' --params 'assetId=12345' 'workspaceId=303' --in 'cs-sbx' --listen                                                                                                                   
 - ftbx launch workflows 'ftbx-workflow' --params 'assetId=12345' --in 'cs-sbx'                                                                                                                                        
 - ftbx launch jobs 'ftbx-script' --use-local --listen # push local config before launching                                                                                                                     
                                                                                                                                                                                                                   
╭─ Arguments ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ *    object_type      OBJECT_TYPE:{jobs|workflows}  [default: None] [required]                                                                                                                                  │
│ *    object_name      TEXT                          [default: None] [required]                                                                                                                                  │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --in                             TEXT  [default: default]                                                                                                                                                       │
│ --params                         TEXT  ex: 'assetId=1234' 'workspaceId=303'                                                                                                                                     │
│ --from-file                      TEXT  ex: 'payload.json' [default: None]                                                                                                                                       │
│ --use-local    --no-use-local          Whether to push local config before launching the instance [default: no-use-local]                                                                                       │
│ --listen       --no-listen             Whether to get the logs of the launched instance in the terminal [default: no-listen]                                                                                    │
│ --help                                 Show this message and exit.                                                                                                                                              │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
```

---

### 1. Launch instances

```shell
# launch a check-end-node-wf job
ftbx launch jobs "check-end-node-wf"

# launch a check-end-node-wf job in wb-dev
ftbx launch jobs "check-end-node-wf" --in "wb-dev"

# launch and listen to a check-end-node-wf in wb-dev
ftbx launch jobs "check-end-node-wf" --in "wb-dev" --listen

# launch a check-end-node-wf on asset id 809, in workspace id 303
ftbx launch jobs "check-end-node-wf" --params "assetId=809" "workspaceId=303"

# launch a check-end-node-wf on asset id 809 from file launch_config.json
# launch_config.json:
# {
#   "assetId"=809,
#   "workspaceId"=303
# } 
ftbx launch jobs "check-end-node-wf" --from-file "launch_config.json"

# launch a check-end-node-wf with your local configuration on asset id 809
ftbx launch jobs "check-end-node-wf" --params "assetId=809" --use-local
```

---

# Workflow Designer

```shell
$ ftbx workflowDesigner --help
                                                                                                                                                                                                                   
 Usage: ftbx workflowDesigner WORKFLOW_NAME [OPTIONS]                                                                                                                                                           
                                                                                                                                                                                                                   
 Opens the workflow designer for a given workflow in an environment.                                                                                                                                               
 -ftbx workflow_designer 'ftbx-workflow' --in 'cs-sbx'                                                                                                                                                               
                                                                                                                                                                                                                   
╭─ Arguments ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ *    workflow_name      TEXT  [default: None] [required]                                                                                                                                                        │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --in          TEXT  [default: default]                                                                                                                                                                          │
│ --help              Show this message and exit.                                                                                                                                                                 │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
```

---

### 1. Open workflow designer

```shell
# open workflow designer in default environment
ftbx workflowDesigner "Get or compute asset checksum"

# open workflow designer in wb-stg environment
ftbx workflowDesigner "Get or compute asset checksum" --in "wb-stg"
```

# Metadata Designer

```shell
$ ftbx metadataDesigner --help
                                                                                                                                                                                                                   
 Usage: ftbx metadataDesigner [OPTIONS]                                                                                                                                                                         
                                                                                                                                                                                                                   
 Opens the metadata designer in your default web browser.                                                                                                                                                          
 - ftbx metadataDesigner  # in default environment                                                                                                                                                                 
 - ftbx metadataDesigner --in 'cs-sbx'                                                                                                                                                                               
                                                                                                                                                                                                                   
╭─ Options ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --in          TEXT  [default: default]                                                                                                                                                                          │
│ --help              Show this message and exit.                                                                                                                                                                 │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
```

---

### 1. Open metadata designer

```shell
# open metadata designer in default environment
ftbx metadataDesigner

# open metadata designer in wb-stg environment
ftbx workflowDesigner --in "wb-stg"
```

# ERRORS & FIXES

### Self-signed certificates
```shell
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:1006)
```
Fix: see [4. Connect to self-signed environments](#4-connect-to-self-signed-environments)

---

# CONTACTS

David NAISSE - [dnaisse@dalet.com](dnaisse@dalet.com)

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "ftbx",
    "maintainer": "David NAISSE",
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": "dnaisse@dalet.com",
    "keywords": null,
    "author": "David NAISSE",
    "author_email": "dnaisse@dalet.com",
    "download_url": "https://files.pythonhosted.org/packages/43/6c/cb87b1263177295ab271e5ababa15167d6cf22a70e5523147ee54c2164d3/ftbx-0.1.dev373.tar.gz",
    "platform": null,
    "description": "# FTBX - FLEX TOOLBOX\n\nJust trying to make flex operations faster for all teams.\n\n## Table of Contents\n\n  - [Requirements](#requirements)  \n  - [Installation](#installation)  \n    - [Windows](#windows)  \n    - [Linux](#linux)  \n    - [macOS](#macos)\n  - [Usage](#usage)\n    - [ftbx update](#update)\n    - [ftbx connect](#connect)  \n    - [ftbx setup](#setup)\n    - [ftbx query](#raw-queries)  \n    - [ftbx list](#list-items)  \n    - [ftbx pull](#pull-items)  \n    - [ftbx create](#create-items)\n    - [ftbx push](#push-items)  \n    - [ftbx fail](#fail-items)\n    - [ftbx restore](#restore-items)  \n    - [ftbx compare](#compare-items)  \n    - [ftbx assert](#assert)\n    - [ftbx retry](#retry-items)  \n    - [ftbx launch](#launch-instances--custom-scripts)  \n    - [ftbx workflowDesigner](#workflow-designer)\n    - [ftbx metadataDesigner](#metadata-designer)\n  - [Errors & fixes](#errors--fixes)  \n    - [SSLCertVerificationError](#self-signed-certificates)  \n  - [Contact](#contacts)  \n\n## __Bug/Feature Bounty Hunters__\n\n| Bounty Hunter          | Bugs found | Features suggested | PR merged | Bounties |\n|------------------------|------------|--------------------|-----------|----------|\n| **Elouan GOUINGUENET** | 1          | 5                  | 1         | 7        |\n| **Guillaume GAY**      | 1          | 2                  | 0         | 3        |\n| **Gustavo BONASSO**    | 2          | 0                  | 1         | 3        |\n| **Hugo TALBOT**        | 0          | 1                  | 1         | 2        |\n| **Bowen ZHANG**        | 1          | 0                  | 0         | 1        |\n| **Julius SANTUA**      | 0          | 1                  | 0         | 1        |\n| **R\u00e9mi MARCHAND**      | 1          | 0                  | 0         | 1        |\n| **TOTAL**              | **6**      | **9**              | **3**     | **18**   |\n\n> See HUNT.md for full history\n\n# REQUIREMENTS\n\n#### [Git (click here to download)](https://git-scm.com/downloads)\n\n#### [Python 3.10 (click here to download)](https://www.python.org/downloads/release/python-31011/)\n\n***\n\n# INSTALLATION\n\n## Install python\n\n#### Windows\n\n* link above\n\n#### Linux\n\n```shell\nsudo apt install python3-pip\n```\n\n#### macOS\n\n```shell\nbrew install python\n```\n\n## Install FTBX\n\n```shell\npip install ftbx\nftbx init\n```\n\n## Configure autocompletion\n\n```shell\nftbx --install-completion\n```\n\nThen open a new terminal and you will get autocompletions by pressing 'tab'.\n\n## Update FTBX\n\n```shell\nftbx update\n```\n\n# USAGE\n\nYou can use the flag `--help` with any command to show the command arguments (see below).  \n\n```shell\n$ ftbx --help\n                                                                                                                               \n Usage: ftbx COMMAND [ARGS] [OPTIONS]...                                                                                    \n                                                                                                                               \n\u256d\u2500 Options \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 --install-completion          Install completion for the current shell.                                                     \u2502\n\u2502 --show-completion             Show completion for the current shell, to copy it or customize the installation.              \u2502\n\u2502 --help                        Show this message and exit.                                                                   \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n\u256d\u2500 Commands \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 assert             Asserts some statement(s) or condition(s). Returns 'True' or 'False'.                                    \u2502\n\u2502 compare            Compares objects between environments. Saves the result(s) in 'compare_env1_env2/'.                      \u2502\n\u2502 connect            Connects to an environment. Environment file is located at '~/.ftbx/environments'.                       \u2502\n\u2502 create             Creates templated objects in an environment.                                                             \u2502\n\u2502 env                Displays all available environments and their urls, aliases, versions and usernames.                     \u2502\n\u2502 fail               Fail object instances (requirements: connection to the servers and `consul_host`/`consul_token`)         \u2502\n\u2502 init               Initializes the flex-toolbox. This is the first command you must run upon installation.                  \u2502\n\u2502 launch             Launches a job or workflow with the given parameters.                                                    \u2502\n\u2502 list               Lists objects from an environment. Saves the results as CSV and JSON files in 'lists/'.                  \u2502\n\u2502 metadataDesigner   Opens the metadata designer in your default web browser.                                                 \u2502\n\u2502 pull               Pulls objects from environment(s) as files and folders.                                                  \u2502\n\u2502 push               Creates or updates objects in one of multiple environments. Generates backups before pushing.            \u2502\n\u2502 query              Queries an environment, useful as postman replacement. Saves the results in 'query.json'.                \u2502\n\u2502 restore            Restores objects to a previous point in time.                                                            \u2502\n\u2502 retry              Retries object instances in an environment either from API filters or from a file (csv or json).         \u2502\n\u2502 setup              Setup the API documentation (in 'docs/') and the SDK (in 'sdks/') for a given flex version.              \u2502\n\u2502 update             Updates the toolbox to the latest version.                                                               \u2502\n\u2502 workflowDesigner   Opens the workflow designer for a given workflow in an environment.                                      \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n```\n\n```shell\n$ ftbx retry --help\n                                                                                                                               \n Usage: ftbx retry OBJECT_TYPE [OPTIONS]                                                                   \n                                                                                                                               \n Retries object instances in an environment either from API filters or from a file (csv or json).                              \n - ftbx retry jobs --in cs-sbx # retry all failed jobs                                                                         \n - ftbx retry jobs --filters 'name=ftbx-script' 'createdFrom=22 Jul 2024'                                                      \n - ftbx retry workflows --file 'lists/failed_workflows.csv' --in cs-sbx                                                        \n                                                                                                                               \n\u256d\u2500 Arguments \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 *    object_type      OBJECT_TYPE:{jobs|workflows}  [default: None] [required]                                              \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n\u256d\u2500 Options \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 --in             TEXT  [default: default]                                                                                   \u2502\n\u2502 --filters        TEXT  ex: 'name=ftbx-script' 'createdFrom=22 Jul 2024'                                                     \u2502\n\u2502 --file           TEXT  ex: 'lists/failed_jobs.csv' 'lists/failed_jobs.json' (from 'ftbx list') [default: None]              \u2502\n\u2502 --help                 Show this message and exit.                                                                          \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n```\n\n# Update\n\n```shell\n$ ftbx update\n```\n\nThis command fetches the latest version of the toolbox.\n\n# Connect\n\n```shell\n$ ftbx connect --help\n                                                                                                                               \n Usage: ftbx connect ENV_OR_URL [USERNAME] [PASSWORD] [OPTIONS]                                                             \n                                                                                                                               \n Connects to an environment. Environment file is located at '~/.ftbx/environments'.                                            \n - ftbx connect 'https://sandbox.flex.support.dalet.cloud' my_user --alias cs-sbx --version 2024.5.0  # first time             \n - ftbx connect cs-sbx  # once you successfully connected                                                                      \n                                                                                                                               \n\u256d\u2500 Arguments \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 *    env_or_url      TEXT        ex: https://sandbox.flex.support.dalet.cloud [default: None] [required]                    \u2502\n\u2502      username        [USERNAME]  [default: None]                                                                            \u2502\n\u2502      password        [PASSWORD]  [default: None]                                                                            \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n\u256d\u2500 Options \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 --alias          TEXT  ex: cs-sbx, wb-prod [default: None]                                                                  \u2502\n\u2502 --version        TEXT  ex: 2022.5.7, 2024.4.5 [default: latest]                                                             \u2502\n\u2502 --help                 Show this message and exit.                                                                          \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n```\n\n> Note: If you're looking for how to connect to self-signed environments, see [here](#4-connect-to-self-signed-environments).\n\n---\n\n#### 1. Connect to a new environment\n\n```shell\n# connect without showing password (will prompt you to input password and hide characters)\nftbx connect \"https://devstaging.flex.daletdemos.com\" \"username\" --alias \"devstaging\" --version \"2022.5.7\"\n\n# connect with plain password\nftbx connect \"https://devstaging.flex.daletdemos.com\" \"username\" \"my_password\" --alias \"devstaging\"\n```\n\n---\n\n#### 2. Connect to a known environment (must be in `~/.ftbx/environments`)\n\n```shell\nftbx connect \"devstaging\"\n\nftbx connect \"cs-sbx\"\n```\n\n---\n\n#### 3. Display available default environments\n\n```shell\nftbx env\n```\n\n```shell\nDEFAULT       ALIAS       VERSION                          URL                             USERNAME  \n   -           ae-preprod   latest           https://master.preprod.flex.aenetworks.com    masteruser\n   -              ae-prod   latest                   https://master.flex.aenetworks.com    masteruser\n   -           crown-prod   latest                 https://master.crownmedia.ooflex.net    masteruser\n   -    cs-sandbox-master   latest           https://master.flex.support.cs.dalet.cloud    masteruser\n   X               cs-sbx   latest          https://sandbox.flex.support.cs.dalet.cloud       dnaisse\n   -              fm-prod   latest                 https://master.firstmedia.ooflex.net    masteruser\n   -             hbo-prod   latest                        https://master.hbo.ooflex.net    masteruser\n   -               hm-dev   latest https://development.flex-dev.cloud.hallmarkmedia.com       dnaisse\n   -              hm-prod   latest https://production.flex-prod.cloud.hallmarkmedia.com       dnaisse\n   -             ioc-prod   latest                   https://cio.images-mam.olympic.org dalet_support\n   -             mbn-prod   latest                     https://master.flex.mbn-news.com    masteruser\n   -             mse-prod   latest             https://master.prod.monumentalsports.com    masteruser\n   -            pbsd-prod   latest                         https://master.colo.pbsd.org    masteruser\n   -         peloton-prod   latest                      https://prod.mam.onepeloton.com       dnaisse\n   -               wb-dev 2022.5.8            https://portal.dev.archive.warnerbros.com       dnaisse\n   -              wb-prod 2022.5.7                 https://vault.archive.warnerbros.com       dnaisse\n   -               wb-stg 2022.5.7             https://vault.stg.archive.warnerbros.com       dnaisse\n```\n\n#### 4. Connect to self-signed environments\n\nEnvironments deployed with a self-signed certificate are not trusted by default. In order to trust this certification authority, set the environment variable `REQUESTS_CA_BUNDLE` to the path to the certificate of the root certification authority. Like:\n\n```shell\n# POSIX\nexport REQUESTS_CA_BUNDLE=/path/to/cert\n\n# Windows - PowerShell\nSet-Item Env:REQUESTS_CA_BUNDLE \"path\\to\\cert\"\n```\n\n#### Download Flex root certificate authority certificate\n\nThis can be done with most web browser. But here is a command for POSIX system.\n\n```shell\necho quit | openssl s_client -showcerts -servername \"devstaging.flex.daletdemos.com\" -connect devstaging.flex.daletdemos.com:443 > cacert.pem\n```\n\n# Setup\n\n```shell\n$ ftbx setup --help\n                                                                                                                               \n Usage: ftbx setup [OPTIONS]                                                                                                \n                                                                                                                               \n Setups the API documentation (in 'docs/') and the SDK (in 'sdks/') for a given flex version.                                  \n - ftbx setup --version latest                                                                                                           \n - ftbx setup --version 2022.5.7                                                                                                         \n                                                                                                                               \n\u256d\u2500 Options \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 --version        TEXT  [default: latest]                                                                                    \u2502\n\u2502 --help                 Show this message and exit.                                                                          \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n```\n\n> Note: you have to be connected to the `dlt-fw-uk-UDP4-1120-full-config` VPN to be able to retrieve the SDK.\n\n---\n\n#### 1. Setup\n\n```shell\n# 2022.5.7\nftbx setup --version \"2022.5.7\"\n\n# latest\nftbx setup --version \"latest\"\n```\n\n# Raw Queries\n\n```shell\n$ ftbx query --help\n                                                                                                                                                                                                                   \n Usage: ftbx query METHOD URL [OPTIONS]                                                                                                                                                   \n                                                                                                                                                                                                                   \n Queries an environment, useful as postman replacement. Saves the results in 'query.json'.                                                                                                                         \n - ftbx query GET 'assets/12345/annotations'                                                                                                                                                                         \n - ftbx query POST 'actions/3332/actions' --payload 'action=disable'  # disable an action                                                                                                                            \n - ftbx query GET 'collections' --from 'cs-sbx'                                                                                                                                                                        \n                                                                                                                                                                                                                   \n\u256d\u2500 Arguments \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 *    method      METHOD:{GET|POST|PUT|DELETE}  [default: None] [required]                                                                                                                                       \u2502\n\u2502 *    url         TEXT                          ex: 'assets/1234/annotations' 'actions/3332/configuration' [default: None] [required]                                                                            \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n\u256d\u2500 Options \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 --from                      TEXT  [default: default]                                                                                                                                                            \u2502\n\u2502 --payload                   TEXT  ex: 'action=enable' 'action=disable' or 'payload.json'                                                                                                                        \u2502\n\u2502 --stdout     --no-stdout          Whether to display the result in the terminal [default: no-stdout]                                                                                                            \u2502\n\u2502 --help                            Show this message and exit.                                                                                                                                                   \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n```\n\n---\n\n#### 1. Query absolutely everything\n\n```shell\n# GET\nftbx query GET \"actions/410\"\n# Env alias\nftbx query GET \"actions/410\" --from \"cs-sbx\"\n# Print query response to terminal\nftbx query GET \"actions/410\" --stdout\n\n# POST/PUT (same args as above, plus --payload)\nftbx query PUT \"actions/410/configuration\" --payload \"payload.json\"\n\n# Cancel a failed job with command line arguments\nftbx query POST \"jobs/1213/actions\" --payload \"action=cancel\"\n```\n\n# List items\n\n```shell\n$ ftbx list --help\n                                                                                                                                                                                                                   \n Usage: ftbx list OBJECT_TYPE [OPTIONS]                                                                                                                                                            \n                                                                                                                                                                                                                   \n Lists objects from an environment. Saves the results as CSV and JSON files in 'lists/'.                                                                                                                           \n - ftbx list actions  # list all actions                                                                                                                                                                           \n - ftbx list jobs --filters 'status=Failed' 'name=ftbx-script' --from 'cs-sbx' --name 'failed_cs-sbx_jobs'                                                                                                               \n - ftbx list actions --post-filters 'concurrentJobsLimit>0' --from 'cs-sbx'  # all actions with concurrency > 0                                                                                                      \n - ftbx list assets --filters 'fql=(name~PACKAGE and deleted=false)' --name 'live_packages'  # using fql                                                                                                           \n                                                                                                                                                                                                                   \n\u256d\u2500 Arguments \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 *    object_type      OBJECT_TYPE:{accounts|actions|assets|collections|eventHandlers|events|groups|jobs|messageTe  [default: None] [required]                                                                   \u2502\n\u2502                       mplates|metadataDefinitions|objectTypes|profiles|quotas|resources|roles|tagCollections|task                                                                                               \u2502\n\u2502                       Definitions|tasks|taxonomies|timedActions|userDefinedObjectTypes|users|variants|wizards|wor                                                                                               \u2502\n\u2502                       kflowDefinitions|workflows|workspaces}                                                                                                                                                    \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n\u256d\u2500 Options \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 --filters             TEXT  ex: 'status=Running' 'name=asset_name'                                                                                                                                              \u2502\n\u2502 --post-filters        TEXT  ex: 'configuration.instance.execution-lock-type=NONE' 'concurrentJobsLimit>0'                                                                                                       \u2502\n\u2502 --from                TEXT  [default: default]                                                                                                                                                                  \u2502\n\u2502 --from-csv            TEXT  ex: 'lists/asset_list.csv' [default: None]                                                                                                                                            \u2502\n\u2502 --name                TEXT  Name under which the JSON and CSV files should be saved [default: None]                                                                                                             \u2502\n\u2502 --help                      Show this message and exit.                                                                                                                                                         \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n```\n\n---\n\n#### 1. List anything\n\n  ```shell\n  # List all actions \n  ftbx list actions\n\n  # List all assets with fql in the default env\n  ftbx list assets --filters \"fql=(mimetype~mp4)\" --name \"mp4Assets\"\n\n  # List all assets with fql from wb-stg\n  ftbx list assets --filters \"fql=(mimetype~mp4)\" --name \"mp4Assets\" --from wb-dev\n  \n  # List 5 jobs in a failed status \n  ftbx list jobs --filters \"status=Failed\" \"limit=5\" --name \"failedJobs\"\n  \n  # List scripts that contains \"createJob\"\n  ftbx list actions --filters \"type=script\" --post-filters \"configuration.instance[text]~createJob\"\n  \n  # List jobs for which the last (-1) history message is an error message containing \"getName()\" in its stackTrace\n  ftbx list jobs --filters \"name=basic-long-running-action\" --post-filters \"history.events[-1].stackTrace~getName()\"\n  \n  # List all actions with concurrency > 0 from default env\n  ftbx list actions --post-filters \"concurrentJobsLimit>0\" --name \"jobsWithConcurrentLimit\"\n\n  # List workflows that completed, and get some metadata fields from the asset the workflow was on\n  ftbx list workflows --filters \"name=my_workflow\" \"status=Completed\" --post-filters \"asset.metadata.instance.general-info.sha1!=None\" \"asset.fileInformation.currentLocation!=None\"\n  \n  # List all workflows in a corrupted state\n  ftbx list workflows --filters \"status=Running\" --post-filters \"jobs.jobs[-1].status!=Running\"\n\n  # List events of type 'Login Failed' from April 1, 2024 to May 14, 2024\n  ftbx list events --filters \"eventType=Login Failed\" \"from=01 Apr 2024\" \"to=14 May 2024\"\n  \n  # List account properties\n  ftbx list accountProperties --from \"cs-sbx\"\n  ```\n  \n> Note: FQL search has a max number of results of 10 000, so if you need any more than that, you will have to split your FQL search in multiples other ones.\n\n# Pull items\n\n```shell\n$ ftbx pull --help\n                                                                                                                                                                                                                   \n Usage: ftbx pull OBJECT_TYPE [OPTIONS]                                                                                                                                                         \n                                                                                                                                                                                                                   \n Pulls objects from environment(s) as files and folders.                                                                                                                                                           \n - ftbx pull jobs 12345 --from 'cs-sbx'  # pull job 12345\n - ftbx pull all --from 'wb-dev' 'wb-stg' 'wb-prod' # pull every config objects                                                                                                                                          \n - ftbx pull actions  # pull all actions                                                                                                                                                                           \n - ftbx pull workflowDefinitions --filters 'name=ftbx-workflow' --from 'cs-sbx' --with-dependencies                                                                                                                    \n - ftbx pull workflowDefinitions ftbx-workflow --from 'cs-sbx' --with-dependencies  # same as above\n                                                                                                                                                                                                                   \n\u256d\u2500 Arguments \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 *    object_type            OBJECT_TYPE:{all|accounts|actions|assets|collections|eventHandlers|e  [default: None] [required]                                           \u2502\n\u2502                             vents|groups|jobs|messageTemplates|metadataDefinitions|objectTypes|p                                                                       \u2502\n\u2502                             rofiles|quotas|resources|roles|tagCollections|taskDefinitions|tasks|                                                                       \u2502\n\u2502                             taxonomies|timedActions|userDefinedObjectTypes|users|variants|wizard                                                                       \u2502\n\u2502                             s|workflowDefinitions|workflows|workspaces}                                                                                                \u2502\n\u2502      object_name_or_id      [OBJECT_NAME_OR_ID]                                                   [default: None]                                                      \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n\u256d\u2500 Options \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 --filters                                        TEXT  ex: 'status=Running' 'name=asset_name'                                                                          \u2502\n\u2502 --post-filters                                   TEXT  ex: 'configuration.instance.execution-lock-type=NONE' 'concurrentJobsLimit>0'                                   \u2502\n\u2502 --from                                           TEXT  [default: default]                                                                                              \u2502\n\u2502 --with-dependencies    --without-dependencies          Whether to also pull the objects dependencies [default: without-dependencies]                                   \u2502\n\u2502 --help                                                 Show this message and exit.                                                                                     \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n```\n\n---\n\n#### 1. Pull anything\n\n```shell\n# Pull **ALL** actions\nftbx pull actions # default env\nftbx pull actions --from \"wb-stg\"\n\n# Pull actions matching filters\nftbx pull actions --filters \"name=set-asset-metadata\" --from \"wb-stg\"\nftbx pull actions --filters \"id=309\" # default env\nftbx pull actions --filters \"enabled=true\" # default env\nftbx pull actions --filters \"type=script\" --from \"wb-stg\"\nftbx pull actions --filters \"type=script\" \"enabled=true\" # default env\n\n# Pull **ALL**\nftbx pull all\nftbx pull all --from \"wb-stg\"\n\n# Pull env actions with dependencies\nftbx pull actions --with-dependencies # default env\n\n# Pull all actions where script contains \"context.asset.id\"\nftbx pull actions --post-filters \"configuration.instance[text]~context.asset.id\"\n\n# Pull workflow definitions with dependencies\nftbx pull workflowDefinitions --filters \"name=ingest-workflow\" --with-dependencies\n\n# Pull actions from several envs at the same time\nftbx pull actions --from \"wb-dev\" \"wb-stg\" \"wb-prod\" --filters \"name=set-asset-metadata\"\n\n# Pull account properties\nftbx pull accountProperties --from \"cs-sbx\"\n```\n\n# Create items\n\n```shell\n$ ftbx create --help\n                                                                                                                                                                                                                   \n Usage: ftbx create OBJECT_TYPE PLUGIN OBJECT_NAME [OPTIONS]                                                                                                                                                                                \n                                                                                                                                                                                                                   \n Creates templated objects in an environment.                                                                                                                                                                      \n - ftbx create actions script 'my-script' --in cs-sbx                                                                                                                                                              \n - ftbx create actions decision 'my-decision' --in cs-sbx                                                                                                                                                          \n - ftbx create wizards launchWorkflow 'my-launch-workflow-wizard' --in cs-sbx                                                                                                                                      \n - ftbx create accountProperties default 'my-account-property' --in cs-sbx                                                                                                                                      \n                                                                                                                                                                                                                   \n\u256d\u2500 Arguments \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 *    object_type      OBJECT_TYPE:{accountProperties|actions|wizards}  [default: None] [required]                                                                                                               \u2502\n\u2502 *    plugin           PLUGIN:{default|decision|script|launchWorkflow}  [default: None] [required]                                                                                                               \u2502\n\u2502 *    object_name      TEXT                                             [default: None] [required]                                                                                                               \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n\u256d\u2500 Options \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 --in          TEXT  [default: default]                                                                                                                                                                          \u2502\n\u2502 --help              Show this message and exit.                                                                                                                                                                 \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n```\n\n---\n\n#### 1. Create items\n\n```shell\n# Create a script action in default environment\nftbx create actions script \"set-asset-metadata\"\n\n# Create a script action in a specific environment\nftbx create actions script \"set-asset-metadata\" --in \"wb-stg\"\n\n# Create a decision action \nftbx create actions decision \"check-asset-status\" --in \"wb-stg\"\n\n# Create a launchWorkflow wizard\nftbx create wizards launchWorkflow \"launch-my-workflow\"\n```\n\n# Push items\n\n```shell\n$ ftbx push --help\n                                                                                                                                                                                                                   \n Usage: ftbx push OBJECT_TYPE OBJECT_NAMES... [OPTIONS]                                                                                                                                             \n                                                                                                                                                                                                                   \n Creates or updates objects in one or multiple environments. Generates backups before pushing.                                                                                                                     \n - ftbx push actions 'ftbx-script' --push-to-failed-jobs 'all'  # update action and push to all failed jobs                                                                                                                  \n - ftbx push actions 'ftbx-script' 'ftbx-decision'  # update two actions                                                                                                                                           \n - ftbx push actions 'ftbx-script' --from 'wb-dev' --to 'wb-stg' 'wb-prod'  # create action in stg and prod                                                                                                        \n - ftbx push workflowDefinitions 'ftbx-workflow' --from 'wb-dev' --to 'wb-stg' --with-dependencies  # with dependencies                                                                                            \n                                                                                                                                                                                                                   \n\u256d\u2500 Arguments \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 *    object_type       OBJECT_TYPE:{accounts|actions|assets|eventHandlers|groups|jobs|messageTemplates|metadataDef  [default: None] [required]                                                                  \u2502\n\u2502                        initions|profiles|quotas|resources|roles|taskDefinitions|tasks|timedActions|userDefinedObje                                                                                              \u2502\n\u2502                        ctTypes|users|variants|wizards|workflowDefinitions|workflows|workspaces}                                                                                                                 \u2502\n\u2502 *    object_names      OBJECT_NAMES...                                                                              [default: None] [required]                                                                  \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n\u256d\u2500 Options \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 --from                                             TEXT  [default: default]                                                                                                                                     \u2502\n\u2502 --to                                               TEXT  [default: default]                                                                                                                                     \u2502\n\u2502 --retry                  --no-retry                      Whether to also retry the given job [default: no-retry]                                                                                                \u2502\n\u2502 --listen                 --no-listen                     Whether to get the logs of the job in the terminal [default: no-listen]                                                                                \u2502\n\u2502 --push-to-failed-jobs                              TEXT  'all' OR csv file containing failed jobs to push the config to and retry (from 'ftbx list') [default: None]                                            \u2502\n\u2502 --with-dependencies      --without-dependencies          Whether to also push the objects dependencies [default: without-dependencies]                                                                          \u2502\n\u2502 --help                                                   Show this message and exit.                                                                                                                            \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n```\n\n---\n\n#### 1. Push anything\n\n```shell\n# Push action to an env\nftbx push actions check-end-node-wf # from default env to default env\n\n# Push job and retry it (yes, you can pull jobs directly and tweak their code in your IDE)\nftbx push jobs 294036 --retry\n\n# Push job, retry it but also LISTEN to it (logs will appear in your terminal)\nftbx push jobs 294036 --retry --listen\n\n# Push updated action to **ALL** corresponding failed jobs and retry them\nftbx push actions \"check-end-node-wf\" --push-to-failed-jobs \"all\"\n\n# Push updated action to failed jobs contained in .CSV or .JSON and retry them\nftbx push actions \"check-end-node-wf\" --push-to-failed-jobs \"failed_jobs.csv\"\nftbx push actions \"check-end-node-wf\" --push-to-failed-jobs \"failed_jobs.json\"\n\n# LIST + PUSH with RETRY flow: push & retry failed jobs created after given date\nftbx list jobs --filters \"name=check-end-node-wf\" \"createdFrom=20 Dec 2023\"\nftbx push actions \"check-end-node-wf\" --push-to-failed-jobs \"list.json\"\nftbx push actions \"check-end-node-wf\" --push-to-failed-jobs \"list.csv\"\n\n# Push (create, or update) action from wb-dev to wb-stg AND wb-prod (yes)\nftbx push actions \"set-asset-metadata\" --from \"wb-dev\" --to \"wb-stg\" \"wb-prod\"  \n\n# Push/update workflow definition WITHOUT updating the resources configuration\nftbx push workflowDefinitions \"Get Or Compute Asset Checksum\" --from \"templates\" --to \"cs-sandbox-ovh-flex-config\" --with-dependencies\n\n# Push workflow definition with ALL its dependencies (actions, resources...)\nftbx push workflowDefinitions \"Get Or Compute Asset Checksum\" --from \"templates\" --to \"cs-sandbox-ovh-flex-config\" --with-dependencies --include-resources\n\n# Push accountProperties\nftbx push accountProperties \"my-account-property\"\n```\n\n# Fail items\n\n```shell\n$ ftbx fail --help\n                                                                                                                                   \n Usage: ftbx fail OBJECT_TYPE [OBJECT_IDS] [OPTIONS]...                                                                  \n                                                                                                                                   \n Fail object instances (requires to be connected to the servers and `consul_host` and `consul_token` in `~/.ftbx/environments`).                                  \n - ftbx fail jobs 1234 5678 91011  # fail the 3 jobs in the default environment                                                    \n - ftbx fail jobs --from-file 'lists/failed_jobs.csv'                                                                              \n - ftbx fail jobs --from-file 'lists/failed_jobs.json'                                                                             \n                                                                                                                                   \n\u256d\u2500 Arguments \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 *    object_type      OBJECT_TYPE:{jobs}  [default: None] [required]                                                            \u2502\n\u2502      object_ids       [OBJECT_IDS]...     [default: None]                                                                       \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n\u256d\u2500 Options \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 --from-file        TEXT  ex: 'lists/failed_jobs.csv [default: None]                                                             \u2502\n\u2502 --in               TEXT  [default: default]                                                                                     \u2502\n\u2502 --help                   Show this message and exit.                                                                            \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n```\n\n---\n\n#### 1. Fail instances \n\n```shell\n# Fail a job with id 12345\nftbx fail jobs 12345\n\n# Fail multiple jobs\nftbx fail jobs 1234 5678 91011\n\n# Fail jobs from file\nftbx fail jobs --from-file 'lists/failed_jobs.csv'\nftbx fail jobs --from-file 'lists/failed_jobs.json'\n```\n\n# Restore items\n\n```shell\n$ ftbx restore --help\n                                                                                                                                                                                                                   \n Usage: ftbx restore OBJECT_TYPE OBJECT_NAME BACKUP_NAME [OPTIONS]                                                                                                                                          \n                                                                                                                                                                                                                   \n Restores objects to a previous point in time.                                                                                                                                                                     \n - ftbx restore actions 'ftbx-script' '2024-08-30 09h50m38s' --in 'cs-sbx'                                                                                                                                           \n - ftbx restore assets 12345 '2024-07-23 09h50m38s' --in 'cs-sbx'                                                                                                                                                    \n                                                                                                                                                                                                                   \n\u256d\u2500 Arguments \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 *    object_type      OBJECT_TYPE:{accounts|actions|assets|eventHandlers|groups|jobs|messageTemplates|metadataDef  [default: None] [required]                                                                   \u2502\n\u2502                       initions|profiles|quotas|resources|roles|taskDefinitions|tasks|timedActions|userDefinedObje                                                                                               \u2502\n\u2502                       ctTypes|users|variants|wizards|workflows|workspaces}                                                                                                                                      \u2502\n\u2502 *    object_name      TEXT                                                                                         [default: None] [required]                                                                   \u2502\n\u2502 *    backup_name      TEXT                                                                                         [default: None] [required]                                                                   \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n\u256d\u2500 Options \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 --in          TEXT  [default: default]                                                                                                                                                                          \u2502\n\u2502 --help              Show this message and exit.                                                                                                                                                                 \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n```\n\n---\n\n#### 1. Restore backup (in object_type/object_name/backup)\n\n```shell\nftbx restore actions \"set-tech-metadata-dpx\" \"2023-10-10 15h53m43s\" --in \"wb-prod\"\n```\n  \n# Compare items\n\n```shell\n$ ftbx compare --help\n                                                                                                                                                                                                                   \n Usage: ftbx compare OBJECT_TYPE ENVIRONMENTS... [OPTIONS]                                                                                                                                                                          \n                                                                                                                                                                                                                   \n Compares objects between environments. Saves the result(s) in 'compare_env1_env2/'.                                                                                                                               \n - ftbx compare actions 'wb-dev' 'wb-stg' 'wb-prod'  # compare all actions                                                                                                                                               \n - ftbx compare actions 'wb-dev' 'wb-stg' 'wb-prod' --filters 'name=ftbx-script'                                                                                                                                           \n - ftbx compare metadataDefinitions 'wb-stg' 'wb-prod' --filters 'name=Asset'                                                                                                                                            \n                                                                                                                                                                                                                   \n\u256d\u2500 Arguments \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 *    object_type       OBJECT_TYPE:{accounts|actions|eventHandlers|groups|messageTemplates|metadataDefinitions|obj  [default: None] [required]                                                                  \u2502\n\u2502                        ectTypes|profiles|quotas|resources|roles|tagCollections|taskDefinitions|taxonomies|timedAct                                                                                              \u2502\n\u2502                        ions|userDefinedObjectTypes|users|variants|wizards|workflowDefinitions|workspaces}                                                                                                       \u2502\n\u2502 *    environments      ENVIRONMENTS...                                                                              [default: None] [required]                                                                  \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n\u256d\u2500 Options \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 --filters        TEXT                                                                                                                                                                                           \u2502\n\u2502 --help                 Show this message and exit.                                                                                                                                                              \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n```\n\n---\n\n#### 1. Compare items\n\n```shell\n# Compare action \"check-end-node-wf\" between wb-dev, wb-stg and wb-prod\nftbx compare actions \"wb-dev\" \"wb-stg\" \"wb-prod\" --filters \"name=check-end-node-wf\"\n\n# Compare **ALL** actions between wb-dev, wb-stg and wb-prod\nftbx compare actions \"wb-dev\" \"wb-stg\" \"wb-prod\"\n```\n\n# Assert\n\n```shell\n$ ftbx assert --help\n                                                                                                                                                                                                                   \n Usage: ftbx.py assert OBJECT_TYPE OBJECT_NAME_OR_ID ASSERTIONS... [OPTIONS]                                                                                                                                                           \n                                                                                                                                                                                                                   \n Asserts some statement(s) or condition(s). Returns 'True' or 'False'.                                                                                                                                             \n - ftbx assert assets 12345 'deleted!=True'                                                                                                                                                                        \n - ftbx assert actions ftbx-script 'concurrentJobsLimit>0'                                                                                                                                                         \n - ftbx assert actions ftbx-script 'configuration.instance.execution-lock-type=NONE'                                                                                                                               \n                                                                                                                                                                                                                   \n\u256d\u2500 Arguments \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 *    object_type            OBJECT_TYPE:{accounts|actions|assets|collections|eventHandlers|events|groups|jobs|messag  [default: None] [required]                                                                \u2502\n\u2502                             eTemplates|metadataDefinitions|objectTypes|profiles|quotas|resources|roles|tagCollection                                                                                            \u2502\n\u2502                             s|taskDefinitions|tasks|taxonomies|timedActions|userDefinedObjectTypes|users|variants|wi                                                                                            \u2502\n\u2502                             zards|workflowDefinitions|workflows|workspaces}                                                                                                                                     \u2502\n\u2502 *    object_name_or_id      TEXT                                                                                      [default: None] [required]                                                                \u2502\n\u2502 *    assertions             ASSERTIONS...                                                                             operators: [!~, !=, >=, <=, ~, =, <, >] [default: None] [required]                        \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n\u256d\u2500 Options \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 --in          TEXT  [default: default]                                                                                                                                                                          \u2502\n\u2502 --help              Show this message and exit.                                                                                                                                                                 \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n```\n\n---\n\n#### 1. Assertions\n\n```shell\n# assert asset id 12345 has metadata field 'value' set to 1 in wb-prod\nftbx assert assets 12345 'metadata.instance.value=1' --in 'wb-prod'\n\n# assert my_action has concurrentJobsLimit set to 0 and lock = NONE\nftbx assert actions my_action \"concurrentJobsLimit=0\" \"configuration.instance.execution-lock-type=NONE\"\n```\n\n# Retry items\n\n```shell\n$ ftbx retry --help\n                                                                                                                                                                                                                   \n Usage: ftbx retry OBJECT_TYPE [OPTIONS]                                                                                                                                                       \n                                                                                                                                                                                                                   \n Retries object instances in an environment either from API filters or from a file (csv or json).                                                                                                                  \n - ftbx retry jobs --in 'cs-sbx' # retry all failed jobs                                                                                                                                                             \n - ftbx retry jobs --filters 'name=ftbx-script' 'createdFrom=22 Jul 2024'                                                                                                                                          \n - ftbx retry workflows --file 'lists/failed_workflows.csv' --in 'cs-sbx'                                                                                                                                           \n                                                                                                                                                                                                                   \n\u256d\u2500 Arguments \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 *    object_type      OBJECT_TYPE:{jobs|workflows}  [default: None] [required]                                                                                                                                  \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n\u256d\u2500 Options \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 --in             TEXT  [default: default]                                                                                                                                                                       \u2502\n\u2502 --filters        TEXT  ex: 'name=ftbx-script' 'createdFrom=22 Jul 2024'                                                                                                                                         \u2502\n\u2502 --file           TEXT  ex: 'lists/failed_jobs.csv' 'lists/failed_jobs.json' (from 'ftbx list') [default: None]                                                                                                  \u2502\n\u2502 --help                 Show this message and exit.                                                                                                                                                              \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n```\n\n---\n\n### 1. Retry instances\n\n```shell\n# \"status=Failed\" is applied by the command by default \n\n# retry 5 failed \"untar-frames\" jobs with query\nftbx retry jobs --filters \"name=untar-frames\" \"limit=5\"\n\n# retry all failed \"untar-frames\" jobs\nftbx retry jobs --filters \"name=untar-frames\"\n\n# retry **ALL** failed jobs/workflows\nftbx retry jobs\nftbx retry workflows\n\n# retry all failed jobs from a CSV file (CSV file must contain the \"id\" column)\nftbx retry jobs --file \"failed_jobs.csv\"\n\n# retry all failed workflows from a JSON file (JSON file must be made of a dict for each instance, with a \"id\" key within each dict)\nftbx retry workflows --file \"failed_workflows.json\"\n\n# LIST + RETRY flow\nftbx list jobs --filters \"status=Failed\" \"name=untar-frames\" --name \"list\" # this will create a JSON and CSV file with the failed items \nftbx retry jobs --file \"lists/list.json\" # same as below\nftbx retry jobs --file \"lists/list.csv\" # same as above\n```\n\n# Launch instances & custom scripts\n\n```shell\n$ ftbx launch --help\n                                                                                                                                                                                                                   \n Usage: ftbx launch OBJECT_TYPE OBJECT_NAME [OPTIONS]                                                                                                                                         \n                                                                                                                                                                                                                   \n Launches a job or workflow with the given parameters.                                                                                                                                                             \n - ftbx launch jobs 'ftbx-script' --params 'assetId=12345' 'workspaceId=303' --in 'cs-sbx' --listen                                                                                                                   \n - ftbx launch workflows 'ftbx-workflow' --params 'assetId=12345' --in 'cs-sbx'                                                                                                                                        \n - ftbx launch jobs 'ftbx-script' --use-local --listen # push local config before launching                                                                                                                     \n                                                                                                                                                                                                                   \n\u256d\u2500 Arguments \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 *    object_type      OBJECT_TYPE:{jobs|workflows}  [default: None] [required]                                                                                                                                  \u2502\n\u2502 *    object_name      TEXT                          [default: None] [required]                                                                                                                                  \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n\u256d\u2500 Options \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 --in                             TEXT  [default: default]                                                                                                                                                       \u2502\n\u2502 --params                         TEXT  ex: 'assetId=1234' 'workspaceId=303'                                                                                                                                     \u2502\n\u2502 --from-file                      TEXT  ex: 'payload.json' [default: None]                                                                                                                                       \u2502\n\u2502 --use-local    --no-use-local          Whether to push local config before launching the instance [default: no-use-local]                                                                                       \u2502\n\u2502 --listen       --no-listen             Whether to get the logs of the launched instance in the terminal [default: no-listen]                                                                                    \u2502\n\u2502 --help                                 Show this message and exit.                                                                                                                                              \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n```\n\n---\n\n### 1. Launch instances\n\n```shell\n# launch a check-end-node-wf job\nftbx launch jobs \"check-end-node-wf\"\n\n# launch a check-end-node-wf job in wb-dev\nftbx launch jobs \"check-end-node-wf\" --in \"wb-dev\"\n\n# launch and listen to a check-end-node-wf in wb-dev\nftbx launch jobs \"check-end-node-wf\" --in \"wb-dev\" --listen\n\n# launch a check-end-node-wf on asset id 809, in workspace id 303\nftbx launch jobs \"check-end-node-wf\" --params \"assetId=809\" \"workspaceId=303\"\n\n# launch a check-end-node-wf on asset id 809 from file launch_config.json\n# launch_config.json:\n# {\n#   \"assetId\"=809,\n#   \"workspaceId\"=303\n# } \nftbx launch jobs \"check-end-node-wf\" --from-file \"launch_config.json\"\n\n# launch a check-end-node-wf with your local configuration on asset id 809\nftbx launch jobs \"check-end-node-wf\" --params \"assetId=809\" --use-local\n```\n\n---\n\n# Workflow Designer\n\n```shell\n$ ftbx workflowDesigner --help\n                                                                                                                                                                                                                   \n Usage: ftbx workflowDesigner WORKFLOW_NAME [OPTIONS]                                                                                                                                                           \n                                                                                                                                                                                                                   \n Opens the workflow designer for a given workflow in an environment.                                                                                                                                               \n -ftbx workflow_designer 'ftbx-workflow' --in 'cs-sbx'                                                                                                                                                               \n                                                                                                                                                                                                                   \n\u256d\u2500 Arguments \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 *    workflow_name      TEXT  [default: None] [required]                                                                                                                                                        \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n\u256d\u2500 Options \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 --in          TEXT  [default: default]                                                                                                                                                                          \u2502\n\u2502 --help              Show this message and exit.                                                                                                                                                                 \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n```\n\n---\n\n### 1. Open workflow designer\n\n```shell\n# open workflow designer in default environment\nftbx workflowDesigner \"Get or compute asset checksum\"\n\n# open workflow designer in wb-stg environment\nftbx workflowDesigner \"Get or compute asset checksum\" --in \"wb-stg\"\n```\n\n# Metadata Designer\n\n```shell\n$ ftbx metadataDesigner --help\n                                                                                                                                                                                                                   \n Usage: ftbx metadataDesigner [OPTIONS]                                                                                                                                                                         \n                                                                                                                                                                                                                   \n Opens the metadata designer in your default web browser.                                                                                                                                                          \n - ftbx metadataDesigner  # in default environment                                                                                                                                                                 \n - ftbx metadataDesigner --in 'cs-sbx'                                                                                                                                                                               \n                                                                                                                                                                                                                   \n\u256d\u2500 Options \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 --in          TEXT  [default: default]                                                                                                                                                                          \u2502\n\u2502 --help              Show this message and exit.                                                                                                                                                                 \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n```\n\n---\n\n### 1. Open metadata designer\n\n```shell\n# open metadata designer in default environment\nftbx metadataDesigner\n\n# open metadata designer in wb-stg environment\nftbx workflowDesigner --in \"wb-stg\"\n```\n\n# ERRORS & FIXES\n\n### Self-signed certificates\n```shell\nssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:1006)\n```\nFix: see [4. Connect to self-signed environments](#4-connect-to-self-signed-environments)\n\n---\n\n# CONTACTS\n\nDavid NAISSE - [dnaisse@dalet.com](dnaisse@dalet.com)\n",
    "bugtrack_url": null,
    "license": "Copyright 2024 Dalet Digital Media Systems, all rights reserved ",
    "summary": "Tool to facilitate and accelerate Flex operations.",
    "version": "0.1.dev373",
    "project_urls": {
        "Homepage": "https://pypi.org/project/ftbx/",
        "Repository": "https://bitbucket.org/ooyalaflex/flex-toolbox/src/master/"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4543b4ba321bd45da6bcf99c581834f1d4ad9e065f73196f36e2265a77c2f40a",
                "md5": "d7b8463554d949ece8cca5a856230abe",
                "sha256": "17fab0e2be9e4f48e366bd4438fa07bd65641a497b8876b82e83e4480ca34a8b"
            },
            "downloads": -1,
            "filename": "ftbx-0.1.dev373-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "d7b8463554d949ece8cca5a856230abe",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 211570,
            "upload_time": "2024-11-15T19:35:12",
            "upload_time_iso_8601": "2024-11-15T19:35:12.637218Z",
            "url": "https://files.pythonhosted.org/packages/45/43/b4ba321bd45da6bcf99c581834f1d4ad9e065f73196f36e2265a77c2f40a/ftbx-0.1.dev373-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "436ccb87b1263177295ab271e5ababa15167d6cf22a70e5523147ee54c2164d3",
                "md5": "c11fd48a492eb0231c98b1976533c9fc",
                "sha256": "375dfe36c5e244e5667005a3167abea6053c5cd9b65f9e86933d71835aa18e15"
            },
            "downloads": -1,
            "filename": "ftbx-0.1.dev373.tar.gz",
            "has_sig": false,
            "md5_digest": "c11fd48a492eb0231c98b1976533c9fc",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 333898,
            "upload_time": "2024-11-15T19:35:15",
            "upload_time_iso_8601": "2024-11-15T19:35:15.060545Z",
            "url": "https://files.pythonhosted.org/packages/43/6c/cb87b1263177295ab271e5ababa15167d6cf22a70e5523147ee54c2164d3/ftbx-0.1.dev373.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-11-15 19:35:15",
    "github": false,
    "gitlab": false,
    "bitbucket": true,
    "codeberg": false,
    "bitbucket_user": "ooyalaflex",
    "bitbucket_project": "flex-toolbox",
    "lcname": "ftbx"
}
        
Elapsed time: 0.40838s