|DataResponse * * 201: Room created successfully * 404: Share not found */ #[PublicPage] #[OpenAPI(tags: ['files_integration'])] #[ApiRoute(verb: 'POST', url: '/api/{apiVersion}/publicshareauth', requirements: [ 'apiVersion' => '(v1)', ])] public function createRoom(string $shareToken): DataResponse { try { $share = $this->shareManager->getShareByToken($shareToken); } catch (ShareNotFound) { return new DataResponse(null, Http::STATUS_NOT_FOUND); } if (!$share->getSendPasswordByTalk()) { return new DataResponse(null, Http::STATUS_NOT_FOUND); } $sharerUser = $this->userManager->get($share->getSharedBy()); if (!$sharerUser instanceof IUser) { return new DataResponse(null, Http::STATUS_NOT_FOUND); } if ($share->getShareType() === IShare::TYPE_EMAIL) { $roomName = $share->getSharedWith(); } else { $roomName = trim($share->getTarget(), '/'); } $roomName = $this->roomService->prepareConversationName($roomName); // Create the room $room = $this->roomService->createConversation( Room::TYPE_PUBLIC, $roomName, $sharerUser, Room::OBJECT_TYPE_VIDEO_VERIFICATION, $shareToken, ); $user = $this->userSession->getUser(); $userId = $user instanceof IUser ? $user->getUID() : ''; return new DataResponse([ 'token' => $room->getToken(), 'name' => $room->getName(), 'displayName' => $room->getDisplayName($userId), ], Http::STATUS_CREATED); } }