{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "workspaceId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 512,
      "pattern": "^[^\\s]+$"
    },
    "uploadId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 512,
      "pattern": "^[^\\s]+$"
    },
    "manifest": {
      "$ref": "#/components/schemas/ProjectAgentPublicationManifest"
    },
    "collaboration": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "polls": {
          "type": "boolean",
          "default": false
        },
        "consensus": {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "enabled": {
              "type": "boolean",
              "default": false
            },
            "rule": {
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "mode": {
                  "enum": [
                    "owner_decides",
                    "no_open_blockers",
                    "n_of_m",
                    "required_reviewers"
                  ]
                },
                "agreementThreshold": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 1000
                },
                "minResponseCount": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 1000
                },
                "requiredReviewerIds": {
                  "type": "array",
                  "maxItems": 1000,
                  "uniqueItems": true,
                  "items": {
                    "type": "string"
                  }
                },
                "delegatedOwnerAgentParticipantId": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "requiredReviewerCondition": {
                  "enum": [
                    "all_required_agree",
                    "no_required_objects",
                    "owner_plus_one_required_agrees",
                    "threshold_no_blockers"
                  ]
                },
                "objectionPolicy": {
                  "enum": [
                    "block",
                    "owner_decision",
                    "ignore"
                  ]
                },
                "countOwnerAgreement": {
                  "type": "boolean"
                },
                "countAgentSignals": {
                  "type": "boolean",
                  "default": false
                },
                "decisionPollCompletion": {
                  "enum": [
                    "closed",
                    "threshold"
                  ],
                  "default": "closed"
                }
              }
            },
            "gate": {
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "minimumHumanApprovals": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 1000
                },
                "requiredReviewerIds": {
                  "type": "array",
                  "uniqueItems": true,
                  "maxItems": 1000,
                  "items": {
                    "type": "string"
                  }
                },
                "quorum": {
                  "anyOf": [
                    {
                      "type": "null"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "group": {
                          "enum": [
                            "owner",
                            "invited_reviewers",
                            "all_human_reviewers"
                          ]
                        },
                        "minimum": {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000
                        }
                      },
                      "required": [
                        "group",
                        "minimum"
                      ],
                      "additionalProperties": false
                    }
                  ]
                },
                "fileRequirement": {
                  "oneOf": [
                    {
                      "type": "object",
                      "properties": {
                        "mode": {
                          "enum": [
                            "none",
                            "all"
                          ]
                        }
                      },
                      "required": [
                        "mode"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "mode": {
                          "const": "selected"
                        },
                        "filePaths": {
                          "type": "array",
                          "maxItems": 10000,
                          "uniqueItems": true,
                          "items": {
                            "type": "string"
                          }
                        }
                      },
                      "required": [
                        "mode",
                        "filePaths"
                      ],
                      "additionalProperties": false
                    }
                  ]
                },
                "agentMode": {
                  "enum": [
                    "prepare_only",
                    "wait_before_implementation"
                  ]
                }
              }
            }
          }
        }
      }
    }
  },
  "required": [
    "workspaceId"
  ],
  "anyOf": [
    {
      "required": [
        "uploadId"
      ]
    },
    {
      "required": [
        "manifest"
      ]
    }
  ]
}