createRoomRaw method
Create a room with a user, a group or a circle.
This method and the response it returns is experimental. The API might change without a major version bump.
Returns a Future containing a DynamiteRawResponse with the raw HttpClientResponse and serialization helpers. Throws a DynamiteApiException if the API call does not return an expected status code.
Parameters:
roomType
Type of the room.invite
User, group, … ID to invite. Defaults to''
.roomName
Name of the room. Defaults to''
.source
Source of the invite ID ('circles' to create a room with a circle, etc.). Defaults to''
.objectType
Type of the object. Defaults to''
.objectId
ID of the object. Defaults to''
.apiVersion
Defaults tov4
.oCSAPIRequest
Required to be true for the API request to pass. Defaults totrue
.
Status codes:
- 200: Room already existed
- 201: Room created successfully
- 400: Room type invalid
- 403: Missing permissions to create room
- 404: User, group or other target to invite was not found
See:
- createRoom for an operation that returns a DynamiteResponse with a stable API.
Implementation
@experimental
DynamiteRawResponse<RoomCreateRoomResponseApplicationJson, void> createRoomRaw({
required int roomType,
String? invite,
String? roomName,
String? source,
String? objectType,
String? objectId,
RoomCreateRoomApiVersion? apiVersion,
bool? oCSAPIRequest,
}) {
final _parameters = <String, dynamic>{};
final _headers = <String, String>{
'Accept': 'application/json',
};
// coverage:ignore-start
final authentication = _rootClient.authentications.firstWhereOrNull(
(auth) => switch (auth) {
DynamiteHttpBearerAuthentication() || DynamiteHttpBasicAuthentication() => true,
_ => false,
},
);
if (authentication != null) {
_headers.addAll(
authentication.headers,
);
} else {
throw Exception('Missing authentication for bearer_auth or basic_auth');
}
// coverage:ignore-end
final $roomType = jsonSerializers.serialize(roomType, specifiedType: const FullType(int));
_parameters['roomType'] = $roomType;
var $invite = jsonSerializers.serialize(invite, specifiedType: const FullType(String));
$invite ??= '';
_parameters['invite'] = $invite;
var $roomName = jsonSerializers.serialize(roomName, specifiedType: const FullType(String));
$roomName ??= '';
_parameters['roomName'] = $roomName;
var $source = jsonSerializers.serialize(source, specifiedType: const FullType(String));
$source ??= '';
_parameters['source'] = $source;
var $objectType = jsonSerializers.serialize(objectType, specifiedType: const FullType(String));
$objectType ??= '';
_parameters['objectType'] = $objectType;
var $objectId = jsonSerializers.serialize(objectId, specifiedType: const FullType(String));
$objectId ??= '';
_parameters['objectId'] = $objectId;
var $apiVersion = jsonSerializers.serialize(apiVersion, specifiedType: const FullType(RoomCreateRoomApiVersion));
$apiVersion ??= 'v4';
_parameters['apiVersion'] = $apiVersion;
var $oCSAPIRequest = jsonSerializers.serialize(oCSAPIRequest, specifiedType: const FullType(bool));
$oCSAPIRequest ??= true;
_headers['OCS-APIRequest'] = const dynamite_utils.HeaderEncoder().convert($oCSAPIRequest);
final _path = UriTemplate(
'/ocs/v2.php/apps/spreed/api/{apiVersion}/room{?roomType*,invite*,roomName*,source*,objectType*,objectId*}',
).expand(_parameters);
return DynamiteRawResponse<RoomCreateRoomResponseApplicationJson, void>(
response: _rootClient.executeRequest(
'post',
_path,
_headers,
null,
const {200, 201},
),
bodyType: const FullType(RoomCreateRoomResponseApplicationJson),
headersType: null,
serializers: jsonSerializers,
);
}