{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://www.samirac.com/schemas/execution-grant.schema.json",
  "title": "SAQ Execution Grant",
  "description": "An immutable, narrow, expiring, replay-resistant execution grant bound to one admitted execution contract.",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "grant_id",
    "schema_version",
    "contract_id",
    "contract_digest",
    "action_digest",
    "actor_id",
    "target_digest",
    "scope",
    "constraints",
    "valid_from",
    "valid_until",
    "nonce",
    "max_uses",
    "issuer",
    "issued_at",
    "revocation_source",
    "grant_digest"
  ],
  "properties": {
    "grant_id": {
      "$ref": "common-definitions.schema.json#/$defs/identifier"
    },
    "schema_version": {
      "const": "0.1"
    },
    "contract_id": {
      "$ref": "common-definitions.schema.json#/$defs/identifier"
    },
    "contract_digest": {
      "$ref": "common-definitions.schema.json#/$defs/digest"
    },
    "action_digest": {
      "$ref": "common-definitions.schema.json#/$defs/digest"
    },
    "actor_id": {
      "$ref": "common-definitions.schema.json#/$defs/identifier"
    },
    "target_digest": {
      "$ref": "common-definitions.schema.json#/$defs/digest"
    },
    "scope": {
      "type": "array",
      "minItems": 1,
      "uniqueItems": true,
      "items": {
        "$ref": "common-definitions.schema.json#/$defs/identifier"
      }
    },
    "constraints": {
      "$ref": "common-definitions.schema.json#/$defs/constraints"
    },
    "valid_from": {
      "type": "string",
      "format": "date-time"
    },
    "valid_until": {
      "type": "string",
      "format": "date-time"
    },
    "nonce": {
      "type": "string",
      "minLength": 16,
      "maxLength": 256
    },
    "max_uses": {
      "type": "integer",
      "minimum": 1
    },
    "issuer": {
      "$ref": "common-definitions.schema.json#/$defs/identifier"
    },
    "issued_at": {
      "type": "string",
      "format": "date-time"
    },
    "revocation_source": {
      "$ref": "common-definitions.schema.json#/$defs/identifier"
    },
    "grant_digest": {
      "$ref": "common-definitions.schema.json#/$defs/digest"
    },
    "signature": {
      "$ref": "common-definitions.schema.json#/$defs/signature"
    },
    "extensions": {
      "type": "object",
      "additionalProperties": true
    }
  }
}
