{"id":1304,"date":"2014-06-17T10:00:05","date_gmt":"2014-06-17T09:00:05","guid":{"rendered":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/?p=1304"},"modified":"2014-06-16T21:34:02","modified_gmt":"2014-06-16T20:34:02","slug":"compartimoss-20-nuevas-apis-para-desarrolladores-en-office-365-parte","status":"publish","type":"post","link":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/compartimoss-20-nuevas-apis-para-desarrolladores-en-office-365-parte\/","title":{"rendered":"Compartimoss 20 Nuevas API\u2019s para desarrolladores en Office 365 Parte I"},"content":{"rendered":"<p>Como cada tres meses, acaba de ver a luz un nuevo n\u00famero de la revista digital <a href=\"http:\/\/www.compartimoss.com\/\" target=\"_blank\">CompartiMOSS<\/a>. En dicho n\u00famero he colaborado con un art\u00edculo introduciendo las nuevas API&#8217;s para desarrolladores en Office 365.<br \/>\nEn este nuevo n\u00famero <a href=\"http:\/\/www.encamina.com\" target=\"_blank\">ENCAMINA<\/a> ha estado muy representada ya que nuestros compa\u00f1eros <a href=\"http:\/\/www.compartimoss.com\/revistas\/numero-20\/sharepoint-2013-solucion-o-aplicacion\" target=\"_blank\">Alberto D\u00edaz<\/a>, <a href=\"http:\/\/www.compartimoss.com\/revistas\/numero-20\/novedades-en-sql-server-2014\" target=\"_blank\">Javier Menendez<\/a> y <a href=\"http:\/\/www.compartimoss.com\/revistas\/numero-20\/sharepoint-2013-sobre-azure-iaas\" target=\"_blank\">Luis Emilio Lopez<\/a> han escrito un art\u00edculo. Sin que suene a pelota os recomiendo estos art\u00edculos por varios motivos:<\/p>\n<ol>\n<li>Interesante debate sobre la forma de desarrollar para SharePoint.<\/li>\n<li>Saber como se comporta SharePoint desplegado en Azure<\/li>\n<li>Conocer las novedades que trae la nueva versi\u00f3n de SQL Server 2014<\/li>\n<\/ol>\n<p>Adem\u00e1s de estos art\u00edculos para mi hay una serie de art\u00edculos que son de obligada lectura:<\/p>\n<ul>\n<li><span style=\"color: #303030\"><a href=\"http:\/\/www.compartimoss.com\/revistas\/numero-20\/ajuste-de-la-relevancia-en-el-motor-de-busqueda-de-sharepoint-2013\" target=\"_blank\">Ajuste de la Relevancia en el Motor de B\u00fasqueda de SharePoint 2013<\/a> by Gustavo Velez<\/span><\/li>\n<li><span style=\"color: #303030\"><a href=\"http:\/\/www.compartimoss.com\/revistas\/numero-20\/consumir-servicios-rest-sharepoint-online-2013-desde-workflow-sharepoint-designer-2013\" target=\"_blank\">C\u00f3mo consumir los Servicios REST de SharePoint Online 2013 desde un WorkFlow en SharePoint Designer 2013<\/a> by Andres Ortiz<\/span><\/li>\n<li><span style=\"color: #303030\"><a href=\"http:\/\/www.compartimoss.com\/revistas\/numero-20\/buenas-practicas-en-infraestructura-en-sharepoint-2013-parte-ii\" target=\"_blank\">Buenas pr\u00e1cticas en infraestructura en SharePoint 2013 &#8211; Parte II<\/a> by Miguel Tabera<\/span><\/li>\n<\/ul>\n<p><!--more--><\/p>\n<p><strong>Nota: <\/strong>Estas API\u2019s est\u00e1n en fase de Preview y pueden sufrir alguna modificaci\u00f3n cuando se lance la versi\u00f3n definitiva. Naturalmente, no se recomienda el uso de ninguna de estas API\u2019s en un entorno de producci\u00f3n.<\/p>\n<p><strong>Introducci\u00f3n<\/strong><\/p>\n<p>En la Conferencia de SharePoint que tuvo lugar en las Vegas el pasado mes de Abril, Microsoft present\u00f3 muchas novedades para nuestro <em>servidor favorito<\/em> sobre todo en la versi\u00f3n Online: nuevos formularios para sustituir a InfoPath, Office Graph, novedades en las APPs (App Model Cloud), versi\u00f3n SDK para Android, mejoras en la API REST, novedades en NAPA\u2026\u00a0 y\u00a0 la aparici\u00f3n de nuevas API para Office 365.<\/p>\n<p>Estas APIS son:<\/p>\n<ul>\n<li>Exchange: Permitir el acceso, a\u00f1adir y modificar elementos tanto al Calendario, Contactos como enviar y consultar nuevo Mail.<\/li>\n<li>SharePoint: Facilitar el acceso a carpeta y ficheros. Representa un redise\u00f1o del almacenamiento y la administraci\u00f3n de archivos de la API de SharePoint<\/li>\n<li>Active Directory: Consulta, alta y modificaci\u00f3n\u00a0 de usuarios en el Active Directory de Azure.<\/li>\n<\/ul>\n<p>Adem\u00e1s de estas API\u2019s, el uso de las mismas es posible gracias a otra de las novedades que se han introducido como es la posibilidad de implementar OAuth fuera del contexto de SharePoint. Es decir, tengo una aplicaci\u00f3n fuera del contexto de Office365, y le puedo dar permisos para utilizar estos datos. Esta t\u00e9cnica de delegaci\u00f3n de las credenciales est\u00e1 presente en casi todas las aplicaciones m\u00f3viles, como por ejemplo cualquier app de Twitter, Instagram, etc. C\u00f3mo se implementa esta delegaci\u00f3n de credenciales no es objeto de este art\u00edculo, para informaci\u00f3n de c\u00f3mo realizarlo se puede consultar este enlace: http:\/\/msdn.microsoft.com\/es-ES\/library\/office\/dn605895<\/p>\n<p>Damos tanta importancia a estas API\u2019s es porque desde que se present\u00f3 el nuevo modelo de Apps y la Office Store, Microsoft no hab\u00eda presentado casi novedades. Algunas de estas API\u2019s (como por ejemplo la API de Exchange) eran continuas reclamaciones que le hac\u00edamos los desarrolladores para poder implementar aplicaciones interesantes y de calidad en la Office Store utilizando Exchange Online. Adem\u00e1s el hecho de que estas API\u2019s puedan ser Cross-Plataform da un motivo m\u00e1s a clientes para unirse a Office 365, bien en un entorno hibrido, bien en un entorno cloud.<\/p>\n<p><strong>Desgranando las API\u2019s de Exchange<\/strong><\/p>\n<p>Las API\u2019s que se incluyen dentro de Exchange son las que m\u00e1s novedades trae y, quiz\u00e1s, de la que m\u00e1s partido se le pueda obtener. Principalmente porque Exchange fue de los primeros productos que se deciden migrar a la nube, con lo cual, la base instalada es bastante amplia.<\/p>\n<p><strong>Mail REST API \u00a0<\/strong><\/p>\n<p>La Mail REST API proporciona acceso total a los mensajes de correo electr\u00f3nico en el buz\u00f3n de un usuario en Exchange Online. Tenemos las siguientes endpoints disponibles:<\/p>\n<ul>\n<li><strong>Obtener el mail: <\/strong><\/li>\n<\/ul>\n<p>Podemos obtener el correo electr\u00f3nico de dos maneras diferentes. Se puede solicitar un conjunto de mensajes de correo electr\u00f3nico desde una carpeta, opcionalmente filtro o una ordenaci\u00f3n, o puede solicitar una direcci\u00f3n de correo electr\u00f3nico espec\u00edfica por su propiedad ID.<\/p>\n<p><strong>1.- Obtener los mails de la carpeta Inbox<\/strong><\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"574\">GET https:\/\/outlook.office365.com\/ews\/odata\/Me\/Inbox\/MessagesAccept: application\/json;odata.metadata=full<\/p>\n<p>&nbsp;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p><strong>2.- Obtener un mail en particular: para ello tendremos que tener el Identificador del mail que queremos consultar <\/strong><\/p>\n<p>&nbsp;<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"574\">GET <a href=\"https:\/\/outlook.office365.com\/EWS\/OData\/Me\/Messages\">https:\/\/outlook.office365.com\/EWS\/OData\/Me\/Messages<\/a>(&#8216; ID del mensaje&#8217;)Accept: application\/json;odata.metadata=full<\/p>\n<p>&nbsp;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>Otra de las propiedades que se dispone es que dado que hace uso del est\u00e1ndar OData 4.0 podemos realizar filtros, paginaci\u00f3n, ordenaci\u00f3n y n\u00famero de elementos a mostrar dentro de la propia petici\u00f3n como por ejemplo:<\/p>\n<p>&nbsp;<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"574\">GET https:\/\/outlook.office365.com\/ews\/odata\/Me\/Inbox\/Messages?$orderby=DateTimeReceived&amp;$filter=Importance eq Microsoft.Exchange.Services.OData.Model.Importance&#8217;Low&#8217;&amp;$select=Subject,Importance,DateTimeReceived&amp;$top=5Accept: application\/json;odata.metadata=full<\/p>\n<p>&nbsp;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p><strong>\u00a0<\/strong><\/p>\n<p>En el ejemplo propuesto ordenamos los mensajes por fecha de creaci\u00f3n haciendo uso de $orderby, filtramos mediante el par\u00e1metro $filter por los elementos que son de importancia \u201cLow\u201d y mostramos los siguientes campos: Subject , Importance y DateTimeReceived utilizando $select.\u00a0 Indicamos el n\u00famero de elementos que nos traemos con la sentencia $top donde en este caso nos trae los primeros 5 elementos.<\/p>\n<p><strong>Nota:<\/strong> En cuanto al n\u00famero de elementos que nos podemos traer por petici\u00f3n tiene un m\u00e1ximo de 500 items, por defecto est\u00e1 limitado a 50 pero se puede incrementar hasta 500 items.<\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li><strong>Crear un mail<\/strong><\/li>\n<\/ul>\n<p>Para crear un mail tendremos que crear un objeto JSON \u00a0con la estructura de un mail: Mensaje, Cuerpo y Recipientes. El objeto tendr\u00eda la siguiente estructura:<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"574\">{\u00a0 \u00ab@odata.type\u00bb: \u00ab#Microsoft.Exchange.Services.OData.Model.Message\u00bb,\u00a0 \u00abSubject\u00bb: \u00abArticulo Compartimos para utilizar las nuevas APIS de Office 365\u00bb,\u00a0 \u00abImportance\u00bb: \u00abHigh\u00bb,\u00a0 \u00abBody\u00bb: {\u00a0\u00a0\u00a0 \u00abContentType\u00bb: \u00abHTML\u00bb,\u00a0\u00a0\u00a0 \u00abContent\u00bb: \u00abAqu\u00ed est\u00e1 el articulo leerlo y cualquier cosa me dec\u00eds\u00bb\u00a0 },\u00a0 \u00abToRecipients\u00bb: [\u00a0\u00a0\u00a0 {\u00a0\u00a0\u00a0\u00a0\u00a0 \u00abName\u00bb: \u00abAlberto Diaz\u00bb,\u00a0\u00a0\u00a0\u00a0\u00a0 \u00abAddress\u00bb: \u00abadiazcan@compartimoss.com\u00bb\u00a0\u00a0\u00a0 },{\u00a0\u00a0\u00a0\u00a0\u00a0 \u00abName\u00bb: \u00abJC Gonzalez\u00bb,\u00a0\u00a0\u00a0\u00a0\u00a0 \u00abAddress\u00bb: \u00abjcg1981@compartimoss.com\u00bb\u00a0\u00a0\u00a0 },{\u00a0\u00a0\u00a0\u00a0\u00a0 \u00abName\u00bb: \u00abFabian Imaz\u00bb,\u00a0\u00a0\u00a0\u00a0\u00a0 \u00abAddress\u00bb: \u00abFabian.imaz@compartimoss.com\u00bb\u00a0\u00a0\u00a0 },{\u00a0\u00a0\u00a0\u00a0\u00a0 \u00abName\u00bb: \u00abGustavo Velez\u00bb,\u00a0\u00a0\u00a0\u00a0\u00a0 \u00abAddress\u00bb: \u00abGustavo.velez@compartimoss.com\u00bb\u00a0\u00a0\u00a0 }\u00a0 ]}<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>Sobre este objeto realizaremos la siguiente petici\u00f3n:<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"574\">POST https:\/\/outlook.office365.com\/ews\/odata\/Me\/Drafts\/MessagesAccept: application\/json;odata.metadata=full<\/p>\n<p>Content-Type: application\/json;odata.metadata=full<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p><strong>NOTA: <\/strong>En el momento que creas un mail por defecto se crea dentro de la carpeta de borradores (se puede modificar para que directamente se env\u00ede el mail directamente estableciendo el par\u00e1metro \u201cMessageDispostion\u201d al valor \u201cSendAndSaveCopy\u201d, el valor por defecto es \u201cSaveOnly\u201d).<\/p>\n<ul>\n<li><strong>Actualizar un mail<\/strong><\/li>\n<\/ul>\n<p>Una vez tenemos un mensaje en la carpeta de borradores, podemos realizar cualquier modificaci\u00f3n del mismo, por un lado, generamos el objeto JSON con los campos a modificar, por ejemplo, vamos a modificar el Cuerpo del mensaje:<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"574\">{\u00abBody\u00bb: {<\/p>\n<p>\u00abContentType\u00bb: \u00abHTML\u00bb,<\/p>\n<p>\u00abContent\u00bb: \u00abVamos a modificar el mensaje!!\u201d<\/p>\n<p>}<\/p>\n<p>}<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>Con el objeto creado se realiza la siguiente petici\u00f3n:<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"574\">PATCH https:\/\/outlook.office365.com\/ews\/odata\/Me\/Messages(&#8216;IdentificadordelMensaje&#8217;)Accept: application\/json;odata.metadata=full<\/p>\n<p>Content-Type: application\/json;odata.metadata=full<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<ul>\n<li><strong>Eliminar un mail<\/strong><\/li>\n<\/ul>\n<p>Se puede eliminar correo electr\u00f3nico, simplemente enviando una solicitud DELETE para la direcci\u00f3n de la entidad de mensajes como por ejemplo, la siguiente petici\u00f3n.<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"574\">DELETE https:\/\/outlook.office365.com\/ews\/odata\/Me\/Messages(&#8216;IdentificadordelMensaje&#8217;)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<ul>\n<li><strong>Enviar un mail<\/strong><\/li>\n<\/ul>\n<p>Mediante la API se pueden enviar mails de dos formas:<\/p>\n<ol>\n<li>Una seleccionando el Identificador del mail<\/li>\n<\/ol>\n<table>\n<tbody>\n<tr>\n<td width=\"574\">POST https:\/\/outlook.office365.com\/ews\/odata\/Me\/Messages(&#8216;IdentificadordelMensaje\u00bb)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<ol start=\"2\">\n<li>La otra opci\u00f3n es indicando el par\u00e1metro MessageDisposition=SendAndSaveCopy dentro de la petici\u00f3n de Crear un Mail<\/li>\n<\/ol>\n<table>\n<tbody>\n<tr>\n<td width=\"574\">POST https:\/\/outlook.office365.com\/ews\/odata\/Me\/Drafts\/Messages? MessageDisposition=SendAndSaveCopyAccept: application\/json;odata.metadata=full<\/p>\n<p>Content-Type: application\/json;odata.metadata=full<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Calendar REST API\u00a0 <\/strong><\/p>\n<p>Con el Calendar API vamos a tener acceso tanto\u00a0 a los grupos del Calendario\u00a0 como los propios elementos, desde la propia API se va a poder contestar a Reuniones o Meetings propuestos.<\/p>\n<ul>\n<li><strong>Obtener los grupos de Calendario<\/strong><\/li>\n<\/ul>\n<p>En Outlook y Outlook Web App, los usuarios pueden a\u00f1adir varios calendarios en un solo grupo de calendario. Esto hace que sea m\u00e1s f\u00e1cil para los usuarios ver r\u00e1pidamente todos los calendarios dentro del grupo. Puede acceder a los grupos de calendarios en un buz\u00f3n de correo a trav\u00e9s de la propiedad CalendarGroups en el buz\u00f3n.<\/p>\n<p>El siguiente ejemplo se solicita a todos los grupos de calendario en el buz\u00f3n del usuario autenticado.<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"574\">GET https:\/\/outlook.office365.com\/ews\/odata\/Me\/CalendarGroupsAccept: application\/json<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<ul>\n<li><strong>Obtener los Calendarios<\/strong><\/li>\n<\/ul>\n<p>Se puede acceder a los calendarios a trav\u00e9s de la propiedad \u201cCalendar\u201d, ya sea en el buz\u00f3n o en un grupo de calendarios espec\u00edficos. Tambi\u00e9n puede acceder al calendario predeterminado del usuario a trav\u00e9s de la propiedad Calendar en el buz\u00f3n. El siguiente ejemplo se solicita a todos los calendarios en el buz\u00f3n.<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"574\">GET https:\/\/outlook.office365.com\/ews\/odata\/Me\/CalendarsAccept: application\/json<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<ul>\n<li><strong>Obtener los elementos de un calendario<\/strong><\/li>\n<\/ul>\n<p>Con el Calendar REST API se permite crear, actualizar, eliminar, mover y copiar los elementos del calendario. Tambi\u00e9n puede aceptar, rechazar o aceptar provisionalmente las solicitudes de reuni\u00f3n. Los elementos del calendario se dividen en las siguientes categor\u00edas:<\/p>\n<p>o\u00a0\u00a0 Citas &#8211; Una entrada b\u00e1sica en un calendario que no tiene asistentes. Se puede acceder a las citas a trav\u00e9s de la propiedad Events en un calendario o el buz\u00f3n.<\/p>\n<p>o\u00a0\u00a0 Reuniones &#8211; una cita con los asistentes. Las convocatorias de reuni\u00f3n se env\u00edan cuando se crea una reuni\u00f3n, y los asistentes tendr\u00e1n la posibilidad de aceptar, rechazar o aceptar provisionalmente la solicitud. Se puede acceder a reuniones a trav\u00e9s de la propiedad eventos en un calendario o el buz\u00f3n.<\/p>\n<p>o\u00a0\u00a0 Reuni\u00f3n solicitudes &#8211; un elemento de calendario que se env\u00eda a los asistentes cuando el organizador crea, actualiza o cancela una reuni\u00f3n. Se puede acceder a las solicitudes de reuni\u00f3n a trav\u00e9s de la propiedad de los mensajes en las carpetas o el buz\u00f3n.<\/p>\n<p>Operaciones con la API:<\/p>\n<p>Consultar los elementos del calendario: Mediante la propiedad de Events obtenemos los elementos que tenemos en nuestros calendarios. Adem\u00e1s, de la misma forma que con el mail, al hacer uso de OData es posible utilizar la propiedad \u201cfilter\u201d para filtrar los elementos que se devolver\u00e1n en la respuesta.<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"574\">GET https:\/\/outlook.office365.com\/ews\/odata\/Me\/Calendar\/Events?$filter=Start le 2014-02-14T05:00:00Z and End ge 2014-02-10T05:00:00ZAccept: application\/json<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>Actualizar los elementos: Para actualizar un elemento de calendario, hay que realizar una petici\u00f3n PATCH para la URL del evento. En esta petici\u00f3n hay que incluir un objeto JSON con las propiedades para actualizar. Si actualiza una reuni\u00f3n en la que el usuario es el organizador, se env\u00eda una actualizaci\u00f3n a todos los asistentes. El ejemplo siguiente actualiza la ubicaci\u00f3n de una reuni\u00f3n.<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"574\">PATCH https:\/\/outlook.office365.com\/ews\/odata\/Me\/Calendar\/Events(&#8216;AAMkAGI3&#8230;&#8217;)Accept: application\/json;odata.metadata=full<\/p>\n<p>Content-Type: application\/json;odata.metadata=full<\/p>\n<p>Objeto JSON para actualizar la ubicaci\u00f3n de la reuni\u00f3n<\/p>\n<p>{<\/p>\n<p>\u00abLocation\u00bb: {<\/p>\n<p>\u00abDisplayName\u00bb: \u00abEncamina Canarias\u00bb<\/p>\n<p>}<\/p>\n<p>}<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>Responder a una petici\u00f3n de reuni\u00f3n: Para responder a una petici\u00f3n hay que realizar varios pasos debido a que una Petici\u00f3n de reuni\u00f3n es un Objeto Mensaje y no un objeto Calendario. Por lo que en primer lugar, tendremos que consultar el mensaje. En dicho mensaje tendremos, por un lado en la propiedad\u00a0 \u201cMeetingMessageType\u201d y, en la siguiente propiedad, tendremos un EventID que es el Identificador de la solicitud (posteriormente lo utilizaremos para contestar a dicha solicitud).<\/p>\n<p>Una vez hemos consultado el mensaje y tenemos la informaci\u00f3n relativa al EVENTID podemos enviar una contestaci\u00f3n a dicha convocatoria. Como por ejemplo:<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"574\">POST https:\/\/outlook.office365.com\/ews\/odata\/Me\/Events(&#8216;Identificador&#8217;)\/Accept?MessageDisposition=SendAndSaveCopyAccept: application\/json<\/p>\n<p>Content-Type: application\/json;odata.metadata=full<\/p>\n<p>Expect: 100-continue<\/p>\n<p>&nbsp;<\/p>\n<p>{<\/p>\n<p>\u00abComment\u00bb: \u00abPor mi parte perfecto. Alli estar\u00e9!\u00bb<\/p>\n<p>}<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p><strong>Contact REST API<\/strong><\/p>\n<p>Con la Contact REST API puedes consultar, a\u00f1adir, modificar y eliminar cualquier contacto.<\/p>\n<ul>\n<li><strong>Consultar los Contactos<\/strong><\/li>\n<\/ul>\n<p>Para obtener contactos, enviar una petici\u00f3n GET a la propiedad contactos de la carpeta de contactos. Dentro de la petici\u00f3n se puede utilizar el par\u00e1metro \u201cSelect\u201d para indicar las propiedades que queremos que se devuelvan en la respuesta.<\/p>\n<p>&nbsp;<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"574\">GET https:\/\/outlook.office365.com\/ews\/odata\/Me\/Contacts?$select=DisplayName,EmailAddress1,Birthday,CategoriesAccept: application\/json<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li><strong>Crear un Contacto<\/strong><\/li>\n<\/ul>\n<p>Para a\u00f1adir un contacto, hay que enviar una solicitud POST en la que se env\u00eda un objeto JSON indicando que ese objeto es de tipo Contacto m\u00e1s la representaci\u00f3n del contacto.<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"574\">POST https:\/\/outlook.office365.com\/ews\/odata\/Me\/ContactsAccept: application\/json<\/p>\n<p>Content-Type: application\/json;odata.metadata=full<\/p>\n<p>&nbsp;<\/p>\n<p>{<\/p>\n<p>\u00ab@odata.type\u00bb: \u00ab#Microsoft.Exchange.Services.OData.Model.Contact\u00bb,<\/p>\n<p>\u00abGivenName\u00bb: \u00abSantiago \u00ab,<\/p>\n<p>\u00abSurname\u00bb: \u201cPorras\u00bb,<\/p>\n<p>\u00abEmailAddress1\u00bb: \u00abs.porras@mvp.microsoft.com\u00bb<\/p>\n<p>}<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<ul>\n<li><strong>Actualizar un Contacto<\/strong><\/li>\n<\/ul>\n<p>Para modificar un contacto hay que enviar una solicitud \u201cPATCH\u201d hacia la direcci\u00f3n del contacto y se adjunta un objeto JSON con las propiedades que queremos modificar.<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"574\">PATCH https:\/\/outlook.office365.com\/ews\/odata\/Me\/Contacts(&#8216;sporras@mvp.microsoft.com&#8217;)Accept: application\/json;odata.metadata=full<\/p>\n<p>Content-Type: application\/json;odata.metadata=full<\/p>\n<p>Expect: 100-continue<\/p>\n<p>&nbsp;<\/p>\n<p>{<\/p>\n<p>\u00abBirthday\u00bb: \u00ab1974-07-22\u00bb,<\/p>\n<p>\u00abCategories\u00bb: [<\/p>\n<p>\u00abMVP\u00bb,<\/p>\n<p>\u00abCollege Friend\u00bb,<\/p>\n<p>\u201cUX\u201d,<\/p>\n<p>]<\/p>\n<p>}<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<ul>\n<li><strong>Eliminar un Contacto<\/strong><\/li>\n<\/ul>\n<p>Para eliminar un contacto, enviamos una petici\u00f3n DELETE para la direcci\u00f3n del contacto.<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"574\">DELETE https:\/\/outlook.office365.com\/ews\/odata\/Me\/Contacts(&#8216; sporras@mvp.microsoft.com &#8216;)Accept: application\/json<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Ejemplo: Utilizas estas API\u2019s en una aplicaci\u00f3n ASP NET. MVC <\/strong><\/p>\n<p><strong>Requisitos Previos<\/strong><\/p>\n<ul>\n<li>Visual Studio 2013<\/li>\n<li>Descargar Office 365 API Tools bien directamente desde esta direcci\u00f3n <a href=\"http:\/\/visualstudiogallery.msdn.microsoft.com\/7e947621-ef93-4de7-93d3-d796c43ba34f\">http:\/\/visualstudiogallery.msdn.microsoft.com\/7e947621-ef93-4de7-93d3-d796c43ba34f<\/a> o directamente desde Nuget.<\/li>\n<\/ul>\n<p><strong>Manos a la obra<\/strong><\/p>\n<p>Una vez tenemos instalada las Office 365 API Tools, abrimos Visual Studio, crearnos un proyecto ASP. NET MVC 4 seleccionamos la plantilla WebAPI.<\/p>\n<p>A continuaci\u00f3n, a nuestro proyecto le vamos a a\u00f1adir la conexi\u00f3n a los servicios REST de API 365. Para a\u00f1adirlos, nos dirigimos al Explorador de soluciones, Agregar Servicio conectado tal y como se muestra en la siguiente imagen:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"http:\/\/www.compartimoss.com\/PublishingImages\/Numero20\/Nuevas-API-para-desarrolladores-en-Office-365-Parte-I\/imagen1.png\" alt=\"\" width=\"928\" height=\"542\" \/><\/p>\n<p>Aparecer\u00e1 el Administrador de servicios. Selecciona Office365 e introduce el login de tu cuenta. Una vez autentificado contra el Tenant de Office365 podr\u00e1s ver una lista de tres servicios: Active Directory, Exchange y SharePoint. Inicialmente, la columna Permisos a la derecha de cada servicio estar\u00e1 vac\u00eda. En nuestro ejemplo vamos a seleccionar Exchange. Una vez seleccionado pulsamos Aceptar (Imagen 2).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"http:\/\/www.compartimoss.com\/PublishingImages\/Numero20\/Nuevas-API-para-desarrolladores-en-Office-365-Parte-I\/imagen2.png\" alt=\"\" width=\"856\" height=\"186\" \/><\/p>\n<p>Dado que no est\u00e1n establecidos los permisos, al tratarse de una versi\u00f3n preview, estos se solicitan por pantalla. En nuestro caso, vamos a otorgar todos los permisos para poder ver todas las opciones que vienen incluidas y que hemos visto en este art\u00edculo.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"http:\/\/www.compartimoss.com\/PublishingImages\/Numero20\/Nuevas-API-para-desarrolladores-en-Office-365-Parte-I\/imagen3.png\" alt=\"\" width=\"610\" height=\"425\" \/><\/p>\n<p>Una vez hemos a\u00f1adido la API a nuestro proyecto revisamos la estructura de nuestro proyecto que quedar\u00e1 de la siguiente forma:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"http:\/\/www.compartimoss.com\/PublishingImages\/Numero20\/Nuevas-API-para-desarrolladores-en-Office-365-Parte-I\/imagen4.png\" alt=\"\" width=\"288\" height=\"443\" \/><\/p>\n<p>Tal y como hemos remarcado en la imagen, se han a\u00f1adido dos controladores (ExchangeSampleController, Office365CommonController) 1 modelo (Office365ServiceInfo) y una serie de vistas para poder comprobar la potencia de estas APIs.<\/p>\n<p>Si analizamos los ficheros que se han a\u00f1adido:<\/p>\n<ul>\n<li>Office365ServiceInfo: En esta clase disponemos del modelo que se utiliza para obtener la informaci\u00f3n para cada una de las APIs, para el caso de Exchange tendremos la siguiente informaci\u00f3n:<\/li>\n<\/ul>\n<p>ResourceId = \u00abhttps:\/\/outlook.office365.com\/\u00bb;<\/p>\n<p>ApiEndpoint = \u00abhttps:\/\/outlook.office365.com\/ews\/odata\u00bb;<\/p>\n<p>AccessToken = Office365CommonController.GetAccessToken(ResourceId);<\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li>Office365CommonControler: Se implementa un controlador com\u00fan para manejar la autenticaci\u00f3n y el control de errores sobre las peticiones al Tenant de Office365. Adem\u00e1s disponemos de diversos m\u00e9todos, como por ejemplo, para obtener el token el usuario que esta logado en este momento e incluso para eliminar esta informaci\u00f3n del navegador (para evitar que nos puedan robar las credenciales y suplantarnos la identidad)<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul>\n<li>ExchangeSampleController: Dentro del controlador de Exchange por un lado tendremos una serie de Clases: Calendario, Contactos, Mail para poder mapear el objeto JSON que nos devuelve la API en Clases .NET y poder mostrarlo en la vista. Por otro lado, dentro de este controlador tendremos tres m\u00e9todos para obtener el Calendario, el Mail y los Contactos. Estos m\u00e9todos no son m\u00e1s que peticiones HTTP a la API Rest correspondiente.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul>\n<li>Ficheros de Vistas: En estos ficheros est\u00e1n las vistas RAZOR para representar los datos obtenidos en las distintas peticiones a las API\u2019s de Exchange<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>Una vez analizado el c\u00f3digo a\u00f1adido, vamos a modificar el controlador por defecto, para ello dentro de nuestra soluci\u00f3n nos dirigimos a\u00a0 la Carpeta \u201cApp_Start\u201d, editamos el fichero RouteConfig.cs. En esta clase tan solo tiene un m\u00e9todo \u201cRegisterRoutes\u201d, \u00a0en el mismo modificamos el controlador \u00a0por defecto, en nuestro caso \u201cExchangeSample\u201d, quedando de la siguiente forma:<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"574\">public\u00a0static\u00a0void\u00a0RegisterRoutes(RouteCollection\u00a0routes)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0routes.IgnoreRoute(\u00ab{resource}.axd\/{*pathInfo}\u00bb);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0routes.MapRoute(\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0name:\u00a0\u00abDefault\u00bb,\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0url:\u00a0\u00ab{controller}\/{action}\/{id}\u00bb,\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0defaults:\u00a0new\u00a0{\u00a0controller\u00a0=\u00a0\u00abExchangeSample\u00bb,\u00a0action\u00a0=\u00a0\u00abIndex\u00bb,\u00a0id\u00a0=\u00a0UrlParameter.Optional\u00a0}\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>Una vez realizada esta modificaci\u00f3n, compilamos la soluci\u00f3n y si todo ha ido correctamente visualizaremos la imagen 5<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"http:\/\/www.compartimoss.com\/PublishingImages\/Numero20\/Nuevas-API-para-desarrolladores-en-Office-365-Parte-I\/imagen5.png\" alt=\"\" width=\"568\" height=\"156\" \/><\/p>\n<p>Al pulsar sobre cada opci\u00f3n: Calendar, Mail o Contact, se mostrar\u00e1n las distintas vistas a\u00f1adidas donde visualizamos la informaci\u00f3n solicitada a la API correspondiente.<\/p>\n<p>Dejo a la curiosidad de los lectores, a\u00f1adir muchas m\u00e1s funcionalidades a este ejemplo base, como las operaciones CRUD sobre Calendar, Mail o Contacts.<\/p>\n<p><strong>Conclusi\u00f3n<\/strong><\/p>\n<p>Office 365 es una plataforma que est\u00e1 creciendo cada vez m\u00e1s. Microsoft, como ha anunciado bastante en el \u00faltimo a\u00f1o, piensa que el futuro es el \u201cCLOUD\u201d y que m\u00e1s pronto que tarde todas las empresas dar\u00e1n el salto. Personalmente, creo que hay productos que a\u00fan les falta cierta evoluci\u00f3n para que las empresas se planteen dar el salto completo a la nube. Pero con novedades como las presentadas en las Vegas, entre las que se encuentran estas API\u2019s, cada vez hacen que la alternativa del cloud sea una opci\u00f3n m\u00e1s seria y m\u00e1s viable para las empresas.<\/p>\n<p>El poder utilizar las API\u2019s desde aplicaciones fuera del entorno Office 365, es un gran adelanto y algo que facilitar\u00e1 la adopci\u00f3n de la plataforma. Hoy en d\u00eda, hay muchas empresas que requieren de aplicaciones para el env\u00edo de mails, para consultar informaci\u00f3n de Active Directory, o incluso gestionar calendarios entre los integrantes de su organizaci\u00f3n. Ahora mismo, \u00a0el obtener esta informaci\u00f3n mediante desarrollo es muy complejo y para solventar este inconveniente se planteaban escenarios h\u00edbridos. Pero esta soluci\u00f3n es m\u00e1s cara y en algunos escenarios no dispones ni de las ventajas del cloud ni las ventajas de tus infraestructuras. Con estas API\u2019s todos estos requerimientos se podr\u00e1n abordar de una forma simple y transparente.<\/p>\n<p>En el siguiente n\u00famero de CompartiMOSS desgranaremos las opciones que dispondremos para facilitar el trabajo con ficheros y carpetas en SharePoint\/OneDrive como con el Active Directory.<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content --><span class=\"et_bloom_bottom_trigger\"><\/span>","protected":false},"excerpt":{"rendered":"<p>Como cada tres meses, acaba de ver a luz un nuevo n\u00famero de la revista digital CompartiMOSS. En dicho n\u00famero he colaborado con un art\u00edculo introduciendo las nuevas API&#8217;s para desarrolladores en Office 365. En este nuevo n\u00famero ENCAMINA ha &hellip; <a href=\"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/compartimoss-20-nuevas-apis-para-desarrolladores-en-office-365-parte\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":8,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[113],"tags":[114,60,38],"class_list":["post-1304","post","type-post","status-publish","format-standard","hentry","category-office-365-2","tag-apis","tag-compartimoss","tag-office-365"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v18.2.1 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Compartimoss 20 Nuevas API\u2019s para desarrolladores en Office 365 Parte I  - Desarrollando sobre SharePoint<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/compartimoss-20-nuevas-apis-para-desarrolladores-en-office-365-parte\/\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Compartimoss 20 Nuevas API\u2019s para desarrolladores en Office 365 Parte I  - Desarrollando sobre SharePoint\" \/>\n<meta name=\"twitter:description\" content=\"Como cada tres meses, acaba de ver a luz un nuevo n\u00famero de la revista digital CompartiMOSS. En dicho n\u00famero he colaborado con un art\u00edculo introduciendo las nuevas API&#8217;s para desarrolladores en Office 365. En este nuevo n\u00famero ENCAMINA ha &hellip; Continue reading &rarr;\" \/>\n<meta name=\"twitter:image\" content=\"http:\/\/www.compartimoss.com\/PublishingImages\/Numero20\/Nuevas-API-para-desarrolladores-en-Office-365-Parte-I\/imagen1.png\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Adri\u00e1n D\u00edaz\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/compartimoss-20-nuevas-apis-para-desarrolladores-en-office-365-parte\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/compartimoss-20-nuevas-apis-para-desarrolladores-en-office-365-parte\\\/\"},\"author\":{\"name\":\"Adri\u00e1n D\u00edaz\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\"},\"headline\":\"Compartimoss 20 Nuevas API\u2019s para desarrolladores en Office 365 Parte I\",\"datePublished\":\"2014-06-17T09:00:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/compartimoss-20-nuevas-apis-para-desarrolladores-en-office-365-parte\\\/\"},\"wordCount\":3235,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/compartimoss-20-nuevas-apis-para-desarrolladores-en-office-365-parte\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/www.compartimoss.com\\\/PublishingImages\\\/Numero20\\\/Nuevas-API-para-desarrolladores-en-Office-365-Parte-I\\\/imagen1.png\",\"keywords\":[\"apis\",\"compartimoss\",\"office 365\"],\"articleSection\":[\"Office 365\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/compartimoss-20-nuevas-apis-para-desarrolladores-en-office-365-parte\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/compartimoss-20-nuevas-apis-para-desarrolladores-en-office-365-parte\\\/\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/compartimoss-20-nuevas-apis-para-desarrolladores-en-office-365-parte\\\/\",\"name\":\"Compartimoss 20 Nuevas API\u2019s para desarrolladores en Office 365 Parte I - Desarrollando sobre SharePoint\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/compartimoss-20-nuevas-apis-para-desarrolladores-en-office-365-parte\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/compartimoss-20-nuevas-apis-para-desarrolladores-en-office-365-parte\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/www.compartimoss.com\\\/PublishingImages\\\/Numero20\\\/Nuevas-API-para-desarrolladores-en-Office-365-Parte-I\\\/imagen1.png\",\"datePublished\":\"2014-06-17T09:00:05+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/compartimoss-20-nuevas-apis-para-desarrolladores-en-office-365-parte\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/compartimoss-20-nuevas-apis-para-desarrolladores-en-office-365-parte\\\/#primaryimage\",\"url\":\"http:\\\/\\\/www.compartimoss.com\\\/PublishingImages\\\/Numero20\\\/Nuevas-API-para-desarrolladores-en-Office-365-Parte-I\\\/imagen1.png\",\"contentUrl\":\"http:\\\/\\\/www.compartimoss.com\\\/PublishingImages\\\/Numero20\\\/Nuevas-API-para-desarrolladores-en-Office-365-Parte-I\\\/imagen1.png\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#website\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/\",\"name\":\"Desarrollando sobre SharePoint\",\"description\":\"Arquitectura, buenas pr\u00e1cticas y desarrollo sobre la nueva herramienta de Microsoft SharePoint 2016\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\",\"name\":\"Adri\u00e1n D\u00edaz\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g\",\"caption\":\"Adri\u00e1n D\u00edaz\"},\"description\":\"Adri\u00e1n D\u00edaz es Ingeniero Inform\u00e1tico por la Universidad Polit\u00e9cnica de Valencia. Es MVP de Microsoft en la categor\u00eda Office Development desde 2014, MCPD de SharePoint 2010, Microsoft Active Profesional y Microsoft Comunity Contribuitor 2012. Cofundador del grupo de usuarios de SharePoint de Levante LevaPoint. Lleva desarrollando con tecnolog\u00edas Microsoft m\u00e1s de 10 a\u00f1os y desde hace 3 a\u00f1os est\u00e1 centrado en el desarrollo sobre SharePoint. Actualmente es Software &amp; Cloud Architect Lead en ENCAMINA.\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/author\\\/desarrollandosobresharepoint\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Compartimoss 20 Nuevas API\u2019s para desarrolladores en Office 365 Parte I  - Desarrollando sobre SharePoint","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/compartimoss-20-nuevas-apis-para-desarrolladores-en-office-365-parte\/","twitter_card":"summary_large_image","twitter_title":"Compartimoss 20 Nuevas API\u2019s para desarrolladores en Office 365 Parte I  - Desarrollando sobre SharePoint","twitter_description":"Como cada tres meses, acaba de ver a luz un nuevo n\u00famero de la revista digital CompartiMOSS. En dicho n\u00famero he colaborado con un art\u00edculo introduciendo las nuevas API&#8217;s para desarrolladores en Office 365. En este nuevo n\u00famero ENCAMINA ha &hellip; Continue reading &rarr;","twitter_image":"http:\/\/www.compartimoss.com\/PublishingImages\/Numero20\/Nuevas-API-para-desarrolladores-en-Office-365-Parte-I\/imagen1.png","twitter_misc":{"Escrito por":"Adri\u00e1n D\u00edaz","Tiempo de lectura":"16 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/compartimoss-20-nuevas-apis-para-desarrolladores-en-office-365-parte\/#article","isPartOf":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/compartimoss-20-nuevas-apis-para-desarrolladores-en-office-365-parte\/"},"author":{"name":"Adri\u00e1n D\u00edaz","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb"},"headline":"Compartimoss 20 Nuevas API\u2019s para desarrolladores en Office 365 Parte I","datePublished":"2014-06-17T09:00:05+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/compartimoss-20-nuevas-apis-para-desarrolladores-en-office-365-parte\/"},"wordCount":3235,"commentCount":0,"image":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/compartimoss-20-nuevas-apis-para-desarrolladores-en-office-365-parte\/#primaryimage"},"thumbnailUrl":"http:\/\/www.compartimoss.com\/PublishingImages\/Numero20\/Nuevas-API-para-desarrolladores-en-Office-365-Parte-I\/imagen1.png","keywords":["apis","compartimoss","office 365"],"articleSection":["Office 365"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/compartimoss-20-nuevas-apis-para-desarrolladores-en-office-365-parte\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/compartimoss-20-nuevas-apis-para-desarrolladores-en-office-365-parte\/","url":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/compartimoss-20-nuevas-apis-para-desarrolladores-en-office-365-parte\/","name":"Compartimoss 20 Nuevas API\u2019s para desarrolladores en Office 365 Parte I - Desarrollando sobre SharePoint","isPartOf":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/compartimoss-20-nuevas-apis-para-desarrolladores-en-office-365-parte\/#primaryimage"},"image":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/compartimoss-20-nuevas-apis-para-desarrolladores-en-office-365-parte\/#primaryimage"},"thumbnailUrl":"http:\/\/www.compartimoss.com\/PublishingImages\/Numero20\/Nuevas-API-para-desarrolladores-en-Office-365-Parte-I\/imagen1.png","datePublished":"2014-06-17T09:00:05+00:00","author":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/compartimoss-20-nuevas-apis-para-desarrolladores-en-office-365-parte\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/compartimoss-20-nuevas-apis-para-desarrolladores-en-office-365-parte\/#primaryimage","url":"http:\/\/www.compartimoss.com\/PublishingImages\/Numero20\/Nuevas-API-para-desarrolladores-en-Office-365-Parte-I\/imagen1.png","contentUrl":"http:\/\/www.compartimoss.com\/PublishingImages\/Numero20\/Nuevas-API-para-desarrolladores-en-Office-365-Parte-I\/imagen1.png"},{"@type":"WebSite","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#website","url":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/","name":"Desarrollando sobre SharePoint","description":"Arquitectura, buenas pr\u00e1cticas y desarrollo sobre la nueva herramienta de Microsoft SharePoint 2016","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb","name":"Adri\u00e1n D\u00edaz","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g","caption":"Adri\u00e1n D\u00edaz"},"description":"Adri\u00e1n D\u00edaz es Ingeniero Inform\u00e1tico por la Universidad Polit\u00e9cnica de Valencia. Es MVP de Microsoft en la categor\u00eda Office Development desde 2014, MCPD de SharePoint 2010, Microsoft Active Profesional y Microsoft Comunity Contribuitor 2012. Cofundador del grupo de usuarios de SharePoint de Levante LevaPoint. Lleva desarrollando con tecnolog\u00edas Microsoft m\u00e1s de 10 a\u00f1os y desde hace 3 a\u00f1os est\u00e1 centrado en el desarrollo sobre SharePoint. Actualmente es Software &amp; Cloud Architect Lead en ENCAMINA.","url":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/author\/desarrollandosobresharepoint\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/posts\/1304","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/comments?post=1304"}],"version-history":[{"count":0,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/posts\/1304\/revisions"}],"wp:attachment":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/media?parent=1304"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/categories?post=1304"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/tags?post=1304"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}