Skip to content
182 changes: 177 additions & 5 deletions schemas/dev/mxc-config.schema.0.8.0-dev.json
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,80 @@
}
]
},
"EgressDefault": {
"description": "GA egress default outbound action applied when no egress rule matches.",
"enum": [
"allow",
"deny"
],
"type": "string"
},
"EgressDestinationWire": {
"additionalProperties": false,
"description": "GA outbound destination.",
"properties": {
"cidr": {
"description": "IPv4/IPv6 CIDR range, or a bare IP address.",
"type": "string"
}
},
"required": [
"cidr"
],
"type": "object"
},
"EgressPortWire": {
"additionalProperties": false,
"description": "GA outbound port selector.",
"properties": {
"port": {
"description": "Destination port. Must be omitted for `icmp` (which has no ports); the parser rejects a port paired with `icmp`. When omitted for `tcp`/`udp` the selector matches all ports for that protocol.",
"maximum": 65535.0,
"minimum": 1.0,
"type": [
"integer",
"null"
]
},
"protocol": {
"allOf": [
{
"$ref": "#/definitions/NetworkProtocol"
}
],
"description": "Transport protocol."
}
},
"required": [
"protocol"
],
"type": "object"
},
"EgressRuleWire": {
"additionalProperties": false,
"description": "GA outbound policy rule.",
"properties": {
"ports": {
"default": [],
"description": "Destination ports and protocols. When omitted or empty, the rule matches all ports and all protocols to the listed destinations.",
"items": {
"$ref": "#/definitions/EgressPortWire"
},
"type": "array"
},
"to": {
"description": "Destination CIDR ranges or bare IP addresses. DNS hostnames are rejected by the parser.",
"items": {
"$ref": "#/definitions/EgressDestinationWire"
},
"type": "array"
}
},
"required": [
"to"
],
"type": "object"
},
"Experimental": {
"description": "Experimental features (only honored with `--experimental`). This block is intentionally **permissive** (no `deny_unknown_fields`): experimental backends are in flux, so the schema documents the known shapes for editor help without rejecting in-progress fields. The strict, closed contract is the stable (top-level) surface.",
"properties": {
Expand Down Expand Up @@ -303,6 +377,14 @@
},
"type": "object"
},
"HostLoopbackPolicy": {
"description": "Host loopback ingress policy.",
"enum": [
"allow",
"deny"
],
"type": "string"
},
"IsolationConfigurationId": {
"description": "IsolationSession sizing profile.",
"enum": [
Expand Down Expand Up @@ -497,14 +579,14 @@
"description": "Network access policy.",
"properties": {
"allowLocalNetwork": {
"description": "Allow binding/listening on local IPs and accepting inbound connections.",
"description": "Allow binding/listening on local IPs and accepting inbound connections (legacy schema).",
"type": [
"boolean",
"null"
]
},
"allowedHosts": {
"description": "Hosts explicitly allowed.",
"description": "Hosts explicitly allowed (legacy schema).",
"items": {
"type": "string"
},
Expand All @@ -514,7 +596,7 @@
]
},
"blockedHosts": {
"description": "Hosts explicitly blocked.",
"description": "Hosts explicitly blocked (legacy schema).",
"items": {
"type": "string"
},
Expand All @@ -532,7 +614,18 @@
"type": "null"
}
],
"description": "Default outbound policy when no host rule matches."
"description": "Default outbound policy when no host rule matches (legacy schema)."
},
"egress": {
"anyOf": [
{
"$ref": "#/definitions/NetworkEgress"
},
{
"type": "null"
}
],
"description": "GA outbound policy rules."
},
"enforcementMode": {
"anyOf": [
Expand All @@ -545,6 +638,17 @@
],
"description": "How the policy is enforced."
},
"ingress": {
"anyOf": [
{
"$ref": "#/definitions/NetworkIngress"
},
{
"type": "null"
}
],
"description": "GA inbound policy."
},
"proxy": {
"anyOf": [
{
Expand All @@ -554,7 +658,41 @@
"type": "null"
}
],
"description": "Proxy configuration (one of localhost / builtinTestServer / url)."
"description": "Proxy configuration (legacy localhost / builtinTestServer / url, or GA http)."
}
},
"type": "object"
},
"NetworkEgress": {
"additionalProperties": false,
"description": "GA outbound policy rule set.",
"properties": {
"allow": {
"default": [],
"description": "Rules that allow matching outbound connections.",
"items": {
"$ref": "#/definitions/EgressRuleWire"
},
"type": "array"
},
"default": {
"anyOf": [
{
"$ref": "#/definitions/EgressDefault"
},
{
"type": "null"
}
],
"description": "Default outbound action when no egress rule matches (`allow` or `deny`). When omitted, defaults to `deny` (fail-closed). Setting `default: \"allow\"` expresses the \"allow everything except this deny-list\" model; when GA egress is present it supersedes the legacy `defaultPolicy`."
},
"deny": {
"default": [],
"description": "Rules that deny matching outbound connections.",
"items": {
"$ref": "#/definitions/EgressRuleWire"
},
"type": "array"
}
},
"type": "object"
Expand Down Expand Up @@ -585,6 +723,24 @@
}
]
},
"NetworkIngress": {
"additionalProperties": false,
"description": "GA inbound policy.",
"properties": {
"hostLoopback": {
"anyOf": [
{
"$ref": "#/definitions/HostLoopbackPolicy"
},
{
"type": "null"
}
],
"description": "Whether host loopback can connect inbound to the sandbox."
}
},
"type": "object"
},
"NetworkPolicy": {
"description": "Default network policy.",
"enum": [
Expand All @@ -593,6 +749,15 @@
],
"type": "string"
},
"NetworkProtocol": {
"description": "GA outbound transport protocol.",
"enum": [
"tcp",
"udp",
"icmp"
],
"type": "string"
},
"Phase": {
"description": "State-aware lifecycle phase.",
"enum": [
Expand Down Expand Up @@ -740,6 +905,13 @@
"null"
]
},
"http": {
"description": "GA HTTP proxy URL (parsed into host:port).",
"type": [
"string",
"null"
]
},
"localhost": {
"description": "External localhost proxy port.",
"maximum": 65535.0,
Expand Down
Loading
Loading