Speech Services API v3.1-preview.1
Speech Services API v3.1-preview.1.
Update Web Hook
If the property secret in the configuration is omitted or contains an empty string, future callbacks won't contain X-MicrosoftSpeechServices-Signature headers. If the property contains a non-empty string, it will be used to create a SHA256 hash of the payload with the secret as HMAC key. This hash will be set as X-MicrosoftSpeechServices-Signature header when calling back into the registered URL.
If the URL changes, the web hook will stop receiving events until a challenge/response is completed. To do this, a request with the event type challenge will be made with a query parameter called validationToken. Respond to the challenge with a 200 OK containing the value of the validationToken query parameter as the response body. When the challenge/response is successfully completed, the web hook will begin receiving events.
Select the testing console in the region where you created your resource:
Open API testing consoleRequest URL
Request parameters
Format - uuid. The identifier of the web hook.
Request headers
Request body
The updated values for the web hook.
{
"webUrl": "string",
"properties": {
"secret": "string"
},
"events": {
"datasetCreation": true,
"datasetProcessing": true,
"datasetCompletion": true,
"datasetDeletion": true,
"modelCreation": true,
"modelProcessing": true,
"modelCompletion": true,
"modelDeletion": true,
"evaluationCreation": true,
"evaluationProcessing": true,
"evaluationCompletion": true,
"evaluationDeletion": true,
"transcriptionCreation": true,
"transcriptionProcessing": true,
"transcriptionCompletion": true,
"transcriptionDeletion": true,
"endpointCreation": true,
"endpointProcessing": true,
"endpointCompletion": true,
"endpointDeletion": true,
"ping": true,
"challenge": true
},
"displayName": "string",
"description": "string",
"customProperties": {}
}
{
"title": "WebHookUpdate",
"type": "object",
"properties": {
"webUrl": {
"format": "uri",
"description": "The registered URL that will be used to send the POST requests for the registered events to.",
"type": "string"
},
"properties": {
"title": "WebHookPropertiesUpdate",
"type": "object",
"properties": {
"secret": {
"description": "A secret that will be used to create a SHA256 hash of the payload with the secret as HMAC key.\r\nThis hash will be set as X-MicrosoftSpeechServices-Signature header when calling back into the registered URL.",
"type": "string"
}
}
},
"events": {
"title": "WebHookEvents",
"type": "object",
"properties": {
"datasetCreation": {
"type": "boolean"
},
"datasetProcessing": {
"type": "boolean"
},
"datasetCompletion": {
"type": "boolean"
},
"datasetDeletion": {
"type": "boolean"
},
"modelCreation": {
"type": "boolean"
},
"modelProcessing": {
"type": "boolean"
},
"modelCompletion": {
"type": "boolean"
},
"modelDeletion": {
"type": "boolean"
},
"evaluationCreation": {
"type": "boolean"
},
"evaluationProcessing": {
"type": "boolean"
},
"evaluationCompletion": {
"type": "boolean"
},
"evaluationDeletion": {
"type": "boolean"
},
"transcriptionCreation": {
"type": "boolean"
},
"transcriptionProcessing": {
"type": "boolean"
},
"transcriptionCompletion": {
"type": "boolean"
},
"transcriptionDeletion": {
"type": "boolean"
},
"endpointCreation": {
"type": "boolean"
},
"endpointProcessing": {
"type": "boolean"
},
"endpointCompletion": {
"type": "boolean"
},
"endpointDeletion": {
"type": "boolean"
},
"ping": {
"type": "boolean"
},
"challenge": {
"type": "boolean"
}
}
},
"displayName": {
"description": "The name of the object.",
"type": "string"
},
"description": {
"description": "The description of the object.",
"type": "string"
},
"customProperties": {
"description": "The custom properties of this entity. The maximum allowed key length is 64 characters, the maximum\r\nallowed value length is 256 characters and the count of allowed entries is 10.",
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
{
"webUrl": "string",
"properties": {
"secret": "string"
},
"events": {
"datasetCreation": true,
"datasetProcessing": true,
"datasetCompletion": true,
"datasetDeletion": true,
"modelCreation": true,
"modelProcessing": true,
"modelCompletion": true,
"modelDeletion": true,
"evaluationCreation": true,
"evaluationProcessing": true,
"evaluationCompletion": true,
"evaluationDeletion": true,
"transcriptionCreation": true,
"transcriptionProcessing": true,
"transcriptionCompletion": true,
"transcriptionDeletion": true,
"endpointCreation": true,
"endpointProcessing": true,
"endpointCompletion": true,
"endpointDeletion": true,
"ping": true,
"challenge": true
},
"displayName": "string",
"description": "string",
"customProperties": {}
}
{
"title": "WebHookUpdate",
"type": "object",
"properties": {
"webUrl": {
"format": "uri",
"description": "The registered URL that will be used to send the POST requests for the registered events to.",
"type": "string"
},
"properties": {
"title": "WebHookPropertiesUpdate",
"type": "object",
"properties": {
"secret": {
"description": "A secret that will be used to create a SHA256 hash of the payload with the secret as HMAC key.\r\nThis hash will be set as X-MicrosoftSpeechServices-Signature header when calling back into the registered URL.",
"type": "string"
}
}
},
"events": {
"title": "WebHookEvents",
"type": "object",
"properties": {
"datasetCreation": {
"type": "boolean"
},
"datasetProcessing": {
"type": "boolean"
},
"datasetCompletion": {
"type": "boolean"
},
"datasetDeletion": {
"type": "boolean"
},
"modelCreation": {
"type": "boolean"
},
"modelProcessing": {
"type": "boolean"
},
"modelCompletion": {
"type": "boolean"
},
"modelDeletion": {
"type": "boolean"
},
"evaluationCreation": {
"type": "boolean"
},
"evaluationProcessing": {
"type": "boolean"
},
"evaluationCompletion": {
"type": "boolean"
},
"evaluationDeletion": {
"type": "boolean"
},
"transcriptionCreation": {
"type": "boolean"
},
"transcriptionProcessing": {
"type": "boolean"
},
"transcriptionCompletion": {
"type": "boolean"
},
"transcriptionDeletion": {
"type": "boolean"
},
"endpointCreation": {
"type": "boolean"
},
"endpointProcessing": {
"type": "boolean"
},
"endpointCompletion": {
"type": "boolean"
},
"endpointDeletion": {
"type": "boolean"
},
"ping": {
"type": "boolean"
},
"challenge": {
"type": "boolean"
}
}
},
"displayName": {
"description": "The name of the object.",
"type": "string"
},
"description": {
"description": "The description of the object.",
"type": "string"
},
"customProperties": {
"description": "The custom properties of this entity. The maximum allowed key length is 64 characters, the maximum\r\nallowed value length is 256 characters and the count of allowed entries is 10.",
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
Response 200
OK
{
"webUrl": "string",
"links": {
"ping": "string",
"test": "string"
},
"properties": {
"error": {
"code": "string",
"message": "string"
},
"apiVersion": "string",
"secret": "string"
},
"self": "string",
"displayName": "string",
"description": "string",
"events": {
"datasetCreation": true,
"datasetProcessing": true,
"datasetCompletion": true,
"datasetDeletion": true,
"modelCreation": true,
"modelProcessing": true,
"modelCompletion": true,
"modelDeletion": true,
"evaluationCreation": true,
"evaluationProcessing": true,
"evaluationCompletion": true,
"evaluationDeletion": true,
"transcriptionCreation": true,
"transcriptionProcessing": true,
"transcriptionCompletion": true,
"transcriptionDeletion": true,
"endpointCreation": true,
"endpointProcessing": true,
"endpointCompletion": true,
"endpointDeletion": true,
"ping": true,
"challenge": true
},
"createdDateTime": "string",
"lastActionDateTime": "string",
"status": "NotStarted",
"customProperties": {}
}
{
"title": "WebHook",
"required": [
"displayName",
"events",
"webUrl"
],
"type": "object",
"properties": {
"webUrl": {
"format": "uri",
"description": "The registered URL that will be used to send the POST requests for the registered events to.",
"type": "string"
},
"links": {
"title": "WebHookLinks",
"type": "object",
"properties": {
"ping": {
"format": "uri",
"description": "The URL that can be used to trigger the sending of a ping event to the registered URL of a web hook registration. See operation \"WebHooks_Ping\" for more details.",
"type": "string",
"readOnly": true
},
"test": {
"format": "uri",
"description": "The URL that can be used sending test events to the registered URL of a web hook registration. See operation \"WebHooks_Test\" for more details.",
"type": "string",
"readOnly": true
}
}
},
"properties": {
"title": "WebHookProperties",
"type": "object",
"properties": {
"error": {
"title": "EntityError",
"type": "object",
"properties": {
"code": {
"description": "The code of this error.",
"type": "string",
"readOnly": true
},
"message": {
"description": "The message for this error.",
"type": "string",
"readOnly": true
}
}
},
"apiVersion": {
"description": "The API version the web hook was created in. This defines the shape of the payload in the callbacks.\r\nIf the payload type is not supported anymore, because the shape changed and the API version using it is removed (after deprecation),\r\nthe web hook will be disabled.",
"type": "string",
"readOnly": true
},
"secret": {
"description": "A secret that will be used to create a SHA256 hash of the payload with the secret as HMAC key.\r\nThis hash will be set as X-MicrosoftSpeechServices-Signature header when calling back into the registered URL.",
"type": "string"
}
}
},
"self": {
"format": "uri",
"description": "The location of this entity.",
"type": "string",
"readOnly": true
},
"displayName": {
"description": "The display name of the object.",
"type": "string"
},
"description": {
"description": "The description of the object.",
"type": "string"
},
"events": {
"title": "WebHookEvents",
"type": "object",
"properties": {
"datasetCreation": {
"type": "boolean"
},
"datasetProcessing": {
"type": "boolean"
},
"datasetCompletion": {
"type": "boolean"
},
"datasetDeletion": {
"type": "boolean"
},
"modelCreation": {
"type": "boolean"
},
"modelProcessing": {
"type": "boolean"
},
"modelCompletion": {
"type": "boolean"
},
"modelDeletion": {
"type": "boolean"
},
"evaluationCreation": {
"type": "boolean"
},
"evaluationProcessing": {
"type": "boolean"
},
"evaluationCompletion": {
"type": "boolean"
},
"evaluationDeletion": {
"type": "boolean"
},
"transcriptionCreation": {
"type": "boolean"
},
"transcriptionProcessing": {
"type": "boolean"
},
"transcriptionCompletion": {
"type": "boolean"
},
"transcriptionDeletion": {
"type": "boolean"
},
"endpointCreation": {
"type": "boolean"
},
"endpointProcessing": {
"type": "boolean"
},
"endpointCompletion": {
"type": "boolean"
},
"endpointDeletion": {
"type": "boolean"
},
"ping": {
"type": "boolean"
},
"challenge": {
"type": "boolean"
}
}
},
"createdDateTime": {
"format": "date-time",
"description": "The time-stamp when the object was created.\r\nThe time stamp is encoded as ISO 8601 date and time format\r\n(\"YYYY-MM-DDThh:mm:ssZ\", see https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations).",
"type": "string",
"readOnly": true
},
"lastActionDateTime": {
"format": "date-time",
"description": "The time-stamp when the current status was entered.\r\nThe time stamp is encoded as ISO 8601 date and time format\r\n(\"YYYY-MM-DDThh:mm:ssZ\", see https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations).",
"type": "string",
"readOnly": true
},
"status": {
"title": "Status",
"description": "Describe the current state of the API",
"enum": [
"NotStarted",
"Running",
"Succeeded",
"Failed"
],
"type": "string",
"readOnly": true,
"x-ms-enum": {
"name": "Status",
"modelAsString": false,
"values": [
{
"value": "NotStarted",
"description": "The long running operation has not yet started."
},
{
"value": "Running",
"description": "The long running operation is currently processing."
},
{
"value": "Succeeded",
"description": "The long running operation has successfully completed."
},
{
"value": "Failed",
"description": "The long running operation has failed."
}
]
}
},
"customProperties": {
"description": "The custom properties of this entity. The maximum allowed key length is 64 characters, the maximum\r\nallowed value length is 256 characters and the count of allowed entries is 10.",
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
Response 400
In case the operation cannot be performed successfully with the specified values.
Response 401
In case the user isn't authorized.
Response 403
In case authorized user isn't known or doesn't have the required permissions.
Response 409
In case the specified entity doesn't exist
Response 429
In case the rate limit has been exceeded.
Code samples
@ECHO OFF
curl -v -X PATCH "https://*.cognitiveservices.azure.com/speechtotext/v3.1-preview.1/webhooks/{id}"
-H "Content-Type: application/json"
-H "Ocp-Apim-Subscription-Key: {subscription key}"
--data-ascii "{body}"
using System;
using System.Net.Http.Headers;
using System.Text;
using System.Net.Http;
using System.Web;
namespace CSHttpClientSample
{
static class Program
{
static void Main()
{
MakeRequest();
Console.WriteLine("Hit ENTER to exit...");
Console.ReadLine();
}
static async void MakeRequest()
{
var client = new HttpClient();
var queryString = HttpUtility.ParseQueryString(string.Empty);
// Request headers
client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "{subscription key}");
var uri = "https://*.cognitiveservices.azure.com/speechtotext/v3.1-preview.1/webhooks/{id}?" + queryString;
}
}
}
// // This sample uses the Apache HTTP client from HTTP Components (http://hc.apache.org/httpcomponents-client-ga/)
import java.net.URI;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
public class JavaSample
{
public static void main(String[] args)
{
HttpClient httpclient = HttpClients.createDefault();
try
{
URIBuilder builder = new URIBuilder("https://*.cognitiveservices.azure.com/speechtotext/v3.1-preview.1/webhooks/{id}");
URI uri = builder.build();
HttpPatch request = new HttpPatch(uri);
request.setHeader("Content-Type", "application/json");
request.setHeader("Ocp-Apim-Subscription-Key", "{subscription key}");
// Request body
StringEntity reqEntity = new StringEntity("{body}");
request.setEntity(reqEntity);
HttpResponse response = httpclient.execute(request);
HttpEntity entity = response.getEntity();
if (entity != null)
{
System.out.println(EntityUtils.toString(entity));
}
}
catch (Exception e)
{
System.out.println(e.getMessage());
}
}
}
<!DOCTYPE html>
<html>
<head>
<title>JSSample</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
</head>
<body>
<script type="text/javascript">
$(function() {
var params = {
// Request parameters
};
$.ajax({
url: "https://*.cognitiveservices.azure.com/speechtotext/v3.1-preview.1/webhooks/{id}?" + $.param(params),
beforeSend: function(xhrObj){
// Request headers
xhrObj.setRequestHeader("Content-Type","application/json");
xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key","{subscription key}");
},
type: "PATCH",
// Request body
data: "{body}",
})
.done(function(data) {
alert("success");
})
.fail(function() {
alert("error");
});
});
</script>
</body>
</html>
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSString* path = @"https://*.cognitiveservices.azure.com/speechtotext/v3.1-preview.1/webhooks/{id}";
NSArray* array = @[
// Request parameters
@"entities=true",
];
NSString* string = [array componentsJoinedByString:@"&"];
path = [path stringByAppendingFormat:@"?%@", string];
NSLog(@"%@", path);
NSMutableURLRequest* _request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:path]];
[_request setHTTPMethod:@"PATCH"];
// Request headers
[_request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[_request setValue:@"{subscription key}" forHTTPHeaderField:@"Ocp-Apim-Subscription-Key"];
// Request body
[_request setHTTPBody:[@"{body}" dataUsingEncoding:NSUTF8StringEncoding]];
NSURLResponse *response = nil;
NSError *error = nil;
NSData* _connectionData = [NSURLConnection sendSynchronousRequest:_request returningResponse:&response error:&error];
if (nil != error)
{
NSLog(@"Error: %@", error);
}
else
{
NSError* error = nil;
NSMutableDictionary* json = nil;
NSString* dataString = [[NSString alloc] initWithData:_connectionData encoding:NSUTF8StringEncoding];
NSLog(@"%@", dataString);
if (nil != _connectionData)
{
json = [NSJSONSerialization JSONObjectWithData:_connectionData options:NSJSONReadingMutableContainers error:&error];
}
if (error || !json)
{
NSLog(@"Could not parse loaded json with error:%@", error);
}
NSLog(@"%@", json);
_connectionData = nil;
}
[pool drain];
return 0;
}
<?php
// This sample uses the Apache HTTP client from HTTP Components (http://hc.apache.org/httpcomponents-client-ga/)
require_once 'HTTP/Request2.php';
$request = new Http_Request2('https://*.cognitiveservices.azure.com/speechtotext/v3.1-preview.1/webhooks/{id}');
$url = $request->getUrl();
$headers = array(
// Request headers
'Content-Type' => 'application/json',
'Ocp-Apim-Subscription-Key' => '{subscription key}',
);
$request->setHeader($headers);
$parameters = array(
// Request parameters
);
$url->setQueryVariables($parameters);
$request->setMethod(HTTP_Request2::METHOD_PATCH);
// Request body
$request->setBody("{body}");
try
{
$response = $request->send();
echo $response->getBody();
}
catch (HttpException $ex)
{
echo $ex;
}
?>
########### Python 2.7 #############
import httplib, urllib, base64
headers = {
# Request headers
'Content-Type': 'application/json',
'Ocp-Apim-Subscription-Key': '{subscription key}',
}
params = urllib.urlencode({
})
try:
conn = httplib.HTTPSConnection('*.cognitiveservices.azure.com')
conn.request("PATCH", "/speechtotext/v3.1-preview.1/webhooks/{id}?%s" % params, "{body}", headers)
response = conn.getresponse()
data = response.read()
print(data)
conn.close()
except Exception as e:
print("[Errno {0}] {1}".format(e.errno, e.strerror))
####################################
########### Python 3.2 #############
import http.client, urllib.request, urllib.parse, urllib.error, base64
headers = {
# Request headers
'Content-Type': 'application/json',
'Ocp-Apim-Subscription-Key': '{subscription key}',
}
params = urllib.parse.urlencode({
})
try:
conn = http.client.HTTPSConnection('*.cognitiveservices.azure.com')
conn.request("PATCH", "/speechtotext/v3.1-preview.1/webhooks/{id}?%s" % params, "{body}", headers)
response = conn.getresponse()
data = response.read()
print(data)
conn.close()
except Exception as e:
print("[Errno {0}] {1}".format(e.errno, e.strerror))
####################################
require 'net/http'
uri = URI('https://*.cognitiveservices.azure.com/speechtotext/v3.1-preview.1/webhooks/{id}')
request = Net::HTTP::Patch.new(uri.request_uri)
# Request headers
request['Content-Type'] = 'application/json'
# Request headers
request['Ocp-Apim-Subscription-Key'] = '{subscription key}'
# Request body
request.body = "{body}"
response = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http|
http.request(request)
end
puts response.body