{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "wtfp.catalog/v1",
  "title": "WTF-P action catalog",
  "type": "object",
  "additionalProperties": false,
  "required": ["schema", "version", "namespace", "counts", "actions", "operations", "skills"],
  "properties": {
    "schema": { "const": "wtfp.catalog/v1" },
    "version": { "const": 1 },
    "namespace": { "const": "wtfp" },
    "counts": {
      "type": "object",
      "additionalProperties": false,
      "required": ["actions", "domainActions", "operations", "skills"],
      "properties": {
        "actions": { "const": 36 },
        "domainActions": { "const": 31 },
        "operations": { "const": 5 },
        "skills": { "const": 7 }
      }
    },
    "actions": {
      "type": "array",
      "minItems": 36,
      "maxItems": 36,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": ["id", "contract"],
        "properties": {
          "id": { "type": "string" },
          "contract": { "type": "string", "pattern": "^protocol://actions/.+\\.json$" }
        }
      }
    },
    "operations": {
      "type": "object",
      "additionalProperties": false,
      "required": ["id", "actions"],
      "properties": {
        "id": { "const": "product-operations" },
        "actions": { "type": "array", "minItems": 5, "maxItems": 5, "items": { "type": "string" } }
      }
    },
    "skills": {
      "type": "array",
      "minItems": 7,
      "maxItems": 7,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": ["id", "actions"],
        "properties": {
          "id": { "type": "string", "pattern": "^wtfp-" },
          "actions": { "type": "array", "minItems": 1, "items": { "type": "string" } }
        }
      }
    }
  }
}
