Appearance
Authentication
This guide describes the details of the OAuth2 implementation used to authenticate with Sibelius Cloud APIs.
Scopes
When requesting an access token, you must specify the scopes that the token will have.
The following scopes are available:
Audience
When requesting an access token, you must specify the audience for which the token is intended. The audience is the identifier of the API that the token is intended for.
The following audiences are available:
https://api.sibelius.avid.com/score-storage/v1
https://api.sibelius.avid.com/score-viewer/v1
Requesting an access token
The example below demonstrates the process of obtaining an access token using the scope and audience described above:
sh
curl --request POST \
--url https://api.sibelius.avid.com/auth/v1/oauth2/token \
--header 'Authorization: Basic bXljbGllbnRpZDpteWNsaWVudHNlY3JldA==' \
--data grant_type=client_credentials \
--data 'scope=score view' \
--data 'audience=https://api.sibelius.avid.com/score-viewer/v1 https://api.sibelius.avid.com/score-storage/v1'
js
const qs = require("querystring");
const http = require("https");
const options = {
method: "POST",
hostname: "api.sibelius.avid.com",
port: null,
path: "/auth/v1/oauth2/token",
headers: {
Authorization: "Basic bXljbGllbnRpZDpteWNsaWVudHNlY3JldA==",
},
};
const req = http.request(options, function (res) {
const chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write(
qs.stringify({
grant_type: "client_credentials",
scope: "score view",
audience:
"https://api.sibelius.avid.com/score-viewer/v1 https://api.sibelius.avid.com/score-storage/v1",
}),
);
req.end();
py
import http.client
conn = http.client.HTTPSConnection("api.sibelius.avid.com")
payload = "grant_type=client_credentials&scope=score+view&audience=https%3A%2F%2Fapi.sibelius.avid.com%2Fscore-viewer%2Fv1+https%3A%2F%2Fapi.sibelius.avid.com%2Fscore-storage%2Fv1"
headers = { 'Authorization': "Basic bXljbGllbnRpZDpteWNsaWVudHNlY3JldA==" }
conn.request("POST", "/auth/v1/oauth2/token", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
go
package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.sibelius.avid.com/auth/v1/oauth2/token"
payload := strings.NewReader("grant_type=client_credentials&scope=score+view&audience=https%3A%2F%2Fapi.sibelius.avid.com%2Fscore-viewer%2Fv1+https%3A%2F%2Fapi.sibelius.avid.com%2Fscore-storage%2Fv1")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic bXljbGllbnRpZDpteWNsaWVudHNlY3JldA==")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
cs
var client = new RestClient("https://api.sibelius.avid.com/auth/v1/oauth2/token");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Basic bXljbGllbnRpZDpteWNsaWVudHNlY3JldA==");
request.AddParameter("undefined", "grant_type=client_credentials&scope=score+view&audience=https%3A%2F%2Fapi.sibelius.avid.com%2Fscore-viewer%2Fv1+https%3A%2F%2Fapi.sibelius.avid.com%2Fscore-storage%2Fv1", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
swift
import Foundation
let headers = ["Authorization": "Basic bXljbGllbnRpZDpteWNsaWVudHNlY3JldA=="]
let postData = NSMutableData(data: "grant_type=client_credentials".data(using: String.Encoding.utf8)!)
postData.append("&scope=score view".data(using: String.Encoding.utf8)!)
postData.append("&audience=https://api.sibelius.avid.com/score-viewer/v1 https://api.sibelius.avid.com/score-storage/v1".data(using: String.Encoding.utf8)!)
let request = NSMutableURLRequest(url: NSURL(string: "https://api.sibelius.avid.com/auth/v1/oauth2/token")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error as Any)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()
java
HttpResponse<String> response = Unirest.post("https://api.sibelius.avid.com/auth/v1/oauth2/token")
.header("Authorization", "Basic bXljbGllbnRpZDpteWNsaWVudHNlY3JldA==")
.body("grant_type=client_credentials&scope=score+view&audience=https%3A%2F%2Fapi.sibelius.avid.com%2Fscore-viewer%2Fv1+https%3A%2F%2Fapi.sibelius.avid.com%2Fscore-storage%2Fv1")
.asString();
Further information
- Authentication tutorial