# Main input type from workflow execution to activity execution

**URL:** <https://community.temporal.io/t/main-input-type-from-workflow-execution-to-activity-execution/1976>\
**Category:** Community Support\
**Created:** [April 21, 2021, 3:38pm UTC](https://community.temporal.io/t/main-input-type-from-workflow-execution-to-activity-execution/1976 "2021-04-21T15:38:01Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Bo\_Gao](https://sea2.discourse-cdn.com/flex016/user_avatar/community.temporal.io/bo_gao/32/887_2.png) [@Bo\_Gao](https://community.temporal.io/u/Bo_Gao)\
**Post date:** [April 21, 2021, 3:38pm UTC](https://community.temporal.io/t/main-input-type-from-workflow-execution-to-activity-execution/1976/1 "2021-04-21T15:38:02Z")

</div>

I wonder what is the right way to compose a generic input parameter, so that different activities can take their own parameters out through type assertion.

tried to put parameters into map[string]interface{} (e.g. a http.header and a string) and pass to execute workflow, but when I grab the header in activity execution using (input[“header”]).(http.Header), it is not http.header type anymore, type change to map[string]interface{}, is there a way to get back original type?

```nohighlight
header := make(http.Header)
	header.Add("a", "b")
	header.Add("c", "d")
	data := map[string]interface{}{
		"header": header,
		"body": "test",
	}

```

---

<div class="post-metadata">

**Author:** ![maxim](https://sea2.discourse-cdn.com/flex016/user_avatar/community.temporal.io/maxim/32/8_2.png) [@maxim](https://community.temporal.io/u/maxim)\
**Post date:** [April 21, 2021, 7:48pm UTC](https://community.temporal.io/t/main-input-type-from-workflow-execution-to-activity-execution/1976/2 "2021-04-21T19:48:27Z")

</div>

The input should be JSON marshallable and unmarshallable. As JSON doesn’t contain type information the map of values of `interface{}` type is not going to work.
