citadel-apps/app-standard-v4.yml

246 lines
5.3 KiB
YAML
Raw Normal View History

2022-06-06 14:58:36 +00:00
---
$schema: "http://json-schema.org/draft-07/schema#"
title: AppYml
description: Citadel app definition
type: object
required:
- citadel_version
- metadata
- services
properties:
citadel_version:
type: integer
format: uint8
minimum: 0.0
metadata:
$ref: "#/definitions/Metadata"
services:
type: object
additionalProperties:
$ref: "#/definitions/Container"
definitions:
Command:
anyOf:
- type: string
- type: array
items:
type: string
Container:
type: object
required:
- image
properties:
command:
anyOf:
- $ref: "#/definitions/Command"
- type: "null"
depends_on:
type:
- array
- "null"
items:
type: string
enable_networking:
default: true
type: boolean
entrypoint:
anyOf:
- $ref: "#/definitions/Command"
- type: "null"
environment:
type:
- object
- "null"
additionalProperties:
type: string
hidden_services:
anyOf:
- $ref: "#/definitions/HiddenServices"
- type: "null"
image:
type: string
init:
type:
- boolean
- "null"
mounts:
anyOf:
- $ref: "#/definitions/Mounts"
- type: "null"
network_mode:
type:
- string
- "null"
port:
type:
- integer
- "null"
format: uint16
minimum: 0.0
port_priority:
anyOf:
- $ref: "#/definitions/PortPriority"
- type: "null"
required_ports:
anyOf:
- $ref: "#/definitions/PortsDefinition"
- type: "null"
requires:
description: "Unlike depends_on, this is dependencies (defined in metadata) that are required for this container The container gets ignored without them"
type:
- array
- "null"
items:
type: string
restart:
type:
- string
- "null"
stop_grace_period:
type:
- string
- "null"
stop_signal:
type:
- string
- "null"
user:
type:
- string
- "null"
HiddenServices:
anyOf:
- type: object
additionalProperties:
type: integer
format: uint16
minimum: 0.0
- type: object
additionalProperties:
type: object
additionalProperties:
type: integer
format: uint16
minimum: 0.0
Metadata:
type: object
required:
- category
- developers
- name
- repo
- support
- tagline
- version
properties:
category:
description: The category for the app
type: string
defaultPassword:
description: "The app's default password. Can also be $APP_SEED for a random password"
type:
- string
- "null"
developers:
type: object
additionalProperties:
type: string
gallery:
description: A list of promo images for the apps
type:
- array
- "null"
items:
type: string
name:
description: The name of the app
type: string
path:
description: "The path the \"Open\" link on the dashboard should lead to"
type:
- string
- "null"
permissions:
description: Permissions the app requires
default: []
type: array
items:
$ref: "#/definitions/Permissions"
repo:
description: App repository name -> repo URL
type: object
additionalProperties:
type: string
support:
description: A support link for the app
type: string
tagline:
description: A short tagline for the app
type: string
torOnly:
description: True if the app only works over Tor
default: false
type: boolean
updateContainers:
description: A list of containers to update automatically (still validated by the Citadel team)
type:
- array
- "null"
items:
type: string
version:
description: The version of the app
type: string
Mounts:
type: object
properties:
bitcoin:
type:
- string
- "null"
c_lightning:
type:
- string
- "null"
data:
type:
- object
- "null"
additionalProperties:
type: string
lnd:
type:
- string
- "null"
Permissions:
anyOf:
- type: string
- type: array
items:
type: string
PortPriority:
type: string
enum:
- Optional
- Recommended
- Required
PortsDefinition:
type: object
properties:
tcp:
type:
- object
- "null"
additionalProperties:
type: integer
format: uint16
minimum: 0.0
udp:
type:
- object
- "null"
additionalProperties:
type: integer
format: uint16
minimum: 0.0