Several schema types are shared between the different parts of the specification and are defined below.
An AC Identifier Type is restricted to lowercase URI unreserved characters defined in RFC3986
An AC Identifier Type cannot be an empty string and must begin and end with an alphanumeric character.
An AC Identifier Type will match the following RE2 regular expression: ^[a-z0-9]+([-._~/][a-z0-9]+)*$
Examples:
- database
- example.com/database
- example.com/ourapp
- example.com/~user/app_v1
- sub-domain.example.com/org/product/release
The AC Identifier Type is used as the primary key for a number of fields in the schemas that are in the global namespace, such as image names, image label keys and isolator names. The schema validator will ensure that the keys conform to these constraints.
An AC Name Type is restricted to numeric and lowercase characters accepted by the DNS RFC1123 plus "-".
An AC Name Type cannot be an empty string and must begin and end with an alphanumeric character.
An AC Name Type will match the following RE2 regular expression: ^[a-z0-9]+([-][a-z0-9]+)*$
Examples:
- database
- product-database
- product-database-release
The AC Name Type is used as the primary key for a number of fields in the schemas below. The schema validator will ensure that the keys conform to these constraints.
An AC Kind cannot be an empty string and must be alphanumeric characters. An AC Kind value matching defined kinds, will have defined compatibility. There is no expected compatibility with undefined AC Kinds.
Defined Kinds:
ImageManifest
PodManifest
The App Container specification aims to follow semantic versioning and retain forward and backwards compatibility within major versions. For example, if an implementation is compliant against version 1.0.1 of the spec, it is compatible with the complete 1.x series.
The version of the App Container specification and associated tooling is recorded in VERSION, and is otherwise denoted in the release version or git version control tag.
An AC Version must reference a tagged version of the App Container specification, not exceeding the version of its greatest compliance. An AC Version for Image Manifest and Pod Manifest schemas must be compatible on major AC version series. An AC Version cannot be an empty string and must be in SemVer v2.0.0 format.
An Image ID Type must be a string of the format "hash-value", where "hash" is the hash algorithm used and "value" is the hex encoded string of the digest.
Currently the only permitted hash algorithm is sha512
.
An Isolator Type must be a JSON object with two required fields: "name" and "value". "name" must be a string restricted to AC Identifier formatting. "value" may be an arbitrary JSON value.
Timestamps will be formatted to RFC3339.
Specifically including the "T" between the date and time components, per the date-time
format of RFC3339 Section 5.6.
An example of this with shell script is:
$ date --rfc-3339=ns | tr " " "T"
2015-05-18T13:49:28.351729952-04:00