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

Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 

Recently uploaded (20)

Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 

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