# Services

Open Appmixer Backoffice and click the *Services* item in the main menu.

![Service configuration.](/files/hDpCox0wPKP0vbNIehVz)

Appmixer comes with a set of components. Some of those can be used directly, but some require user authentication into a 3rd party system (Slack for instance). This authentication is usually done through the OAuth protocol. That protocol requires pair of [secrets](/6.0/5.2/component-definition/authentication.md#setting-oauth-1-2-secrets) stored in Appmixer.

There are more ways how to save those secrets in Appmixer. Using Appmixer Backoffice is the easiest one. Let's say you want to start using Slack components. First, you need to register your Slack application on the Slack website, then you will be provided with *clientId* and *clientSecret*. Once you have those, you can save them into Appmixer like this:

![Create new service configuration.](/files/AMUSKIZZm3a4EOooY4qu)

As a *Service ID* you use *appmixer:slack.* This is the same value that is used in Slack component.json files in the *auth* section.

![Auth section.](/files/uIYWGraBjBDa8gXrQi0v)

This tells Appmixer that the NewChannelMessageRT component uses *appmixer:slack* authentication module. Appmixer will try to locate authentication file *auth.js* in appmixer/slack directory.

We can now add the *clientId* and *clientSecret*.

![Adding service configuration key/values.](/files/5EAu11og6qWMj7GFhIJb)

Then add *clientId* (has to be *clientId,* not *clientID* or any other combination) key with your client Id.

![Adding clientId.](/files/9w7kyixTjqBuhlIkP2Bv)

And then the *clientSecret*.

![Adding clientSecret.](/files/mYEX6NggpWCXQji6QYBy)

After that, you can use the Slack components in Appmixer.

You can add any key/value pair here. All the keys and their values will be available in your component's code at `context.auth` object and in the case of *auth.js* files directly in the `context` object.

When it comes to authentication, you can also redefine the default `callbackUrl` (redirect URL) for modules using OAuth2 authentication.

<figure><img src="/files/Vx6WouHVO7QDsXr3OOoI" alt=""><figcaption><p>Setting custom callbackUrl for appmixer:google module.</p></figcaption></figure>

You can use this configuration even for components that do not require user authentication into 3rd party applications. [DeepAI](/6.0/5.2/app-registration/deepai.md#sign-up-at-deepai) component is a good example. In this case, you need an API key in order to use the Deep AI API. But you don't want your users to provide that API key. You want to use your own API key for all your users. More about that [here](/6.0/5.2/app-registration/deepai.md).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.appmixer.com/6.0/5.2/appmixer-backoffice/services.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
