Enrico Service 2.0

Description

Enrico Service 2.0 is a free service written in PHP providing public holidays for several countries. You can use Enrico Service to display public holidays on your website or in your desktop application written in any programming language.
Enrico Service 2.0 is an open-source software licensed under the MIT License so you can study, contribute, change or use it. See Enrico source code on Github.

How to Use It

You can install Enrico Service on your server or you can use our existing installation on kayaposoft.com. See our tutorials to learn more: You can import public holiday dates from Enrico to your Google Calendar, Apple Calendar, Microsoft Outlook or mobile phone. The best is to see Enrico in action.

Differences Between Enrico Service 1.0 and 2.0

There are 2 versions of Enrico Service currently available.
Version 1.0 was released in July 2012 and it is not an open-source. It is hosted only on kayaposoft.com so you have to query our server to get public holiday data. Original documentation for version 1.0 can be found here.
Version 2.0 was released in February 2018 and it is an open-source. It has better API than version 1.0. You can install it on your server but it is also hosted on kayaposoft.com so you can decide what is better for you.

Version 2.0 is more sexy so you should use this version.
If you are already using version 1.0 it should not take much time or effort to switch to version 2.0. But if you don't have time or resources to switch you don't have to. Version 1.0 will still be available for you on kayaposoft.com. Moreover both versions are connected to the same datasource so public holiday dates get updated in both versions and new countries will be added to version 1.0 automatically.

Source code

Enrico Service 2.0 source code consists of 3 main layers: holiday definitions (folder holiday_library/holiday_defs/), processor of holiday definitions (classes HolidayCalendar and HolidayProcessor) and interfaces to serve public holiday data (folders json, ics and ws). Enrico does not use any database.

If you want to add holiday dates for new country you have to create xml file with holiday definitions for that country. Every xml file with holiday definitions must be valid against enrico.xsd schema. This schema file contains documentation itself so take a look there to get a feeling how xml file with holiday definitions should look like. The most challenging task is to define date of some holidays in xml notation - take a look at dateType xsd type. E.g. Regional public holiday Royal Queensland Show in Queensland Australia takes place on Wednesday after the first Friday in August, except if the first Friday is before 5 August, in which case it takes place on Wednesday after the second Friday of August. Xml definition of date is as follows:
<date>
  <dateTransformation>
    <baseDate>
      <dateTransformation>
        <baseDate>
          <fixedDate day="4" month="8" />
        </baseDate>
        <nearestWeekdayAfter dayOfWeek="5" />
      </dateTransformation>
    </baseDate>
    <addDays>5</addDays>
  </dateTransformation>
</date>
Enrico Service uses NuSOAP library for SOAP communication.

Release Notes

Enrico Service release notes.

Supported Countries

List of supported countries can be found here.

Bug Reporting

If you have any questions, suggestions or corrections please send it to enrico@kayaposoft.com. Thank you for helping us keep Enrico Service up-to-date.

Mailing List

If you want to be notified about news and updates of Enrico Service join our mailing list or send us an email and we will add you to the list (if you don't have google account).

Help Us

We want to keep Enrico Service free for all users forever. We would appreciate any help. Here are some suggestions how users can help us:
  • Participate in Enrico Service development on Github
  • Support future development and constant data update by making a donation
Our email is enrico@kayaposoft.com.
Enrico is powered by Kayapo