# Setting Up Pokémon of the Day Integration

This is where you will start to set up the functionality that allows a user to choose which type of Pokémon they will learn about and who will receive the daily Slack message.

One of the [PANDIUM.yaml](https://github.com/pandium/external-docs/blob/master/build/anatomy-of-an-integration/pandium.yaml-spec)'s key purposes is to populate the _Connections Settings_ page. That page allows users to customize how their [tenant](https://docs.pandium.com/getting-started/key-terminology#tenant) will run.

At the moment the PANDIUM.yaml in your Pokémon of the Day integration does not have any configurations, but the Academy has asked for these dynamic configs to be added: `pokemon_type` and `slack_user`.

## Step 1: Add configs to PANDIUM.yaml
Add `configs` with its `schema` and `uischema` to your PANDIUM.yaml, so it looks like this:

```
version: 0.4
base: node:20.9.0
build: npm install --production && npm i --save-dev @types/node && npm run build
run: node .
configs:
  schema:
    required:
    definitions:
    properties:
  uischema:
    elements:
```

## Step 2: Under schema properties add the following

```
      pokemon_type:
        type: string
        $ref: '#/definitions/pokemon_types'
      slack_user:
        type: string
        $ref: '#/definitions/slack_users'
```

The values in the `$ref` for each of these properties determine the options for that config. E.g., the `pokemon_type` config will have a dropdown menu on the _Connections Settings_ page, and it will be filled with whatever is in `#/definitions/pokemon_types`.

## Step 3: Make the schema definitions look like this

```
    definitions:
      slack_users:
        type: number
        oneOf:
          - title: Placeholder
            const: placeholder
      pokemon_types:
        enum:
            - placeholder
```

When you built the first iteration of the integration you saw that Pandium saves the standard out of a successful normal sync and passes it to the next run through context. Pandium also stores the standard out of a successful init sync.

When you add the init sync flow you will end it by printing a standard out which will look something like this:

```
{
   "pokemon_types":[\
      {"const":"1","title":"normal"},\
      {"const":"2","title":"fighting"},\
      ... other pokemon types fetched from the PokéAPI\
   ],
   "slack_users":[\
      {"const":"UCEGPFQRX","title":"Jeff"},\
      {"const":"UCEMD4QCQ","title":"Juanita"},\
      ... other Slack users fetched from your Slack workspace.\
   ]
}
```

Pandium will save that init sync's standard out and read it when displaying the _Connections Settings_ page. It will replace each `placeholder` with the content of the lists from your init sync's standard out.

You can read more about dynamic configs [here](https://docs.pandium.com/getting-started/anatomy-of-an-integration/pandium.yaml-spec/dynamic-configurations).

## Step 4: Under schema required add
`pokemon_type` and `slack_user`.

## Step 5: Add Section element to the uischema elements

```
    - type: Section
      label: Configure Pokémon of the Day
      hintText: Select which type of Pokémon you would like to learn about, and the Slack User who will receive the Pokémon of the day message.
      elements:

- label: Pokémon Type
        scope: '#/properties/pokemon_type'
        type: Control

- label: Slack User
        scope: '#/properties/slack_user'
        type: Control
```

Your PANDIUM.yaml should now look like the one [here](https://github.com/pandium/sample_integrations/blob/master/POKEMON_OF_THE_DAY/PANDIUM.yaml).

## Conclusion
Let's take a look at how the connection settings page looks with this updated PANDIUM.yaml!
