This repository contains a set of related specifications for interoperability between different contest control systems and tooling that interacts with it. These specifications have been designed and used in the contest of the ICPC World Finals, and have also been used at various (sub)regionals; they are meant to be useful outside an ICPC context as well.
The following specifications are present:
- Contest Control System requirements for the ICPC World Finals
- JSON Format: the shared data model defining the JSON objects used across these specifications.
- Contest API: an API specification for accessing information provided by a CCS.
- Contest Package Format: a format closely related to the Contest API for storing a contest on disk.
Furthermore, a tool and JSON schema specifications are available to
validate an implementation of the Contest API. Run check-api.sh -h
from the root of the repository for usage information.
There are multiple versions of the CCS specifications available on the documentation pages.
This is the draft of some future version of the CCS specification.
- Added a style guide to be used for all specifications.
- Extracted a new JSON Format specification containing the shared data model (JSON property types, object definitions, and notification object format) previously embedded in the Contest API. The Contest API and Contest Package Format now reference this document for all shared object definitions.
- Renamed object sections in JSON Format from plural to singular (e.g. "Problems" to "Problem"), renamed "File" to "File reference" and "Notification object" to "Notification", and updated all cross-references accordingly.
- Added
scorefield to runs for scoring contests, with a note that per-run scores are not well-defined for most problems. - Restructured the
rolefield on persons into arolesarray of objects, each with atype, optionaltitle, and optionalteam_id, to support persons with multiple roles. - Added
coachas a supported account type. - Added
desktopandwebcamas known file reference tags. - Added
removed_intervalsto the contest state object, allowing time intervals to be marked as disregarded for scoring purposes. Intervals must be non-overlapping and sorted by start time. - Removed
contest_timefrom judgements and runs, as these values are not meaningful for scoring and would require unnecessary resending of objects when removed intervals change.
- Website: https://ccs-specs.icpc.io
- Github: https://github.com/icpc/ccs-specs
- Problem package format specification: https://icpc.io/problem-package-format/