# AIOZ Stream — Players

SDK package: @aiozstream/nodejs-client

## Setup

```typescript
import StreamClient from '@aiozstream/nodejs-client'

const client = new StreamClient({
  publicKey: process.env.AIOZ_PUBLIC_KEY,
  secretKey: process.env.AIOZ_SECRET_KEY
})
```

---

## Create Player Theme

POST https://api.aiozstream.network/api/players

```typescript
const result = await client.players.create({
  name: 'my-player-theme',
  theme: {
    mainColor: 'rgba(255, 100, 0, 1)',
    textColor: 'rgba(255, 255, 255, 1)',
    controlBarBackgroundColor: 'rgba(0, 0, 0, 0.7)',
    menuBackgroundColor: 'rgba(0, 0, 0, 0.9)',
    menuItemBackgroundHover: 'rgba(255, 255, 255, 0.1)',
    textTrackColor: 'rgba(255, 255, 255, 1)',
    textTrackBackground: 'rgba(0, 0, 0, 0.5)',
    controlBarHeight: '40px',
    progressBarHeight: '4px',
    progressBarCircleSize: '12px'
  }
})
const playerId = result.data.playerTheme.id
```

Notes:
- Color fields must use rgba format: rgba(R, G, B, A)
- Size fields must use px format: e.g. 20px
- is_default is false by default — use update() to change it

---

## Get Player Theme

GET https://api.aiozstream.network/api/players/{id}

```typescript
const result = await client.players.get(playerId)
// result.data.playerTheme: { id, name, theme, controls, is_default }
```

---

## List Player Themes

GET https://api.aiozstream.network/api/players

```typescript
const result = await client.players.list()
// result.data.playerThemes
```

---

## Update Player Theme

PATCH https://api.aiozstream.network/api/players/{id}

```typescript
await client.players.update(playerId, {
  name: 'updated-name',
  isDefault: true,
  theme: { mainColor: 'rgba(0, 200, 100, 1)' },
  controls: {
    enableApi: true,
    enableControls: true,
    forceAutoplay: false,
    hideTitle: false,
    forceLoop: false
  }
})
```

---

## Delete Player Theme

DELETE https://api.aiozstream.network/api/players/{id}

```typescript
await client.players.delete(playerId)
```

---

## Upload Player Logo

POST https://api.aiozstream.network/api/players/{id}/logo

```typescript
await client.players.uploadLogo(playerId, './logo.png')
```

---

## Delete Player Logo

DELETE https://api.aiozstream.network/api/players/{id}/logo

```typescript
await client.players.deleteLogo(playerId)
```

---

## Add Player Theme to Video

POST https://api.aiozstream.network/api/players/add-player

```typescript
await client.players.addPlayer({
  videoId: 'video_id',
  playerId: playerId
})
```

---

## Remove Player Theme from Video

POST https://api.aiozstream.network/api/players/remove-player

```typescript
await client.players.removePlayer({ videoId: 'video_id' })
```
