RESTful
OpenKM tiene una API completa expuesta vía REST. Puede llamar a cualquier método de la API desde cualquier lenguaje de programación, como Java, PHP o Python. Esta funcionalidad permite crear un cliente propio o integrarse con aplicaciones de terceros como un CRM o un CMS.
En la mayoría de los ejemplos verá parámetros llamados “docId”, “fldId” o “nodeId”. El valor de estos parámetros debe ser un UUID de nodo válido.
Ejemplo de uso
Sección titulada «Ejemplo de uso»Puede usar una librería cliente HTTP o cualquier cliente REST para probar estos métodos de la API, lo que facilita el proceso. O puede usar la aplicación de línea de comandos curl. Por ejemplo, puede listar los hijos de una carpeta:
$ curl -u okmAdmin:admin -H "Accept: application/json" \ http://localhost:8080/openkm/rest/folders/de7b07c2-e707-4390-b5cc-cae340c8c3e5/childrenEl resultado es:
[ { "@type": "folder", "created": 1568408949000, "lastModified": 1568409037000, "path": "/okm:root/test/test", "author": "okmAdmin", "permissions": 31, "uuid": "0fd9f008-27e8-4980-a22b-d71c9a34060a", "parent": "de7b07c2-e707-4390-b5cc-cae340c8c3e5", "subscribed": false, "nodeClass": 0, "dispositionCurrentStage": 0, "subscriptors": [], "keywords": [], "categories": [], "notes": [], "linkTarget": null, "actualVersion": { "name": "1.1", "created": 1568409037000, "size": 0, "author": "okmAdmin", "actual": true, "comment": null, "checksum": null, "action": "PROPERTY_GROUP_ADDED", "params": "okg:consulting", "uuid": null, "parent": "0fd9f008-27e8-4980-a22b-d71c9a34060a" }, "promotedAsRecord": false, "hasRelations": false, "description": null, "restricted": false, "nodeClassChildren": [], "metadataLabel": null, "hasChildren": false, "style": 0 }]En este caso, puede ver el resultado en formato JSON.
Este es un cliente Java para la misma llamada:
package com.openkm;
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.Authenticator;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.PasswordAuthentication;import java.net.URL;
public class JavaRestClient {
public static void main(String[] args) throws Exception { try { String fldUuid = "de7b07c2-e707-4390-b5cc-cae340c8c3e5"; URL url = new URL("http://localhost:8080/openkm/rest/folders/" + fldUuid + "/children"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setRequestProperty("Accept", "application/json");
Authenticator.setDefault(new Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("okmAdmin", "admin".toCharArray()); } });
if (conn.getResponseCode() == 200) { BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream()))); System.out.println("Output from Server .... \n"); String output;
while ((output = br.readLine()) != null) { System.out.println(output); } } else { System.err.println("Failed : HTTP error code : " + conn.getResponseCode()); }
conn.disconnect(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }}Ejemplos de carpetas
Sección titulada «Ejemplos de carpetas»Crear una carpeta nueva:
$ curl -u okmAdmin:admin -H "Accept: application/json" \ -X POST -H "Content-Type: application/json" -d 'newfolder' \ http://localhost:8080/openkm/rest/folders/parents/fe239ae2-4d25-4d87-88b2-924d03b87faaRenombrar una carpeta:
$ curl -u okmAdmin:admin -H "Accept: application/json" \ -X PUT -H "Content-Type: application/x-www-form-urlencoded" \ -d 'newName=test2' \ http://localhost:8080/openkm/rest/folders/fe239ae2-4d25-4d87-88b2-924d03b87faa/nameEjemplos de documentos
Sección titulada «Ejemplos de documentos»Para crear un documento, necesitamos proporcionar los datos binarios del documento:
$ curl -u okmAdmin:admin -H "Accept: application/json" \ -X POST -F content=newDoc.txt -F content=@/home/openkm/doc1.txt \ http://localhost:8080/openkm/rest/documents/parents/fe239ae2-4d25-4d87-88b2-924d03b87faaO desde un formulario HTML:
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document Upload</title></head><body> <form method="POST" enctype="multipart/form-data" action="http://localhost:8080/openkm/rest/documents/parents/fe239ae2-4d25-4d87-88b2-924d03b87faa"> Select file: <input type="file" name="content" size="45"/><br/> <input type="submit" value="Upload" /> </form></body></html>