Repository: radius-project/radius

Issue:
Get scheme from the options for Async Headers
**Overview of feature request**
Get scheme from the options for Async Headers.

Refer to: https://github.com/project-radius/radius/pull/2892#discussion_r920304872

[AB#6879](https://dev.azure.com/azure-octo/e61041b4-555f-47ae-95b2-4f8ab480ea57/_workitems/edit/6879)

Hints from issue comments:
@ytimocin: Hey @jkotalik are we supposed to get the scheme (if it doesn't exist on the request) from the host options? Is that what we discussed in the linked PR?@shalabhms: @youngbupark , is the issue still exists? Please close the issue if it is not needed.@nicolejms: very old so closing

Solution patch:
diff --git a/build/generate.mk b/build/generate.mk
index 12a704f94..f327dcb8f 100644
--- a/build/generate.mk
+++ b/build/generate.mk
@@ -6,7 +6,7 @@
 ##@ Generate (Code and Schema Generation)
 
 .PHONY: generate
-generate: generate-radclient generate-genericcliclient generate-rad-corerp-client generate-go generate-bicep-types generate-ucp-crd ## Generates all targets.
+generate: generate-radclient generate-genericcliclient generate-rad-corerp-client generate-rad-connectorrp-client generate-go generate-bicep-types generate-ucp-crd ## Generates all targets.
 
 .PHONY: generate-node-installed
 generate-node-installed:
@@ -69,6 +69,11 @@ generate-rad-corerp-client: generate-node-installed generate-autorest-installed
 	@echo "$(AUTOREST_MODULE_VERSION) is module version"
 	autorest pkg/corerp/api/README.md --tag=2022-03-15-privatepreview
 
+.PHONY: generate-rad-connectorrp-client
+generate-rad-connectorrp-client: generate-node-installed generate-autorest-installed ## Generates the connectorrp client SDK (Autorest).
+	@echo "$(AUTOREST_MODULE_VERSION) is module version"
+	autorest pkg/connectorrp/api/README.md --tag=connector-2022-03-15-privatepreview
+
 .PHONY: generate-mockgen-installed
 generate-mockgen-installed:
 	@echo "$(ARROW) Detecting mockgen..."
diff --git a/hack/bicep-types-radius/generated/applications/applications.connector/2022-03-15-privatepreview/types.json b/hack/bicep-types-radius/generated/applications/applications.connector/2022-03-15-privatepreview/types.json
index 0cd694e24..11aa160de 100644
--- a/hack/bicep-types-radius/generated/applications/applications.connector/2022-03-15-privatepreview/types.json
+++ b/hack/bicep-types-radius/generated/applications/applications.connector/2022-03-15-privatepreview/types.json
@@ -1 +1 @@
-[{"1":{"Kind":1}},{"1":{"Kind":2}},{"1":{"Kind":3}},{"1":{"Kind":4}},{"1":{"Kind":5}},{"1":{"Kind":6}},{"1":{"Kind":7}},{"1":{"Kind":8}},{"6":{"Value":"Applications.Connector/mongoDatabases"}},{"6":{"Value":"2022-03-15-privatepreview"}},{"2":{"Name":"Applications.Connector/mongoDatabases","Properties":{"id":{"Type":4,"Flags":10,"Description":"The resource id"},"name":{"Type":4,"Flags":9,"Description":"The resource name"},"type":{"Type":8,"Flags":10,"Description":"The resource type"},"apiVersion":{"Type":9,"Flags":10,"Description":"The resource api version"},"systemData":{"Type":11,"Flags":2,"Description":"Metadata pertaining to creation and last modification of the resource."},"properties":{"Type":22,"Flags":1,"Description":"MongoDatabase connector properties"},"tags":{"Type":34,"Flags":0,"Description":"Resource tags."},"location":{"Type":4,"Flags":1,"Description":"The geo-location where the resource lives"}}}},{"2":{"Name":"SystemData","Properties":{"createdBy":{"Type":4,"Flags":0,"Description":"The identity that created the resource."},"createdByType":{"Type":16,"Flags":0,"Description":"The type of identity that created the resource."},"createdAt":{"Type":4,"Flags":0,"Description":"The timestamp of resource creation (UTC)."},"lastModifiedBy":{"Type":4,"Flags":0,"Description":"The identity that last modified the resource."},"lastModifiedByType":{"Type":21,"Flags":0,"Description":"The type of identity that created the resource."},"lastModifiedAt":{"Type":4,"Flags":0,"Description":"The timestamp of resource last modification (UTC)"}}}},{"6":{"Value":"User"}},{"6":{"Value":"Application"}},{"6":{"Value":"ManagedIdentity"}},{"6":{"Value":"Key"}},{"5":{"Elements":[12,13,14,15]}},{"6":{"Value":"User"}},{"6":{"Value":"Application"}},{"6":{"Value":"ManagedIdentity"}},{"6":{"Value":"Key"}},{"5":{"Elements":[17,18,19,20]}},{"2":{"Name":"MongoDatabaseProperties","Properties":{"secrets":{"Type":23,"Flags":4,"Description":"The secret values for the given MongoDatabase resource"},"provisioningState":{"Type":31,"Flags":2,"Description":"Provisioning state of the connector at the time the operation was called"},"environment":{"Type":4,"Flags":1,"Description":"Fully qualified resource ID for the environment that the connector is linked to"},"application":{"Type":4,"Flags":2,"Description":"Fully qualified resource ID for the application that the connector is consumed by"},"resource":{"Type":4,"Flags":0,"Description":"Fully qualified resource ID of a supported resource with Mongo API to use for this connector"},"host":{"Type":4,"Flags":0,"Description":"Host name of the target Mongo database"},"port":{"Type":3,"Flags":0,"Description":"Port value of the target Mongo database"},"status":{"Type":32,"Flags":0,"Description":"Status of a resource."}}}},{"2":{"Name":"MongoDatabaseSecrets","Properties":{"username":{"Type":4,"Flags":4,"Description":"Username to use when connecting to the target Mongo database"},"password":{"Type":4,"Flags":4,"Description":"Password to use when connecting to the target Mongo database"},"connectionString":{"Type":4,"Flags":4,"Description":"Connection string used to connect to the target Mongo database"}}}},{"6":{"Value":"Succeeded"}},{"6":{"Value":"Failed"}},{"6":{"Value":"Canceled"}},{"6":{"Value":"Accepted"}},{"6":{"Value":"Updating"}},{"6":{"Value":"Deleting"}},{"6":{"Value":"Provisioning"}},{"5":{"Elements":[24,25,26,27,28,29,30]}},{"2":{"Name":"ResourceStatus","Properties":{"outputResources":{"Type":33,"Flags":0,"Description":"Array of AnyObject"}}}},{"3":{"ItemType":0}},{"2":{"Name":"TrackedResourceTags","Properties":{},"AdditionalProperties":4}},{"4":{"Name":"Applications.Connector/mongoDatabases@2022-03-15-privatepreview","ScopeType":0,"Body":10}},{"6":{"Value":"Applications.Connector/daprPubSubBrokers"}},{"6":{"Value":"2022-03-15-privatepreview"}},{"2":{"Name":"Applications.Connector/daprPubSubBrokers","Properties":{"id":{"Type":4,"Flags":10,"Description":"The resource id"},"name":{"Type":4,"Flags":9,"Description":"The resource name"},"type":{"Type":36,"Flags":10,"Description":"The resource type"},"apiVersion":{"Type":37,"Flags":10,"Description":"The resource api version"},"systemData":{"Type":11,"Flags":2,"Description":"Metadata pertaining to creation and last modification of the resource."},"properties":{"Type":39,"Flags":1,"Description":"DaprPubSubBroker connector properties"},"tags":{"Type":52,"Flags":0,"Description":"Resource tags."},"location":{"Type":4,"Flags":1,"Description":"The geo-location where the resource lives"}}}},{"7":{"Name":"DaprPubSubBrokerProperties","Discriminator":"kind","BaseProperties":{"provisioningState":{"Type":47,"Flags":2,"Description":"Provisioning state of the connector at the time the operation was called"},"application":{"Type":4,"Flags":2,"Description":"Fully qualified resource ID for the application that the connector is consumed by"},"environment":{"Type":4,"Flags":1,"Description":"The resource id of the environment linked to the daprPubSubBroker connector"},"status":{"Type":32,"Flags":0,"Description":"Status of a resource."}},"Elements":{"generic":48,"pubsub.azure.servicebus":50}}},{"6":{"Value":"Succeeded"}},{"6":{"Value":"Failed"}},{"6":{"Value":"Canceled"}},{"6":{"Value":"Accepted"}},{"6":{"Value":"Updating"}},{"6":{"Value":"Deleting"}},{"6":{"Value":"Provisioning"}},{"5":{"Elements":[40,41,42,43,44,45,46]}},{"2":{"Name":"DaprPubSubGenericResourceProperties","Properties":{"metadata":{"Type":0,"Flags":1,"Description":"Any object"},"type":{"Type":4,"Flags":1,"Description":"Dapr PubSub type. These strings match the format used by Dapr Kubernetes configuration format."},"version":{"Type":4,"Flags":1,"Description":"Dapr component version"},"kind":{"Type":49,"Flags":1,"Description":"The DaprPubSubProperties kind"}}}},{"6":{"Value":"generic"}},{"2":{"Name":"DaprPubSubAzureServiceBusResourceProperties","Properties":{"resource":{"Type":4,"Flags":1,"Description":"PubSub resource"},"kind":{"Type":51,"Flags":1,"Description":"The DaprPubSubProperties kind"}}}},{"6":{"Value":"pubsub.azure.servicebus"}},{"2":{"Name":"TrackedResourceTags","Properties":{},"AdditionalProperties":4}},{"4":{"Name":"Applications.Connector/daprPubSubBrokers@2022-03-15-privatepreview","ScopeType":0,"Body":38}},{"6":{"Value":"Applications.Connector/sqlDatabases"}},{"6":{"Value":"2022-03-15-privatepreview"}},{"2":{"Name":"Applications.Connector/sqlDatabases","Properties":{"id":{"Type":4,"Flags":10,"Description":"The resource id"},"name":{"Type":4,"Flags":9,"Description":"The resource name"},"type":{"Type":54,"Flags":10,"Description":"The resource type"},"apiVersion":{"Type":55,"Flags":10,"Description":"The resource api version"},"systemData":{"Type":11,"Flags":2,"Description":"Metadata pertaining to creation and last modification of the resource."},"properties":{"Type":57,"Flags":1,"Description":"SQLDatabse connector properties"},"tags":{"Type":66,"Flags":0,"Description":"Resource tags."},"location":{"Type":4,"Flags":1,"Description":"The geo-location where the resource lives"}}}},{"2":{"Name":"SQLDatabaseProperties","Properties":{"provisioningState":{"Type":65,"Flags":2,"Description":"Provisioning state of the connector at the time the operation was called"},"environment":{"Type":4,"Flags":1,"Description":"The resource id of the environment linked to the sqlDatabase connector"},"application":{"Type":4,"Flags":2,"Description":"Fully qualified resource ID for the application that the connector is consumed by"},"resource":{"Type":4,"Flags":0,"Description":"Fully qualified resource ID of a supported resource with SQL API to use for this connector"},"database":{"Type":4,"Flags":0,"Description":"The name of the SQL database."},"server":{"Type":4,"Flags":0,"Description":"The fully qualified domain name of the SQL database."},"status":{"Type":32,"Flags":0,"Description":"Status of a resource."}}}},{"6":{"Value":"Succeeded"}},{"6":{"Value":"Failed"}},{"6":{"Value":"Canceled"}},{"6":{"Value":"Accepted"}},{"6":{"Value":"Updating"}},{"6":{"Value":"Deleting"}},{"6":{"Value":"Provisioning"}},{"5":{"Elements":[58,59,60,61,62,63,64]}},{"2":{"Name":"TrackedResourceTags","Properties":{},"AdditionalProperties":4}},{"4":{"Name":"Applications.Connector/sqlDatabases@2022-03-15-privatepreview","ScopeType":0,"Body":56}},{"6":{"Value":"Applications.Connector/redisCaches"}},{"6":{"Value":"2022-03-15-privatepreview"}},{"2":{"Name":"Applications.Connector/redisCaches","Properties":{"id":{"Type":4,"Flags":10,"Description":"The resource id"},"name":{"Type":4,"Flags":9,"Description":"The resource name"},"type":{"Type":68,"Flags":10,"Description":"The resource type"},"apiVersion":{"Type":69,"Flags":10,"Description":"The resource api version"},"systemData":{"Type":11,"Flags":2,"Description":"Metadata pertaining to creation and last modification of the resource."},"properties":{"Type":71,"Flags":1,"Description":"RedisCache connector properties"},"tags":{"Type":81,"Flags":0,"Description":"Resource tags."},"location":{"Type":4,"Flags":1,"Description":"The geo-location where the resource lives"}}}},{"2":{"Name":"RedisCacheProperties","Properties":{"secrets":{"Type":72,"Flags":4,"Description":"The secret values for the given RedisCache resource"},"provisioningState":{"Type":80,"Flags":2,"Description":"Provisioning state of the connector at the time the operation was called"},"environment":{"Type":4,"Flags":1,"Description":"Fully qualified resource ID for the environment that the connector is linked to"},"application":{"Type":4,"Flags":2,"Description":"Fully qualified resource ID for the application that the connector is consumed by"},"resource":{"Type":4,"Flags":0,"Description":"Fully qualified resource ID of a supported resource with Redis API to use for this connector"},"host":{"Type":4,"Flags":0,"Description":"The host name of the target redis cache"},"port":{"Type":3,"Flags":0,"Description":"The port value of the target redis cache"},"status":{"Type":32,"Flags":0,"Description":"Status of a resource."}}}},{"2":{"Name":"RedisCacheSecrets","Properties":{"connectionString":{"Type":4,"Flags":4,"Description":"The connection string used to connect to the redis cache"},"password":{"Type":4,"Flags":4,"Description":"The password for this Redis instance"}}}},{"6":{"Value":"Succeeded"}},{"6":{"Value":"Failed"}},{"6":{"Value":"Canceled"}},{"6":{"Value":"Accepted"}},{"6":{"Value":"Updating"}},{"6":{"Value":"Deleting"}},{"6":{"Value":"Provisioning"}},{"5":{"Elements":[73,74,75,76,77,78,79]}},{"2":{"Name":"TrackedResourceTags","Properties":{},"AdditionalProperties":4}},{"4":{"Name":"Applications.Connector/redisCaches@2022-03-15-privatepreview","ScopeType":0,"Body":70}},{"6":{"Value":"Applications.Connector/rabbitMQMessageQueues"}},{"6":{"Value":"2022-03-15-privatepreview"}},{"2":{"Name":"Applications.Connector/rabbitMQMessageQueues","Properties":{"id":{"Type":4,"Flags":10,"Description":"The resource id"},"name":{"Type":4,"Flags":9,"Description":"The resource name"},"type":{"Type":83,"Flags":10,"Description":"The resource type"},"apiVersion":{"Type":84,"Flags":10,"Description":"The resource api version"},"systemData":{"Type":11,"Flags":2,"Description":"Metadata pertaining to creation and last modification of the resource."},"properties":{"Type":86,"Flags":1,"Description":"RabbitMQMessageQueue connector properties"},"tags":{"Type":96,"Flags":0,"Description":"Resource tags."},"location":{"Type":4,"Flags":1,"Description":"The geo-location where the resource lives"}}}},{"2":{"Name":"RabbitMQMessageQueueProperties","Properties":{"secrets":{"Type":87,"Flags":4,"Description":"The secret values for the given RabbitMQMessageQueue resource"},"provisioningState":{"Type":95,"Flags":2,"Description":"Provisioning state of the connector at the time the operation was called"},"environment":{"Type":4,"Flags":1,"Description":"Fully qualified resource ID for the environment that the connector is linked to"},"application":{"Type":4,"Flags":2,"Description":"Fully qualified resource ID for the application that the connector is consumed by"},"queue":{"Type":4,"Flags":1,"Description":"The name of the queue"},"status":{"Type":32,"Flags":0,"Description":"Status of a resource."}}}},{"2":{"Name":"RabbitMQSecrets","Properties":{"connectionString":{"Type":4,"Flags":4,"Description":"The connection string used to connect to this RabbitMQ instance"}}}},{"6":{"Value":"Succeeded"}},{"6":{"Value":"Failed"}},{"6":{"Value":"Canceled"}},{"6":{"Value":"Accepted"}},{"6":{"Value":"Updating"}},{"6":{"Value":"Deleting"}},{"6":{"Value":"Provisioning"}},{"5":{"Elements":[88,89,90,91,92,93,94]}},{"2":{"Name":"TrackedResourceTags","Properties":{},"AdditionalProperties":4}},{"4":{"Name":"Applications.Connector/rabbitMQMessageQueues@2022-03-15-privatepreview","ScopeType":0,"Body":85}},{"6":{"Value":"Applications.Connector/daprSecretStores"}},{"6":{"Value":"2022-03-15-privatepreview"}},{"2":{"Name":"Applications.Connector/daprSecretStores","Properties":{"id":{"Type":4,"Flags":10,"Description":"The resource id"},"name":{"Type":4,"Flags":9,"Description":"The resource name"},"type":{"Type":98,"Flags":10,"Description":"The resource type"},"apiVersion":{"Type":99,"Flags":10,"Description":"The resource api version"},"systemData":{"Type":11,"Flags":2,"Description":"Metadata pertaining to creation and last modification of the resource."},"properties":{"Type":101,"Flags":1,"Description":"DaprSecretStore connector properties"},"tags":{"Type":111,"Flags":0,"Description":"Resource tags."},"location":{"Type":4,"Flags":1,"Description":"The geo-location where the resource lives"}}}},{"2":{"Name":"DaprSecretStoreProperties","Properties":{"provisioningState":{"Type":109,"Flags":2,"Description":"Provisioning state of the connector at the time the operation was called"},"application":{"Type":4,"Flags":2,"Description":"Fully qualified resource ID for the application that the connector is consumed by"},"environment":{"Type":4,"Flags":1,"Description":"Fully qualified resource ID for the environment that the connector is linked to"},"kind":{"Type":110,"Flags":1,"Description":"Radius kind for Dapr Secret Store"},"type":{"Type":4,"Flags":1,"Description":"Dapr Secret Store type. These strings match the types defined in Dapr Component format: https://docs.dapr.io/reference/components-reference/supported-secret-stores/"},"version":{"Type":4,"Flags":1,"Description":"Dapr component version"},"metadata":{"Type":0,"Flags":1,"Description":"Any object"},"status":{"Type":32,"Flags":0,"Description":"Status of a resource."}}}},{"6":{"Value":"Succeeded"}},{"6":{"Value":"Failed"}},{"6":{"Value":"Canceled"}},{"6":{"Value":"Accepted"}},{"6":{"Value":"Updating"}},{"6":{"Value":"Deleting"}},{"6":{"Value":"Provisioning"}},{"5":{"Elements":[102,103,104,105,106,107,108]}},{"6":{"Value":"generic"}},{"2":{"Name":"TrackedResourceTags","Properties":{},"AdditionalProperties":4}},{"4":{"Name":"Applications.Connector/daprSecretStores@2022-03-15-privatepreview","ScopeType":0,"Body":100}},{"6":{"Value":"Applications.Connector/daprInvokeHttpRoutes"}},{"6":{"Value":"2022-03-15-privatepreview"}},{"2":{"Name":"Applications.Connector/daprInvokeHttpRoutes","Properties":{"id":{"Type":4,"Flags":10,"Description":"The resource id"},"name":{"Type":4,"Flags":9,"Description":"The resource name"},"type":{"Type":113,"Flags":10,"Description":"The resource type"},"apiVersion":{"Type":114,"Flags":10,"Description":"The resource api version"},"systemData":{"Type":11,"Flags":2,"Description":"Metadata pertaining to creation and last modification of the resource."},"properties":{"Type":116,"Flags":1,"Description":"DaprInvokeHttpRoute connector properties"},"tags":{"Type":125,"Flags":0,"Description":"Resource tags."},"location":{"Type":4,"Flags":1,"Description":"The geo-location where the resource lives"}}}},{"2":{"Name":"DaprInvokeHttpRouteProperties","Properties":{"provisioningState":{"Type":124,"Flags":2,"Description":"Provisioning state of the connector at the time the operation was called"},"environment":{"Type":4,"Flags":1,"Description":"Fully qualified resource ID for the environment that the connector is linked to"},"application":{"Type":4,"Flags":2,"Description":"Fully qualified resource ID for the application that the connector is consumed by"},"appId":{"Type":4,"Flags":1,"Description":"The Dapr appId used for the route"},"status":{"Type":32,"Flags":0,"Description":"Status of a resource."}}}},{"6":{"Value":"Succeeded"}},{"6":{"Value":"Failed"}},{"6":{"Value":"Canceled"}},{"6":{"Value":"Accepted"}},{"6":{"Value":"Updating"}},{"6":{"Value":"Deleting"}},{"6":{"Value":"Provisioning"}},{"5":{"Elements":[117,118,119,120,121,122,123]}},{"2":{"Name":"TrackedResourceTags","Properties":{},"AdditionalProperties":4}},{"4":{"Name":"Applications.Connector/daprInvokeHttpRoutes@2022-03-15-privatepreview","ScopeType":0,"Body":115}},{"6":{"Value":"Applications.Connector/daprStateStores"}},{"6":{"Value":"2022-03-15-privatepreview"}},{"2":{"Name":"Applications.Connector/daprStateStores","Properties":{"id":{"Type":4,"Flags":10,"Description":"The resource id"},"name":{"Type":4,"Flags":9,"Description":"The resource name"},"type":{"Type":127,"Flags":10,"Description":"The resource type"},"apiVersion":{"Type":128,"Flags":10,"Description":"The resource api version"},"systemData":{"Type":11,"Flags":2,"Description":"Metadata pertaining to creation and last modification of the resource."},"properties":{"Type":130,"Flags":1,"Description":"DaprStateStore connector properties"},"tags":{"Type":145,"Flags":0,"Description":"Resource tags."},"location":{"Type":4,"Flags":1,"Description":"The geo-location where the resource lives"}}}},{"7":{"Name":"DaprStateStoreProperties","Discriminator":"kind","BaseProperties":{"provisioningState":{"Type":138,"Flags":2,"Description":"Provisioning state of the connector at the time the operation was called"},"environment":{"Type":4,"Flags":1,"Description":"Fully qualified resource ID for the environment that the connector is linked to"},"application":{"Type":4,"Flags":2,"Description":"Fully qualified resource ID for the application that the connector is consumed by"},"status":{"Type":32,"Flags":0,"Description":"Status of a resource."}},"Elements":{"generic":139,"state.azure.tablestorage":141,"state.sqlserver":143}}},{"6":{"Value":"Succeeded"}},{"6":{"Value":"Failed"}},{"6":{"Value":"Canceled"}},{"6":{"Value":"Accepted"}},{"6":{"Value":"Updating"}},{"6":{"Value":"Deleting"}},{"6":{"Value":"Provisioning"}},{"5":{"Elements":[131,132,133,134,135,136,137]}},{"2":{"Name":"DaprStateStoreGenericResourceProperties","Properties":{"metadata":{"Type":0,"Flags":1,"Description":"Any object"},"type":{"Type":4,"Flags":1,"Description":"Dapr StateStore type. These strings match the format used by Dapr Kubernetes configuration format."},"version":{"Type":4,"Flags":1,"Description":"Dapr component version"},"kind":{"Type":140,"Flags":1,"Description":"The Dapr StateStore kind"}}}},{"6":{"Value":"generic"}},{"2":{"Name":"DaprStateStoreAzureTableStorageResourceProperties","Properties":{"resource":{"Type":4,"Flags":1,"Description":"The resource id of the Azure Storage Table the daprStateStore resource is connected to."},"kind":{"Type":142,"Flags":1,"Description":"The Dapr StateStore kind"}}}},{"6":{"Value":"state.azure.tablestorage"}},{"2":{"Name":"DaprStateStoreSqlServerResourceProperties","Properties":{"resource":{"Type":4,"Flags":1,"Description":"The resource id of the Azure SQL Database the daprStateStore resource is connected to."},"kind":{"Type":144,"Flags":1,"Description":"The Dapr StateStore kind"}}}},{"6":{"Value":"state.sqlserver"}},{"2":{"Name":"TrackedResourceTags","Properties":{},"AdditionalProperties":4}},{"4":{"Name":"Applications.Connector/daprStateStores@2022-03-15-privatepreview","ScopeType":0,"Body":129}},{"6":{"Value":"Applications.Connector/extenders"}},{"6":{"Value":"2022-03-15-privatepreview"}},{"2":{"Name":"Applications.Connector/extenders","Properties":{"id":{"Type":4,"Flags":10,"Description":"The resource id"},"name":{"Type":4,"Flags":9,"Description":"The resource name"},"type":{"Type":147,"Flags":10,"Description":"The resource type"},"apiVersion":{"Type":148,"Flags":10,"Description":"The resource api version"},"systemData":{"Type":11,"Flags":2,"Description":"Metadata pertaining to creation and last modification of the resource."},"properties":{"Type":150,"Flags":1,"Description":"Extender connector properties"},"tags":{"Type":160,"Flags":0,"Description":"Resource tags."},"location":{"Type":4,"Flags":1,"Description":"The geo-location where the resource lives"}}}},{"2":{"Name":"ExtenderProperties","Properties":{"secrets":{"Type":151,"Flags":4,"Description":"The secret values for the given Extender resource"},"provisioningState":{"Type":159,"Flags":2,"Description":"Provisioning state of the connector at the time the operation was called"},"environment":{"Type":4,"Flags":1,"Description":"Fully qualified resource ID for the environment that the connector is linked to"},"application":{"Type":4,"Flags":2,"Description":"Fully qualified resource ID for the application that the connector is consumed by"},"status":{"Type":32,"Flags":0,"Description":"Status of a resource."}},"AdditionalProperties":0}},{"2":{"Name":"ExtenderSecrets","Properties":{},"AdditionalProperties":0}},{"6":{"Value":"Succeeded"}},{"6":{"Value":"Failed"}},{"6":{"Value":"Canceled"}},{"6":{"Value":"Accepted"}},{"6":{"Value":"Updating"}},{"6":{"Value":"Deleting"}},{"6":{"Value":"Provisioning"}},{"5":{"Elements":[152,153,154,155,156,157,158]}},{"2":{"Name":"TrackedResourceTags","Properties":{},"AdditionalProperties":4}},{"4":{"Name":"Applications.Connector/extenders@2022-03-15-privatepreview","ScopeType":0,"Body":149}},{"8":{"Name":"listSecrets","ResourceType":"Applications.Connector/mongoDatabases","ApiVersion":"2022-03-15-privatepreview","Output":23}},{"8":{"Name":"listSecrets","ResourceType":"Applications.Connector/redisCaches","ApiVersion":"2022-03-15-privatepreview","Output":72}},{"8":{"Name":"listSecrets","ResourceType":"Applications.Connector/rabbitMQMessageQueues","ApiVersion":"2022-03-15-privatepreview","Output":87}},{"2":{"Name":"ExtenderSecrets","Properties":{},"AdditionalProperties":0}},{"8":{"Name":"listSecrets","ResourceType":"Applications.Connector/extenders","ApiVersion":"2022-03-15-privatepreview","Output":165}}]
\ No newline at end of file
+[{"1":{"Kind":1}},{"1":{"Kind":2}},{"1":{"Kind":3}},{"1":{"Kind":4}},{"1":{"Kind":5}},{"1":{"Kind":6}},{"1":{"Kind":7}},{"1":{"Kind":8}},{"6":{"Value":"Applications.Connector/mongoDatabases"}},{"6":{"Value":"2022-03-15-privatepreview"}},{"2":{"Name":"Applications.Connector/mongoDatabases","Properties":{"id":{"Type":4,"Flags":10,"Description":"The resource id"},"name":{"Type":4,"Flags":9,"Description":"The resource name"},"type":{"Type":8,"Flags":10,"Description":"The resource type"},"apiVersion":{"Type":9,"Flags":10,"Description":"The resource api version"},"systemData":{"Type":11,"Flags":2,"Description":"Metadata pertaining to creation and last modification of the resource."},"properties":{"Type":22,"Flags":1,"Description":"MongoDatabase connector properties"},"tags":{"Type":34,"Flags":0,"Description":"Resource tags."},"location":{"Type":4,"Flags":1,"Description":"The geo-location where the resource lives"}}}},{"2":{"Name":"SystemData","Properties":{"createdBy":{"Type":4,"Flags":0,"Description":"The identity that created the resource."},"createdByType":{"Type":16,"Flags":0,"Description":"The type of identity that created the resource."},"createdAt":{"Type":4,"Flags":0,"Description":"The timestamp of resource creation (UTC)."},"lastModifiedBy":{"Type":4,"Flags":0,"Description":"The identity that last modified the resource."},"lastModifiedByType":{"Type":21,"Flags":0,"Description":"The type of identity that created the resource."},"lastModifiedAt":{"Type":4,"Flags":0,"Description":"The timestamp of resource last modification (UTC)"}}}},{"6":{"Value":"User"}},{"6":{"Value":"Application"}},{"6":{"Value":"ManagedIdentity"}},{"6":{"Value":"Key"}},{"5":{"Elements":[12,13,14,15]}},{"6":{"Value":"User"}},{"6":{"Value":"Application"}},{"6":{"Value":"ManagedIdentity"}},{"6":{"Value":"Key"}},{"5":{"Elements":[17,18,19,20]}},{"2":{"Name":"MongoDatabaseProperties","Properties":{"secrets":{"Type":23,"Flags":4,"Description":"The secret values for the given MongoDatabase resource"},"provisioningState":{"Type":31,"Flags":2,"Description":"Provisioning state of the connector at the time the operation was called"},"environment":{"Type":4,"Flags":1,"Description":"Fully qualified resource ID for the environment that the connector is linked to"},"application":{"Type":4,"Flags":0,"Description":"Fully qualified resource ID for the application that the connector is consumed by"},"resource":{"Type":4,"Flags":0,"Description":"Fully qualified resource ID of a supported resource with Mongo API to use for this connector"},"host":{"Type":4,"Flags":0,"Description":"Host name of the target Mongo database"},"port":{"Type":3,"Flags":0,"Description":"Port value of the target Mongo database"},"status":{"Type":32,"Flags":0,"Description":"Status of a resource."}}}},{"2":{"Name":"MongoDatabaseSecrets","Properties":{"username":{"Type":4,"Flags":4,"Description":"Username to use when connecting to the target Mongo database"},"password":{"Type":4,"Flags":4,"Description":"Password to use when connecting to the target Mongo database"},"connectionString":{"Type":4,"Flags":4,"Description":"Connection string used to connect to the target Mongo database"}}}},{"6":{"Value":"Succeeded"}},{"6":{"Value":"Failed"}},{"6":{"Value":"Canceled"}},{"6":{"Value":"Accepted"}},{"6":{"Value":"Updating"}},{"6":{"Value":"Deleting"}},{"6":{"Value":"Provisioning"}},{"5":{"Elements":[24,25,26,27,28,29,30]}},{"2":{"Name":"ResourceStatus","Properties":{"outputResources":{"Type":33,"Flags":0,"Description":"Array of AnyObject"}}}},{"3":{"ItemType":0}},{"2":{"Name":"TrackedResourceTags","Properties":{},"AdditionalProperties":4}},{"4":{"Name":"Applications.Connector/mongoDatabases@2022-03-15-privatepreview","ScopeType":0,"Body":10}},{"6":{"Value":"Applications.Connector/daprPubSubBrokers"}},{"6":{"Value":"2022-03-15-privatepreview"}},{"2":{"Name":"Applications.Connector/daprPubSubBrokers","Properties":{"id":{"Type":4,"Flags":10,"Description":"The resource id"},"name":{"Type":4,"Flags":9,"Description":"The resource name"},"type":{"Type":36,"Flags":10,"Description":"The resource type"},"apiVersion":{"Type":37,"Flags":10,"Description":"The resource api version"},"systemData":{"Type":11,"Flags":2,"Description":"Metadata pertaining to creation and last modification of the resource."},"properties":{"Type":39,"Flags":1,"Description":"DaprPubSubBroker connector properties"},"tags":{"Type":52,"Flags":0,"Description":"Resource tags."},"location":{"Type":4,"Flags":1,"Description":"The geo-location where the resource lives"}}}},{"7":{"Name":"DaprPubSubBrokerProperties","Discriminator":"kind","BaseProperties":{"provisioningState":{"Type":47,"Flags":2,"Description":"Provisioning state of the connector at the time the operation was called"},"application":{"Type":4,"Flags":0,"Description":"Fully qualified resource ID for the application that the connector is consumed by"},"environment":{"Type":4,"Flags":1,"Description":"The resource id of the environment linked to the daprPubSubBroker connector"},"status":{"Type":32,"Flags":0,"Description":"Status of a resource."}},"Elements":{"generic":48,"pubsub.azure.servicebus":50}}},{"6":{"Value":"Succeeded"}},{"6":{"Value":"Failed"}},{"6":{"Value":"Canceled"}},{"6":{"Value":"Accepted"}},{"6":{"Value":"Updating"}},{"6":{"Value":"Deleting"}},{"6":{"Value":"Provisioning"}},{"5":{"Elements":[40,41,42,43,44,45,46]}},{"2":{"Name":"DaprPubSubGenericResourceProperties","Properties":{"metadata":{"Type":0,"Flags":1,"Description":"Any object"},"type":{"Type":4,"Flags":1,"Description":"Dapr PubSub type. These strings match the format used by Dapr Kubernetes configuration format."},"version":{"Type":4,"Flags":1,"Description":"Dapr component version"},"kind":{"Type":49,"Flags":1,"Description":"The DaprPubSubProperties kind"}}}},{"6":{"Value":"generic"}},{"2":{"Name":"DaprPubSubAzureServiceBusResourceProperties","Properties":{"resource":{"Type":4,"Flags":1,"Description":"PubSub resource"},"kind":{"Type":51,"Flags":1,"Description":"The DaprPubSubProperties kind"}}}},{"6":{"Value":"pubsub.azure.servicebus"}},{"2":{"Name":"TrackedResourceTags","Properties":{},"AdditionalProperties":4}},{"4":{"Name":"Applications.Connector/daprPubSubBrokers@2022-03-15-privatepreview","ScopeType":0,"Body":38}},{"6":{"Value":"Applications.Connector/sqlDatabases"}},{"6":{"Value":"2022-03-15-privatepreview"}},{"2":{"Name":"Applications.Connector/sqlDatabases","Properties":{"id":{"Type":4,"Flags":10,"Description":"The resource id"},"name":{"Type":4,"Flags":9,"Description":"The resource name"},"type":{"Type":54,"Flags":10,"Description":"The resource type"},"apiVersion":{"Type":55,"Flags":10,"Description":"The resource api version"},"systemData":{"Type":11,"Flags":2,"Description":"Metadata pertaining to creation and last modification of the resource."},"properties":{"Type":57,"Flags":1,"Description":"SQLDatabse connector properties"},"tags":{"Type":66,"Flags":0,"Description":"Resource tags."},"location":{"Type":4,"Flags":1,"Description":"The geo-location where the resource lives"}}}},{"2":{"Name":"SQLDatabaseProperties","Properties":{"provisioningState":{"Type":65,"Flags":2,"Description":"Provisioning state of the connector at the time the operation was called"},"environment":{"Type":4,"Flags":1,"Description":"The resource id of the environment linked to the sqlDatabase connector"},"application":{"Type":4,"Flags":0,"Description":"Fully qualified resource ID for the application that the connector is consumed by"},"resource":{"Type":4,"Flags":0,"Description":"Fully qualified resource ID of a supported resource with SQL API to use for this connector"},"database":{"Type":4,"Flags":0,"Description":"The name of the SQL database."},"server":{"Type":4,"Flags":0,"Description":"The fully qualified domain name of the SQL database."},"status":{"Type":32,"Flags":0,"Description":"Status of a resource."}}}},{"6":{"Value":"Succeeded"}},{"6":{"Value":"Failed"}},{"6":{"Value":"Canceled"}},{"6":{"Value":"Accepted"}},{"6":{"Value":"Updating"}},{"6":{"Value":"Deleting"}},{"6":{"Value":"Provisioning"}},{"5":{"Elements":[58,59,60,61,62,63,64]}},{"2":{"Name":"TrackedResourceTags","Properties":{},"AdditionalProperties":4}},{"4":{"Name":"Applications.Connector/sqlDatabases@2022-03-15-privatepreview","ScopeType":0,"Body":56}},{"6":{"Value":"Applications.Connector/redisCaches"}},{"6":{"Value":"2022-03-15-privatepreview"}},{"2":{"Name":"Applications.Connector/redisCaches","Properties":{"id":{"Type":4,"Flags":10,"Description":"The resource id"},"name":{"Type":4,"Flags":9,"Description":"The resource name"},"type":{"Type":68,"Flags":10,"Description":"The resource type"},"apiVersion":{"Type":69,"Flags":10,"Description":"The resource api version"},"systemData":{"Type":11,"Flags":2,"Description":"Metadata pertaining to creation and last modification of the resource."},"properties":{"Type":71,"Flags":1,"Description":"RedisCache connector properties"},"tags":{"Type":81,"Flags":0,"Description":"Resource tags."},"location":{"Type":4,"Flags":1,"Description":"The geo-location where the resource lives"}}}},{"2":{"Name":"RedisCacheProperties","Properties":{"secrets":{"Type":72,"Flags":4,"Description":"The secret values for the given RedisCache resource"},"provisioningState":{"Type":80,"Flags":2,"Description":"Provisioning state of the connector at the time the operation was called"},"environment":{"Type":4,"Flags":1,"Description":"Fully qualified resource ID for the environment that the connector is linked to"},"application":{"Type":4,"Flags":0,"Description":"Fully qualified resource ID for the application that the connector is consumed by"},"resource":{"Type":4,"Flags":0,"Description":"Fully qualified resource ID of a supported resource with Redis API to use for this connector"},"host":{"Type":4,"Flags":0,"Description":"The host name of the target redis cache"},"port":{"Type":3,"Flags":0,"Description":"The port value of the target redis cache"},"status":{"Type":32,"Flags":0,"Description":"Status of a resource."}}}},{"2":{"Name":"RedisCacheSecrets","Properties":{"connectionString":{"Type":4,"Flags":4,"Description":"The connection string used to connect to the redis cache"},"password":{"Type":4,"Flags":4,"Description":"The password for this Redis instance"}}}},{"6":{"Value":"Succeeded"}},{"6":{"Value":"Failed"}},{"6":{"Value":"Canceled"}},{"6":{"Value":"Accepted"}},{"6":{"Value":"Updating"}},{"6":{"Value":"Deleting"}},{"6":{"Value":"Provisioning"}},{"5":{"Elements":[73,74,75,76,77,78,79]}},{"2":{"Name":"TrackedResourceTags","Properties":{},"AdditionalProperties":4}},{"4":{"Name":"Applications.Connector/redisCaches@2022-03-15-privatepreview","ScopeType":0,"Body":70}},{"6":{"Value":"Applications.Connector/rabbitMQMessageQueues"}},{"6":{"Value":"2022-03-15-privatepreview"}},{"2":{"Name":"Applications.Connector/rabbitMQMessageQueues","Properties":{"id":{"Type":4,"Flags":10,"Description":"The resource id"},"name":{"Type":4,"Flags":9,"Description":"The resource name"},"type":{"Type":83,"Flags":10,"Description":"The resource type"},"apiVersion":{"Type":84,"Flags":10,"Description":"The resource api version"},"systemData":{"Type":11,"Flags":2,"Description":"Metadata pertaining to creation and last modification of the resource."},"properties":{"Type":86,"Flags":1,"Description":"RabbitMQMessageQueue connector properties"},"tags":{"Type":96,"Flags":0,"Description":"Resource tags."},"location":{"Type":4,"Flags":1,"Description":"The geo-location where the resource lives"}}}},{"2":{"Name":"RabbitMQMessageQueueProperties","Properties":{"secrets":{"Type":87,"Flags":4,"Description":"The secret values for the given RabbitMQMessageQueue resource"},"provisioningState":{"Type":95,"Flags":2,"Description":"Provisioning state of the connector at the time the operation was called"},"environment":{"Type":4,"Flags":1,"Description":"Fully qualified resource ID for the environment that the connector is linked to"},"application":{"Type":4,"Flags":0,"Description":"Fully qualified resource ID for the application that the connector is consumed by"},"queue":{"Type":4,"Flags":1,"Description":"The name of the queue"},"status":{"Type":32,"Flags":0,"Description":"Status of a resource."}}}},{"2":{"Name":"RabbitMQSecrets","Properties":{"connectionString":{"Type":4,"Flags":4,"Description":"The connection string used to connect to this RabbitMQ instance"}}}},{"6":{"Value":"Succeeded"}},{"6":{"Value":"Failed"}},{"6":{"Value":"Canceled"}},{"6":{"Value":"Accepted"}},{"6":{"Value":"Updating"}},{"6":{"Value":"Deleting"}},{"6":{"Value":"Provisioning"}},{"5":{"Elements":[88,89,90,91,92,93,94]}},{"2":{"Name":"TrackedResourceTags","Properties":{},"AdditionalProperties":4}},{"4":{"Name":"Applications.Connector/rabbitMQMessageQueues@2022-03-15-privatepreview","ScopeType":0,"Body":85}},{"6":{"Value":"Applications.Connector/daprSecretStores"}},{"6":{"Value":"2022-03-15-privatepreview"}},{"2":{"Name":"Applications.Connector/daprSecretStores","Properties":{"id":{"Type":4,"Flags":10,"Description":"The resource id"},"name":{"Type":4,"Flags":9,"Description":"The resource name"},"type":{"Type":98,"Flags":10,"Description":"The resource type"},"apiVersion":{"Type":99,"Flags":10,"Description":"The resource api version"},"systemData":{"Type":11,"Flags":2,"Description":"Metadata pertaining to creation and last modification of the resource."},"properties":{"Type":101,"Flags":1,"Description":"DaprSecretStore connector properties"},"tags":{"Type":111,"Flags":0,"Description":"Resource tags."},"location":{"Type":4,"Flags":1,"Description":"The geo-location where the resource lives"}}}},{"2":{"Name":"DaprSecretStoreProperties","Properties":{"provisioningState":{"Type":109,"Flags":2,"Description":"Provisioning state of the connector at the time the operation was called"},"application":{"Type":4,"Flags":0,"Description":"Fully qualified resource ID for the application that the connector is consumed by"},"environment":{"Type":4,"Flags":1,"Description":"Fully qualified resource ID for the environment that the connector is linked to"},"kind":{"Type":110,"Flags":1,"Description":"Radius kind for Dapr Secret Store"},"type":{"Type":4,"Flags":1,"Description":"Dapr Secret Store type. These strings match the types defined in Dapr Component format: https://docs.dapr.io/reference/components-reference/supported-secret-stores/"},"version":{"Type":4,"Flags":1,"Description":"Dapr component version"},"metadata":{"Type":0,"Flags":1,"Description":"Any object"},"status":{"Type":32,"Flags":0,"Description":"Status of a resource."}}}},{"6":{"Value":"Succeeded"}},{"6":{"Value":"Failed"}},{"6":{"Value":"Canceled"}},{"6":{"Value":"Accepted"}},{"6":{"Value":"Updating"}},{"6":{"Value":"Deleting"}},{"6":{"Value":"Provisioning"}},{"5":{"Elements":[102,103,104,105,106,107,108]}},{"6":{"Value":"generic"}},{"2":{"Name":"TrackedResourceTags","Properties":{},"AdditionalProperties":4}},{"4":{"Name":"Applications.Connector/daprSecretStores@2022-03-15-privatepreview","ScopeType":0,"Body":100}},{"6":{"Value":"Applications.Connector/daprInvokeHttpRoutes"}},{"6":{"Value":"2022-03-15-privatepreview"}},{"2":{"Name":"Applications.Connector/daprInvokeHttpRoutes","Properties":{"id":{"Type":4,"Flags":10,"Description":"The resource id"},"name":{"Type":4,"Flags":9,"Description":"The resource name"},"type":{"Type":113,"Flags":10,"Description":"The resource type"},"apiVersion":{"Type":114,"Flags":10,"Description":"The resource api version"},"systemData":{"Type":11,"Flags":2,"Description":"Metadata pertaining to creation and last modification of the resource."},"properties":{"Type":116,"Flags":1,"Description":"DaprInvokeHttpRoute connector properties"},"tags":{"Type":125,"Flags":0,"Description":"Resource tags."},"location":{"Type":4,"Flags":1,"Description":"The geo-location where the resource lives"}}}},{"2":{"Name":"DaprInvokeHttpRouteProperties","Properties":{"provisioningState":{"Type":124,"Flags":2,"Description":"Provisioning state of the connector at the time the operation was called"},"environment":{"Type":4,"Flags":1,"Description":"Fully qualified resource ID for the environment that the connector is linked to"},"application":{"Type":4,"Flags":0,"Description":"Fully qualified resource ID for the application that the connector is consumed by"},"appId":{"Type":4,"Flags":1,"Description":"The Dapr appId used for the route"},"status":{"Type":32,"Flags":0,"Description":"Status of a resource."}}}},{"6":{"Value":"Succeeded"}},{"6":{"Value":"Failed"}},{"6":{"Value":"Canceled"}},{"6":{"Value":"Accepted"}},{"6":{"Value":"Updating"}},{"6":{"Value":"Deleting"}},{"6":{"Value":"Provisioning"}},{"5":{"Elements":[117,118,119,120,121,122,123]}},{"2":{"Name":"TrackedResourceTags","Properties":{},"AdditionalProperties":4}},{"4":{"Name":"Applications.Connector/daprInvokeHttpRoutes@2022-03-15-privatepreview","ScopeType":0,"Body":115}},{"6":{"Value":"Applications.Connector/daprStateStores"}},{"6":{"Value":"2022-03-15-privatepreview"}},{"2":{"Name":"Applications.Connector/daprStateStores","Properties":{"id":{"Type":4,"Flags":10,"Description":"The resource id"},"name":{"Type":4,"Flags":9,"Description":"The resource name"},"type":{"Type":127,"Flags":10,"Description":"The resource type"},"apiVersion":{"Type":128,"Flags":10,"Description":"The resource api version"},"systemData":{"Type":11,"Flags":2,"Description":"Metadata pertaining to creation and last modification of the resource."},"properties":{"Type":130,"Flags":1,"Description":"DaprStateStore connector properties"},"tags":{"Type":145,"Flags":0,"Description":"Resource tags."},"location":{"Type":4,"Flags":1,"Description":"The geo-location where the resource lives"}}}},{"7":{"Name":"DaprStateStoreProperties","Discriminator":"kind","BaseProperties":{"provisioningState":{"Type":138,"Flags":2,"Description":"Provisioning state of the connector at the time the operation was called"},"environment":{"Type":4,"Flags":1,"Description":"Fully qualified resource ID for the environment that the connector is linked to"},"application":{"Type":4,"Flags":0,"Description":"Fully qualified resource ID for the application that the connector is consumed by"},"status":{"Type":32,"Flags":0,"Description":"Status of a resource."}},"Elements":{"generic":139,"state.azure.tablestorage":141,"state.sqlserver":143}}},{"6":{"Value":"Succeeded"}},{"6":{"Value":"Failed"}},{"6":{"Value":"Canceled"}},{"6":{"Value":"Accepted"}},{"6":{"Value":"Updating"}},{"6":{"Value":"Deleting"}},{"6":{"Value":"Provisioning"}},{"5":{"Elements":[131,132,133,134,135,136,137]}},{"2":{"Name":"DaprStateStoreGenericResourceProperties","Properties":{"metadata":{"Type":0,"Flags":1,"Description":"Any object"},"type":{"Type":4,"Flags":1,"Description":"Dapr StateStore type. These strings match the format used by Dapr Kubernetes configuration format."},"version":{"Type":4,"Flags":1,"Description":"Dapr component version"},"kind":{"Type":140,"Flags":1,"Description":"The Dapr StateStore kind"}}}},{"6":{"Value":"generic"}},{"2":{"Name":"DaprStateStoreAzureTableStorageResourceProperties","Properties":{"resource":{"Type":4,"Flags":1,"Description":"The resource id of the Azure Storage Table the daprStateStore resource is connected to."},"kind":{"Type":142,"Flags":1,"Description":"The Dapr StateStore kind"}}}},{"6":{"Value":"state.azure.tablestorage"}},{"2":{"Name":"DaprStateStoreSqlServerResourceProperties","Properties":{"resource":{"Type":4,"Flags":1,"Description":"The resource id of the Azure SQL Database the daprStateStore resource is connected to."},"kind":{"Type":144,"Flags":1,"Description":"The Dapr StateStore kind"}}}},{"6":{"Value":"state.sqlserver"}},{"2":{"Name":"TrackedResourceTags","Properties":{},"AdditionalProperties":4}},{"4":{"Name":"Applications.Connector/daprStateStores@2022-03-15-privatepreview","ScopeType":0,"Body":129}},{"6":{"Value":"Applications.Connector/extenders"}},{"6":{"Value":"2022-03-15-privatepreview"}},{"2":{"Name":"Applications.Connector/extenders","Properties":{"id":{"Type":4,"Flags":10,"Description":"The resource id"},"name":{"Type":4,"Flags":9,"Description":"The resource name"},"type":{"Type":147,"Flags":10,"Description":"The resource type"},"apiVersion":{"Type":148,"Flags":10,"Description":"The resource api version"},"systemData":{"Type":11,"Flags":2,"Description":"Metadata pertaining to creation and last modification of the resource."},"properties":{"Type":150,"Flags":1,"Description":"Extender connector properties"},"tags":{"Type":160,"Flags":0,"Description":"Resource tags."},"location":{"Type":4,"Flags":1,"Description":"The geo-location where the resource lives"}}}},{"2":{"Name":"ExtenderProperties","Properties":{"secrets":{"Type":151,"Flags":4,"Description":"The secret values for the given Extender resource"},"provisioningState":{"Type":159,"Flags":2,"Description":"Provisioning state of the connector at the time the operation was called"},"environment":{"Type":4,"Flags":1,"Description":"Fully qualified resource ID for the environment that the connector is linked to"},"application":{"Type":4,"Flags":0,"Description":"Fully qualified resource ID for the application that the connector is consumed by"},"status":{"Type":32,"Flags":0,"Description":"Status of a resource."}},"AdditionalProperties":0}},{"2":{"Name":"ExtenderSecrets","Properties":{},"AdditionalProperties":0}},{"6":{"Value":"Succeeded"}},{"6":{"Value":"Failed"}},{"6":{"Value":"Canceled"}},{"6":{"Value":"Accepted"}},{"6":{"Value":"Updating"}},{"6":{"Value":"Deleting"}},{"6":{"Value":"Provisioning"}},{"5":{"Elements":[152,153,154,155,156,157,158]}},{"2":{"Name":"TrackedResourceTags","Properties":{},"AdditionalProperties":4}},{"4":{"Name":"Applications.Connector/extenders@2022-03-15-privatepreview","ScopeType":0,"Body":149}},{"8":{"Name":"listSecrets","ResourceType":"Applications.Connector/mongoDatabases","ApiVersion":"2022-03-15-privatepreview","Output":23}},{"8":{"Name":"listSecrets","ResourceType":"Applications.Connector/redisCaches","ApiVersion":"2022-03-15-privatepreview","Output":72}},{"8":{"Name":"listSecrets","ResourceType":"Applications.Connector/rabbitMQMessageQueues","ApiVersion":"2022-03-15-privatepreview","Output":87}},{"2":{"Name":"ExtenderSecrets","Properties":{},"AdditionalProperties":0}},{"8":{"Name":"listSecrets","ResourceType":"Applications.Connector/extenders","ApiVersion":"2022-03-15-privatepreview","Output":165}}]
\ No newline at end of file
diff --git a/hack/bicep-types-radius/generated/applications/applications.connector/2022-03-15-privatepreview/types.md b/hack/bicep-types-radius/generated/applications/applications.connector/2022-03-15-privatepreview/types.md
index 1e4122d3e..644ae2a3d 100644
--- a/hack/bicep-types-radius/generated/applications/applications.connector/2022-03-15-privatepreview/types.md
+++ b/hack/bicep-types-radius/generated/applications/applications.connector/2022-03-15-privatepreview/types.md
@@ -131,7 +131,7 @@
 ## DaprInvokeHttpRouteProperties
 ### Properties
 * **appId**: string (Required): The Dapr appId used for the route
-* **application**: string (ReadOnly): Fully qualified resource ID for the application that the connector is consumed by
+* **application**: string: Fully qualified resource ID for the application that the connector is consumed by
 * **environment**: string (Required): Fully qualified resource ID for the environment that the connector is linked to
 * **provisioningState**: 'Accepted' | 'Canceled' | 'Deleting' | 'Failed' | 'Provisioning' | 'Succeeded' | 'Updating' (ReadOnly): Provisioning state of the connector at the time the operation was called
 * **status**: [ResourceStatus](#resourcestatus): Status of a resource.
@@ -158,7 +158,7 @@
 * **Discriminator**: kind
 
 ### Base Properties
-* **application**: string (ReadOnly): Fully qualified resource ID for the application that the connector is consumed by
+* **application**: string: Fully qualified resource ID for the application that the connector is consumed by
 * **environment**: string (Required): The resource id of the environment linked to the daprPubSubBroker connector
 * **provisioningState**: 'Accepted' | 'Canceled' | 'Deleting' | 'Failed' | 'Provisioning' | 'Succeeded' | 'Updating' (ReadOnly): Provisioning state of the connector at the time the operation was called
 * **status**: [ResourceStatus](#resourcestatus): Status of a resource.
@@ -182,7 +182,7 @@
 
 ## DaprSecretStoreProperties
 ### Properties
-* **application**: string (ReadOnly): Fully qualified resource ID for the application that the connector is consumed by
+* **application**: string: Fully qualified resource ID for the application that the connector is consumed by
 * **environment**: string (Required): Fully qualified resource ID for the environment that the connector is linked to
 * **kind**: 'generic' (Required): Radius kind for Dapr Secret Store
 * **metadata**: any (Required): Any object
@@ -200,7 +200,7 @@
 * **Discriminator**: kind
 
 ### Base Properties
-* **application**: string (ReadOnly): Fully qualified resource ID for the application that the connector is consumed by
+* **application**: string: Fully qualified resource ID for the application that the connector is consumed by
 * **environment**: string (Required): Fully qualified resource ID for the environment that the connector is linked to
 * **provisioningState**: 'Accepted' | 'Canceled' | 'Deleting' | 'Failed' | 'Provisioning' | 'Succeeded' | 'Updating' (ReadOnly): Provisioning state of the connector at the time the operation was called
 * **status**: [ResourceStatus](#resourcestatus): Status of a resource.
@@ -229,7 +229,7 @@
 
 ## ExtenderProperties
 ### Properties
-* **application**: string (ReadOnly): Fully qualified resource ID for the application that the connector is consumed by
+* **application**: string: Fully qualified resource ID for the application that the connector is consumed by
 * **environment**: string (Required): Fully qualified resource ID for the environment that the connector is linked to
 * **provisioningState**: 'Accepted' | 'Canceled' | 'Deleting' | 'Failed' | 'Provisioning' | 'Succeeded' | 'Updating' (ReadOnly): Provisioning state of the connector at the time the operation was called
 * **secrets**: [ExtenderSecrets](#extendersecrets) (WriteOnly): The secret values for the given Extender resource
@@ -249,7 +249,7 @@
 
 ## MongoDatabaseProperties
 ### Properties
-* **application**: string (ReadOnly): Fully qualified resource ID for the application that the connector is consumed by
+* **application**: string: Fully qualified resource ID for the application that the connector is consumed by
 * **environment**: string (Required): Fully qualified resource ID for the environment that the connector is linked to
 * **host**: string: Host name of the target Mongo database
 * **port**: int: Port value of the target Mongo database
@@ -271,7 +271,7 @@
 
 ## RabbitMQMessageQueueProperties
 ### Properties
-* **application**: string (ReadOnly): Fully qualified resource ID for the application that the connector is consumed by
+* **application**: string: Fully qualified resource ID for the application that the connector is consumed by
 * **environment**: string (Required): Fully qualified resource ID for the environment that the connector is linked to
 * **provisioningState**: 'Accepted' | 'Canceled' | 'Deleting' | 'Failed' | 'Provisioning' | 'Succeeded' | 'Updating' (ReadOnly): Provisioning state of the connector at the time the operation was called
 * **queue**: string (Required): The name of the queue
@@ -289,7 +289,7 @@
 
 ## RedisCacheProperties
 ### Properties
-* **application**: string (ReadOnly): Fully qualified resource ID for the application that the connector is consumed by
+* **application**: string: Fully qualified resource ID for the application that the connector is consumed by
 * **environment**: string (Required): Fully qualified resource ID for the environment that the connector is linked to
 * **host**: string: The host name of the target redis cache
 * **port**: int: The port value of the target redis cache
@@ -310,7 +310,7 @@
 
 ## SQLDatabaseProperties
 ### Properties
-* **application**: string (ReadOnly): Fully qualified resource ID for the application that the connector is consumed by
+* **application**: string: Fully qualified resource ID for the application that the connector is consumed by
 * **database**: string: The name of the SQL database.
 * **environment**: string (Required): The resource id of the environment linked to the sqlDatabase connector
 * **provisioningState**: 'Accepted' | 'Canceled' | 'Deleting' | 'Failed' | 'Provisioning' | 'Succeeded' | 'Updating' (ReadOnly): Provisioning state of the connector at the time the operation was called
diff --git a/pkg/connectorrp/api/v20220315privatepreview/zz_generated_models.go b/pkg/connectorrp/api/v20220315privatepreview/zz_generated_models.go
index bb5f5c843..ebd81dd62 100644
--- a/pkg/connectorrp/api/v20220315privatepreview/zz_generated_models.go
+++ b/pkg/connectorrp/api/v20220315privatepreview/zz_generated_models.go
@@ -82,8 +82,8 @@ type DaprInvokeHTTPRouteProperties struct {
 	// REQUIRED; Fully qualified resource ID for the environment that the connector is linked to
 	Environment *string `json:"environment,omitempty"`
 
-	// READ-ONLY; Fully qualified resource ID for the application that the connector is consumed by
-	Application *string `json:"application,omitempty" azure:"ro"`
+	// Fully qualified resource ID for the application that the connector is consumed by
+	Application *string `json:"application,omitempty"`
 
 	// READ-ONLY; Provisioning state of the daprInvokeHttpRoute connector at the time the operation was called
 	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
@@ -269,8 +269,8 @@ type DaprPubSubBrokerProperties struct {
 	// REQUIRED; The DaprPubSubProperties kind
 	Kind *DaprPubSubBrokerPropertiesKind `json:"kind,omitempty"`
 
-	// READ-ONLY; Fully qualified resource ID for the application that the connector is consumed by
-	Application *string `json:"application,omitempty" azure:"ro"`
+	// Fully qualified resource ID for the application that the connector is consumed by
+	Application *string `json:"application,omitempty"`
 
 	// READ-ONLY; Provisioning state of the daprPubSubBroker connector at the time the operation was called
 	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
@@ -475,8 +475,8 @@ type DaprSecretStoreProperties struct {
 	// REQUIRED; Dapr component version
 	Version *string `json:"version,omitempty"`
 
-	// READ-ONLY; Fully qualified resource ID for the application that the connector is consumed by
-	Application *string `json:"application,omitempty" azure:"ro"`
+	// Fully qualified resource ID for the application that the connector is consumed by
+	Application *string `json:"application,omitempty"`
 
 	// READ-ONLY; Provisioning state of the dapr secret store connector at the time the operation was called
 	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
@@ -726,8 +726,8 @@ type DaprStateStoreProperties struct {
 	// REQUIRED; The Dapr StateStore kind
 	Kind *DaprStateStorePropertiesKind `json:"kind,omitempty"`
 
-	// READ-ONLY; Fully qualified resource ID for the application that the connector is consumed by
-	Application *string `json:"application,omitempty" azure:"ro"`
+	// Fully qualified resource ID for the application that the connector is consumed by
+	Application *string `json:"application,omitempty"`
 
 	// READ-ONLY; Provisioning state of the daprStateStore connector at the time the operation was called
 	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
@@ -1045,8 +1045,8 @@ type ExtenderResponseProperties struct {
 	// OPTIONAL; Contains additional key/value pairs not defined in the schema.
 	AdditionalProperties map[string]interface{}
 
-	// READ-ONLY; Fully qualified resource ID for the application that the connector is consumed by
-	Application *string `json:"application,omitempty" azure:"ro"`
+	// Fully qualified resource ID for the application that the connector is consumed by
+	Application *string `json:"application,omitempty"`
 
 	// READ-ONLY; Provisioning state of the extender connector at the time the operation was called
 	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
@@ -1295,6 +1295,9 @@ type MongoDatabaseResponseProperties struct {
 	// REQUIRED; Fully qualified resource ID for the environment that the connector is linked to
 	Environment *string `json:"environment,omitempty"`
 
+	// Fully qualified resource ID for the application that the connector is consumed by
+	Application *string `json:"application,omitempty"`
+
 	// Host name of the target Mongo database
 	Host *string `json:"host,omitempty"`
 
@@ -1304,9 +1307,6 @@ type MongoDatabaseResponseProperties struct {
 	// Fully qualified resource ID of a supported resource with Mongo API to use for this connector
 	Resource *string `json:"resource,omitempty"`
 
-	// READ-ONLY; Fully qualified resource ID for the application that the connector is consumed by
-	Application *string `json:"application,omitempty" azure:"ro"`
-
 	// READ-ONLY; Provisioning state of the mongo database connector at the time the operation was called
 	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
 }
@@ -1561,8 +1561,8 @@ type RabbitMQMessageQueueResponseProperties struct {
 	// REQUIRED; The name of the queue
 	Queue *string `json:"queue,omitempty"`
 
-	// READ-ONLY; Fully qualified resource ID for the application that the connector is consumed by
-	Application *string `json:"application,omitempty" azure:"ro"`
+	// Fully qualified resource ID for the application that the connector is consumed by
+	Application *string `json:"application,omitempty"`
 
 	// READ-ONLY; Provisioning state of the rabbitMQ message queue connector at the time the operation was called
 	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
@@ -1801,6 +1801,9 @@ type RedisCacheResponseProperties struct {
 	// REQUIRED; Fully qualified resource ID for the environment that the connector is linked to
 	Environment *string `json:"environment,omitempty"`
 
+	// Fully qualified resource ID for the application that the connector is consumed by
+	Application *string `json:"application,omitempty"`
+
 	// The host name of the target redis cache
 	Host *string `json:"host,omitempty"`
 
@@ -1810,9 +1813,6 @@ type RedisCacheResponseProperties struct {
 	// Fully qualified resource ID of a supported resource with Redis API to use for this connector
 	Resource *string `json:"resource,omitempty"`
 
-	// READ-ONLY; Fully qualified resource ID for the application that the connector is consumed by
-	Application *string `json:"application,omitempty" azure:"ro"`
-
 	// READ-ONLY; Provisioning state of the redis cache connector at the time the operation was called
 	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
 }
@@ -2045,6 +2045,9 @@ type SQLDatabaseProperties struct {
 	// REQUIRED; The resource id of the environment linked to the sqlDatabase connector
 	Environment *string `json:"environment,omitempty"`
 
+	// Fully qualified resource ID for the environment that the connector is linked to
+	Application *string `json:"application,omitempty"`
+
 	// The name of the SQL database.
 	Database *string `json:"database,omitempty"`
 
@@ -2054,9 +2057,6 @@ type SQLDatabaseProperties struct {
 	// The fully qualified domain name of the SQL database.
 	Server *string `json:"server,omitempty"`
 
-	// READ-ONLY; Fully qualified resource ID for the environment that the connector is linked to
-	Application *string `json:"application,omitempty" azure:"ro"`
-
 	// READ-ONLY; Provisioning state of the SQL database connector at the time the operation was called
 	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
 }
diff --git a/pkg/connectorrp/frontend/controller/mongodatabases/listsecretsmongodatabase.go b/pkg/connectorrp/frontend/controller/mongodatabases/listsecretsmongodatabase.go
index 212405956..b1b75b1c7 100644
--- a/pkg/connectorrp/frontend/controller/mongodatabases/listsecretsmongodatabase.go
+++ b/pkg/connectorrp/frontend/controller/mongodatabases/listsecretsmongodatabase.go
@@ -50,10 +50,16 @@ func (ctrl *ListSecretsMongoDatabase) Run(ctx context.Context, req *http.Request
 	if err != nil {
 		return nil, err
 	}
-	mongoSecrets := datamodel.MongoDatabaseSecrets{
-		Username:         secrets[renderers.UsernameStringValue].(string),
-		Password:         secrets[renderers.PasswordStringHolder].(string),
-		ConnectionString: secrets[renderers.ConnectionStringValue].(string),
+
+	mongoSecrets := datamodel.MongoDatabaseSecrets{}
+	if username, ok := secrets[renderers.UsernameStringValue].(string); ok {
+		mongoSecrets.Username = username
+	}
+	if password, ok := secrets[renderers.PasswordStringHolder].(string); ok {
+		mongoSecrets.Password = password
+	}
+	if connectionString, ok := secrets[renderers.ConnectionStringValue].(string); ok {
+		mongoSecrets.ConnectionString = connectionString
 	}
 
 	versioned, _ := converter.MongoDatabaseSecretsDataModelToVersioned(&mongoSecrets, sCtx.APIVersion)
diff --git a/pkg/connectorrp/frontend/controller/rabbitmqmessagequeues/listsecretsrabbitmq.go b/pkg/connectorrp/frontend/controller/rabbitmqmessagequeues/listsecretsrabbitmq.go
index 3687db536..1c12021b6 100644
--- a/pkg/connectorrp/frontend/controller/rabbitmqmessagequeues/listsecretsrabbitmq.go
+++ b/pkg/connectorrp/frontend/controller/rabbitmqmessagequeues/listsecretsrabbitmq.go
@@ -53,8 +53,9 @@ func (ctrl *ListSecretsRabbitMQMessageQueue) Run(ctx context.Context, req *http.
 		return nil, err
 	}
 
-	redisSecrets := datamodel.RabbitMQSecrets{
-		ConnectionString: secrets[renderers.ConnectionStringValue].(string),
+	redisSecrets := datamodel.RabbitMQSecrets{}
+	if connectionString, ok := secrets[renderers.ConnectionStringValue].(string); ok {
+		redisSecrets.ConnectionString = connectionString
 	}
 
 	versioned, _ := converter.RabbitMQSecretsDataModelToVersioned(&redisSecrets, sCtx.APIVersion)
diff --git a/pkg/connectorrp/frontend/controller/rediscaches/listsecretsrediscache.go b/pkg/connectorrp/frontend/controller/rediscaches/listsecretsrediscache.go
index 00806509e..2917232fa 100644
--- a/pkg/connectorrp/frontend/controller/rediscaches/listsecretsrediscache.go
+++ b/pkg/connectorrp/frontend/controller/rediscaches/listsecretsrediscache.go
@@ -53,9 +53,12 @@ func (ctrl *ListSecretsRedisCache) Run(ctx context.Context, req *http.Request) (
 		return nil, err
 	}
 
-	redisSecrets := datamodel.RedisCacheSecrets{
-		Password:         secrets[renderers.PasswordStringHolder].(string),
-		ConnectionString: secrets[renderers.ConnectionStringValue].(string),
+	redisSecrets := datamodel.RedisCacheSecrets{}
+	if password, ok := secrets[renderers.PasswordStringHolder].(string); ok {
+		redisSecrets.Password = password
+	}
+	if connectionString, ok := secrets[renderers.ConnectionStringValue].(string); ok {
+		redisSecrets.ConnectionString = connectionString
 	}
 
 	versioned, _ := converter.RedisCacheSecretsDataModelToVersioned(&redisSecrets, sCtx.APIVersion)
diff --git a/pkg/corerp/frontend/controller/containers/createorupdatecontainer.go b/pkg/corerp/frontend/controller/containers/createorupdatecontainer.go
index 58120a675..15dbc11c3 100644
--- a/pkg/corerp/frontend/controller/containers/createorupdatecontainer.go
+++ b/pkg/corerp/frontend/controller/containers/createorupdatecontainer.go
@@ -93,7 +93,8 @@ func (e *CreateOrUpdateContainer) Run(ctx context.Context, req *http.Request) (r
 		respCode = http.StatusAccepted
 	}
 
-	return rest.NewAsyncOperationResponse(newResource, newResource.TrackedResource.Location, respCode, serviceCtx.ResourceID, serviceCtx.OperationID), nil
+	return rest.NewAsyncOperationResponse(newResource, newResource.TrackedResource.Location, respCode,
+		serviceCtx.ResourceID, serviceCtx.OperationID, serviceCtx.APIVersion), nil
 }
 
 // Validate extracts versioned resource from request and validate the properties.
diff --git a/pkg/corerp/frontend/controller/containers/deletecontainer.go b/pkg/corerp/frontend/controller/containers/deletecontainer.go
index ae819fadd..f7544032f 100644
--- a/pkg/corerp/frontend/controller/containers/deletecontainer.go
+++ b/pkg/corerp/frontend/controller/containers/deletecontainer.go
@@ -72,5 +72,5 @@ func (dc *DeleteContainer) Run(ctx context.Context, req *http.Request) (rest.Res
 	existingContainer.Properties.ProvisioningState = v1.ProvisioningStateDeleting
 
 	return rest.NewAsyncOperationResponse(existingContainer, existingContainer.TrackedResource.Location, http.StatusAccepted,
-		serviceCtx.ResourceID, serviceCtx.OperationID), nil
+		serviceCtx.ResourceID, serviceCtx.OperationID, serviceCtx.APIVersion), nil
 }
diff --git a/pkg/corerp/frontend/controller/gateway/createorupdategateway.go b/pkg/corerp/frontend/controller/gateway/createorupdategateway.go
index 00d184f78..91ec359ee 100644
--- a/pkg/corerp/frontend/controller/gateway/createorupdategateway.go
+++ b/pkg/corerp/frontend/controller/gateway/createorupdategateway.go
@@ -91,7 +91,8 @@ func (e *CreateOrUpdateGateway) Run(ctx context.Context, req *http.Request) (res
 		respCode = http.StatusAccepted
 	}
 
-	return rest.NewAsyncOperationResponse(newResource, newResource.TrackedResource.Location, respCode, serviceCtx.ResourceID, serviceCtx.OperationID), nil
+	return rest.NewAsyncOperationResponse(newResource, newResource.TrackedResource.Location, respCode,
+		serviceCtx.ResourceID, serviceCtx.OperationID, serviceCtx.APIVersion), nil
 
 }
 
diff --git a/pkg/corerp/frontend/controller/gateway/deletegateway.go b/pkg/corerp/frontend/controller/gateway/deletegateway.go
index 0d03ef57d..70268327a 100644
--- a/pkg/corerp/frontend/controller/gateway/deletegateway.go
+++ b/pkg/corerp/frontend/controller/gateway/deletegateway.go
@@ -72,5 +72,5 @@ func (dc *DeleteGateway) Run(ctx context.Context, req *http.Request) (rest.Respo
 	existingGateway.Properties.ProvisioningState = v1.ProvisioningStateDeleting
 
 	return rest.NewAsyncOperationResponse(existingGateway, existingGateway.TrackedResource.Location, http.StatusAccepted,
-		serviceCtx.ResourceID, serviceCtx.OperationID), nil
+		serviceCtx.ResourceID, serviceCtx.OperationID, serviceCtx.APIVersion), nil
 }
diff --git a/pkg/corerp/frontend/controller/httproutes/createorupdatehttproute.go b/pkg/corerp/frontend/controller/httproutes/createorupdatehttproute.go
index 7be8bae54..06668c9d2 100644
--- a/pkg/corerp/frontend/controller/httproutes/createorupdatehttproute.go
+++ b/pkg/corerp/frontend/controller/httproutes/createorupdatehttproute.go
@@ -92,7 +92,8 @@ func (e *CreateOrUpdateHTTPRoute) Run(ctx context.Context, req *http.Request) (r
 		respCode = http.StatusAccepted
 	}
 
-	return rest.NewAsyncOperationResponse(newResource, newResource.TrackedResource.Location, respCode, serviceCtx.ResourceID, serviceCtx.OperationID), nil
+	return rest.NewAsyncOperationResponse(newResource, newResource.TrackedResource.Location, respCode,
+		serviceCtx.ResourceID, serviceCtx.OperationID, serviceCtx.APIVersion), nil
 }
 
 // Validate extracts versioned resource from request and validate the properties.
diff --git a/pkg/corerp/frontend/controller/httproutes/deletehttproute.go b/pkg/corerp/frontend/controller/httproutes/deletehttproute.go
index a0ec5269c..e890c578d 100644
--- a/pkg/corerp/frontend/controller/httproutes/deletehttproute.go
+++ b/pkg/corerp/frontend/controller/httproutes/deletehttproute.go
@@ -72,5 +72,5 @@ func (e *DeleteHTTPRoute) Run(ctx context.Context, req *http.Request) (rest.Resp
 	existingResource.Properties.ProvisioningState = v1.ProvisioningStateDeleting
 
 	return rest.NewAsyncOperationResponse(existingResource, existingResource.TrackedResource.Location, http.StatusAccepted,
-		serviceCtx.ResourceID, serviceCtx.OperationID), nil
+		serviceCtx.ResourceID, serviceCtx.OperationID, serviceCtx.APIVersion), nil
 }
diff --git a/pkg/radrp/rest/results.go b/pkg/radrp/rest/results.go
index 3c28570b7..f75d621cc 100644
--- a/pkg/radrp/rest/results.go
+++ b/pkg/radrp/rest/results.go
@@ -228,16 +228,18 @@ type AsyncOperationResponse struct {
 	Code        int
 	ResourceID  resources.ID
 	OperationID uuid.UUID
+	APIVersion  string
 }
 
 // NewAsyncOperationResponse creates an AsyncOperationResponse
-func NewAsyncOperationResponse(body interface{}, location string, code int, resourceID resources.ID, operationID uuid.UUID) Response {
+func NewAsyncOperationResponse(body interface{}, location string, code int, resourceID resources.ID, operationID uuid.UUID, apiVersion string) Response {
 	return &AsyncOperationResponse{
 		Body:        body,
 		Location:    location,
 		Code:        code,
 		ResourceID:  resourceID,
 		OperationID: operationID,
+		APIVersion:  apiVersion,
 	}
 }
 
@@ -248,8 +250,8 @@ func (r *AsyncOperationResponse) Apply(ctx context.Context, w http.ResponseWrite
 		return fmt.Errorf("error marshaling %T: %w", r.Body, err)
 	}
 
-	locationHeader := getAsyncLocationPath(r.ResourceID, r.Location, "operationResults", r.OperationID)
-	azureAsyncOpHeader := getAsyncLocationPath(r.ResourceID, r.Location, "operationStatuses", r.OperationID)
+	locationHeader := r.getAsyncLocationPath(req, "operationResults")
+	azureAsyncOpHeader := r.getAsyncLocationPath(req, "operationStatuses")
 
 	// Write Headers
 	w.Header().Add("Content-Type", "application/json")
@@ -268,14 +270,29 @@ func (r *AsyncOperationResponse) Apply(ctx context.Context, w http.ResponseWrite
 }
 
 // getAsyncLocationPath returns the async operation location path for the given resource type.
-func getAsyncLocationPath(resourceID resources.ID, location string, resourceType string, operationID uuid.UUID) string {
-	root := fmt.Sprintf("/subscriptions/%s", resourceID.FindScope(resources.SubscriptionsSegment))
+func (r *AsyncOperationResponse) getAsyncLocationPath(req *http.Request, resourceType string) string {
+	dest := url.URL{
+		Host:   req.Host,
+		Scheme: req.URL.Scheme,
+		Path: fmt.Sprintf("%s/providers/%s/locations/%s/%s/%s", r.ResourceID.PlaneScope(),
+			r.ResourceID.ProviderNamespace(), r.Location, resourceType, r.OperationID.String()),
+	}
+
+	query := url.Values{}
+	query.Add("api-version", r.APIVersion)
+	dest.RawQuery = query.Encode()
+
+	// In production this is the header we get from app service for the 'real' protocol
+	protocol := req.Header.Get("X-Forwarded-Proto")
+	if protocol != "" {
+		dest.Scheme = protocol
+	}
 
-	if resourceID.IsUCPQualfied() {
-		root = fmt.Sprintf("/planes/%s", resourceID.PlaneNamespace())
+	if dest.Scheme == "" {
+		dest.Scheme = "http"
 	}
 
-	return fmt.Sprintf("%s/providers/%s/locations/%s/%s/%s", root, resourceID.ProviderNamespace(), location, resourceType, operationID.String())
+	return dest.String()
 }
 
 // NoContentResponse represents an HTTP 204.
diff --git a/swagger/specification/applications/resource-manager/Applications.Connector/preview/2022-03-15-privatepreview/global.json b/swagger/specification/applications/resource-manager/Applications.Connector/preview/2022-03-15-privatepreview/global.json
index b643fa54c..6f0b2acd3 100644
--- a/swagger/specification/applications/resource-manager/Applications.Connector/preview/2022-03-15-privatepreview/global.json
+++ b/swagger/specification/applications/resource-manager/Applications.Connector/preview/2022-03-15-privatepreview/global.json
@@ -54,7 +54,6 @@
     "Application": {
       "description": "Fully qualified resource ID for the application that the connector is consumed by",
       "type": "string",
-      "readOnly": true,
       "example": [
         "app.id"
       ]



Test patch:
diff --git a/pkg/connectorrp/frontend/controller/extenders/listsecretsextender_test.go b/pkg/connectorrp/frontend/controller/extenders/listsecretsextender_test.go
index 5ea242bc4..dd7058c0c 100644
--- a/pkg/connectorrp/frontend/controller/extenders/listsecretsextender_test.go
+++ b/pkg/connectorrp/frontend/controller/extenders/listsecretsextender_test.go
@@ -110,8 +110,6 @@ func TestListSecrets_20220315PrivatePreview(t *testing.T) {
 		actualOutput := &map[string]interface{}{}
 		_ = json.Unmarshal(w.Body.Bytes(), actualOutput)
 
-		// TODO update to expect secrets values after controller is integrated with backend.
-		// require.Equal(t, expectedOutput.Properties.Secrets, actualOutput)
 		require.Equal(t, expectedSecrets["accountSid"], (*actualOutput)["accountSid"])
 		require.Equal(t, expectedSecrets["authToken"], (*actualOutput)["authToken"])
 	})
diff --git a/pkg/connectorrp/frontend/controller/mongodatabases/listsecretsmongodatabase_test.go b/pkg/connectorrp/frontend/controller/mongodatabases/listsecretsmongodatabase_test.go
index 41acf3f62..711bfde29 100644
--- a/pkg/connectorrp/frontend/controller/mongodatabases/listsecretsmongodatabase_test.go
+++ b/pkg/connectorrp/frontend/controller/mongodatabases/listsecretsmongodatabase_test.go
@@ -33,11 +33,6 @@ func TestListSecrets_20220315PrivatePreview(t *testing.T) {
 	ctx := context.Background()
 
 	_, mongoDataModel, _ := getTestModels20220315privatepreview()
-	expectedSecrets := map[string]interface{}{
-		renderers.UsernameStringValue:   "testUser",
-		renderers.PasswordStringHolder:  "testPassword",
-		renderers.ConnectionStringValue: "testConnectionString",
-	}
 
 	t.Run("listSecrets non-existing resource", func(t *testing.T) {
 		w := httptest.NewRecorder()
@@ -71,6 +66,54 @@ func TestListSecrets_20220315PrivatePreview(t *testing.T) {
 		w := httptest.NewRecorder()
 		req, _ := radiustesting.GetARMTestHTTPRequest(ctx, http.MethodGet, testHeaderfile, nil)
 		ctx := radiustesting.ARMTestContextFromRequest(req)
+		expectedSecrets := map[string]interface{}{
+			renderers.UsernameStringValue:   "testUser",
+			renderers.PasswordStringHolder:  "testPassword",
+			renderers.ConnectionStringValue: "testConnectionString",
+		}
+
+		mStorageClient.
+			EXPECT().
+			Get(gomock.Any(), gomock.Any()).
+			DoAndReturn(func(ctx context.Context, id string, _ ...store.GetOptions) (*store.Object, error) {
+				return &store.Object{
+					Metadata: store.Metadata{ID: id},
+					Data:     mongoDataModel,
+				}, nil
+			})
+		mDeploymentProcessor.EXPECT().FetchSecrets(gomock.Any(), gomock.Any()).Times(1).Return(expectedSecrets, nil)
+
+		opts := ctrl.Options{
+			StorageClient: mStorageClient,
+			GetDeploymentProcessor: func() deployment.DeploymentProcessor {
+				return mDeploymentProcessor
+			},
+		}
+
+		ctl, err := NewListSecretsMongoDatabase(opts)
+
+		require.NoError(t, err)
+		resp, err := ctl.Run(ctx, req)
+		require.NoError(t, err)
+		_ = resp.Apply(ctx, w, req)
+		require.Equal(t, 200, w.Result().StatusCode)
+
+		actualOutput := &v20220315privatepreview.MongoDatabaseSecrets{}
+		_ = json.Unmarshal(w.Body.Bytes(), actualOutput)
+
+		require.Equal(t, expectedSecrets[renderers.ConnectionStringValue], *actualOutput.ConnectionString)
+		require.Equal(t, expectedSecrets[renderers.UsernameStringValue], *actualOutput.Username)
+		require.Equal(t, expectedSecrets[renderers.PasswordStringHolder], *actualOutput.Password)
+	})
+
+	t.Run("listSecrets existing resource partial secrets", func(t *testing.T) {
+		w := httptest.NewRecorder()
+		req, _ := radiustesting.GetARMTestHTTPRequest(ctx, http.MethodGet, testHeaderfile, nil)
+		ctx := radiustesting.ARMTestContextFromRequest(req)
+		expectedSecrets := map[string]interface{}{
+			renderers.UsernameStringValue:   "testUser",
+			renderers.ConnectionStringValue: "testConnectionString",
+		}
 
 		mStorageClient.
 			EXPECT().
@@ -101,6 +144,7 @@ func TestListSecrets_20220315PrivatePreview(t *testing.T) {
 		actualOutput := &v20220315privatepreview.MongoDatabaseSecrets{}
 		_ = json.Unmarshal(w.Body.Bytes(), actualOutput)
 
+		require.Equal(t, expectedSecrets[renderers.UsernameStringValue], *actualOutput.Username)
 		require.Equal(t, expectedSecrets[renderers.ConnectionStringValue], *actualOutput.ConnectionString)
 	})
 
diff --git a/pkg/connectorrp/frontend/controller/rabbitmqmessagequeues/listsecretsrabbitmq_test.go b/pkg/connectorrp/frontend/controller/rabbitmqmessagequeues/listsecretsrabbitmq_test.go
index 36f264a4f..e8eceee00 100644
--- a/pkg/connectorrp/frontend/controller/rabbitmqmessagequeues/listsecretsrabbitmq_test.go
+++ b/pkg/connectorrp/frontend/controller/rabbitmqmessagequeues/listsecretsrabbitmq_test.go
@@ -33,9 +33,6 @@ func TestListSecrets_20220315PrivatePreview(t *testing.T) {
 	ctx := context.Background()
 
 	_, rabbitMQDataModel, _ := getTestModels20220315privatepreview()
-	expectedSecrets := map[string]interface{}{
-		renderers.ConnectionStringValue: "connection://string",
-	}
 
 	t.Run("listSecrets non-existing resource", func(t *testing.T) {
 		w := httptest.NewRecorder()
@@ -69,6 +66,9 @@ func TestListSecrets_20220315PrivatePreview(t *testing.T) {
 		w := httptest.NewRecorder()
 		req, _ := radiustesting.GetARMTestHTTPRequest(ctx, http.MethodGet, testHeaderfile, nil)
 		ctx := radiustesting.ARMTestContextFromRequest(req)
+		expectedSecrets := map[string]interface{}{
+			renderers.ConnectionStringValue: "connection://string",
+		}
 
 		mStorageClient.
 			EXPECT().
@@ -102,6 +102,44 @@ func TestListSecrets_20220315PrivatePreview(t *testing.T) {
 		require.Equal(t, expectedSecrets[renderers.ConnectionStringValue], *actualOutput.ConnectionString)
 	})
 
+	t.Run("listSecrets existing resource empty secrets", func(t *testing.T) {
+		w := httptest.NewRecorder()
+		req, _ := radiustesting.GetARMTestHTTPRequest(ctx, http.MethodGet, testHeaderfile, nil)
+		ctx := radiustesting.ARMTestContextFromRequest(req)
+		expectedSecrets := map[string]interface{}{}
+
+		mStorageClient.
+			EXPECT().
+			Get(gomock.Any(), gomock.Any()).
+			DoAndReturn(func(ctx context.Context, id string, _ ...store.GetOptions) (*store.Object, error) {
+				return &store.Object{
+					Metadata: store.Metadata{ID: id},
+					Data:     rabbitMQDataModel,
+				}, nil
+			})
+		mDeploymentProcessor.EXPECT().FetchSecrets(gomock.Any(), gomock.Any()).Times(1).Return(expectedSecrets, nil)
+
+		opts := ctrl.Options{
+			StorageClient: mStorageClient,
+			GetDeploymentProcessor: func() deployment.DeploymentProcessor {
+				return mDeploymentProcessor
+			},
+		}
+
+		ctl, err := NewListSecretsRabbitMQMessageQueue(opts)
+
+		require.NoError(t, err)
+		resp, err := ctl.Run(ctx, req)
+		require.NoError(t, err)
+		_ = resp.Apply(ctx, w, req)
+		require.Equal(t, 200, w.Result().StatusCode)
+
+		actualOutput := &v20220315privatepreview.RabbitMQSecrets{}
+		_ = json.Unmarshal(w.Body.Bytes(), actualOutput)
+
+		require.Equal(t, "", *actualOutput.ConnectionString)
+	})
+
 	t.Run("listSecrets error retrieving resource", func(t *testing.T) {
 		req, _ := radiustesting.GetARMTestHTTPRequest(ctx, http.MethodGet, testHeaderfile, nil)
 		ctx := radiustesting.ARMTestContextFromRequest(req)
diff --git a/pkg/connectorrp/frontend/controller/rediscaches/listsecretsrediscache_test.go b/pkg/connectorrp/frontend/controller/rediscaches/listsecretsrediscache_test.go
index f98a4749e..843f63963 100644
--- a/pkg/connectorrp/frontend/controller/rediscaches/listsecretsrediscache_test.go
+++ b/pkg/connectorrp/frontend/controller/rediscaches/listsecretsrediscache_test.go
@@ -33,10 +33,6 @@ func TestListSecrets_20220315PrivatePreview(t *testing.T) {
 	ctx := context.Background()
 
 	_, redisDataModel, _ := getTestModels20220315privatepreview()
-	expectedSecrets := map[string]interface{}{
-		renderers.PasswordStringHolder:  "testPassword",
-		renderers.ConnectionStringValue: "test-connection-string",
-	}
 
 	t.Run("listSecrets non-existing resource", func(t *testing.T) {
 		w := httptest.NewRecorder()
@@ -70,6 +66,10 @@ func TestListSecrets_20220315PrivatePreview(t *testing.T) {
 		w := httptest.NewRecorder()
 		req, _ := radiustesting.GetARMTestHTTPRequest(ctx, http.MethodGet, testHeaderfile, nil)
 		ctx := radiustesting.ARMTestContextFromRequest(req)
+		expectedSecrets := map[string]interface{}{
+			renderers.PasswordStringHolder:  "testPassword",
+			renderers.ConnectionStringValue: "test-connection-string",
+		}
 
 		mStorageClient.
 			EXPECT().
@@ -104,6 +104,46 @@ func TestListSecrets_20220315PrivatePreview(t *testing.T) {
 		require.Equal(t, expectedSecrets[renderers.PasswordStringHolder], *actualOutput.Password)
 	})
 
+	t.Run("listSecrets existing resource partial secrets", func(t *testing.T) {
+		w := httptest.NewRecorder()
+		req, _ := radiustesting.GetARMTestHTTPRequest(ctx, http.MethodGet, testHeaderfile, nil)
+		ctx := radiustesting.ARMTestContextFromRequest(req)
+		expectedSecrets := map[string]interface{}{
+			renderers.PasswordStringHolder: "testPassword",
+		}
+
+		mStorageClient.
+			EXPECT().
+			Get(gomock.Any(), gomock.Any()).
+			DoAndReturn(func(ctx context.Context, id string, _ ...store.GetOptions) (*store.Object, error) {
+				return &store.Object{
+					Metadata: store.Metadata{ID: id},
+					Data:     redisDataModel,
+				}, nil
+			})
+		mDeploymentProcessor.EXPECT().FetchSecrets(gomock.Any(), gomock.Any()).Times(1).Return(expectedSecrets, nil)
+
+		opts := ctrl.Options{
+			StorageClient: mStorageClient,
+			GetDeploymentProcessor: func() deployment.DeploymentProcessor {
+				return mDeploymentProcessor
+			},
+		}
+
+		ctl, err := NewListSecretsRedisCache(opts)
+
+		require.NoError(t, err)
+		resp, err := ctl.Run(ctx, req)
+		require.NoError(t, err)
+		_ = resp.Apply(ctx, w, req)
+		require.Equal(t, 200, w.Result().StatusCode)
+
+		actualOutput := &v20220315privatepreview.RedisCacheSecrets{}
+		_ = json.Unmarshal(w.Body.Bytes(), actualOutput)
+
+		require.Equal(t, expectedSecrets[renderers.PasswordStringHolder], *actualOutput.Password)
+	})
+
 	t.Run("listSecrets error retrieving resource", func(t *testing.T) {
 		req, _ := radiustesting.GetARMTestHTTPRequest(ctx, http.MethodGet, testHeaderfile, nil)
 		ctx := radiustesting.ARMTestContextFromRequest(req)
diff --git a/pkg/corerp/frontend/controller/containers/createorupdatecontainer_test.go b/pkg/corerp/frontend/controller/containers/createorupdatecontainer_test.go
index 78935494e..8d62ff44d 100644
--- a/pkg/corerp/frontend/controller/containers/createorupdatecontainer_test.go
+++ b/pkg/corerp/frontend/controller/containers/createorupdatecontainer_test.go
@@ -11,16 +11,15 @@ import (
 	"fmt"
 	"net/http"
 	"net/http/httptest"
+	"net/url"
 	"testing"
 
 	"github.com/golang/mock/gomock"
-	"github.com/google/uuid"
 	v1 "github.com/project-radius/radius/pkg/armrpc/api/v1"
 	"github.com/project-radius/radius/pkg/armrpc/asyncoperation/statusmanager"
 	ctrl "github.com/project-radius/radius/pkg/armrpc/frontend/controller"
 	"github.com/project-radius/radius/pkg/armrpc/servicecontext"
 	radiustesting "github.com/project-radius/radius/pkg/corerp/testing"
-	"github.com/project-radius/radius/pkg/ucp/resources"
 	"github.com/project-radius/radius/pkg/ucp/store"
 	"github.com/stretchr/testify/require"
 )
@@ -137,11 +136,11 @@ func TestCreateOrUpdateContainerRun_20220315PrivatePreview(t *testing.T) {
 				_ = resp.Apply(ctx, w, req)
 				require.Equal(t, tt.rCode, w.Result().StatusCode)
 
-				locationHeader := getAsyncLocationPath(sCtx.ResourceID, containerDataModel.TrackedResource.Location, "operationResults", sCtx.OperationID)
+				locationHeader := getAsyncLocationPath(sCtx, containerDataModel.TrackedResource.Location, "operationResults", req)
 				require.NotNil(t, w.Header().Get("Location"))
 				require.Equal(t, locationHeader, w.Header().Get("Location"))
 
-				azureAsyncOpHeader := getAsyncLocationPath(sCtx.ResourceID, containerDataModel.TrackedResource.Location, "operationStatuses", sCtx.OperationID)
+				azureAsyncOpHeader := getAsyncLocationPath(sCtx, containerDataModel.TrackedResource.Location, "operationStatuses", req)
 				require.NotNil(t, w.Header().Get("Azure-AsyncOperation"))
 				require.Equal(t, azureAsyncOpHeader, w.Header().Get("Azure-AsyncOperation"))
 			}
@@ -259,11 +258,11 @@ func TestCreateOrUpdateContainerRun_20220315PrivatePreview(t *testing.T) {
 				_ = resp.Apply(ctx, w, req)
 				require.Equal(t, tt.rCode, w.Result().StatusCode)
 
-				locationHeader := getAsyncLocationPath(sCtx.ResourceID, containerDataModel.TrackedResource.Location, "operationResults", sCtx.OperationID)
+				locationHeader := getAsyncLocationPath(sCtx, containerDataModel.TrackedResource.Location, "operationResults", req)
 				require.NotNil(t, w.Header().Get("Location"))
 				require.Equal(t, locationHeader, w.Header().Get("Location"))
 
-				azureAsyncOpHeader := getAsyncLocationPath(sCtx.ResourceID, containerDataModel.TrackedResource.Location, "operationStatuses", sCtx.OperationID)
+				azureAsyncOpHeader := getAsyncLocationPath(sCtx, containerDataModel.TrackedResource.Location, "operationStatuses", req)
 				require.NotNil(t, w.Header().Get("Azure-AsyncOperation"))
 				require.Equal(t, azureAsyncOpHeader, w.Header().Get("Azure-AsyncOperation"))
 			}
@@ -271,12 +270,27 @@ func TestCreateOrUpdateContainerRun_20220315PrivatePreview(t *testing.T) {
 	}
 }
 
-func getAsyncLocationPath(resourceID resources.ID, location string, resourceType string, operationID uuid.UUID) string {
-	root := fmt.Sprintf("/subscriptions/%s", resourceID.FindScope(resources.SubscriptionsSegment))
+func getAsyncLocationPath(sCtx *servicecontext.ARMRequestContext, location string, resourceType string, req *http.Request) string {
+	dest := url.URL{
+		Host:   req.Host,
+		Scheme: req.URL.Scheme,
+		Path: fmt.Sprintf("%s/providers/%s/locations/%s/%s/%s", sCtx.ResourceID.PlaneScope(),
+			sCtx.ResourceID.ProviderNamespace(), location, resourceType, sCtx.OperationID.String()),
+	}
+
+	query := url.Values{}
+	query.Add("api-version", sCtx.APIVersion)
+	dest.RawQuery = query.Encode()
+
+	// In production this is the header we get from app service for the 'real' protocol
+	protocol := req.Header.Get("X-Forwarded-Proto")
+	if protocol != "" {
+		dest.Scheme = protocol
+	}
 
-	if resourceID.IsUCPQualfied() {
-		root = fmt.Sprintf("/planes/%s", resourceID.PlaneNamespace())
+	if dest.Scheme == "" {
+		dest.Scheme = "http"
 	}
 
-	return fmt.Sprintf("%s/providers/%s/locations/%s/%s/%s", root, resourceID.ProviderNamespace(), location, resourceType, operationID.String())
+	return dest.String()
 }
diff --git a/pkg/corerp/frontend/controller/gateway/createorupdategateway_test.go b/pkg/corerp/frontend/controller/gateway/createorupdategateway_test.go
index 009343812..55f7000cc 100644
--- a/pkg/corerp/frontend/controller/gateway/createorupdategateway_test.go
+++ b/pkg/corerp/frontend/controller/gateway/createorupdategateway_test.go
@@ -11,16 +11,15 @@ import (
 	"fmt"
 	"net/http"
 	"net/http/httptest"
+	"net/url"
 	"testing"
 
 	"github.com/golang/mock/gomock"
-	"github.com/google/uuid"
 	v1 "github.com/project-radius/radius/pkg/armrpc/api/v1"
 	"github.com/project-radius/radius/pkg/armrpc/asyncoperation/statusmanager"
 	ctrl "github.com/project-radius/radius/pkg/armrpc/frontend/controller"
 	"github.com/project-radius/radius/pkg/armrpc/servicecontext"
 	radiustesting "github.com/project-radius/radius/pkg/corerp/testing"
-	"github.com/project-radius/radius/pkg/ucp/resources"
 	"github.com/project-radius/radius/pkg/ucp/store"
 	"github.com/stretchr/testify/require"
 )
@@ -137,11 +136,11 @@ func TestCreateOrUpdateGatewayRun_20220315PrivatePreview(t *testing.T) {
 				_ = resp.Apply(ctx, w, req)
 				require.Equal(t, tt.rCode, w.Result().StatusCode)
 
-				locationHeader := getAsyncLocationPath(sCtx.ResourceID, gatewayDataModel.TrackedResource.Location, "operationResults", sCtx.OperationID)
+				locationHeader := getAsyncLocationPath(sCtx, gatewayDataModel.TrackedResource.Location, "operationResults", req)
 				require.NotNil(t, w.Header().Get("Location"))
 				require.Equal(t, locationHeader, w.Header().Get("Location"))
 
-				azureAsyncOpHeader := getAsyncLocationPath(sCtx.ResourceID, gatewayDataModel.TrackedResource.Location, "operationStatuses", sCtx.OperationID)
+				azureAsyncOpHeader := getAsyncLocationPath(sCtx, gatewayDataModel.TrackedResource.Location, "operationStatuses", req)
 				require.NotNil(t, w.Header().Get("Azure-AsyncOperation"))
 				require.Equal(t, azureAsyncOpHeader, w.Header().Get("Azure-AsyncOperation"))
 			}
@@ -259,11 +258,11 @@ func TestCreateOrUpdateGatewayRun_20220315PrivatePreview(t *testing.T) {
 				_ = resp.Apply(ctx, w, req)
 				require.Equal(t, tt.rCode, w.Result().StatusCode)
 
-				locationHeader := getAsyncLocationPath(sCtx.ResourceID, gatewayDataModel.TrackedResource.Location, "operationResults", sCtx.OperationID)
+				locationHeader := getAsyncLocationPath(sCtx, gatewayDataModel.TrackedResource.Location, "operationResults", req)
 				require.NotNil(t, w.Header().Get("Location"))
 				require.Equal(t, locationHeader, w.Header().Get("Location"))
 
-				azureAsyncOpHeader := getAsyncLocationPath(sCtx.ResourceID, gatewayDataModel.TrackedResource.Location, "operationStatuses", sCtx.OperationID)
+				azureAsyncOpHeader := getAsyncLocationPath(sCtx, gatewayDataModel.TrackedResource.Location, "operationStatuses", req)
 				require.NotNil(t, w.Header().Get("Azure-AsyncOperation"))
 				require.Equal(t, azureAsyncOpHeader, w.Header().Get("Azure-AsyncOperation"))
 			}
@@ -271,12 +270,27 @@ func TestCreateOrUpdateGatewayRun_20220315PrivatePreview(t *testing.T) {
 	}
 }
 
-func getAsyncLocationPath(resourceID resources.ID, location string, resourceType string, operationID uuid.UUID) string {
-	root := fmt.Sprintf("/subscriptions/%s", resourceID.FindScope(resources.SubscriptionsSegment))
+func getAsyncLocationPath(sCtx *servicecontext.ARMRequestContext, location string, resourceType string, req *http.Request) string {
+	dest := url.URL{
+		Host:   req.Host,
+		Scheme: req.URL.Scheme,
+		Path: fmt.Sprintf("%s/providers/%s/locations/%s/%s/%s", sCtx.ResourceID.PlaneScope(),
+			sCtx.ResourceID.ProviderNamespace(), location, resourceType, sCtx.OperationID.String()),
+	}
+
+	query := url.Values{}
+	query.Add("api-version", sCtx.APIVersion)
+	dest.RawQuery = query.Encode()
+
+	// In production this is the header we get from app service for the 'real' protocol
+	protocol := req.Header.Get("X-Forwarded-Proto")
+	if protocol != "" {
+		dest.Scheme = protocol
+	}
 
-	if resourceID.IsUCPQualfied() {
-		root = fmt.Sprintf("/planes/%s", resourceID.PlaneNamespace())
+	if dest.Scheme == "" {
+		dest.Scheme = "http"
 	}
 
-	return fmt.Sprintf("%s/providers/%s/locations/%s/%s/%s", root, resourceID.ProviderNamespace(), location, resourceType, operationID.String())
+	return dest.String()
 }
diff --git a/pkg/corerp/frontend/controller/httproutes/createorupdatehttproute_test.go b/pkg/corerp/frontend/controller/httproutes/createorupdatehttproute_test.go
index 94763add8..c362cfeef 100644
--- a/pkg/corerp/frontend/controller/httproutes/createorupdatehttproute_test.go
+++ b/pkg/corerp/frontend/controller/httproutes/createorupdatehttproute_test.go
@@ -11,16 +11,15 @@ import (
 	"fmt"
 	"net/http"
 	"net/http/httptest"
+	"net/url"
 	"testing"
 
 	"github.com/golang/mock/gomock"
-	"github.com/google/uuid"
 	v1 "github.com/project-radius/radius/pkg/armrpc/api/v1"
 	"github.com/project-radius/radius/pkg/armrpc/asyncoperation/statusmanager"
 	ctrl "github.com/project-radius/radius/pkg/armrpc/frontend/controller"
 	"github.com/project-radius/radius/pkg/armrpc/servicecontext"
 	radiustesting "github.com/project-radius/radius/pkg/corerp/testing"
-	"github.com/project-radius/radius/pkg/ucp/resources"
 	"github.com/project-radius/radius/pkg/ucp/store"
 	"github.com/stretchr/testify/require"
 )
@@ -137,11 +136,11 @@ func TestCreateOrUpdateHTTPRouteRun_20220315PrivatePreview(t *testing.T) {
 				_ = resp.Apply(ctx, w, req)
 				require.Equal(t, tt.rCode, w.Result().StatusCode)
 
-				locationHeader := getAsyncLocationPath(sCtx.ResourceID, httprouteDataModel.TrackedResource.Location, "operationResults", sCtx.OperationID)
+				locationHeader := getAsyncLocationPath(sCtx, httprouteDataModel.TrackedResource.Location, "operationResults", req)
 				require.NotNil(t, w.Header().Get("Location"))
 				require.Equal(t, locationHeader, w.Header().Get("Location"))
 
-				azureAsyncOpHeader := getAsyncLocationPath(sCtx.ResourceID, httprouteDataModel.TrackedResource.Location, "operationStatuses", sCtx.OperationID)
+				azureAsyncOpHeader := getAsyncLocationPath(sCtx, httprouteDataModel.TrackedResource.Location, "operationStatuses", req)
 				require.NotNil(t, w.Header().Get("Azure-AsyncOperation"))
 				require.Equal(t, azureAsyncOpHeader, w.Header().Get("Azure-AsyncOperation"))
 			}
@@ -259,11 +258,11 @@ func TestCreateOrUpdateHTTPRouteRun_20220315PrivatePreview(t *testing.T) {
 				_ = resp.Apply(ctx, w, req)
 				require.Equal(t, tt.rCode, w.Result().StatusCode)
 
-				locationHeader := getAsyncLocationPath(sCtx.ResourceID, httprouteDataModel.TrackedResource.Location, "operationResults", sCtx.OperationID)
+				locationHeader := getAsyncLocationPath(sCtx, httprouteDataModel.TrackedResource.Location, "operationResults", req)
 				require.NotNil(t, w.Header().Get("Location"))
 				require.Equal(t, locationHeader, w.Header().Get("Location"))
 
-				azureAsyncOpHeader := getAsyncLocationPath(sCtx.ResourceID, httprouteDataModel.TrackedResource.Location, "operationStatuses", sCtx.OperationID)
+				azureAsyncOpHeader := getAsyncLocationPath(sCtx, httprouteDataModel.TrackedResource.Location, "operationStatuses", req)
 				require.NotNil(t, w.Header().Get("Azure-AsyncOperation"))
 				require.Equal(t, azureAsyncOpHeader, w.Header().Get("Azure-AsyncOperation"))
 			}
@@ -271,12 +270,27 @@ func TestCreateOrUpdateHTTPRouteRun_20220315PrivatePreview(t *testing.T) {
 	}
 }
 
-func getAsyncLocationPath(resourceID resources.ID, location string, resourceType string, operationID uuid.UUID) string {
-	root := fmt.Sprintf("/subscriptions/%s", resourceID.FindScope(resources.SubscriptionsSegment))
+func getAsyncLocationPath(sCtx *servicecontext.ARMRequestContext, location string, resourceType string, req *http.Request) string {
+	dest := url.URL{
+		Host:   req.Host,
+		Scheme: req.URL.Scheme,
+		Path: fmt.Sprintf("%s/providers/%s/locations/%s/%s/%s", sCtx.ResourceID.PlaneScope(),
+			sCtx.ResourceID.ProviderNamespace(), location, resourceType, sCtx.OperationID.String()),
+	}
+
+	query := url.Values{}
+	query.Add("api-version", sCtx.APIVersion)
+	dest.RawQuery = query.Encode()
+
+	// In production this is the header we get from app service for the 'real' protocol
+	protocol := req.Header.Get("X-Forwarded-Proto")
+	if protocol != "" {
+		dest.Scheme = protocol
+	}
 
-	if resourceID.IsUCPQualfied() {
-		root = fmt.Sprintf("/planes/%s", resourceID.PlaneNamespace())
+	if dest.Scheme == "" {
+		dest.Scheme = "http"
 	}
 
-	return fmt.Sprintf("%s/providers/%s/locations/%s/%s/%s", root, resourceID.ProviderNamespace(), location, resourceType, operationID.String())
+	return dest.String()
 }
diff --git a/pkg/radrp/rest/results_test.go b/pkg/radrp/rest/results_test.go
index f9945abbc..8bef7b144 100644
--- a/pkg/radrp/rest/results_test.go
+++ b/pkg/radrp/rest/results_test.go
@@ -11,6 +11,7 @@ import (
 	"github.com/google/uuid"
 	"github.com/stretchr/testify/require"
 
+	"github.com/project-radius/radius/pkg/corerp/datamodel"
 	"github.com/project-radius/radius/pkg/providers"
 	"github.com/project-radius/radius/pkg/radrp/outputresource"
 	"github.com/project-radius/radius/pkg/resourcekinds"
@@ -532,43 +533,33 @@ func TestGetAsyncLocationPath(t *testing.T) {
 	operationID := uuid.New()
 
 	testCases := []struct {
-		desc     string
-		rID      string
-		rType    string
-		loc      string
-		opID     uuid.UUID
-		expected string
+		desc string
+		base string
+		rID  string
+		loc  string
+		opID uuid.UUID
+		av   string
+		or   string
+		os   string
 	}{
 		{
-			"ucp-location-header",
+			"ucp-test-headers",
+			"https://ucp.dev",
 			"/planes/radius/local/resourceGroups/test-rg/providers/Applications.Core/containers/test-container-0",
-			"operationResults",
 			"global",
 			operationID,
+			"2022-03-15-privatepreview",
 			fmt.Sprintf("/planes/radius/local/providers/Applications.Core/locations/global/operationResults/%s", operationID.String()),
-		},
-		{
-			"ucp-azure-asyncoperation-header",
-			"/planes/radius/local/resourceGroups/test-rg/providers/Applications.Core/containers/test-container-0",
-			"operationStatuses",
-			"global",
-			operationID,
 			fmt.Sprintf("/planes/radius/local/providers/Applications.Core/locations/global/operationStatuses/%s", operationID.String()),
 		},
 		{
-			"arm-location-header",
+			"arm-test-headers",
+			"https://azure.dev",
 			"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test-rg/providers/Applications.Core/containers/test-container-0",
-			"operationResults",
 			"global",
 			operationID,
+			"2022-03-15-privatepreview",
 			fmt.Sprintf("/subscriptions/00000000-0000-0000-0000-000000000000/providers/Applications.Core/locations/global/operationResults/%s", operationID.String()),
-		},
-		{
-			"arm-azure-asyncoperation-header",
-			"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test-rg/providers/Applications.Core/containers/test-container-0",
-			"operationStatuses",
-			"global",
-			operationID,
 			fmt.Sprintf("/subscriptions/00000000-0000-0000-0000-000000000000/providers/Applications.Core/locations/global/operationStatuses/%s", operationID.String()),
 		},
 	}
@@ -577,7 +568,20 @@ func TestGetAsyncLocationPath(t *testing.T) {
 		t.Run(tt.desc, func(t *testing.T) {
 			resourceID, err := resources.Parse(tt.rID)
 			require.NoError(t, err)
-			require.Equal(t, tt.expected, getAsyncLocationPath(resourceID, tt.loc, tt.rType, tt.opID))
+
+			body := &datamodel.ContainerResource{}
+			r := NewAsyncOperationResponse(body, tt.loc, http.StatusAccepted, resourceID, tt.opID, tt.av)
+
+			req := httptest.NewRequest("GET", tt.base, nil)
+			w := httptest.NewRecorder()
+			err = r.Apply(context.Background(), w, req)
+			require.NoError(t, err)
+
+			require.NotNil(t, w.Header().Get("Location"))
+			require.Equal(t, tt.base+tt.or+"?api-version="+tt.av, w.Header().Get("Location"))
+
+			require.NotNil(t, w.Header().Get("Azure-AsyncHeader"))
+			require.Equal(t, tt.base+tt.os+"?api-version="+tt.av, w.Header().Get("Azure-AsyncOperation"))
 		})
 	}
 }