utoi
utoi

Ayuda API de utoi

Como ya contamos, UTOI es realmente el sistema de mensajería de SOITU.ES con el que nos comunicaremos usando un API. Por ahora, podemos distinguir tres puntos de acceso a ese API:

  • Inutoi: usado para la inyección de mensajes en UTOI.
  • Oututoi: justo lo contrario de Inutoi, se usa para recuperar mensajes e información asociada a ellos.
  • Profileutoi: gestiona las preferencias de los objetos (usuarios o eventos) en UTOI (usuarios que le siguen, perfil en sí, a quienes sigue, etc.).

Antes de empezar con el API en sí, es importante entender los conceptos que manejaremos porque, independientemente de cómo los llamemos de cara al usuario, son los que entenderán los parámetros de llamada al API.

Tipos de objetos:

  • Usuarios: todos nosotros :). Tenemos 4 tablones disponibles (ver más abajo). Debemos autenticarnos ante el API mediante la cookie de SOITU o la clave pública disponible en el perfíl.
  • Eventos o temas: una forma simple de verlos podría ser resumida como "usuarios que sólo disponen de un t1 y en el que pueden escribir otros usuarios". Realmente es mucho más complejo porque, por ejemplo, existen funcionalidades de administración, permisos, suscripciones, etc.

TABLONES

Además, como acabamos de ver, cada objeto puede disponer de hasta 4 tablones:

  • t1: para un usuario es el tablón donde él/ella escribe todos sus mensajes públicos, pueden ir a más sitios pero todos entran aquí también. Para un evento, es donde entran todos los mensajes que envían los usuarios que escriben en él. Es público y todo el mundo lo puede ver. En utoi.es equivale a la pestaña "mensajes enviados" de "mis mensajes".
  • t2: es el tablón donde entran los mensajes de aquellos usuarios y temas a los que seguimos. Sólo tiene sentido para los usuarios, por ahora los temas no pueden seguir a ningún otro objeto. Es sólo visible por el propio usuario por lo que las peticiones para recuperarlo deben estar autenticadas. En utoi.es equivale a la pestaña "lo que sigo".
  • t3: es el tablón de mensajes privados y vuelve a tener sentido sólo para los objetos usuario. Es sólo visible por el propio usuario por lo que las peticiones para recuperarlo deben estar autenticadas. En utoi.es equivale a la pestaña "en privado".
  • t4: también está relacionado con los usuarios y acumulará los mensajes que tienen relación con él/ella: ya sea porque le mencionan o porque son respuesta a un mensaje suyo. En utoi.es equivale a la pestaña "menciones" de "mis mensajes".

Conceptos que conviene aclarar:

  • Un usuario puede seguir otros objetos y estos aparecerán en su tablón t2 pero, en relación con los objetos temas, debe comprenderse que es distinto a poder escribir en ellos: podemos querer leer qué se escribe sobre el tema fotografía pero no tener intención de participar activamente en él.
  • Un usuario puede escribir en temas pero no seguirlos: siguiendo el ejemplo anterior, podremos escribir en el tema fotografía pero, sino lo seguimos, no nos saldrán los mensajes en nuestro tablón t2.
  • Los tablones t1 siempre son públicos y no podemos evitar que un usuario nos pueda seguir. Podemos evitar, mediante la lista de denegacionies, que pueda inyectar mensajes en el tablón t3 de otro usuario, pero nada respecto a seguir otros objetos públicos.
  • No tiene sentido enviar mensajes a sitios públicos y privados (por ejemplo al, antes mencionado, tablón fotografía y a un t3 de un usuario) pues que el mensaje sea público invalida la supuesta privacidad. Ante este caso, Inutoi descartará los destinos privados.

Limitaciones en el número de peticiones:

  • Inutoi: existe una limitación, por usuario, de 10 mensajes cada 60 segundos. Es un mensaje cada 6 segundos o 360 por hora, creemos que son más que suficientes para un uso razonable de UTOI. De cualquier forma, si crees que necesitas más, háznoslo saber.
  • No existe ningún otro tipo de limitación o rate-limit. Hagamos un uso razonable de UTOI y así no tendremos que replantearnos esta decisión :)

Dudas, recomendaciones, bugs, etc.:

Como ya sabes, en SOITU.ES queremos escuchar los comentarios de nuestros usuarios pero, si cabe, aún más en UTOI. Es muy importante que cualquier duda que tengas, problema, sugerencia, etc. nos la envíes a al tema *utoi, intentaremos contestaros lo más rápido posible.

Inutoi

Es el handler encargado de procesar las peticiones relacionadas con los mensajes

Formato de la petición:

http://utoi.soitu.es/Inutoi

Parámetros:

id Clave pública del usuario (tal y como aparece en la página 'Perfil'). Si se llama desde el navegador, no es necesario porque la identificación del usuario se obtiene de la cookie.
c Comando a ejecutar sobre el mensaje.
Posibles valores:
  • add crear un nuevo mensaje (valor por defecto si se omite el parámetro)
  • del borrar un mensaje
  • edit modificar un mensaje
  • reply responder a un mensaje
Restricciones:
  • Sólo pueden borrarse mensajes propios, o bien los que pertenezcan a un tema en el cual sea administrador.
  • Sólo pueden editarse mensajes propios.
m Contenido del mensaje.

Indica el contenido del mensaje, tanto para mensajes nuevos y reenvíos (c=add), como para respuestas ( c=reply ) y ediciones ( c=edit ). Es un parámetro obligatorio, excepto cuando se borra un mensaje ( c=del ), que se ignora. Permite la inclusión de etiquetas HTML <b> </b> y <i> </i> para resaltar texto en negrita y/o cursiva.

Restricciones:
  • No puede sobrepasar el número máximo de caracteres
  • No puede ser vacío (excepto si el comando es del )
  • Tras eliminar caracteres no permitidos, el mensaje no puede ser vacío
t Destino del mensaje.

Indica el destino del mensaje. Se pueden indicar varios destinos separando el nombre de los mismos con el carácter | .

Posibles casos:
  • Si se omite este parámetro, el destino del mensaje será el apartado 'mis mensajes' del usuario
  • Para enviar el mensaje a uno o varios temas, debe indicarse el nombre de los mismos precedidos por el carácter * y separados por el carácter | . Ejemplo: t=*utoi|*demiscasillas
  • Para indicar como destino uno o varios usuarios (como mensaje privado), deberá indicarse su nickname separado por el carácter | . Ejemplo: t=fulanito|menganito
  • Si el comando es diferente a add, se podrá indicar sólo un destino
  • Para eliminar un mensaje privado (comando del ), se debe indicar como valor t=p
Restricciones:
  • El usuario sólo puede escribir en los temas en que haya solicitado y en los que esté autorizado, que estén disponibles en ese momento
  • El usuario sólo puede mandar mensajes privados a usuarios que no le tengan bloqueado
  • No se pueden enviar mensajes privados a usuarios y a temas a la vez: al enviar un mensaje privado a un tema, éste dejaría de ser privado, con lo cual su comportamiento ya no sería coherente
  • Sólo se pueden editar mensajes (comando edit ) especificando como destino 'mis mensajes'
  • Sólo se pueden borrar mensajes de temas en los que tenga permiso para ello: si el usuario tiene permisos de administrador en un tema, podrá eliminar mensajes en ese tema pertenecientes a otros usuarios (ojo: el mensaje se borrará sólo del tema indicado, no del apartado "mis mensajes" del autor del mensaje)
x Datos extra.
Posibles valores:
  • Si el comando es add, el mensaje se tratará como un reenvío (FWD), y el valor de este parámetro será el identificador de mensaje a reenviar
  • Si el comando es del, el valor de este parámetro será el identificador del mensaje a borrar
  • Si el comando es edit, el valor de este parámetro será el identificador del mensaje a editar
  • si el comando es reply, el valor de este parámetro será el identificador de mensaje al que se quiere contestar
Restricciones:
  • Si el comando es diferente a 'add', este parámetro siempre deberá contener valor
f Formato de respuesta a la petición.
Posibles valores:
  • text texto plano (valor por defecto)
  • json
  • xml
  • html
p Imagen asociada al mensaje.

Para el envío de imágenes es necesario que la petición sea por POST con enctype="multipart/form-data" .

Restricciones:
  • No deberá superar el tamaño máximo permitido

Otros errores asociados al handler:

  • Si se sobrepasa el número máximo de peticiones permitidas por minuto

Formato de la respuesta (cuando la petición es correcta):

text
ok
[extra-info]
json
{'status':'ok','info':'[extra-info]'}
xml
<utoi>            

   <status>ok</status>            

   <info><![CDATA[[extra-info]]]></info>            

</utoi>
html
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">            
<html>             
   <head>             
      <title>UTOI</title>             
   </head>            
   <body>             
      <h1 id="status">OK</h1>             
      <p id="info">[extra-info]</p>             
   </body>            
</html> 

[extra-info] contendrá información adicional sobre la acción realizada

Formato de la respuesta (cuando la petición devuelve un error):

Cuando la petición devuelve error se hace una redirección a la siguiente url, donde se especifica el error ocurrido:

http://utoi.soitu.es/Scripts/errors.html

text
error <codigo_error>             
[info_error]
json
{'status':'error','code':'<codigo_error>','info':'[info_error]'}<codigo_error>
xml
<utoi>            
   <status>error</status>            
   <code><codigo_error></code>            
   <info><![CDATA[[info_error]]]></info>            
</utoi>
html
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">            
<html>             
   <head>             
      <title>UTOI</title>             
   </head>            
   <body>             
      <h1 id="status">ERROR</h1>             
      <p id="code"><codigo_error></p>             
      <p id="info">[info_error]</p>             
   </body>            
</html>

[codigo_error] código interno del error

[info_error] información adicional sobre el error

Ejemplos

http://utoi.soitu.es/Inutoi?id=<public_id>&c=add&m=<mensaje>
Enviar un mensaje a 'mis mensajes'
http://utoi.soitu.es/Inutoi?id=<public_id>&c=add&m=<mensaje>t=fulanito|menganito
Enviar un mensaje privado a 'fulanito' y a 'menganito'
http://utoi.soitu.es/Inutoi?id=<public_id>&c=add&m=<mensaje>&t=*hartosdelcoche
Enviar un mensaje al tema 'Hartos del coche'
http://utoi.soitu.es/Inutoi?id=<public_id>&c=add&m=<mensaje>&t=*utoi|*loquepasaporlatele
Enviar un mensaje a los temas 'Utoi' y 'Lo que pasa por la tele'
http://utoi.soitu.es/Inutoi?id=<public_id>&c=reply&x=<id_mensaje_a_responder>&m=<mensaje_respuesta>
Responder a un mensaje
http://utoi.soitu.es/Inutoi?id=<public_id>&c=del&x=<id_mensaje_a_borrar>
Borrar un mensaje
http://utoi.soitu.es/Inutoi?id=<public_id>&c=del&x=<id_mensaje_a_borrar>&t=p
Borrar un mensaje privado de mi tablón 'en privado'
http://utoi.soitu.es/Inutoi?id=<public_id>&c=edit&x=<id_mensaje_a_editar>&m=<nuevo_mensaje>
Editar un mensaje
http://utoi.soitu.es/Inutoi?id=<public_id>&c=add&x=<id_mensaje_a_reenviar>&m=<mensaje_reenviado>
Reenviar un mensaje

Oututoi

Es el handler encargado de devolver los mensajes, agrupados según se pidan.

Formato de la petición:

http://utoi.soitu.es/Oututoi

Parámetros:

id Clave pública que identifica al usuario (si se llama desde el navegador estando autenticado, no es necesario porque se coge la cookie)
t Tablón solicitado. (Por defecto 2)
  • t1-usuario Tablón de mensajes enviados por <usuario>
  • t4-usuario Tablón de referencias o respuestas a <usuario>

Solo se pueden pedir si se está autenticado

  • 2 Tablón de los usuarios/eventos que sigue el usuario identificado por [id] o mediante cookie.
  • 3 Tablón de los mensajes privados enviados/recibidos por el usuario identificado por [id] o mediante cookie.
f Formato. (Por defecto json)
  • json Formato por defecto. Es el usuado preferentemente desde javascript.
  • xml XML estricto fácilmente parseable en cualquier lenguaje.
  • rss Formato para poder leer tu tablón en cualquier lector Rss estándar.
p Número de página. (Por defecto 1)
msg Identificador de un mensaje si lo que queremos es un hilo o un mensaje suelto.
th Quiero un hilo (1) o solo el mensaje (0) referenciado por msg.
ts Fecha de última actualización (en formato timestamp de unix).  Si se envía este dato se utiliza para decidir si la información en el servidor es posterior o no a la fecha indicada.
nummsg Número de mensajes por página. (Por defecto 50, máximo 100)

Ejemplos PETICIONES DE INFORMACIÓN PÚBLICA:

http://utoi.soitu.es/Oututoi?t=t1-<usuario> flecha El tablón de un usuario
http://utoi.soitu.es/Oututoi?t=t4-<usuario> flecha El tablón de referencias a un usuario
http://utoi.soitu.es/Oututoi?msg=<id_mensaje> flecha Un mensaje específico
http://utoi.soitu.es/Oututoi?msg=<id_mensaje>&th=1 flechaHilo de conversación a la que pertenece un mensaje específico

Ejemplos PETICIONES DE INFORMACIÓN PRIVADA:

http://utoi.soitu.es/Oututoi?t=2&id=<public_id> flechaMi tablón de suscripciones
http://utoi.soitu.es/Oututoi?t=3&id=<public_id> flechaMis mensajes privados

FORMATO DE LA RESPUESTA:

numMensajes Número de mensajes existentes en el tablón
errorCode Código de error. Si está todo correcto es 0
ts Timestamp pasado por parámetro. Si no se pasó nada, hora actual.
horaActual Timestamp de la hora actual.
ultimavisita Solo si la petición es de un usuario autenticado
updated Fecha de actualización
  • [tablon_pedido] timestamp de última actualización del tablón pedido

Solo si la petición es de un usuario autenticado:

  • t2-<usuario_autenticado> timestamp de última actualización del tablón 2 del usuario autenticado
  • t3-<usuario_autenticado> timestamp de última actualización del tablón 3 del usuario autenticado
mensajes Lista de mensajes

Cada mensaje contiene:

  • idMsg Identificador único del mensaje.
  • usuarioOrigen Autor del mensaje.
  • contenido Texto del mensaje.
  • CopiaEnTablones Tablones en los que se encuentra el mensaje. Al menos, siempre en el del autor.
  • tsMensaje Fecha de creación del mensaje.
  • borrado Si el mensaje está borrado y no se eliminó de la DB estará a 1. El contenido se borra.
  • via Método de envío del mensaje. Por ahora puede ser: web o sms
  • reenvio Si es un reenvío. Identificador del mensaje reenviado.

Si incluye una imagen:

  • cont_adicional Path de la imagen, si el mensaje incluye una. 0 si no hay imagen.
  • cont_adicional_tipo Tipo de contenido. Por el momento "IMAGEN"
  • cont_adicional_dimx Tamaño x de la imagen.
  • cont_adicional_dimy Tamaño y de la imagen.

En caso de que forme parte de una conversación :

  • hilo Identificador del mensaje de inicio de la conversación.
  • idMsgRespuesta Identificador del mensaje al que se responde.
  • autorMsgRespuesta Autor del mensaje al que respondo.
  • level Nivel de indentación del mensaje con respecto al hilo completo.
perfilesUsuarios Perfiles de todos los usuarios que aparezcan en los mensajes del listado de mensajes
  • pathfoto Url de la foto

  Si el perfil es público:

  • nombre
  • apellidos
  • profesion
  • descripcion
  • urlwebpersonal
perfilesEventos Perfiles de todos los eventos que aparezcan en los mensajes del listado de mensajes
  • nombre Nombre del evento.
  • pathfoto Url de la foto asociada al evento.
  • descripcion Descripción del evento.
  • num_mensajes Número de mensajes en el evento.
  • numero_seguidores_evento Número de seguidores que tiene.
  • numero_writers_evento Número de usuarios que pueden escribir en el evento.
  • ts_ultimo_mensaje timestamp del último mensaje enviado al tablón.
  • sub_automatica Si es de suscripción automática o hay que pedir permiso.
  • activo Si está activo o cerrado.
  • nombreparamovil Cadena de texto que identifica al evento para los envíos sms.
  • adm Administrador/es del evento.
  • prop Propietario/s del evento.
  • etiquetas Etiquetas asociadas al evento.
  • ts_inicio Timestamp de inicio del evento.
  • ts_final Timestamp de fin del evento.

Ejemplo de respuesta en JSON

Petición:

http://utoi.soitu.es/Oututoi?t=ev-ultimahora&nummsg=2

Respuesta:


{
  "numMensajes":3518,
  "errorCode":0,
  "ts":"1253864685.0003",
  "perfilesEventos":
	  {
      "ultimahora":
    		{
          "estado_seguimiento":0,
          "ts_ultimo_mensaje":"1253861770.82295",
          "sub_automatica":0,
          "activo":1,
          "estado_escritura":0,
          "nombre":"Última hora",
          "numero_seguidores_evento":97,
          "ts_inicio":1241512105,
          "ts_final":2147483647,
          "adm":
			      [	],
          "prop":
            [ "soitu"	],
          "pathfoto":"http://utoi.soitu.es/Eventos/36/ultimahora/foto_evento.jpg",
          "descripcion":"Desde la redacción de soitu.es os contamos lo que ocurre en el mundo, con enlaces            

                        a noticias, vídeos, fotografías",
          "nombreparamovil":"",
          "numero_writers_evento":25,
          "etiquetas":
            [	],
          "num_mensajes":3518
		    }
	  },

  "perfilesUsuarios":
	  {
      "laredaccion":
        {
          "seguido":0,
          "pathfoto":"http://utoi.soitu.es/Participacion/usuarios/perfil/75/laredaccion/laredaccion.jpg",
          "bloqueado":0,
          "apellidos":"",
          "profesion":"",
          "activo":1,
          "urlwebpersonal":"",
          "descripcion":"",
          "nombre":""
        }
    },

  "mensajes":
	  [
		  {
        "reenvio":0,
        "tsMensaje":1253856565,
        "usuarioOrigen":"laredaccion",
        "borrado":0,
        "autorMsgRespuesta":0,
        "cont_adicional_dimy":267,
        "via":"web",
        "idMsg":"1253856565-e420e780dc69b0d2f395667fe2379663",
        "hilo":0,
        "level":0,
        "CopiaEnTablones":"t1-laredaccion,ev-ultimahora",
        "cont_adicional":"/Imagenes/D6/AB/1253856565-e420e780dc69b0d2f395667fe2379663.jpg",
        "cont_adicional_dimx":432,
        "idMsgRespuesta":0,
        "cont_adicional_tipo":"IMAGEN",
        "contenido":"El G20 quiere consolidarse como un grupo de decisión. Algunas informaciones apuntan a
                    su constitución como un órgano permanente de coordinación económica, en detrimento del G8. 
                    Entre tanto, Zapatero no para de hacerse fotos con Obama. Esta vez 
                    sin niñas. http://cort.as/50m"
		  },

		  {
        "reenvio":0,
        "tsMensaje":1253850319,
        "usuarioOrigen":"laredaccion",
        "borrado":0,
        "autorMsgRespuesta":0,
        "via":"web",
        "idMsg":"1253850319-551555f9aa96b4651d40543f2084c5b6",
        "hilo":0,
        "level":0,
        "hayVideo":1,
        "CopiaEnTablones":"t1-laredaccion,ev-ultimahora",
        "cont_adicional":0,
        "idMsgRespuesta":0,
        "contenido":"Esta noche Larry King ha entrevistado a Hugo Chavez en su show de la CNN americana. 
                    El presidente de Venezuela ha dicho que\"Hillary Clinton está muy perdida en su trabajo, 
                    que la Administración Bush trató de asesinarle y que hay 
                    dos Obamas\". http://www.youtube.com/watch?v=ygWLgvV5PO0"
		  }
	  ],
  "updated":
	  {
      "ev-ultimahora":1253861766
    },
  "ultimaVisita":0,
  "horaActual":1253864684
}
                      

Ejemplo de respuesta en XML

Petición:

http://utoi.soitu.es/Oututoi?t=ev-ultimahora&nummsg=2&f=xml

Respuesta:

<xml>

  <numMensajes><![CDATA[3528]]></numMensajes>
  <errorCode><![CDATA[0]]></errorCode>
  <ts><![CDATA[1253870536.553]]></ts>
  <perfilesEventos>

    <ultimahora>
      <estado_seguimiento><![CDATA[0]]></estado_seguimiento>
      <ts_ultimo_mensaje><![CDATA[1253870015.57142]]></ts_ultimo_mensaje>
      <sub_automatica><![CDATA[0]]></sub_automatica>

      <activo><![CDATA[1]]></activo>
      <estado_escritura><![CDATA[0]]></estado_escritura>
      <nombre><![CDATA[Última hora]]></nombre>
      <numero_seguidores_evento><![CDATA[97]]></numero_seguidores_evento>

      <ts_inicio><![CDATA[1241512105]]></ts_inicio>
      <ts_final><![CDATA[2147483647]]></ts_final>
      <adm></adm>
      <prop>

        <element><![CDATA[soitu]]></element>
      </prop>
      <pathfoto><![CDATA[http://utoi.soitu.es/Eventos/36/ultimahora/foto_evento.jpg]]></pathfoto>
      <descripcion><![CDATA[Desde la redacción de soitu.es os contamos lo que ocurre en             
                   el mundo, con enlaces a noticias, vídeos, fotografías]]></descripcion>

      <nombreparamovil><![CDATA[]]></nombreparamovil>
      <numero_writers_evento><![CDATA[25]]></numero_writers_evento>
      <etiquetas></etiquetas>
      <num_mensajes><![CDATA[3528]]></num_mensajes>

    </ultimahora>
  </perfilesEventos>
  <perfilesUsuarios>
    <albertomoreno>
      <seguido><![CDATA[0]]></seguido>

      <pathfoto><![CDATA[http://utoi.soitu.es/Participacion/usuarios/perfil/79/alber            
                tomoreno/albertomoreno.jpg]]></pathfoto>
      <bloqueado><![CDATA[0]]></bloqueado>
      <apellidos><![CDATA[Moreno]]></apellidos>
      <profesion><![CDATA[Periodista]]></profesion>

      <activo><![CDATA[0]]></activo>
      <urlwebpersonal><![CDATA[http://www.soitu.es/soitu/tags/portadilla/alberto%20moreno]]></urlwebpersonal>
      <descripcion><![CDATA[]]></descripcion>
      <nombre><![CDATA[Alberto]]></nombre>

    </albertomoreno>
    <laredaccion>
      <seguido><![CDATA[0]]></seguido>
      <pathfoto><![CDATA[http://utoi.soitu.es/Participacion/usuarios/perfil/75/lared            
                accion/laredaccion.jpg]]></pathfoto>
      <bloqueado><![CDATA[0]]></bloqueado>

      <apellidos><![CDATA[]]></apellidos>
      <profesion><![CDATA[]]></profesion>
      <activo><![CDATA[1]]></activo>
      <urlwebpersonal><![CDATA[]]></urlwebpersonal>

      <descripcion><![CDATA[]]></descripcion>
      <nombre><![CDATA[]]></nombre>
    </laredaccion>
  </perfilesUsuarios>
  <mensajes>

    <element>
      <reenvio><![CDATA[0]]></reenvio>
      <tsMensaje><![CDATA[1253870015]]></tsMensaje>
      <usuarioOrigen><![CDATA[laredaccion]]></usuarioOrigen>

      <borrado><![CDATA[0]]></borrado>
      <autorMsgRespuesta><![CDATA[0]]></autorMsgRespuesta>
      <via><![CDATA[web]]></via>
      <idMsg><![CDATA[1253870015-d15df4a04ac117558c8c82ca131a9485]]></idMsg>

      <hilo><![CDATA[0]]></hilo>
      <level><![CDATA[0]]></level>
      <CopiaEnTablones><![CDATA[t1-laredaccion,ev-ultimahora,t4-albertomoreno]]></CopiaEnTablones>
      <cont_adicional><![CDATA[0]]></cont_adicional>

      <idMsgRespuesta><![CDATA[0]]></idMsgRespuesta>
      <contenido><![CDATA[<b>Acaba la competición, empieza un fin de semana de premios en             
                 Donostia</b>. Pero antes, Terry Gilliam, uno de los fundadores de Monty Phyton,             
                 presenta <b>"The imaginarium of Doctor Parnassus"</b>, filme póstumo del actor             
                 Heath Ledger. Como siempre, @<a href="http://utoi.soitu.es/albertomoreno"            
                 target="_top">albertomoreno</a> nos dará todos los detalles.]]> </contenido>

    </element>
    <element>
      <reenvio><![CDATA[0]]></reenvio>
      <tsMensaje><![CDATA[1253869354]]></tsMensaje>
      <usuarioOrigen><![CDATA[laredaccion]]></usuarioOrigen>

      <borrado><![CDATA[0]]></borrado>
      <autorMsgRespuesta><![CDATA[0]]></autorMsgRespuesta>
      <cont_adicional_dimy><![CDATA[361]]></cont_adicional_dimy>
      <via><![CDATA[web]]></via>

      <idMsg><![CDATA[1253869354-3422564119f8f1395a95e2fdb8674358]]></idMsg>
      <hilo><![CDATA[0]]></hilo>
      <level><![CDATA[0]]></level>
      <CopiaEnTablones><![CDATA[t1-laredaccion,ev-ultimahora]]></CopiaEnTablones>

      <cont_adicional><![CDATA[/Imagenes/E7/3A/1253869354-3422564119f8f1395a95e2fdb8674358.jpg]]>            
                      </cont_adicional>
      <cont_adicional_dimx><![CDATA[432]]></cont_adicional_dimx>
      <idMsgRespuesta><![CDATA[0]]></idMsgRespuesta>
      <cont_adicional_tipo><![CDATA[IMAGEN]]></cont_adicional_tipo>

      <contenido><![CDATA[El Gobierno firma hoy con los sindicatos <b>el convenio colectivo</b>             
                 pactado el pasado 17 de septiembre para los años 2010-2012. Fijaba <b>un alza             
                 salarial para el primer año del 0,3%</b> y establece como novedad la aplicación             
                 de una cláusula de revisión. <a title="http://cort.as/51v" target="_blank"             
                 href="http://cort.as/51v">http://cort.as/51v</a>]]></contenido>

    </element>
  </mensajes>
  <updated>
    <ev-ultimahora><![CDATA[1253870015]]></ev-ultimahora>
  </updated>

  <ultimavisita><![CDATA[0]]></ultimavisita>
  <horaActual>1253870536</horaActual>
</xml>

 

Profileutoi

Es el handler encargado de gestionar la información de los usuarios.

Formato de la petición:

http://utoi.soitu.es/Profileutoi

Parámetros:

id Clave pública que identifica al usuario (si se llama desde el navegador, no es necesario porque se coge la cookie)
action Acción a realizar.
Posibles valores:
  • add_usuarios
  • add_eventos
  • add_denegaciones
  • add_writers
  • del_usuarios
  • del_eventos
  • del_denegaciones
  • del_writers
  • list_usuarios
  • list_eventos
  • list_seguidores
  • list_writers
  • list_denegaciones
  • info_usuarios
  • info_eventos
f Formato de la respuesta.
Posibles valores:
  • json
  • xml
data Información a añadir/eliminar. Ej: lista de usuarios/eventos a añadir, borrar, listar
user Usuario sobre el que realizar la acción (las permitidas) si no es el identificado.
event Evento sobre el que realizar la acción.
msg Mensaje adjunto para los casos que se necesitan. (Cuando se pide escribir en un evento)
pag Número de página cuando las respuestas no caben en una sola página (por defecto 1).
maxResp Número máximo de respuestas por página (por defecto 30, máximo 100. 33 en el caso de sort tipo 1).
sort Hay dos tipos de ordenación. Por orden inverso a la hora de apuntarse (tipo 0) y por actividad (tipo 1. No tiene paginación)

EJEMPLOS de petición de información pública

http://utoi.soitu.es/Profileutoi?action=info_usuarios&user=<usuario>
Información de un usuario
http://utoi.soitu.es/Profileutoi?action=info_eventos&event=<evento>
Información de un evento
http://utoi.soitu.es/Profileutoi?action=list_usuarios&user=<usuario>
A quién sigue un usuario
http://utoi.soitu.es/Profileutoi?action=list_eventos&user=<usuario>
Lista de eventos que sigue un usuario
http://utoi.soitu.es/Profileutoi?action=list_seguidores&user=<usuario>
Seguidores de un usuario
http://utoi.soitu.es/Profileutoi?action=list_seguidores&event=<evento>
Seguidores de un evento
http://utoi.soitu.es/Profileutoi?action=list_writers&event=<evento>
Quién puede escribir en un evento

EJEMPLOS DE PETICIÓN DE INFORMACIÓN PRIVADA

http://utoi.soitu.es/Profileutoi?action=add_eventos&id=<public_id>&data=<lista de eventos separados por ,>
Seguir un evento
http://utoi.soitu.es/Profileutoi?action=del_eventos&id=<public_id>&data=<lista de eventos separados por ,>
Dejar de seguir un evento
http://utoi.soitu.es/Profileutoi?action=add_usuarios&id=<public_id>&data=<lista usuarios separados por ,>
Seguir a un usuario
http://utoi.soitu.es/Profileutoi?action=del_usuarios&id=<public_id>&data=<lista usuarios separados por ,>
Dejar de seguir a un usuario
http://utoi.soitu.es/Profileutoi?action=add_denegaciones&id=<public_id>&data=<lista usuarios separados por ,>
Bloquear un usuario para que no nos mande privados
http://utoi.soitu.es/Profileutoi?action=del_denegaciones&id=<public_id>&data=<lista usuarios separados por ,>
Desbloquear un usuario
http://utoi.soitu.es/Profileutoi?action=list_denegaciones&id=<public_id>
Lista de usuarios bloqueados
http://utoi.soitu.es/Profileutoi?action=add_writers&id=<public_id>&data=<lista de eventos separados por ,>&msg=<mensaje_de_peticion_si_es_un_evento_cerrado>
Solicitar poder escribir en uno o varios eventos
http://utoi.soitu.es/Profileutoi?action=del_writers&id=<public_id>&data=<lista de eventos separados por ,>
Dejar de escribir en un evento
http://utoi.soitu.es/Profileutoi?action=list_writers&id=<public_id>
Listado de los eventos en los que puede escribir un usuario

FORMATO DE LA RESPUESTA

pagina Número de página
numeroUsuarios Número de usuarios ( si se pidió usuarios o seguidores )
numeroEventos Número de eventos ( si se pidieron eventos )
perfilesUsuarios Perfiles de todos los usuarios si se pidió usuarios o seguidores

Cada perfil está definido por el nombre del usuario y contiene:

  • pathfoto Url de la foto.

Si quien hace la petición está autenticado:

  • seguido Si el usuario que hace la petición le sigue o no.
  • bloqueado Si el usuario que hace la petición le tiene bloqueado o no.

Si el perfil es público :

  • nombre
  • apellidos
  • profesion
  • descripcion
  • urlwebpersonal

Si lo que pedí fue info y no un listado:

  • numero_usuarios Número de usuarios a los que sigue.
  • numero_seguidores Número de usuarios que le siguen.
  • numero_eventos Número de eventos que sigue.
  • numero_mensajes_referenciados Número de mensajes en los que se le menciona y/o contesta.
  • numero_mensajes_propios Número de mensajes enviados.
perfilesEventos Perfiles de todos los eventos si se pidieron eventos

Cada perfil está definido por el nombre del evento y contiene:

  • nombre Nombre del evento.
  • pathfoto Url de la foto asociada al evento.
  • descripcion Descripción del evento.
  • num_mensajes Número de mensajes en el evento.
  • numero_seguidores_evento Número de seguidores que tiene.
  • numero_writers_evento Número de usuarios que pueden escribir en el evento.
  • ts_ultimo_mensaje timestamp del último mensaje enviado al tablón.
  • sub_automatica Si es de suscripción automática o hay que pedir permiso.
  • activo Si está activo o cerrado.
  • nombreparamovil Cadena de texto que identifica al evento para los envíos sms.
  • adm Administrador/es del evento.
  • prop Propietario/s del evento.
  • etiquetas Etiquetas asociadas al evento.
  • ts_inicio Timestamp de inicio del evento.
  • ts_final Timestamp de fin del evento.

Si quien hace la petición está autenticado

  • estado_seguimiento Si el usuario que hace la petición sigue este evento o no.
  • estado_escritura Si el usuario que hace la petición puede escribir en este evento.

EJEMPLO RESPUESTA EN JSON

Petición:

http://utoi.soitu.es/Profileutoi?action=info_eventos&event=ultimahora

Respuesta:

{
  "ts_actual":1253890549,
  "perfilesEventos":
	  {
      "ultimahora":
        {
          "estado_seguimiento":0,
          "ts_ultimo_mensaje":"1253890362.40239",
          "sub_automatica":0,
          "activo":1,
          "estado_escritura":0,
          "nombre":"Última hora",
          "numero_seguidores_evento":97,
          "ts_inicio":1241512105,
          "ts_final":2147483647,
          "adm":[],
          "prop":["soitu"],
          "pathfoto":"http://utoi.soitu.es/Eventos/36/ultimahora/foto_evento.jpg",
          "descripcion":"Desde la redacción de soitu.es os contamos lo que ocurre en el mundo,             
			con enlaces a noticias, vídeos, fotografías",
          "nombreparamovil":"",
          "numero_writers_evento":25,
          "etiquetas":[],
          "num_mensajes":3547
        }
    }
}   

EJEMPLO RESPUESTA EN XML

Petición:

http://utoi.soitu.es/Profileutoi?action=info_eventos&event=ultimahora&f=xml

Respuesta:

           
<xml>
  <ts_actual><![CDATA[1253890729]]></ts_actual>
  <perfilesEventos>
    <ultimahora>
      <estado_seguimiento><![CDATA[0]]></estado_seguimiento>
      <ts_ultimo_mensaje><![CDATA[1253890362.40239]]></ts_ultimo_mensaje>
      <sub_automatica><![CDATA[0]]></sub_automatica>
      <activo><![CDATA[1]]></activo>
      <estado_escritura><![CDATA[0]]></estado_escritura>
      <nombre><![CDATA[Última hora]]></nombre>
      <numero_seguidores_evento><![CDATA[97]]></numero_seguidores_evento>
      <ts_inicio><![CDATA[1241512105]]></ts_inicio>
      <ts_final><![CDATA[2147483647]]></ts_final>
      <adm></adm>
      <prop>
        <element><![CDATA[soitu]]></element>
      </prop>
      <pathfoto><![CDATA[http://utoi.soitu.es/Eventos/36/ultimahora/foto_evento.jpg]]></pathfoto>
      <descripcion><![CDATA[Desde la redacción de soitu.es os contamos lo que ocurre en el mundo,             
		     con enlaces a noticias, vídeos, fotografías]]></descripcion>
      <nombreparamovil><![CDATA[]]></nombreparamovil>
      <numero_writers_evento><![CDATA[25]]></numero_writers_evento>
      <etiquetas></etiquetas>
      <num_mensajes><![CDATA[3547]]></num_mensajes>
    </ultimahora>
  </perfilesEventos>
</xml>