# Unity Gaming Services CLI

> Manage trigger configurations from the command line using the Unity Gaming Services command-line interface.

You can use the [Unity Gaming Services CLI](https://services.docs.unity.com/guides/ugs-cli/latest/general/overview) to interact with triggers. The CLI allows you to manage trigger configurations from the command line.

## Prerequisites

For a more comprehensive information on the CLI, follow the steps in the [Unity Gaming Services CLI Get Started guide](https://services.docs.unity.com/guides/ugs-cli/latest/general/get-started/install-the-cli/).

To follow this guide, you first need to complete the following actions:

1. [Install the UGS CLI](https://services.docs.unity.com/guides/ugs-cli/latest/general/get-started/install-the-cli/).

2. Configure your Project ID and Environment as such:
   `ugs config set project-id <your-project-id>`
   `ugs config set environment-name <your-environment-name>`

3. Configure a Service Account with the required roles for [Triggers](https://services.docs.unity.com/docs/service-account-auth/index.html#triggers-configuration-editor) and [environments management](https://services.docs.unity.com/docs/service-account-auth/index.html#unity-environments-admin). Refer to [Get Authenticated](https://services.docs.unity.com/guides/ugs-cli/latest/general/get-started/get-authenticated/).

## Using the CLI

For a full reference of all commands and options, refer to the [Triggers Command Line documentation](https://services.docs.unity.com/guides/ugs-cli/latest/triggers/Triggers%20Command%20Line/overview).

> **Note:**
>
> The `ugs triggers` command is also available as `ugs tr`.

### Deploy triggers

Run the `new-file` command to create a trigger configuration locally:

```bash
ugs triggers new-file <file-name>
```

The configuration file contents can look like the following:

```json
{
  "$schema": "https://ugs-config-schemas.unity3d.com/v1/triggers.schema.json",
  "Configs": [
    {
      "Name": "example-trigger",
      "EventType": "com.unity.services.scheduler.{{EVENT_NAME}}.v{{EVENT_VERSION}}",
      "ActionUrn": "urn:ugs:cloud-code:MyScript",
      "ActionType": "cloud-code"
    }
  ]
}
```

You can also modify a configuration file to include multiple triggers, or a mix of Cloud Code and webhook triggers:

```json
{
  "$schema": "https://ugs-config-schemas.unity3d.com/v1/triggers.schema.json",
  "Configs": [
    {
      "Name": "example-trigger",
      "EventType": "com.unity.services.scheduler.{{EVENT_NAME}}.v{{EVENT_VERSION}}",
      "ActionUrn": "urn:ugs:cloud-code:MyScript",
      "ActionType": "cloud-code"
    },
    {
      "Name": "example-webhook-trigger",
      "EventType": "com.unity.services.leaderboards.score-submitted.v1",
      "ActionUrn": "urn:ugs:webhook",
      "ActionType": "webhook",
      "Webhook": {
        "Url": "https://example.com/events",
        "Method": "POST",
        "Headers": { "Content-Type": "application/json" },
        "PayloadTemplate": "{\"event\": \"score-submitted\", \"data\": {{.}}}"
      }
    }
  ]
}
```

For webhook configuration details, refer to [Webhooks](/triggers/webhooks.md).

You can use the `Deploy` command to promote your local trigger configuration files to the remote environment.

You need to deploy the configuration files for them to become active triggers:

```bash
ugs deploy <path-to-triggers-file> <path-to-triggers-file>
```

```bash
ugs deploy <path-to-directory>
```

If you associate the trigger with an existing Cloud Code script or module, then emitting the event with the specified `eventType` fires the trigger and executes the associated Cloud Code script or module.

### Retrieve triggers

You can use the `Fetch` command to retrieve multiple triggers from remote at once.

The provided path is a directory where the triggers are saved to:

```bash
ugs fetch <path>
```

### Delete triggers

To delete a trigger, you can run the `deploy` command with a `--reconcile` flag.

> **Warning:**
>
> Reconcile is a destructive operation. It deletes all triggers that are not present in the provided path.
> You can check the output of the command with the `--dry-run` flag before running the command without it.

```bash
ugs deploy <path-to-triggers-file> --services triggers --reconcile
```
