openapi: 3.2.0 info: title: Data Webinar Collaborators API description: Wistia Data API version: edge-version servers: - url: https://api.wistia.com/modern tags: - name: Webinar Collaborators x-wistia-mcp-toolsets: webinars x-displayName: Webinar Collaborators paths: /webinars/{webinarId}/collaborators: get: summary: List Webinar Collaborators x-wistia-mcp-annotations: read_only_hint: true read_only_hint_justification: This tool only reads webinar collaborators from the account and does not modify any data. open_world_hint: false open_world_hint_justification: This tool only queries records inside the account and does not reach external services. destructive_hint: false destructive_hint_justification: This tool is read-only and does not make any changes. idempotent_hint: true idempotent_hint_justification: Reading data does not change any state, so repeated calls have no additional effect. x-speakeasy-group: webinarCollaborators x-speakeasy-name-override: list description: 'Lists the collaborators (contacts and contact groups) that have been granted producer access to a webinar. Results are scoped to what the authenticated user is allowed to see: account owners, managers, and the webinar''s producers see all collaborators; everyone else sees an empty list. ## Requires api token with one of the following permissions ``` Read all data ``` ' x-wistia-mcp-tool-name: get-webinar-collaborators x-wistia-mcp-description: 'List, get, show, or browse the webinar collaborators — the contacts and contact groups who have been granted producer access to a webinar. Use this when someone wants to see who has access to produce a webinar, list producers, or find who a webinar is shared with, with optional sorting and pagination. Results are limited to collaborators the authenticated user is permitted to see: only account owners, managers, and the webinar''s producers can see the list. Use create-webinar-collaborator to grant access or delete-webinar-collaborator to revoke access. ' parameters: - name: webinarId in: path description: Webinar Hashed ID required: true schema: description: Hashed ID of the webinar (e.g., "abc123") type: string - name: page in: query description: 'The page number to retrieve. This cannot be combined with `cursor`, pagination. ' required: false schema: type: integer - name: per_page in: query description: The number of medias per page. Use this for both offset pagination and cursor pagination. required: false schema: type: integer - name: cursor in: query description: 'If `cursor[enabled]` is set to 1 then cursor pagination is enabled and the first set of records are fetched up to the `per_page`. Cursor pagination will also be turned on if `cursor[before]` or `cursor[after]` are set. Records returned will have a `cursor` property set which can be used to fetch more records in the same `sort_by` ordering. The cursor value of the last record can be used to fetch records after the current result set and the cursor of the first record can be used to fetch records before the result set. NOTE: a cursor value is only valid if the `sort_by` value hasn''t changed from the last fetch. For example, you cannot fetch using `sort_by` id and then pass that cursor value to a `sort_by` name. ' required: false schema: unevaluatedProperties: false type: object properties: enabled: description: 'If `cursor[enabled]` is set to 1, the first result set will be fetched with cursor pagination enabled. This values is ignored if `cursor[before]` or `cursor[after]` are set. ' type: integer enum: - 0 - 1 before: description: 'If `cursor[before]` is set then cursor pagination is enabled and all records before the cursor up to the `per_page` are returned. This feature is useful for fetching "new records", for example, in a "pull to refersh" feature when showing records in a descending order. ' type: string after: description: 'If `cursor[after]` is set then cursor pagination is enabled and all records after the cursor up to the `per_page` are returned. ' type: string style: deepObject - name: sort_by in: query description: 'Ordering. When using cursor pagination (see cursor param), only `id` is supported. ' required: false schema: type: string enum: - created - updated - id default: id - name: sort_direction in: query description: Ordering Sort Direction (0 = desc, 1 = asc; default is 1) required: false schema: type: integer enum: - 0 - 1 default: 1 responses: '200': description: Successfully retrieved list of webinar collaborators content: application/json: schema: type: array items: unevaluatedProperties: false type: object description: 'A webinar collaborator is a contact or contact group that has been granted producer access to a webinar. ' properties: id: type: integer description: The unique identifier of the webinar role. examples: - 14 role: type: string description: The role of the collaborator on the webinar. Only "admin" is supported. enum: - admin examples: - admin created_at: type: string format: date-time description: The timestamp when this collaborator was added. examples: - '2024-01-15T10:30:00Z' share: unevaluatedProperties: false type: object description: The contact or contact group being granted access. properties: id: type: integer examples: - 3 name: type: string examples: - Jim type: type: string description: Either "Contact" or "ContactGroup" examples: - Contact email: type: string format: email description: Email address (only present for Contact type). examples: - jim@wistia.com required: - id - name - type cursor: description: A cursor for stable pagination based on current `sort_by` order. You can pass this to `cursor[before]` or `cursor[after]` as a parameter to fetch the records before or after this record in the same sort order. This is only populated if records were fetched with `cursor[enabled]`, or `cursor[before]` or `cursor[after]`. type: - string - 'null' required: - id - role - created_at - share '400': description: Bad request content: application/json: schema: unevaluatedProperties: false type: object properties: error: description: Error message detailing the reason for the bad request. type: string examples: - Bad request errors: description: Array of error messages detailing the reasons for the bad request. type: array items: type: string '401': description: Unauthorized, invalid or missing token content: application/json: schema: unevaluatedProperties: false type: object properties: code: description: A machine-readable identifier for the specific authorization failure. type: string enum: - unauthorized_credentials - account_inactive - unauthorized_scope - unauthorized_params error: type: string examples: - Invalid credentials. '404': description: Resource not found content: application/json: schema: unevaluatedProperties: false type: object properties: error: type: string examples: - Folder with ID 'fakeid' not found. '500': description: Internal server error content: application/json: schema: unevaluatedProperties: false type: object properties: error: type: string examples: - Internal server error tags: - Webinar Collaborators security: - BearerAuth: [] post: summary: Create Webinar Collaborator x-wistia-mcp-annotations: read_only_hint: false read_only_hint_justification: This tool creates a new webinar collaborator in the account, which modifies data. open_world_hint: false open_world_hint_justification: This tool only operates on records inside the account and does not reach external services. destructive_hint: false destructive_hint_justification: This tool only adds a new resource; existing data is not modified. idempotent_hint: false idempotent_hint_justification: Each call attempts to create an additional resource, so repeating the request may create duplicates. x-speakeasy-group: webinarCollaborators x-speakeasy-name-override: create description: 'Invites a collaborator (producer) to a webinar by specifying their email address. Creates a new contact if one doesn''t exist with that email. Note that viewers cannot be webinar collaborators. ## Requires api token with one of the following permissions ``` Read, update & delete anything ``` ' x-wistia-mcp-tool-name: create-webinar-collaborator x-wistia-mcp-description: 'Create a webinar collaborator — invite a contact as a producer to a webinar. Use this when someone wants to share producer access to a webinar, give production access, or add a person to a webinar by specifying their email address. Viewers cannot be webinar collaborators. Use get-webinar-collaborators to list who has access to a webinar or delete-webinar-collaborator to revoke access. ' parameters: - name: webinarId in: path description: Hashed ID of the webinar required: true schema: description: Hashed ID of the webinar (e.g., "abc123") type: string requestBody: required: true content: application/json: schema: unevaluatedProperties: false type: object description: Request body for creating a webinar collaborator. properties: email: type: string format: email description: Email address of the contact to invite. Creates a new contact if one doesn't exist. Note that viewers cannot be webinar collaborators. examples: - jim@wistia.com required: - email responses: '201': description: Webinar collaborator created successfully content: application/json: schema: unevaluatedProperties: false type: object description: 'A webinar collaborator is a contact or contact group that has been granted producer access to a webinar. ' properties: id: type: integer description: The unique identifier of the webinar role. examples: - 14 role: type: string description: The role of the collaborator on the webinar. Only "admin" is supported. enum: - admin examples: - admin created_at: type: string format: date-time description: The timestamp when this collaborator was added. examples: - '2024-01-15T10:30:00Z' share: unevaluatedProperties: false type: object description: The contact or contact group being granted access. properties: id: type: integer examples: - 3 name: type: string examples: - Jim type: type: string description: Either "Contact" or "ContactGroup" examples: - Contact email: type: string format: email description: Email address (only present for Contact type). examples: - jim@wistia.com required: - id - name - type cursor: description: A cursor for stable pagination based on current `sort_by` order. You can pass this to `cursor[before]` or `cursor[after]` as a parameter to fetch the records before or after this record in the same sort order. This is only populated if records were fetched with `cursor[enabled]`, or `cursor[before]` or `cursor[after]`. type: - string - 'null' required: - id - role - created_at - share '400': description: Bad request content: application/json: schema: type: object unevaluatedProperties: false properties: errors: type: array items: type: string examples: - errors: - Email is already a collaborator on this webinar '401': description: Unauthorized, invalid or missing token content: application/json: schema: unevaluatedProperties: false type: object properties: code: description: A machine-readable identifier for the specific authorization failure. type: string enum: - unauthorized_credentials - account_inactive - unauthorized_scope - unauthorized_params error: type: string examples: - Invalid credentials. '404': description: Resource not found content: application/json: schema: unevaluatedProperties: false type: object properties: error: type: string examples: - Folder with ID 'fakeid' not found. '500': description: Internal server error content: application/json: schema: unevaluatedProperties: false type: object properties: error: type: string examples: - Internal server error tags: - Webinar Collaborators security: - BearerAuth: [] /webinars/{webinarId}/collaborators/{id}: delete: summary: Delete Webinar Collaborator x-wistia-mcp-annotations: read_only_hint: false read_only_hint_justification: This tool deletes a webinar collaborator from the account, which modifies data. open_world_hint: false open_world_hint_justification: This tool only operates on records inside the account and does not reach external services. destructive_hint: true destructive_hint_justification: This tool removes a collaborator's access to the webinar, which cannot be undone without re-inviting them. idempotent_hint: true idempotent_hint_justification: Deleting a resource that is already deleted has no additional effect, so the request can be safely repeated. x-speakeasy-group: webinarCollaborators x-speakeasy-name-override: delete description: 'Removes a collaborator''s producer access to a webinar. ## Requires api token with one of the following permissions ``` Read, update & delete anything ``` ' x-wistia-mcp-tool-name: delete-webinar-collaborator x-wistia-mcp-description: 'Delete a webinar collaborator — revoke a contact''s producer access to a webinar. Use this when someone wants to remove a person''s access to produce a webinar, unshare a webinar, or revoke permissions. Use get-webinar-collaborators to list who has access to a webinar or create-webinar-collaborator to grant access. ' parameters: - name: webinarId in: path description: Webinar Hashed ID required: true schema: description: Hashed ID of the webinar (e.g., "abc123") type: string - name: id in: path description: Collaborator ID required: true schema: description: ID of the webinar collaborator to delete type: integer responses: '200': description: Webinar collaborator deleted successfully content: application/json: schema: unevaluatedProperties: false type: object description: 'A webinar collaborator is a contact or contact group that has been granted producer access to a webinar. ' properties: id: type: integer description: The unique identifier of the webinar role. examples: - 14 role: type: string description: The role of the collaborator on the webinar. Only "admin" is supported. enum: - admin examples: - admin created_at: type: string format: date-time description: The timestamp when this collaborator was added. examples: - '2024-01-15T10:30:00Z' share: unevaluatedProperties: false type: object description: The contact or contact group being granted access. properties: id: type: integer examples: - 3 name: type: string examples: - Jim type: type: string description: Either "Contact" or "ContactGroup" examples: - Contact email: type: string format: email description: Email address (only present for Contact type). examples: - jim@wistia.com required: - id - name - type cursor: description: A cursor for stable pagination based on current `sort_by` order. You can pass this to `cursor[before]` or `cursor[after]` as a parameter to fetch the records before or after this record in the same sort order. This is only populated if records were fetched with `cursor[enabled]`, or `cursor[before]` or `cursor[after]`. type: - string - 'null' required: - id - role - created_at - share '401': description: Unauthorized, invalid or missing token content: application/json: schema: unevaluatedProperties: false type: object properties: code: description: A machine-readable identifier for the specific authorization failure. type: string enum: - unauthorized_credentials - account_inactive - unauthorized_scope - unauthorized_params error: type: string examples: - Invalid credentials. '404': description: Resource not found content: application/json: schema: unevaluatedProperties: false type: object properties: error: type: string examples: - Folder with ID 'fakeid' not found. '500': description: Internal server error content: application/json: schema: unevaluatedProperties: false type: object properties: error: type: string examples: - Internal server error tags: - Webinar Collaborators security: - BearerAuth: [] components: securitySchemes: BearerAuth: type: http scheme: bearer x-tagGroups: - name: Data API tags: - Media - Customizations - Captions - Localizations - Trims - Extended Audio Descriptions - Brands - Tags - Taggings - Folders - Folder Sharings - Subfolders - Channels - Channel Collaborators - Channel Episodes - Webinars - Webinar Collaborators - Webinar Registrations - Account - Search - Resource URLs - Expiring Access Tokens - Background Job Status - Allowed Domains - Remix - Push Devices - Deleted Media - Review Bundles - Share Links - Bulk Actions - Custom Metadata Field Definitions - Custom Metadata Field Values - name: Stats API tags: - Stats:Account - Stats:Events - Stats:Media - Stats:Projects - Stats:Visitors - name: Analytics API tags: - Analytics:Account - Analytics:Media - Analytics:Webinar