{
  "AllowFailure": {
    "resourceType": "GitLab::CI::AllowFailure",
    "kind": "property",
    "lexicon": "gitlab"
  },
  "Artifacts": {
    "resourceType": "GitLab::CI::Artifacts",
    "kind": "property",
    "lexicon": "gitlab",
    "constraints": {
      "untracked": {
        "default": false
      },
      "when": {
        "default": "on_success",
        "enum": [
          "on_success",
          "on_failure",
          "always"
        ]
      },
      "access": {
        "default": "all",
        "enum": [
          "none",
          "developer",
          "all"
        ]
      },
      "expire_in": {
        "default": "30 days"
      }
    }
  },
  "AutoCancel": {
    "resourceType": "GitLab::CI::AutoCancel",
    "kind": "property",
    "lexicon": "gitlab",
    "constraints": {
      "on_job_failure": {
        "default": "none",
        "enum": [
          "none",
          "all"
        ]
      },
      "on_new_commit": {
        "enum": [
          "conservative",
          "interruptible",
          "none"
        ]
      }
    }
  },
  "Cache": {
    "resourceType": "GitLab::CI::Cache",
    "kind": "property",
    "lexicon": "gitlab",
    "constraints": {
      "policy": {
        "pattern": "pull-push|pull|push|\\$\\w{1,255}",
        "default": "pull-push"
      },
      "unprotect": {
        "default": false
      },
      "untracked": {
        "default": false
      },
      "when": {
        "default": "on_success",
        "enum": [
          "on_success",
          "on_failure",
          "always"
        ]
      }
    }
  },
  "Default": {
    "resourceType": "GitLab::CI::Default",
    "kind": "resource",
    "lexicon": "gitlab"
  },
  "Environment": {
    "resourceType": "GitLab::CI::Environment",
    "kind": "property",
    "lexicon": "gitlab",
    "constraints": {
      "name": {
        "minLength": 1
      },
      "url": {
        "pattern": "^(https?://.+|\\$[A-Za-z]+)",
        "format": "uri"
      },
      "action": {
        "default": "start",
        "enum": [
          "start",
          "prepare",
          "stop",
          "verify",
          "access"
        ]
      },
      "deployment_tier": {
        "enum": [
          "production",
          "staging",
          "testing",
          "development",
          "other"
        ]
      }
    }
  },
  "Image": {
    "resourceType": "GitLab::CI::Image",
    "kind": "property",
    "lexicon": "gitlab",
    "constraints": {
      "name": {
        "minLength": 1
      },
      "pull_policy": {
        "default": "always"
      }
    }
  },
  "Include": {
    "resourceType": "GitLab::CI::Include",
    "kind": "property",
    "lexicon": "gitlab",
    "constraints": {
      "project": {
        "pattern": "(?:\\S/\\S|\\$\\S+)"
      },
      "local": {
        "pattern": "\\.ya?ml$",
        "format": "uri-reference"
      },
      "template": {
        "pattern": "\\.ya?ml$",
        "format": "uri-reference"
      },
      "component": {
        "format": "uri-reference"
      },
      "remote": {
        "pattern": "^https?://.+\\.ya?ml$",
        "format": "uri-reference"
      }
    }
  },
  "Inherit": {
    "resourceType": "GitLab::CI::Inherit",
    "kind": "property",
    "lexicon": "gitlab"
  },
  "Job": {
    "resourceType": "GitLab::CI::Job",
    "kind": "resource",
    "lexicon": "gitlab",
    "constraints": {
      "coverage": {
        "pattern": "^/.+/$",
        "format": "regex"
      }
    }
  },
  "Need": {
    "resourceType": "GitLab::CI::Need",
    "kind": "property",
    "lexicon": "gitlab"
  },
  "Parallel": {
    "resourceType": "GitLab::CI::Parallel",
    "kind": "property",
    "lexicon": "gitlab"
  },
  "Release": {
    "resourceType": "GitLab::CI::Release",
    "kind": "property",
    "lexicon": "gitlab",
    "constraints": {
      "tag_name": {
        "minLength": 1
      },
      "description": {
        "minLength": 1
      },
      "released_at": {
        "pattern": "^(?:[1-9]\\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:Z|[+-][01]\\d:[0-5]\\d)$",
        "format": "date-time"
      }
    }
  },
  "Retry": {
    "resourceType": "GitLab::CI::Retry",
    "kind": "property",
    "lexicon": "gitlab"
  },
  "Rule": {
    "resourceType": "GitLab::CI::Rule",
    "kind": "property",
    "lexicon": "gitlab"
  },
  "Service": {
    "resourceType": "GitLab::CI::Service",
    "kind": "property",
    "lexicon": "gitlab",
    "constraints": {
      "name": {
        "minLength": 1
      },
      "pull_policy": {
        "default": "always"
      },
      "alias": {
        "minLength": 1
      }
    }
  },
  "Trigger": {
    "resourceType": "GitLab::CI::Trigger",
    "kind": "property",
    "lexicon": "gitlab",
    "constraints": {
      "project": {
        "pattern": "(?:\\S/\\S|\\$\\S+)"
      },
      "strategy": {
        "enum": [
          "depend"
        ]
      }
    }
  },
  "Workflow": {
    "resourceType": "GitLab::CI::Workflow",
    "kind": "resource",
    "lexicon": "gitlab"
  },
  "WorkflowRule": {
    "resourceType": "GitLab::CI::WorkflowRule",
    "kind": "property",
    "lexicon": "gitlab",
    "constraints": {
      "when": {
        "enum": [
          "always",
          "never"
        ]
      }
    }
  }
}