private String createInitialSession() {
        Objects.requireNonNull(this.initialRequest);

        WebEditorRequest request = this.initialRequest;
        this.initialRequest = null;

        if (this.socket != null) {
            this.socket.appendDetailToRequest(request);
        }

        String id = uploadRequestData(request);
        if (id == null) {
            return null;
        }

        // form a url for the editor
        String url = this.plugin.getConfiguration().get(ConfigKeys.WEB_EDITOR_URL_PATTERN) + id;
        Message.EDITOR_URL.send(this.sender, url);

        // schedule socket close
        if (this.socket != null) {
            this.socket.scheduleCleanupIfUnused();
        }

        return id;
    }
Encapsulates a session with the web editor.

<p>A session is tied to a specific user, and can comprise of multiple requests to and
responses from the web editor.</p>
common/src/main/java/me/lucko/luckperms/common/webeditor/WebEditorSession.java