Webinar Extension API Reference

Download as pdf or txt
Download as pdf or txt
You are on page 1of 60

Webinar Extension API

Reference
for Dynamics 365 for Marketing
(Version 1.0)
Contents
Introduction .................................................................................................................................................. 3
Base URI ........................................................................................................................................................ 3
/auth ............................................................................................................................................................. 3
get/auth/authorize ................................................................................................................................... 3
post/auth/token........................................................................................................................................ 4
/webinars ...................................................................................................................................................... 6
post /webinars .......................................................................................................................................... 6
/webinars/{webinarId} ............................................................................................................................ 13
delete/webinars/{webinarId} ................................................................................................................. 13
put /webinars/{webinarId} ..................................................................................................................... 16
/webinars/{webinarId}/registrations ...................................................................................................... 23
get /webinars/{webinarId}/registrations ................................................................................................ 23
post /webinars/{webinarId}/registrations .............................................................................................. 30
/webinars/{webinarId}/registrations/{webinarRegistrationId} .............................................................. 36
delete /webinars/{webinarId}/registrations/{webinarRegistrationId} ................................................... 36
put /webinars/{webinarId}/registrations/{webinarRegistrationId} ....................................................... 39
/webinars/{webinarId}/attendees .......................................................................................................... 45
get /webinars/{webinarId}/attendees .................................................................................................... 45
/webinars/types ...................................................................................................................................... 53
get /webinars/types ................................................................................................................................ 53
/healthcheck ............................................................................................................................................... 56
get/healthcheck ...................................................................................................................................... 56
Copyright ..................................................................................................................................................... 60
Introduction
This document provides reference information about the Webinar Extension API that you can use to
extend the Event Management feature in Dynamics 365 for Marketing to support more webinar
providers. More information: Extend Event Management to support more webinar providers

Base URI
https://{domain}/api/{version}/client/{clientId}

• domain: required (string)


• version: required (v1)
• clientId: required (string)

/auth
get/auth/authorize
Starts the OAuth 2.0 authorization flow

1. Request
2. Response

Request
Query Parameters

• response_type: required (string)

The grant type requested. Since the three logged OAuth flow is used this must be 'code'

• client_id: required (string)

The client id associated with the Dynamics 365 organization

• redirect_uri: required (string)

The url the user is redirected to after authorization is completed.

• state: (string)

A unique string used to identify the request that is passed back to the redirect URI. Used
to protect against cross-site request forgery
Body

Media type: application/json

Type: object

Example:
https://{baseUrl}/api/auth/authorize?response_type=code&client_id=abcdef&redirect_uri
=https%3A%2F%2Fredirect.to%2FauthResult&state=123abc

Response
HTTP status code 200

Since this url is a webpage, there is no return value. After the user authorizes your app they will
be sent to the redirect URI. Upon successful authorization the authorization code will be passed
to the redirect URI.

Body

Media type: application/json

Type: object

Example:
https://redirect.to/auth?code=ABCDEF&state=123456

HTTP status code 500

If an error occurs, including if the authorization fails, an error parameter will be passed to the
redirect URI

Body

Media type: application/json

Type: object

Example:
https://redirect.to/auth?error=some%20error%20message

post/auth/token
This endpoint is called to acquire a bearer token after the authorization code has been
obtained, or to refresh an expired access token.
• Request
• Response

Request
Body

Media type: application/x-www-form-urlencoded

Type: object

Example:
{
"code": "The authorization code acquired by calling the /auth/authorize
endpoint",
"refresh_token": "A valid refresh token",
"grant_type": "The grant type. This must be 'authorization_code' or
'refresh_token'. For 'authorization_code' the [code] query string parameter must be
set, for 'refresh_token' the [refresh_token] must be passed as a query parameter.",
"client_id": "The client id associated with the CRM organization",
"client_secret": "The client secret associated with the CRM organization",
"redirect_uri": "The redirect URI that was provided for the original
/auth/authorize call. If provided they must match."
}

Response
HTTP status code 200

If the call is successful, a JSON object containing an access token (access_token), token
type(token_type), account id (account_id) a refresh token(refresh_token) and the token
lifespan in minutes (expires_in) will be provided. The token type should always be 'bearer'.

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"access_token": {
"type": "string",
"required": true
},
"refresh_token": {
"type": "string",
"required": true
},
"expires_in": {
"type": "integer",
"required": true
},
"token_type": {
"type": "string",
"required": true
},
"account_id": {
"type": "string",
"required": true
}
}
}

Example:
{
"access_token": "abcakd2gef",
"refresh_token": "bb7djjrie",
"expires_in": 400,
"token_type": "bearer",
"account_id": "webinarUser123"
}

/webinars
post /webinars
Creates a webinar. This API supports OAuth 2.0 for authenticating all API requests.

• Request
• Response
• Security

Request
Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"title": {
"type": "string",
"title": "The title.",
"required": true,
"examples": [
"Webinar title"
]
},
"description": {
"type": "string",
"title": "The description.",
"required": true,
"examples": [
"Webinar description"
]
},
"startDate": {
"type": "integer",
"title": "The start UNIX epoch timestamp.",
"required": true,
"examples": [
"1522068168"
]
},
"endDate": {
"type": "integer",
"title": "The end UNIX epoch timestamp.",
"required": true,
"examples": [
"1522068168"
]
},
"timeZone": {
"type": "string",
"title": "The timezone.",
"required": true,
"examples": [
"Central Europe Standard Time"
]
},
"webinarType": {
"type": "string",
"title": "The webinar type.",
"required": true,
"examples": [
"ondemand"
]
},
"language": {
"type": "string",
"title": "The language.",
"required": true,
"examples": [
"english"
]
}
}
}

Example:
{
"title": "MyWebinar",
"description": "This is the description for MyWebinar.",
"startDate": 1522068168,
"endDate": 1522068168,
"timeZone": "Central Europe Standard Time",
"webinarType": "ondemand",
"language": "english"
}

Response
HTTP status code 201

Webinar created

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"id": {
"type": "string",
"title": "The webinar id.",
"required": true,
"examples": [
"webinarId"
]
},
"title": {
"type": "string",
"title": "The title.",
"required": true,
"examples": [
"Webinar title"
]
},
"description": {
"type": "string",
"title": "The description.",
"required": true,
"examples": [
"Webinar description"
]
},
"startDate": {
"type": "integer",
"title": "The start UNIX epoch timestamp.",
"required": true,
"examples": [
"1522068168"
]
},
"endDate": {
"type": "integer",
"title": "The end UNIX epoch timestamp.",
"required": true,
"examples": [
"1522068168"
]
},
"timeZone": {
"type": "string",
"title": "The timezone.",
"required": true,
"examples": [
"Central Europe Standard Time"
]
},
"webinarType": {
"type": "string",
"title": "The webinar type.",
"required": true,
"examples": [
"ondemand"
]
},
"language": {
"type": "string",
"title": "The language.",
"required": true,
"examples": [
"english"
]
},
"webinarUrl": {
"type": "string",
"title": "The webinar url.",
"required": true,
"examples": [
"https://company.com/webinar/webinarId/presentation/join"
]
},
"presentationManagerUrl": {
"type": "string",
"title": "The webinar presentation manager url.",
"required": true,
"examples": [
"https://company.com/webinar/webinarId/presentation/manage"
]
}
}
}

Example:
{
"id": "webinarId",
"title": "MyWebinar",
"description": "This is the description for MyWebinar.",
"startDate": 1522068168,
"endDate": 1522068168,
"timeZone": "Central Europe Standard Time",
"webinarType": "ondemand",
"language": "english",
"webinarUrl": "https://company.com/webinar/webinarId/presentation/join",
"presentationManagerUrl":
"https://company.com/webinar/webinarId/presentation/manage"
}

HTTP status code 400

There is an issue

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}

Example:
{
"message": "Some message"
}
HTTP status code 404

Client account not found

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
Example:
{
"message": "Some message"
}
HTTP status code 429

Throttled

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
Example:
{
"message": "Some message"
}

Security
Secured by oauth_2_0
Headers

• Authorization: required (string)

Used to send a valid OAuth 2 access token.

HTTP status code 401

Bad or expired token. This can happen if the user or the API revoked or expired an access token. You
should re-authenticate the user.

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
Example:
{
"message": "Some message"
}
HTTP status code 403

Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Re-authenticating
the user won't help here.
Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
Example:
{
"message": "Some message"
}

/webinars/{webinarId}
delete/webinars/{webinarId}
Deletes the webinar. This API supports OAuth 2.0 for authenticating all API requests.

• Request
• Response
• Security

Request
URI Parameters

• webinarId: required (string)

Response
HTTP status code 204

Webinar deleted
HTTP status code 404

Client account or webinar not found

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
Example:
{
"message": "Some message"
}

HTTP status code 429

Throttled

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
Example:
{
"message": "Some message"
}

Security
Secured by oauth_2_0
Headers

• Authorization: required (string)

Used to send a valid OAuth 2 access token.

HTTP status code 401

Bad or expired token. This can happen if the user or the API revoked or expired an access token.
You should re-authenticate the user.

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
Example:
{
"message": "Some message"
}
HTTP status code 403

Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Re-authenticating
the user won't help here.
Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
Example:
{
"message": "Some message"
}

put /webinars/{webinarId}
Updates a webinar. This API supports OAuth 2.0 for authenticating all API requests.

• Request
• Response
• Security

Request
URI Parameters

• webinarId: required (string)

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"title": {
"type": "string",
"title": "The title.",
"examples": [
"Webinar title"
]
},
"description": {
"type": "string",
"title": "The description.",
"examples": [
"Webinar description"
]
},
"startDate": {
"type": "integer",
"title": "The start UNIX epoch timestamp.",
"examples": [
"1522068168"
]
},
"endDate": {
"type": "integer",
"title": "The end UNIX epoch timestamp.",
"examples": [
"1522068168"
]
},
"timeZone": {
"type": "string",
"title": "The timezone.",
"examples": [
"Central Europe Standard Time"
]
},
"webinarType": {
"type": "string",
"title": "The webinar type.",
"examples": [
"ondemand"
]
},
"language": {
"type": "string",
"title": "The language.",
"examples": [
"english"
]
}
}
}
Example:
{
"title": "MyWebinar",
"description": "This is the description for MyWebinar.",
"startDate": 1522068168,
"endDate": 1522068168,
"timeZone": "Central Europe Standard Time",
"webinarType": "ondemand",
"language": "english"
}

Response
HTTP status code 200

Webinar updated

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"id": {
"type": "string",
"title": "The webinar id.",
"required": true,
"examples": [
"webinarId"
]
},
"title": {
"type": "string",
"title": "The title.",
"required": true,
"examples": [
"Webinar title"
]
},
"description": {
"type": "string",
"title": "The description.",
"required": true,
"examples": [
"Webinar description"
]
},
"startDate": {
"type": "integer",
"title": "The start UNIX epoch timestamp.",
"required": true,
"examples": [
"1522068168"
]
},
"endDate": {
"type": "integer",
"title": "The end UNIX epoch timestamp.",
"required": true,
"examples": [
"1522068168"
]
},
"timeZone": {
"type": "string",
"title": "The timezone.",
"required": true,
"examples": [
"Central Europe Standard Time"
]
},
"webinarType": {
"type": "string",
"title": "The webinar type.",
"required": true,
"examples": [
"ondemand"
]
},
"language": {
"type": "string",
"title": "The language.",
"required": true,
"examples": [
"english"
]
},
"webinarUrl": {
"type": "string",
"title": "The webinar url.",
"required": true,
"examples": [
"https://company.com/webinar/webinarId/presentation/join"
]
},
"presentationManagerUrl": {
"type": "string",
"title": "The webinar presentation manager url.",
"required": true,
"examples": [
"https://company.com/webinar/webinarId/presentation/manage"
]
}
}
}
Example:
{
"id": "webinarId",
"title": "MyWebinar",
"description": "This is the description for MyWebinar.",
"startDate": 1522068168,
"endDate": 1522068168,
"timeZone": "Central Europe Standard Time",
"webinarType": "ondemand",
"language": "english",
"webinarUrl": "https://company.com/webinar/webinarId/presentation/join",
"presentationManagerUrl":
"https://company.com/webinar/webinarId/presentation/manage"
}

HTTP status code 400

There is an issue

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
Example:
{
"message": "Some message"
}
HTTP status code 404

Client account or webinar not found

Body

Media type: application/json


Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
Example:
{
"message": "Some message"
}
HTTP status code 429

Throttled

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
Example:
{
"message": "Some message"
}
Security
Secured by oauth_2_0
Headers

• Authorization: required (string)

Used to send a valid OAuth 2 access token.

HTTP status code 401

Bad or expired token. This can happen if the user or the API revoked or expired an access token.
You should re-authenticate the user.

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
Example:
{
"message": "Some message"
}
HTTP status code 403

Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Re-authenticating
the user won't help here.

Body

Media type: application/json


Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
Example:
{
"message": "Some message"
}

/webinars/{webinarId}/registrations
get /webinars/{webinarId}/registrations
Gets the registrations, should provide real time data. This API supports OAuth 2.0 for
authenticating all API requests.

• Request
• Response
• Security

Request
URI Parameters

• webinarId: required (string)

Query Parameters

• from: (integer)

Return records after the given UNIX epoch timestamp.

Example:
1522068168

• to: (integer)
Return records before the given UNIX epoch timestamp.

Example:
1522068168

• offset: (integer - default: 0)

Skip over a number of records by specifying an offset value for the query

Example:
20

• limit: (integer - default: 100)

Limit the number of records on the response

Example:
80

Response
HTTP status code 200

Gets the registrations of the webinar

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"meta": {
"type": "object",
"required": true,
"properties": {
"webinar": {
"type": "string",
"title": "The webinar id.",
"required": true,
"examples": [
"webinarId"
]
},
"count": {
"type": "integer",
"title": "The registration count of the current page.",
"required": true,
"examples": [
1
]
},
"total": {
"type": "integer",
"title": "The total registration count.",
"required": true,
"examples": [
1
]
},
"from": {
"type": "integer",
"title": "The start UNIX epoch timestamp.",
"required": true,
"examples": [
1522068168
]
},
"to": {
"type": "integer",
"title": "The end UNIX epoch timestamp.",
"required": true,
"examples": [
1522068168
]
},
"limit": {
"type": "integer",
"title": "The maximum number of records on the current page, comes from the
request.",
"required": true,
"examples": [
100
]
},
"offset": {
"type": "integer",
"title": "The record offset, comes from the request.",
"required": true,
"examples": [
0
]
}
}
},
"registrations": {
"type": "array",
"required": true,
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"title": "The webinar registration id.",
"required": true,
"examples": [
"webinarRegistrationId"
]
},
"firstname": {
"type": "string",
"title": "The firstname.",
"required": true,
"examples": [
"John"
]
},
"lastname": {
"type": "string",
"title": "The lastname.",
"required": true,
"examples": [
"Doe"
]
},
"email": {
"type": "string",
"title": "The e-mail address.",
"required": true,
"examples": [
"[email protected]"
]
},
"company": {
"type": "string",
"title": "The company.",
"required": true,
"examples": [
"MyCompany"
]
}
}
}
}
}
}

Example:
{
"meta": {
"webinar": "webinarId",
"count": 1,
"total": 1,
"from": 1522068168,
"to": 1522068168,
"limit": 100,
"offset": 0
},
"registrations": [
{
"id": "webinarRegistrationId",
"firstname": "John",
"lastname": "Doe",
"email": "[email protected]",
"company": "MyCompany"
}
]
}

HTTP status code 400

There is an issue

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
Example:
{
"message": "Some message"
}

HTTP status code 404

Client account or webinar not found


Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
Example:
{
"message": "Some message"
}

HTTP status code 429

Throttled

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
Example:
{
"message": "Some message"
}

Security
Secured by oauth_2_0
Headers

• Authorization: required (string)

Used to send a valid OAuth 2 access token.

HTTP status code 401

Bad or expired token. This can happen if the user or the API revoked or expired an access token.
You should re-authenticate the user.

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
Example:
{
"message": "Some message"
}

HTTP status code 403

Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Re-authenticating
the user won't help here.
Body

Media type: application/json

Type: json

Content:
{{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
Example:
{
"message": "Some message"
}

post /webinars/{webinarId}/registrations
Creates a webinar registration. This API supports OAuth 2.0 for authenticating all API requests.

• Request
• Response
• Security

Request
URI Parameters

• webinarId: required (string)

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"id": {
"type": "string",
"title": "The webinar registration id.",
"required": true,
"examples": [
"webinarRegistrationId"
]
},
"firstname": {
"type": "string",
"title": "The firstname.",
"required": true,
"examples": [
"John"
]
},
"lastname": {
"type": "string",
"title": "The lastname.",
"required": true,
"examples": [
"Doe"
]
},
"email": {
"type": "string",
"title": "The e-mail address.",
"required": true,
"examples": [
"[email protected]"
]
},
"company": {
"type": "string",
"title": "The company.",
"required": true,
"examples": [
"MyCompany"
]
}
}
}
Example:
{
"id": "webinarRegistrationId",
"firstname": "John",
"lastname": "Doe",
"email": "[email protected]",
"company": "MyCompany"
}
Response
HTTP status code 201

Webinar registration created

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"id": {
"type": "string",
"title": "The webinar registration id.",
"required": true,
"examples": [
"webinarRegistrationId"
]
},
"firstname": {
"type": "string",
"title": "The firstname.",
"required": true,
"examples": [
"John"
]
},
"lastname": {
"type": "string",
"title": "The lastname.",
"required": true,
"examples": [
"Doe"
]
},
"email": {
"type": "string",
"title": "The e-mail address.",
"required": true,
"examples": [
"[email protected]"
]
},
"company": {
"type": "string",
"title": "The company.",
"required": true,
"examples": [
"MyCompany"
]
}
}
}
Example:
{
"id": "webinarRegistrationId",
"firstname": "John",
"lastname": "Doe",
"email": "[email protected]",
"company": "MyCompany"
}
HTTP status code 400

There is an issue

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
Example:
{
"message": "Some message"
}

HTTP status code 404

Client account or webinar not found

Body

Media type: application/json


Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
Example:
{
"message": "Some message"
}

HTTP status code 429

Throttled

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
Example:
{
"message": "Some message"
}
Security
Secured by oauth_2_0
Headers

• Authorization: required (string)

Used to send a valid OAuth 2 access token.

HTTP status code 401

Bad or expired token. This can happen if the user or the API revoked or expired an access token.
You should re-authenticate the user.

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
Example:
{
"message": "Some message"
}

HTTP status code 403

Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Re-authenticating
the user won't help here.

Body

Media type: application/json


Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}

Example:
{
"message": "Some message"
}

/webinars/{webinarId}/registrations/{webinarRegistrationId}
delete /webinars/{webinarId}/registrations/{webinarRegistrationId}
Deletes the webinar registration. This API supports OAuth 2.0 for authenticating all API
requests.

• Request
• Response
• Security

Request
URI Parameters

• webinarId: required (string)


• webinarRegistrationId: required (string)

HTTP status code 204

Webinar registration deleted

HTTP status code 404

Client account or webinar or registration not found


Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
Example:
{
"message": "Some message"
}

Response
HTTP status code 429

Throttled

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
Example:
{
"message": "Some message"
}

Security
Secured by oauth_2_0
Headers

• Authorization: required (string)

Used to send a valid OAuth 2 access token.

HTTP status code 401

Bad or expired token. This can happen if the user or the API revoked or expired an access token.
You should re-authenticate the user.

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
Example:
{
"message": "Some message"
}

HTTP status code 403

Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Re-authenticating
the user won't help here.
Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
Example:
{
"message": "Some message"
}

put /webinars/{webinarId}/registrations/{webinarRegistrationId}
Updates a webinar registration. This API supports OAuth 2.0 for authenticating all API requests.

• Request
• Response
• Security

Request
URI Parameters

• webinarId: required (string)


• webinarRegistrationId: required (string)

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"id": {
"type": "string",
"title": "The webinar registration id.",
"required": true,
"examples": [
"webinarRegistrationId"
]
},
"firstname": {
"type": "string",
"title": "The firstname.",
"required": true,
"examples": [
"John"
]
},
"lastname": {
"type": "string",
"title": "The lastname.",
"required": true,
"examples": [
"Doe"
]
},
"email": {
"type": "string",
"title": "The e-mail address.",
"required": true,
"examples": [
"[email protected]"
]
},
"company": {
"type": "string",
"title": "The company.",
"required": true,
"examples": [
"MyCompany"
]
}
}
}
Example:
{
"id": "webinarRegistrationId",
"firstname": "John",
"lastname": "Doe",
"email": "[email protected]",
"company": "MyCompany"
}
Response
HTTP status code 200

Webinar registration updated

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"id": {
"type": "string",
"title": "The webinar registration id.",
"required": true,
"examples": [
"webinarRegistrationId"
]
},
"firstname": {
"type": "string",
"title": "The firstname.",
"required": true,
"examples": [
"John"
]
},
"lastname": {
"type": "string",
"title": "The lastname.",
"required": true,
"examples": [
"Doe"
]
},
"email": {
"type": "string",
"title": "The e-mail address.",
"required": true,
"examples": [
"[email protected]"
]
},
"company": {
"type": "string",
"title": "The company.",
"required": true,
"examples": [
"MyCompany"
]
}
}
}

Example:
{
"id": "webinarRegistrationId",
"firstname": "John",
"lastname": "Doe",
"email": "[email protected]",
"company": "MyCompany"
}

HTTP status code 400

There is an issue

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
}
Example:
{
"message": "Some message"
}

HTTP status code 404

Client account or webinar or registration not found


Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
Example:
{
"message": "Some message"
}

HTTP status code 429

Throttled

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}

Example:
{
"message": "Some message"
}

Security
Secured by oauth_2_0
Headers

• Authorization: required (string)

Used to send a valid OAuth 2 access token.

HTTP status code 401

Bad or expired token. This can happen if the user or the API revoked or expired an access token.
You should re-authenticate the user.

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
Example:
{
"message": "Some message"
}

HTTP status code 403

Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Re-authenticating
the user won't help here.
Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
Example:
{
"message": "Some message"
}

/webinars/{webinarId}/attendees
get /webinars/{webinarId}/attendees
Gets the attendees, should provide real time data. This API supports OAuth 2.0 for
authenticating all API requests.

• Request
• Response
• Security

Request
URI Parameters

• webinarId: required (string)

Query Parameters

• from: (integer)

Return records after the given UNIX epoch timestamp.


Example:
1522068168

• to: (integer)

Return records before the given UNIX epoch timestamp.

Example:
1522068168

• offset: (integer - default: 0)

Skip over a number of records by specifying an offset value for the query

Example:
20

• limit: (integer - default: 100)

Limit the number of records on the response

Example:
80
Response
HTTP status code 200

Gets the attendees of the webinar

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"meta": {
"type": "object",
"required": true,
"properties": {
"webinar": {
"type": "string",
"title": "The webinar id.",
"required": true,
"examples": [
"webinarId"
]
},
"count": {
"type": "integer",
"title": "The attendee count of the current page.",
"required": true,
"examples": [
1
]
},
"total": {
"type": "integer",
"title": "The total attendee count.",
"required": true,
"examples": [
1
]
},
"from": {
"type": "integer",
"title": "The start UNIX epoch timestamp.",
"required": true,
"examples": [
1522068168
]
},
"to": {
"type": "integer",
"title": "The end UNIX epoch timestamp.",
"required": true,
"examples": [
1522068168
]
},
"limit": {
"type": "integer",
"title": "The maximum number of records on the current page, comes from the
request.",
"required": true,
"examples": [
100
]
},
"offset": {
"type": "integer",
"title": "The record offset, comes from the request.",
"required": true,
"examples": [
0
]
}
}
},
"attendees": {
"type": "array",
"required": true,
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"title": "The attendee id.",
"required": true,
"examples": [
"id"
]
},
"registration": {
"type": "string",
"title": "The webinar registration id.",
"required": true,
"examples": [
"registrationId"
]
},
"checkInTime": {
"type": "integer",
"title": "The check-in UNIX epoch timestamp.",
"required": true,
"examples": [
"1522068168"
]
},
"checkOutTime": {
"type": "integer",
"title": "The check-out UNIX epoch timestamp.",
"required": true,
"examples": [
"1522068168"
]
},
"duration": {
"type": "integer",
"title": "The duration in minutes.",
"required": true,
"examples": [
10
]
},
"numberOfCheckins": {
"type": "integer",
"title": "The number of check-ins.",
"required": true,
"examples": [
1
]
},
"numberOfInteractions": {
"type": "integer",
"title": "The number of interactions.",
"required": true,
"examples": [
1
]
}
}
}
}
}
}

Example:
{
"meta": {
"webinar": "webinarId",
"count": 1,
"total": 1,
"from": 1522068168,
"to": 1522068168,
"limit": 100,
"offset": 0
},
"attendees": [
{
"id": "attendeeId",
"registration": "webinarRegistrationId",
"checkInTime": 1522068168,
"checkOutTime": 1522068168,
"duration": 10,
"numberOfCheckins": 1,
"numberOfInteractions": 5
}
]
}

HTTP status code 400

There is an issue

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}

Example:

{
"message": "Some message"
}

HTTP status code 404

Client account or webinar not found

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
Example:
{
"message": "Some message"
}

HTTP status code 429

Throttled
Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
Example:
{
"message": "Some message"
}

Security
Secured by oauth_2_0
Headers

• Authorization: required (string)

Used to send a valid OAuth 2 access token.

HTTP status code 401

Bad or expired token. This can happen if the user or the API revoked or expired an access token.
You should re-authenticate the user.

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
Example:
{
"message": "Some message"
}

HTTP status code 403

Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Re-authenticating
the user won't help here.

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
Example:
{
"message": "Some message"
}
/webinars/types
get /webinars/types
Gets the supported webinar types. This API supports OAuth 2.0 for authenticating all API
requests.

• Response
• Security

Response
HTTP status code 200

Gets the supported webinar types

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"types": {
"type": "array",
"title": "The supported webinar type collection",
"required": true,
"items": {
"type": "string",
"title": "The supported webinar type",
"default": "",
"examples": [
"type",
"otherType"
]
}
}
}
}

Example:
{
"types": [
"type",
"otherType"
]
}

HTTP status code 404

Client account or webinar not found

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
Example:
{
"message": "Some message"
}

HTTP status code 429

Throttled

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
Example:
{
"message": "Some message"
}

Security
Secured by oauth_2_0
Headers

• Authorization: required (string)

Used to send a valid OAuth 2 access token.

HTTP status code 401

Bad or expired token. This can happen if the user or the API revoked or expired an access token.
You should re-authenticate the user.

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
Example:
{
"message": "Some message"
}
HTTP status code 403

Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Re-authenticating
the user won't help here.

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}

Example:

{
"message": "Some message"
}

/healthcheck
get/healthcheck
Checks if the client account is alive and the credentials are correct. The parameter is the one
provided for OAuth

This API supports OAuth 2.0 for authenticating all API requests.

• Response
• Security
Response
HTTP status code 204

Client account is alive and the credentials are correct

HTTP status code 404

Client account not found

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
Example:
{
"message": "Some message"
}

HTTP status code 429

Throttled

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
Example:
{
"message": "Some message"
}

Security
Secured by oauth_2_0
Headers

• Authorization: required (string)

Used to send a valid OAuth 2 access token.

HTTP status code 401

Bad or expired token. This can happen if the user or the API revoked or expired an access token.
You should re-authenticate the user.

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}
Example:
{
"message": "Some message"
}

HTTP status code 403

Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Re-authenticating
the user won't help here.

Body

Media type: application/json

Type: json

Content:
{
"type": "object",
"properties": {
"message": {
"type": "string",
"required": true,
"examples": [
"message"
]
}
}
}

Example:
{
"message": "Some message"
}
Copyright
This document is provided "as-is". Information and views expressed in this document, including URL and
other internet web site references, may change without notice.

Some examples depicted herein are provided for illustration only and are fictitious. No real association
or connection is intended or should be inferred.

This document does not provide you with any legal rights to any intellectual property in any Microsoft
product. You may copy and use this document for your internal, reference purposes. This document is
confidential and proprietary to Microsoft. It is disclosed and can be used only pursuant to a non-
disclosure agreement.

© 2018 Microsoft. All rights reserved.

Microsoft is a trademark of the Microsoft group of companies. All other trademarks are property of their
respective owners.

You might also like