Zum Inhalt

Error Messages

The OpenHolidays API returns error messages as JSON objects formatted according to RFC 9457.

What is RFC 9457?

RFC 9457 is a standard by the Internet Engineering Task Force (IETF) that defines a structured format for representing errors in HTTP APIs.

Problem Details

At the core of RFC 9457 is the Problem Details object, a JSON document included in the response body of an API query when errors occur. The OpenHolidays API implements it with the following fields:

type (string)

: A URI reference that identifies the type of error. This is typically a reference to the specification of the HTTP status code on the web.

Example: `"https://tools.ietf.org/html/rfc9110#section-15.5.1"`

title (string)

: A short, human-readable summary of the problem.

Example: `"One or more validation errors occurred."`

status (integer)

: The HTTP status code describing the error. It should match the status code in the HTTP response header.

Example: `400`

errors (object)

: (Optional) A JSON object containing additional details about the error.

Example: 
```json
{
    "validTo": [
      "The validTo field is required."
    ]
}
```

traceId (string)

: A unique identifier that can be used for tracing in distributed systems.

Example: `"00-abc123def456789ghi-xyz987uvw654321tqr-01"`

Extension Members

The fields type, title, and status are well-defined in RFC 9457. The fields errors and traceId are known as Extension Members, which extend the standard fields.

Example

The API call

https://openholidaysapi.org/PublicHolidays?countryIsoCode=DE&validFrom=2020-01-01&validTo=2023-12-31

results in the following error message:

{
  "type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
  "title": "One or more validation errors occurred.",
  "status": 400,
  "errors": {
    "pageSize": [
      "The field pageSize must be between 1 and 50."
    ]
  },
  "traceId": "00-0274bb16dcdf462bf27a7faedeacc79f-05c5cd5b5d411f8e-00"
}

Analysis of the error:

  • The server cannot process the request because it is not properly formulated (HTTP error code 400: Bad Request).

  • And yes, the date range is greater than 3 years.