Skip to content
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

Open
wants to merge 9 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 50 additions & 0 deletions guides/V1_Get_Public_Meeting.md
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|
79 changes: 79 additions & 0 deletions guides/V1_Meeting.md
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
Copy link
Contributor

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?

Copy link
Author

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.

Copy link
Contributor

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.

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
Copy link
Contributor

Choose a reason for hiding this comment

The 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") {
Copy link
Contributor

Choose a reason for hiding this comment

The 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"
}
}
}
}
~~~~
55 changes: 55 additions & 0 deletions guides/V1_Start_Meeting.md
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.
Copy link
Member

Choose a reason for hiding this comment

The 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?

Copy link
Author

Choose a reason for hiding this comment

The 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: meeting_host I don't know if an app can be assigned that permission, or if there are gaps around that.


## 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"
}
}
}
~~~~
55 changes: 55 additions & 0 deletions guides/V1_Update_Meeting.md
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"
}
}
}
~~~~
1 change: 1 addition & 0 deletions guides/V1_spaces_main.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,4 @@ Watson Work Services represents a Space with this object.
| members(before: String, after: String, first: Int, last: Int) | PersonCollection | The members of this space provided as a PersonCollection
| membersUpdated | Date | The date the membership was updated |
| conversation |Conversation | The conversation object for this space |
| activeMeeting | Meeting | Indicates that there is a meeting active within this space. Will only contain a sub-selection of all available meeting details, so this is suitable to use in a list view of spaces. This requires the `EXPERIMENTAL` value in `x-graphql-view header`. |
26 changes: 26 additions & 0 deletions guides/V1_wwsg_Meetings.md
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>