<!-- ZenPays documentation · https://docs.zenpayz.com/docs/api-reference/security -->

# Security

Manage two-factor authentication, security events, and KYC documents. Access via `zenpays.security`.

## Two-Factor Authentication

### setup2FA

```typescript
const setup = await zenpays.security.setup2FA()
// Returns: { secret, qrCodeUrl, backupCodes }
```

---

### enable2FA

Enable 2FA after scanning the QR code.

```typescript
const result = await zenpays.security.enable2FA('123456') // TOTP code
// Returns: { enabled: boolean }
```

---

### verify2FA

```typescript
const result = await zenpays.security.verify2FA({ code: '123456', type: 'totp' })
// Returns: { verified: boolean }
```

---

### disable2FA

```typescript
await zenpays.security.disable2FA('123456') // current TOTP code to confirm
```

---

### is2FAEnabled

```typescript
const status = await zenpays.security.is2FAEnabled()
// Returns: { enabled: boolean, setupAt?: string }
```

---

### regenerateBackupCodes

```typescript
const result = await zenpays.security.regenerateBackupCodes()
// Returns: { backupCodes: string[] }
```

---

## Security Events

### listSecurityEvents

<Tabs groupId="language">
  <TabItem value="javascript" label="JavaScript" default>

```typescript
const { data } = await zenpays.security.listSecurityEvents({
  severity: 'high',
  from: '2024-01-01',
  limit: 50,
})
```

  </TabItem>
  <TabItem value="python" label="Python">

```python
result = zenpays.security.list_security_events({
    "severity": "high",
    "from": "2024-01-01",
    "limit": 50,
})
```

  </TabItem>
</Tabs>

---

### getSecurityEvent

```typescript
const event = await zenpays.security.getSecurityEvent('sec_xxx')
```

---

## KYC Documents

### getKycStatus

```typescript
const status = await zenpays.security.getKycStatus()
```

---

### uploadKycDocument

<Tabs groupId="language">
  <TabItem value="javascript" label="JavaScript" default>

```typescript
const doc = await zenpays.security.uploadKycDocument({
  type: 'identity_proof',
  file: fileBlob,
  description: 'Passport front page',
})
```

  </TabItem>
  <TabItem value="python" label="Python">

```python
doc = zenpays.security.upload_kyc_document({
    "type": "identity_proof",
    "file": file_data,
    "description": "Passport front page",
})
```

  </TabItem>
</Tabs>

---

### getKycDocument

```typescript
const doc = await zenpays.security.getKycDocument('kyc_xxx')
```

---

### downloadKycDocument

```typescript
const downloadUrl = await zenpays.security.downloadKycDocument('kyc_xxx')
```

---

### deleteKycDocument

```typescript
await zenpays.security.deleteKycDocument('kyc_xxx')
```
