Annotations is one of the key features supported by new Box View, that allows
developers to provide collaboration capabilities right from within the embedded
Box preview in their application.Box View supports three annotation types: highlight only, highlight
annotation, and point annotation. Annotations are only supported on document
and image previews.
An Annotator Token is an Access Token that allows an application to create a
Preview Embed Link for a file that a user can make annotations on. As an
application might not create a new App User for every one of the application’s
users, the Annotator token allows the application to track which of their
own users made the annotations.The Annotator Token is used instead of a regular Access Token, App Token, or File
Token to generate a preview session (an expiring embed link) that is linked to a
unique user ID and display name.
Since a preview session generated using an annotator token is tied to a
specific external user, it is strongly recommended that an application
generates different preview sessions using different annotator tokens for
different end users of an application.
The external display name associated with an annotation is essentially a
stateless “label” appended to the annotation. This means that once an annotation
has been added, the display name is permanently associated with the annotation
and cannot be updated unless the annotation is deleted and added again with the
updated display name.
To create an annotator token, follow the instructions for manually
authenticating through JWT but replace the
JWT claim with the following data.
Report incorrect code
Copy
Ask AI
var claims = new List<Claim>{ new Claim("sub", '[EXTERNAL_USER_ID]'), new Claim("name", '[EXTERNAL_USER_DISPLAY_NAME]'), new Claim("box_sub_type", "external"), new Claim("jti", jti),};
Parameter
Type
Description
sub
String
The external user ID to tie this annotation to. This can be any arbitrary ID tracked by the application
box_sub_type
String
external to signify an external user ID
box_sub_type
String
The external user name to tie this annotation to. This will be displayed in the Box UI
Then, convert this claim to an assertion according to the guide and pass this
assertion to the POST /oauth2/token
endpoint together with an existing valid Access Token, App Token, or File Token,
as well as a set of scopes, and the resource for which to create the token.
Report incorrect code
Copy
Ask AI
var content = new FormUrlEncodedContent(new[]{ new KeyValuePair<string, string>( "grant_type", "urn:ietf:params:oauth:grant-type:token-exchange"), new KeyValuePair<string, string>( "resource", "https://api.box.com/2.0/files/123456"), new KeyValuePair<string, string>( "subject_token", "[ACCESS_TOKEN]"), new KeyValuePair<string, string>( "subject_token_type", "urn:ietf:params:oauth:token-type:access_token"), new KeyValuePair<string, string>( "scope", "item_preview"), new KeyValuePair<string, string>( "actor_token", "[JWT_ASSERTION_FOR_ANNOTATOR_TOKEN]"), new KeyValuePair<string, string>( "actor_token_type", "urn:ietf:params:oauth:token-type:id_token"),});
Parameter
Description
resource
An optional full URL path to the file the token should be restricted to.
actor_token
The JWT assertion created earlier
actor_token_type
Always set to urn:ietf:params:oauth:token-type:id_token