0% found this document useful (0 votes)
8 views29 pages

Robloxvoicedocs

This document outlines the API specifications for the Voice API v1, detailing various endpoints for managing voice calls, settings, and user interactions. It includes methods for retrieving user lists, joining and leaving calls, and managing voice settings, along with their respective parameters and response formats. Each endpoint is categorized under tags for easy identification and includes error handling for authorization issues.

Uploaded by

mushroomgang60
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views29 pages

Robloxvoicedocs

This document outlines the API specifications for the Voice API v1, detailing various endpoints for managing voice calls, settings, and user interactions. It includes methods for retrieving user lists, joining and leaving calls, and managing voice settings, along with their respective parameters and response formats. Each endpoint is categorized under tags for easy identification and includes error handling for authorization issues.

Uploaded by

mushroomgang60
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 29

{

"swagger": "2.0",
"info": {
"version": "v1",
"title": "Voice Api v1"
},
"host": "rgp-integration.simulprod.com",
"schemes": [
"https"
],
"paths": {
"/v1/calls/{channelId}/users": {
"get": {
"tags": [
"Voice"
],
"summary": "Returns a list of the ids for all users
active/publishing in a call (except for the user making the request).",
"consumes": [],
"produces": [
"application/json",
"text/json"
],
"parameters": [
{
"name": "channelId",
"in": "path",
"description": "The unique channel Id of the call",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.CallUsersListResponse"
}
},
"401": {
"description": "0: Authorization has been denied for this
request."
}
},
"properties": {
"internal": true,
"metricIds": [
"Voice:ListCallActiveUsers"
]
}
}
},
"/v1/settings": {
"get": {
"tags": [
"Voice"
],
"summary": "Returns voice chat settings details for the requesting
user.",
"consumes": [],
"produces": [
"application/json",
"text/json"
],
"parameters": [],
"responses": {
"200": {
"description": "",
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.VoiceSettingsResponse"
}
},
"401": {
"description": "0: Authorization has been denied for this
request."
}
},
"properties": {
"internal": true,
"metricIds": [
"Voice:GetVoiceSettings"
]
}
}
},
"/v1/settings/universe/{universeId}": {
"get": {
"tags": [
"Voice"
],
"summary": "Returns whether or not the universe/place is enabled
for voice",
"consumes": [],
"produces": [
"application/json",
"text/json"
],
"parameters": [
{
"name": "universeId",
"in": "path",
"description": "The id of the universe to check if voice
enabled",
"required": true,
"type": "integer",
"format": "int64"
},
{
"name": "placeId",
"in": "query",
"description": "The optional id of the place to check if
voice enabled",
"required": false,
"type": "integer",
"format": "int64"
}
],
"responses": {
"200": {
"description": "",
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.VoiceSettingsUniverseResponse"
}
},
"401": {
"description": "0: Authorization has been denied for this
request."
}
},
"properties": {
"internal": true,
"metricIds": [
"Voice:GetUniversePlaceVoiceEnabledSettings"
]
}
}
},
"/v1/turn/auth": {
"get": {
"tags": [
"Turn"
],
"summary": "Returns turn server auth details for the requesting
user.",
"consumes": [],
"produces": [
"application/json",
"text/json"
],
"parameters": [],
"responses": {
"200": {
"description": "",
"schema": {
"$ref":
"#/definitions/Roblox.Platform.Voice.TurnServers.TurnServerAuth"
}
},
"401": {
"description": "0: Authorization has been denied for this
request."
}
},
"properties": {
"internal": true,
"metricIds": [
"Turn:GetTurnServerAuth"
]
}
}
},
"/v1/calls/{channelId}/leave": {
"post": {
"tags": [
"Voice"
],
"summary": "Leave a named voice channel",
"consumes": [],
"produces": [
"application/json",
"text/json"
],
"parameters": [
{
"name": "channelId",
"in": "path",
"description": "",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "",
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.BaseStatusResponse"
}
},
"401": {
"description": "0: Authorization has been denied for this
request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"deprecated": true,
"properties": {
"internal": true,
"obsoleteMessage": "Please use /calls/leave",
"metricIds": [
"Voice:LeaveVoiceCall"
]
}
}
},
"/v1/calls/group/{groupId}/join": {
"post": {
"tags": [
"Voice"
],
"summary": "Join voice call for an internal group Id",
"consumes": [
"application/json",
"text/json",
"application/x-www-form-urlencoded"
],
"produces": [
"application/json",
"text/json"
],
"parameters": [
{
"name": "groupId",
"in": "path",
"description": "",
"required": true,
"type": "string"
},
{
"name": "requestModel",
"in": "body",
"description": "{Roblox.Voice.Api.Models.VoiceBaseRequest}\
r\n{Roblox.Voice.Api.Models.VoiceBaseRequest}",
"required": true,
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.VoiceBaseRequest"
}
}
],
"responses": {
"200": {
"description":
"{Roblox.Voice.Api.Models.JoinVoiceChannelResponse}",
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.JoinVoiceChannelResponse"
}
},
"401": {
"description": "0: Authorization has been denied for this
request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"deprecated": true,
"properties": {
"internal": true,
"obsoleteMessage": "Please use /calls/join",
"metricIds": [
"Voice:JoinVoiceGroupCall"
]
}
}
},
"/v1/calls/join": {
"post": {
"tags": [
"Voice"
],
"summary": "Join voice call from group",
"consumes": [
"application/json",
"text/json",
"application/x-www-form-urlencoded"
],
"produces": [
"application/json",
"text/json"
],
"parameters": [
{
"name": "requestModel",
"in": "body",
"description":
"{Roblox.Voice.Api.Models.JoinVoiceCallRequest}",
"required": true,
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.JoinVoiceCallRequest"
}
}
],
"responses": {
"200": {
"description": "",
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.JoinVoiceChannelResponse"
}
},
"401": {
"description": "0: Authorization has been denied for this
request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"properties": {
"internal": true,
"metricIds": [
"Voice:JoinVoiceCall"
]
}
}
},
"/v1/calls/leave": {
"post": {
"tags": [
"Voice"
],
"summary": "Leave voice call for a channel",
"consumes": [
"application/json",
"text/json",
"application/x-www-form-urlencoded"
],
"produces": [
"application/json",
"text/json"
],
"parameters": [
{
"name": "requestModel",
"in": "body",
"description": "",
"required": true,
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.VoiceCallLifecycleRequestBase"
}
}
],
"responses": {
"200": {
"description": "",
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.BaseStatusResponse"
}
},
"401": {
"description": "0: Authorization has been denied for this
request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"properties": {
"internal": true,
"metricIds": [
"Voice:LeaveVoiceCall"
]
}
}
},
"/v1/calls/publish/pause": {
"post": {
"tags": [
"Voice"
],
"summary": "Pause publishing voice in an existing voice call",
"consumes": [
"application/json",
"text/json",
"application/x-www-form-urlencoded"
],
"produces": [
"application/json",
"text/json"
],
"parameters": [
{
"name": "requestModel",
"in": "body",
"description": "",
"required": true,
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.VoiceCallLifecycleRequestBase"
}
}
],
"responses": {
"200": {
"description": "",
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.BaseStatusResponse"
}
},
"401": {
"description": "0: Authorization has been denied for this
request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"properties": {
"internal": true,
"metricIds": [
"Voice:PausePublishInCall"
]
}
}
},
"/v1/calls/publish/resume": {
"post": {
"tags": [
"Voice"
],
"summary": "Resume publishing voice in an existing voice call",
"consumes": [
"application/json",
"text/json",
"application/x-www-form-urlencoded"
],
"produces": [
"application/json",
"text/json"
],
"parameters": [
{
"name": "requestModel",
"in": "body",
"description": "",
"required": true,
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.VoiceCallLifecycleRequestBase"
}
}
],
"responses": {
"200": {
"description": "",
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.BaseStatusResponse"
}
},
"401": {
"description": "0: Authorization has been denied for this
request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"properties": {
"internal": true,
"metricIds": [
"Voice:ResumePublishInCall"
]
}
}
},
"/v1/calls/publish/start": {
"post": {
"tags": [
"Voice"
],
"summary": "Start publishing voice in an existing voice call",
"consumes": [
"application/json",
"text/json",
"application/x-www-form-urlencoded"
],
"produces": [
"application/json",
"text/json"
],
"parameters": [
{
"name": "requestModel",
"in": "body",
"description": "",
"required": true,
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.PublishInCallRequest"
}
}
],
"responses": {
"200": {
"description": "",
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.BaseStatusResponse"
}
},
"401": {
"description": "0: Authorization has been denied for this
request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"properties": {
"internal": true,
"metricIds": [
"Voice:PublishInCall"
]
}
}
},
"/v1/calls/publish/trickle": {
"post": {
"tags": [
"Voice"
],
"summary": "Trickles ICE candidates for a call's publishing peer
connection\r\nhttps://webrtcglossary.com/trickle-ice/",
"consumes": [
"application/json",
"text/json",
"application/x-www-form-urlencoded"
],
"produces": [
"application/json",
"text/json"
],
"parameters": [
{
"name": "requestModel",
"in": "body",
"description": "",
"required": true,
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.TrickleIceRequest"
}
}
],
"responses": {
"200": {
"description": "",
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.BaseStatusResponse"
}
},
"401": {
"description": "0: Authorization has been denied for this
request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"properties": {
"internal": true,
"metricIds": [
"Voice:CallTrickleIce"
]
}
}
},
"/v1/calls/publish/trickle/end": {
"post": {
"tags": [
"Voice"
],
"summary": "Finish the trickle ICE candidate
process\r\nhttps://webrtcglossary.com/trickle-ice/",
"consumes": [
"application/json",
"text/json",
"application/x-www-form-urlencoded"
],
"produces": [
"application/json",
"text/json"
],
"parameters": [
{
"name": "requestModel",
"in": "body",
"description": "",
"required": true,
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.VoiceCallLifecycleRequestBase"
}
}
],
"responses": {
"200": {
"description": "",
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.BaseStatusResponse"
}
},
"401": {
"description": "0: Authorization has been denied for this
request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"properties": {
"internal": true,
"metricIds": [
"Voice:FinishCallTrickleIce"
]
}
}
},
"/v1/calls/subscriptions/cancel": {
"post": {
"tags": [
"Voice"
],
"summary": "Cancel (and close) an user's subscription to a voice
feed of another user",
"consumes": [
"application/json",
"text/json",
"application/x-www-form-urlencoded"
],
"produces": [
"application/json",
"text/json"
],
"parameters": [
{
"name": "requestModel",
"in": "body",
"description": "",
"required": true,
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.SubscriptionsRequest"
}
}
],
"responses": {
"200": {
"description": "",
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.BaseSubscriptionsResponse"
}
},
"401": {
"description": "0: Authorization has been denied for this
request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"properties": {
"internal": true,
"metricIds": [
"Voice:CancelSubscriptions"
]
}
}
},
"/v1/calls/subscriptions/complete": {
"post": {
"tags": [
"Voice"
],
"summary": "Completes an user's subscription to a voice feed of
another user",
"consumes": [
"application/json",
"text/json",
"application/x-www-form-urlencoded"
],
"produces": [
"application/json",
"text/json"
],
"parameters": [
{
"name": "requestModel",
"in": "body",
"description": "",
"required": true,
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.CompleteSubscriptionsRequest"
}
}
],
"responses": {
"200": {
"description": "",
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.BaseSubscriptionsResponse"
}
},
"401": {
"description": "0: Authorization has been denied for this
request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"properties": {
"internal": true,
"metricIds": [
"Voice:CompleteSubscriptions"
]
}
}
},
"/v1/calls/subscriptions/pause": {
"post": {
"tags": [
"Voice"
],
"summary": "Pause an user's subscription to a voice feed of another
user",
"consumes": [
"application/json",
"text/json",
"application/x-www-form-urlencoded"
],
"produces": [
"application/json",
"text/json"
],
"parameters": [
{
"name": "requestModel",
"in": "body",
"description": "",
"required": true,
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.SubscriptionsRequest"
}
}
],
"responses": {
"200": {
"description": "",
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.BaseSubscriptionsResponse"
}
},
"401": {
"description": "0: Authorization has been denied for this
request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"properties": {
"internal": true,
"metricIds": [
"Voice:PauseSubscriptions"
]
}
}
},
"/v1/calls/subscriptions/resume": {
"post": {
"tags": [
"Voice"
],
"summary": "Resume an user's subscription to a voice feed of
another user",
"consumes": [
"application/json",
"text/json",
"application/x-www-form-urlencoded"
],
"produces": [
"application/json",
"text/json"
],
"parameters": [
{
"name": "requestModel",
"in": "body",
"description": "",
"required": true,
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.SubscriptionsRequest"
}
}
],
"responses": {
"200": {
"description": "",
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.BaseSubscriptionsResponse"
}
},
"401": {
"description": "0: Authorization has been denied for this
request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"properties": {
"internal": true,
"metricIds": [
"Voice:ResumeSubscriptions"
]
}
}
},
"/v1/calls/subscriptions/start": {
"post": {
"tags": [
"Voice"
],
"summary": "Initiates an user's subscription to a voice feed of
another user",
"consumes": [
"application/json",
"text/json",
"application/x-www-form-urlencoded"
],
"produces": [
"application/json",
"text/json"
],
"parameters": [
{
"name": "requestModel",
"in": "body",
"description": "",
"required": true,
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.SubscriptionsRequest"
}
}
],
"responses": {
"200": {
"description": "",
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.BaseSubscriptionsResponse"
}
},
"401": {
"description": "0: Authorization has been denied for this
request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"properties": {
"internal": true,
"metricIds": [
"Voice:InitiateSubscriptions"
]
}
}
},
"/v1/calls/subscriptions/trickle": {
"post": {
"tags": [
"Voice"
],
"summary": "Trickles ICE candidates for a subscription's peer
connection\r\nhttps://webrtcglossary.com/trickle-ice/",
"consumes": [
"application/json",
"text/json",
"application/x-www-form-urlencoded"
],
"produces": [
"application/json",
"text/json"
],
"parameters": [
{
"name": "requestModel",
"in": "body",
"description": "",
"required": true,
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.SubscriptionTrickleIceRequest"
}
}
],
"responses": {
"200": {
"description": "",
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.BaseStatusResponse"
}
},
"401": {
"description": "0: Authorization has been denied for this
request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"properties": {
"internal": true,
"metricIds": [
"Voice:SubscriptionTrickleIce"
]
}
}
},
"/v1/calls/subscriptions/trickle/end": {
"post": {
"tags": [
"Voice"
],
"summary": "Finish the trickle ICE candidate
process.\r\nhttps://webrtcglossary.com/trickle-ice/",
"consumes": [
"application/json",
"text/json",
"application/x-www-form-urlencoded"
],
"produces": [
"application/json",
"text/json"
],
"parameters": [
{
"name": "requestModel",
"in": "body",
"description": "",
"required": true,
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.SubscriptionTrickleIceRequest"
}
}
],
"responses": {
"200": {
"description": "",
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.BaseStatusResponse"
}
},
"401": {
"description": "0: Authorization has been denied for this
request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"properties": {
"internal": true,
"metricIds": [
"Voice:FinishSubscriptionTrickleIce"
]
}
}
},
"/v1/clientlog": {
"post": {
"tags": [
"Voice"
],
"summary": "Log a debug message from the client.\r\nTHIS IS NOT A
LONG TERM SOLUTION AND WILL BE REMOVED BEFORE GOING INTO PRODUCTION!",
"consumes": [
"application/json",
"text/json",
"application/x-www-form-urlencoded"
],
"produces": [
"application/json",
"text/json"
],
"parameters": [
{
"name": "requestModel",
"in": "body",
"description": "",
"required": true,
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.ClientLogRequest"
}
}
],
"responses": {
"200": {
"description":
"{Roblox.Voice.Api.Models.BaseStatusResponse}",
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.BaseStatusResponse"
}
},
"401": {
"description": "0: Authorization has been denied for this
request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"properties": {
"internal": true,
"metricIds": [
"Voice:ClientLog"
]
}
}
},
"/v1/groups": {
"post": {
"tags": [
"Voice"
],
"summary": "Create voice group for internal use",
"consumes": [],
"produces": [
"application/json",
"text/json"
],
"parameters": [],
"responses": {
"200": {
"description":
"{Roblox.Voice.Api.Models.CreateGroupResponse}",
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.CreateGroupResponse"
}
},
"401": {
"description": "0: Authorization has been denied for this
request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"properties": {
"internal": true,
"metricIds": [
"Voice:CreateGroup"
]
}
}
},
"/v1/groups/bulk": {
"post": {
"tags": [
"Voice"
],
"summary": "Create multiple voice groups for internal use",
"consumes": [
"application/json",
"text/json",
"application/x-www-form-urlencoded"
],
"produces": [
"application/json",
"text/json"
],
"parameters": [
{
"name": "requestModel",
"in": "body",
"description": "",
"required": true,
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.BulkCreateGroupsRequest"
}
}
],
"responses": {
"200": {
"description":
"{Roblox.Voice.Api.Models.BaseStatusResponse}",
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.BaseStatusResponse"
}
},
"401": {
"description": "0: Authorization has been denied for this
request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"properties": {
"internal": true,
"metricIds": [
"Voice:BulkCreateGroups"
]
}
}
},
"/v1/settings/user-opt-in": {
"post": {
"tags": [
"Voice"
],
"summary": "Update whether a user has opted into voice chat or
not.",
"consumes": [
"application/json",
"text/json",
"application/x-www-form-urlencoded"
],
"produces": [
"application/json",
"text/json"
],
"parameters": [
{
"name": "requestModel",
"in": "body",
"description":
"{Roblox.Voice.Api.Models.UpdateUsersVoiceChatPermissionRequest}",
"required": true,
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.UpdateUsersVoiceChatPermissionRequest"
}
}
],
"responses": {
"200": {
"description": "",
"schema": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.UpdateUsersVoiceChatPermissionResponse"
}
},
"401": {
"description": "0: Authorization has been denied for this
request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"properties": {
"internal": true,
"metricIds": [
"Voice:UpdateUserVoiceChatPermission"
]
}
}
}
},
"definitions": {
"Roblox.Platform.Voice.TurnServers.TurnServerAuth": {
"type": "object",
"properties": {
"uris": {
"type": "array",
"items": {
"type": "string"
}
},
"username": {
"type": "string"
},
"password": {
"type": "string"
},
"ttl": {
"format": "int32",
"type": "integer"
}
}
},
"Roblox.Voice.Api.Models.VoiceSettingsResponse": {
"description": "Response model for voice settings associated with the
user",
"type": "object",
"properties": {
"isVoiceEnabled": {
"description": "Gets or sets a value indicating whether this
user can use voice chat feature",
"type": "boolean"
},
"isUserOptIn": {
"description": "Gets or sets a value indicating whether this
user has opt-in to voice chat",
"type": "boolean"
},
"isUserEligible": {
"description": "Gets or sets a value indicating whether this
user is eligible for voice chat",
"type": "boolean"
}
}
},
"Roblox.Voice.Api.Models.VoiceSettingsUniverseResponse": {
"description": "Response model for voice settings associated with a
universe/place",
"type": "object",
"properties": {
"isUniverseEnabledForVoice": {
"description": "Whether or not the universe is enabled for
voice",
"type": "boolean"
},
"isPlaceEnabledForVoice": {
"description": "Whether or not the place is enabled for voice",
"type": "boolean"
}
}
},
"Roblox.Voice.Api.Models.UpdateUsersVoiceChatPermissionRequest": {
"description": "Request model for updating whether a user has opted
into voice chat or not.",
"type": "object",
"properties": {
"isUserOptIn": {
"description": "Gets or sets a boolean indicating whether the
user opts-in to voice chat feature.",
"type": "boolean"
}
}
},
"Roblox.Voice.Api.Models.UpdateUsersVoiceChatPermissionResponse": {
"description": "Response model for updating whether a user has opted
into voice chat or not.",
"type": "object",
"properties": {
"isUserOptIn": {
"description": "Gets or sets a boolean indicating whether the
user opts-in to voice chat feature.",
"type": "boolean"
}
}
},
"Roblox.Voice.Api.Models.JoinVoiceCallRequest": {
"description": "Request model to join voice call for a chat
conversation",
"type": "object",
"properties": {
"callReferenceId": {
"description": "Gets or sets unique id of the joined call",
"type": "string"
},
"type": {
"description": "Gets or sets the type of joined call",
"type": "string"
},
"sessionId": {
"description": "Gets or sets unique id of the joined call",
"maxLength": 65,
"minLength": 0,
"type": "string"
}
}
},
"Roblox.Voice.Api.Models.JoinVoiceChannelResponse": {
"description": "response model for try join voice channel request",
"type": "object",
"properties": {
"channelId": {
"description": "Gets or sets unique id of the joined call",
"type": "string"
}
}
},
"Roblox.Voice.Api.Models.VoiceCallLifecycleRequestBase": {
"description": "Request model to start publishing to voice call",
"type": "object",
"properties": {
"channelId": {
"description": "Gets or sets unique id of the joined call",
"type": "string"
},
"sessionId": {
"description": "Gets or sets unique id of the joined call",
"maxLength": 65,
"minLength": 0,
"type": "string"
}
}
},
"Roblox.Voice.Api.Models.BaseStatusResponse": {
"description": "base response model for voice apis",
"type": "object",
"properties": {
"status": {
"description": "Gets or sets status of response",
"enum": [
"Success"
],
"type": "string"
}
}
},
"Roblox.Voice.Api.Models.PublishInCallRequest": {
"description": "Request model to start publishing to voice call",
"type": "object",
"properties": {
"offerSdp": {
"description": "Gets or sets sdp offer to start publishing",
"type": "string"
},
"isMuted": {
"description": "Gets or sets a value indicating whether to
start as muted or not",
"type": "boolean"
},
"channelId": {
"description": "Gets or sets unique id of the joined call",
"type": "string"
},
"sessionId": {
"description": "Gets or sets unique id of the joined call",
"maxLength": 65,
"minLength": 0,
"type": "string"
}
}
},
"Roblox.Voice.Api.Models.CallUsersListResponse": {
"description": "Response model for users in voice call",
"type": "object",
"properties": {
"channelId": {
"description": "Gets or sets the unique id of the call",
"type": "string"
},
"ownState": {
"$ref": "#/definitions/Roblox.Voice.Api.CallParticipantState",
"description": "Gets or sets the requesting user's state in the
channel"
},
"publishers": {
"description": "Gets or sets the user Id",
"type": "array",
"items": {
"$ref":
"#/definitions/Roblox.Platform.Voice.CallPublisherInfo"
}
}
}
},
"Roblox.Voice.Api.CallParticipantState": {
"description": "Wraps a call participant's state",
"type": "object",
"properties": {
"isMuted": {
"description": "Gets or sets if the user is muted",
"type": "boolean"
}
}
},
"Roblox.Platform.Voice.CallPublisherInfo": {
"type": "object",
"properties": {
"userId": {
"format": "int64",
"type": "integer"
},
"feedReferenceId": {
"format": "int64",
"type": "integer"
},
"isMuted": {
"type": "boolean"
}
}
},
"Roblox.Voice.Api.Models.TrickleIceRequest": {
"description": "Request model for Trickle ICE request for a completing
a subscription/peer connection",
"type": "object",
"properties": {
"candidates": {
"description": "Gets or sets Web-RTC ICE candidates",
"type": "array",
"items": {
"$ref": "#/definitions/Roblox.Platform.Voice.IceCandidate"
}
},
"isLast": {
"description": "Gets or sets a value indicating whether this is
the last candidate.\r\nThis allows combining the last candidate trickle request
with signaling trickle end.",
"type": "boolean"
},
"channelId": {
"description": "Gets or sets unique id of the joined call",
"type": "string"
},
"sessionId": {
"description": "Gets or sets unique id of the joined call",
"maxLength": 65,
"minLength": 0,
"type": "string"
}
}
},
"Roblox.Platform.Voice.IceCandidate": {
"type": "object",
"properties": {
"sdpMid": {
"type": "string"
},
"sdpMLineIndex": {
"format": "int32",
"type": "integer"
},
"candidate": {
"type": "string"
}
}
},
"Roblox.Voice.Api.Models.SubscriptionsRequest": {
"description": "Request model for user feed subscription operations",
"type": "object",
"properties": {
"subscribedUsers": {
"description": "Gets or sets the publisher infos for all users
to be subscribed by the subscription request",
"type": "array",
"items": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.CallPublisherInfoRequest"
}
},
"channelId": {
"description": "Gets or sets unique id of the joined call",
"type": "string"
},
"sessionId": {
"description": "Gets or sets unique id of the joined call",
"maxLength": 65,
"minLength": 0,
"type": "string"
}
}
},
"Roblox.Voice.Api.Models.CallPublisherInfoRequest": {
"description": "Request model for a call publisher's details, does not
include the publishing state (muted/unmuted)",
"type": "object",
"properties": {
"userId": {
"format": "int64",
"description": "Gets or sets the user Id",
"type": "integer"
},
"feedReferenceId": {
"format": "int64",
"description": "Gets or sets the unique identifier for a
publisher's feed (timestamp user finished publishing handshake)\r\nThis is used to
identify the latest feed associated with a publisher",
"type": "integer"
}
}
},
"Roblox.Voice.Api.Models.BaseSubscriptionsResponse": {
"description": "Base Response model for subscription operations",
"type": "object",
"properties": {
"channelId": {
"description": "Gets or sets unique id of the joined call",
"type": "string"
},
"failures": {
"description": "Gets or sets the reason, for each publisher the
subscription operation failed",
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
},
"Roblox.Voice.Api.Models.CompleteSubscriptionsRequest": {
"description": "Request model to complete subscribing to user feeds in
voice call",
"type": "object",
"properties": {
"sdpAnswersList": {
"description": "Gets or sets publisher userIds to subscribe
to",
"type": "array",
"items": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.CallPublisherSdpRequest"
}
},
"channelId": {
"description": "Gets or sets unique id of the joined call",
"type": "string"
},
"sessionId": {
"description": "Gets or sets unique id of the joined call",
"maxLength": 65,
"minLength": 0,
"type": "string"
}
}
},
"Roblox.Voice.Api.Models.CallPublisherSdpRequest": {
"description": "Request model for a call publisher's details, does not
include the publishing state (muted/unmuted)",
"type": "object",
"properties": {
"publisher": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.CallPublisherInfoRequest",
"description": "Gets or sets the publisher's info"
},
"sdp": {
"description": "Gets or sets an sdp message representing either
an offer from or an answer to the publisher.",
"type": "string"
}
}
},
"Roblox.Voice.Api.Models.SubscriptionTrickleIceRequest": {
"description": "Request model for Trickle",
"type": "object",
"properties": {
"subscribedUser": {
"$ref":
"#/definitions/Roblox.Voice.Api.Models.CallPublisherInfoRequest",
"description": "Gets or sets the publisher info for the user
being subscribed to"
},
"candidates": {
"description": "Gets or sets Web-RTC ICE candidates",
"type": "array",
"items": {
"$ref": "#/definitions/Roblox.Platform.Voice.IceCandidate"
}
},
"isLast": {
"description": "Gets or sets a value indicating whether this is
the last candidate.\r\nThis allows combining the last candidate trickle request
with signaling trickle end.",
"type": "boolean"
},
"channelId": {
"description": "Gets or sets unique id of the joined call",
"type": "string"
},
"sessionId": {
"description": "Gets or sets unique id of the joined call",
"maxLength": 65,
"minLength": 0,
"type": "string"
}
}
},
"Roblox.Voice.Api.Models.CreateGroupResponse": {
"description": "The response model for the CreateGroup endpoint",
"type": "object",
"properties": {
"channelIdentifier": {
"description": "Gets or sets the channel identifier",
"type": "string"
}
}
},
"Roblox.Voice.Api.Models.BulkCreateGroupsRequest": {
"description": "Request for creating group channels in bulk",
"type": "object",
"properties": {
"groupIds": {
"description": "Gets or sets the group ids to create.",
"type": "array",
"items": {
"type": "string"
}
}
}
},
"Roblox.Voice.Api.ClientLogRequest": {
"description": "Holds a client log message to be stored in the server
logs",
"type": "object",
"properties": {
"messages": {
"description": "Gets or sets the logs messages.",
"type": "array",
"items": {
"$ref": "#/definitions/Roblox.Voice.ClientLogMessage"
}
}
}
},
"Roblox.Voice.ClientLogMessage": {
"description": "Wraps a single log message from the client",
"type": "object",
"properties": {
"isError": {
"description": "Gets or sets a value indicating whether this is
a client-side error level log. All other logs will be treated as info level.",
"type": "boolean"
},
"message": {
"description": "Gets or sets the logs message content.",
"type": "string"
}
}
},
"Roblox.Voice.Api.Models.VoiceBaseRequest": {
"description": "Base request class for VoiceController",
"type": "object",
"properties": {
"sessionId": {
"description": "Gets or sets unique id of the joined call",
"maxLength": 65,
"minLength": 0,
"type": "string"
}
}
}
}
}

You might also like