governance/openstack_governance/projects_schema.yaml

141 lines
3.2 KiB
YAML

---
$schema: "http://json-schema.org/schema#"
$id: "https://opendev.org/openstack/releases/src/branch/master/README.rst"
contact_schema: &contact_schema
type: "array"
items:
type: "object"
required:
- name
- email
additionalProperties: false
properties:
name:
type: "string"
irc:
type: "string"
email:
type: "string"
format: "email"
minItems: 1
uniqueItems: true
additionalProperties:
# Do not allow any properties not defined here. This lets us catch
# typos.
additionalProperties: false
oneOf:
- required:
- ptl
- deliverables
- url
- mission
- required:
- leadership_type
- liaisons
- deliverables
- url
- mission
properties:
ptl:
type: "object"
required:
- name
- email
additionalProperties: false
properties:
name:
type: "string"
irc:
type: "string"
email:
type: "string"
format: "email"
leadership_type:
type: "string"
enum:
- distributed
appointed:
type: "array"
items:
type: "string"
irc-channel:
type: "string"
service:
type: "string"
url:
type: "string"
liaisons:
type: "object"
properties:
tc_members:
type: "array"
items:
type: "string"
uniqueItems: true
# TODO(gmann): Make release, tact-sig,
# and, security liaison as required for
# distributed leadership type.
release: *contact_schema
tact-sig: *contact_schema
security: *contact_schema
events: *contact_schema
project_update_onboarding: *contact_schema
meeting_facilitator: *contact_schema
bug_deputy: *contact_schema
rfp_coordinator: *contact_schema
additionalProperties: false
mission:
type: "string"
deliverables:
type: "object"
additionalProperties:
type: "object"
required:
- repos
additionalProperties: false
properties:
repos:
type: "array"
items:
type: "string"
pattern: "^[^/]+/[^/]+$"
minItems: 1
uniqueItems: true
tags:
type: "array"
items:
type: "string"
release-management:
type: "string"
enum:
- none
- deprecated
- external
deprecated:
type: "string"
extra-atcs:
type: "array"
items:
type: "object"
required:
- name
- email
- expires-in
additionalProperties: false
properties:
name:
type: "string"
email:
type: "string"
format: "email"
expires-in:
type: "string"
pattern: >-
^(January |February |March |April |May |June |July |August
|September |October |November |December )2[0-9]{3}$
comment:
type: "string"