{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://schemas.archal.ai/environment-sample-catalog/v1",
  "title": "Archal environment sample catalog",
  "type": "object",
  "additionalProperties": false,
  "required": ["schema", "version", "sampleCount", "environmentCount", "environments"],
  "properties": {
    "schema": { "const": "archal.environment-sample-catalog" },
    "version": { "const": 1 },
    "sampleCount": { "const": 110 },
    "environmentCount": { "const": 22 },
    "environments": {
      "type": "array",
      "minItems": 22,
      "maxItems": 22,
      "items": { "$ref": "#/$defs/environment" }
    }
  },
  "$defs": {
    "environment": {
      "type": "object",
      "additionalProperties": false,
      "required": ["environmentId", "stateContract", "sampleIds", "samples"],
      "properties": {
        "environmentId": {
          "enum": [
            "apify",
            "calcom",
            "clickup",
            "customerio",
            "datadog",
            "discord",
            "github",
            "gitlab",
            "google-workspace",
            "hubspot",
            "jira",
            "linear",
            "ownerrez",
            "pricelabs",
            "ramp",
            "sentry",
            "slack",
            "stripe",
            "supabase",
            "tavily",
            "unipile",
            "webflow"
          ]
        },
        "stateContract": {
          "type": "object",
          "additionalProperties": false,
          "required": ["schema", "version", "formats"],
          "properties": {
            "schema": { "type": "string", "minLength": 1 },
            "version": { "type": "integer", "minimum": 1 },
            "formats": {
              "type": "array",
              "minItems": 1,
              "uniqueItems": true,
              "items": { "enum": ["json", "sql"] }
            }
          }
        },
        "sampleIds": {
          "type": "array",
          "minItems": 5,
          "maxItems": 5,
          "uniqueItems": true,
          "items": {
            "type": "string",
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*\\.[a-z0-9]+(?:-[a-z0-9]+)*\\.v1$"
          }
        },
        "samples": {
          "type": "array",
          "minItems": 5,
          "maxItems": 5,
          "items": { "$ref": "./sample-state.schema.json" }
        }
      }
    }
  }
}
