Overview
Event Notifications allow you to create subscriptions to Studio resources and receive notifications of changes at a callback URI that you designate.
What Can Be Subscribed To?
Studio Resource | Events |
---|---|
Studio Projects |
|
Studio Project Items (Files and Folders) |
|
Studio Sessions |
|
Studio Session Documents |
|
Event Notification Endpoints
Subscription Endpoint
https://studioapi.bluebeam.com/PublicAPI/v1/notifications/subscriptions
Description | Supported Requests |
---|---|
Use to create or list subscriptions to a Studio Session, Studio Project, Studio Project Items or Studio Session Documents. | POST, GET |
Comprehensive Subscription Endpoint
https://studioapi.bluebeam.com/PublicAPI/v1/notifications/subscriptions/comprehensive
Description | Supported Requests |
---|---|
Use to create comprehensive subscriptions that include updates to both the parent resource, and any items within them. ex: a comprehensive subscription to a Studio Project will receive notifications about changes to both the Studio Project, and any Folders/Files (Project Items) within that Project. | POST, GET |
Specific Subscription Endpoint
https://studioapi.bluebeam.com/PublicAPI/v1/notifications/subscriptions/{subscription_id}
Description | Supported Requests |
---|---|
Use to list or delete a specific subscription. | GET, DELETE |
Parameters
Parameter Name | Description |
---|---|
ParentResourceType | String that specifies the Parent Object for the Subscription. Possible values: Project, ProjectItems, Sessions, SessionDocuments. These are described in the ParentResourceType table below. |
Uri | Your callback URI where you will receive the notification. |
ParentResourceType | Description |
---|---|
Projects | Use if you want to subscribe to changes made to a Studio Project. Identify the Project by its 9-digit ProjectId in the Additional Parameters table below. |
ProjectItems | Use if you want to subscribe to changes made to a folder or file within a Studio Project. Identify the folder or file with its ProjectItemId in the Additional Parameters table below. |
Sessions | Use if you want to subscribe to changes made to a Studio Session. Identify the Session by its 9-digit SessionId in the Additional Parameters table below. |
SessionDocuments | Use if you want to subscribe to changes made to a document within a Studio Session. Identify the document by its SessionDocumentId in the Additional Parameters table below. |
Additional Parameters | Description |
---|---|
ProjectId | Use to define the specific Studio Project that you want to subscribe to; only include when subscribing to Projects. Find a Project’s ID by making a GET request to the Projects endpoint. |
ItemType | Use to define the kind of item within the Studio Project that you want to subscribe to; only include when subscribing to ProjectItems. Possible values: folder, file. |
ProjectItemId | Use to define the Project Folder or File that you want to subscribe to; include when subscribing to ProjectItems. Find a Project Folder’s ID by making a GET request to the Project Folders endpoint. Find a Project File’s ID by making a GET request to the Project Files endpoint. |
SessionId | Use to define the specific Session that you want to subscribe to; only include when subscribing to Sessions or SessionDocuments. Find a Session’s ID by making a GET request to the Studio Sessions endpoint. |
SessionDocumentId | Use to define the document within a Session that you want to subscribe to; only include when subscribing to SessionDocuments. Find a Session Document’s ID by making a GET request to the Session Files endpoint. |
Creating Subscriptions
Below are examples of how to use Event Notifications.
Subscribe to a Studio Project
Changes that will trigger notifications:
- Project is renamed
- Project is deleted
Endpoint
Make a POST request to the subscriptions endpoint.
https://studioapi.bluebeam.com/PublicAPI/v1/notifications/subscriptions
Request Parameters
Name | Description |
---|---|
ParentResourceType | Specify the parent object type for the subscription, in this case, use Projects. |
ProjectId | 9-digit ID for the Studio Project. Find a Project’s ID by making a GET request to the Projects endpoint. |
Uri | Specify where you want your notifications to go; your URI for the callback. |
Example cURL Request
curl https://studioapi.bluebeam.com/PublicAPI/v1/notifications/subscriptions \ -H "Authorization:Bearer{A Valid access_token}" \ -H "Content-Type:application/x-www-form-urlencoded" \ -d 'ParentResourceType=Projects&ProjectId=123-456-789&Uri=http://YourCallbackURI.com' \ -X POST
Example Response
{ "$id":"1", "EndpointId":521, "Resource":"/Primes/{Studio Prime ID}/Projects/{ProjectId}/", "Source":"Studio", "Status":"Active", "SubscriptionId":1234, "Uri":"{Your Callback URI}", "Key":"432C401BFDEB6B21A986C258F8380E3F1E93FFD3" }
Example Notification Callback
When the Studio Project Item is moved, renamed or deleted, you will get a callback. In this example, the Project File was renamed, so the EventType is “Update”. If the Project was deleted, the EventType would be “Delete”.
{ "Id":"{subscription GUID}", "SubscriptionId":1234, "Source":0, "Resource":"/Primes/{Studio Prime ID}/Projects/{ProjectId}/", "Timestamp":"2018-01-23T21:45:49.6785342+00:00", "ExtraInformation":{ "ResourceType":"Projects", "User":"{studio user email address}", "EventType":"Update", "IdPath":null, "Path":null, "ItemType":null, "Name":"{Studio Project Name}" } }
Subscribe to a File or Folder Within a Studio Project
Changes that will trigger notifications:
- Folder or File is moved
- Folder or File is renamed
- Folder or File is deleted
Endpoint
Make a POST request to the subscriptions endpoint.
https://studioapi.bluebeam.com/PublicAPI/v1/notifications/subscriptions
Request Parameters
Name | Description |
---|---|
ParentResourceType | Specify the parent object type for the subscription, in this case, use Projects. |
ProjectId | 9-digit ID for the Studio Project. Find a Project’s ID by making a GET request to the Projects endpoint. |
ItemType | The type of Studio Project Item. Possible values: folder, file. |
ProjectItemId | The ID for the Studio Project Folder or File. Find a Project Folder’s ID by making a GET request to the Project Folder endpoint. Find a Project File’s ID by making a GET request to the Project Files endpoint. |
Uri | Specify where you want your notifications to go; your URI for the callback. |
Example cURL Request
curl https://studioapi.bluebeam.com/PublicAPI/v1/notifications/subscriptions \ -H "Authorization:Bearer{A Valid access_token}" \ -H "Content-Type:application/x-www-form-urlencoded" \ -d 'ParentResourceType=ProjectItems&ProjectId=123-456-789&ItemType=File&ProjectItemId=123456&Uri=http://YourCallbackURI.com' \ -X POST
Example Response
{ "$id":"1", "EndpointId":521, "Resource":"/Primes/{Prime ID}/Projects/{Project ID}/ProjectItems/{File ID}/", "Source":"Studio", "Status":"Active", "SubscriptionId":2345, "Uri":"{Your Callback URI}", "Key":"A120F4FEDBE8E217C670DA08AC4F5113C4E46DDB" }
Example Notification Callback
{ "Id":"f2149d02-8c28-4b99-98d4-16a368372ee4", "SubscriptionId":2345, "Source":0, "Resource":"/Primes/{Studio Prime ID}/Projects/{ProjectId}/ProjectItems/{File ID}/", "Timestamp":"2018-01-26T18:46:03.7836117+00:00", "ExtraInformation":{ "ResourceType":"ProjectItems", "User":"{User Email Address}", "EventType":"Update", "IdPath":"/{Root Folder ID}/{Folder ID}/{File ID}", "Path":"/{Folder Name}/{File Name}", "ItemType":"File", "Name":"{File Name}" } }
Subscribe to a Studio Session
Changes that will trigger notifications:
- Session is renamed
- Session expiration date is updated
- Session status changes to Finalizing
- Session is deleted
Endpoint
Make a POST request to the subscriptions endpoint.
https://studioapi.bluebeam.com/PublicAPI/v1/notifications/subscriptions
Request Parameters
Name | Description |
---|---|
ParentResourceType | Specify the parent object type for the subscription, in this case, use Sessions. |
SessionId | 9-digit ID for the Studio Session. Find a Session’s ID by making a GET request to the Sessions endpoint. |
Uri | Specify where you want your notifications to go; your URI for the callback. |
Example cURL Request
curl https://studioapi.bluebeam.com/PublicAPI/v1/notifications/subscriptions \ -H "Authorization:Bearer{A Valid access_token}" \ -H "Content-Type:application/x-www-form-urlencoded" \ -d 'ParentResourceType=Sessions&SessionId=123-456-789&Uri=http://YourCallbackURI.com' \ -X POST
Example Response
{ "$id":"1", "EndpointId":523, "Resource":"/Primes/{Studio Prime ID}/Sessions/{SessionId}/", "Source":"Studio", "Status":"Active", "SubscriptionId":3456, "Uri":"{Your Callback URI}", "Key":"51C5F4A0979BEEDD63AC8264314297739DB52209" }
Example Notification Callback
{ "Id":"ea3823e2-5825-4d01-b34e-ed4724ab240c", "SubscriptionId":3456, "Source":0, "Resource":"/Primes/{Studio Prime ID}/Sessions/{SessionId}/", "Timestamp":"2018-01-29T20:51:35.9509673+00:00", "ExtraInformation":{ "ResourceType":"Sessions", "User":"{User Email Address}", "EventType":"Delete", "IdPath":null, "Path":null, "ItemType":null, "Name":"{Studio Session Name}" } }
Subscribe to a Document Within a Studio Session
This subscription will send a notification when the document is deleted.
Endpoint
Make a POST request to the subscriptions endpoint.
https://studioapi.bluebeam.com/PublicAPI/v1/notifications/subscriptions
Request Parameters
Name | Description |
---|---|
ParentResourceType | Specify the parent object type for the subscription, in this case, use Sessions. |
SessionId | 9-digit ID for the Studio Session. Find a Session’s ID by making a GET request to the Sessions endpoint. |
SessionDocumentId | The ID for the Studio Session Document. Find a Session Document’s ID by looking at the Id of a file returned from a GET SessionFiles request. |
Uri | Specify where you want your notifications to go; your URI for the callback. |
Example cURL Request
curl https://studioapi.bluebeam.com/PublicAPI/v1/notifications/subscriptions \ -H "Authorization:Bearer{A Valid access_token}" \ -H "Content-Type:application/x-www-form-urlencoded" \ -d 'ParentResourceType=Sessions&SessionId=123-456-789&SessionDocumentId=1234567Uri=http://YourCallbackURI.com' \ -X POST
Example Response
{ "$id":"1", "EndpointId":522, "Resource":"/Primes/{Studio Prime ID}/Sessions/{SessionId}/SessionDocuments/{SessionDocumentId}/", "Source":"Studio", "Status":"Active", "SubscriptionId":4567, "Uri":"{Your Callback URI}", "Key":"757F13CEFCA517BAF13E4FA9BA6A05FFD979B0B6" }
Example Notification Callback
{ "Id":"cecfaf8e-7d0f-4fb1-8547-04c07de14406", "SubscriptionId":4567, "Source":0, "Resource":"/Primes/{Studio Prime ID}/Sessions/{SessionId}/SessionDocuments/{SessionDocumentId}/", "Timestamp":"2018-01-29T21:21:48.6498765+00:00", "ExtraInformation":{ "ResourceType":"SessionDocuments", "User":"{User Email Address}", "EventType":"Delete", "IdPath":null, "Path":null, "ItemType":null, "Name":"{Session Document Name}" } }
Creating a Comprehensive Subscription
A comprehensive subscription will send notifications of change to both the Parent Resource and any items within it.
For example:
- A comprehensive subscription to a Studio Project will send notifications about changes to the Project, and any Folders or Files within it.
- A comprehensive subscription to a Studio Session will send notifications of changes to the Studio Session and any Session Documents within it.
See What Can Be Subscribed To? for a list of changes that will trigger a notification.
To create a comprehensive subscription, make a POST request to the comprehensive subscription endpoint. In this example, we will create a comprehensive subscription to a Studio Project.
Endpoint
https://studioapi.bluebeam.com/PublicAPI/v1/notifications/subscriptions/comprehensive
Request Parameters
Name | Description |
---|---|
ParentResourceType | Specify the parent object type for the subscription, in this case, use Projects. |
ProjectId | 9-digit ID for the Studio Project. Find a Project’s ID by making a GET request to the Projects endpoint. |
Uri | Specify where you want your notifications to go; your URI for the callback. |
Example cURL Request
curl https://studioapi.bluebeam.com/PublicAPI/v1/notifications/subscriptions/comprehensive \ -H "Authorization:Bearer{A Valid access_token}" \ -H "Content-Type:application/x-www-form-urlencoded" \ -d 'ParentResourceType=Projects&ProjectId=123-456-789&Uri=http://YourCallbackURI.com' \ -X POST
Example Response
{ "$id":"1", "EndpointId":522, "Resource":"/Primes/{Studio Prime ID}/Projects/{ProjectId}/", "Source":"Studio", "Status":"Active", "SubscriptionId":5678, "Uri":"{Your Callback URL}", "Key":"432C401BFDEB6B21A986C258F8380E3F1E93FFD3" }
Example Notification Callbacks
In the example below, the EventType is “Update” because the Studio Project was renamed.
{ "Id":"0531db33-9451-49fc-8436-25b9e62e844d", "SubscriptionId":5678, "Source":0, "Resource":"/Primes/{Studio Prime ID}/Projects/{ProjectId}/", "Timestamp":"2018-01-23T21:45:49.6785342+00:00", "ExtraInformation":{ "ResourceType":"Projects", "User":"{User Email Address}", "EventType":"Update", "IdPath":null, "Path":null, "ItemType":null, "Name":"{Studio Project Name}" } }
In the example below, the ItemType is “File” and the EventType is “Update”, which means that the Studio Project File was either moved or renamed.
{ "Id":"f2149d02-8c28-4b99-98d4-16a368372ee4", "SubscriptionId":5678, "Source":0, "Resource":"/Primes/{Studio Prime ID}/Projects/{ProjectId}/ProjectItems/{File ID}/", "Timestamp":"2018-01-26T18:46:03.7836117+00:00", "ExtraInformation":{ "ResourceType":"ProjectItems", "User":"{User Email Address}", "EventType":"Update", "IdPath":"/{Root Folder ID}/{Folder ID}/{File ID}", "Path":"/{Folder Name}/{File Name}", "ItemType":"File", "Name":"{File Name}" } }
Listing Subscriptions
List All Subscriptions
To get a list of all of a user’s subscriptions within a Studio Prime space, make a GET request to the subscriptions endpoint.
Endpoint
https://studioapi.bluebeam.com/PublicAPI/v1/notifications/subscriptions
Example cURL Request
cURL https://studioapi.bluebeam.com/PublicAPI/v1/notifications/subscriptions \ -H "Authorization:Bearer {A Valid access_token}" \ -X GET
Example Response
{ "$id":"1", "Subscriptions":[ { "$id":"1", "EndpointId":521, "Resource":"/Primes/{Studio Prime ID}/Projects/{ProjectId}/", "Source":"Studio", "Status":"Active", "SubscriptionId":1234, "Uri":"{Your Callback URI}" }, { "$id":"3", "EndpointId":521, "Resource":"/Primes/{Studio Prime ID}/Projects/{ProjectId}/{File ID}/", "Source":"Studio", "Status":"Active", "SubscriptionId":2345, "Uri":"{Your Callback URI}" }, { "$id":"4", "EndpointId":523, "Resource":"/Primes/{Studio Prime ID}/Projects/{SessionId}/", "Source":"Studio", "Status":"Active", "SubscriptionId":3456, "Uri":"{Your Callback URI}" }, { "$id":"5", "EndpointId":522, "Resource":"/Primes/{Studio Prime ID}/Sessions/{SessionId}/SessionDocuments/{SessionDocumentId}/", "Source":"Studio", "Status":"Active", "SubscriptionId":4567, "Uri":"{Your Callback URI}" }, { "$id":"6", "EndpointId":522, "Resource":"/Primes/{Studio Prime ID}/Projects/{ProjectId}/", "Source":"Studio", "Status":"Active", "SubscriptionId":5678, "Uri":"{Your Callback URI}" } ], "TotalCount":6 }
List a Specific Subscription
To get a specific subscription, make a GET request to the subscription endpoint, and include the ID of the subscription that was returned when the subscription was created.
Endpoint
https://studioapi.bluebeam.com/PublicAPI/v1/notifications/subscriptions/{subscription_id}
Example cURL Request
cURL https://studioapi.bluebeam.com/PublicApi/v1/notifications/subscriptions/6789 \ -H "Authorization:Bearer {A Valid access_token}" \ -X GET
Example Response
{ "$id":"1", "EndpointId":523, "Resource":"/Primes/{Studio Prime ID}/Projects/{ProjectId}/", "Source":"Studio", "Status":"Active", "SubscriptionId":6789, "Uri":"{Your Callback URI}" }
Unsubscribing
Delete a Subscription
To unsubscribe, make a DELETE request to the subscription endpoint, specifying the subscription you want to remove. When successful, you’ll get a 204 Response.
Endpoint
https://studioapi.bluebeam.com/PublicAPI/v1/notifications/subscriptions/{subscription_id}
Example cURL Request
cURL https://studioapi.bluebeam.com/PublicApi/v1/notifications/subscriptions/6789 \ -H "Authorization:Bearer {A Valid access_token}" \ -X DELETE