{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/canonical/main/json-schema/canonical-quota-group-schema.json",
  "title": "QuotaGroup",
  "description": "Defines a quota group for one or more snaps.",
  "x-generated": "2026-10-04",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/canonical-asynchronous-api-openapi.yml#/components/schemas/QuotaGroup",
  "type": "object",
  "required": [
    "group-name"
  ],
  "properties": {
    "group-name": {
      "type": "string",
      "description": "The name of the quota group."
    },
    "subgroups": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "lists any subgroups this quota group contains."
    },
    "parent": {
      "type": "string",
      "description": "Contains the parent quota group name, if this group is a subgroup."
    },
    "snaps": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Lists any snaps that belong to this quota group."
    },
    "services": {
      "type": "string",
      "description": "Only for a subgroup, lists specific services belonging to a snap in the parent group."
    },
    "constraints": {
      "type": "object",
      "description": "The types and values of limits defined for this quota group.",
      "properties": {
        "memory": {
          "type": "integer",
          "format": "int64",
          "description": "Memory usage limit in bytes."
        },
        "cpu": {
          "type": "string",
          "description": "Includes percentage as a limit."
        },
        "cpu-set": {
          "type": "string",
          "description": "Per-cpu limits, with cpus listing included cores."
        },
        "threads": {
          "type": "integer",
          "description": "Maximum number of threads for this quota group."
        },
        "journal": {
          "type": "object",
          "description": "Number of messages logged per time period.",
          "properties": {
            "size": {
              "type": "integer",
              "format": "int64"
            },
            "rate-count": {
              "type": "integer"
            },
            "rate-period": {
              "type": "integer"
            }
          }
        }
      }
    },
    "current": {
      "type": "object",
      "description": "Contains the current usage of memory and task quotas",
      "additionalProperties": true
    }
  }
}