跳到主要内容

REST 参考

本页提供中国大陆节假日 REST API 的人工可读契约,包含端点、请求参数、响应字段、枚举值和错误响应。所有端点的基础地址为:

https://api.wanduanapi.com

端点

operationCode方法与路径用途
chinaCalendar.getDateStatusGET /v1/china-calendar/dates/{date}查询单日状态
chinaCalendar.getDateRangeStatusGET /v1/china-calendar/date-ranges查询日期区间的逐日状态
chinaCalendar.calculateWorkdaysGET /v1/china-calendar/workdays统计工作日、休息日与未知日期
chinaCalendar.getNextHolidayGET /v1/china-calendar/next-holiday查询指定日期起的下一节假日

所有端点均使用 GET,请求参数通过路径或查询字符串传递,不使用请求体。

请求参数

operationCode参数位置类型必填说明
chinaCalendar.getDateStatusdate路径stringISO 8601 日历日期,格式为 yyyy-MM-dd
chinaCalendar.getDateRangeStatusstartDate查询string区间起始日期,格式为 yyyy-MM-dd,包含当天。
chinaCalendar.getDateRangeStatusendDate查询string区间结束日期,格式为 yyyy-MM-dd,包含当天。
chinaCalendar.calculateWorkdaysstartDate查询string区间起始日期,格式为 yyyy-MM-dd,包含当天。
chinaCalendar.calculateWorkdaysendDate查询string区间结束日期,格式为 yyyy-MM-dd,包含当天。
chinaCalendar.getNextHolidayfromDate查询string查找起始日期,格式为 yyyy-MM-dd,从当天开始查找。

日期区间的首尾均包含,跨度不得超过 366 天,且 startDate 不得晚于 endDate。所有日期参数都不带时间、时区或其他后缀。

单日状态响应

GET /v1/china-calendar/dates/{date} 直接返回 JSON 对象,不使用统一的 data 外壳。

字段JSON 类型可空说明
datestring查询的业务日期,格式为 yyyy-MM-dd
dayOfWeekstring星期枚举,取值见下表。
workStatusstring粗粒度工作状态,取值见下表。
dayStatusstring细粒度日期状态,取值见下表。
holidaysarray当前日期关联的节日列表,无关联时为空数组;元素结构见关联节日
datasetVersionstring实际使用的数据集版本;目标年度官方安排尚未发布时为 null

dayOfWeek

使用语言无关的字符串枚举,不返回数字或本地化名称。

取值含义
MONDAY星期一
TUESDAY星期二
WEDNESDAY星期三
THURSDAY星期四
FRIDAY星期五
SATURDAY星期六
SUNDAY星期日

workStatus

面向排班、考勤等场景的粗粒度结论,由 dayStatus 唯一推导。

取值含义
WORKDAY当天需要上班,包括普通工作日和调休补班日。
REST_DAY当天休息,包括周末和节假日安排中的休息日。
UNKNOWN目标年度的官方安排尚未发布,暂时无法确定当天是上班还是休息。

对应关系如下:

dayStatusworkStatus
WORKDAYWORKDAY
ADJUSTED_WORKDAYWORKDAY
WEEKENDREST_DAY
HOLIDAYREST_DAY
UNKNOWNUNKNOWN

dayStatus

说明日期具体原因的细粒度状态。官方节假日安排的优先级高于普通星期判断。

取值含义
WORKDAY普通工作日。
ADJUSTED_WORKDAY因节假日安排产生的调休补班日。
WEEKEND未被官方节假日安排覆盖的周六或周日。
HOLIDAY官方节假日安排中的休息日,可能是法定节假日当天,也可能是安排的其他休息日。
UNKNOWN目标年度的官方安排尚未发布,暂时无法确定日期状态。

关联节日

holidays 中的每个元素包含以下字段。一个日期可以关联多个节日。

字段JSON 类型可空说明
codestring稳定的语言无关节日代码,供程序判断。可能取值见下表。
namestring官方简体中文名称,仅用于展示。
statutoryDateboolean当前查询日期是否为该节日的法定节假日当天。

code

取值含义
NEW_YEAR元旦
SPRING_FESTIVAL春节
QINGMING_FESTIVAL清明节
LABOR_DAY劳动节
DRAGON_BOAT_FESTIVAL端午节
MID_AUTUMN_FESTIVAL中秋节
NATIONAL_DAY国庆节
VICTORY_DAY_70TH_ANNIVERSARY中国人民抗日战争暨世界反法西斯战争胜利 70 周年纪念日

statutoryDate

取值含义
true当前日期是该节日对应的法定节假日当天。
false当前日期与该节日安排有关,但不是法定节假日当天,例如延长休息日或调休补班日。

日期区间响应

GET /v1/china-calendar/date-ranges 返回按日期升序排列的 JSON 数组。数组中的每个元素都是单日状态响应,字段结构与单日状态响应相同;首尾日期均包含,单次请求最多返回 366 天。

工作日统计响应

GET /v1/china-calendar/workdays 返回以下 JSON 对象:

字段JSON 类型可空说明
startDatestring统计区间的起始日期,格式为 yyyy-MM-dd,包含当天。
endDatestring统计区间的结束日期,格式为 yyyy-MM-dd,包含当天。
totalDaysinteger区间包含的自然日总数。
workdayCountinteger已确定为工作日的日期数量,包括普通工作日和调休补班日。
restDayCountinteger已确定为休息日的日期数量,包括周末和节假日安排中的休息日。
unknownDayCountinteger尚未发布官方安排、无法确定工作或休息属性的日期数量。

这些计数满足 totalDays = workdayCount + restDayCount + unknownDayCount

下一节假日响应

GET /v1/china-calendar/next-holiday 返回从 fromDate(含当天)开始的第一个官方安排节假日日期,不要求该日期是关联节日的法定节假日当天。

字段JSON 类型可空说明
statusstring查询结果状态,取值见下表。
datestring找到结果时为下一节假日日期,格式为 yyyy-MM-ddstatus=UNKNOWN 时为 null
holidaysarraydate 关联的节日列表;status=UNKNOWN 时为空数组,元素结构见关联节日
datasetVersionstring找到结果时为实际使用的数据集版本;status=UNKNOWN 时为 null
status 取值含义
FOUND已找到下一节假日,并返回 dateholidaysdatasetVersion
UNKNOWN后续年度的官方安排尚未发布,暂时无法确定下一节假日;datedatasetVersionnullholidays 为空数组。

错误响应

错误响应使用 RFC 9457 Problem Details 格式。响应媒体类型为 application/problem+json,HTTP 响应头为:

Content-Type: application/problem+json
字段JSON 类型可空说明
typestring问题类型的稳定 URI,指向对应的错误说明页面。
titlestring面向用户的错误标题。
statusinteger与 HTTP 响应一致的状态码。
detailstring本次请求的具体错误详情。
instancestring触发问题的请求路径。
codestring稳定的程序可读错误码。
requestIdstring本次请求的定位标识,反馈问题时应一并提供。

常见错误码:

错误码HTTP 状态说明
INVALID_DATE_FORMAT400日期格式或日期值不合法。
MISSING_PARAMETER400缺少必填参数。
INVALID_DATE_RANGE400startDate 晚于 endDate
DATE_RANGE_TOO_LARGE400日期区间跨度超过 366 天。
DATE_OUT_OF_SUPPORTED_RANGE400日期早于 2008-01-01
RESOURCE_NOT_FOUND404请求路径不存在。
METHOD_NOT_ALLOWED405请求方法不被支持。
CALENDAR_DATA_UNAVAILABLE503已发布范围内的日历数据暂时无法读取。
INTERNAL_ERROR500服务端发生未预期错误。

目标年度的官方安排尚未发布不是错误,相关查询返回 HTTP 200,并通过 UNKNOWN 表示暂时未知。