Add a Collaborator
https://mapi.storyblok.com/v1/spaces/:space_id/collaborators/You can set any property available in the collaborator object. Below we only list the properties in the examples and the possible required fields.
Path parameters
Section titled “Path parameters”- :space_id required number
Numeric ID of a space
Request body properties
Section titled “Request body properties”- email required string
The email used in the space for a collaborator or a collaborator SSO ID
- role required string
The role name of the collaborator. It could be admin, editor, or
role_id. To add a single custom role, set the value torole_id. To add multiple custom roles, set the value tomulti. - space_role_id required number
Numeric ID associated with a role. Usually an array of IDs with more than one role.
- space_role_ids number[]
An array of numeric IDs for multiple roles assigned to a collaborator. Set
allow_multiple_roles_creationtotruewhile using this. - permissions enum[]
Permissions for a collaborator. Usually set to
can_subscribefor a collaborator.Permission Description read_storiesView stories without editing save_storiesEdit and save stories publish_storiesPublish stories to the live environment unpublish_storiesUnpublish stories from the live environment publish_foldersPublish folders and their contents unpublish_foldersUnpublish folders and their contents deploy_storiesDeploy pipeline stories delete_storiesPermanently delete stories edit_imageEdit images in the Asset Manager view_composerView the Visual Editor change_alternate_groupChange alternate content groupings (for internationalization or variants) move_storyMove stories between folders edit_story_slugEdit the URL of a story view_contentControls the visibility of content entries. Without this, all content is hidden. To grant read-only access, set Allow reading content permission in the UI. view_foldersControls the visibility of folders. Without this, all folders are hidden. To grant read-only access, set Allow reading content permission in the UI. view_draft_jsonView the draft JSONpayload of storiesview_published_jsonView the published JSONpayload of storiesmanage_tagsCreate, edit, or delete tags edit_datasourcesEdit datasources edit_datasource_keysEdit keys of datasources access_commerceAccess e-commerce features manage_block_libraryManage components in the Block Library hide_asset_foldersHides assets and folders for which the role doesn’t have upload permission. You can specify which folders are accessible in the UI. - allow_multiple_roles_creation boolean
If
true, you can add multiple role IDs for a collaborator.
Response properties
Section titled “Response properties”- collaborator The Collaborator Object
Examples
Section titled “Examples”curl "https://mapi.storyblok.com/v1/spaces/656/collaborators/" \ -X POST \ -H "Authorization: YOUR_OAUTH_TOKEN" \ -H "Content-Type: application/json" \ -d "{\"allow_multiple_roles_creation\":false,\"email\":\"api.test@storyblok.com\",\"permissions\":[],\"role\":\"admin\",\"space_role_id\":\"\",\"space_role_ids\":[]}"// Using the Universal JavaScript Client:// https://github.com/storyblok/storyblok-js-clientStoryblok.post('spaces/656/collaborators/', { "allow_multiple_roles_creation": false, "email": "api.test@storyblok.com", "permissions": [], "role": "admin", "space_role_id": "", "space_role_ids": []}) .then(response => { console.log(response) }).catch(error => { console.log(error) })$client = new \Storyblok\ManagementClient('YOUR_OAUTH_TOKEN');
$payload = ["allow_multiple_roles_creation" => false,"email" => "api.test@storyblok.com","permissions" => [],"role" => "admin","space_role_id" => "","space_role_ids" => []];
$client->post('spaces/656/collaborators/', $payload)->getBody();HttpResponse<String> response = Unirest.post("https://mapi.storyblok.com/v1/spaces/656/collaborators/") .header("Content-Type", "application/json") .header("Authorization", "YOUR_OAUTH_TOKEN") .body({"allow_multiple_roles_creation":false,"email":"api.test@storyblok.com","permissions":[],"role":"admin","space_role_id":"","space_role_ids":[]}) .asString();var client = new RestClient("https://mapi.storyblok.com/v1/spaces/656/collaborators/");var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");request.AddHeader("Authorization", "YOUR_OAUTH_TOKEN");request.AddParameter("application/json", "{\"allow_multiple_roles_creation\":false,\"email\":\"api.test@storyblok.com\",\"permissions\":[],\"role\":\"admin\",\"space_role_id\":\"\",\"space_role_ids\":[]}", ParameterType.RequestBody);IRestResponse response = client.Execute(request);import requests
url = "https://mapi.storyblok.com/v1/spaces/656/collaborators/"
querystring = {}
payload = {"allow_multiple_roles_creation":false,"email":"api.test@storyblok.com","permissions":[],"role":"admin","space_role_id":"","space_role_ids":[]}headers = { 'Content-Type': "application/json", 'Authorization': "YOUR_OAUTH_TOKEN"}
response = requests.request("POST", url, data=payload, headers=headers, params=querystring)
print(response.text)require 'storyblok'client = Storyblok::Client.new(oauth_token: 'YOUR_OAUTH_TOKEN')
payload = {"allow_multiple_roles_creation" => false,"email" => "api.test@storyblok.com","permissions" => [],"role" => "admin","space_role_id" => "","space_role_ids" => []}
client.post('spaces/656/collaborators/', payload)import Foundation
let headers = [ "Content-Type": "application/json", "Authorization": "YOUR_OAUTH_TOKEN"]
let postData = NSData(data: {"allow_multiple_roles_creation":false,"email":"api.test@storyblok.com","permissions":[],"role":"admin","space_role_id":"","space_role_ids":[]}.data(using: String.Encoding.utf8)!)
let request = NSMutableURLRequest(url: NSURL(string: "https://mapi.storyblok.com/v1/spaces/656/collaborators/")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0)request.method = "POST"request.allHTTPHeaderFields = headersrequest.httpBody = postData as Data
let session = URLSession.sharedlet dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) }})
dataTask.resume()Request for adding a collaborator with one custom role.
curl "https://mapi.storyblok.com/v1/spaces/656/collaborators/" \ -X POST \ -H "Authorization: YOUR_OAUTH_TOKEN" \ -H "Content-Type: application/json" \ -d "{\"allow_multiple_roles_creation\":false,\"email\":\"api.test@storyblok.com\",\"permissions\":[],\"role\":\"62454\",\"space_role_id\":62454,\"space_role_ids\":[]}"// Using the Universal JavaScript Client:// https://github.com/storyblok/storyblok-js-clientStoryblok.post('spaces/656/collaborators/', { "allow_multiple_roles_creation": false, "email": "api.test@storyblok.com", "permissions": [], "role": "62454", "space_role_id": 62454, "space_role_ids": []}) .then(response => { console.log(response) }).catch(error => { console.log(error) })$client = new \Storyblok\ManagementClient('YOUR_OAUTH_TOKEN');
$payload = ["allow_multiple_roles_creation" => false,"email" => "api.test@storyblok.com","permissions" => [],"role" => "62454","space_role_id" => 62454,"space_role_ids" => []];
$client->post('spaces/656/collaborators/', $payload)->getBody();HttpResponse<String> response = Unirest.post("https://mapi.storyblok.com/v1/spaces/656/collaborators/") .header("Content-Type", "application/json") .header("Authorization", "YOUR_OAUTH_TOKEN") .body({"allow_multiple_roles_creation":false,"email":"api.test@storyblok.com","permissions":[],"role":"62454","space_role_id":62454,"space_role_ids":[]}) .asString();var client = new RestClient("https://mapi.storyblok.com/v1/spaces/656/collaborators/");var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");request.AddHeader("Authorization", "YOUR_OAUTH_TOKEN");request.AddParameter("application/json", "{\"allow_multiple_roles_creation\":false,\"email\":\"api.test@storyblok.com\",\"permissions\":[],\"role\":\"62454\",\"space_role_id\":62454,\"space_role_ids\":[]}", ParameterType.RequestBody);IRestResponse response = client.Execute(request);import requests
url = "https://mapi.storyblok.com/v1/spaces/656/collaborators/"
querystring = {}
payload = {"allow_multiple_roles_creation":false,"email":"api.test@storyblok.com","permissions":[],"role":"62454","space_role_id":62454,"space_role_ids":[]}headers = { 'Content-Type': "application/json", 'Authorization': "YOUR_OAUTH_TOKEN"}
response = requests.request("POST", url, data=payload, headers=headers, params=querystring)
print(response.text)require 'storyblok'client = Storyblok::Client.new(oauth_token: 'YOUR_OAUTH_TOKEN')
payload = {"allow_multiple_roles_creation" => false,"email" => "api.test@storyblok.com","permissions" => [],"role" => "62454","space_role_id" => 62454,"space_role_ids" => []}
client.post('spaces/656/collaborators/', payload)import Foundation
let headers = [ "Content-Type": "application/json", "Authorization": "YOUR_OAUTH_TOKEN"]
let postData = NSData(data: {"allow_multiple_roles_creation":false,"email":"api.test@storyblok.com","permissions":[],"role":"62454","space_role_id":62454,"space_role_ids":[]}.data(using: String.Encoding.utf8)!)
let request = NSMutableURLRequest(url: NSURL(string: "https://mapi.storyblok.com/v1/spaces/656/collaborators/")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0)request.method = "POST"request.allHTTPHeaderFields = headersrequest.httpBody = postData as Data
let session = URLSession.sharedlet dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) }})
dataTask.resume()Request for adding a collaborator with multiple custom roles.
curl "https://mapi.storyblok.com/v1/spaces/656/collaborators/" \ -X POST \ -H "Authorization: YOUR_OAUTH_TOKEN" \ -H "Content-Type: application/json" \ -d "{\"allow_multiple_roles_creation\":true,\"email\":\"api.test@storyblok.com\",\"permissions\":[],\"role\":\"multi\",\"space_role_ids\":[62454,123123]}"// Using the Universal JavaScript Client:// https://github.com/storyblok/storyblok-js-clientStoryblok.post('spaces/656/collaborators/', { "allow_multiple_roles_creation": true, "email": "api.test@storyblok.com", "permissions": [], "role": "multi", "space_role_ids": [ 62454, 123123 ]}) .then(response => { console.log(response) }).catch(error => { console.log(error) })$client = new \Storyblok\ManagementClient('YOUR_OAUTH_TOKEN');
$payload = ["allow_multiple_roles_creation" => true,"email" => "api.test@storyblok.com","permissions" => [],"role" => "multi","space_role_ids" => [62454,123123]];
$client->post('spaces/656/collaborators/', $payload)->getBody();HttpResponse<String> response = Unirest.post("https://mapi.storyblok.com/v1/spaces/656/collaborators/") .header("Content-Type", "application/json") .header("Authorization", "YOUR_OAUTH_TOKEN") .body({"allow_multiple_roles_creation":true,"email":"api.test@storyblok.com","permissions":[],"role":"multi","space_role_ids":[62454,123123]}) .asString();var client = new RestClient("https://mapi.storyblok.com/v1/spaces/656/collaborators/");var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");request.AddHeader("Authorization", "YOUR_OAUTH_TOKEN");request.AddParameter("application/json", "{\"allow_multiple_roles_creation\":true,\"email\":\"api.test@storyblok.com\",\"permissions\":[],\"role\":\"multi\",\"space_role_ids\":[62454,123123]}", ParameterType.RequestBody);IRestResponse response = client.Execute(request);import requests
url = "https://mapi.storyblok.com/v1/spaces/656/collaborators/"
querystring = {}
payload = {"allow_multiple_roles_creation":true,"email":"api.test@storyblok.com","permissions":[],"role":"multi","space_role_ids":[62454,123123]}headers = { 'Content-Type': "application/json", 'Authorization': "YOUR_OAUTH_TOKEN"}
response = requests.request("POST", url, data=payload, headers=headers, params=querystring)
print(response.text)require 'storyblok'client = Storyblok::Client.new(oauth_token: 'YOUR_OAUTH_TOKEN')
payload = {"allow_multiple_roles_creation" => true,"email" => "api.test@storyblok.com","permissions" => [],"role" => "multi","space_role_ids" => [62454,123123]}
client.post('spaces/656/collaborators/', payload)import Foundation
let headers = [ "Content-Type": "application/json", "Authorization": "YOUR_OAUTH_TOKEN"]
let postData = NSData(data: {"allow_multiple_roles_creation":true,"email":"api.test@storyblok.com","permissions":[],"role":"multi","space_role_ids":[62454,123123]}.data(using: String.Encoding.utf8)!)
let request = NSMutableURLRequest(url: NSURL(string: "https://mapi.storyblok.com/v1/spaces/656/collaborators/")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0)request.method = "POST"request.allHTTPHeaderFields = headersrequest.httpBody = postData as Data
let session = URLSession.sharedlet dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) }})
dataTask.resume()Get in touch with the Storyblok community