or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

api-clients.mdconfiguration.mdindex.mdmonitoring.mdpod-operations.mdutilities.md
tile.json

api-clients.mddocs/

0

# Generated API Clients

1

2

Complete Kubernetes API coverage with type-safe client classes for all API groups. The library provides auto-generated clients that mirror the official Kubernetes API structure with full CRUD operations for all resource types.

3

4

## Capabilities

5

6

### Core API Clients

7

8

The most commonly used Kubernetes API groups for managing core resources.

9

10

```typescript { .api }

11

/**

12

* Core Kubernetes resources (pods, services, configmaps, etc.)

13

*/

14

class CoreV1Api {

15

// Pod operations

16

listNamespacedPod(namespace: string, options?: ListOptions): Promise<{ body: V1PodList }>;

17

createNamespacedPod(namespace: string, body: V1Pod, options?: CreateOptions): Promise<{ body: V1Pod }>;

18

readNamespacedPod(name: string, namespace: string, options?: ReadOptions): Promise<{ body: V1Pod }>;

19

replaceNamespacedPod(name: string, namespace: string, body: V1Pod, options?: ReplaceOptions): Promise<{ body: V1Pod }>;

20

deleteNamespacedPod(name: string, namespace: string, options?: DeleteOptions): Promise<{ body: V1Status }>;

21

patchNamespacedPod(name: string, namespace: string, body: object, options?: PatchOptions): Promise<{ body: V1Pod }>;

22

23

// Service operations

24

listNamespacedService(namespace: string, options?: ListOptions): Promise<{ body: V1ServiceList }>;

25

createNamespacedService(namespace: string, body: V1Service, options?: CreateOptions): Promise<{ body: V1Service }>;

26

readNamespacedService(name: string, namespace: string, options?: ReadOptions): Promise<{ body: V1Service }>;

27

replaceNamespacedService(name: string, namespace: string, body: V1Service, options?: ReplaceOptions): Promise<{ body: V1Service }>;

28

deleteNamespacedService(name: string, namespace: string, options?: DeleteOptions): Promise<{ body: V1Status }>;

29

30

// ConfigMap operations

31

listNamespacedConfigMap(namespace: string, options?: ListOptions): Promise<{ body: V1ConfigMapList }>;

32

createNamespacedConfigMap(namespace: string, body: V1ConfigMap, options?: CreateOptions): Promise<{ body: V1ConfigMap }>;

33

readNamespacedConfigMap(name: string, namespace: string, options?: ReadOptions): Promise<{ body: V1ConfigMap }>;

34

replaceNamespacedConfigMap(name: string, namespace: string, body: V1ConfigMap, options?: ReplaceOptions): Promise<{ body: V1ConfigMap }>;

35

deleteNamespacedConfigMap(name: string, namespace: string, options?: DeleteOptions): Promise<{ body: V1Status }>;

36

37

// Secret operations

38

listNamespacedSecret(namespace: string, options?: ListOptions): Promise<{ body: V1SecretList }>;

39

createNamespacedSecret(namespace: string, body: V1Secret, options?: CreateOptions): Promise<{ body: V1Secret }>;

40

readNamespacedSecret(name: string, namespace: string, options?: ReadOptions): Promise<{ body: V1Secret }>;

41

replaceNamespacedSecret(name: string, namespace: string, body: V1Secret, options?: ReplaceOptions): Promise<{ body: V1Secret }>;

42

deleteNamespacedSecret(name: string, namespace: string, options?: DeleteOptions): Promise<{ body: V1Status }>;

43

44

// Namespace operations

45

listNamespace(options?: ListOptions): Promise<{ body: V1NamespaceList }>;

46

createNamespace(body: V1Namespace, options?: CreateOptions): Promise<{ body: V1Namespace }>;

47

readNamespace(name: string, options?: ReadOptions): Promise<{ body: V1Namespace }>;

48

replaceNamespace(name: string, body: V1Namespace, options?: ReplaceOptions): Promise<{ body: V1Namespace }>;

49

deleteNamespace(name: string, options?: DeleteOptions): Promise<{ body: V1Status }>;

50

51

// Node operations

52

listNode(options?: ListOptions): Promise<{ body: V1NodeList }>;

53

readNode(name: string, options?: ReadOptions): Promise<{ body: V1Node }>;

54

patchNode(name: string, body: object, options?: PatchOptions): Promise<{ body: V1Node }>;

55

replaceNode(name: string, body: V1Node, options?: ReplaceOptions): Promise<{ body: V1Node }>;

56

deleteNode(name: string, options?: DeleteOptions): Promise<{ body: V1Status }>;

57

58

// PersistentVolume operations

59

listPersistentVolume(options?: ListOptions): Promise<{ body: V1PersistentVolumeList }>;

60

createPersistentVolume(body: V1PersistentVolume, options?: CreateOptions): Promise<{ body: V1PersistentVolume }>;

61

readPersistentVolume(name: string, options?: ReadOptions): Promise<{ body: V1PersistentVolume }>;

62

63

// PersistentVolumeClaim operations

64

listNamespacedPersistentVolumeClaim(namespace: string, options?: ListOptions): Promise<{ body: V1PersistentVolumeClaimList }>;

65

createNamespacedPersistentVolumeClaim(namespace: string, body: V1PersistentVolumeClaim, options?: CreateOptions): Promise<{ body: V1PersistentVolumeClaim }>;

66

}

67

68

/**

69

* Application resources (deployments, replicasets, daemonsets, statefulsets)

70

*/

71

class AppsV1Api {

72

// Deployment operations

73

listNamespacedDeployment(namespace: string, options?: ListOptions): Promise<{ body: V1DeploymentList }>;

74

createNamespacedDeployment(namespace: string, body: V1Deployment, options?: CreateOptions): Promise<{ body: V1Deployment }>;

75

readNamespacedDeployment(name: string, namespace: string, options?: ReadOptions): Promise<{ body: V1Deployment }>;

76

replaceNamespacedDeployment(name: string, namespace: string, body: V1Deployment, options?: ReplaceOptions): Promise<{ body: V1Deployment }>;

77

deleteNamespacedDeployment(name: string, namespace: string, options?: DeleteOptions): Promise<{ body: V1Status }>;

78

patchNamespacedDeployment(name: string, namespace: string, body: object, options?: PatchOptions): Promise<{ body: V1Deployment }>;

79

80

// ReplicaSet operations

81

listNamespacedReplicaSet(namespace: string, options?: ListOptions): Promise<{ body: V1ReplicaSetList }>;

82

createNamespacedReplicaSet(namespace: string, body: V1ReplicaSet, options?: CreateOptions): Promise<{ body: V1ReplicaSet }>;

83

readNamespacedReplicaSet(name: string, namespace: string, options?: ReadOptions): Promise<{ body: V1ReplicaSet }>;

84

85

// DaemonSet operations

86

listNamespacedDaemonSet(namespace: string, options?: ListOptions): Promise<{ body: V1DaemonSetList }>;

87

createNamespacedDaemonSet(namespace: string, body: V1DaemonSet, options?: CreateOptions): Promise<{ body: V1DaemonSet }>;

88

readNamespacedDaemonSet(name: string, namespace: string, options?: ReadOptions): Promise<{ body: V1DaemonSet }>;

89

90

// StatefulSet operations

91

listNamespacedStatefulSet(namespace: string, options?: ListOptions): Promise<{ body: V1StatefulSetList }>;

92

createNamespacedStatefulSet(namespace: string, body: V1StatefulSet, options?: CreateOptions): Promise<{ body: V1StatefulSet }>;

93

readNamespacedStatefulSet(name: string, namespace: string, options?: ReadOptions): Promise<{ body: V1StatefulSet }>;

94

}

95

96

/**

97

* Batch resources (jobs, cronjobs)

98

*/

99

class BatchV1Api {

100

// Job operations

101

listNamespacedJob(namespace: string, options?: ListOptions): Promise<{ body: V1JobList }>;

102

createNamespacedJob(namespace: string, body: V1Job, options?: CreateOptions): Promise<{ body: V1Job }>;

103

readNamespacedJob(name: string, namespace: string, options?: ReadOptions): Promise<{ body: V1Job }>;

104

replaceNamespacedJob(name: string, namespace: string, body: V1Job, options?: ReplaceOptions): Promise<{ body: V1Job }>;

105

deleteNamespacedJob(name: string, namespace: string, options?: DeleteOptions): Promise<{ body: V1Status }>;

106

107

// CronJob operations

108

listNamespacedCronJob(namespace: string, options?: ListOptions): Promise<{ body: V1CronJobList }>;

109

createNamespacedCronJob(namespace: string, body: V1CronJob, options?: CreateOptions): Promise<{ body: V1CronJob }>;

110

readNamespacedCronJob(name: string, namespace: string, options?: ReadOptions): Promise<{ body: V1CronJob }>;

111

replaceNamespacedCronJob(name: string, namespace: string, body: V1CronJob, options?: ReplaceOptions): Promise<{ body: V1CronJob }>;

112

deleteNamespacedCronJob(name: string, namespace: string, options?: DeleteOptions): Promise<{ body: V1Status }>;

113

}

114

```

115

116

### Extended API Clients

117

118

Additional API groups for specialized Kubernetes functionality.

119

120

```typescript { .api }

121

/**

122

* Horizontal Pod Autoscaling

123

*/

124

class AutoscalingV1Api {

125

listNamespacedHorizontalPodAutoscaler(namespace: string, options?: ListOptions): Promise<{ body: V1HorizontalPodAutoscalerList }>;

126

createNamespacedHorizontalPodAutoscaler(namespace: string, body: V1HorizontalPodAutoscaler, options?: CreateOptions): Promise<{ body: V1HorizontalPodAutoscaler }>;

127

}

128

129

class AutoscalingV2Api {

130

listNamespacedHorizontalPodAutoscaler(namespace: string, options?: ListOptions): Promise<{ body: V2HorizontalPodAutoscalerList }>;

131

createNamespacedHorizontalPodAutoscaler(namespace: string, body: V2HorizontalPodAutoscaler, options?: CreateOptions): Promise<{ body: V2HorizontalPodAutoscaler }>;

132

}

133

134

/**

135

* Networking resources (ingress, network policies)

136

*/

137

class NetworkingV1Api {

138

listNamespacedIngress(namespace: string, options?: ListOptions): Promise<{ body: V1IngressList }>;

139

createNamespacedIngress(namespace: string, body: V1Ingress, options?: CreateOptions): Promise<{ body: V1Ingress }>;

140

listNamespacedNetworkPolicy(namespace: string, options?: ListOptions): Promise<{ body: V1NetworkPolicyList }>;

141

createNamespacedNetworkPolicy(namespace: string, body: V1NetworkPolicy, options?: CreateOptions): Promise<{ body: V1NetworkPolicy }>;

142

}

143

144

/**

145

* Role-Based Access Control

146

*/

147

class RbacAuthorizationV1Api {

148

listClusterRole(options?: ListOptions): Promise<{ body: V1ClusterRoleList }>;

149

createClusterRole(body: V1ClusterRole, options?: CreateOptions): Promise<{ body: V1ClusterRole }>;

150

listClusterRoleBinding(options?: ListOptions): Promise<{ body: V1ClusterRoleBindingList }>;

151

createClusterRoleBinding(body: V1ClusterRoleBinding, options?: CreateOptions): Promise<{ body: V1ClusterRoleBinding }>;

152

listNamespacedRole(namespace: string, options?: ListOptions): Promise<{ body: V1RoleList }>;

153

createNamespacedRole(namespace: string, body: V1Role, options?: CreateOptions): Promise<{ body: V1Role }>;

154

listNamespacedRoleBinding(namespace: string, options?: ListOptions): Promise<{ body: V1RoleBindingList }>;

155

createNamespacedRoleBinding(namespace: string, body: V1RoleBinding, options?: CreateOptions): Promise<{ body: V1RoleBinding }>;

156

}

157

158

/**

159

* Custom Resource Definitions

160

*/

161

class ApiextensionsV1Api {

162

listCustomResourceDefinition(options?: ListOptions): Promise<{ body: V1CustomResourceDefinitionList }>;

163

createCustomResourceDefinition(body: V1CustomResourceDefinition, options?: CreateOptions): Promise<{ body: V1CustomResourceDefinition }>;

164

readCustomResourceDefinition(name: string, options?: ReadOptions): Promise<{ body: V1CustomResourceDefinition }>;

165

}

166

167

/**

168

* Custom Objects (for custom resources)

169

*/

170

class CustomObjectsApi {

171

listClusterCustomObject(group: string, version: string, plural: string, options?: ListOptions): Promise<{ body: any }>;

172

createClusterCustomObject(group: string, version: string, plural: string, body: object, options?: CreateOptions): Promise<{ body: any }>;

173

getClusterCustomObject(group: string, version: string, plural: string, name: string, options?: ReadOptions): Promise<{ body: any }>;

174

replaceClusterCustomObject(group: string, version: string, plural: string, name: string, body: object, options?: ReplaceOptions): Promise<{ body: any }>;

175

deleteClusterCustomObject(group: string, version: string, plural: string, name: string, options?: DeleteOptions): Promise<{ body: any }>;

176

177

listNamespacedCustomObject(group: string, version: string, namespace: string, plural: string, options?: ListOptions): Promise<{ body: any }>;

178

createNamespacedCustomObject(group: string, version: string, namespace: string, plural: string, body: object, options?: CreateOptions): Promise<{ body: any }>;

179

getNamespacedCustomObject(group: string, version: string, namespace: string, plural: string, name: string, options?: ReadOptions): Promise<{ body: any }>;

180

}

181

182

/**

183

* Storage classes and volumes

184

*/

185

class StorageV1Api {

186

listStorageClass(options?: ListOptions): Promise<{ body: V1StorageClassList }>;

187

createStorageClass(body: V1StorageClass, options?: CreateOptions): Promise<{ body: V1StorageClass }>;

188

readStorageClass(name: string, options?: ReadOptions): Promise<{ body: V1StorageClass }>;

189

190

listVolumeAttachment(options?: ListOptions): Promise<{ body: V1VolumeAttachmentList }>;

191

createVolumeAttachment(body: V1VolumeAttachment, options?: CreateOptions): Promise<{ body: V1VolumeAttachment }>;

192

}

193

194

/**

195

* Certificate management and signing requests

196

*/

197

class CertificatesV1Api {

198

listCertificateSigningRequest(options?: ListOptions): Promise<{ body: V1CertificateSigningRequestList }>;

199

createCertificateSigningRequest(body: V1CertificateSigningRequest, options?: CreateOptions): Promise<{ body: V1CertificateSigningRequest }>;

200

readCertificateSigningRequest(name: string, options?: ReadOptions): Promise<{ body: V1CertificateSigningRequest }>;

201

replaceCertificateSigningRequest(name: string, body: V1CertificateSigningRequest, options?: ReplaceOptions): Promise<{ body: V1CertificateSigningRequest }>;

202

deleteCertificateSigningRequest(name: string, options?: DeleteOptions): Promise<{ body: V1Status }>;

203

patchCertificateSigningRequest(name: string, body: object, options?: PatchOptions): Promise<{ body: V1CertificateSigningRequest }>;

204

205

// Certificate signing request approval operations

206

readCertificateSigningRequestApproval(name: string, options?: ReadOptions): Promise<{ body: V1CertificateSigningRequest }>;

207

replaceCertificateSigningRequestApproval(name: string, body: V1CertificateSigningRequest, options?: ReplaceOptions): Promise<{ body: V1CertificateSigningRequest }>;

208

patchCertificateSigningRequestApproval(name: string, body: object, options?: PatchOptions): Promise<{ body: V1CertificateSigningRequest }>;

209

}

210

211

/**

212

* Leader election and coordination

213

*/

214

class CoordinationV1Api {

215

listNamespacedLease(namespace: string, options?: ListOptions): Promise<{ body: V1LeaseList }>;

216

createNamespacedLease(namespace: string, body: V1Lease, options?: CreateOptions): Promise<{ body: V1Lease }>;

217

readNamespacedLease(name: string, namespace: string, options?: ReadOptions): Promise<{ body: V1Lease }>;

218

replaceNamespacedLease(name: string, namespace: string, body: V1Lease, options?: ReplaceOptions): Promise<{ body: V1Lease }>;

219

deleteNamespacedLease(name: string, namespace: string, options?: DeleteOptions): Promise<{ body: V1Status }>;

220

patchNamespacedLease(name: string, namespace: string, body: object, options?: PatchOptions): Promise<{ body: V1Lease }>;

221

222

listLeaseForAllNamespaces(options?: ListOptions): Promise<{ body: V1LeaseList }>;

223

}

224

225

/**

226

* Service discovery and endpoint management

227

*/

228

class DiscoveryV1Api {

229

listNamespacedEndpointSlice(namespace: string, options?: ListOptions): Promise<{ body: V1EndpointSliceList }>;

230

createNamespacedEndpointSlice(namespace: string, body: V1EndpointSlice, options?: CreateOptions): Promise<{ body: V1EndpointSlice }>;

231

readNamespacedEndpointSlice(name: string, namespace: string, options?: ReadOptions): Promise<{ body: V1EndpointSlice }>;

232

replaceNamespacedEndpointSlice(name: string, namespace: string, body: V1EndpointSlice, options?: ReplaceOptions): Promise<{ body: V1EndpointSlice }>;

233

deleteNamespacedEndpointSlice(name: string, namespace: string, options?: DeleteOptions): Promise<{ body: V1Status }>;

234

patchNamespacedEndpointSlice(name: string, namespace: string, body: object, options?: PatchOptions): Promise<{ body: V1EndpointSlice }>;

235

236

listEndpointSliceForAllNamespaces(options?: ListOptions): Promise<{ body: V1EndpointSliceList }>;

237

}

238

239

/**

240

* Events management (v1 API)

241

*/

242

class EventsV1Api {

243

listNamespacedEvent(namespace: string, options?: ListOptions): Promise<{ body: V1EventList }>;

244

createNamespacedEvent(namespace: string, body: V1Event, options?: CreateOptions): Promise<{ body: V1Event }>;

245

readNamespacedEvent(name: string, namespace: string, options?: ReadOptions): Promise<{ body: V1Event }>;

246

replaceNamespacedEvent(name: string, namespace: string, body: V1Event, options?: ReplaceOptions): Promise<{ body: V1Event }>;

247

deleteNamespacedEvent(name: string, namespace: string, options?: DeleteOptions): Promise<{ body: V1Status }>;

248

patchNamespacedEvent(name: string, namespace: string, body: object, options?: PatchOptions): Promise<{ body: V1Event }>;

249

250

listEventForAllNamespaces(options?: ListOptions): Promise<{ body: V1EventList }>;

251

}

252

253

/**

254

* Node runtime classes

255

*/

256

class NodeV1Api {

257

listRuntimeClass(options?: ListOptions): Promise<{ body: V1RuntimeClassList }>;

258

createRuntimeClass(body: V1RuntimeClass, options?: CreateOptions): Promise<{ body: V1RuntimeClass }>;

259

readRuntimeClass(name: string, options?: ReadOptions): Promise<{ body: V1RuntimeClass }>;

260

replaceRuntimeClass(name: string, body: V1RuntimeClass, options?: ReplaceOptions): Promise<{ body: V1RuntimeClass }>;

261

deleteRuntimeClass(name: string, options?: DeleteOptions): Promise<{ body: V1Status }>;

262

patchRuntimeClass(name: string, body: object, options?: PatchOptions): Promise<{ body: V1RuntimeClass }>;

263

}

264

265

/**

266

* Pod disruption budgets

267

*/

268

class PolicyV1Api {

269

listNamespacedPodDisruptionBudget(namespace: string, options?: ListOptions): Promise<{ body: V1PodDisruptionBudgetList }>;

270

createNamespacedPodDisruptionBudget(namespace: string, body: V1PodDisruptionBudget, options?: CreateOptions): Promise<{ body: V1PodDisruptionBudget }>;

271

readNamespacedPodDisruptionBudget(name: string, namespace: string, options?: ReadOptions): Promise<{ body: V1PodDisruptionBudget }>;

272

replaceNamespacedPodDisruptionBudget(name: string, namespace: string, body: V1PodDisruptionBudget, options?: ReplaceOptions): Promise<{ body: V1PodDisruptionBudget }>;

273

deleteNamespacedPodDisruptionBudget(name: string, namespace: string, options?: DeleteOptions): Promise<{ body: V1Status }>;

274

patchNamespacedPodDisruptionBudget(name: string, namespace: string, body: object, options?: PatchOptions): Promise<{ body: V1PodDisruptionBudget }>;

275

276

listPodDisruptionBudgetForAllNamespaces(options?: ListOptions): Promise<{ body: V1PodDisruptionBudgetList }>;

277

278

// Status operations

279

readNamespacedPodDisruptionBudgetStatus(name: string, namespace: string, options?: ReadOptions): Promise<{ body: V1PodDisruptionBudget }>;

280

replaceNamespacedPodDisruptionBudgetStatus(name: string, namespace: string, body: V1PodDisruptionBudget, options?: ReplaceOptions): Promise<{ body: V1PodDisruptionBudget }>;

281

patchNamespacedPodDisruptionBudgetStatus(name: string, namespace: string, body: object, options?: PatchOptions): Promise<{ body: V1PodDisruptionBudget }>;

282

}

283

284

/**

285

* Priority classes for pod scheduling

286

*/

287

class SchedulingV1Api {

288

listPriorityClass(options?: ListOptions): Promise<{ body: V1PriorityClassList }>;

289

createPriorityClass(body: V1PriorityClass, options?: CreateOptions): Promise<{ body: V1PriorityClass }>;

290

readPriorityClass(name: string, options?: ReadOptions): Promise<{ body: V1PriorityClass }>;

291

replacePriorityClass(name: string, body: V1PriorityClass, options?: ReplaceOptions): Promise<{ body: V1PriorityClass }>;

292

deletePriorityClass(name: string, options?: DeleteOptions): Promise<{ body: V1Status }>;

293

patchPriorityClass(name: string, body: object, options?: PatchOptions): Promise<{ body: V1PriorityClass }>;

294

}

295

```

296

297

### API Client Usage Patterns

298

299

**Creating API Clients:**

300

301

```typescript

302

import { KubeConfig, CoreV1Api, AppsV1Api } from '@kubernetes/client-node';

303

304

const kc = new KubeConfig();

305

kc.loadFromDefault();

306

307

// Create specific API clients

308

const coreApi = kc.makeApiClient(CoreV1Api);

309

const appsApi = kc.makeApiClient(AppsV1Api);

310

```

311

312

**Basic CRUD Operations:**

313

314

```typescript

315

// Create a pod

316

const pod: V1Pod = {

317

metadata: {

318

name: 'my-pod',

319

namespace: 'default'

320

},

321

spec: {

322

containers: [{

323

name: 'my-container',

324

image: 'nginx:latest'

325

}]

326

}

327

};

328

329

try {

330

// Create

331

const created = await coreApi.createNamespacedPod('default', pod);

332

console.log('Pod created:', created.body.metadata?.name);

333

334

// Read

335

const retrieved = await coreApi.readNamespacedPod('my-pod', 'default');

336

console.log('Pod status:', retrieved.body.status?.phase);

337

338

// Update

339

pod.spec!.containers[0].image = 'nginx:1.20';

340

const updated = await coreApi.replaceNamespacedPod('my-pod', 'default', pod);

341

342

// Patch

343

const patch = { spec: { containers: [{ name: 'my-container', image: 'nginx:1.21' }] } };

344

const patched = await coreApi.patchNamespacedPod('my-pod', 'default', patch);

345

346

// Delete

347

await coreApi.deleteNamespacedPod('my-pod', 'default');

348

console.log('Pod deleted');

349

} catch (error) {

350

console.error('API error:', error);

351

}

352

```

353

354

**List Operations with Filtering:**

355

356

```typescript

357

// List all pods in a namespace

358

const allPods = await coreApi.listNamespacedPod('default');

359

console.log('Pod count:', allPods.body.items.length);

360

361

// List with label selector

362

const labelSelector = 'app=web,version=v1';

363

const filteredPods = await coreApi.listNamespacedPod('default', {

364

labelSelector

365

});

366

367

// List with field selector

368

const fieldSelector = 'status.phase=Running';

369

const runningPods = await coreApi.listNamespacedPod('default', {

370

fieldSelector

371

});

372

373

// List with pagination

374

const pageSize = 10;

375

const firstPage = await coreApi.listNamespacedPod('default', {

376

limit: pageSize

377

});

378

379

if (firstPage.body.metadata?.continue) {

380

const nextPage = await coreApi.listNamespacedPod('default', {

381

limit: pageSize,

382

continue: firstPage.body.metadata.continue

383

});

384

}

385

```

386

387

**Working with Custom Resources:**

388

389

```typescript

390

import { CustomObjectsApi } from '@kubernetes/client-node';

391

392

const customApi = kc.makeApiClient(CustomObjectsApi);

393

394

// Create a custom resource

395

const customResource = {

396

apiVersion: 'myapp.example.com/v1',

397

kind: 'MyResource',

398

metadata: {

399

name: 'my-custom-resource',

400

namespace: 'default'

401

},

402

spec: {

403

replicas: 3,

404

image: 'my-app:latest'

405

}

406

};

407

408

const created = await customApi.createNamespacedCustomObject(

409

'myapp.example.com',

410

'v1',

411

'default',

412

'myresources',

413

customResource

414

);

415

```

416

417

### Common Options

418

419

```typescript { .api }

420

interface ListOptions {

421

/** Label selector for filtering resources */

422

labelSelector?: string;

423

/** Field selector for filtering resources */

424

fieldSelector?: string;

425

/** Maximum number of items to return */

426

limit?: number;

427

/** Continue token for pagination */

428

continue?: string;

429

/** Resource version for watch operations */

430

resourceVersion?: string;

431

/** Timeout for the list operation */

432

timeoutSeconds?: number;

433

/** Watch for changes instead of listing */

434

watch?: boolean;

435

}

436

437

interface CreateOptions {

438

/** Pretty-print the output */

439

pretty?: string;

440

/** Dry run mode ('All' or 'Server') */

441

dryRun?: string;

442

/** Field manager name for server-side apply */

443

fieldManager?: string;

444

/** Field validation ('Strict', 'Warn', or 'Ignore') */

445

fieldValidation?: string;

446

}

447

448

interface DeleteOptions {

449

/** Grace period in seconds */

450

gracePeriodSeconds?: number;

451

/** Whether to orphan dependents */

452

orphanDependents?: boolean;

453

/** Propagation policy ('Foreground', 'Background', or 'Orphan') */

454

propagationPolicy?: string;

455

/** Preconditions for deletion */

456

preconditions?: V1Preconditions;

457

}

458

459

interface PatchOptions {

460

/** Patch strategy (JSON Patch, Merge Patch, Strategic Merge Patch) */

461

contentType?: string;

462

/** Pretty-print the output */

463

pretty?: string;

464

/** Dry run mode */

465

dryRun?: string;

466

/** Field manager name */

467

fieldManager?: string;

468

/** Force the patch */

469

force?: boolean;

470

}

471

```

472

473

### Error Handling

474

475

All API client methods return promises that can reject with detailed error information:

476

477

```typescript

478

import { ApiException } from '@kubernetes/client-node';

479

480

try {

481

const pod = await coreApi.readNamespacedPod('nonexistent', 'default');

482

} catch (error) {

483

if (error instanceof ApiException) {

484

console.error('API Error:', error.code, error.message);

485

console.error('Response body:', error.body);

486

} else {

487

console.error('Network error:', error.message);

488

}

489

}

490

```