226 lines
6.1 KiB
JSON
226 lines
6.1 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "urn:atlas:suite-planning:request:v6",
|
|
"title": "Suite planning request",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"campaign",
|
|
"suite",
|
|
"cases"
|
|
],
|
|
"properties": {
|
|
"campaign": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"suite": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"cases": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"maxItems": 400,
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"alias",
|
|
"description"
|
|
],
|
|
"properties": {
|
|
"case_type": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
],
|
|
"maxLength": 32768,
|
|
"description": "At most 32768 UTF-8 bytes; byte limit is enforced by the server."
|
|
},
|
|
"description": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
],
|
|
"maxLength": 32768,
|
|
"description": "At most 32768 UTF-8 bytes; byte limit is enforced by the server."
|
|
},
|
|
"functional_area": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
],
|
|
"maxLength": 32768,
|
|
"description": "At most 32768 UTF-8 bytes; byte limit is enforced by the server."
|
|
},
|
|
"functional_group": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
],
|
|
"maxLength": 32768,
|
|
"description": "At most 32768 UTF-8 bytes; byte limit is enforced by the server."
|
|
},
|
|
"functional_group_name": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
],
|
|
"maxLength": 32768,
|
|
"description": "At most 32768 UTF-8 bytes; byte limit is enforced by the server."
|
|
},
|
|
"operating_condition": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
],
|
|
"maxLength": 32768,
|
|
"description": "At most 32768 UTF-8 bytes; byte limit is enforced by the server."
|
|
},
|
|
"preconditions": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
],
|
|
"maxLength": 32768,
|
|
"description": "At most 32768 UTF-8 bytes; byte limit is enforced by the server."
|
|
},
|
|
"success_criteria": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
],
|
|
"maxLength": 32768,
|
|
"description": "At most 32768 UTF-8 bytes; byte limit is enforced by the server."
|
|
},
|
|
"swci": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
],
|
|
"maxLength": 32768,
|
|
"description": "At most 32768 UTF-8 bytes; byte limit is enforced by the server."
|
|
},
|
|
"target": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
],
|
|
"maxLength": 32768,
|
|
"description": "At most 32768 UTF-8 bytes; byte limit is enforced by the server."
|
|
},
|
|
"verification_method": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
],
|
|
"maxLength": 32768,
|
|
"description": "At most 32768 UTF-8 bytes; byte limit is enforced by the server."
|
|
},
|
|
"verifies": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
],
|
|
"maxLength": 32768,
|
|
"description": "At most 32768 UTF-8 bytes; byte limit is enforced by the server."
|
|
},
|
|
"alias": {
|
|
"type": "string",
|
|
"pattern": "^CASE-[A-Za-z0-9_-]{1,48}$"
|
|
},
|
|
"campaign": {
|
|
"type": "string",
|
|
"description": "If supplied, must exactly match the top-level campaign."
|
|
},
|
|
"suite": {
|
|
"type": "string",
|
|
"description": "If supplied, must exactly match the top-level suite."
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"routing": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"allow_external": {
|
|
"type": "boolean",
|
|
"default": false
|
|
},
|
|
"allowed_external_providers": {
|
|
"type": "array",
|
|
"uniqueItems": true,
|
|
"items": {
|
|
"enum": [
|
|
"claude",
|
|
"codex"
|
|
]
|
|
},
|
|
"default": []
|
|
}
|
|
},
|
|
"allOf": [
|
|
{
|
|
"if": {
|
|
"required": [
|
|
"allow_external"
|
|
],
|
|
"properties": {
|
|
"allow_external": {
|
|
"const": true
|
|
}
|
|
}
|
|
},
|
|
"then": {
|
|
"required": [
|
|
"allowed_external_providers"
|
|
],
|
|
"properties": {
|
|
"allowed_external_providers": {
|
|
"minItems": 1
|
|
}
|
|
}
|
|
},
|
|
"else": {
|
|
"properties": {
|
|
"allowed_external_providers": {
|
|
"maxItems": 0
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"execution": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"strategy": {
|
|
"const": "whole_suite",
|
|
"default": "whole_suite"
|
|
},
|
|
"max_seconds": {
|
|
"type": "integer",
|
|
"minimum": 10,
|
|
"maximum": 7200,
|
|
"default": 1800
|
|
},
|
|
"max_cost_usd": {
|
|
"type": [
|
|
"number",
|
|
"null"
|
|
],
|
|
"exclusiveMinimum": 0,
|
|
"deprecated": true,
|
|
"description": "Accepted for compatibility only. Estimated cost is informational and never enforced."
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"description": "Additional server checks enforce unique aliases, fixed campaign/suite ownership, credential and data-scope permissions, 1 MiB request bytes, capacity, and idempotency. JSON Schema validation alone does not authorize or preflight a job."
|
|
}
|