# Explanation of how configuration works?

**URL:** <https://discuss.dev.twitch.com/t/explanation-of-how-configuration-works/11860>\
**Category:** Extensions\
**Created:** [September 8, 2017, 7:29pm UTC](https://discuss.dev.twitch.com/t/explanation-of-how-configuration-works/11860 "2017-09-08T19:29:53Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![tf2casperr](https://d3ovvz0v2ajtpu.cloudfront.net/user_avatar/discuss.dev.twitch.com/tf2casperr/32/9301_2.png) [@tf2casperr](https://discuss.dev.twitch.com/u/tf2casperr)\
**Post date:** [September 8, 2017, 7:29pm UTC](https://discuss.dev.twitch.com/t/explanation-of-how-configuration-works/11860/1 "2017-09-08T19:29:53Z")

</div>

I am wondering how configuration works, or more specifically where permanent configuration is supposed to be saved.

If I create an extension where a streamer needs to enter their Steam ID in order to display some Steam profile information in the extension then I need to save that Steam ID for each streamer. Do I need to save that somewhere on my own hosting, or is there a way to save it on Twitch’s back end? Should I be setting up a database on my own hosting with a table of streamer Twitch IDs and their Steam IDs for this example?

Thanks - I appreciate any guidance in this area.

---

<div class="post-metadata">

**Author:** ![asterius](https://avatars.discourse-cdn.com/v4/letter/a/c37758/32.png) [@asterius](https://discuss.dev.twitch.com/u/asterius)\
**Post date:** [September 8, 2017, 7:38pm UTC](https://discuss.dev.twitch.com/t/explanation-of-how-configuration-works/11860/2 "2017-09-08T19:38:36Z")

</div>

not a twitch dev, but based on documentation right now you have to do it through you own hosting.  
You would use their API endpoint if you want to block wrongly configured apps (you have to tell twitch if config is ok to go)

Twitch hosted config is on the todo list: [https://trello.com/c/88minYsr/22-extensions-configuration-service](https://trello.com/c/88minYsr/22-extensions-configuration-service)  
I would guess we will get it at some point, hopefully not to long from now.

---

<div class="post-metadata">

**Author:** ![tf2casperr](https://d3ovvz0v2ajtpu.cloudfront.net/user_avatar/discuss.dev.twitch.com/tf2casperr/32/9301_2.png) [@tf2casperr](https://discuss.dev.twitch.com/u/tf2casperr)\
**Post date:** [September 8, 2017, 7:41pm UTC](https://discuss.dev.twitch.com/t/explanation-of-how-configuration-works/11860/3 "2017-09-08T19:41:00Z")

</div>

Thanks for the response. Given that that Trello task exists it seems pretty clear it is not something currently possible. As you say - hopefully this is something which comes soon

---

<div class="post-metadata">

**Author:** ![BarryCarlyon](https://d3ovvz0v2ajtpu.cloudfront.net/user_avatar/discuss.dev.twitch.com/barrycarlyon/32/253_2.png) [@BarryCarlyon](https://discuss.dev.twitch.com/u/BarryCarlyon)\
**Post date:** [September 8, 2017, 9:03pm UTC](https://discuss.dev.twitch.com/t/explanation-of-how-configuration-works/11860/4 "2017-09-08T21:03:08Z")

</div>

Nah you can do it now, that trello card is about storing the configuration in question twitch side.

You can store the configuration you want in your EBS, provide a form in a config panel that collects SteamID and store wthat with the channel ID.

When you have both then you tell Twitch Extension API all is good.

For example:

 ![image](https://d3ovvz0v2ajtpu.cloudfront.net/uploads/default/original/2X/d/d3a9c889660bd562bd928c3704dc3cd62a647cd8.png)

Results in:

 ![image](https://d3ovvz0v2ajtpu.cloudfront.net/uploads/default/original/2X/b/ba5ac770e5f5a8865608640e88f2b96841e8231d.jpg)

So Casters goes to config, which Posts back to your EBS.

Then you do use:

> **[Extensions Reference](https://dev.twitch.tv/docs/extensions/reference/)**
>
> Extensions Reference

And call:

> PUT [https://api.twitch.tv/extensions/](https://api.twitch.tv/extensions/)//required\_configuration?channel\_id=

Using the example

```
curl -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1MDIyOTg3ODksInVzZXJfaWQiOiIyNzQxOTAxMSIsInJvbGUiOiJleHRlcm5hbCJ9.sKjspl1jw0XGcpjF8vo2IcS2dQLQU_rSsmRCnrohCP4' \
-H 'Client-Id: pxifeyz7vxk9v6yb202nq4cwsnsp1t' \
-H 'Content-Type: application/json' \
-d '{"required_configuration": "hassteam"}' \
-X PUT https://api.twitch.tv/extensions/pxifeyz7vxk9v6yb202nq4cwsnsp1t/0.0.1/required_configuration?channel_id=27419011

```

So in summary:

- You configure your extension to have “hassteam” as the required configuration
- Caster installs your Extension
- Caster is told to go to configuration page
- Caster enters SteamID, which posts to your EBS/backend server
- Backend Stores SteamID and ChannelID
- Backend makes the PUT request with the string “hassteam”
- Caster can now add you panel to panels/video

---

<div class="post-metadata">

**Author:** ![tf2casperr](https://d3ovvz0v2ajtpu.cloudfront.net/user_avatar/discuss.dev.twitch.com/tf2casperr/32/9301_2.png) [@tf2casperr](https://discuss.dev.twitch.com/u/tf2casperr)\
**Post date:** [September 8, 2017, 9:26pm UTC](https://discuss.dev.twitch.com/t/explanation-of-how-configuration-works/11860/5 "2017-09-08T21:26:38Z")

</div>

Hello Barry - I am not sure if I am reading your answer correctly. My question is wondering whether an Extension can be created where the config details are saved on Twitch’s back end somewhere. Your answer implies that its my EBS which would hold the Steam ID and corresponding Channel ID. Am I misunderstanding somewhere?

---

<div class="post-metadata">

**Author:** ![BarryCarlyon](https://d3ovvz0v2ajtpu.cloudfront.net/user_avatar/discuss.dev.twitch.com/barrycarlyon/32/253_2.png) [@BarryCarlyon](https://discuss.dev.twitch.com/u/BarryCarlyon)\
**Post date:** [September 8, 2017, 9:33pm UTC](https://discuss.dev.twitch.com/t/explanation-of-how-configuration-works/11860/6 "2017-09-08T21:33:39Z")

</div>

Yeah I misunderstood

> [@tf2casperr](#):
>
> Extension can be created where the config details are saved on Twitch’s back end somewhere

Currently no

> [@tf2casperr](#):
>
> Your answer implies that its my EBS which would hold the Steam ID and corresponding Channel ID

Yup.

There is an undocumented end point that will spit out a streams SteamID if linked to Twitch, but a lot of Streamers will not link their Steam as they don’t want their Steam public, and it’s more of a viewer feature, of the CSGO game/map fetcher, so whilst the end point exists it’s not worth playing with

---

<div class="post-metadata">

**Author:** ![tf2casperr](https://d3ovvz0v2ajtpu.cloudfront.net/user_avatar/discuss.dev.twitch.com/tf2casperr/32/9301_2.png) [@tf2casperr](https://discuss.dev.twitch.com/u/tf2casperr)\
**Post date:** [September 8, 2017, 9:51pm UTC](https://discuss.dev.twitch.com/t/explanation-of-how-configuration-works/11860/7 "2017-09-08T21:51:45Z")

</div>

Thanks for the clarification. The Steam ID was just an example - there’s actually quite a few things I would want to save in config, some of which would not be already connected to Twitch in any way.

It just seems odd to me that Twitch would build a tool so conceptually linked to the idea of it being hosted and managed via Twitch, but then expects one of the most fundamental parts of it to be hosted and managed externally. At least it looks like something that will be changing soon!

---

<div class="post-metadata">

**Author:** ![BarryCarlyon](https://d3ovvz0v2ajtpu.cloudfront.net/user_avatar/discuss.dev.twitch.com/barrycarlyon/32/253_2.png) [@BarryCarlyon](https://discuss.dev.twitch.com/u/BarryCarlyon)\
**Post date:** [September 8, 2017, 10:28pm UTC](https://discuss.dev.twitch.com/t/explanation-of-how-configuration-works/11860/8 "2017-09-08T22:28:01Z")

</div>

Perhaps, but you can’t do much processing or many API requests/mergin/comparing in pure client side at all, so you gotta dump off to EBS for processing.

But I can see the benefit of storing such info on Twitch itself

---

<div class="post-metadata">

**Author:** ![rbartlet](https://d3ovvz0v2ajtpu.cloudfront.net/user_avatar/discuss.dev.twitch.com/rbartlet/32/3219_2.png) [@rbartlet](https://discuss.dev.twitch.com/u/rbartlet)\
**Post date:** [September 8, 2017, 10:57pm UTC](https://discuss.dev.twitch.com/t/explanation-of-how-configuration-works/11860/9 "2017-09-08T22:57:30Z")

</div>

Extensions were designed to allow third parties to develop and run their code on Twitch. EBSs are a first step in allowing remote computation, configuration, and state management for extensions. The configuration service will be the next step forward, which will lower the barrier to entry.

---

<div class="post-metadata">

**Author:** ![tf2casperr](https://d3ovvz0v2ajtpu.cloudfront.net/user_avatar/discuss.dev.twitch.com/tf2casperr/32/9301_2.png) [@tf2casperr](https://discuss.dev.twitch.com/u/tf2casperr)\
**Post date:** [September 8, 2017, 11:26pm UTC](https://discuss.dev.twitch.com/t/explanation-of-how-configuration-works/11860/10 "2017-09-08T23:26:12Z")

</div>

Thanks for the explanation - makes total sense from a computation point of view.

The sort of Extensions I am thinking of developing are things like latest posts on social media which, as long as the user’s posts are public, would require nothing more than passing a username parameter into a URL and grabbing a JSON feed.

Is there any sort of ballpark timing on when the configuration service would be made publicly available?

---

<div class="post-metadata">

**Author:** ![rbartlet](https://d3ovvz0v2ajtpu.cloudfront.net/user_avatar/discuss.dev.twitch.com/rbartlet/32/3219_2.png) [@rbartlet](https://discuss.dev.twitch.com/u/rbartlet)\
**Post date:** [September 8, 2017, 11:45pm UTC](https://discuss.dev.twitch.com/t/explanation-of-how-configuration-works/11860/11 "2017-09-08T23:45:24Z")

</div>

Politically correct answer: the next update to our public roadmap will be made at TwitchCon in October. Look out for more information then!

---

<div class="post-metadata">

**Author:** ![pureth](https://avatars.discourse-cdn.com/v4/letter/p/b9e5f3/32.png) [@pureth](https://discuss.dev.twitch.com/u/pureth)\
**Post date:** [September 9, 2018, 11:56am UTC](https://discuss.dev.twitch.com/t/explanation-of-how-configuration-works/11860/12 "2018-09-09T11:56:59Z")

</div>

is the info in this thread still up to date?

---

<div class="post-metadata">

**Author:** ![tf2casperr](https://d3ovvz0v2ajtpu.cloudfront.net/user_avatar/discuss.dev.twitch.com/tf2casperr/32/9301_2.png) [@tf2casperr](https://discuss.dev.twitch.com/u/tf2casperr)\
**Post date:** [September 9, 2018, 1:41pm UTC](https://discuss.dev.twitch.com/t/explanation-of-how-configuration-works/11860/13 "2018-09-09T13:41:50Z")

</div>

As of right now - yes. The config service is still not released. However, there was recently an RFC on these forums which usually means it is coming soon. My best guess would be a couple months but I guess it depends on a couple factors how long it takes.

Setting up an EBS to control everything is still possible as described above

---

<div class="post-metadata">

**Author:** ![pureth](https://avatars.discourse-cdn.com/v4/letter/p/b9e5f3/32.png) [@pureth](https://discuss.dev.twitch.com/u/pureth)\
**Post date:** [September 9, 2018, 3:57pm UTC](https://discuss.dev.twitch.com/t/explanation-of-how-configuration-works/11860/14 "2018-09-09T15:57:55Z")

</div>

cool. thank you for the update ! 🙂

---

<div class="post-metadata">

**Author:** ![rbartlet](https://d3ovvz0v2ajtpu.cloudfront.net/user_avatar/discuss.dev.twitch.com/rbartlet/32/3219_2.png) [@rbartlet](https://discuss.dev.twitch.com/u/rbartlet)\
**Post date:** [September 13, 2018, 8:26pm UTC](https://discuss.dev.twitch.com/t/explanation-of-how-configuration-works/11860/15 "2018-09-13T20:26:18Z")

</div>

The config service is indeed coming; and soon. 😉
