Skip to content

Instantly share code, notes, and snippets.

@revolunet
Last active June 21, 2024 21:55
Show Gist options
  • Select an option

  • Save revolunet/966474dacfdae8ddb127ab3fad775889 to your computer and use it in GitHub Desktop.

Select an option

Save revolunet/966474dacfdae8ddb127ab3fad775889 to your computer and use it in GitHub Desktop.
publi.codes sample JSON-schema - add `# yaml-language-server: $schema=<urlToTheSchema>` to your YAML header
{
"$schema": "https://json-schema.org/draft-07/schema",
"additionalProperties": {
"$ref": "#/definitions/mecanismes/valeur"
},
"definitions": {
"mecanismes": {
"variations": {
"title": "variations",
"markdownDescription": "Contient une liste de conditions (si) et leurs conséquences associées (alors), ainsi qu’un cas par défaut (sinon).\n\nPour la première condition vraie dans la liste, on retient la valeur qui lui est associée.\n\nSi aucune condition n’est vraie, alors ce mécanisme renvoie implicitement non.\n\nCe mécanisme peut aussi être utilisé au sein d’un autre mécanisme avec des attributs, tel que produit ou barème.\n\nDoc: https://publi.codes/docs/api/m%C3%A9canismes#variations",
"type": "array",
"items": {
"oneOf": [
{
"title": "Si condition vraie, alors",
"type": "object",
"properties": {
"si": { "$ref": "#/definitions/mecanismes/valeur" },
"alors": { "$ref": "#/definitions/mecanismes/valeur" }
},
"required": ["si", "alors"],
"additionalProperties": false
},
{
"title": "Sinon",
"type": "object",
"properties": {
"sinon": { "$ref": "#/definitions/mecanismes/valeur" }
},
"required": ["sinon"],
"additionalProperties": false
}
],
"default": {
"si": "condition",
"alors": "valuer"
}
}
},
"valeur": {
"oneOf": [
{
"title": "Valeur de la règle",
"type": ["string", "number", "null"]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"titre": {
"type": "string"
},
"markdownDescription": {
"type": "string"
},
"unité": {
"type": "string"
},
"question": {
"type": "string"
},
"par défaut": {
"$ref": "#/definitions/mecanismes/valeur"
},
"valeur": {
"$ref": "#/definitions/mecanismes/valeur"
},
"formule": {
"$ref": "#/definitions/mecanismes/formule"
},
"applicable si": {
"$ref": "#/definitions/mecanismes/applicable si"
},
"non applicable si": {
"$ref": "#/definitions/mecanismes/non applicable si"
},
"une de ces conditions": {
"$ref": "#/definitions/mecanismes/une de ces conditions"
},
"toutes ces conditions": {
"$ref": "#/definitions/mecanismes/toutes ces conditions"
},
"variations": {
"$ref": "#/definitions/mecanismes/variations"
},
"somme": {
"$ref": "#/definitions/mecanismes/somme"
},
"plafond": {
"$ref": "#/definitions/mecanismes/plafond"
}
}
}
]
},
"formule": {
"$ref": "#/definitions/mecanismes/valeur"
},
"applicable si": {
"title": "applicable si",
"markdownDescription": "Renvoie non si la condition est égale à non. Renvoie la valeur sinon.\n\nPermet de désactiver une règle ou une valeur.\n\nMécanisme chainable\n\nDoc: https://publi.codes/docs/api/m%C3%A9canismes#applicable-si",
"type": "string"
},
"non applicable si": {
"title": "non applicable si",
"markdownDescription": "Renvoit non si la condition n’est pas égale à non\n\nPermet de désactiver une règle ou une valeur.\n\nMécanisme chainable\n\nDoc: https://publi.codes/docs/api/m%C3%A9canismes#non-applicable-si",
"type": "string"
},
"toutes ces conditions": {
"title": "toutes ces conditions",
"markdownDescription": "Renvoie oui si toutes toutes les règles listées sont applicables.\n\nÉquivaut à un et logique.\n\nDoc: https://publi.codes/docs/api/m%C3%A9canismes#toutes-ces-conditions",
"type": "array",
"items": {
"$ref": "#/definitions/mecanismes/valeur"
}
},
"une de ces conditions": {
"title": "une de ces conditions",
"markdownDescription": "Renvoie oui si l’une des règles listées est applicable.\n\nÉquivaut à un ou logique.\n\nDoc: https://publi.codes/docs/api/m%C3%A9canismes#une-de-ces-conditions",
"type": "array",
"items": {
"$ref": "#/definitions/mecanismes/valeur"
}
},
"somme": {
"title": "somme",
"markdownDescription": "Somme de chaque terme de la liste.\n\nSi un des termes n’est pas applicable, il vaut zéro.\n\nOn peut retrancher des valeurs grâce à l’opérateur unaire -\n\nDoc: https://publi.codes/docs/api/m%C3%A9canismes#somme",
"type": "array",
"items": {
"$ref": "#/definitions/mecanismes/valeur"
}
},
"plafond": {
"title": "plafond",
"markdownDescription": "Applique un maximum à une valeur.\n\nMécanisme chainable\n\nDoc: https://publi.codes/docs/api/m%C3%A9canismes#plafond",
"$ref": "#/definitions/mecanismes/valeur"
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment