Webex API invocations to test the guest-to-guest meeting functionality with a comprehensive Postman collection and automated browser testing tools.
This sample provides a short and sweet Postman collection to test the guest-to-guest (G2G) meeting functionality, allowing you to validate that service apps can act as facilitators for meetings between guests who don't have Webex accounts.
Important: First you need to get a sandbox and read through the service apps guide, so you know what is going on.
If you don't like reading, at least read through the bulleted paragraph "Developing a Guest-to-Guest App".
- Webex Sandbox Account: Required for testing G2G functionality
- Service App Access Token: If you followed the "Developing a Guest-to-Guest App" guide, you have now an access token in hand
- Postman: For running the API collection
- Node.js: For running the automated browser testing tool
- Google Chrome: For automated meeting joins
Use your service app access token to configure the Postman collection:
Import the guest-to-guest_verification_test.postman_collection.json file into Postman.
Configure the following variables in your Postman environment:
- Access Token: Your service app access token
- Meeting ID: Will be populated automatically during testing
- Meeting Password: Will be populated automatically during testing
You can now try to test the G2G functions. Just click through the collection one by one:
- Service App meeting preferences
- Scheduling options jbh=true
- Service App creates guest-to-guest meeting
- Create guest 1 join link and join as attendee
- Create guest 2 join link and join as attendee
- Service App creates guest 1
- Service App creates guest 2
- Create host start link and join as host - π Your first G2G meeting!
- Guest 1 creates join link and join as attendee
When you reach "create host start link and join as host", you have your first G2G meeting. Congratulations!
If you don't want to copy and paste the join and start links, run the tiny JavaScript application from the command line:
node runChromeTab.jsWhen the browser tab opens, stay in the browser. Each tab can have its own meeting attendee. In the app you can have only one user open.
The application will:
- Start a local server on port 3000
- Automatically open Chrome tabs for meeting participants
- Join you to the meeting when triggered by the Postman collection
g2g-meeting-sample/
βββ guest-to-guest_verification_test.postman_collection.json # Main API test collection
βββ runChromeTab.js # Automated browser launcher
βββ postman.png # Postman configuration screenshot
βββ screenshot.png # Meeting interface screenshot
βββ package.json # Node.js dependencies
βββ .github/workflows/ # GitHub Actions
β βββ prettier.yml # Code formatting checks
β βββ ruff.yml # Python linting
βββ README.md # This file
The collection includes comprehensive tests for the complete G2G meeting workflow:
| Request | Description | Purpose |
|---|---|---|
| Service App meeting preferences | GET /v1/meetingPreferences |
Verify service app can access meeting preferences |
| Scheduling options jbh=true | GET /v1/meetings/schedulingOptions |
Confirm Join Before Host (JBH) is enabled |
| Service App creates guest-to-guest meeting | POST /v1/meetings |
Create the G2G meeting |
| Create guest join links | POST /v1/meetings/{meetingId}/joinLinks |
Generate join links for guests |
| Service App creates guests | POST /v1/meetings/{meetingId}/guests |
Create guest participants |
| Create host start link | POST /v1/meetings/{meetingId}/joinLinks |
Generate host join link |
Each request includes automated tests that verify:
- Status codes: Ensures API calls succeed (200 OK)
- Response structure: Validates required fields are present
- Meeting configuration: Confirms G2G settings are correct
- Guest creation: Verifies guest participants are created properly
The collection automatically populates these variables:
meetingId: Generated when creating the meetingmeetingPassword: Meeting password for guestshostStartLink: Direct link for host to start meetingguest1JoinLink: Join link for first guestguest2JoinLink: Join link for second guest
The runChromeTab.js utility provides automated browser launching:
- HTTP Server: Runs on localhost:3000
- URL Parsing: Extracts meeting URLs from requests
- Chrome Integration: Automatically opens meeting links in Chrome
- Multiple Tabs: Supports multiple meeting participants
- Error Handling: Graceful handling of browser launch failures
- Start the automation server:
node runChromeTab.js - Run Postman collection requests
- Meeting links are automatically opened in Chrome
- Each participant gets their own browser tab
When everything is configured correctly:
- Host joins and starts the meeting
- Guests can join directly (no lobby)
- All participants can see and hear each other
- Meeting functions normally
Both guests in lobby: If both guests are in the lobby, you didn't follow the CH (Call Home) config from the guide. Either:
- Reread the guide notes, or
- Join another person as host
- 401 Unauthorized: Check your service app access token
- 404 Not Found: Verify the meeting ID is correct
- Chrome not opening: Ensure Google Chrome is installed and accessible
- JBH not working: Verify Join Before Host is enabled in meeting preferences
For G2G meetings to work properly:
- Service App: Must have appropriate permissions
- Join Before Host: Must be enabled (
jbh=true) - Guest Access: Must be configured in Webex Control Hub
- Meeting Type: Must be created by service app
Ensure your Webex organization has:
- Guest access enabled
- Appropriate meeting policies
- Service app permissions configured
The project uses automated code quality checks:
- Prettier: Code formatting (
.prettierrc) - ESLint: JavaScript linting (
eslint.config.js) - Husky: Git hooks for pre-commit checks
- Lint-staged: Automatic formatting on commit
npm run format # Format code with Prettier
npm run prepare # Set up Husky git hooksAutomated workflows run on pull requests:
- Prettier: Ensures code formatting consistency
- Ruff: Python code linting (if applicable)
The collection uses realistic personas for testing:
- Host:
Dr. {{$randomFullName}}(Healthcare provider) - Guest 1:
Patient {{$randomFullName}}(Hospital A Patient 1) - Guest 2:
Patient {{$randomFullName}}(Hospital A Patient 2)
Perfect for testing scenarios like:
- Telehealth: Doctor meeting with patients
- Customer Support: Agent helping multiple customers
- Education: Instructor with guest students
- Legal: Attorney with clients
GET /v1/meetingPreferences
Retrieves service app meeting preferences and capabilities.
POST /v1/meetings
Creates a new G2G meeting with guest access enabled.
POST /v1/meetings/{meetingId}/joinLinks
Generates join links for hosts and guests.
POST /v1/meetings/{meetingId}/guests
Creates guest participants for the meeting.
{
"title": "Guest-to-Guest Meeting",
"start": "2024-01-01T10:00:00Z",
"end": "2024-01-01T11:00:00Z",
"enabledJoinBeforeHost": true,
"allowFirstUserToBeCoHost": false
}{
"meetingId": "{{meetingId}}",
"password": "{{meetingPassword}}",
"joinDirectly": false,
"email": "{{$randomEmail}}",
"displayName": "Patient {{$randomFullName}}"
}- Access Tokens: Never commit tokens to version control
- Meeting Passwords: Use strong, generated passwords
- Guest Access: Limit guest permissions appropriately
- Audit Logging: Monitor G2G meeting usage
- Service Apps as Guest-to-Guest Meeting Facilitators Guide
- Webex Meetings API Documentation
- Join Links API Reference
- Fork the repository
- Create a feature branch
- Make your changes
- Run
npm run formatto format code - Submit a pull request
This project is licensed under the terms specified in the LICENSE file.
- Create an issue in this repository
- Review the G2G Meeting Facilitator Guide
- Contact Webex Developer Support
That's it! Easy! π
Repository: https://github.com/WebexSamples/g2g-meeting-sample

