Advertisement
ku_

Roblox Voice Docs Internal July 2023 V2 (ash1-voice.roblox.com/docs/json/v2)

ku_
Dec 5th, 2023
321
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JSON 37.06 KB | None | 0 0
  1. {
  2.   "swagger": "2.0",
  3.   "info": {
  4.     "title": "Voice Api v2",
  5.     "version": "v2"
  6.   },
  7.   "host": "voice.roblox.com",
  8.   "schemes": [
  9.     "https"
  10.   ],
  11.   "paths": {
  12.     "/v2/rcc/canlisten": {
  13.       "get": {
  14.         "tags": [
  15.           "ProtectedVoice"
  16.         ],
  17.         "summary": "Returns whether the user provided by the RCC server can listen to anyone in the given call.",
  18.         "produces": [
  19.           "application/json",
  20.           "text/json"
  21.         ],
  22.         "parameters": [
  23.           {
  24.             "in": "query",
  25.             "name": "channelId",
  26.             "description": "The unique id of the call.",
  27.             "required": true,
  28.             "type": "string"
  29.           },
  30.           {
  31.             "in": "query",
  32.             "name": "userId",
  33.             "description": "The id of the user.",
  34.             "required": true,
  35.             "type": "integer",
  36.             "format": "int64"
  37.           }
  38.         ],
  39.         "responses": {
  40.           "200": {
  41.             "description": "OK",
  42.             "schema": {
  43.               "$ref": "#/definitions/Roblox.Voice.Api.Models.GetUserCanListenInCallResponse"
  44.             }
  45.           }
  46.         },
  47.         "properties": {
  48.           "internal": true,
  49.           "metricIds": [
  50.             "ProtectedVoice:GetUserCanListenInCall"
  51.           ]
  52.         }
  53.       },
  54.       "post": {
  55.         "tags": [
  56.           "ProtectedVoice"
  57.         ],
  58.         "summary": "Update whether a user can listen to anyone in a given call or not.",
  59.         "consumes": [
  60.           "application/json",
  61.           "text/json"
  62.         ],
  63.         "produces": [
  64.           "application/json",
  65.           "text/json"
  66.         ],
  67.         "parameters": [
  68.           {
  69.             "in": "body",
  70.             "name": "requestModel",
  71.             "description": "",
  72.             "required": true,
  73.             "schema": {
  74.               "$ref": "#/definitions/Roblox.Voice.Api.Models.UpdateUserCanListenInCallRequest"
  75.             }
  76.           }
  77.         ],
  78.         "responses": {
  79.           "200": {
  80.             "description": "OK",
  81.             "schema": {
  82.               "$ref": "#/definitions/Roblox.Voice.Api.Models.BaseStatusResponse"
  83.             }
  84.           }
  85.         },
  86.         "properties": {
  87.           "internal": true,
  88.           "metricIds": [
  89.             "ProtectedVoice:UpdateUserCanListenInCall"
  90.           ]
  91.         }
  92.       }
  93.     },
  94.     "/v2/rcc/cantalk": {
  95.       "get": {
  96.         "tags": [
  97.           "ProtectedVoice"
  98.         ],
  99.         "summary": "Returns whether the user provided by the RCC server can talk in the given call.",
  100.         "produces": [
  101.           "application/json",
  102.           "text/json"
  103.         ],
  104.         "parameters": [
  105.           {
  106.             "in": "query",
  107.             "name": "channelId",
  108.             "description": "The unique id of the call.",
  109.             "required": true,
  110.             "type": "string"
  111.           },
  112.           {
  113.             "in": "query",
  114.             "name": "userId",
  115.             "description": "The id of the user.",
  116.             "required": true,
  117.             "type": "integer",
  118.             "format": "int64"
  119.           }
  120.         ],
  121.         "responses": {
  122.           "200": {
  123.             "description": "OK",
  124.             "schema": {
  125.               "$ref": "#/definitions/Roblox.Voice.Api.Models.GetUserCanTalkInCallResponse"
  126.             }
  127.           }
  128.         },
  129.         "properties": {
  130.           "internal": true,
  131.           "metricIds": [
  132.             "ProtectedVoice:GetUserCanTalkInCall"
  133.           ]
  134.         }
  135.       },
  136.       "post": {
  137.         "tags": [
  138.           "ProtectedVoice"
  139.         ],
  140.         "summary": "Update whether a user can talk in a given call or not.",
  141.         "consumes": [
  142.           "application/json",
  143.           "text/json"
  144.         ],
  145.         "produces": [
  146.           "application/json",
  147.           "text/json"
  148.         ],
  149.         "parameters": [
  150.           {
  151.             "in": "body",
  152.             "name": "requestModel",
  153.             "description": "",
  154.             "required": true,
  155.             "schema": {
  156.               "$ref": "#/definitions/Roblox.Voice.Api.Models.UpdateUserCanTalkInCallRequest"
  157.             }
  158.           }
  159.         ],
  160.         "responses": {
  161.           "200": {
  162.             "description": "OK",
  163.             "schema": {
  164.               "$ref": "#/definitions/Roblox.Voice.Api.Models.BaseStatusResponse"
  165.             }
  166.           }
  167.         },
  168.         "properties": {
  169.           "internal": true,
  170.           "metricIds": [
  171.             "ProtectedVoice:UpdateUserCanTalkInCall"
  172.           ]
  173.         }
  174.       }
  175.     },
  176.     "/v2/rcc/getroomserver": {
  177.       "get": {
  178.         "tags": [
  179.           "LooselyProtectedVoice"
  180.         ],
  181.         "summary": "Returns a room server endpoint to be used by the RCC server",
  182.         "produces": [
  183.           "application/json",
  184.           "text/json"
  185.         ],
  186.         "parameters": [
  187.           {
  188.             "in": "query",
  189.             "name": "placeId",
  190.             "required": true,
  191.             "type": "integer",
  192.             "format": "int64"
  193.           },
  194.           {
  195.             "in": "query",
  196.             "name": "gameDataCenterId",
  197.             "required": true,
  198.             "type": "integer",
  199.             "format": "int32"
  200.           }
  201.         ],
  202.         "responses": {
  203.           "200": {
  204.             "description": "OK",
  205.             "schema": {
  206.               "$ref": "#/definitions/Roblox.Voice.Client.MediaServerInfo"
  207.             }
  208.           }
  209.         },
  210.         "properties": {
  211.           "internal": true,
  212.           "metricIds": [
  213.             "LooselyProtectedVoice:GetRoomServer"
  214.           ]
  215.         }
  216.       }
  217.     },
  218.     "/v2/rccsettings/universe": {
  219.       "get": {
  220.         "tags": [
  221.           "ProtectedVoice"
  222.         ],
  223.         "summary": "Returns whether or not the RCC server's place and it's corresponding universe are enabled for voice.\r\nThe place id will be read from the RCC specific header, which should be part of every http request coming from RCC\r\nand the universe will be automatically detected from this place id.",
  224.         "produces": [
  225.           "application/json",
  226.           "text/json"
  227.         ],
  228.         "parameters": [
  229.           {
  230.             "in": "header",
  231.             "name": "Roblox-Place-Id",
  232.             "description": "The id of the place to check if voice enabled read from the RCC specific request header.",
  233.             "required": true,
  234.             "type": "integer",
  235.             "format": "int64"
  236.           }
  237.         ],
  238.         "responses": {
  239.           "200": {
  240.             "description": "OK",
  241.             "schema": {
  242.               "$ref": "#/definitions/Roblox.Voice.Api.Models.VoiceSettingsUniverseResponse"
  243.             }
  244.           }
  245.         },
  246.         "properties": {
  247.           "internal": true,
  248.           "metricIds": [
  249.             "ProtectedVoice:GetUniversePlaceVoiceEnabledRccSettings"
  250.           ]
  251.         }
  252.       }
  253.     },
  254.     "/v2/rccsettings/user": {
  255.       "get": {
  256.         "tags": [
  257.           "ProtectedVoice"
  258.         ],
  259.         "summary": "Returns whether the user provided by the RCC server is enabled for voice.",
  260.         "produces": [
  261.           "application/json",
  262.           "text/json"
  263.         ],
  264.         "parameters": [
  265.           {
  266.             "in": "query",
  267.             "name": "userId",
  268.             "description": "The id of the user.",
  269.             "required": true,
  270.             "type": "integer",
  271.             "format": "int64"
  272.           }
  273.         ],
  274.         "responses": {
  275.           "200": {
  276.             "description": "OK",
  277.             "schema": {
  278.               "$ref": "#/definitions/Roblox.Voice.Api.Models.VoiceSettingsResponse"
  279.             }
  280.           }
  281.         },
  282.         "properties": {
  283.           "internal": true,
  284.           "metricIds": [
  285.             "ProtectedVoice:GetUserVoiceEnabledRccSettings"
  286.           ]
  287.         }
  288.       }
  289.     },
  290.     "/v2/calls/join": {
  291.       "post": {
  292.         "tags": [
  293.           "Token"
  294.         ],
  295.         "summary": "Joins voice channel for the given token",
  296.         "consumes": [
  297.           "application/json",
  298.           "text/json"
  299.         ],
  300.         "produces": [
  301.           "application/json",
  302.           "text/json"
  303.         ],
  304.         "parameters": [
  305.           {
  306.             "in": "body",
  307.             "name": "requestModel",
  308.             "description": "",
  309.             "required": true,
  310.             "schema": {
  311.               "$ref": "#/definitions/Roblox.Voice.Api.Models.VoiceChannelTokenJoinRequest"
  312.             }
  313.           }
  314.         ],
  315.         "responses": {
  316.           "200": {
  317.             "description": "OK",
  318.             "schema": {
  319.               "$ref": "#/definitions/Roblox.Voice.Api.Models.JoinVoiceChannelResponse"
  320.             }
  321.           },
  322.           "401": {
  323.             "description": "0: Authorization has been denied for this request."
  324.           },
  325.           "403": {
  326.             "description": "0: Token Validation Failed"
  327.           }
  328.         },
  329.         "properties": {
  330.           "internal": true,
  331.           "metricIds": [
  332.             "Token:JoinChannelFromToken"
  333.           ]
  334.         }
  335.       }
  336.     },
  337.     "/v2/rcc/kick": {
  338.       "post": {
  339.         "tags": [
  340.           "ProtectedVoice"
  341.         ],
  342.         "summary": "Force a list of users to be disconnected from their current voice calls.",
  343.         "consumes": [
  344.           "application/json",
  345.           "text/json"
  346.         ],
  347.         "produces": [
  348.           "application/json",
  349.           "text/json"
  350.         ],
  351.         "parameters": [
  352.           {
  353.             "in": "header",
  354.             "name": "Roblox-Place-Id",
  355.             "description": "",
  356.             "required": true,
  357.             "type": "integer",
  358.             "format": "int64"
  359.           },
  360.           {
  361.             "in": "body",
  362.             "name": "requestModel",
  363.             "description": "",
  364.             "required": true,
  365.             "schema": {
  366.               "$ref": "#/definitions/Roblox.Voice.Api.Models.KickUsersFromVoiceCallsRequest"
  367.             }
  368.           }
  369.         ],
  370.         "responses": {
  371.           "200": {
  372.             "description": "OK",
  373.             "schema": {
  374.               "$ref": "#/definitions/Roblox.Voice.Api.Models.KickUsersFromVoiceCallsResponse"
  375.             }
  376.           }
  377.         },
  378.         "properties": {
  379.           "internal": true,
  380.           "metricIds": [
  381.             "ProtectedVoice:RccKickUsersFromVoiceCalls"
  382.           ]
  383.         }
  384.       }
  385.     },
  386.     "/v2/rcc/recordaddcall": {
  387.       "post": {
  388.         "tags": [
  389.           "LooselyProtectedVoice"
  390.         ],
  391.         "summary": "Record Add Call in redis for the current users",
  392.         "consumes": [
  393.           "application/json",
  394.           "text/json"
  395.         ],
  396.         "produces": [
  397.           "application/json",
  398.           "text/json"
  399.         ],
  400.         "parameters": [
  401.           {
  402.             "in": "body",
  403.             "name": "requestModel",
  404.             "description": "",
  405.             "required": true,
  406.             "schema": {
  407.               "$ref": "#/definitions/Roblox.Voice.Api.Models.RecordAddCallRequest"
  408.             }
  409.           }
  410.         ],
  411.         "responses": {
  412.           "200": {
  413.             "description": "OK",
  414.             "schema": {
  415.               "$ref": "#/definitions/Roblox.Voice.Api.Models.RecordAddCallResponse"
  416.             }
  417.           },
  418.           "403": {
  419.             "description": "0: Token Validation Failed"
  420.           }
  421.         },
  422.         "properties": {
  423.           "internal": true,
  424.           "metricIds": [
  425.             "LooselyProtectedVoice:RecordAddCall"
  426.           ]
  427.         }
  428.       }
  429.     },
  430.     "/v2/rcc/recordplayerjoined": {
  431.       "post": {
  432.         "tags": [
  433.           "LooselyProtectedVoice"
  434.         ],
  435.         "summary": "Record Player Joined in redis for the current users",
  436.         "consumes": [
  437.           "application/json",
  438.           "text/json"
  439.         ],
  440.         "produces": [
  441.           "application/json",
  442.           "text/json"
  443.         ],
  444.         "parameters": [
  445.           {
  446.             "in": "body",
  447.             "name": "requestModel",
  448.             "description": "",
  449.             "required": true,
  450.             "schema": {
  451.               "$ref": "#/definitions/Roblox.Voice.Api.Models.RecordPlayerJoinedRequest"
  452.             }
  453.           }
  454.         ],
  455.         "responses": {
  456.           "200": {
  457.             "description": "OK",
  458.             "schema": {
  459.               "$ref": "#/definitions/Roblox.Voice.Api.Models.RecordPlayerJoinedResponse"
  460.             }
  461.           },
  462.           "403": {
  463.             "description": "0: Token Validation Failed"
  464.           }
  465.         },
  466.         "properties": {
  467.           "internal": true,
  468.           "metricIds": [
  469.             "LooselyProtectedVoice:RecordPlayerJoined"
  470.           ]
  471.         }
  472.       }
  473.     },
  474.     "/v2/rcc/tokens": {
  475.       "post": {
  476.         "tags": [
  477.           "ProtectedVoice"
  478.         ],
  479.         "summary": "Creates a list of new signed JWT tokens containing the channel and user details from the request.",
  480.         "consumes": [
  481.           "application/json",
  482.           "text/json"
  483.         ],
  484.         "produces": [
  485.           "application/json",
  486.           "text/json"
  487.         ],
  488.         "parameters": [
  489.           {
  490.             "in": "header",
  491.             "name": "Roblox-Place-Id",
  492.             "description": "",
  493.             "required": true,
  494.             "type": "integer",
  495.             "format": "int64"
  496.           },
  497.           {
  498.             "in": "body",
  499.             "name": "requestModel",
  500.             "description": "",
  501.             "required": true,
  502.             "schema": {
  503.               "type": "array",
  504.               "items": {
  505.                 "$ref": "#/definitions/Roblox.Voice.Api.Models.VoiceChannelTokenCreateRequest"
  506.               }
  507.             }
  508.           }
  509.         ],
  510.         "responses": {
  511.           "200": {
  512.             "description": "OK",
  513.             "schema": {
  514.               "$ref": "#/definitions/Roblox.Voice.Api.Models.MultipleVoiceChannelTokenCreateResponse"
  515.             }
  516.           }
  517.         },
  518.         "properties": {
  519.           "internal": true,
  520.           "metricIds": [
  521.             "ProtectedVoice:GenerateMultipleChannelTokens"
  522.           ]
  523.         }
  524.       }
  525.     },
  526.     "/v2/test/tokens": {
  527.       "post": {
  528.         "tags": [
  529.           "Token"
  530.         ],
  531.         "summary": "Creates a new signed JWT token containing the channel and user details from the request.\r\n            \r\nThis is a temporary endpoint for testing the client implementation only and can be removed/disabled at any moment without a warning!\r\nNo production code should rely on this to exist and work.",
  532.         "consumes": [
  533.           "application/json",
  534.           "text/json"
  535.         ],
  536.         "produces": [
  537.           "application/json",
  538.           "text/json"
  539.         ],
  540.         "parameters": [
  541.           {
  542.             "in": "body",
  543.             "name": "requestModel",
  544.             "description": "",
  545.             "required": true,
  546.             "schema": {
  547.               "$ref": "#/definitions/Roblox.Voice.Api.Models.VoiceChannelTestTokenCreateRequest"
  548.             }
  549.           }
  550.         ],
  551.         "responses": {
  552.           "200": {
  553.             "description": "OK",
  554.             "schema": {
  555.               "$ref": "#/definitions/Roblox.Voice.Api.Models.VoiceChannelTokenCreateResponse"
  556.             }
  557.           },
  558.           "401": {
  559.             "description": "0: Authorization has been denied for this request."
  560.           },
  561.           "403": {
  562.             "description": "0: Token Validation Failed"
  563.           }
  564.         },
  565.         "deprecated": true,
  566.         "properties": {
  567.           "internal": true,
  568.           "obsoleteMessage": null,
  569.           "metricIds": [
  570.             "Token:GenerateChannelTestToken"
  571.           ]
  572.         }
  573.       }
  574.     },
  575.     "/v2/tokens": {
  576.       "post": {
  577.         "tags": [
  578.           "ProtectedVoice"
  579.         ],
  580.         "summary": "Creates a new signed JWT token containing the channel and user details from the request.",
  581.         "consumes": [
  582.           "application/json",
  583.           "text/json"
  584.         ],
  585.         "produces": [
  586.           "application/json",
  587.           "text/json"
  588.         ],
  589.         "parameters": [
  590.           {
  591.             "in": "header",
  592.             "name": "Roblox-Place-Id",
  593.             "description": "",
  594.             "required": true,
  595.             "type": "integer",
  596.             "format": "int64"
  597.           },
  598.           {
  599.             "in": "body",
  600.             "name": "requestModel",
  601.             "description": "",
  602.             "required": true,
  603.             "schema": {
  604.               "$ref": "#/definitions/Roblox.Voice.Api.Models.VoiceChannelTokenCreateRequest"
  605.             }
  606.           }
  607.         ],
  608.         "responses": {
  609.           "200": {
  610.             "description": "OK",
  611.             "schema": {
  612.               "$ref": "#/definitions/Roblox.Voice.Api.Models.VoiceChannelTokenCreateResponse"
  613.             }
  614.           }
  615.         },
  616.         "properties": {
  617.           "internal": true,
  618.           "metricIds": [
  619.             "ProtectedVoice:GenerateChannelToken"
  620.           ]
  621.         }
  622.       }
  623.     }
  624.   },
  625.   "definitions": {
  626.     "Google.Protobuf.WellKnownTypes.Timestamp": {
  627.       "type": "object",
  628.       "properties": {
  629.         "Seconds": {
  630.           "format": "int64",
  631.           "type": "integer"
  632.         },
  633.         "Nanos": {
  634.           "format": "int32",
  635.           "type": "integer"
  636.         }
  637.       }
  638.     },
  639.     "Roblox.Voice.Api.Models.BaseStatusResponse": {
  640.       "description": "base response model for voice apis",
  641.       "type": "object",
  642.       "properties": {
  643.         "status": {
  644.           "description": "Gets or sets status of response ['Success' = 0]",
  645.           "enum": [
  646.             "Success"
  647.           ],
  648.           "type": "string"
  649.         }
  650.       }
  651.     },
  652.     "Roblox.Voice.Api.Models.GetUserCanListenInCallResponse": {
  653.       "description": "Response for getting whether an user can listen to others in a call or not",
  654.       "type": "object",
  655.       "properties": {
  656.         "canListen": {
  657.           "description": "Gets a boolean indicating whether the user can listen to others in a call or not.",
  658.           "type": "boolean"
  659.         }
  660.       }
  661.     },
  662.     "Roblox.Voice.Api.Models.GetUserCanTalkInCallResponse": {
  663.       "description": "Response for getting whether an user can talk in a call or not",
  664.       "type": "object",
  665.       "properties": {
  666.         "canTalk": {
  667.           "description": "Gets a boolean indicating whether the user can talk in a call or not.",
  668.           "type": "boolean"
  669.         }
  670.       }
  671.     },
  672.     "Roblox.Voice.Api.Models.JoinVoiceChannelResponse": {
  673.       "description": "response model for try join voice channel request",
  674.       "type": "object",
  675.       "properties": {
  676.         "channelId": {
  677.           "description": "Gets or sets unique id of the joined call",
  678.           "type": "string"
  679.         }
  680.       }
  681.     },
  682.     "Roblox.Voice.Api.Models.KickUsersFromVoiceCallsRequest": {
  683.       "description": "Request to force a list of users to leave a call.",
  684.       "type": "object",
  685.       "properties": {
  686.         "requestDictionary": {
  687.           "description": "Gets or sets the list of users to kick out along with the reason for their removal.",
  688.           "type": "object",
  689.           "additionalProperties": {
  690.             "format": "int32",
  691.             "description": " ['Invalid' = 0, 'Other' = 1, 'Internal' = 2, 'UserBannedFromVoice' = 3]",
  692.             "enum": [
  693.               0,
  694.               1,
  695.               2,
  696.               3
  697.             ],
  698.             "type": "integer"
  699.           }
  700.         }
  701.       }
  702.     },
  703.     "Roblox.Voice.Api.Models.KickUsersFromVoiceCallsResponse": {
  704.       "description": "Response for the operation to kick out some users from their voice calls.",
  705.       "type": "object",
  706.       "properties": {
  707.         "failures": {
  708.           "description": "Gets or sets a failure description for each users that failed to be kicked out.\r\nOptional.",
  709.           "type": "object",
  710.           "additionalProperties": {
  711.             "type": "string"
  712.           }
  713.         }
  714.       }
  715.     },
  716.     "Roblox.Voice.Api.Models.MediaServerDto": {
  717.       "description": "Data Transfer object for Media Server",
  718.       "type": "object",
  719.       "properties": {
  720.         "DatacenterId": {
  721.           "format": "int32",
  722.           "description": "Gets or sets room server's data center/POP id",
  723.           "type": "integer"
  724.         },
  725.         "HostIdentifier": {
  726.           "description": "Gets or sets media server's host identifier",
  727.           "type": "string"
  728.         },
  729.         "PortCount": {
  730.           "format": "int32",
  731.           "description": "Gets or sets total number of occupied ports in a media server from the heartbeat",
  732.           "type": "integer"
  733.         },
  734.         "StreamCount": {
  735.           "format": "int32",
  736.           "description": "Gets or sets total number of publishing and subscribing streams in a media server from the heartbeat",
  737.           "type": "integer"
  738.         },
  739.         "RoomCount": {
  740.           "format": "int32",
  741.           "description": "Gets or sets the number of rooms in the room server From the heartbeat. This value is null for turn servers",
  742.           "type": "integer"
  743.         },
  744.         "Version": {
  745.           "description": "Gets or sets media server's version from heartbeat",
  746.           "type": "string"
  747.         },
  748.         "DataCenterPop": {
  749.           "description": "Gets or sets media server's dataCenterPop from heartbeat",
  750.           "type": "string"
  751.         },
  752.         "HostIdentifierEndpoint": {
  753.           "description": "Gets the full endpoint using the host identifier.",
  754.           "type": "string",
  755.           "readOnly": true
  756.         },
  757.         "Host": {
  758.           "type": "string"
  759.         },
  760.         "Port": {
  761.           "format": "int32",
  762.           "type": "integer"
  763.         },
  764.         "IsSecure": {
  765.           "description": "Gets or sets if the media server supports secure connection",
  766.           "type": "boolean"
  767.         },
  768.         "ServerHostName": {
  769.           "description": "Gets or sets the consul name of a room server host.\r\nExample: roblox-voice-roomservice.service.ash1.consul",
  770.           "type": "string"
  771.         },
  772.         "Endpoint": {
  773.           "description": "Gets media server's Endpoint",
  774.           "type": "string",
  775.           "readOnly": true
  776.         }
  777.       }
  778.     },
  779.     "Roblox.Voice.Api.Models.MultipleVoiceChannelTokenCreateResponse": {
  780.       "description": "Response model for serializing a multiple channel token response",
  781.       "type": "object",
  782.       "properties": {
  783.         "tokens": {
  784.           "description": "Gets or sets the resulting tokens",
  785.           "type": "array",
  786.           "items": {
  787.             "$ref": "#/definitions/Roblox.Voice.Api.Models.VoiceChannelTokenCreateResponse"
  788.           }
  789.         },
  790.         "errors": {
  791.           "description": "Gets or sets the errors from token generation",
  792.           "type": "array",
  793.           "items": {
  794.             "$ref": "#/definitions/Roblox.Voice.Api.Models.VoiceChannelTokenCreateError"
  795.           }
  796.         }
  797.       }
  798.     },
  799.     "Roblox.Voice.Api.Models.RecordAddCallRequest": {
  800.       "description": "Request model for the API to record add call",
  801.       "type": "object",
  802.       "properties": {
  803.         "userId": {
  804.           "format": "int64",
  805.           "description": "Gets or sets the user Id for the joining player",
  806.           "type": "integer"
  807.         },
  808.         "participantId": {
  809.           "format": "int64",
  810.           "description": "Gets or sets the participant ID returned by the room server.",
  811.           "type": "integer"
  812.         },
  813.         "sessionSecret": {
  814.           "description": "Gets or sets the session secret returned by the room server.",
  815.           "type": "string"
  816.         },
  817.         "roomId": {
  818.           "format": "int64",
  819.           "description": "Gets or sets the room ID returned by the room server.",
  820.           "type": "integer"
  821.         },
  822.         "roomServer": {
  823.           "$ref": "#/definitions/Roblox.Voice.Api.Models.MediaServerDto"
  824.         },
  825.         "channelId": {
  826.           "description": "Gets or sets unique id of the joined call",
  827.           "type": "string"
  828.         },
  829.         "sessionId": {
  830.           "description": "Gets or sets unique id of the joined call",
  831.           "maxLength": 64,
  832.           "minLength": 0,
  833.           "type": "string"
  834.         }
  835.       }
  836.     },
  837.     "Roblox.Voice.Api.Models.RecordAddCallResponse": {
  838.       "description": "response model for record player joined request",
  839.       "type": "object",
  840.       "properties": {
  841.         "success": {
  842.           "description": "Whether the operation of recording the player joined request to redis was successful",
  843.           "type": "boolean"
  844.         }
  845.       }
  846.     },
  847.     "Roblox.Voice.Api.Models.RecordPlayerJoinedRequest": {
  848.       "description": "Request model for the API to record player joined",
  849.       "type": "object",
  850.       "properties": {
  851.         "userId": {
  852.           "format": "int64",
  853.           "description": "Gets or sets the user Id for the joining player",
  854.           "type": "integer"
  855.         },
  856.         "participantId": {
  857.           "format": "int64",
  858.           "description": "Gets or sets the participant ID returned by the room server.",
  859.           "type": "integer"
  860.         },
  861.         "sessionSecret": {
  862.           "description": "Gets or sets the session secret returned by the room server.",
  863.           "type": "string"
  864.         },
  865.         "channelId": {
  866.           "description": "Gets or sets unique id of the joined call",
  867.           "type": "string"
  868.         },
  869.         "sessionId": {
  870.           "description": "Gets or sets unique id of the joined call",
  871.           "maxLength": 64,
  872.           "minLength": 0,
  873.           "type": "string"
  874.         }
  875.       }
  876.     },
  877.     "Roblox.Voice.Api.Models.RecordPlayerJoinedResponse": {
  878.       "description": "response model for record player joined request",
  879.       "type": "object",
  880.       "properties": {
  881.         "success": {
  882.           "description": "Whether the operation of recording the player joined request to redis was successful",
  883.           "type": "boolean"
  884.         }
  885.       }
  886.     },
  887.     "Roblox.Voice.Api.Models.UpdateUserCanListenInCallRequest": {
  888.       "description": "Request model for the API to update whether an user can listen to others in a call or not.",
  889.       "type": "object",
  890.       "properties": {
  891.         "canListen": {
  892.           "description": "Gets or sets a boolean indicating whether the user can listen to others in the call or not.",
  893.           "type": "boolean"
  894.         },
  895.         "channelId": {
  896.           "description": "Gets or sets the unique id of the call.",
  897.           "type": "string"
  898.         },
  899.         "userId": {
  900.           "format": "int64",
  901.           "description": "Gets or sets the userId of the user affected.",
  902.           "type": "integer"
  903.         }
  904.       }
  905.     },
  906.     "Roblox.Voice.Api.Models.UpdateUserCanTalkInCallRequest": {
  907.       "description": "Request model for the API to update whether an user can talk in a call or not.",
  908.       "type": "object",
  909.       "properties": {
  910.         "canTalk": {
  911.           "description": "Gets or sets a boolean indicating whether the user can talk in the call or not.",
  912.           "type": "boolean"
  913.         },
  914.         "channelId": {
  915.           "description": "Gets or sets the unique id of the call.",
  916.           "type": "string"
  917.         },
  918.         "userId": {
  919.           "format": "int64",
  920.           "description": "Gets or sets the userId of the user affected.",
  921.           "type": "integer"
  922.         }
  923.       }
  924.     },
  925.     "Roblox.Voice.Api.Models.VoiceChannelTestTokenCreateRequest": {
  926.       "description": "Request model for the API to create a new channel test token.\r\n            \r\nThis is a temp feature for testing only and it will be removed.\r\nDon't use for any production work!",
  927.       "type": "object",
  928.       "properties": {
  929.         "placeId": {
  930.           "format": "int64",
  931.           "description": "Gets or sets the place id for which the token is valid",
  932.           "type": "integer"
  933.         },
  934.         "serverId": {
  935.           "description": "Gets or sets the server id for which the token is valid",
  936.           "type": "string"
  937.         },
  938.         "dataCenterId": {
  939.           "format": "int32",
  940.           "description": "Gets or sets the datacenter id of the game server instance for which the token is valid",
  941.           "type": "integer"
  942.         },
  943.         "userId": {
  944.           "format": "int64",
  945.           "description": "Gets or sets the user id for which the token is valid",
  946.           "type": "integer"
  947.         },
  948.         "channelName": {
  949.           "description": "Gets or sets the name of the channel",
  950.           "type": "string"
  951.         },
  952.         "global": {
  953.           "description": "Gets or sets a value indicating whether this is a global channel",
  954.           "type": "boolean"
  955.         }
  956.       }
  957.     },
  958.     "Roblox.Voice.Api.Models.VoiceChannelTokenCreateError": {
  959.       "description": "Response model for a token creation error",
  960.       "type": "object",
  961.       "properties": {
  962.         "userId": {
  963.           "format": "int64",
  964.           "description": "Gets or sets the user ID",
  965.           "type": "integer"
  966.         },
  967.         "name": {
  968.           "description": "Gets or sets the error name",
  969.           "type": "string"
  970.         },
  971.         "message": {
  972.           "description": "Gets or sets the error message",
  973.           "type": "string"
  974.         }
  975.       }
  976.     },
  977.     "Roblox.Voice.Api.Models.VoiceChannelTokenCreateRequest": {
  978.       "description": "Request model for the API to create a new channel token",
  979.       "type": "object",
  980.       "properties": {
  981.         "serverId": {
  982.           "description": "Gets or sets the server id for which the token is valid",
  983.           "type": "string"
  984.         },
  985.         "dataCenterId": {
  986.           "format": "int32",
  987.           "description": "Gets or sets the datacenter id of the game server instance for which the token is valid",
  988.           "type": "integer"
  989.         },
  990.         "userId": {
  991.           "format": "int64",
  992.           "description": "Gets or sets the user id for which the token is valid",
  993.           "type": "integer"
  994.         },
  995.         "channelName": {
  996.           "description": "Gets or sets the name of the channel",
  997.           "type": "string"
  998.         },
  999.         "global": {
  1000.           "description": "Gets or sets a value indicating whether this is a global channel",
  1001.           "type": "boolean"
  1002.         }
  1003.       }
  1004.     },
  1005.     "Roblox.Voice.Api.Models.VoiceChannelTokenCreateResponse": {
  1006.       "description": "Response model for serializing a channel token response",
  1007.       "type": "object",
  1008.       "properties": {
  1009.         "userId": {
  1010.           "format": "int64",
  1011.           "description": "Gets or sets the user ID",
  1012.           "type": "integer"
  1013.         },
  1014.         "token": {
  1015.           "description": "Gets or sets the resulting token",
  1016.           "type": "string"
  1017.         },
  1018.         "expires": {
  1019.           "format": "int64",
  1020.           "description": "Gets or sets the token's expiry time as a Unix timestamp",
  1021.           "type": "integer"
  1022.         }
  1023.       }
  1024.     },
  1025.     "Roblox.Voice.Api.Models.VoiceChannelTokenJoinRequest": {
  1026.       "description": "Request model for the API to join a voice channel from a token",
  1027.       "type": "object",
  1028.       "properties": {
  1029.         "token": {
  1030.           "description": "Gets or sets the request token",
  1031.           "type": "string"
  1032.         },
  1033.         "sessionId": {
  1034.           "description": "Gets or sets unique id of the joined call",
  1035.           "maxLength": 64,
  1036.           "minLength": 0,
  1037.           "type": "string"
  1038.         }
  1039.       }
  1040.     },
  1041.     "Roblox.Voice.Api.Models.VoiceSettingsResponse": {
  1042.       "description": "Response model for voice settings associated with the user",
  1043.       "type": "object",
  1044.       "properties": {
  1045.         "isVoiceEnabled": {
  1046.           "description": "Gets or sets a value indicating whether this user can use voice chat feature",
  1047.           "type": "boolean"
  1048.         },
  1049.         "isUserOptIn": {
  1050.           "description": "Gets or sets a value indicating whether this user has opt-in to voice chat",
  1051.           "type": "boolean"
  1052.         },
  1053.         "isUserEligible": {
  1054.           "description": "Gets or sets a value indicating whether this user is eligible for voice chat.",
  1055.           "type": "boolean"
  1056.         },
  1057.         "isBanned": {
  1058.           "description": "Gets or sets a value indicating whether this user is banned",
  1059.           "type": "boolean"
  1060.         },
  1061.         "bannedUntil": {
  1062.           "$ref": "#/definitions/Google.Protobuf.WellKnownTypes.Timestamp"
  1063.         },
  1064.         "canVerifyAgeForVoice": {
  1065.           "description": "Gets or sets whether a user can verify their age for voice features.\r\nNote that a user can verify their age anytime, but might not be able\r\nto use voice features afterwards. This flag indicates whether the user\r\ncan use voice features after valid age verification. We should only\r\nnotify users for age verification if this is true and they have not\r\nverified yet.",
  1066.           "type": "boolean"
  1067.         },
  1068.         "isVerifiedForVoice": {
  1069.           "description": "Gets or sets whether a user is verified for voice.\r\nThis could mean they are age verified and old enough,\r\nor they are verified through other means, e.g. renowned\r\nusers. We should only show opt-in toggle if this is true.",
  1070.           "type": "boolean"
  1071.         },
  1072.         "denialReason": {
  1073.           "format": "int32",
  1074.           "description": "Gets or sets a int value indicating why a user is denied from\r\nvoice chat feature. Returns 0 if voice chat is enabled for a user.\r\nSee Roblox.Platform.Voice.UserPermissionDenialReasons\r\nfor reference.",
  1075.           "type": "integer"
  1076.         },
  1077.         "isOptInDisabled": {
  1078.           "description": "If true, the frontend should disable the OptIn toggle if the user is not\r\ncurrently OptIn.",
  1079.           "type": "boolean"
  1080.         },
  1081.         "hasEverOpted": {
  1082.           "description": "Has the user ever opted into or out of voice chat?",
  1083.           "type": "boolean"
  1084.         },
  1085.         "isAvatarVideoEnabled": {
  1086.           "description": "If true, the user should have avatarVideo enabled.\r\n            \r\nThis should be the only field one need to check to decide\r\nwhether the feature should be enabled. It takes both\r\nthe eligibility, optIn status, and other factors (if any)\r\ninto consideration.",
  1087.           "type": "boolean"
  1088.         },
  1089.         "isAvatarVideoOptIn": {
  1090.           "description": "Whether the user is currently optIn into avatar video.\r\n            \r\nNote that optIn by itself doesn't guarantee feature\r\nshould be enabled, because the eligibility criteria\r\nmight change after the user opted in, and thus cause\r\ntheir feature to be disabled while still being optIn.",
  1091.           "type": "boolean"
  1092.         },
  1093.         "isAvatarVideoOptInDisabled": {
  1094.           "description": "If true, the frontend should disable the avatar video OptIn toggle if the user is not\r\ncurrently opted in. This field is for optIn control only.\r\ni.e. we only want to slow down the optIn traffic, but doesn't want to\r\ndisable the feature completely, nor do we want to block people already opted\r\nin from opting out.",
  1095.           "type": "boolean"
  1096.         },
  1097.         "isAvatarVideoEligible": {
  1098.           "description": "If false, the frontend should hide the avatar video OptIn toggle.\r\n            \r\nEligible simply means \"whether the user can use this feature\",\r\nand thus we should provide such users the UI to toggle this feature.\r\nThis alone, however, does not dictate whether the user should have\r\nthis feature enabled.",
  1099.           "type": "boolean"
  1100.         },
  1101.         "hasEverOptedAvatarVideo": {
  1102.           "type": "boolean"
  1103.         }
  1104.       }
  1105.     },
  1106.     "Roblox.Voice.Api.Models.VoiceSettingsUniverseResponse": {
  1107.       "description": "Response model for voice settings associated with a universe/place",
  1108.       "type": "object",
  1109.       "properties": {
  1110.         "isUniverseEnabledForVoice": {
  1111.           "description": "Whether or not the universe is enabled for voice",
  1112.           "type": "boolean"
  1113.         },
  1114.         "isPlaceEnabledForVoice": {
  1115.           "description": "Whether or not the place is enabled for voice",
  1116.           "type": "boolean"
  1117.         },
  1118.         "reasons": {
  1119.           "description": "User-friendly messages describing the reasons for universe and/or place being not enabled for voice",
  1120.           "type": "array",
  1121.           "items": {
  1122.             "type": "string"
  1123.           }
  1124.         },
  1125.         "isUniverseEnabledForAvatarVideo": {
  1126.           "description": "Whether or not the universe is enabled for avatar video",
  1127.           "type": "boolean"
  1128.         },
  1129.         "isPlaceEnabledForAvatarVideo": {
  1130.           "description": "Whether or not the place is enabled for avatar video",
  1131.           "type": "boolean"
  1132.         }
  1133.       }
  1134.     },
  1135.     "Roblox.Voice.Client.MediaServerInfo": {
  1136.       "type": "object",
  1137.       "properties": {
  1138.         "ip": {
  1139.           "type": "string"
  1140.         },
  1141.         "publicIp": {
  1142.           "type": "string"
  1143.         },
  1144.         "port": {
  1145.           "format": "int32",
  1146.           "type": "integer"
  1147.         },
  1148.         "dataCenterId": {
  1149.           "format": "int32",
  1150.           "type": "integer"
  1151.         },
  1152.         "IsSecure": {
  1153.           "type": "boolean"
  1154.         },
  1155.         "ServerHostName": {
  1156.           "type": "string"
  1157.         }
  1158.       }
  1159.     }
  1160.   }
  1161. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement