SlideShare a Scribd company logo
1 of 13
Download to read offline
CalDAV

Quickly presenting RFC4791
Agenda

–   CalDAV
–   Storing and getting events
–   Multiple calendars
–   Queries
–   Calendar Infos
–   Sharing and ACL
–   Scheduling
CalDAV?

CalDAV aka RFC4791 was created to provide a standard
protocol for store and retrieve events.

It's implemented by:
Google,
Apple,
Oracle
Bedework (Rensealer Politechnic Institute)
OSAF (OpenSource Apps Foundation)
Zimbra
CalDAV

It is based on WebDAV, an extension of HTTP.

Inherites HTTP advantages
Support access control thru WebDAV ACL
Has methods for query events
Use ETAGS to speed sync
Storing and getting

Events are stored in files and folders.

Files are named Resource.

Each resource has a unique uid,
that's usually the resource name
Storing and Getting
• Basic actions/method

       METHOD                        ACTIONS
  GET             Retrieve an event
  PUT             Put an event on server
  DEL             Remove event or collection (folder) from server
  HEAD            Check existence / Get ETAG for a given event
  REPORT          Query for events by UID, LOCATION,
                  SUMMARY...
  PROPFIND        Check resource property, permissions...
  ACL             Set acl
  OPTIONS         Check which actions can be made on a resource
Storing and getting - GET
• GET
  – Retrieves an event GET /user/calendar/myevent.ics
  – Returns the ETAG too (eg. “123124321524-1”)
  – ETAG is a string used for versioning the event: when
    myevent.ics changes, the ETAG is modified
• HEAD
  – Retrieves the ETAG only, or an error if event is not
    found
Storing and getting - PUT
• PUT
  – Used for creating and update
  – Put an event PUT
    /user/calendar/myevent.ics
  – Returns the ETAG too (eg.
    “123124321524-2”)
  – Thru ETAG is possible to change PUT
    behaviour (create or update)
Storing and getting – PUT 2
• PUT
    comando            header                azione                         errori
 PUT              If-none-matches: * Crea la risorsa          Se una risorsa esiste con lo
 /user/myfile.ics                    specificata se           stesso nome, viene restituito
                                     nessun'altra risorsa è   l'errore PRECONDITION
                                     presente a               FAILED, poiché if-none-
                                     quell'indirizzo, usato   matches indica che la pre-
                                     per creare una nuova     condizione per fare il PUT è
                                     risorsa sul server.      che nessuna risorsa
                                                              corrisponda a quella che
                                                              vogliamo creare
 PUT              If-matches:        Invia la risorsa         PRECONDITION FAILED
 /user/myfile.ics “12312312-1”       specificata              viene restituito se la risorsa
                                     solamente se è già       non esiste. Infatti potrebbe
                                     presente una risorsa     accadere che il file che
                                     allo stesso indirizzo,   vogliamo aggiornare sia
                                     e la versione di tale    cambiato sul server e sia
                                     risorsa ha ETAG          diverso da quello che ci
                                     “12312312-1”             aspettiamo
Storing and getting - DEL
• DEL
  – Removes a resource (event or collection)
    from server
  – DEL /user/calendar/myevent.ics
• MKCALENDAR
  – Create a calendar collection (folder) on
    server
Querying - REPORT
• REPORT
  – Used for querying events in a collection
  – eg. REPORT /user/calendar/
  – REPORT body is an XML query describing
    the events we are looking for
     • By UID, LOCATION, DESCRIPTION,..
     • By time-range (events starting/ending)
       within a given time-frame
Querying - REPORT
                                                                         Filter events
                                                       HTTP header
REPORT /bernard/work/ HTTP/1.1                                                             <C:filter>
 Host: cal.example.com                                                       Get            <C:comp-filter name="VCALENDAR">
 Depth: 1
 Content-Type: application/xml; charset="utf-8"        We're making a      VCALENDARs        <C:comp-filter name="VEVENT">
 Content-Length: xxxx                                  query. <prop>         containing
                                                                                               <C:time-range start="20060104T000000Z"
                                                                             VEVENTs
                                                       describes data    that START/END                  end="20060105T000000Z"/>
                                                       we're asking at        between
 <?xml version="1.0" encoding="utf-8" ?>                                                     </C:comp-filter>
                                                           server             04.01.06
 <C:calendar-query xmlns:D="DAV:"                                               and
                                                                                            </C:comp-filter>
                                                                              05.01.06
            xmlns:C="urn:ietf:params:xml:ns:caldav">                                       </C:filter>
  <D:prop>
                                                                                          </C:calendar-query>
   <D:getetag/>
   <C:calendar-data>
    <C:comp name="VCALENDAR">
                                             Describe data we
      <C:prop name="VERSION"/>
                                             want to retrieve:
      <C:comp name="VEVENT">
                                             BEGIN:VCALENDAR
       <C:prop name="SUMMARY"/>              VERSION:2.0
                                             BEGIN:VEVENT
       <C:prop name="UID"/>                  UID:XXXX
      </C:comp>                              SUMMARY:XXXX
                                             BEGIN:VTIMEZONE
      <C:comp name="VTIMEZONE"/>             ...
                                             END:VTIMEZONE
    </C:comp>
   </C:calendar-data>
  </D:prop>
Sharing - ACL
• PROPFIND method provides a way to get
  ACLs from a calendar resource / collection
• ACLs are defined as in WebDAV with some
  CalDAV specific permissions                                                                                        A “user” principal is defined by an
                                                                                                                     http URL provided by the server
  Query                               Description           XML representation
  PROPFIND /caluser1/calendar/ Query for ACL defined <acl>
  <D:propfind xmlns:D="DAV:">                              <ace>
      <D:prop>                                              <principal> <property> <owner/> </property> </principal>
           <D:acl/>                                         <grant> <all/> </grant>
      </D:prop>                                             <inherited> <href>/user</href> </inherited>              This ACL is inherited by upper
                      A principal is a special entity
  </D:propfind>       defined on server. It can be a user,
                                                           </ace>                                                    folder /user
                      a group or a “property” defined on   <ace>
                      server. In this case we use the       <principal><href>/ucaldav/principals/users/caluser1</href></principal>
                      “owner” property defined on the       <grant> <all/> </grant>
                      server                               </ace>
                                                           <ace>
                                                            <principal> <authenticated/> </principal>
                                                            <grant> <ns1:read-free-busy/> <ns1:schedule/> </grant>
                  These privileges are CalDAV               <inherited> <href>/user</href> </inherited>
                  specific: allows                         </ace>
                  •to see free-busy of given user          </acl>
                    •to invite him to a meeting

More Related Content

What's hot

Mid term &amp; final- preparation- student-review(Oracle)
Mid term &amp; final- preparation- student-review(Oracle)Mid term &amp; final- preparation- student-review(Oracle)
Mid term &amp; final- preparation- student-review(Oracle)than sare
 
Get database properties using power shell in sql server 2008 techrepublic
Get database properties using power shell in sql server 2008   techrepublicGet database properties using power shell in sql server 2008   techrepublic
Get database properties using power shell in sql server 2008 techrepublicKaing Menglieng
 
Les 11 Fb Queries
Les 11 Fb QueriesLes 11 Fb Queries
Les 11 Fb Queriesvivaankumar
 
the Spring 4 update
the Spring 4 updatethe Spring 4 update
the Spring 4 updateJoshua Long
 
UNIT-3 Servlet
UNIT-3 ServletUNIT-3 Servlet
UNIT-3 Servletssbd6985
 
Spring review_for Semester II of Year 4
Spring review_for Semester II of Year 4Spring review_for Semester II of Year 4
Spring review_for Semester II of Year 4than sare
 
Spring boot for buidling microservices
Spring boot for buidling microservicesSpring boot for buidling microservices
Spring boot for buidling microservicesNilanjan Roy
 
Les 10 Tune Rman
Les 10 Tune RmanLes 10 Tune Rman
Les 10 Tune Rmanvivaankumar
 
SP Rest API Documentation
SP Rest API DocumentationSP Rest API Documentation
SP Rest API DocumentationIT Industry
 
Detect and fix the azure sql resources which uses tls version less than 1.2
Detect and fix the azure sql resources which uses tls version less than 1.2Detect and fix the azure sql resources which uses tls version less than 1.2
Detect and fix the azure sql resources which uses tls version less than 1.2Prancer Io
 
Running ms sql stored procedures in mule
Running ms sql stored procedures in muleRunning ms sql stored procedures in mule
Running ms sql stored procedures in muleAnilKumar Etagowni
 
Step by Step Restore rman to different host
Step by Step Restore rman to different hostStep by Step Restore rman to different host
Step by Step Restore rman to different hostOsama Mustafa
 
Les 02 Config Rec
Les 02 Config RecLes 02 Config Rec
Les 02 Config Recvivaankumar
 

What's hot (20)

Mid term &amp; final- preparation- student-review(Oracle)
Mid term &amp; final- preparation- student-review(Oracle)Mid term &amp; final- preparation- student-review(Oracle)
Mid term &amp; final- preparation- student-review(Oracle)
 
Get database properties using power shell in sql server 2008 techrepublic
Get database properties using power shell in sql server 2008   techrepublicGet database properties using power shell in sql server 2008   techrepublic
Get database properties using power shell in sql server 2008 techrepublic
 
Les 11 Fb Queries
Les 11 Fb QueriesLes 11 Fb Queries
Les 11 Fb Queries
 
Les 07 Rman Rec
Les 07 Rman RecLes 07 Rman Rec
Les 07 Rman Rec
 
the Spring 4 update
the Spring 4 updatethe Spring 4 update
the Spring 4 update
 
UNIT-3 Servlet
UNIT-3 ServletUNIT-3 Servlet
UNIT-3 Servlet
 
Mule caching strategy with redis cache
Mule caching strategy with redis cacheMule caching strategy with redis cache
Mule caching strategy with redis cache
 
Spring review_for Semester II of Year 4
Spring review_for Semester II of Year 4Spring review_for Semester II of Year 4
Spring review_for Semester II of Year 4
 
Spring boot for buidling microservices
Spring boot for buidling microservicesSpring boot for buidling microservices
Spring boot for buidling microservices
 
Les 03 Catalog
Les 03 CatalogLes 03 Catalog
Les 03 Catalog
 
Database upgradation
Database upgradationDatabase upgradation
Database upgradation
 
Les 10 Tune Rman
Les 10 Tune RmanLes 10 Tune Rman
Les 10 Tune Rman
 
SP Rest API Documentation
SP Rest API DocumentationSP Rest API Documentation
SP Rest API Documentation
 
Les 09 Tspitr
Les 09 TspitrLes 09 Tspitr
Les 09 Tspitr
 
URLProtocol
URLProtocolURLProtocol
URLProtocol
 
Detect and fix the azure sql resources which uses tls version less than 1.2
Detect and fix the azure sql resources which uses tls version less than 1.2Detect and fix the azure sql resources which uses tls version less than 1.2
Detect and fix the azure sql resources which uses tls version less than 1.2
 
Servlets
ServletsServlets
Servlets
 
Running ms sql stored procedures in mule
Running ms sql stored procedures in muleRunning ms sql stored procedures in mule
Running ms sql stored procedures in mule
 
Step by Step Restore rman to different host
Step by Step Restore rman to different hostStep by Step Restore rman to different host
Step by Step Restore rman to different host
 
Les 02 Config Rec
Les 02 Config RecLes 02 Config Rec
Les 02 Config Rec
 

Viewers also liked

Git gestione comoda del repository
Git   gestione comoda del repositoryGit   gestione comoda del repository
Git gestione comoda del repositoryRoberto Polli
 
Pysmbc Python C Modules are Easy
Pysmbc Python C Modules are EasyPysmbc Python C Modules are Easy
Pysmbc Python C Modules are EasyRoberto Polli
 
Servizi di messaging & collaboration in mobilità: Il panorama open source
Servizi di messaging & collaboration in mobilità: Il panorama open sourceServizi di messaging & collaboration in mobilità: Il panorama open source
Servizi di messaging & collaboration in mobilità: Il panorama open sourceRoberto Polli
 
Linux e OpenSource - una introduzione politica
Linux e OpenSource - una introduzione politicaLinux e OpenSource - una introduzione politica
Linux e OpenSource - una introduzione politicaRoberto Polli
 
Testing with my sql embedded
Testing with my sql embeddedTesting with my sql embedded
Testing with my sql embeddedRoberto Polli
 
Test Drive Deployment with python and nosetest
Test Drive Deployment with python and nosetestTest Drive Deployment with python and nosetest
Test Drive Deployment with python and nosetestRoberto Polli
 
Scaling mysql with python (and Docker).
Scaling mysql with python (and Docker).Scaling mysql with python (and Docker).
Scaling mysql with python (and Docker).Roberto Polli
 

Viewers also liked (7)

Git gestione comoda del repository
Git   gestione comoda del repositoryGit   gestione comoda del repository
Git gestione comoda del repository
 
Pysmbc Python C Modules are Easy
Pysmbc Python C Modules are EasyPysmbc Python C Modules are Easy
Pysmbc Python C Modules are Easy
 
Servizi di messaging & collaboration in mobilità: Il panorama open source
Servizi di messaging & collaboration in mobilità: Il panorama open sourceServizi di messaging & collaboration in mobilità: Il panorama open source
Servizi di messaging & collaboration in mobilità: Il panorama open source
 
Linux e OpenSource - una introduzione politica
Linux e OpenSource - una introduzione politicaLinux e OpenSource - una introduzione politica
Linux e OpenSource - una introduzione politica
 
Testing with my sql embedded
Testing with my sql embeddedTesting with my sql embedded
Testing with my sql embedded
 
Test Drive Deployment with python and nosetest
Test Drive Deployment with python and nosetestTest Drive Deployment with python and nosetest
Test Drive Deployment with python and nosetest
 
Scaling mysql with python (and Docker).
Scaling mysql with python (and Docker).Scaling mysql with python (and Docker).
Scaling mysql with python (and Docker).
 

Similar to Presenting CalDAV (draft 1)

UEMB200: Next Generation of Endpoint Management Architecture and Discovery Se...
UEMB200: Next Generation of Endpoint Management Architecture and Discovery Se...UEMB200: Next Generation of Endpoint Management Architecture and Discovery Se...
UEMB200: Next Generation of Endpoint Management Architecture and Discovery Se...Ivanti
 
CouchDB : More Couch
CouchDB : More CouchCouchDB : More Couch
CouchDB : More Couchdelagoya
 
Taming the Cloud Database with Apache jclouds, ApacheCon Europe 2014
Taming the Cloud Database with Apache jclouds, ApacheCon Europe 2014Taming the Cloud Database with Apache jclouds, ApacheCon Europe 2014
Taming the Cloud Database with Apache jclouds, ApacheCon Europe 2014zshoylev
 
AAI-3218 Production Deployment Best Practices for WebSphere Liberty Profile
AAI-3218 Production Deployment Best Practices for WebSphere Liberty ProfileAAI-3218 Production Deployment Best Practices for WebSphere Liberty Profile
AAI-3218 Production Deployment Best Practices for WebSphere Liberty ProfileWASdev Community
 
JavaOne 2014: Taming the Cloud Database with jclouds
JavaOne 2014: Taming the Cloud Database with jcloudsJavaOne 2014: Taming the Cloud Database with jclouds
JavaOne 2014: Taming the Cloud Database with jcloudszshoylev
 
Coldbox developer training – session 5
Coldbox developer training – session 5Coldbox developer training – session 5
Coldbox developer training – session 5Billie Berzinskas
 
Couchdb: No SQL? No driver? No problem
Couchdb: No SQL? No driver? No problemCouchdb: No SQL? No driver? No problem
Couchdb: No SQL? No driver? No problemdelagoya
 
Play Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and ScalaPlay Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and ScalaYevgeniy Brikman
 
Scale Your Data Tier with Windows Server AppFabric
Scale Your Data Tier with Windows Server AppFabricScale Your Data Tier with Windows Server AppFabric
Scale Your Data Tier with Windows Server AppFabricWim Van den Broeck
 
[Laptrinh.vn] lap trinh Spring Framework 3
[Laptrinh.vn] lap trinh Spring Framework 3[Laptrinh.vn] lap trinh Spring Framework 3
[Laptrinh.vn] lap trinh Spring Framework 3Huu Dat Nguyen
 
Integrating Bedework, a CalDAV Calendar Server, into OAE
Integrating Bedework, a CalDAV Calendar Server, into OAEIntegrating Bedework, a CalDAV Calendar Server, into OAE
Integrating Bedework, a CalDAV Calendar Server, into OAEctweney
 
Automating your Infrastructure Deployment with AWS CloudFormation and AWS Ops...
Automating your Infrastructure Deployment with AWS CloudFormation and AWS Ops...Automating your Infrastructure Deployment with AWS CloudFormation and AWS Ops...
Automating your Infrastructure Deployment with AWS CloudFormation and AWS Ops...Amazon Web Services
 
Spring Live Sample Chapter
Spring Live Sample ChapterSpring Live Sample Chapter
Spring Live Sample ChapterSyed Shahul
 

Similar to Presenting CalDAV (draft 1) (20)

UEMB200: Next Generation of Endpoint Management Architecture and Discovery Se...
UEMB200: Next Generation of Endpoint Management Architecture and Discovery Se...UEMB200: Next Generation of Endpoint Management Architecture and Discovery Se...
UEMB200: Next Generation of Endpoint Management Architecture and Discovery Se...
 
CouchDB : More Couch
CouchDB : More CouchCouchDB : More Couch
CouchDB : More Couch
 
Taming the Cloud Database with Apache jclouds, ApacheCon Europe 2014
Taming the Cloud Database with Apache jclouds, ApacheCon Europe 2014Taming the Cloud Database with Apache jclouds, ApacheCon Europe 2014
Taming the Cloud Database with Apache jclouds, ApacheCon Europe 2014
 
Maven
MavenMaven
Maven
 
Maven
MavenMaven
Maven
 
AAI-3218 Production Deployment Best Practices for WebSphere Liberty Profile
AAI-3218 Production Deployment Best Practices for WebSphere Liberty ProfileAAI-3218 Production Deployment Best Practices for WebSphere Liberty Profile
AAI-3218 Production Deployment Best Practices for WebSphere Liberty Profile
 
Google App Engine
Google App EngineGoogle App Engine
Google App Engine
 
Maven in Mule
Maven in MuleMaven in Mule
Maven in Mule
 
JavaOne 2014: Taming the Cloud Database with jclouds
JavaOne 2014: Taming the Cloud Database with jcloudsJavaOne 2014: Taming the Cloud Database with jclouds
JavaOne 2014: Taming the Cloud Database with jclouds
 
Coldbox developer training – session 5
Coldbox developer training – session 5Coldbox developer training – session 5
Coldbox developer training – session 5
 
Couchdb: No SQL? No driver? No problem
Couchdb: No SQL? No driver? No problemCouchdb: No SQL? No driver? No problem
Couchdb: No SQL? No driver? No problem
 
Refreshing mule cache using oracle database change notification
Refreshing mule cache using oracle database change notificationRefreshing mule cache using oracle database change notification
Refreshing mule cache using oracle database change notification
 
Play Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and ScalaPlay Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and Scala
 
Scale Your Data Tier with Windows Server AppFabric
Scale Your Data Tier with Windows Server AppFabricScale Your Data Tier with Windows Server AppFabric
Scale Your Data Tier with Windows Server AppFabric
 
[Laptrinh.vn] lap trinh Spring Framework 3
[Laptrinh.vn] lap trinh Spring Framework 3[Laptrinh.vn] lap trinh Spring Framework 3
[Laptrinh.vn] lap trinh Spring Framework 3
 
Google app engine by example
Google app engine by exampleGoogle app engine by example
Google app engine by example
 
Integrating Bedework, a CalDAV Calendar Server, into OAE
Integrating Bedework, a CalDAV Calendar Server, into OAEIntegrating Bedework, a CalDAV Calendar Server, into OAE
Integrating Bedework, a CalDAV Calendar Server, into OAE
 
Automating your Infrastructure Deployment with AWS CloudFormation and AWS Ops...
Automating your Infrastructure Deployment with AWS CloudFormation and AWS Ops...Automating your Infrastructure Deployment with AWS CloudFormation and AWS Ops...
Automating your Infrastructure Deployment with AWS CloudFormation and AWS Ops...
 
Spring Live Sample Chapter
Spring Live Sample ChapterSpring Live Sample Chapter
Spring Live Sample Chapter
 
Maven
MavenMaven
Maven
 

More from Roberto Polli

Ratelimit Headers for HTTP
Ratelimit Headers for HTTPRatelimit Headers for HTTP
Ratelimit Headers for HTTPRoberto Polli
 
Interoperability rules for an European API ecosystem: do we still need SOAP?
Interoperability rules for an European API ecosystem: do we still need SOAP?Interoperability rules for an European API ecosystem: do we still need SOAP?
Interoperability rules for an European API ecosystem: do we still need SOAP?Roberto Polli
 
Docker - virtualizzazione leggera
Docker - virtualizzazione leggeraDocker - virtualizzazione leggera
Docker - virtualizzazione leggeraRoberto Polli
 
Just one-shade-of-openstack
Just one-shade-of-openstackJust one-shade-of-openstack
Just one-shade-of-openstackRoberto Polli
 
Tox as project descriptor.
Tox as project descriptor.Tox as project descriptor.
Tox as project descriptor.Roberto Polli
 
Python for System Administrators
Python for System AdministratorsPython for System Administrators
Python for System AdministratorsRoberto Polli
 
Orchestrating MySQL with Python and Docker
Orchestrating MySQL with Python and DockerOrchestrating MySQL with Python and Docker
Orchestrating MySQL with Python and DockerRoberto Polli
 
Statistics 101 for System Administrators
Statistics 101 for System AdministratorsStatistics 101 for System Administrators
Statistics 101 for System AdministratorsRoberto Polli
 
Will iPython replace bash?
Will iPython replace bash?Will iPython replace bash?
Will iPython replace bash?Roberto Polli
 
Funambol al Linux Day 2009
Funambol al Linux Day 2009Funambol al Linux Day 2009
Funambol al Linux Day 2009Roberto Polli
 
ICalendar RFC2445 - draft1
ICalendar RFC2445 - draft1ICalendar RFC2445 - draft1
ICalendar RFC2445 - draft1Roberto Polli
 
Integrating Funambol with CalDAV and LDAP
Integrating Funambol with CalDAV and LDAPIntegrating Funambol with CalDAV and LDAP
Integrating Funambol with CalDAV and LDAPRoberto Polli
 
ds risparmio energetico
ds risparmio energeticods risparmio energetico
ds risparmio energeticoRoberto Polli
 
Aggregatori di notizie
Aggregatori di notizieAggregatori di notizie
Aggregatori di notizieRoberto Polli
 

More from Roberto Polli (17)

Ratelimit Headers for HTTP
Ratelimit Headers for HTTPRatelimit Headers for HTTP
Ratelimit Headers for HTTP
 
Interoperability rules for an European API ecosystem: do we still need SOAP?
Interoperability rules for an European API ecosystem: do we still need SOAP?Interoperability rules for an European API ecosystem: do we still need SOAP?
Interoperability rules for an European API ecosystem: do we still need SOAP?
 
Docker - virtualizzazione leggera
Docker - virtualizzazione leggeraDocker - virtualizzazione leggera
Docker - virtualizzazione leggera
 
Just one-shade-of-openstack
Just one-shade-of-openstackJust one-shade-of-openstack
Just one-shade-of-openstack
 
Tox as project descriptor.
Tox as project descriptor.Tox as project descriptor.
Tox as project descriptor.
 
Python for System Administrators
Python for System AdministratorsPython for System Administrators
Python for System Administrators
 
Orchestrating MySQL with Python and Docker
Orchestrating MySQL with Python and DockerOrchestrating MySQL with Python and Docker
Orchestrating MySQL with Python and Docker
 
Statistics 101 for System Administrators
Statistics 101 for System AdministratorsStatistics 101 for System Administrators
Statistics 101 for System Administrators
 
Will iPython replace bash?
Will iPython replace bash?Will iPython replace bash?
Will iPython replace bash?
 
Funambol al Linux Day 2009
Funambol al Linux Day 2009Funambol al Linux Day 2009
Funambol al Linux Day 2009
 
ICalendar RFC2445 - draft1
ICalendar RFC2445 - draft1ICalendar RFC2445 - draft1
ICalendar RFC2445 - draft1
 
Integrating Funambol with CalDAV and LDAP
Integrating Funambol with CalDAV and LDAPIntegrating Funambol with CalDAV and LDAP
Integrating Funambol with CalDAV and LDAP
 
ultimo-miglio-v3
ultimo-miglio-v3ultimo-miglio-v3
ultimo-miglio-v3
 
Ultimo Miglio v2
Ultimo Miglio v2Ultimo Miglio v2
Ultimo Miglio v2
 
Ultimo Miglio
Ultimo MiglioUltimo Miglio
Ultimo Miglio
 
ds risparmio energetico
ds risparmio energeticods risparmio energetico
ds risparmio energetico
 
Aggregatori di notizie
Aggregatori di notizieAggregatori di notizie
Aggregatori di notizie
 

Recently uploaded

MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfOverkill Security
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 

Recently uploaded (20)

MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 

Presenting CalDAV (draft 1)

  • 2. Agenda – CalDAV – Storing and getting events – Multiple calendars – Queries – Calendar Infos – Sharing and ACL – Scheduling
  • 3. CalDAV? CalDAV aka RFC4791 was created to provide a standard protocol for store and retrieve events. It's implemented by: Google, Apple, Oracle Bedework (Rensealer Politechnic Institute) OSAF (OpenSource Apps Foundation) Zimbra
  • 4. CalDAV It is based on WebDAV, an extension of HTTP. Inherites HTTP advantages Support access control thru WebDAV ACL Has methods for query events Use ETAGS to speed sync
  • 5. Storing and getting Events are stored in files and folders. Files are named Resource. Each resource has a unique uid, that's usually the resource name
  • 6. Storing and Getting • Basic actions/method METHOD ACTIONS GET Retrieve an event PUT Put an event on server DEL Remove event or collection (folder) from server HEAD Check existence / Get ETAG for a given event REPORT Query for events by UID, LOCATION, SUMMARY... PROPFIND Check resource property, permissions... ACL Set acl OPTIONS Check which actions can be made on a resource
  • 7. Storing and getting - GET • GET – Retrieves an event GET /user/calendar/myevent.ics – Returns the ETAG too (eg. “123124321524-1”) – ETAG is a string used for versioning the event: when myevent.ics changes, the ETAG is modified • HEAD – Retrieves the ETAG only, or an error if event is not found
  • 8. Storing and getting - PUT • PUT – Used for creating and update – Put an event PUT /user/calendar/myevent.ics – Returns the ETAG too (eg. “123124321524-2”) – Thru ETAG is possible to change PUT behaviour (create or update)
  • 9. Storing and getting – PUT 2 • PUT comando header azione errori PUT If-none-matches: * Crea la risorsa Se una risorsa esiste con lo /user/myfile.ics specificata se stesso nome, viene restituito nessun'altra risorsa è l'errore PRECONDITION presente a FAILED, poiché if-none- quell'indirizzo, usato matches indica che la pre- per creare una nuova condizione per fare il PUT è risorsa sul server. che nessuna risorsa corrisponda a quella che vogliamo creare PUT If-matches: Invia la risorsa PRECONDITION FAILED /user/myfile.ics “12312312-1” specificata viene restituito se la risorsa solamente se è già non esiste. Infatti potrebbe presente una risorsa accadere che il file che allo stesso indirizzo, vogliamo aggiornare sia e la versione di tale cambiato sul server e sia risorsa ha ETAG diverso da quello che ci “12312312-1” aspettiamo
  • 10. Storing and getting - DEL • DEL – Removes a resource (event or collection) from server – DEL /user/calendar/myevent.ics • MKCALENDAR – Create a calendar collection (folder) on server
  • 11. Querying - REPORT • REPORT – Used for querying events in a collection – eg. REPORT /user/calendar/ – REPORT body is an XML query describing the events we are looking for • By UID, LOCATION, DESCRIPTION,.. • By time-range (events starting/ending) within a given time-frame
  • 12. Querying - REPORT Filter events HTTP header REPORT /bernard/work/ HTTP/1.1 <C:filter> Host: cal.example.com Get <C:comp-filter name="VCALENDAR"> Depth: 1 Content-Type: application/xml; charset="utf-8" We're making a VCALENDARs <C:comp-filter name="VEVENT"> Content-Length: xxxx query. <prop> containing <C:time-range start="20060104T000000Z" VEVENTs describes data that START/END end="20060105T000000Z"/> we're asking at between <?xml version="1.0" encoding="utf-8" ?> </C:comp-filter> server 04.01.06 <C:calendar-query xmlns:D="DAV:" and </C:comp-filter> 05.01.06 xmlns:C="urn:ietf:params:xml:ns:caldav"> </C:filter> <D:prop> </C:calendar-query> <D:getetag/> <C:calendar-data> <C:comp name="VCALENDAR"> Describe data we <C:prop name="VERSION"/> want to retrieve: <C:comp name="VEVENT"> BEGIN:VCALENDAR <C:prop name="SUMMARY"/> VERSION:2.0 BEGIN:VEVENT <C:prop name="UID"/> UID:XXXX </C:comp> SUMMARY:XXXX BEGIN:VTIMEZONE <C:comp name="VTIMEZONE"/> ... END:VTIMEZONE </C:comp> </C:calendar-data> </D:prop>
  • 13. Sharing - ACL • PROPFIND method provides a way to get ACLs from a calendar resource / collection • ACLs are defined as in WebDAV with some CalDAV specific permissions A “user” principal is defined by an http URL provided by the server Query Description XML representation PROPFIND /caluser1/calendar/ Query for ACL defined <acl> <D:propfind xmlns:D="DAV:"> <ace> <D:prop> <principal> <property> <owner/> </property> </principal> <D:acl/> <grant> <all/> </grant> </D:prop> <inherited> <href>/user</href> </inherited> This ACL is inherited by upper A principal is a special entity </D:propfind> defined on server. It can be a user, </ace> folder /user a group or a “property” defined on <ace> server. In this case we use the <principal><href>/ucaldav/principals/users/caluser1</href></principal> “owner” property defined on the <grant> <all/> </grant> server </ace> <ace> <principal> <authenticated/> </principal> <grant> <ns1:read-free-busy/> <ns1:schedule/> </grant> These privileges are CalDAV <inherited> <href>/user</href> </inherited> specific: allows </ace> •to see free-busy of given user </acl> •to invite him to a meeting