# z.tempo.KeyAuthorization.Rpc

RPC key authorization schema.

## Imports

```ts
import { z } from 'ox/zod'

z.tempo.KeyAuthorization.Rpc
```

## Definition

```ts
export const Rpc = z
  .object({
    account: z.optional(z.nullable(z_Address.Address)),
    allowedCalls: z.optional(z.nullable(z.readonly(z.array(RpcCallScope)))),
    chainId: z_Hex.Hex,
    expiry: z.optional(z.nullable(z_Hex.Hex)),
    isAdmin: z.optional(z.nullable(z.boolean())),
    keyId: z_Address.Address,
    keyType: z.union([z_SignatureEnvelope.Type, z.literal('multisig')]),
    limits: z.optional(z.nullable(z.readonly(z.array(RpcTokenLimit)))),
    signature: z.union([
      z_SignatureEnvelope.PrimitiveRpc,
      z_SignatureEnvelope.MultisigRpc,
    ]),
    witness: z.optional(z.nullable(z_Hex.Hex)),
  })
  .check(
    z.refine(
      (value) => value.keyType !== 'multisig' || value.account != null,
      'multisig key grants require a parent account binding',
    ),
  )
```

**Source:** [src/zod/tempo/KeyAuthorization.ts](https://github.com/wevm/ox/blob/main/src/zod/tempo/KeyAuthorization.ts)
