{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/superwall/json-schema/superwall-rule-conditions-1-schema.json",
  "title": "Rule Conditions",
  "description": "The structured targeting rule (RuleConditions AST) produced from the prompt",
  "x-generated": "2026-10-28",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/superwall-openapi.json#/components/schemas/RuleConditions_1",
  "type": "object",
  "properties": {
    "operator": {
      "type": "string",
      "enum": [
        "and",
        "or"
      ]
    },
    "conditions": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/RuleCondition"
      }
    },
    "entitlements": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "entitlement"
              ]
            },
            "rule": {
              "anyOf": [
                {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "enum": [
                        "no_active_entitlements"
                      ]
                    }
                  },
                  "required": [
                    "type"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "enum": [
                        "always_true"
                      ]
                    }
                  },
                  "required": [
                    "type"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "enum": [
                        "entitlement_conditions"
                      ]
                    },
                    "conditions": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "entitlement_condition"
                            ]
                          },
                          "identifier": {
                            "type": "string"
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "active",
                              "inactive",
                              "will_not_renew",
                              "in_trial",
                              "expired",
                              "in_billing_retry"
                            ]
                          }
                        },
                        "required": [
                          "type",
                          "identifier",
                          "status"
                        ],
                        "additionalProperties": false
                      }
                    }
                  },
                  "required": [
                    "type",
                    "conditions"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "enum": [
                        "any_will_not_renew"
                      ]
                    }
                  },
                  "required": [
                    "type"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "enum": [
                        "any_in_trial"
                      ]
                    }
                  },
                  "required": [
                    "type"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "enum": [
                        "any_expired_no_active"
                      ]
                    }
                  },
                  "required": [
                    "type"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "enum": [
                        "any_active_subs_auto_renew_disabled"
                      ]
                    }
                  },
                  "required": [
                    "type"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "enum": [
                        "any_in_billing_retry"
                      ]
                    }
                  },
                  "required": [
                    "type"
                  ],
                  "additionalProperties": false
                }
              ]
            }
          },
          "required": [
            "type",
            "rule"
          ],
          "additionalProperties": false
        }
      ]
    }
  },
  "required": [
    "operator",
    "conditions"
  ],
  "additionalProperties": false,
  "$defs": {
    "RuleCondition": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "condition"
              ]
            },
            "lhs": {
              "anyOf": [
                {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "enum": [
                        "computed_function"
                      ]
                    },
                    "caller": {
                      "type": "string",
                      "enum": [
                        "device",
                        "user",
                        "params",
                        "computed"
                      ]
                    },
                    "name": {
                      "type": "string",
                      "enum": [
                        "minutesSince",
                        "hoursSince",
                        "daysSince",
                        "placementsInHour",
                        "placementsInDay",
                        "placementsInWeek",
                        "placementsInMonth",
                        "placementsSinceInstall"
                      ]
                    },
                    "args": {
                      "type": "string"
                    },
                    "value": {
                      "anyOf": [
                        {
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "required": [
                    "type",
                    "caller",
                    "name",
                    "args"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "enum": [
                        "property"
                      ]
                    },
                    "value": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "type",
                    "value"
                  ],
                  "additionalProperties": false
                }
              ]
            },
            "operator": {
              "type": "string",
              "enum": [
                "eq",
                "neq",
                "c",
                "nc",
                "gt",
                "gte",
                "lt",
                "lte",
                "t",
                "f",
                "null",
                "nnull"
              ]
            },
            "rhs": {
              "anyOf": [
                {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "enum": [
                        "number"
                      ]
                    },
                    "value": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "type",
                    "value"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "enum": [
                        "string"
                      ]
                    },
                    "value": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "type",
                    "value"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "enum": [
                        "boolean"
                      ]
                    },
                    "value": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "type",
                    "value"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "enum": [
                        "computed_function"
                      ]
                    },
                    "caller": {
                      "type": "string",
                      "enum": [
                        "device",
                        "user",
                        "params",
                        "computed"
                      ]
                    },
                    "name": {
                      "type": "string",
                      "enum": [
                        "minutesSince",
                        "hoursSince",
                        "daysSince",
                        "placementsInHour",
                        "placementsInDay",
                        "placementsInWeek",
                        "placementsInMonth",
                        "placementsSinceInstall"
                      ]
                    },
                    "args": {
                      "type": "string"
                    },
                    "value": {
                      "anyOf": [
                        {
                          "type": "string"
                        }
                      ]
                    }
                  },
                  "required": [
                    "type",
                    "caller",
                    "name",
                    "args"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "enum": [
                        "property"
                      ]
                    },
                    "value": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "type",
                    "value"
                  ],
                  "additionalProperties": false
                }
              ]
            }
          },
          "required": [
            "type",
            "lhs",
            "operator",
            "rhs"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "group"
              ]
            },
            "operator": {
              "type": "string",
              "enum": [
                "and",
                "or"
              ]
            },
            "conditions": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/RuleCondition"
              }
            }
          },
          "required": [
            "type",
            "operator",
            "conditions"
          ],
          "additionalProperties": false
        }
      ]
    }
  }
}