-
Notifications
You must be signed in to change notification settings - Fork 29
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Initial meeting doc #74
base: master
Are you sure you want to change the base?
Changes from all commits
154b22d
08f519f
0c01691
2e3da0f
559ed52
14c41f1
c40d096
ac39a78
93fc8ad
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
--- | ||
copyright: 'Copyright IBM Corp. 2018' | ||
link: 'get-public-meeting' | ||
is: 'experimental' | ||
--- | ||
# Get Public Meeting Details | ||
|
||
This REST GET request allows the API caller to get details about a public meeting. | ||
|
||
### Version information | ||
- Version: 1.0.0 | ||
|
||
### URI scheme | ||
_Host_ : **api.watsonwork.ibm.com** | ||
_Scheme_: **HTTPS** | ||
|
||
### Path | ||
``` | ||
GET v1/publicMeeting/bySpaceId/<spaceId> | ||
``` | ||
|
||
#### Responses | ||
|
||
|HTTP Code|Description|Schema| | ||
|---|---|---| | ||
|**200**|The meeting data returned.|MeetingData(see below)| | ||
|
||
|
||
#### Produces | ||
|
||
* `application/json` | ||
|
||
|
||
<a name="meetingdata"></a> | ||
|
||
#### MeetingData | ||
Entity that represents the requested meeting. | ||
|
||
|Name|Description|Schema| | ||
|---|---|---| | ||
|**meetingId** <br>*required*|Id of the meeting.|string| | ||
|**meetingNumber** <br>*optional*|The Zoom meeting number if the meeting is currently active or otherwise null.|string| | ||
|**password** <br>*optional*|The Zoom meeting password if the meeting is currently active or otherwise null.|string| | ||
|**active** <br>*required*|Boolean representing whether the meeting is currently active.|string| | ||
|**allowPublic** <br>*required*|Boolean representing whether the meeting open to the public.|string| | ||
|**startTime** <br>*optional*|Start time of the active meeting or otherwise null.|string| | ||
|**meetingProviderJoinUrl** <br>*optional*|A URL to join the meeting with the Zoom client or otherwise null.|string| | ||
|**meetingProviderJoinUrl** <br>*optional*|A URL to join the meeting with the Zoom client or otherwise null.|string| | ||
|**pstnPasscode** <br>*optional*|The PSTN passcode of the active meeting if present or otherwise null.|string| | ||
|**dialInNumbers** <br>*optional*|An array of country code identifier plus dial-in number forthe active meeting or otherwise null.|string| |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,147 @@ | ||
--- | ||
copyright: 'Copyright IBM Corp. 2018' | ||
link: 'meeting' | ||
is: 'experimental' | ||
--- | ||
|
||
# Get meeting details | ||
|
||
## Concepts | ||
|
||
The _meeting_ query allows the API caller to get details about the meeting. The query accepts either a Space ID (spaceId) or a meeting ID (id) and will return meeting details if the calling user has access to the meeting. The calling user will have access to the meeting if the user has access to the space which contains the meeting, or the meeting has been marked to allow public participants. | ||
|
||
## Schema | ||
|
||
### Meeting Query | ||
|
||
|
||
```graphql | ||
type QueryRoot { | ||
... | ||
meeting(spaceId: ID, id: ID): Meeting | ||
} | ||
|
||
type MeetingRecording { | ||
url: String! | ||
startTime: Date | ||
stopTime: Date | ||
} | ||
|
||
type DialInNumber { | ||
countryCode: String! | ||
number: String! | ||
} | ||
|
||
type JoinInfo { | ||
allowPublic: Boolean! | ||
meetingNumber: String | ||
meetingProviderJoinUrl: String | ||
password: String | ||
hostKey: String! | ||
pstnPasscode: String | ||
webJoinToken: String! | ||
dialInNumbers : [DialInNumber] | ||
} | ||
|
||
type Meeting { | ||
id: ID! | ||
active: Boolean! | ||
allowPublic: Boolean! | ||
startTime: Date | ||
endTime: Date | ||
description: String | ||
recordings: [MeetingRecording] | ||
activeParticipants: PersonCollection | ||
attendees: PersonCollection | ||
space: Space! | ||
startedBy: Person | ||
message: Message | ||
joinInfo: JoinInfo | ||
} | ||
|
||
``` | ||
|
||
## Field definitions | ||
|
||
# MeetingRecording | ||
|Name|Description|Schema| | ||
|---|---|---|---| | ||
|**url**|The URL pointing to the meeting recording MP4 file.|**String** <br>_required_| | ||
|**startTime** |The start date/time of the meeting recording |**Date**| | ||
|**stopTime** |The stop date/time of the meeting recording |**Date**| | ||
|
||
|
||
# DialInNumber | ||
|Name|Description|Schema| | ||
|---|---|---|---| | ||
|**countryCode**|Two character country code where the number resides|**String** <br>_required_| | ||
|**number**|E.164 phone number which can be used to dial into the meeting|**String** <br>_required_| | ||
|
||
# JoinInfo | ||
|Name|Description|Schema| | ||
|---|---|---|---| | ||
|**allowPublic** |Whether the meeting can be joined by non-members of the space|**Boolean** <br>_required_| | ||
|**meetingNumber**|If a meeting is active, the a string of digits representing the Zoom meeting|**String** <br>_required_| | ||
|**meetingProviderJoinUrl**|A URL which can be used to directly joint he meeting in a browser|**String** <br>_required_| | ||
|**password** |If a meeting is active, the password required to join the Zoom meeting|**String**| | ||
|**hostKey** |If a meeting is active and there is no current host, the host key required to claim host.|**String**| | ||
|**pstnPasscode**|If required, the DTMF digits necessary to join a meeting via a phone dial in|**String**| | ||
|**webJoinToken** |If a meeting is active, the token required to join via the web client.|**String** <br>_required_| | ||
|**dialInNumbers**|An array of DialInNumber objects|** DialInNumber** array| | ||
|
||
# Meeting | ||
|Name|Description|Schema| | ||
|---|---|---|---| | ||
|**id**|ID of the meeting|**String** <br>_required_| | ||
|**active**|Whether the meeting is currently active|**Boolean** <br>_required_| | ||
|**allowPublic** |Whether the meeting can be joined by non-members of the space|**Boolean** <br>_required_| | ||
|**startTime** |The start date/time of the meeting |**Date**| | ||
|**endTime** |The date/time the meeting ended |**Date**| | ||
|**description**|A description for the meeting|**String**| | ||
|**recordings**|An array of MeetingRecording objects. A new MeetingRecording is created each time a cloud recording is started in the meeting.|** MeetingRecording** array| | ||
|**activeParticipants**|If a meeting is active, a PersonCollection representing the current Workspace users.|**PersonCollection**| | ||
|**attendeesParticipants**|A PersonCollection representing the Workspace users who have attended the meeting.|**PersonCollection**| | ||
|**space** |The Space where the meeting was held.|**Space** <br>_required_| | ||
|**message** |A Message representing where in the Space transcript the meeting occurred. |**Message**| | ||
|**joinInfo** |If a meeting is active, the details required to join the meeting |**JoinInfo**| | ||
|
||
|
||
|
||
## Example Request | ||
|
||
~~~~ | ||
Method: POST | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. In the other guides we use a link to the GraphQL tool to show queries like this - so you can just copy/paste the query into the tool, then grab the URL from the tool. You will need apiType=experimental on the URL for this one. I was recently doing the moments doc in a similar way if you want to check it out. |
||
URL: https://api.watsonwork.ibm.com/graphql | ||
Headers: 'Content-Type: application/graphql' , 'x-graphql-view: PUBLIC, EXPERIMENTAL' | ||
Body: | ||
{ | ||
query { | ||
meeting(spaceId: "space-id") { | ||
active | ||
joinInfo { | ||
meetingNumber | ||
password | ||
meetingProviderJoinUrl | ||
} | ||
} | ||
} | ||
} | ||
~~~~ | ||
## Example Result | ||
|
||
~~~~ | ||
{ | ||
"data": { | ||
"meeting": { | ||
"active": true, | ||
"joinInfo": { | ||
"password": "235253938", | ||
"password": "53621872", | ||
"meetingProviderJoinUrl": "https://zoom.us/j/235253938?pwd=vBRBlZBaXAKwIumekTziMw" | ||
} | ||
} | ||
} | ||
} | ||
~~~~ | ||
|
||
Try it out with our GraphQL tool - <a href="https://developer.watsonwork.ibm.com/tools/graphql?apiType=experimental&query=query%20getMeetingBySpaceId%20{%20%20meeting(spaceId:%20%22space-id%22)%20{%20%20%20%20startTime%20%20%20%20active%20%20%20%20allowPublic}}" target="_blank">Get a meeting by space-id</a> |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
--- | ||
copyright: 'Copyright IBM Corp. 2018' | ||
link: 'start-meeting' | ||
is: 'experimental' | ||
--- | ||
|
||
# Start a meeting within a space | ||
|
||
## Concepts | ||
|
||
The _startMeeting_ mutation allows the API caller to start a meeting with a **space**. The mutation accepts a Space ID (spaceId) as an argument, and makes the request on behalf of the caller, starting a meeting within the specified space. The result will reflect the whether the call was accepted for processing by the service. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. can the JWT used on this API call be that of an appID as identity and as client or does it expect a person as the identity? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Good question. The back-end implementation doesn't care provided the identity represented by the JWT token has the proper permission: |
||
|
||
## Schema | ||
|
||
### Start Meeting Mutation | ||
|
||
|
||
|
||
```graphql | ||
type MutationRoot { | ||
... | ||
startMeeting(input: StartMeetingInput!): MeetingMutationOutput | ||
} | ||
|
||
type StartMeetingInput { | ||
spaceId: ID! | ||
} | ||
|
||
type MeetingMutationOutput { | ||
accepted: Boolean! | ||
} | ||
``` | ||
|
||
## Field definitions | ||
|
||
# StartMeetingInput | ||
|Name|Description|Schema| | ||
|---|---|---|---| | ||
|**spaceId**|Space ID of the space in which to start a meeting|**String** <br>_required_| | ||
|
||
# MeetingMutationOutput | ||
|Name|Description|Schema| | ||
|---|---|---|---| | ||
|**accepted**|Whether the request to start a meeting was accepted for processing|**Boolean** <br>_required_| | ||
|
||
## Example Request | ||
|
||
~~~~ | ||
Method: POST | ||
URL: https://api.watsonwork.ibm.com/graphql | ||
Headers: 'Content-Type: application/graphql' , 'x-graphql-view: PUBLIC, EXPERIMENTAL' | ||
Body: | ||
{ | ||
mutation { | ||
startMeeting(input: {spaceId : "5ad0fabfe4b078066d690a24"}) { | ||
accepted | ||
} | ||
} | ||
} | ||
~~~~ | ||
## Example Result | ||
|
||
~~~~ | ||
{ | ||
"data": { | ||
"startMeeting": { | ||
"accepted": "true" | ||
} | ||
} | ||
} | ||
~~~~ | ||
|
||
Try it out with our GraphQL tool - <a href="https://developer.watsonwork.ibm.com/tools/graphql?apiType=experimental&query=mutation%20startMeeting%20{%20%20startMeeting(input: {spaceId:%20%22space-id%22})%20{%20%20%20%20accepted%20%20}}" target="_blank">Start a meeting</a> |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
--- | ||
copyright: 'Copyright IBM Corp. 2018' | ||
link: 'update-meeting-settings' | ||
is: 'experimental' | ||
--- | ||
|
||
# Update a meeting | ||
|
||
## Concepts | ||
|
||
The _updateMeetingSettings_ mutation allows the API caller to configure options on the meeting. The mutation accepts a Space ID (spaceId), and an allowPublic boolean as arguments, and makes the request on behalf of the caller, updating the meeting within the specified space. The result will reflect the whether the call was accepted for processing by the service. | ||
|
||
## Schema | ||
|
||
### Update Meeting Settings Mutation | ||
|
||
|
||
|
||
```graphql | ||
type MutationRoot { | ||
... | ||
updateMeetingSettings(input: UpdateMeetingSettingsInput!): MeetingSettingsMutationOutput | ||
} | ||
|
||
type UpdateMeetingSettingsInput { | ||
spaceId: ID! | ||
allowPublic: Boolean! | ||
} | ||
|
||
type MeetingSettingsMutationOutput { | ||
accepted: Boolean! | ||
} | ||
``` | ||
## Field definitions | ||
|
||
# UpdateMeetingSettingsInput | ||
|Name|Description|Schema| | ||
|---|---|---|---| | ||
|**spaceId**|Space ID of the space for which the meeting should be updated|**String** <br>_required_| | ||
|**allowPublic**|Whether or not non-space members can join meetings started in the space|**Boolean** <br>_required_| | ||
|
||
# MeetingSettingsMutationOutput | ||
|Name|Description|Schema| | ||
|---|---|---|---| | ||
|**accepted**|Whether the request to update the meeting was accepted for processing|**Boolean** <br>_required_| | ||
|
||
|
||
## Example Request | ||
|
||
~~~~ | ||
Method: POST | ||
URL: https://api.watsonwork.ibm.com/graphql | ||
Headers: 'Content-Type: application/graphql' , 'x-graphql-view: PUBLIC, EXPERIMENTAL' | ||
Body: | ||
{ | ||
mutation { | ||
updateMeetingSettings(input: {spaceId : "5ad0fabfe4b078066d690a24", allowPublic: true}) { | ||
accepted | ||
} | ||
} | ||
} | ||
~~~~ | ||
## Example Result | ||
|
||
~~~~ | ||
{ | ||
"data": { | ||
"updateMeetingSettings": { | ||
"accepted": "true" | ||
} | ||
} | ||
} | ||
~~~~ | ||
|
||
Try it out with our GraphQL tool - <a href="https://developer.watsonwork.ibm.com/tools/graphql?apiType=experimental&query=mutation%20updateMeetingSettings%20{%20%20updateMeetingSettings(input: {spaceId:%20%22space-id%22,%20allowPublic:%20true})%20{%20%20%20%20accepted%20%20}}" target="_blank">Update meeting settings</a> |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
--- | ||
copyright: 'Copyright IBM Corp. 2018' | ||
link: 'meetings-overview' | ||
is: 'experimental' | ||
--- | ||
## Meetings Overview | ||
|
||
Watson Work Services provides a set of **meeting** APIs for callers to start and get details about meetings. Meetings are online collaboration sessions which allow users to communicate with one another using the Workspace client, Zoom client, or a basic telephone. Meetings include audio, video, screensharing, and whiteboarding. Meetings happen within the context of a **space** and can either be restricted to only members of that space, or can be opened to public access so you can meet with people outside of your team or company. | ||
|
||
### External APIs | ||
|
||
* GraphQL mutation for starting a meeting | ||
* **startMeeting** [Start a meeting within a space](https://github.com/watsonwork/watsonwork-developer-docs/blob/master/guides/V1_Start_Meeting.md) | ||
<br> | ||
* GraphQL mutation for updating a meeting | ||
* **updateMeeting** [Update a meeting](https://github.com/watsonwork/watsonwork-developer-docs/blob/master/guides/V1_Update_Meeting.md) | ||
<br> | ||
* GraphQL query for meeting details | ||
* **meeting** [Get information about the meeting](https://github.com/watsonwork/watsonwork-developer-docs/blob/master/guides/V1_Meeting.md) | ||
<br> | ||
* GraphQL query for getting an active meeting within a space | ||
* **Space.activeMeeting** [Optional inclusion of activeMeeting on a space](https://github.com/watsonwork/watsonwork-developer-docs/blob/master/guides/V1_spaces_main.md) | ||
<br> | ||
* REST request for getting details of a public meeting | ||
* **/api/v1/publicMeeting/bySpaceId/** [Get information about a public meeting](https://github.com/watsonwork/watsonwork-developer-docs/blob/master/guides/V1_Get_Public_Meeting.md) | ||
<br> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The other guides use a tabular format. Most guides cover the documentation of a single type in the schema, though in the case of the moments doc, we used section headers per type with a table within each. The new fields on existing types, like the meeting field on QueryRoot, might be best demonstrated in a subset in the nav with an example?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I followed the example of Reactions (like
guides/V1_Reacting_Users.md
) because I think it was what Miguel pointed me to. The Reactions doc used GraphQL type definition language instead of tables. I'm fine either way, but will hold off on changes unless you strongly disagree.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK - I think that reactions guide isn't published into the nav yet @miguelestrada and most of the guides already in the nav use a more tabular format?
If we want something in this GraphQL type format - I think we should just generate it in the GraphQL server itself. This is also not too different from what you actually already see in the sidebar of the GraphQL explorer, so not sure there is huge value in copying this here into a doc we need to update separately? I think the doc gives us the opportunity to say more about each field we add, and I'm not sure the graphql type language really allows us to do that.
I'm 100% for using these type definitions in our internal designs and specs, but I don't know if redundantly adding these into the doc when you can find something similar in the GraphQL explorer, is helpful.
One other thing we could explore in the future though - we could try to make the GraphQL explorer tool responsive to URLs that could open the doc sidebar to a specific type. Then we could make the type names clickable links perhaps and avoid redefining things here.