{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "definitions": {
    "CreditsSnapshot": {
      "properties": {
        "balance": {
          "type": [
            "string",
            "null"
          ]
        },
        "hasCredits": {
          "type": "boolean"
        },
        "unlimited": {
          "type": "boolean"
        }
      },
      "required": [
        "hasCredits",
        "unlimited"
      ],
      "type": "object"
    },
    "PlanType": {
      "enum": [
        "free",
        "go",
        "plus",
        "pro",
        "prolite",
        "team",
        "self_serve_business_usage_based",
        "business",
        "enterprise_cbp_usage_based",
        "enterprise",
        "edu",
        "unknown"
      ],
      "type": "string"
    },
    "RateLimitReachedType": {
      "enum": [
        "rate_limit_reached",
        "workspace_owner_credits_depleted",
        "workspace_member_credits_depleted",
        "workspace_owner_usage_limit_reached",
        "workspace_member_usage_limit_reached"
      ],
      "type": "string"
    },
    "RateLimitSnapshot": {
      "properties": {
        "credits": {
          "anyOf": [
            {
              "$ref": "#/definitions/CreditsSnapshot"
            },
            {
              "type": "null"
            }
          ]
        },
        "limitId": {
          "type": [
            "string",
            "null"
          ]
        },
        "limitName": {
          "type": [
            "string",
            "null"
          ]
        },
        "planType": {
          "anyOf": [
            {
              "$ref": "#/definitions/PlanType"
            },
            {
              "type": "null"
            }
          ]
        },
        "primary": {
          "anyOf": [
            {
              "$ref": "#/definitions/RateLimitWindow"
            },
            {
              "type": "null"
            }
          ]
        },
        "rateLimitReachedType": {
          "anyOf": [
            {
              "$ref": "#/definitions/RateLimitReachedType"
            },
            {
              "type": "null"
            }
          ]
        },
        "secondary": {
          "anyOf": [
            {
              "$ref": "#/definitions/RateLimitWindow"
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "type": "object"
    },
    "RateLimitWindow": {
      "properties": {
        "resetsAt": {
          "format": "int64",
          "type": [
            "integer",
            "null"
          ]
        },
        "usedPercent": {
          "format": "int32",
          "type": "integer"
        },
        "windowDurationMins": {
          "format": "int64",
          "type": [
            "integer",
            "null"
          ]
        }
      },
      "required": [
        "usedPercent"
      ],
      "type": "object"
    }
  },
  "properties": {
    "rateLimits": {
      "$ref": "#/definitions/RateLimitSnapshot"
    }
  },
  "required": [
    "rateLimits"
  ],
  "title": "AccountRateLimitsUpdatedNotification",
  "type": "object"
}