# WOPI Protocol The Web Application Open Platform Interface (WOPI) is an open standard protocol developed by Microsoft that allows web-based applications to integrate with Office Online server products. WOPI enables the edition (with collaboration) of Office documents directly a web browser. Please consult [WOPI documentation](https://docs.microsoft.com/en-us/microsoft-365/cloud-storage-partner-program/rest). # Edition ## Editors The Silverpeas's implementation of WOPI protocol has been written by using the [LibreOffice Online](https://www.libreoffice.org/download/libreoffice-online) product in a first time, which is mainly developed by [Collabora](https://www.collaboraoffice.com/code/). Please consult the [SDK documentation](https://sdk.collaboraonline.com/docs/introduction.html) of Collabora Online for details. Particularly with regard to Collabora [additional stuffs](https://sdk.collaboraonline.com/docs/How_to_integrate.html#further-differences-to-wopi) upon WOPI protocol. ## File host Silverpeas is here the file host. The Silverpeas's WBE API is used to interface the Silverpeas's side with the editor server: * `WopiClientManager` implementing `WbeClientManager`, for client editor management * `WopiEdition` extending `WbeEdition`, for representing an edition in WOPI context * `WopiRequestDispatcher` implementing `WbeFileEdition.ClientRequestDispatcher`, for dispatching to the UI of the editor The first phase of WOPI processing is to 'discover' the edition possibilities. It is done by requesting the editor server via an HTTP request returning an XML content. This content contains mainly the mapping between `mime-type` taken in charge and the `URL` of the corresponding editor. For example, for the `mime-type` of an `ODP` office file, it gives the right editor URL. ## WOPI requests Silverpeas implements the endpoints which are necessary to edit a Silverpeas's file. These endpoints are coded into `WopiFileResource`. In WOPI communications, the editor server have to request the Silverpeas's one. For displaying file content, it has to get the file content for example. So, the Silverpeas's server must be accessible to the editor one over the network. # Using WOPI in Silverpeas ## Dependencies Adding to `silverpeas.gradle` file the following dependencies: ```groovy silverpeas "org.silverpeas.wbe.wopi:silverpeas-wbe-wopi-configuration:${wbe_version}" silverpeas "org.silverpeas.wbe.wopi:silverpeas-wbe-wopi-war:${wbe_version}@war" ``` ## WOPI settings ```properties wopi.client.baseUrl=[base url of server providing the editor] ``` The indicated base URL will be automatically set into the registry of authorized servers used to establish CSP and CORS rules.