{
  "$schema": "https://json-schema.org/draft/2019-09/schema#",
  "additionalProperties": false,
  "definitions": {
    "blkio_limit": {
      "additionalProperties": false,
      "properties": {
        "path": {
          "type": "string"
        },
        "rate": {
          "type": [
            "integer",
            "string"
          ]
        }
      },
      "type": "object"
    },
    "blkio_weight": {
      "additionalProperties": false,
      "properties": {
        "path": {
          "type": "string"
        },
        "weight": {
          "type": "integer"
        }
      },
      "type": "object"
    },
    "command": {
      "oneOf": [
        {
          "type": "null"
        },
        {
          "type": "string"
        },
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      ]
    },
    "config": {
      "additionalProperties": false,
      "id": "#/definitions/config",
      "patternProperties": {
        "^x-": {}
      },
      "properties": {
        "external": {
          "properties": {
            "name": {
              "deprecated": true,
              "type": "string"
            }
          },
          "type": [
            "boolean",
            "object"
          ]
        },
        "file": {
          "type": "string"
        },
        "labels": {
          "$ref": "#/definitions/list_or_dict"
        },
        "name": {
          "type": "string"
        },
        "template_driver": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "constraints": {
      "service": {
        "anyOf": [
          {
            "required": [
              "build"
            ]
          },
          {
            "required": [
              "image"
            ]
          }
        ],
        "id": "#/definitions/constraints/service",
        "properties": {
          "build": {
            "required": [
              "context"
            ]
          }
        }
      }
    },
    "deployment": {
      "additionalProperties": false,
      "id": "#/definitions/deployment",
      "patternProperties": {
        "^x-": {}
      },
      "properties": {
        "endpoint_mode": {
          "type": "string"
        },
        "labels": {
          "$ref": "#/definitions/list_or_dict"
        },
        "mode": {
          "type": "string"
        },
        "placement": {
          "additionalProperties": false,
          "patternProperties": {
            "^x-": {}
          },
          "properties": {
            "constraints": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "max_replicas_per_node": {
              "type": "integer"
            },
            "preferences": {
              "items": {
                "additionalProperties": false,
                "patternProperties": {
                  "^x-": {}
                },
                "properties": {
                  "spread": {
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "replicas": {
          "type": "integer"
        },
        "resources": {
          "additionalProperties": false,
          "patternProperties": {
            "^x-": {}
          },
          "properties": {
            "limits": {
              "additionalProperties": false,
              "patternProperties": {
                "^x-": {}
              },
              "properties": {
                "cpus": {
                  "type": [
                    "number",
                    "string"
                  ]
                },
                "memory": {
                  "type": "string"
                },
                "pids": {
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "reservations": {
              "additionalProperties": false,
              "patternProperties": {
                "^x-": {}
              },
              "properties": {
                "cpus": {
                  "type": [
                    "number",
                    "string"
                  ]
                },
                "devices": {
                  "$ref": "#/definitions/devices"
                },
                "generic_resources": {
                  "$ref": "#/definitions/generic_resources"
                },
                "memory": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "restart_policy": {
          "additionalProperties": false,
          "patternProperties": {
            "^x-": {}
          },
          "properties": {
            "condition": {
              "type": "string"
            },
            "delay": {
              "format": "duration",
              "type": "string"
            },
            "max_attempts": {
              "type": "integer"
            },
            "window": {
              "format": "duration",
              "type": "string"
            }
          },
          "type": "object"
        },
        "rollback_config": {
          "additionalProperties": false,
          "patternProperties": {
            "^x-": {}
          },
          "properties": {
            "delay": {
              "format": "duration",
              "type": "string"
            },
            "failure_action": {
              "type": "string"
            },
            "max_failure_ratio": {
              "type": "number"
            },
            "monitor": {
              "format": "duration",
              "type": "string"
            },
            "order": {
              "enum": [
                "start-first",
                "stop-first"
              ],
              "type": "string"
            },
            "parallelism": {
              "type": "integer"
            }
          },
          "type": "object"
        },
        "update_config": {
          "additionalProperties": false,
          "patternProperties": {
            "^x-": {}
          },
          "properties": {
            "delay": {
              "format": "duration",
              "type": "string"
            },
            "failure_action": {
              "type": "string"
            },
            "max_failure_ratio": {
              "type": "number"
            },
            "monitor": {
              "format": "duration",
              "type": "string"
            },
            "order": {
              "enum": [
                "start-first",
                "stop-first"
              ],
              "type": "string"
            },
            "parallelism": {
              "type": "integer"
            }
          },
          "type": "object"
        }
      },
      "type": [
        "object",
        "null"
      ]
    },
    "devices": {
      "id": "#/definitions/devices",
      "items": {
        "additionalProperties": false,
        "patternProperties": {
          "^x-": {}
        },
        "properties": {
          "capabilities": {
            "$ref": "#/definitions/list_of_strings"
          },
          "count": {
            "type": [
              "string",
              "integer"
            ]
          },
          "device_ids": {
            "$ref": "#/definitions/list_of_strings"
          },
          "driver": {
            "type": "string"
          },
          "options": {
            "$ref": "#/definitions/list_or_dict"
          }
        },
        "type": "object"
      },
      "type": "array"
    },
    "generic_resources": {
      "id": "#/definitions/generic_resources",
      "items": {
        "additionalProperties": false,
        "patternProperties": {
          "^x-": {}
        },
        "properties": {
          "discrete_resource_spec": {
            "additionalProperties": false,
            "patternProperties": {
              "^x-": {}
            },
            "properties": {
              "kind": {
                "type": "string"
              },
              "value": {
                "type": "number"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "type": "array"
    },
    "healthcheck": {
      "additionalProperties": false,
      "id": "#/definitions/healthcheck",
      "patternProperties": {
        "^x-": {}
      },
      "properties": {
        "disable": {
          "type": "boolean"
        },
        "interval": {
          "format": "duration",
          "type": "string"
        },
        "retries": {
          "type": "number"
        },
        "start_interval": {
          "format": "duration",
          "type": "string"
        },
        "start_period": {
          "format": "duration",
          "type": "string"
        },
        "test": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ]
        },
        "timeout": {
          "format": "duration",
          "type": "string"
        }
      },
      "type": "object"
    },
    "include": {
      "id": "#/definitions/include",
      "oneOf": [
        {
          "type": "string"
        },
        {
          "additionalProperties": false,
          "properties": {
            "env_file": {
              "$ref": "#/definitions/string_or_list"
            },
            "path": {
              "$ref": "#/definitions/string_or_list"
            },
            "project_directory": {
              "type": "string"
            }
          },
          "type": "object"
        }
      ]
    },
    "list_of_strings": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "uniqueItems": true
    },
    "list_or_dict": {
      "oneOf": [
        {
          "additionalProperties": false,
          "patternProperties": {
            ".+": {
              "type": [
                "string",
                "number",
                "boolean",
                "null"
              ]
            }
          },
          "type": "object"
        },
        {
          "items": {
            "type": "string"
          },
          "type": "array",
          "uniqueItems": true
        }
      ]
    },
    "network": {
      "additionalProperties": false,
      "id": "#/definitions/network",
      "patternProperties": {
        "^x-": {}
      },
      "properties": {
        "attachable": {
          "type": "boolean"
        },
        "driver": {
          "type": "string"
        },
        "driver_opts": {
          "patternProperties": {
            "^.+$": {
              "type": [
                "string",
                "number"
              ]
            }
          },
          "type": "object"
        },
        "enable_ipv6": {
          "type": "boolean"
        },
        "external": {
          "additionalProperties": false,
          "patternProperties": {
            "^x-": {}
          },
          "properties": {
            "name": {
              "deprecated": true,
              "type": "string"
            }
          },
          "type": [
            "boolean",
            "object"
          ]
        },
        "internal": {
          "type": "boolean"
        },
        "ipam": {
          "additionalProperties": false,
          "patternProperties": {
            "^x-": {}
          },
          "properties": {
            "config": {
              "items": {
                "additionalProperties": false,
                "patternProperties": {
                  "^x-": {}
                },
                "properties": {
                  "aux_addresses": {
                    "additionalProperties": false,
                    "patternProperties": {
                      "^.+$": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "gateway": {
                    "type": "string"
                  },
                  "ip_range": {
                    "type": "string"
                  },
                  "subnet": {
                    "format": "subnet_ip_address",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "driver": {
              "type": "string"
            },
            "options": {
              "additionalProperties": false,
              "patternProperties": {
                "^.+$": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "labels": {
          "$ref": "#/definitions/list_or_dict"
        },
        "name": {
          "type": "string"
        }
      },
      "type": [
        "object",
        "null"
      ]
    },
    "secret": {
      "additionalProperties": false,
      "id": "#/definitions/secret",
      "patternProperties": {
        "^x-": {}
      },
      "properties": {
        "driver": {
          "type": "string"
        },
        "driver_opts": {
          "patternProperties": {
            "^.+$": {
              "type": [
                "string",
                "number"
              ]
            }
          },
          "type": "object"
        },
        "environment": {
          "type": "string"
        },
        "external": {
          "properties": {
            "name": {
              "type": "string"
            }
          },
          "type": [
            "boolean",
            "object"
          ]
        },
        "file": {
          "type": "string"
        },
        "labels": {
          "$ref": "#/definitions/list_or_dict"
        },
        "name": {
          "type": "string"
        },
        "template_driver": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "service": {
      "additionalProperties": false,
      "id": "#/definitions/service",
      "patternProperties": {
        "^x-": {}
      },
      "properties": {
        "annotations": {
          "$ref": "#/definitions/list_or_dict"
        },
        "attach": {
          "type": "boolean"
        },
        "blkio_config": {
          "additionalProperties": false,
          "properties": {
            "device_read_bps": {
              "items": {
                "$ref": "#/definitions/blkio_limit"
              },
              "type": "array"
            },
            "device_read_iops": {
              "items": {
                "$ref": "#/definitions/blkio_limit"
              },
              "type": "array"
            },
            "device_write_bps": {
              "items": {
                "$ref": "#/definitions/blkio_limit"
              },
              "type": "array"
            },
            "device_write_iops": {
              "items": {
                "$ref": "#/definitions/blkio_limit"
              },
              "type": "array"
            },
            "weight": {
              "type": "integer"
            },
            "weight_device": {
              "items": {
                "$ref": "#/definitions/blkio_weight"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "build": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "additionalProperties": false,
              "patternProperties": {
                "^x-": {}
              },
              "properties": {
                "additional_contexts": {
                  "$ref": "#/definitions/list_or_dict"
                },
                "args": {
                  "$ref": "#/definitions/list_or_dict"
                },
                "cache_from": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "cache_to": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "context": {
                  "type": "string"
                },
                "dockerfile": {
                  "type": "string"
                },
                "dockerfile_inline": {
                  "type": "string"
                },
                "extra_hosts": {
                  "$ref": "#/definitions/list_or_dict"
                },
                "isolation": {
                  "type": "string"
                },
                "labels": {
                  "$ref": "#/definitions/list_or_dict"
                },
                "network": {
                  "type": "string"
                },
                "no_cache": {
                  "type": "boolean"
                },
                "platforms": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "privileged": {
                  "type": "boolean"
                },
                "pull": {
                  "type": "boolean"
                },
                "secrets": {
                  "$ref": "#/definitions/service_config_or_secret"
                },
                "shm_size": {
                  "type": [
                    "integer",
                    "string"
                  ]
                },
                "ssh": {
                  "$ref": "#/definitions/list_or_dict"
                },
                "tags": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "target": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          ]
        },
        "cap_add": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "uniqueItems": true
        },
        "cap_drop": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "uniqueItems": true
        },
        "cgroup": {
          "enum": [
            "host",
            "private"
          ],
          "type": "string"
        },
        "cgroup_parent": {
          "type": "string"
        },
        "command": {
          "$ref": "#/definitions/command"
        },
        "configs": {
          "$ref": "#/definitions/service_config_or_secret"
        },
        "container_name": {
          "type": "string"
        },
        "cpu_count": {
          "minimum": 0,
          "type": "integer"
        },
        "cpu_percent": {
          "maximum": 100,
          "minimum": 0,
          "type": "integer"
        },
        "cpu_period": {
          "type": [
            "number",
            "string"
          ]
        },
        "cpu_quota": {
          "type": [
            "number",
            "string"
          ]
        },
        "cpu_rt_period": {
          "type": [
            "number",
            "string"
          ]
        },
        "cpu_rt_runtime": {
          "type": [
            "number",
            "string"
          ]
        },
        "cpu_shares": {
          "type": [
            "number",
            "string"
          ]
        },
        "cpus": {
          "type": [
            "number",
            "string"
          ]
        },
        "cpuset": {
          "type": "string"
        },
        "credential_spec": {
          "additionalProperties": false,
          "patternProperties": {
            "^x-": {}
          },
          "properties": {
            "config": {
              "type": "string"
            },
            "file": {
              "type": "string"
            },
            "registry": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "depends_on": {
          "oneOf": [
            {
              "$ref": "#/definitions/list_of_strings"
            },
            {
              "additionalProperties": false,
              "patternProperties": {
                "^[a-zA-Z0-9._-]+$": {
                  "additionalProperties": false,
                  "properties": {
                    "condition": {
                      "enum": [
                        "service_started",
                        "service_healthy",
                        "service_completed_successfully"
                      ],
                      "type": "string"
                    },
                    "required": {
                      "default": true,
                      "type": "boolean"
                    },
                    "restart": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "condition"
                  ],
                  "type": "object"
                }
              },
              "type": "object"
            }
          ]
        },
        "deploy": {
          "$ref": "#/definitions/deployment"
        },
        "device_cgroup_rules": {
          "$ref": "#/definitions/list_of_strings"
        },
        "devices": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "uniqueItems": true
        },
        "dns": {
          "$ref": "#/definitions/string_or_list"
        },
        "dns_opt": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "uniqueItems": true
        },
        "dns_search": {
          "$ref": "#/definitions/string_or_list"
        },
        "domainname": {
          "type": "string"
        },
        "entrypoint": {
          "$ref": "#/definitions/command"
        },
        "env_file": {
          "$ref": "#/definitions/string_or_list"
        },
        "environment": {
          "$ref": "#/definitions/list_or_dict"
        },
        "expose": {
          "items": {
            "format": "expose",
            "type": [
              "string",
              "number"
            ]
          },
          "type": "array",
          "uniqueItems": true
        },
        "extends": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "additionalProperties": false,
              "properties": {
                "file": {
                  "type": "string"
                },
                "service": {
                  "type": "string"
                }
              },
              "required": [
                "service"
              ],
              "type": "object"
            }
          ]
        },
        "external_links": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "uniqueItems": true
        },
        "extra_hosts": {
          "$ref": "#/definitions/list_or_dict"
        },
        "group_add": {
          "items": {
            "type": [
              "string",
              "number"
            ]
          },
          "type": "array",
          "uniqueItems": true
        },
        "healthcheck": {
          "$ref": "#/definitions/healthcheck"
        },
        "hostname": {
          "type": "string"
        },
        "image": {
          "type": "string"
        },
        "init": {
          "type": "boolean"
        },
        "ipc": {
          "type": "string"
        },
        "isolation": {
          "type": "string"
        },
        "labels": {
          "$ref": "#/definitions/list_or_dict"
        },
        "links": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "uniqueItems": true
        },
        "logging": {
          "additionalProperties": false,
          "patternProperties": {
            "^x-": {}
          },
          "properties": {
            "driver": {
              "type": "string"
            },
            "options": {
              "patternProperties": {
                "^.+$": {
                  "type": [
                    "string",
                    "number",
                    "null"
                  ]
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "mac_address": {
          "type": "string"
        },
        "mem_limit": {
          "type": [
            "number",
            "string"
          ]
        },
        "mem_reservation": {
          "type": [
            "string",
            "integer"
          ]
        },
        "mem_swappiness": {
          "type": "integer"
        },
        "memswap_limit": {
          "type": [
            "number",
            "string"
          ]
        },
        "network_mode": {
          "type": "string"
        },
        "networks": {
          "oneOf": [
            {
              "$ref": "#/definitions/list_of_strings"
            },
            {
              "additionalProperties": false,
              "patternProperties": {
                "^[a-zA-Z0-9._-]+$": {
                  "oneOf": [
                    {
                      "additionalProperties": false,
                      "patternProperties": {
                        "^x-": {}
                      },
                      "properties": {
                        "aliases": {
                          "$ref": "#/definitions/list_of_strings"
                        },
                        "ipv4_address": {
                          "type": "string"
                        },
                        "ipv6_address": {
                          "type": "string"
                        },
                        "link_local_ips": {
                          "$ref": "#/definitions/list_of_strings"
                        },
                        "priority": {
                          "type": "number"
                        }
                      },
                      "type": "object"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "type": "object"
            }
          ]
        },
        "oom_kill_disable": {
          "type": "boolean"
        },
        "oom_score_adj": {
          "maximum": 1000,
          "minimum": -1000,
          "type": "integer"
        },
        "pid": {
          "type": [
            "string",
            "null"
          ]
        },
        "pids_limit": {
          "type": [
            "number",
            "string"
          ]
        },
        "platform": {
          "type": "string"
        },
        "ports": {
          "items": {
            "oneOf": [
              {
                "format": "ports",
                "type": "number"
              },
              {
                "format": "ports",
                "type": "string"
              },
              {
                "additionalProperties": false,
                "patternProperties": {
                  "^x-": {}
                },
                "properties": {
                  "host_ip": {
                    "type": "string"
                  },
                  "mode": {
                    "type": "string"
                  },
                  "protocol": {
                    "type": "string"
                  },
                  "published": {
                    "type": [
                      "string",
                      "integer"
                    ]
                  },
                  "target": {
                    "type": "integer"
                  }
                },
                "type": "object"
              }
            ]
          },
          "type": "array",
          "uniqueItems": true
        },
        "privileged": {
          "type": "boolean"
        },
        "profiles": {
          "$ref": "#/definitions/list_of_strings"
        },
        "pull_policy": {
          "enum": [
            "always",
            "never",
            "if_not_present",
            "build",
            "missing"
          ],
          "type": "string"
        },
        "read_only": {
          "type": "boolean"
        },
        "restart": {
          "type": "string"
        },
        "runtime": {
          "type": "string"
        },
        "scale": {
          "type": "integer"
        },
        "secrets": {
          "$ref": "#/definitions/service_config_or_secret"
        },
        "security_opt": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "uniqueItems": true
        },
        "shm_size": {
          "type": [
            "number",
            "string"
          ]
        },
        "stdin_open": {
          "type": "boolean"
        },
        "stop_grace_period": {
          "format": "duration",
          "type": "string"
        },
        "stop_signal": {
          "type": "string"
        },
        "storage_opt": {
          "type": "object"
        },
        "sysctls": {
          "$ref": "#/definitions/list_or_dict"
        },
        "tmpfs": {
          "$ref": "#/definitions/string_or_list"
        },
        "tty": {
          "type": "boolean"
        },
        "ulimits": {
          "patternProperties": {
            "^[a-z]+$": {
              "oneOf": [
                {
                  "type": "integer"
                },
                {
                  "additionalProperties": false,
                  "patternProperties": {
                    "^x-": {}
                  },
                  "properties": {
                    "hard": {
                      "type": "integer"
                    },
                    "soft": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "soft",
                    "hard"
                  ],
                  "type": "object"
                }
              ]
            }
          },
          "type": "object"
        },
        "user": {
          "type": "string"
        },
        "userns_mode": {
          "type": "string"
        },
        "uts": {
          "type": "string"
        },
        "volumes": {
          "items": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "additionalProperties": false,
                "patternProperties": {
                  "^x-": {}
                },
                "properties": {
                  "bind": {
                    "additionalProperties": false,
                    "patternProperties": {
                      "^x-": {}
                    },
                    "properties": {
                      "create_host_path": {
                        "type": "boolean"
                      },
                      "propagation": {
                        "type": "string"
                      },
                      "selinux": {
                        "enum": [
                          "z",
                          "Z"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "consistency": {
                    "type": "string"
                  },
                  "read_only": {
                    "type": "boolean"
                  },
                  "source": {
                    "type": "string"
                  },
                  "target": {
                    "type": "string"
                  },
                  "tmpfs": {
                    "additionalProperties": false,
                    "patternProperties": {
                      "^x-": {}
                    },
                    "properties": {
                      "mode": {
                        "type": "number"
                      },
                      "size": {
                        "oneOf": [
                          {
                            "minimum": 0,
                            "type": "integer"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    },
                    "type": "object"
                  },
                  "type": {
                    "type": "string"
                  },
                  "volume": {
                    "additionalProperties": false,
                    "patternProperties": {
                      "^x-": {}
                    },
                    "properties": {
                      "nocopy": {
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  }
                },
                "required": [
                  "type"
                ],
                "type": "object"
              }
            ]
          },
          "type": "array",
          "uniqueItems": true
        },
        "volumes_from": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "uniqueItems": true
        },
        "working_dir": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "service_config_or_secret": {
      "items": {
        "oneOf": [
          {
            "type": "string"
          },
          {
            "additionalProperties": false,
            "patternProperties": {
              "^x-": {}
            },
            "properties": {
              "gid": {
                "type": "string"
              },
              "mode": {
                "type": "number"
              },
              "source": {
                "type": "string"
              },
              "target": {
                "type": "string"
              },
              "uid": {
                "type": "string"
              }
            },
            "type": "object"
          }
        ]
      },
      "type": "array"
    },
    "string_or_list": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "#/definitions/list_of_strings"
        }
      ]
    },
    "volume": {
      "additionalProperties": false,
      "id": "#/definitions/volume",
      "patternProperties": {
        "^x-": {}
      },
      "properties": {
        "driver": {
          "type": "string"
        },
        "driver_opts": {
          "patternProperties": {
            "^.+$": {
              "type": [
                "string",
                "number"
              ]
            }
          },
          "type": "object"
        },
        "external": {
          "additionalProperties": false,
          "patternProperties": {
            "^x-": {}
          },
          "properties": {
            "name": {
              "deprecated": true,
              "type": "string"
            }
          },
          "type": [
            "boolean",
            "object"
          ]
        },
        "labels": {
          "$ref": "#/definitions/list_or_dict"
        },
        "name": {
          "type": "string"
        }
      },
      "type": [
        "object",
        "null"
      ]
    }
  },
  "description": "The Compose file is a YAML file defining a multi-containers based application.",
  "id": "compose_spec.json",
  "patternProperties": {
    "^x-": {}
  },
  "properties": {
    "configs": {
      "additionalProperties": false,
      "id": "#/properties/configs",
      "patternProperties": {
        "^[a-zA-Z0-9._-]+$": {
          "$ref": "#/definitions/config"
        }
      },
      "type": "object"
    },
    "include": {
      "description": "compose sub-projects to be included.",
      "items": {
        "$ref": "#/definitions/include",
        "type": "object"
      },
      "type": "array"
    },
    "name": {
      "description": "define the Compose project name, until user defines one explicitly.",
      "pattern": "^[a-z0-9][a-z0-9_-]*$",
      "type": "string"
    },
    "networks": {
      "id": "#/properties/networks",
      "patternProperties": {
        "^[a-zA-Z0-9._-]+$": {
          "$ref": "#/definitions/network"
        }
      },
      "type": "object"
    },
    "secrets": {
      "additionalProperties": false,
      "id": "#/properties/secrets",
      "patternProperties": {
        "^[a-zA-Z0-9._-]+$": {
          "$ref": "#/definitions/secret"
        }
      },
      "type": "object"
    },
    "services": {
      "additionalProperties": false,
      "id": "#/properties/services",
      "patternProperties": {
        "^[a-zA-Z0-9._-]+$": {
          "$ref": "#/definitions/service"
        }
      },
      "type": "object"
    },
    "version": {
      "description": "declared for backward compatibility, ignored.",
      "type": "string"
    },
    "volumes": {
      "additionalProperties": false,
      "id": "#/properties/volumes",
      "patternProperties": {
        "^[a-zA-Z0-9._-]+$": {
          "$ref": "#/definitions/volume"
        }
      },
      "type": "object"
    }
  },
  "title": "Compose Specification",
  "type": "object"
}