# Holiday APIs

This section details about the service APIs for the Holidays.

## Holidays

* [GET /holidays](#get-holidays)
* [POST /holidays](#post-holidays)
* [PUT /holidays](#put-holidays)
* [DELETE /holidays](#delete-holidays)
* [GET /holidays/{holidayid}](#get-holidays-holidayid)
* [GET /holidays/{holidayid}/{langcode}](#get-holidays-holidayid-langcode)
* [GET /holidays/all](#get-holidays-all)
* [POST /holidays/filtervalues](#post-holidays-filtervalues)
* [POST /holidays/search](#post-holidays-search)

### GET /holidays

This service will get all the holidays.

#### Resource URL

`GET /holidays`

#### Resource details

| Resource Details        | Description |
| ----------------------- | ----------- |
| Response format         | JSON        |
| Requires Authentication | Yes         |

#### Parameters

| Name   | Required | Description | Default Value | Example |
| ------ | -------- | ----------- | ------------- | ------- |
| --NA-- |          |             |               |         |

#### Example Response

```
{
  "id": null,
  "version": null,
  "responsetime": "2019-11-15T09:41:14.274Z",
  "metadata": null,
  "response": {
    "holidays": [
      {
        "id": 2000001,
        "locationCode": "KTA",
        "holidayDate": "2019-01-01",
        "holidayDay": "2",
        "holidayMonth": "1",
        "holidayYear": "2019",
        "holidayName": "New Year's Day",
        "holidayDesc": "National Holiday",
        "langCode": "eng",
        "isActive": true
      }
	]
  },
  "errors": null
}
```

**Response Code : 200 (OK)**

### POST /holidays

This service will create a new holiday.

#### Resource URL

`POST /holidays`

#### Resource details

| Resource Details        | Description |
| ----------------------- | ----------- |
| Response format         | JSON        |
| Requires Authentication | Yes         |

#### Parameters

| Name         | Required | Description   | Default Value | Example |
| ------------ | -------- | ------------- | ------------- | ------- |
| locationCode | Yes      | location code |               |         |
| holidayDate  | Yes      | date          |               |         |
| holidayMonth | Yes      | month         |               |         |
| holidayYear  | Yes      | year          |               |         |
| holidayName  | Yes      | name          |               |         |
| holidayDesc  | Yes      | description   |               |         |
| langCode     | Yes      | language code |               |         |
| isActive     | Yes      | is active?    |               |         |

#### Example Request

```
{
  "id": "string",
  "metadata": {},
  "request": {
    "holidayDate": "string",
    "holidayDay": "string",
    "holidayDesc": "string",
    "holidayMonth": "string",
    "holidayName": "string",
    "holidayYear": "string",
    "id": 0,
    "isActive": true,
    "langCode": "string",
    "locationCode": "string"
  },
  "requesttime": "2018-12-10T06:12:52.994Z",
  "version": "string"
}
```

#### Example Response

```
{
  "errors": [
    {
      "errorCode": "string",
      "message": "string"
    }
  ],
  "id": "string",
  "metadata": {},
  "response": {
    "holidayDate": "string",
    "holidayName": "string",
    "langCode": "string",
    "locationCode": "string"
  },
  "responsetime": "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",
  "version": "string"
}
```

**Response Code : 200 (OK)**

### PUT /holidays

This service will update a holiday.

#### Resource URL

`PUT /holidays`

#### Resource details

| Resource Details        | Description |
| ----------------------- | ----------- |
| Response format         | JSON        |
| Requires Authentication | Yes         |

#### Parameters

| Name           | Required | Description     | Default Value | Example |
| -------------- | -------- | --------------- | ------------- | ------- |
| locationCode   | Yes      | location code   |               |         |
| holidayDate    | Yes      | date            |               |         |
| newHolidayDate | Yes      | new date        |               |         |
| newHolidayName | Yes      | new name        |               |         |
| holidayName    | Yes      | name            |               |         |
| holidayDesc    | Yes      | description     |               |         |
| langCode       | Yes      | language code   |               |         |
| isActive       | Yes      | is active?      |               |         |
| newHolidayDesc | Yes      | new description |               |         |

#### Example Request

```
{
  "id": "string",
  "metadata": {},
  "request": {
    "id": 0,
    "locationCode": "string",
    "holidayDate": "string",
    "holidayName": "string",
    "holidayDesc": "string",
    "langCode": "string",
    "isActive": true,
    "newHolidayName": "string",
    "newHolidayDate": "string",
    "newHolidayDesc": "string"
  },
  "requesttime": "2018-12-10T06:12:52.994Z",
  "version": "string"
}
```

#### Example Response

```
{
  "holidayDate": "string",
  "holidayName": "string",
  "langCode": "string",
  "locationCode": "string"
}
```

**Response Code : 200 (OK)**

### DELETE /holidays

This service will provides the service to delete a holiday.

#### Resource URL

`DELETE /holidays`

#### Resource details

| Resource Details        | Description |
| ----------------------- | ----------- |
| Response format         | JSON        |
| Requires Authentication | Yes         |

#### Parameters

| Name         | Required | Description                       | Default Value | Example |
| ------------ | -------- | --------------------------------- | ------------- | ------- |
| holidayDate  | Yes      | date to be deleted                |               |         |
| holidayName  | Yes      | name of the holiday to be deleted |               |         |
| locationCode | Yes      | location code                     |               |         |

#### Example Request

```
{
  "id": "string",
  "metadata": {},
  "request": {
    "holidayDate": "string",
    "holidayName": "string",
    "locationCode": "string"
  },
  "requesttime": "2018-12-10T06:12:52.994Z",
  "version": "string"
}
```

#### Example Response

```
{
  "holidayDate": "string",
  "holidayName": "string",
  "locationCode": "string"
}
```

**Response Code : 200 (OK)**

### GET /holidays/{holidayid}

This service will provides the service to get all holidays by Id.

#### Resource URL

`GET /holidays/{holidayid}`

#### Resource details

| Resource Details        | Description |
| ----------------------- | ----------- |
| Response format         | JSON        |
| Requires Authentication | Yes         |

#### Parameters

| Name      | Required | Description | Default Value | Example |
| --------- | -------- | ----------- | ------------- | ------- |
| holidayid | yes      | holiday Id  |               |         |

#### Example Response

```
{
  "errors": [
    {
      "errorCode": "string",
      "message": "string"
    }
  ],
  "id": "string",
  "metadata": {},
  "response": {
    "holidays": [
      {
        "holidayDate": "string",
        "holidayDay": "string",
        "holidayDesc": "string",
        "holidayMonth": "string",
        "holidayName": "string",
        "holidayYear": "string",
        "id": 0,
        "isActive": true,
        "langCode": "string",
        "locationCode": "string"
      }
    ]
  },
  "responsetime": "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",
  "version": "string"
}
```

**Response Code : 200 (OK)**

### GET /holidays/{holidayid}/{langcode}

This service will get all the holidays by holidayid and language code.

#### Resource URL

`GET /holidays/{holidayid}/{langcode}`

#### Resource details

| Resource Details        | Description |
| ----------------------- | ----------- |
| Response format         | JSON        |
| Requires Authentication | Yes         |

#### Parameters

| Name      | Required | Description   | Default Value | Example |
| --------- | -------- | ------------- | ------------- | ------- |
| holidayid | yes      | holiday Id    |               |         |
| langCode  | Yes      | language code |               |         |

#### Example Response

```
{
  "errors": [
    {
      "errorCode": "string",
      "message": "string"
    }
  ],
  "id": "string",
  "metadata": {},
  "response": {
    "holidays": [
      {
        "holidayDate": "string",
        "holidayDay": "string",
        "holidayDesc": "string",
        "holidayMonth": "string",
        "holidayName": "string",
        "holidayYear": "string",
        "id": 0,
        "isActive": true,
        "langCode": "string",
        "locationCode": "string"
      }
    ]
  },
  "responsetime": "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",
  "version": "string"
}
```

**Response Code : 200 (OK)**

### GET /holidays/all

This service will retrieve all the holidays with additional metadata.

#### Resource URL

`GET /holidays/all`

#### Resource details

| Resource Details        | Description |
| ----------------------- | ----------- |
| Response format         | JSON        |
| Requires Authentication | Yes         |

#### Parameters

| Name       | Required | Description                                  | Default Value   | Example |
| ---------- | -------- | -------------------------------------------- | --------------- | ------- |
| orderBy    | optional | response order                               | desc            |         |
| pageNumber | optional | page no for the requested data               | 0               |         |
| pageSize   | optional | page size for the requested data             | 10              |         |
| sortBy     | optional | sort the requested data based on param value | createdDateTime |         |

#### Example Response

```
{
  "errors": [
    {
      "errorCode": "string",
      "message": "string"
    }
  ],
  "id": "string",
  "metadata": {},
  "response": {
    "data": [
      {
        "createdBy": "string",
        "holidayDate": 0,
        "holidayDay": "string",
        "holidayDesc": "string",
        "holidayId": 0,
        "holidayMonth": "string",
        "holidayName": "string",
        "holidayYear": "string",
        "isActive": true,
        "isDeleted": true,
        "langCode": "string",
        "locationCode": "string",
        "name": "string",
        "updatedBy": "string"
      }
    ],
    "pageNo": 0,
    "totalItems": 0,
    "totalPages": 0
  },
  "responsetime": "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",
  "version": "string"
}
```

#### Response codes

| Response Code | Description  |
| ------------- | ------------ |
| 200           | Success      |
| 400           | Bad request  |
| 401           | Unauthorized |
| 403           | Forbidden    |

#### Failure details

| Error Code  | Error Message                                   | Error Description |
| ----------- | ----------------------------------------------- | ----------------- |
| KER-MSD-019 | Error occured while fetching Holidays           | Fetch Issue       |
| KER-MSD-020 | Holiday not found                               | Data Not Found    |
| KER-MSD-065 | Error occurred while inserting holiday          | Insertion Issue   |
| KER-MSD-099 | Error occurred while updating holiday           | Update Issue      |
| KER-MSD-100 | Error occurred while deleting holiday           | Deletion Issue    |
| KER-MSD-025 | Error occured while fetching Location Hierarchy | fetch issue       |
| KER-MSD-026 | Location not found                              | Data Not Found    |

### POST /holidays/filtervalues

This API is used by the Administrator Portal UI to populate filter dropdowns on the Holiday List View UI Screen.

#### Resource URL

`POST /holidays/filtervalues`

#### Resource details

| Resource Details        | Description |
| ----------------------- | ----------- |
| Response format         | JSON        |
| Requires Authentication | Yes         |

#### Parameters

| Name         | Required | Description                                                                     | Default Value | Example |
| ------------ | -------- | ------------------------------------------------------------------------------- | ------------- | ------- |
| filters      | No       | Array of the filter applied. In case of "list" screen, this array will be empty | -NA-          |         |
| columnName   | No       | The column name in the JSON response                                            | -NA-          |         |
| type         | No       | The value have to be in \["unique","all"]                                       | unique        | unique  |
| languagecode | Yes      | Language code in Language code in ISO 639-2 format                              |               |         |

#### Example Request

```
{
  "id": "string",
  "metadata": {},
  "request": {
    "filters": [
      {
        "columnName": "string",
        "type": "string",
        "text": "string"
      }
    ],
    "languageCode": "string",
    "optionalFilters": [
      {
        "value": "string",
        "fromValue": "string",
        "toValue": "string",
        "columnName": "string",
        "type": "string"
      }
    ]
  },
  "requesttime": "2018-12-10T06:12:52.994Z",
  "version": "string"
}
```

#### Example Response

```
{
  "errors": [
    {
      "errorCode": "string",
      "message": "string"
    }
  ],
  "id": "string",
  "metadata": {},
  "response": {
    "filters": [
      {
        "fieldID": "string",
        "fieldValue": "string"
      }
    ]
  },
  "responsetime": "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",
  "version": "string"
}
```

**Response Code : 200 (OK)**

### POST /holidays/search

This API is used by the Administrator Portal to fetch list of Holidays based on a given filter criteria to display the list of Holidays on the Portal UI.

#### Resource URL

`POST /holidays/search`

#### Resource details

| Resource Details        | Description |
| ----------------------- | ----------- |
| Response format         | JSON        |
| Requires Authentication | Yes         |

#### Parameters

| Name         | Required                                    | Description                                                                     | Default Value | Example |
| ------------ | ------------------------------------------- | ------------------------------------------------------------------------------- | ------------- | ------- |
| filters      | No                                          | Array of the filter applied. In case of "list" screen, this array will be empty | -NA-          |         |
| columnName   | No                                          | The column name in the JSON response                                            | -NA-          |         |
| type         | No                                          | The value have to be in \["contains","equals","startsWith","between"]           | -NA-          |         |
| value        | No                                          | Value or id selected in the filter by the end user                              | -NA-          |         |
| fromValue    | No                                          | If the type is "between", this field is the value of the fromName               | -NA-          |         |
| toValue      | No                                          | If the type is "between", this field is the value of the toName                 | -NA-          |         |
| languagecode | Yes                                         | Language code in Language code in ISO 639-2 format                              |               |         |
| sort         | No                                          | This is an array of the sort field and type                                     |               |         |
| sortfield    | The field on which the sort is applied      |                                                                                 | modifiedDate  |         |
| sorttype     | This should be either of \['ASC','DESC']    |                                                                                 | ASC           |         |
| pagination   | The pagination parameter object             |                                                                                 |               |         |
| pageStart    | This is the start index                     | 0                                                                               | 0             |         |
| pageFetch    | This is the amount of records to be fetched | 10                                                                              | 10            |         |

#### Filter Values

Please find the filter columns used in search

1. holidayName
2. holidayDate|\["between"]
3. isActive

#### Example Request

```
{
  "id": "string",
  "metadata": {},
  "requesttime": "2018-12-10T06:12:52.994Z",
  "version": "string",
  "request": {
	"filters" : [
	  {
		"columnName": "",
		"type": "in",
		"value": "",
		"fromValue": "",
		"toValue": ""
	  }
	],
	"sort":[
	  {
		"sortfield":"string",
		"sorttype":"ASC"
	  }
	],
	"pagination":{
	  "pageStart":"number",
	  "pageFetch":"number"
	},
	"languageCode":""
  }
}
```

#### Example Response

```
{
  "id": "string",
  "version": "string",
  "metadata": {},
  "responsetime": "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",
  "errors": null,
  "response": {
    "holidays": [
      {
        "holidayDate": "string",
        "holidayDay": "string",
        "holidayDesc": "string",
        "holidayMonth": "string",
        "holidayName": "string",
        "holidayYear": "string",
        "id": 0,
        "isActive": true,
        "langCode": "string",
        "locationCode": "string"
      }
    ],
	"fromRecord" : "number",
	"toRecord":"number",
	"totalRecord":"number"
  }
}
```

**Response Code : 200 (OK)**

***


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mosip.io/1.1.5/apis/holiday-apis.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
