Skip to content
This repository has been archived by the owner on Nov 25, 2018. It is now read-only.
Tony Arcieri edited this page Jan 31, 2016 · 26 revisions

Boulangerie supports a limited set of types for the purposes of automating and standardizing the serialized representations of caveat predicates.

Atom

Constrained strings which cover a wide range of commonly used identifiers and formats.

  • Syntax: [0-9a-zA-Z\.\/\-_]+ (effectively \w with the addition of ., /, and -). This supports the following formats:
    • Simple labels: foobar, foo-bar-baz, foo_bar_baz
    • UUIDs: aad7d05a-8699-49d8-9dd2-79f3bf2f7d58
    • Domains: macaroons.io, github.com
    • Paths: /foo/bar/baz
    • Decimals: 42
    • Hexadecimals: BADA55
    • Base32: mjqxgzjtgi
    • Base58: 3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy
    • Base64url: YmFzZTY0dXJsMDAwXx_32-ab
  • Lists allowed: yes

Binary

Opaque binary blobs.

  • Syntax: any sequence of bytes
  • Lists allowed: no

Boolean

A simple boolean toggle type.

  • Syntax: true, false
  • Lists allowed: yes
  • Notes: recommend false confer lower authority, e.g. use thing-allowed true caveats which confer positive authority as opposed to thing-denied false

DateTime

Date and time type which serializes to the ISO 8601 format. A strict subset of ISO 8601 is used which always includes a time component and is always in UTC (i.e. "Zulu") time.

  • Syntax: any valid ISO 8601 date/time.
  • Lists allowed: yes

Decimal

Integers serialized in decimal (i.e. base 10) format as ASCII digits.

  • Syntax: -?[0-9]+
  • Lists allowed: yes
  • Notes: platforms should automatically convert this to a native integer type
  • TBD: supported ranges (64-bit?)

URI (Provisional)

The location of a resource expressed in URI Generic syntax (RFC 3986).

  • Syntax: Any valid URI as expressed in RFC 3986 generic syntax
  • Lists allowed: no(?)

List

Collections of other types. Lists are only supported for a constrained subset of types as noted in the "Lists allowed" remark on the other types. All members of a list must be the same type. Lists cannot contain other lists.

  • Syntax: <expr1> 0x20 <expr2> 0x20 ... <exprN> (space delimited, i.e. " ")
  • Notes: an empty list is represented as an empty string
  • Lists allowed: no
Clone this wiki locally