-
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 2 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. 2017' | ||
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,79 @@ | ||
--- | ||
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 a Space ID (spaceId) 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!): Meeting | ||
} | ||
|
||
type Meeting { | ||
active: Boolean! | ||
meetingNumber: String | ||
password: String | ||
allowPublic: Boolean! | ||
startTime: Date | ||
joinInfo: JoinInfo | ||
} | ||
|
||
type JoinInfo { | ||
meetingProviderJoinUrl: String | ||
pstnPasscode: String | ||
dialInNumbers : [DialInNumber] | ||
} | ||
|
||
type DialInNumber { | ||
countryCode: String! | ||
number: String! | ||
} | ||
|
||
``` | ||
|
||
## 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: "5a9ee86ee4b0cb1ca3dfef33") { | ||
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. There is a convention used in the docs for using "space-id" as a placeholder ID I think. I think the use of the variables section might be better if we explained it up front and did it consistently, but even then I think we'd need a placeholder space ID to serve as an example. I think it's better to use an obvious placeholder like space-id rather than a real ID. |
||
active | ||
password | ||
joinInfo { | ||
meetingProviderJoinUrl | ||
} | ||
} | ||
} | ||
} | ||
~~~~ | ||
## Example Result | ||
|
||
~~~~ | ||
{ | ||
"data": { | ||
"meeting": { | ||
"active": true, | ||
"password": "53621872", | ||
"joinInfo": { | ||
"meetingProviderJoinUrl": "https://zoom.us/j/240286814?pwd=vBRBlZBaXAKwIumekTziMw" | ||
} | ||
} | ||
} | ||
} | ||
~~~~ |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
--- | ||
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 MeetingMutationOutput { | ||
accepted: Boolean! | ||
} | ||
``` | ||
|
||
## 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" | ||
} | ||
} | ||
} | ||
~~~~ |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
--- | ||
copyright: 'Copyright IBM Corp. 2018' | ||
link: 'update-meeting' | ||
is: 'experimental' | ||
--- | ||
|
||
# Update a meeting | ||
|
||
## Concepts | ||
|
||
The _updateMeeting_ 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 Mutation | ||
|
||
|
||
|
||
```graphql | ||
type MutationRoot { | ||
... | ||
updateMeeting(input: UpdateMeetingInput!): MeetingMutationOutput | ||
} | ||
|
||
type MeetingMutationOutput { | ||
accepted: Boolean! | ||
} | ||
``` | ||
|
||
## Example Request | ||
|
||
~~~~ | ||
Method: POST | ||
URL: https://api.watsonwork.ibm.com/graphql | ||
Headers: 'Content-Type: application/graphql' , 'x-graphql-view: PUBLIC, EXPERIMENTAL' | ||
Body: | ||
{ | ||
mutation { | ||
updateMeeting(input: {spaceId : "5ad0fabfe4b078066d690a24", allowPublic: true}) { | ||
accepted | ||
} | ||
} | ||
} | ||
~~~~ | ||
## Example Result | ||
|
||
~~~~ | ||
{ | ||
"data": { | ||
"updateMeeting": { | ||
"accepted": "true" | ||
} | ||
} | ||
} | ||
~~~~ |
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.