origami.json (o2)
origami.json
is a JSON format file that is responsible for describing various aspects of an Origami project. It is under active development and subject to change, required
properties indicate those that Origami tools or services may still rely on.
Properties
description
Type | String |
---|---|
Required | true |
A concise description of the purpose of the project.
origamiType
Type | String or null |
---|---|
Required | true |
Defines the type of Origami project that the manifest belongs to:
"component"
(previouslymodule
): A front-end component"service"
: An HTTP service"cli"
: A command line tool"library"
: A library that is not a front-end component"website"
: Origami websites that aren’t intended to be services"config"
: Projects that are configuration for other projects"example"
: Example and boilerplate projects"meta"
: Repository-only projects that relate to how Origami worksnull
: An Origami project that does not fit any of the named categories
origamiVersion
Type | Integer |
---|---|
Required | true |
The version of the Origami specification the project follows. Note that the specification is now deprecated as of v1, any value other than 1
, for example 2.0
, indicates the project does not follow a specification:
brands
Type | Array |
---|---|
Required | false |
For components which support brands, an array of one or more brands: “core”, “internal, “whitelabel”. If the brands property does not exist, this means the component is unbranded and supports all the brands.
keywords
Type | Array |
---|---|
Required | true |
Expects keywords related to the project to help discover it in the registry.
origamiCategory
Type | String |
---|---|
Required | true * |
*Applies to { "origamiType": "component" }
.
Describes the organisational category the component belongs to:
"utilities"
: Sass and JavaScript utilities that provide no markup, provide no classes and are used to encapsulate shared logic between components"primitives"
: Base components that provide minimal markup and are used by other components"components"
: Components built from primitives and utilities, which provide markup for a complete user interface"layouts"
: Complex components that provide styles for the whole page
support
Type | String |
---|---|
Required | true |
supportStatus
Type | String |
---|---|
Required | true |
Describes the support status of the project’s major version:
active
: feature development ongoing, bug reports will be gratefully received and acted upon promptlymaintained
: not actively developed but reproducible bugs will be fixed promptly and work done where necessary to maintain compatibility with platforms and other projectsdeprecated
: not actively developed, not recommended for new projects, only the most disabling bugs will be addressed and only when time allows, but existing implementations may still workdead
: decommissioned entirely, will receive no supportexperimental
: the project is not ready for production use
supportContact
Type | Object |
---|---|
Required | false |
Describes contact details a user can choose from to find support for this project. The owner(s) identified in the support options commit to:
- reviewing code prior to release
- signing off on deployments
- publishing and maintaining up to date releases and documentation
- decommissioning the project when appropriate
- provide support to the users of the project
The object requires two properties:
email
: typeString
. Is an email address that users can request support from. We recommend a group or role based email, not a named individualslack
: typeString
. Is a slack channel that users can go to for support in the format: organisation/channel-name
browserFeatures
Type | Object |
---|---|
Required | false |
Applies to { "origamiType": "component" }
. Outlines the browser features required for the component’s functionality. The object accepts two properties:
required
: typeArray
. A list of features which the component assumes exists. If these features do not exist, the component may error.optional
: typeArray
. A list of features which the component will use if they are available in the browser. If not the component may offer different or reduced functionality, but with graceful degradation.
serviceUrl
Type | String |
---|---|
Required | true * |
*Applies to { "origamiType": "service" }
only.
Is the URL on which the service is provided.
demosDefaults
Type | Object |
---|---|
Required | false |
Describes default options to be applied to all demos.
The object accepts the following properties:
template
: typeString
. Describes the path to the mustache template to rendersass
: typeString
. Describes the path to the Sass file to compile.js
: typeString
. Describes the JS file to build.data
: typeObject
orString
. Describes data to populate to the mustache template with. If this is a string it must be a path to a JSON file containing the data, relative to the root of the repo.documentClasses
: typeString
. Names CSS classes to set on thehtml
tag.dependencies
: typeArray
. Is a list of other components that are only needed for demos, which will be loaded via the Build Service
All of these properties are optional.
demos
Type | Array |
---|---|
Required | false |
It accepts an array. Is a list of configuration objects for individual demos. Each object in the list accepts the following properties:
required:
name
: typeString
. Demo name which will be used as the name of the outputted html filetitle
: typeString
. A title for the demo which will appear when listed in the Registrydescription
: typeString
. An explanation of the purpose of the demotemplate
: typeString
. Describes the path to the demo-specific mustache template to render
optional:
sass
: typeString
. Describes the path to the demo-specific Sass file to compile.js
: typeString
. Describes the path to the demo-specific JS file to build.data
: typeObject
orString
. Describes data to populate to the component-specific mustache template with. If this is a string it must be a path to a JSON file containing the data, relative to the root of the repo.brands
: typeArray
. For components which support brands, this describes one or more brands which the demo applies to (“core”, “internal, “whitelabel”)documentClasses
: typeString
. Names CSS classes to set on the component-specifichtml
tagdependencies
: typeArray
. Is a list of other components that are only needed a this specific demo, which will be loaded via the Build Servicehidden
: typeBoolean
. Whether the demo should be hidden in the Registrydisplay_html
: typeBoolean
. Whether the demo should have a HTML tab in the Registry (defaults to true)
Example
This example joins all of the property snippets outlined above: