fly_io 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +15 -0
  3. data/CONTRIBUTING.md +14 -0
  4. data/LICENSE +21 -0
  5. data/README.md +239 -0
  6. data/Rakefile +30 -0
  7. data/contracts/additional_rest/network_policies.json +94 -0
  8. data/contracts/additional_rest/prometheus.json +103 -0
  9. data/contracts/graphql/fly_go_operations.json +948 -0
  10. data/contracts/graphql/flyctl_named_operations.graphql +316 -0
  11. data/contracts/graphql/flyctl_operations.json +336 -0
  12. data/contracts/graphql/official_examples.json +75 -0
  13. data/contracts/graphql/schema.graphql +10995 -0
  14. data/contracts/graphql/source.json +29 -0
  15. data/contracts/machines/openapi.headers +9 -0
  16. data/contracts/machines/openapi.json +1 -0
  17. data/contracts/machines/source.json +20 -0
  18. data/contracts/public_surface_inventory.json +164 -0
  19. data/contracts/research_metadata.json +17 -0
  20. data/contracts/sources/metrics.html.md +474 -0
  21. data/contracts/sources/network-policies.html.markerb +142 -0
  22. data/docs/API.md +149 -0
  23. data/docs/SURFACES.md +60 -0
  24. data/lib/fly_io/client.rb +52 -0
  25. data/lib/fly_io/configuration.rb +115 -0
  26. data/lib/fly_io/errors.rb +45 -0
  27. data/lib/fly_io/generated/additional_operations.json +123 -0
  28. data/lib/fly_io/generated/graphql_operations.json +1658 -0
  29. data/lib/fly_io/generated/operations.json +6130 -0
  30. data/lib/fly_io/generated/prometheus_operations.json +503 -0
  31. data/lib/fly_io/generated/schemas.json +4237 -0
  32. data/lib/fly_io/graphql_client.rb +103 -0
  33. data/lib/fly_io/model.rb +65 -0
  34. data/lib/fly_io/operation_registry.rb +79 -0
  35. data/lib/fly_io/redactor.rb +34 -0
  36. data/lib/fly_io/resources/base.rb +68 -0
  37. data/lib/fly_io/resources.rb +30 -0
  38. data/lib/fly_io/response.rb +45 -0
  39. data/lib/fly_io/schema_registry.rb +89 -0
  40. data/lib/fly_io/schema_validator.rb +56 -0
  41. data/lib/fly_io/transport.rb +282 -0
  42. data/lib/fly_io/version.rb +5 -0
  43. data/lib/fly_io.rb +23 -0
  44. data/script/check_api_coverage +60 -0
  45. data/script/fetch_openapi +18 -0
  46. data/script/generate_api +302 -0
  47. metadata +197 -0
@@ -0,0 +1,4237 @@
1
+ {
2
+ "AcmeChallenge": {
3
+ "type": "object",
4
+ "properties": {
5
+ "name": {
6
+ "type": "string"
7
+ },
8
+ "target": {
9
+ "type": "string"
10
+ }
11
+ },
12
+ "x-ruby-class": "AcmeChallenge"
13
+ },
14
+ "App": {
15
+ "type": "object",
16
+ "properties": {
17
+ "id": {
18
+ "type": "string"
19
+ },
20
+ "internal_numeric_id": {
21
+ "type": "integer"
22
+ },
23
+ "machine_count": {
24
+ "type": "integer"
25
+ },
26
+ "name": {
27
+ "type": "string"
28
+ },
29
+ "network": {
30
+ "type": "string"
31
+ },
32
+ "network_cidr": {
33
+ "type": "string"
34
+ },
35
+ "organization": {
36
+ "$ref": "#/components/schemas/AppOrganizationInfo"
37
+ },
38
+ "status": {
39
+ "type": "string"
40
+ },
41
+ "volume_count": {
42
+ "type": "integer"
43
+ }
44
+ },
45
+ "x-ruby-class": "App"
46
+ },
47
+ "AppOrganizationInfo": {
48
+ "type": "object",
49
+ "properties": {
50
+ "internal_numeric_id": {
51
+ "type": "integer"
52
+ },
53
+ "name": {
54
+ "type": "string"
55
+ },
56
+ "slug": {
57
+ "type": "string"
58
+ }
59
+ },
60
+ "x-ruby-class": "AppOrganizationInfo"
61
+ },
62
+ "AppSecret": {
63
+ "type": "object",
64
+ "properties": {
65
+ "created_at": {
66
+ "type": "string"
67
+ },
68
+ "digest": {
69
+ "type": "string"
70
+ },
71
+ "name": {
72
+ "type": "string"
73
+ },
74
+ "updated_at": {
75
+ "type": "string"
76
+ },
77
+ "value": {
78
+ "type": "string"
79
+ }
80
+ },
81
+ "x-ruby-class": "AppSecret"
82
+ },
83
+ "AppSecrets": {
84
+ "type": "object",
85
+ "properties": {
86
+ "secrets": {
87
+ "type": "array",
88
+ "items": {
89
+ "$ref": "#/components/schemas/AppSecret"
90
+ }
91
+ }
92
+ },
93
+ "x-ruby-class": "AppSecrets"
94
+ },
95
+ "AppSecretsUpdateRequest": {
96
+ "type": "object",
97
+ "properties": {
98
+ "values": {
99
+ "type": "object",
100
+ "additionalProperties": {
101
+ "type": "string"
102
+ }
103
+ }
104
+ },
105
+ "x-ruby-class": "AppSecretsUpdateRequest"
106
+ },
107
+ "AppSecretsUpdateResp": {
108
+ "type": "object",
109
+ "properties": {
110
+ "Version": {
111
+ "type": "integer",
112
+ "description": "DEPRECATED"
113
+ },
114
+ "secrets": {
115
+ "type": "array",
116
+ "items": {
117
+ "$ref": "#/components/schemas/AppSecret"
118
+ }
119
+ },
120
+ "version": {
121
+ "type": "integer"
122
+ }
123
+ },
124
+ "x-ruby-class": "AppSecretsUpdateResp"
125
+ },
126
+ "CertificateCheckResponse": {
127
+ "type": "object",
128
+ "properties": {
129
+ "acme_requested": {
130
+ "type": "boolean"
131
+ },
132
+ "certificates": {
133
+ "type": "array",
134
+ "items": {
135
+ "$ref": "#/components/schemas/CertificateEntry"
136
+ }
137
+ },
138
+ "configured": {
139
+ "type": "boolean"
140
+ },
141
+ "dns_provider": {
142
+ "type": "string"
143
+ },
144
+ "dns_records": {
145
+ "$ref": "#/components/schemas/DNSRecords"
146
+ },
147
+ "dns_requirements": {
148
+ "$ref": "#/components/schemas/DNSRequirements"
149
+ },
150
+ "hostname": {
151
+ "type": "string"
152
+ },
153
+ "rate_limited_until": {
154
+ "type": "string"
155
+ },
156
+ "status": {
157
+ "type": "string"
158
+ },
159
+ "validation": {
160
+ "$ref": "#/components/schemas/CertificateValidation"
161
+ },
162
+ "validation_errors": {
163
+ "type": "array",
164
+ "items": {
165
+ "$ref": "#/components/schemas/CertificateValidationError"
166
+ }
167
+ }
168
+ },
169
+ "x-ruby-class": "CertificateCheckResponse"
170
+ },
171
+ "CertificateDetail": {
172
+ "type": "object",
173
+ "properties": {
174
+ "acme_requested": {
175
+ "type": "boolean"
176
+ },
177
+ "certificates": {
178
+ "type": "array",
179
+ "items": {
180
+ "$ref": "#/components/schemas/CertificateEntry"
181
+ }
182
+ },
183
+ "configured": {
184
+ "type": "boolean"
185
+ },
186
+ "dns_provider": {
187
+ "type": "string"
188
+ },
189
+ "dns_requirements": {
190
+ "$ref": "#/components/schemas/DNSRequirements"
191
+ },
192
+ "hostname": {
193
+ "type": "string"
194
+ },
195
+ "rate_limited_until": {
196
+ "type": "string"
197
+ },
198
+ "status": {
199
+ "type": "string"
200
+ },
201
+ "validation": {
202
+ "$ref": "#/components/schemas/CertificateValidation"
203
+ },
204
+ "validation_errors": {
205
+ "type": "array",
206
+ "items": {
207
+ "$ref": "#/components/schemas/CertificateValidationError"
208
+ }
209
+ }
210
+ },
211
+ "x-ruby-class": "CertificateDetail"
212
+ },
213
+ "CertificateEntry": {
214
+ "type": "object",
215
+ "properties": {
216
+ "created_at": {
217
+ "type": "string"
218
+ },
219
+ "expires_at": {
220
+ "type": "string"
221
+ },
222
+ "issued": {
223
+ "type": "array",
224
+ "items": {
225
+ "$ref": "#/components/schemas/IssuedCertificate"
226
+ }
227
+ },
228
+ "issuer": {
229
+ "type": "string"
230
+ },
231
+ "source": {
232
+ "type": "string",
233
+ "enum": [
234
+ "custom",
235
+ "fly"
236
+ ]
237
+ },
238
+ "status": {
239
+ "type": "string",
240
+ "enum": [
241
+ "active",
242
+ "pending_ownership",
243
+ "pending_validation"
244
+ ]
245
+ }
246
+ },
247
+ "x-ruby-class": "CertificateEntry"
248
+ },
249
+ "CertificateSummary": {
250
+ "type": "object",
251
+ "properties": {
252
+ "acme_alpn_configured": {
253
+ "type": "boolean"
254
+ },
255
+ "acme_dns_configured": {
256
+ "type": "boolean"
257
+ },
258
+ "acme_http_configured": {
259
+ "type": "boolean"
260
+ },
261
+ "acme_requested": {
262
+ "type": "boolean"
263
+ },
264
+ "configured": {
265
+ "type": "boolean"
266
+ },
267
+ "created_at": {
268
+ "type": "string"
269
+ },
270
+ "dns_provider": {
271
+ "type": "string"
272
+ },
273
+ "has_custom_certificate": {
274
+ "type": "boolean"
275
+ },
276
+ "has_fly_certificate": {
277
+ "type": "boolean"
278
+ },
279
+ "hostname": {
280
+ "type": "string"
281
+ },
282
+ "ownership_txt_configured": {
283
+ "type": "boolean"
284
+ },
285
+ "status": {
286
+ "type": "string"
287
+ },
288
+ "updated_at": {
289
+ "type": "string"
290
+ }
291
+ },
292
+ "x-ruby-class": "CertificateSummary"
293
+ },
294
+ "CertificateValidation": {
295
+ "type": "object",
296
+ "properties": {
297
+ "alpn_configured": {
298
+ "type": "boolean"
299
+ },
300
+ "dns_configured": {
301
+ "type": "boolean"
302
+ },
303
+ "http_configured": {
304
+ "type": "boolean"
305
+ },
306
+ "ownership_txt_configured": {
307
+ "type": "boolean"
308
+ }
309
+ },
310
+ "x-ruby-class": "CertificateValidation"
311
+ },
312
+ "CertificateValidationError": {
313
+ "type": "object",
314
+ "properties": {
315
+ "code": {
316
+ "type": "string"
317
+ },
318
+ "message": {
319
+ "type": "string"
320
+ },
321
+ "remediation": {
322
+ "type": "string"
323
+ },
324
+ "timestamp": {
325
+ "type": "string"
326
+ }
327
+ },
328
+ "x-ruby-class": "CertificateValidationError"
329
+ },
330
+ "CheckStatus": {
331
+ "type": "object",
332
+ "properties": {
333
+ "name": {
334
+ "type": "string"
335
+ },
336
+ "output": {
337
+ "type": "string"
338
+ },
339
+ "status": {
340
+ "type": "string"
341
+ },
342
+ "updated_at": {
343
+ "type": "string"
344
+ }
345
+ },
346
+ "x-ruby-class": "CheckStatus"
347
+ },
348
+ "CreateAppDeployTokenRequest": {
349
+ "type": "object",
350
+ "properties": {
351
+ "expiry": {
352
+ "type": "string"
353
+ }
354
+ },
355
+ "x-ruby-class": "CreateAppDeployTokenRequest"
356
+ },
357
+ "CreateAppRequest": {
358
+ "type": "object",
359
+ "properties": {
360
+ "enable_subdomains": {
361
+ "type": "boolean"
362
+ },
363
+ "name": {
364
+ "type": "string"
365
+ },
366
+ "network": {
367
+ "type": "string"
368
+ },
369
+ "org_slug": {
370
+ "type": "string"
371
+ }
372
+ },
373
+ "x-ruby-class": "CreateAppRequest"
374
+ },
375
+ "CreateAppResponse": {
376
+ "type": "object",
377
+ "properties": {
378
+ "token": {
379
+ "type": "string"
380
+ }
381
+ },
382
+ "x-ruby-class": "CreateAppResponse"
383
+ },
384
+ "CreateLeaseRequest": {
385
+ "type": "object",
386
+ "properties": {
387
+ "description": {
388
+ "type": "string"
389
+ },
390
+ "ttl": {
391
+ "type": "integer",
392
+ "description": "seconds lease will be valid"
393
+ }
394
+ },
395
+ "x-ruby-class": "CreateLeaseRequest"
396
+ },
397
+ "CreateMachineRequest": {
398
+ "type": "object",
399
+ "properties": {
400
+ "config": {
401
+ "type": "object",
402
+ "description": "An object defining the Machine configuration",
403
+ "allOf": [
404
+ {
405
+ "$ref": "#/components/schemas/fly.MachineConfig"
406
+ }
407
+ ]
408
+ },
409
+ "lease_ttl": {
410
+ "type": "integer"
411
+ },
412
+ "min_secrets_version": {
413
+ "type": "integer"
414
+ },
415
+ "name": {
416
+ "type": "string",
417
+ "description": "Unique name for this Machine. If omitted, one is generated for you"
418
+ },
419
+ "region": {
420
+ "type": "string",
421
+ "description": "The target region. Omitting this param launches in the same region as your WireGuard peer connection (somewhere near you)."
422
+ },
423
+ "skip_launch": {
424
+ "type": "boolean"
425
+ },
426
+ "skip_secrets": {
427
+ "type": "boolean"
428
+ },
429
+ "skip_service_registration": {
430
+ "type": "boolean"
431
+ }
432
+ },
433
+ "x-ruby-class": "CreateMachineRequest"
434
+ },
435
+ "CreateOIDCTokenRequest": {
436
+ "type": "object",
437
+ "properties": {
438
+ "aud": {
439
+ "type": "string",
440
+ "example": "https://fly.io/org-slug"
441
+ },
442
+ "aws_principal_tags": {
443
+ "type": "boolean"
444
+ }
445
+ },
446
+ "description": "Optional parameters",
447
+ "x-ruby-class": "CreateOIDCTokenRequest"
448
+ },
449
+ "CreateVolumeRequest": {
450
+ "type": "object",
451
+ "properties": {
452
+ "auto_backup_enabled": {
453
+ "type": "boolean",
454
+ "description": "enable scheduled automatic snapshots. Defaults to `true`"
455
+ },
456
+ "compute": {
457
+ "$ref": "#/components/schemas/fly.MachineGuest"
458
+ },
459
+ "compute_image": {
460
+ "type": "string"
461
+ },
462
+ "encrypted": {
463
+ "type": "boolean"
464
+ },
465
+ "fstype": {
466
+ "type": "string"
467
+ },
468
+ "name": {
469
+ "type": "string"
470
+ },
471
+ "region": {
472
+ "type": "string"
473
+ },
474
+ "require_unique_zone": {
475
+ "type": "boolean"
476
+ },
477
+ "size_gb": {
478
+ "type": "integer"
479
+ },
480
+ "snapshot_id": {
481
+ "type": "string",
482
+ "description": "restore from snapshot"
483
+ },
484
+ "snapshot_retention": {
485
+ "type": "integer"
486
+ },
487
+ "source_volume_id": {
488
+ "type": "string",
489
+ "description": "fork from remote volume"
490
+ },
491
+ "unique_zone_app_wide": {
492
+ "type": "boolean"
493
+ }
494
+ },
495
+ "x-ruby-class": "CreateVolumeRequest"
496
+ },
497
+ "CurrentTokenResponse": {
498
+ "type": "object",
499
+ "properties": {
500
+ "tokens": {
501
+ "type": "array",
502
+ "items": {
503
+ "$ref": "#/components/schemas/main.tokenInfo"
504
+ }
505
+ }
506
+ },
507
+ "x-ruby-class": "CurrentTokenResponse"
508
+ },
509
+ "DNSRecords": {
510
+ "type": "object",
511
+ "properties": {
512
+ "a": {
513
+ "type": "array",
514
+ "items": {
515
+ "type": "string"
516
+ }
517
+ },
518
+ "aaaa": {
519
+ "type": "array",
520
+ "items": {
521
+ "type": "string"
522
+ }
523
+ },
524
+ "acme_challenge_cname": {
525
+ "type": "string"
526
+ },
527
+ "cname": {
528
+ "type": "array",
529
+ "items": {
530
+ "type": "string"
531
+ }
532
+ },
533
+ "ownership_txt": {
534
+ "type": "string"
535
+ },
536
+ "resolved_addresses": {
537
+ "type": "array",
538
+ "items": {
539
+ "type": "string"
540
+ }
541
+ },
542
+ "soa": {
543
+ "type": "string"
544
+ }
545
+ },
546
+ "x-ruby-class": "DNSRecords"
547
+ },
548
+ "DNSRequirements": {
549
+ "type": "object",
550
+ "properties": {
551
+ "a": {
552
+ "type": "array",
553
+ "items": {
554
+ "type": "string"
555
+ }
556
+ },
557
+ "aaaa": {
558
+ "type": "array",
559
+ "items": {
560
+ "type": "string"
561
+ }
562
+ },
563
+ "acme_challenge": {
564
+ "$ref": "#/components/schemas/AcmeChallenge"
565
+ },
566
+ "cname": {
567
+ "type": "string"
568
+ },
569
+ "ownership": {
570
+ "$ref": "#/components/schemas/OwnershipVerification"
571
+ }
572
+ },
573
+ "x-ruby-class": "DNSRequirements"
574
+ },
575
+ "DecryptSecretkeyRequest": {
576
+ "type": "object",
577
+ "properties": {
578
+ "associated_data": {
579
+ "type": "array",
580
+ "items": {
581
+ "type": "integer"
582
+ }
583
+ },
584
+ "ciphertext": {
585
+ "type": "array",
586
+ "items": {
587
+ "type": "integer"
588
+ }
589
+ }
590
+ },
591
+ "x-ruby-class": "DecryptSecretkeyRequest"
592
+ },
593
+ "DecryptSecretkeyResponse": {
594
+ "type": "object",
595
+ "properties": {
596
+ "plaintext": {
597
+ "type": "array",
598
+ "items": {
599
+ "type": "integer"
600
+ }
601
+ }
602
+ },
603
+ "x-ruby-class": "DecryptSecretkeyResponse"
604
+ },
605
+ "DeleteAppSecretResponse": {
606
+ "type": "object",
607
+ "properties": {
608
+ "Version": {
609
+ "type": "integer",
610
+ "description": "DEPRECATED"
611
+ },
612
+ "version": {
613
+ "type": "integer"
614
+ }
615
+ },
616
+ "x-ruby-class": "DeleteAppSecretResponse"
617
+ },
618
+ "DeleteSecretkeyResponse": {
619
+ "type": "object",
620
+ "properties": {
621
+ "Version": {
622
+ "type": "integer",
623
+ "description": "DEPRECATED"
624
+ },
625
+ "version": {
626
+ "type": "integer"
627
+ }
628
+ },
629
+ "x-ruby-class": "DeleteSecretkeyResponse"
630
+ },
631
+ "EncryptSecretkeyRequest": {
632
+ "type": "object",
633
+ "properties": {
634
+ "associated_data": {
635
+ "type": "array",
636
+ "items": {
637
+ "type": "integer"
638
+ }
639
+ },
640
+ "plaintext": {
641
+ "type": "array",
642
+ "items": {
643
+ "type": "integer"
644
+ }
645
+ }
646
+ },
647
+ "x-ruby-class": "EncryptSecretkeyRequest"
648
+ },
649
+ "EncryptSecretkeyResponse": {
650
+ "type": "object",
651
+ "properties": {
652
+ "ciphertext": {
653
+ "type": "array",
654
+ "items": {
655
+ "type": "integer"
656
+ }
657
+ }
658
+ },
659
+ "x-ruby-class": "EncryptSecretkeyResponse"
660
+ },
661
+ "ErrorResponse": {
662
+ "type": "object",
663
+ "properties": {
664
+ "details": {
665
+ "type": "object",
666
+ "description": "Deprecated"
667
+ },
668
+ "error": {
669
+ "type": "string"
670
+ },
671
+ "status": {
672
+ "$ref": "#/components/schemas/main.statusCode"
673
+ }
674
+ },
675
+ "x-ruby-class": "ErrorResponse"
676
+ },
677
+ "ExtendVolumeRequest": {
678
+ "type": "object",
679
+ "properties": {
680
+ "size_gb": {
681
+ "type": "integer"
682
+ }
683
+ },
684
+ "x-ruby-class": "ExtendVolumeRequest"
685
+ },
686
+ "ExtendVolumeResponse": {
687
+ "type": "object",
688
+ "properties": {
689
+ "needs_restart": {
690
+ "type": "boolean"
691
+ },
692
+ "volume": {
693
+ "$ref": "#/components/schemas/Volume"
694
+ }
695
+ },
696
+ "x-ruby-class": "ExtendVolumeResponse"
697
+ },
698
+ "IPAssignment": {
699
+ "type": "object",
700
+ "properties": {
701
+ "created_at": {
702
+ "type": "string"
703
+ },
704
+ "ip": {
705
+ "type": "string"
706
+ },
707
+ "region": {
708
+ "type": "string"
709
+ },
710
+ "service_name": {
711
+ "type": "string"
712
+ },
713
+ "shared": {
714
+ "type": "boolean"
715
+ }
716
+ },
717
+ "x-ruby-class": "IPAssignment"
718
+ },
719
+ "ImageRef": {
720
+ "type": "object",
721
+ "properties": {
722
+ "digest": {
723
+ "type": "string"
724
+ },
725
+ "labels": {
726
+ "type": "object",
727
+ "additionalProperties": {
728
+ "type": "string"
729
+ }
730
+ },
731
+ "registry": {
732
+ "type": "string"
733
+ },
734
+ "repository": {
735
+ "type": "string"
736
+ },
737
+ "tag": {
738
+ "type": "string"
739
+ }
740
+ },
741
+ "x-ruby-class": "ImageRef"
742
+ },
743
+ "IssuedCertificate": {
744
+ "type": "object",
745
+ "properties": {
746
+ "certificate_authority": {
747
+ "type": "string"
748
+ },
749
+ "expires_at": {
750
+ "type": "string"
751
+ },
752
+ "type": {
753
+ "type": "string",
754
+ "enum": [
755
+ "rsa",
756
+ "ecdsa"
757
+ ]
758
+ }
759
+ },
760
+ "x-ruby-class": "IssuedCertificate"
761
+ },
762
+ "Lease": {
763
+ "type": "object",
764
+ "properties": {
765
+ "description": {
766
+ "type": "string",
767
+ "description": "Description or reason for the Lease."
768
+ },
769
+ "expires_at": {
770
+ "type": "integer",
771
+ "description": "ExpiresAt is the unix timestamp in UTC to denote when the Lease will no longer be valid."
772
+ },
773
+ "nonce": {
774
+ "type": "string",
775
+ "description": "Nonce is the unique ID autogenerated and associated with the Lease."
776
+ },
777
+ "owner": {
778
+ "type": "string",
779
+ "description": "Owner is the user identifier which acquired the Lease."
780
+ },
781
+ "version": {
782
+ "type": "string",
783
+ "description": "Machine version"
784
+ }
785
+ },
786
+ "x-ruby-class": "Lease"
787
+ },
788
+ "ListAppsResponse": {
789
+ "type": "object",
790
+ "properties": {
791
+ "apps": {
792
+ "type": "array",
793
+ "items": {
794
+ "$ref": "#/components/schemas/App"
795
+ }
796
+ },
797
+ "total_apps": {
798
+ "type": "integer"
799
+ }
800
+ },
801
+ "x-ruby-class": "ListAppsResponse"
802
+ },
803
+ "ListenSocket": {
804
+ "type": "object",
805
+ "properties": {
806
+ "address": {
807
+ "type": "string"
808
+ },
809
+ "proto": {
810
+ "type": "string"
811
+ }
812
+ },
813
+ "x-ruby-class": "ListenSocket"
814
+ },
815
+ "Machine": {
816
+ "type": "object",
817
+ "properties": {
818
+ "checks": {
819
+ "type": "array",
820
+ "items": {
821
+ "$ref": "#/components/schemas/CheckStatus"
822
+ }
823
+ },
824
+ "config": {
825
+ "$ref": "#/components/schemas/fly.MachineConfig"
826
+ },
827
+ "cordoned": {
828
+ "type": "boolean"
829
+ },
830
+ "created_at": {
831
+ "type": "string"
832
+ },
833
+ "events": {
834
+ "type": "array",
835
+ "items": {
836
+ "$ref": "#/components/schemas/MachineEvent"
837
+ }
838
+ },
839
+ "host_status": {
840
+ "type": "string",
841
+ "enum": [
842
+ "ok",
843
+ "unknown",
844
+ "unreachable"
845
+ ]
846
+ },
847
+ "id": {
848
+ "type": "string"
849
+ },
850
+ "image_ref": {
851
+ "$ref": "#/components/schemas/ImageRef"
852
+ },
853
+ "incomplete_config": {
854
+ "$ref": "#/components/schemas/fly.MachineConfig"
855
+ },
856
+ "instance_id": {
857
+ "type": "string",
858
+ "description": "InstanceID is unique for each version of the machine"
859
+ },
860
+ "lease": {
861
+ "$ref": "#/components/schemas/StrippedLease"
862
+ },
863
+ "name": {
864
+ "type": "string"
865
+ },
866
+ "nonce": {
867
+ "type": "string",
868
+ "description": "Nonce is only every returned on machine creation if a lease_duration was provided."
869
+ },
870
+ "private_ip": {
871
+ "type": "string",
872
+ "description": "PrivateIP is the internal 6PN address of the machine."
873
+ },
874
+ "region": {
875
+ "type": "string"
876
+ },
877
+ "state": {
878
+ "type": "string"
879
+ },
880
+ "updated_at": {
881
+ "type": "string"
882
+ }
883
+ },
884
+ "x-ruby-class": "Machine"
885
+ },
886
+ "MachineEvent": {
887
+ "type": "object",
888
+ "properties": {
889
+ "id": {
890
+ "type": "string"
891
+ },
892
+ "request": {
893
+ "type": "object"
894
+ },
895
+ "source": {
896
+ "type": "string"
897
+ },
898
+ "status": {
899
+ "type": "string"
900
+ },
901
+ "timestamp": {
902
+ "type": "integer"
903
+ },
904
+ "type": {
905
+ "type": "string"
906
+ }
907
+ },
908
+ "x-ruby-class": "MachineEvent"
909
+ },
910
+ "MachineExecRequest": {
911
+ "type": "object",
912
+ "properties": {
913
+ "cmd": {
914
+ "type": "string",
915
+ "description": "Deprecated: use Command instead"
916
+ },
917
+ "command": {
918
+ "type": "array",
919
+ "items": {
920
+ "type": "string"
921
+ }
922
+ },
923
+ "container": {
924
+ "type": "string"
925
+ },
926
+ "machine": {
927
+ "type": "boolean",
928
+ "description": "Machine runs the command in the machine's own namespace instead of in a\ncontainer. It is mutually exclusive with Container."
929
+ },
930
+ "stdin": {
931
+ "type": "string"
932
+ },
933
+ "timeout": {
934
+ "type": "integer"
935
+ }
936
+ },
937
+ "x-ruby-class": "MachineExecRequest"
938
+ },
939
+ "MachineOverviewConfig": {
940
+ "type": "object",
941
+ "properties": {
942
+ "guest": {
943
+ "$ref": "#/components/schemas/fly.MachineGuest"
944
+ },
945
+ "image": {
946
+ "type": "string"
947
+ },
948
+ "metadata": {
949
+ "type": "object",
950
+ "additionalProperties": {
951
+ "type": "string"
952
+ }
953
+ }
954
+ },
955
+ "x-ruby-class": "MachineOverviewConfig"
956
+ },
957
+ "MachineVersion": {
958
+ "type": "object",
959
+ "properties": {
960
+ "user_config": {
961
+ "$ref": "#/components/schemas/fly.MachineConfig"
962
+ },
963
+ "version": {
964
+ "type": "string"
965
+ }
966
+ },
967
+ "x-ruby-class": "MachineVersion"
968
+ },
969
+ "OrgMachine": {
970
+ "type": "object",
971
+ "properties": {
972
+ "app_name": {
973
+ "type": "string"
974
+ },
975
+ "config": {
976
+ "$ref": "#/components/schemas/MachineOverviewConfig"
977
+ },
978
+ "created_at": {
979
+ "type": "string"
980
+ },
981
+ "id": {
982
+ "type": "string"
983
+ },
984
+ "name": {
985
+ "type": "string"
986
+ },
987
+ "private_ip": {
988
+ "type": "string"
989
+ },
990
+ "region": {
991
+ "type": "string"
992
+ },
993
+ "state": {
994
+ "type": "string"
995
+ },
996
+ "updated_at": {
997
+ "type": "string"
998
+ },
999
+ "version": {
1000
+ "type": "string"
1001
+ }
1002
+ },
1003
+ "x-ruby-class": "OrgMachine"
1004
+ },
1005
+ "OrgMachinesResponse": {
1006
+ "type": "object",
1007
+ "properties": {
1008
+ "error_regions": {
1009
+ "type": "array",
1010
+ "items": {
1011
+ "type": "string"
1012
+ }
1013
+ },
1014
+ "last_machine_id": {
1015
+ "type": "string"
1016
+ },
1017
+ "last_updated_at": {
1018
+ "type": "string"
1019
+ },
1020
+ "machines": {
1021
+ "type": "array",
1022
+ "items": {
1023
+ "$ref": "#/components/schemas/OrgMachine"
1024
+ }
1025
+ },
1026
+ "next_cursor": {
1027
+ "type": "string"
1028
+ }
1029
+ },
1030
+ "x-ruby-class": "OrgMachinesResponse"
1031
+ },
1032
+ "OrgVolume": {
1033
+ "type": "object",
1034
+ "properties": {
1035
+ "app_name": {
1036
+ "type": "string"
1037
+ },
1038
+ "attached_alloc_id": {
1039
+ "type": "string"
1040
+ },
1041
+ "attached_machine_id": {
1042
+ "type": "string"
1043
+ },
1044
+ "auto_backup_enabled": {
1045
+ "type": "boolean"
1046
+ },
1047
+ "block_size": {
1048
+ "type": "integer"
1049
+ },
1050
+ "blocks": {
1051
+ "type": "integer"
1052
+ },
1053
+ "blocks_avail": {
1054
+ "type": "integer"
1055
+ },
1056
+ "blocks_free": {
1057
+ "type": "integer"
1058
+ },
1059
+ "bytes_total": {
1060
+ "type": "integer"
1061
+ },
1062
+ "bytes_used": {
1063
+ "type": "integer"
1064
+ },
1065
+ "created_at": {
1066
+ "type": "string"
1067
+ },
1068
+ "encrypted": {
1069
+ "type": "boolean"
1070
+ },
1071
+ "fstype": {
1072
+ "type": "string"
1073
+ },
1074
+ "host_status": {
1075
+ "type": "string",
1076
+ "enum": [
1077
+ "ok",
1078
+ "unknown",
1079
+ "unreachable"
1080
+ ]
1081
+ },
1082
+ "id": {
1083
+ "type": "string"
1084
+ },
1085
+ "name": {
1086
+ "type": "string"
1087
+ },
1088
+ "region": {
1089
+ "type": "string"
1090
+ },
1091
+ "size_gb": {
1092
+ "type": "integer"
1093
+ },
1094
+ "snapshot_retention": {
1095
+ "type": "integer"
1096
+ },
1097
+ "state": {
1098
+ "type": "string"
1099
+ },
1100
+ "type": {
1101
+ "type": "string",
1102
+ "enum": [
1103
+ "local",
1104
+ "cache"
1105
+ ]
1106
+ },
1107
+ "updated_at": {
1108
+ "type": "string"
1109
+ },
1110
+ "zone": {
1111
+ "type": "string"
1112
+ }
1113
+ },
1114
+ "x-ruby-class": "OrgVolume"
1115
+ },
1116
+ "OrgVolumesResponse": {
1117
+ "type": "object",
1118
+ "properties": {
1119
+ "last_updated_at": {
1120
+ "type": "string"
1121
+ },
1122
+ "last_volume_id": {
1123
+ "type": "string"
1124
+ },
1125
+ "next_cursor": {
1126
+ "type": "string"
1127
+ },
1128
+ "volumes": {
1129
+ "type": "array",
1130
+ "items": {
1131
+ "$ref": "#/components/schemas/OrgVolume"
1132
+ }
1133
+ }
1134
+ },
1135
+ "x-ruby-class": "OrgVolumesResponse"
1136
+ },
1137
+ "OrganizationRef": {
1138
+ "type": "object",
1139
+ "properties": {
1140
+ "name": {
1141
+ "type": "string",
1142
+ "description": "Organization name."
1143
+ },
1144
+ "slug": {
1145
+ "type": "string",
1146
+ "description": "Organization slug."
1147
+ }
1148
+ },
1149
+ "x-ruby-class": "OrganizationRef"
1150
+ },
1151
+ "OwnershipVerification": {
1152
+ "type": "object",
1153
+ "properties": {
1154
+ "app_value": {
1155
+ "type": "string"
1156
+ },
1157
+ "name": {
1158
+ "type": "string"
1159
+ },
1160
+ "org_value": {
1161
+ "type": "string"
1162
+ }
1163
+ },
1164
+ "x-ruby-class": "OwnershipVerification"
1165
+ },
1166
+ "PostgresAttachedApp": {
1167
+ "type": "object",
1168
+ "properties": {
1169
+ "name": {
1170
+ "type": "string",
1171
+ "description": "Attached Fly app name."
1172
+ }
1173
+ },
1174
+ "x-ruby-class": "PostgresAttachedApp"
1175
+ },
1176
+ "PostgresAttachment": {
1177
+ "type": "object",
1178
+ "properties": {
1179
+ "app_name": {
1180
+ "type": "string",
1181
+ "description": "Attached Fly app name."
1182
+ },
1183
+ "attached_at": {
1184
+ "type": "string",
1185
+ "description": "RFC 3339 timestamp when the attachment was created."
1186
+ },
1187
+ "postgres_cluster_id": {
1188
+ "type": "string",
1189
+ "description": "Cluster ID the app is attached to."
1190
+ }
1191
+ },
1192
+ "x-ruby-class": "PostgresAttachment"
1193
+ },
1194
+ "PostgresBackup": {
1195
+ "type": "object",
1196
+ "properties": {
1197
+ "finished_at": {
1198
+ "type": "string",
1199
+ "description": "RFC 3339 stop timestamp."
1200
+ },
1201
+ "id": {
1202
+ "type": "string",
1203
+ "description": "Backup ID."
1204
+ },
1205
+ "size_bytes": {
1206
+ "type": "integer",
1207
+ "description": "Backup size in bytes."
1208
+ },
1209
+ "started_at": {
1210
+ "type": "string",
1211
+ "description": "RFC 3339 start timestamp."
1212
+ },
1213
+ "status": {
1214
+ "type": "string",
1215
+ "description": "Backup status.",
1216
+ "example": "completed"
1217
+ },
1218
+ "type": {
1219
+ "type": "string",
1220
+ "description": "Backup type.",
1221
+ "enum": [
1222
+ "full",
1223
+ "incr",
1224
+ "diff"
1225
+ ]
1226
+ }
1227
+ },
1228
+ "x-ruby-class": "PostgresBackup"
1229
+ },
1230
+ "PostgresCluster": {
1231
+ "type": "object",
1232
+ "properties": {
1233
+ "attached_apps": {
1234
+ "type": "array",
1235
+ "description": "Apps attached to the cluster.",
1236
+ "items": {
1237
+ "$ref": "#/components/schemas/PostgresAttachedApp"
1238
+ }
1239
+ },
1240
+ "cpu_kind": {
1241
+ "type": "string",
1242
+ "description": "CPU class.",
1243
+ "example": "shared",
1244
+ "enum": [
1245
+ "shared",
1246
+ "performance"
1247
+ ]
1248
+ },
1249
+ "cpus": {
1250
+ "type": "integer",
1251
+ "description": "vCPUs per node.",
1252
+ "example": 2
1253
+ },
1254
+ "created_at": {
1255
+ "type": "string",
1256
+ "description": "RFC 3339 creation timestamp."
1257
+ },
1258
+ "disk_size_gb": {
1259
+ "type": "integer",
1260
+ "description": "Disk size in gigabytes.",
1261
+ "example": 10
1262
+ },
1263
+ "endpoints": {
1264
+ "type": "object",
1265
+ "description": "Connection endpoints. Populated once the cluster is ready.",
1266
+ "allOf": [
1267
+ {
1268
+ "$ref": "#/components/schemas/PostgresClusterEndpoints"
1269
+ }
1270
+ ]
1271
+ },
1272
+ "id": {
1273
+ "type": "string",
1274
+ "description": "Cluster ID."
1275
+ },
1276
+ "memory_mb": {
1277
+ "type": "integer",
1278
+ "description": "Memory per node in megabytes.",
1279
+ "example": 1024
1280
+ },
1281
+ "name": {
1282
+ "type": "string",
1283
+ "description": "Cluster name."
1284
+ },
1285
+ "organization": {
1286
+ "$ref": "#/components/schemas/OrganizationRef"
1287
+ },
1288
+ "pg_major_version": {
1289
+ "type": "string",
1290
+ "description": "Postgres major version.",
1291
+ "example": "17",
1292
+ "enum": [
1293
+ "16",
1294
+ "17"
1295
+ ]
1296
+ },
1297
+ "plan": {
1298
+ "type": "string",
1299
+ "description": "Plan slug.",
1300
+ "example": "basic",
1301
+ "enum": [
1302
+ "basic",
1303
+ "starter",
1304
+ "launch",
1305
+ "scale",
1306
+ "Performance"
1307
+ ]
1308
+ },
1309
+ "postgis_enabled": {
1310
+ "type": "boolean",
1311
+ "description": "Whether PostGIS support is enabled."
1312
+ },
1313
+ "region": {
1314
+ "type": "string",
1315
+ "description": "Fly region code.",
1316
+ "example": "iad"
1317
+ },
1318
+ "replicas": {
1319
+ "type": "integer",
1320
+ "description": "Number of replicas.",
1321
+ "example": 1
1322
+ },
1323
+ "status": {
1324
+ "type": "string",
1325
+ "description": "Current lifecycle status.",
1326
+ "example": "ready",
1327
+ "enum": [
1328
+ "creating",
1329
+ "initializing",
1330
+ "ready",
1331
+ "deleting",
1332
+ "deleted",
1333
+ "failed"
1334
+ ]
1335
+ }
1336
+ },
1337
+ "x-ruby-class": "PostgresCluster"
1338
+ },
1339
+ "PostgresClusterEndpoints": {
1340
+ "type": "object",
1341
+ "properties": {
1342
+ "primary": {
1343
+ "type": "object",
1344
+ "description": "Endpoints for connecting to the primary node.",
1345
+ "allOf": [
1346
+ {
1347
+ "$ref": "#/components/schemas/PostgresNodeEndpoints"
1348
+ }
1349
+ ]
1350
+ }
1351
+ },
1352
+ "x-ruby-class": "PostgresClusterEndpoints"
1353
+ },
1354
+ "PostgresClusterSummary": {
1355
+ "type": "object",
1356
+ "properties": {
1357
+ "attached_apps": {
1358
+ "type": "array",
1359
+ "description": "Apps attached to the cluster.",
1360
+ "items": {
1361
+ "$ref": "#/components/schemas/PostgresAttachedApp"
1362
+ }
1363
+ },
1364
+ "created_at": {
1365
+ "type": "string",
1366
+ "description": "RFC 3339 creation timestamp."
1367
+ },
1368
+ "deleted_at": {
1369
+ "type": "string",
1370
+ "description": "RFC 3339 deletion timestamp; present for deleted clusters."
1371
+ },
1372
+ "id": {
1373
+ "type": "string",
1374
+ "description": "Cluster ID."
1375
+ },
1376
+ "name": {
1377
+ "type": "string",
1378
+ "description": "Cluster name."
1379
+ },
1380
+ "plan": {
1381
+ "type": "string",
1382
+ "description": "Plan slug.",
1383
+ "example": "basic",
1384
+ "enum": [
1385
+ "basic",
1386
+ "starter",
1387
+ "launch",
1388
+ "scale",
1389
+ "Performance"
1390
+ ]
1391
+ },
1392
+ "region": {
1393
+ "type": "string",
1394
+ "description": "Fly region code.",
1395
+ "example": "iad"
1396
+ },
1397
+ "status": {
1398
+ "type": "string",
1399
+ "description": "Current lifecycle status.",
1400
+ "example": "ready",
1401
+ "enum": [
1402
+ "creating",
1403
+ "initializing",
1404
+ "ready",
1405
+ "deleting",
1406
+ "deleted",
1407
+ "failed"
1408
+ ]
1409
+ }
1410
+ },
1411
+ "x-ruby-class": "PostgresClusterSummary"
1412
+ },
1413
+ "PostgresDatabase": {
1414
+ "type": "object",
1415
+ "properties": {
1416
+ "name": {
1417
+ "type": "string",
1418
+ "description": "Database name."
1419
+ }
1420
+ },
1421
+ "x-ruby-class": "PostgresDatabase"
1422
+ },
1423
+ "PostgresEndpoint": {
1424
+ "type": "object",
1425
+ "properties": {
1426
+ "host": {
1427
+ "type": "string",
1428
+ "description": "Hostname to connect to."
1429
+ },
1430
+ "port": {
1431
+ "type": "integer",
1432
+ "description": "TCP port."
1433
+ }
1434
+ },
1435
+ "x-ruby-class": "PostgresEndpoint"
1436
+ },
1437
+ "PostgresErrorResponse": {
1438
+ "type": "object",
1439
+ "properties": {
1440
+ "error": {
1441
+ "type": "string",
1442
+ "description": "Human-readable error message."
1443
+ }
1444
+ },
1445
+ "x-ruby-class": "PostgresErrorResponse"
1446
+ },
1447
+ "PostgresExtension": {
1448
+ "type": "object",
1449
+ "properties": {
1450
+ "default_version": {
1451
+ "type": "string",
1452
+ "description": "Default version installed when enabled."
1453
+ },
1454
+ "description": {
1455
+ "type": "string",
1456
+ "description": "Human-readable description."
1457
+ },
1458
+ "installed": {
1459
+ "type": "object",
1460
+ "description": "Installation details, or null when the extension is not installed.",
1461
+ "allOf": [
1462
+ {
1463
+ "$ref": "#/components/schemas/PostgresInstalledExtension"
1464
+ }
1465
+ ]
1466
+ },
1467
+ "name": {
1468
+ "type": "string",
1469
+ "description": "Extension name.",
1470
+ "example": "citext"
1471
+ },
1472
+ "system": {
1473
+ "type": "boolean",
1474
+ "description": "Whether this is a system extension that cannot be disabled."
1475
+ }
1476
+ },
1477
+ "x-ruby-class": "PostgresExtension"
1478
+ },
1479
+ "PostgresInstalledExtension": {
1480
+ "type": "object",
1481
+ "properties": {
1482
+ "schema": {
1483
+ "type": "string",
1484
+ "description": "Schema the extension is installed into.",
1485
+ "example": "public"
1486
+ },
1487
+ "version": {
1488
+ "type": "string",
1489
+ "description": "Installed version.",
1490
+ "example": "1.0"
1491
+ }
1492
+ },
1493
+ "x-ruby-class": "PostgresInstalledExtension"
1494
+ },
1495
+ "PostgresNodeEndpoints": {
1496
+ "type": "object",
1497
+ "properties": {
1498
+ "direct": {
1499
+ "type": "object",
1500
+ "description": "Unpooled connection to the cluster node.",
1501
+ "allOf": [
1502
+ {
1503
+ "$ref": "#/components/schemas/PostgresEndpoint"
1504
+ }
1505
+ ]
1506
+ },
1507
+ "pooler": {
1508
+ "type": "object",
1509
+ "description": "Pooled connection to the cluster node (through PgBouncer).",
1510
+ "allOf": [
1511
+ {
1512
+ "$ref": "#/components/schemas/PostgresEndpoint"
1513
+ }
1514
+ ]
1515
+ }
1516
+ },
1517
+ "x-ruby-class": "PostgresNodeEndpoints"
1518
+ },
1519
+ "PostgresUser": {
1520
+ "type": "object",
1521
+ "properties": {
1522
+ "role": {
1523
+ "type": "string",
1524
+ "description": "User role.",
1525
+ "enum": [
1526
+ "schema_admin",
1527
+ "writer",
1528
+ "reader"
1529
+ ]
1530
+ },
1531
+ "username": {
1532
+ "type": "string",
1533
+ "description": "User name."
1534
+ }
1535
+ },
1536
+ "x-ruby-class": "PostgresUser"
1537
+ },
1538
+ "PostgresUserCredentials": {
1539
+ "type": "object",
1540
+ "properties": {
1541
+ "password": {
1542
+ "type": "string",
1543
+ "description": "User password."
1544
+ },
1545
+ "username": {
1546
+ "type": "string",
1547
+ "description": "User name."
1548
+ }
1549
+ },
1550
+ "x-ruby-class": "PostgresUserCredentials"
1551
+ },
1552
+ "ProcessStat": {
1553
+ "type": "object",
1554
+ "properties": {
1555
+ "command": {
1556
+ "type": "string"
1557
+ },
1558
+ "cpu": {
1559
+ "type": "integer"
1560
+ },
1561
+ "directory": {
1562
+ "type": "string"
1563
+ },
1564
+ "listen_sockets": {
1565
+ "type": "array",
1566
+ "items": {
1567
+ "$ref": "#/components/schemas/ListenSocket"
1568
+ }
1569
+ },
1570
+ "pid": {
1571
+ "type": "integer"
1572
+ },
1573
+ "rss": {
1574
+ "type": "integer"
1575
+ },
1576
+ "rtime": {
1577
+ "type": "integer"
1578
+ },
1579
+ "stime": {
1580
+ "type": "integer"
1581
+ }
1582
+ },
1583
+ "x-ruby-class": "ProcessStat"
1584
+ },
1585
+ "SecretKey": {
1586
+ "type": "object",
1587
+ "properties": {
1588
+ "created_at": {
1589
+ "type": "string"
1590
+ },
1591
+ "name": {
1592
+ "type": "string"
1593
+ },
1594
+ "public_key": {
1595
+ "type": "array",
1596
+ "items": {
1597
+ "type": "integer"
1598
+ }
1599
+ },
1600
+ "type": {
1601
+ "type": "string"
1602
+ },
1603
+ "updated_at": {
1604
+ "type": "string"
1605
+ }
1606
+ },
1607
+ "x-ruby-class": "SecretKey"
1608
+ },
1609
+ "SecretKeys": {
1610
+ "type": "object",
1611
+ "properties": {
1612
+ "secret_keys": {
1613
+ "type": "array",
1614
+ "items": {
1615
+ "$ref": "#/components/schemas/SecretKey"
1616
+ }
1617
+ }
1618
+ },
1619
+ "x-ruby-class": "SecretKeys"
1620
+ },
1621
+ "SetAppSecretRequest": {
1622
+ "type": "object",
1623
+ "properties": {
1624
+ "value": {
1625
+ "type": "string"
1626
+ }
1627
+ },
1628
+ "x-ruby-class": "SetAppSecretRequest"
1629
+ },
1630
+ "SetAppSecretResponse": {
1631
+ "type": "object",
1632
+ "properties": {
1633
+ "Version": {
1634
+ "type": "integer",
1635
+ "description": "DEPRECATED"
1636
+ },
1637
+ "created_at": {
1638
+ "type": "string"
1639
+ },
1640
+ "digest": {
1641
+ "type": "string"
1642
+ },
1643
+ "name": {
1644
+ "type": "string"
1645
+ },
1646
+ "updated_at": {
1647
+ "type": "string"
1648
+ },
1649
+ "value": {
1650
+ "type": "string"
1651
+ },
1652
+ "version": {
1653
+ "type": "integer"
1654
+ }
1655
+ },
1656
+ "x-ruby-class": "SetAppSecretResponse"
1657
+ },
1658
+ "SetSecretkeyRequest": {
1659
+ "type": "object",
1660
+ "properties": {
1661
+ "type": {
1662
+ "type": "string"
1663
+ },
1664
+ "value": {
1665
+ "type": "array",
1666
+ "items": {
1667
+ "type": "integer"
1668
+ }
1669
+ }
1670
+ },
1671
+ "x-ruby-class": "SetSecretkeyRequest"
1672
+ },
1673
+ "SetSecretkeyResponse": {
1674
+ "type": "object",
1675
+ "properties": {
1676
+ "Version": {
1677
+ "type": "integer",
1678
+ "description": "DEPRECATED"
1679
+ },
1680
+ "created_at": {
1681
+ "type": "string"
1682
+ },
1683
+ "name": {
1684
+ "type": "string"
1685
+ },
1686
+ "public_key": {
1687
+ "type": "array",
1688
+ "items": {
1689
+ "type": "integer"
1690
+ }
1691
+ },
1692
+ "type": {
1693
+ "type": "string"
1694
+ },
1695
+ "updated_at": {
1696
+ "type": "string"
1697
+ },
1698
+ "version": {
1699
+ "type": "integer"
1700
+ }
1701
+ },
1702
+ "x-ruby-class": "SetSecretkeyResponse"
1703
+ },
1704
+ "SignSecretkeyRequest": {
1705
+ "type": "object",
1706
+ "properties": {
1707
+ "plaintext": {
1708
+ "type": "array",
1709
+ "items": {
1710
+ "type": "integer"
1711
+ }
1712
+ }
1713
+ },
1714
+ "x-ruby-class": "SignSecretkeyRequest"
1715
+ },
1716
+ "SignSecretkeyResponse": {
1717
+ "type": "object",
1718
+ "properties": {
1719
+ "signature": {
1720
+ "type": "array",
1721
+ "items": {
1722
+ "type": "integer"
1723
+ }
1724
+ }
1725
+ },
1726
+ "x-ruby-class": "SignSecretkeyResponse"
1727
+ },
1728
+ "SignalRequest": {
1729
+ "type": "object",
1730
+ "properties": {
1731
+ "signal": {
1732
+ "type": "string",
1733
+ "enum": [
1734
+ "SIGABRT",
1735
+ "SIGALRM",
1736
+ "SIGFPE",
1737
+ "SIGHUP",
1738
+ "SIGILL",
1739
+ "SIGINT",
1740
+ "SIGKILL",
1741
+ "SIGPIPE",
1742
+ "SIGQUIT",
1743
+ "SIGSEGV",
1744
+ "SIGTERM",
1745
+ "SIGTRAP",
1746
+ "SIGUSR1",
1747
+ "SIGUSR2"
1748
+ ]
1749
+ }
1750
+ },
1751
+ "x-ruby-class": "SignalRequest"
1752
+ },
1753
+ "StopRequest": {
1754
+ "type": "object",
1755
+ "properties": {
1756
+ "signal": {
1757
+ "type": "string",
1758
+ "example": "SIGTERM",
1759
+ "enum": [
1760
+ "SIGHUP",
1761
+ "SIGINT",
1762
+ "SIGQUIT",
1763
+ "SIGKILL",
1764
+ "SIGUSR1",
1765
+ "SIGUSR2",
1766
+ "SIGTERM"
1767
+ ]
1768
+ },
1769
+ "timeout": {
1770
+ "type": "string",
1771
+ "example": "1s"
1772
+ }
1773
+ },
1774
+ "x-ruby-class": "StopRequest"
1775
+ },
1776
+ "StrippedLease": {
1777
+ "type": "object",
1778
+ "properties": {
1779
+ "description": {
1780
+ "type": "string"
1781
+ },
1782
+ "expires_at": {
1783
+ "type": "integer"
1784
+ },
1785
+ "owner": {
1786
+ "type": "string"
1787
+ }
1788
+ },
1789
+ "x-ruby-class": "StrippedLease"
1790
+ },
1791
+ "UpdateMachineRequest": {
1792
+ "type": "object",
1793
+ "properties": {
1794
+ "config": {
1795
+ "type": "object",
1796
+ "description": "An object defining the Machine configuration",
1797
+ "allOf": [
1798
+ {
1799
+ "$ref": "#/components/schemas/fly.MachineConfig"
1800
+ }
1801
+ ]
1802
+ },
1803
+ "current_version": {
1804
+ "type": "string"
1805
+ },
1806
+ "lease_ttl": {
1807
+ "type": "integer"
1808
+ },
1809
+ "min_secrets_version": {
1810
+ "type": "integer"
1811
+ },
1812
+ "name": {
1813
+ "type": "string",
1814
+ "description": "Unique name for this Machine. If omitted, one is generated for you"
1815
+ },
1816
+ "region": {
1817
+ "type": "string",
1818
+ "description": "The target region. Omitting this param launches in the same region as your WireGuard peer connection (somewhere near you)."
1819
+ },
1820
+ "skip_launch": {
1821
+ "type": "boolean"
1822
+ },
1823
+ "skip_secrets": {
1824
+ "type": "boolean"
1825
+ },
1826
+ "skip_service_registration": {
1827
+ "type": "boolean"
1828
+ }
1829
+ },
1830
+ "x-ruby-class": "UpdateMachineRequest"
1831
+ },
1832
+ "UpdateVolumeRequest": {
1833
+ "type": "object",
1834
+ "properties": {
1835
+ "auto_backup_enabled": {
1836
+ "type": "boolean"
1837
+ },
1838
+ "snapshot_retention": {
1839
+ "type": "integer"
1840
+ }
1841
+ },
1842
+ "x-ruby-class": "UpdateVolumeRequest"
1843
+ },
1844
+ "VerifySecretkeyRequest": {
1845
+ "type": "object",
1846
+ "properties": {
1847
+ "plaintext": {
1848
+ "type": "array",
1849
+ "items": {
1850
+ "type": "integer"
1851
+ }
1852
+ },
1853
+ "signature": {
1854
+ "type": "array",
1855
+ "items": {
1856
+ "type": "integer"
1857
+ }
1858
+ }
1859
+ },
1860
+ "x-ruby-class": "VerifySecretkeyRequest"
1861
+ },
1862
+ "Volume": {
1863
+ "type": "object",
1864
+ "properties": {
1865
+ "attached_alloc_id": {
1866
+ "type": "string"
1867
+ },
1868
+ "attached_machine_id": {
1869
+ "type": "string"
1870
+ },
1871
+ "auto_backup_enabled": {
1872
+ "type": "boolean"
1873
+ },
1874
+ "block_size": {
1875
+ "type": "integer"
1876
+ },
1877
+ "blocks": {
1878
+ "type": "integer"
1879
+ },
1880
+ "blocks_avail": {
1881
+ "type": "integer"
1882
+ },
1883
+ "blocks_free": {
1884
+ "type": "integer"
1885
+ },
1886
+ "bytes_total": {
1887
+ "type": "integer"
1888
+ },
1889
+ "bytes_used": {
1890
+ "type": "integer"
1891
+ },
1892
+ "created_at": {
1893
+ "type": "string"
1894
+ },
1895
+ "encrypted": {
1896
+ "type": "boolean"
1897
+ },
1898
+ "fstype": {
1899
+ "type": "string"
1900
+ },
1901
+ "host_status": {
1902
+ "type": "string",
1903
+ "enum": [
1904
+ "ok",
1905
+ "unknown",
1906
+ "unreachable"
1907
+ ]
1908
+ },
1909
+ "id": {
1910
+ "type": "string"
1911
+ },
1912
+ "name": {
1913
+ "type": "string"
1914
+ },
1915
+ "region": {
1916
+ "type": "string"
1917
+ },
1918
+ "size_gb": {
1919
+ "type": "integer"
1920
+ },
1921
+ "snapshot_retention": {
1922
+ "type": "integer"
1923
+ },
1924
+ "state": {
1925
+ "type": "string"
1926
+ },
1927
+ "type": {
1928
+ "type": "string",
1929
+ "enum": [
1930
+ "local",
1931
+ "cache"
1932
+ ]
1933
+ },
1934
+ "zone": {
1935
+ "type": "string"
1936
+ }
1937
+ },
1938
+ "x-ruby-class": "Volume"
1939
+ },
1940
+ "VolumeSnapshot": {
1941
+ "type": "object",
1942
+ "properties": {
1943
+ "created_at": {
1944
+ "type": "string"
1945
+ },
1946
+ "digest": {
1947
+ "type": "string"
1948
+ },
1949
+ "id": {
1950
+ "type": "string"
1951
+ },
1952
+ "retention_days": {
1953
+ "type": "integer"
1954
+ },
1955
+ "size": {
1956
+ "type": "integer"
1957
+ },
1958
+ "status": {
1959
+ "type": "string"
1960
+ },
1961
+ "volume_size": {
1962
+ "type": "integer"
1963
+ }
1964
+ },
1965
+ "x-ruby-class": "VolumeSnapshot"
1966
+ },
1967
+ "WaitMachineResponse": {
1968
+ "type": "object",
1969
+ "properties": {
1970
+ "event_id": {
1971
+ "type": "string"
1972
+ },
1973
+ "ok": {
1974
+ "type": "boolean"
1975
+ },
1976
+ "state": {
1977
+ "type": "string"
1978
+ },
1979
+ "version": {
1980
+ "type": "string"
1981
+ }
1982
+ },
1983
+ "x-ruby-class": "WaitMachineResponse"
1984
+ },
1985
+ "assignIPRequest": {
1986
+ "type": "object",
1987
+ "properties": {
1988
+ "network": {
1989
+ "type": "string"
1990
+ },
1991
+ "org_slug": {
1992
+ "type": "string"
1993
+ },
1994
+ "region": {
1995
+ "type": "string"
1996
+ },
1997
+ "service_name": {
1998
+ "type": "string"
1999
+ },
2000
+ "type": {
2001
+ "type": "string"
2002
+ }
2003
+ },
2004
+ "x-ruby-class": "AssignIPRequest"
2005
+ },
2006
+ "authenticateTokenRequest": {
2007
+ "type": "object",
2008
+ "properties": {
2009
+ "header": {
2010
+ "type": "string"
2011
+ }
2012
+ },
2013
+ "x-ruby-class": "AuthenticateTokenRequest"
2014
+ },
2015
+ "authorizeResponse": {
2016
+ "type": "object",
2017
+ "properties": {
2018
+ "access": {
2019
+ "$ref": "#/components/schemas/flyio.Access"
2020
+ },
2021
+ "verified_token": {
2022
+ "$ref": "#/components/schemas/root.VerifiedToken"
2023
+ }
2024
+ },
2025
+ "x-ruby-class": "AuthorizeResponse"
2026
+ },
2027
+ "authorizeTokenRequest": {
2028
+ "type": "object",
2029
+ "properties": {
2030
+ "access": {
2031
+ "$ref": "#/components/schemas/main.TokenAccess"
2032
+ },
2033
+ "header": {
2034
+ "type": "string"
2035
+ }
2036
+ },
2037
+ "x-ruby-class": "AuthorizeTokenRequest"
2038
+ },
2039
+ "createAcmeCertificateRequest": {
2040
+ "type": "object",
2041
+ "properties": {
2042
+ "hostname": {
2043
+ "type": "string"
2044
+ }
2045
+ },
2046
+ "x-ruby-class": "CreateAcmeCertificateRequest"
2047
+ },
2048
+ "createCustomCertificateRequest": {
2049
+ "type": "object",
2050
+ "properties": {
2051
+ "fullchain": {
2052
+ "type": "string"
2053
+ },
2054
+ "hostname": {
2055
+ "type": "string"
2056
+ },
2057
+ "private_key": {
2058
+ "type": "string"
2059
+ }
2060
+ },
2061
+ "x-ruby-class": "CreateCustomCertificateRequest"
2062
+ },
2063
+ "createPostgresAttachmentRequest": {
2064
+ "required": [
2065
+ "app_name"
2066
+ ],
2067
+ "type": "object",
2068
+ "properties": {
2069
+ "app_name": {
2070
+ "type": "string",
2071
+ "description": "Name of the Fly app to attach."
2072
+ }
2073
+ },
2074
+ "x-ruby-class": "CreatePostgresAttachmentRequest"
2075
+ },
2076
+ "createPostgresAttachmentResponse": {
2077
+ "type": "object",
2078
+ "properties": {
2079
+ "data": {
2080
+ "$ref": "#/components/schemas/PostgresAttachment"
2081
+ }
2082
+ },
2083
+ "x-ruby-class": "CreatePostgresAttachmentResponse"
2084
+ },
2085
+ "createPostgresBackupRequest": {
2086
+ "required": [
2087
+ "type"
2088
+ ],
2089
+ "type": "object",
2090
+ "properties": {
2091
+ "type": {
2092
+ "type": "string",
2093
+ "description": "Backup type.",
2094
+ "example": "full",
2095
+ "enum": [
2096
+ "full",
2097
+ "incr",
2098
+ "diff"
2099
+ ]
2100
+ }
2101
+ },
2102
+ "x-ruby-class": "CreatePostgresBackupRequest"
2103
+ },
2104
+ "createPostgresClusterRequest": {
2105
+ "required": [
2106
+ "org_slug",
2107
+ "plan",
2108
+ "region"
2109
+ ],
2110
+ "type": "object",
2111
+ "properties": {
2112
+ "disk_size_gb": {
2113
+ "maximum": 1000,
2114
+ "minimum": 10,
2115
+ "type": "integer",
2116
+ "description": "Disk size in gigabytes.",
2117
+ "example": 10
2118
+ },
2119
+ "name": {
2120
+ "type": "string",
2121
+ "description": "Name for the cluster. A name is generated when omitted."
2122
+ },
2123
+ "org_slug": {
2124
+ "type": "string",
2125
+ "description": "Slug of the organization that will own the cluster.",
2126
+ "example": "my-org"
2127
+ },
2128
+ "pg_major_version": {
2129
+ "type": "string",
2130
+ "description": "Postgres major version.",
2131
+ "example": "17",
2132
+ "enum": [
2133
+ "16",
2134
+ "17"
2135
+ ]
2136
+ },
2137
+ "plan": {
2138
+ "type": "string",
2139
+ "description": "Plan slug selecting CPU, memory, and disk sizing.",
2140
+ "example": "basic",
2141
+ "enum": [
2142
+ "basic",
2143
+ "starter",
2144
+ "launch",
2145
+ "scale",
2146
+ "Performance"
2147
+ ]
2148
+ },
2149
+ "pool_mode": {
2150
+ "type": "string",
2151
+ "description": "Connection pooler mode.",
2152
+ "example": "transaction",
2153
+ "enum": [
2154
+ "session",
2155
+ "transaction"
2156
+ ]
2157
+ },
2158
+ "postgis_enabled": {
2159
+ "type": "boolean",
2160
+ "description": "Enable PostGIS support, required to later enable PostGIS extensions."
2161
+ },
2162
+ "region": {
2163
+ "type": "string",
2164
+ "description": "Fly region code where the cluster's primary runs.",
2165
+ "example": "iad"
2166
+ }
2167
+ },
2168
+ "x-ruby-class": "CreatePostgresClusterRequest"
2169
+ },
2170
+ "createPostgresDatabaseRequest": {
2171
+ "required": [
2172
+ "name"
2173
+ ],
2174
+ "type": "object",
2175
+ "properties": {
2176
+ "name": {
2177
+ "type": "string",
2178
+ "description": "Name of the database to create."
2179
+ }
2180
+ },
2181
+ "x-ruby-class": "CreatePostgresDatabaseRequest"
2182
+ },
2183
+ "createPostgresUserRequest": {
2184
+ "required": [
2185
+ "role",
2186
+ "username"
2187
+ ],
2188
+ "type": "object",
2189
+ "properties": {
2190
+ "role": {
2191
+ "type": "string",
2192
+ "description": "Role to grant the user.",
2193
+ "example": "writer",
2194
+ "enum": [
2195
+ "schema_admin",
2196
+ "writer",
2197
+ "reader"
2198
+ ]
2199
+ },
2200
+ "username": {
2201
+ "type": "string",
2202
+ "description": "Name for the new user."
2203
+ }
2204
+ },
2205
+ "x-ruby-class": "CreatePostgresUserRequest"
2206
+ },
2207
+ "createPostgresUserResponse": {
2208
+ "type": "object",
2209
+ "properties": {
2210
+ "data": {
2211
+ "$ref": "#/components/schemas/PostgresUser"
2212
+ }
2213
+ },
2214
+ "x-ruby-class": "CreatePostgresUserResponse"
2215
+ },
2216
+ "destroyCustomCertificateResponse": {
2217
+ "type": "object",
2218
+ "properties": {
2219
+ "acme_requested": {
2220
+ "type": "boolean"
2221
+ },
2222
+ "certificates": {
2223
+ "type": "array",
2224
+ "items": {
2225
+ "$ref": "#/components/schemas/CertificateEntry"
2226
+ }
2227
+ },
2228
+ "configured": {
2229
+ "type": "boolean"
2230
+ },
2231
+ "dns_provider": {
2232
+ "type": "string"
2233
+ },
2234
+ "dns_requirements": {
2235
+ "$ref": "#/components/schemas/DNSRequirements"
2236
+ },
2237
+ "hostname": {
2238
+ "type": "string"
2239
+ },
2240
+ "rate_limited_until": {
2241
+ "type": "string"
2242
+ },
2243
+ "status": {
2244
+ "type": "string"
2245
+ },
2246
+ "validation": {
2247
+ "$ref": "#/components/schemas/CertificateValidation"
2248
+ },
2249
+ "validation_errors": {
2250
+ "type": "array",
2251
+ "items": {
2252
+ "$ref": "#/components/schemas/CertificateValidationError"
2253
+ }
2254
+ },
2255
+ "warning": {
2256
+ "type": "string"
2257
+ }
2258
+ },
2259
+ "x-ruby-class": "DestroyCustomCertificateResponse"
2260
+ },
2261
+ "enablePostgresExtensionRequest": {
2262
+ "required": [
2263
+ "name"
2264
+ ],
2265
+ "type": "object",
2266
+ "properties": {
2267
+ "create_schema": {
2268
+ "type": "boolean",
2269
+ "description": "Create the schema first if it does not exist."
2270
+ },
2271
+ "name": {
2272
+ "type": "string",
2273
+ "description": "Extension to enable.",
2274
+ "example": "citext"
2275
+ },
2276
+ "schema": {
2277
+ "type": "string",
2278
+ "description": "Schema to install the extension into. Defaults to the database's default schema."
2279
+ }
2280
+ },
2281
+ "x-ruby-class": "EnablePostgresExtensionRequest"
2282
+ },
2283
+ "fly.ContainerConfig": {
2284
+ "type": "object",
2285
+ "properties": {
2286
+ "cmd": {
2287
+ "type": "array",
2288
+ "description": "CmdOverride is used to override the default command of the image.",
2289
+ "items": {
2290
+ "type": "string"
2291
+ }
2292
+ },
2293
+ "depends_on": {
2294
+ "type": "array",
2295
+ "description": "DependsOn can be used to define dependencies between containers. The container will only be\nstarted after all of its dependent conditions have been satisfied.",
2296
+ "items": {
2297
+ "$ref": "#/components/schemas/fly.ContainerDependency"
2298
+ }
2299
+ },
2300
+ "entrypoint": {
2301
+ "type": "array",
2302
+ "description": "EntrypointOverride is used to override the default entrypoint of the image.",
2303
+ "items": {
2304
+ "type": "string"
2305
+ }
2306
+ },
2307
+ "env": {
2308
+ "type": "object",
2309
+ "additionalProperties": {
2310
+ "type": "string"
2311
+ },
2312
+ "description": "ExtraEnv is used to add additional environment variables to the container."
2313
+ },
2314
+ "env_from": {
2315
+ "type": "array",
2316
+ "description": "EnvFrom can be provided to set environment variables from machine fields.",
2317
+ "items": {
2318
+ "$ref": "#/components/schemas/fly.EnvFrom"
2319
+ }
2320
+ },
2321
+ "exec": {
2322
+ "type": "array",
2323
+ "description": "Image Config overrides - these fields are used to override the image configuration.\nIf not provided, the image configuration will be used.\nExecOverride is used to override the default command of the image.",
2324
+ "items": {
2325
+ "type": "string"
2326
+ }
2327
+ },
2328
+ "files": {
2329
+ "type": "array",
2330
+ "description": "Files are files that will be written to the container file system.",
2331
+ "items": {
2332
+ "$ref": "#/components/schemas/fly.File"
2333
+ }
2334
+ },
2335
+ "healthchecks": {
2336
+ "type": "array",
2337
+ "description": "Healthchecks determine the health of your containers. Healthchecks can use HTTP, TCP or an Exec command.",
2338
+ "items": {
2339
+ "$ref": "#/components/schemas/fly.ContainerHealthcheck"
2340
+ }
2341
+ },
2342
+ "image": {
2343
+ "type": "string",
2344
+ "description": "Image is the docker image to run."
2345
+ },
2346
+ "name": {
2347
+ "type": "string",
2348
+ "description": "Name is used to identify the container in the machine."
2349
+ },
2350
+ "restart": {
2351
+ "type": "object",
2352
+ "description": "Restart is used to define the restart policy for the container. NOTE: spot-price is not\nsupported for containers.",
2353
+ "allOf": [
2354
+ {
2355
+ "$ref": "#/components/schemas/fly.MachineRestart"
2356
+ }
2357
+ ]
2358
+ },
2359
+ "secrets": {
2360
+ "type": "array",
2361
+ "description": "Secrets can be provided at the process level to explicitly indicate which secrets should be\nused for the process. If not provided, the secrets provided at the machine level will be used.",
2362
+ "items": {
2363
+ "$ref": "#/components/schemas/fly.MachineSecret"
2364
+ }
2365
+ },
2366
+ "stop": {
2367
+ "type": "object",
2368
+ "description": "Stop is used to define the signal and timeout for stopping the container.",
2369
+ "allOf": [
2370
+ {
2371
+ "$ref": "#/components/schemas/fly.StopConfig"
2372
+ }
2373
+ ]
2374
+ },
2375
+ "user": {
2376
+ "type": "string",
2377
+ "description": "UserOverride is used to override the default user of the image."
2378
+ }
2379
+ },
2380
+ "x-ruby-class": "FlyContainerConfig"
2381
+ },
2382
+ "fly.ContainerDependency": {
2383
+ "type": "object",
2384
+ "properties": {
2385
+ "condition": {
2386
+ "type": "object",
2387
+ "allOf": [
2388
+ {
2389
+ "$ref": "#/components/schemas/fly.ContainerDependencyCondition"
2390
+ }
2391
+ ]
2392
+ },
2393
+ "name": {
2394
+ "type": "string"
2395
+ }
2396
+ },
2397
+ "x-ruby-class": "FlyContainerDependency"
2398
+ },
2399
+ "fly.ContainerDependencyCondition": {
2400
+ "type": "string",
2401
+ "enum": [
2402
+ "exited_successfully",
2403
+ "healthy",
2404
+ "started"
2405
+ ],
2406
+ "x-enum-varnames": [
2407
+ "ExitedSuccessfully",
2408
+ "Healthy",
2409
+ "Started"
2410
+ ],
2411
+ "x-ruby-class": "FlyContainerDependencyCondition"
2412
+ },
2413
+ "fly.ContainerHealthcheck": {
2414
+ "type": "object",
2415
+ "properties": {
2416
+ "exec": {
2417
+ "$ref": "#/components/schemas/fly.ExecHealthcheck"
2418
+ },
2419
+ "failure_threshold": {
2420
+ "type": "integer",
2421
+ "description": "The number of times the check must fail before considering the container unhealthy."
2422
+ },
2423
+ "grace_period": {
2424
+ "type": "integer",
2425
+ "description": "The time in seconds to wait after a container starts before checking its health."
2426
+ },
2427
+ "http": {
2428
+ "$ref": "#/components/schemas/fly.HTTPHealthcheck"
2429
+ },
2430
+ "interval": {
2431
+ "type": "integer",
2432
+ "description": "The time in seconds between executing the defined check."
2433
+ },
2434
+ "kind": {
2435
+ "type": "object",
2436
+ "description": "Kind of healthcheck (readiness, liveness)",
2437
+ "allOf": [
2438
+ {
2439
+ "$ref": "#/components/schemas/fly.ContainerHealthcheckKind"
2440
+ }
2441
+ ]
2442
+ },
2443
+ "name": {
2444
+ "type": "string",
2445
+ "description": "The name of the check. Must be unique within the container."
2446
+ },
2447
+ "success_threshold": {
2448
+ "type": "integer",
2449
+ "description": "The number of times the check must succeeed before considering the container healthy."
2450
+ },
2451
+ "tcp": {
2452
+ "$ref": "#/components/schemas/fly.TCPHealthcheck"
2453
+ },
2454
+ "timeout": {
2455
+ "type": "integer",
2456
+ "description": "The time in seconds to wait for the check to complete."
2457
+ },
2458
+ "unhealthy": {
2459
+ "type": "object",
2460
+ "description": "Unhealthy policy that determines what action to take if a container is deemed unhealthy",
2461
+ "allOf": [
2462
+ {
2463
+ "$ref": "#/components/schemas/fly.UnhealthyPolicy"
2464
+ }
2465
+ ]
2466
+ }
2467
+ },
2468
+ "x-ruby-class": "FlyContainerHealthcheck"
2469
+ },
2470
+ "fly.ContainerHealthcheckKind": {
2471
+ "type": "string",
2472
+ "enum": [
2473
+ "readiness",
2474
+ "liveness"
2475
+ ],
2476
+ "x-enum-varnames": [
2477
+ "Readiness",
2478
+ "Liveness"
2479
+ ],
2480
+ "x-ruby-class": "FlyContainerHealthcheckKind"
2481
+ },
2482
+ "fly.ContainerHealthcheckScheme": {
2483
+ "type": "string",
2484
+ "enum": [
2485
+ "http",
2486
+ "https"
2487
+ ],
2488
+ "x-enum-varnames": [
2489
+ "HTTP",
2490
+ "HTTPS"
2491
+ ],
2492
+ "x-ruby-class": "FlyContainerHealthcheckScheme"
2493
+ },
2494
+ "fly.DNSConfig": {
2495
+ "type": "object",
2496
+ "properties": {
2497
+ "dns_forward_rules": {
2498
+ "type": "array",
2499
+ "items": {
2500
+ "$ref": "#/components/schemas/fly.dnsForwardRule"
2501
+ }
2502
+ },
2503
+ "hostname": {
2504
+ "type": "string"
2505
+ },
2506
+ "hostname_fqdn": {
2507
+ "type": "string"
2508
+ },
2509
+ "nameservers": {
2510
+ "type": "array",
2511
+ "items": {
2512
+ "type": "string"
2513
+ }
2514
+ },
2515
+ "options": {
2516
+ "type": "array",
2517
+ "items": {
2518
+ "$ref": "#/components/schemas/fly.dnsOption"
2519
+ }
2520
+ },
2521
+ "searches": {
2522
+ "type": "array",
2523
+ "items": {
2524
+ "type": "string"
2525
+ }
2526
+ },
2527
+ "skip_registration": {
2528
+ "type": "boolean"
2529
+ }
2530
+ },
2531
+ "x-ruby-class": "FlyDNSConfig"
2532
+ },
2533
+ "fly.EnvFrom": {
2534
+ "type": "object",
2535
+ "properties": {
2536
+ "env_var": {
2537
+ "type": "string",
2538
+ "description": "EnvVar is required and is the name of the environment variable that will be set from the\nsecret. It must be a valid environment variable name."
2539
+ },
2540
+ "field_ref": {
2541
+ "type": "string",
2542
+ "description": "FieldRef selects a field of the Machine: supports id, version, app_name, private_ip, region, image.",
2543
+ "enum": [
2544
+ "id",
2545
+ "version",
2546
+ "app_name",
2547
+ "private_ip",
2548
+ "region",
2549
+ "image"
2550
+ ]
2551
+ }
2552
+ },
2553
+ "description": "EnvVar defines an environment variable to be populated from a machine field, env_var",
2554
+ "x-ruby-class": "FlyEnvFrom"
2555
+ },
2556
+ "fly.ExecHealthcheck": {
2557
+ "type": "object",
2558
+ "properties": {
2559
+ "command": {
2560
+ "type": "array",
2561
+ "description": "The command to run to check the health of the container (e.g. [\"cat\", \"/tmp/healthy\"])",
2562
+ "items": {
2563
+ "type": "string"
2564
+ }
2565
+ }
2566
+ },
2567
+ "x-ruby-class": "FlyExecHealthcheck"
2568
+ },
2569
+ "fly.File": {
2570
+ "type": "object",
2571
+ "properties": {
2572
+ "guest_path": {
2573
+ "type": "string",
2574
+ "description": "GuestPath is the path on the machine where the file will be written and must be an absolute path.\nFor example: /full/path/to/file.json"
2575
+ },
2576
+ "image_config": {
2577
+ "type": "string",
2578
+ "description": "The name of an image to use the OCI image config as the file contents."
2579
+ },
2580
+ "mode": {
2581
+ "type": "integer",
2582
+ "description": "Mode bits used to set permissions on this file as accepted by chmod(2)."
2583
+ },
2584
+ "raw_value": {
2585
+ "type": "string",
2586
+ "description": "The base64 encoded string of the file contents."
2587
+ },
2588
+ "secret_name": {
2589
+ "type": "string",
2590
+ "description": "The name of the secret that contains the base64 encoded file contents."
2591
+ }
2592
+ },
2593
+ "description": "A file that will be written to the Machine. One of RawValue or SecretName must be set.",
2594
+ "x-ruby-class": "FlyFile"
2595
+ },
2596
+ "fly.HTTPHealthcheck": {
2597
+ "type": "object",
2598
+ "properties": {
2599
+ "headers": {
2600
+ "type": "array",
2601
+ "description": "Additional headers to send with the request",
2602
+ "items": {
2603
+ "$ref": "#/components/schemas/fly.MachineHTTPHeader"
2604
+ }
2605
+ },
2606
+ "method": {
2607
+ "type": "string",
2608
+ "description": "The HTTP method to use to when making the request"
2609
+ },
2610
+ "path": {
2611
+ "type": "string",
2612
+ "description": "The path to send the request to"
2613
+ },
2614
+ "port": {
2615
+ "type": "integer",
2616
+ "description": "The port to connect to, often the same as internal_port"
2617
+ },
2618
+ "scheme": {
2619
+ "type": "object",
2620
+ "description": "Whether to use http or https",
2621
+ "allOf": [
2622
+ {
2623
+ "$ref": "#/components/schemas/fly.ContainerHealthcheckScheme"
2624
+ }
2625
+ ]
2626
+ },
2627
+ "tls_server_name": {
2628
+ "type": "string",
2629
+ "description": "If the protocol is https, the hostname to use for TLS certificate validation"
2630
+ },
2631
+ "tls_skip_verify": {
2632
+ "type": "boolean",
2633
+ "description": "If the protocol is https, whether or not to verify the TLS certificate"
2634
+ }
2635
+ },
2636
+ "x-ruby-class": "FlyHTTPHealthcheck"
2637
+ },
2638
+ "fly.HTTPOptions": {
2639
+ "type": "object",
2640
+ "properties": {
2641
+ "compress": {
2642
+ "type": "boolean"
2643
+ },
2644
+ "h2_backend": {
2645
+ "type": "boolean"
2646
+ },
2647
+ "headers_read_timeout": {
2648
+ "type": "integer"
2649
+ },
2650
+ "idle_timeout": {
2651
+ "type": "integer"
2652
+ },
2653
+ "replay_cache": {
2654
+ "type": "array",
2655
+ "items": {
2656
+ "$ref": "#/components/schemas/fly.ReplayCache"
2657
+ }
2658
+ },
2659
+ "response": {
2660
+ "$ref": "#/components/schemas/fly.HTTPResponseOptions"
2661
+ }
2662
+ },
2663
+ "x-ruby-class": "FlyHTTPOptions"
2664
+ },
2665
+ "fly.HTTPResponseOptions": {
2666
+ "type": "object",
2667
+ "properties": {
2668
+ "headers": {
2669
+ "type": "object",
2670
+ "additionalProperties": {
2671
+ "type": "object"
2672
+ }
2673
+ },
2674
+ "pristine": {
2675
+ "type": "boolean"
2676
+ }
2677
+ },
2678
+ "x-ruby-class": "FlyHTTPResponseOptions"
2679
+ },
2680
+ "fly.MachineCacheDrive": {
2681
+ "type": "object",
2682
+ "properties": {
2683
+ "size_mb": {
2684
+ "type": "integer"
2685
+ }
2686
+ },
2687
+ "x-ruby-class": "FlyMachineCacheDrive"
2688
+ },
2689
+ "fly.MachineCheck": {
2690
+ "type": "object",
2691
+ "properties": {
2692
+ "grace_period": {
2693
+ "type": "string",
2694
+ "description": "The time to wait after a VM starts before checking its health",
2695
+ "example": "1s"
2696
+ },
2697
+ "headers": {
2698
+ "type": "array",
2699
+ "items": {
2700
+ "$ref": "#/components/schemas/fly.MachineHTTPHeader"
2701
+ }
2702
+ },
2703
+ "interval": {
2704
+ "type": "string",
2705
+ "description": "The time between connectivity checks",
2706
+ "example": "15s"
2707
+ },
2708
+ "kind": {
2709
+ "type": "string",
2710
+ "description": "Kind of the check (informational, readiness)",
2711
+ "enum": [
2712
+ "informational",
2713
+ "readiness"
2714
+ ]
2715
+ },
2716
+ "method": {
2717
+ "type": "string",
2718
+ "description": "For http checks, the HTTP method to use to when making the request"
2719
+ },
2720
+ "path": {
2721
+ "type": "string",
2722
+ "description": "For http checks, the path to send the request to"
2723
+ },
2724
+ "port": {
2725
+ "type": "integer",
2726
+ "description": "The port to connect to, often the same as internal_port"
2727
+ },
2728
+ "protocol": {
2729
+ "type": "string",
2730
+ "description": "For http checks, whether to use http or https"
2731
+ },
2732
+ "timeout": {
2733
+ "type": "string",
2734
+ "description": "The maximum time a connection can take before being reported as failing its health check",
2735
+ "example": "2s"
2736
+ },
2737
+ "tls_server_name": {
2738
+ "type": "string",
2739
+ "description": "If the protocol is https, the hostname to use for TLS certificate validation"
2740
+ },
2741
+ "tls_skip_verify": {
2742
+ "type": "boolean",
2743
+ "description": "For http checks with https protocol, whether or not to verify the TLS certificate"
2744
+ },
2745
+ "type": {
2746
+ "type": "string",
2747
+ "description": "tcp or http"
2748
+ }
2749
+ },
2750
+ "x-ruby-class": "FlyMachineCheck"
2751
+ },
2752
+ "fly.MachineConfig": {
2753
+ "type": "object",
2754
+ "properties": {
2755
+ "auto_destroy": {
2756
+ "type": "boolean",
2757
+ "description": "Optional boolean telling the Machine to destroy itself once it’s complete (default false)"
2758
+ },
2759
+ "cache_drive": {
2760
+ "$ref": "#/components/schemas/fly.MachineCacheDrive"
2761
+ },
2762
+ "checks": {
2763
+ "type": "object",
2764
+ "additionalProperties": {
2765
+ "$ref": "#/components/schemas/fly.MachineCheck"
2766
+ },
2767
+ "description": "An optional object that defines one or more named top-level checks. The key for each check is the check name."
2768
+ },
2769
+ "containers": {
2770
+ "type": "array",
2771
+ "description": "Containers are a list of containers that will run in the machine. Currently restricted to\nonly specific organizations.",
2772
+ "items": {
2773
+ "$ref": "#/components/schemas/fly.ContainerConfig"
2774
+ }
2775
+ },
2776
+ "disable_machine_autostart": {
2777
+ "type": "boolean",
2778
+ "description": "Deprecated: use Service.Autostart instead"
2779
+ },
2780
+ "dns": {
2781
+ "$ref": "#/components/schemas/fly.DNSConfig"
2782
+ },
2783
+ "env": {
2784
+ "type": "object",
2785
+ "additionalProperties": {
2786
+ "type": "string"
2787
+ },
2788
+ "description": "An object filled with key/value pairs to be set as environment variables"
2789
+ },
2790
+ "files": {
2791
+ "type": "array",
2792
+ "items": {
2793
+ "$ref": "#/components/schemas/fly.File"
2794
+ }
2795
+ },
2796
+ "guest": {
2797
+ "$ref": "#/components/schemas/fly.MachineGuest"
2798
+ },
2799
+ "image": {
2800
+ "type": "string",
2801
+ "description": "The docker image to run"
2802
+ },
2803
+ "init": {
2804
+ "$ref": "#/components/schemas/fly.MachineInit"
2805
+ },
2806
+ "metadata": {
2807
+ "type": "object",
2808
+ "additionalProperties": {
2809
+ "type": "string"
2810
+ }
2811
+ },
2812
+ "metrics": {
2813
+ "$ref": "#/components/schemas/fly.MachineMetrics"
2814
+ },
2815
+ "mounts": {
2816
+ "type": "array",
2817
+ "items": {
2818
+ "$ref": "#/components/schemas/fly.MachineMount"
2819
+ }
2820
+ },
2821
+ "processes": {
2822
+ "type": "array",
2823
+ "items": {
2824
+ "$ref": "#/components/schemas/fly.MachineProcess"
2825
+ }
2826
+ },
2827
+ "restart": {
2828
+ "$ref": "#/components/schemas/fly.MachineRestart"
2829
+ },
2830
+ "rootfs": {
2831
+ "$ref": "#/components/schemas/fly.MachineRootfs"
2832
+ },
2833
+ "schedule": {
2834
+ "type": "string"
2835
+ },
2836
+ "services": {
2837
+ "type": "array",
2838
+ "items": {
2839
+ "$ref": "#/components/schemas/fly.MachineService"
2840
+ }
2841
+ },
2842
+ "size": {
2843
+ "type": "string",
2844
+ "description": "Deprecated: use Guest instead"
2845
+ },
2846
+ "spot": {
2847
+ "$ref": "#/components/schemas/fly.MachineSpot"
2848
+ },
2849
+ "standbys": {
2850
+ "type": "array",
2851
+ "description": "Standbys enable a machine to be a standby for another. In the event of a hardware failure,\nthe standby machine will be started.",
2852
+ "items": {
2853
+ "type": "string"
2854
+ }
2855
+ },
2856
+ "statics": {
2857
+ "type": "array",
2858
+ "items": {
2859
+ "$ref": "#/components/schemas/fly.Static"
2860
+ }
2861
+ },
2862
+ "stop_config": {
2863
+ "$ref": "#/components/schemas/fly.StopConfig"
2864
+ }
2865
+ },
2866
+ "x-ruby-class": "FlyMachineConfig"
2867
+ },
2868
+ "fly.MachineGuest": {
2869
+ "type": "object",
2870
+ "properties": {
2871
+ "cpu_kind": {
2872
+ "type": "string"
2873
+ },
2874
+ "cpus": {
2875
+ "type": "integer"
2876
+ },
2877
+ "gpu_kind": {
2878
+ "type": "string"
2879
+ },
2880
+ "gpus": {
2881
+ "type": "integer"
2882
+ },
2883
+ "host_dedication_id": {
2884
+ "type": "string"
2885
+ },
2886
+ "kernel_args": {
2887
+ "type": "array",
2888
+ "items": {
2889
+ "type": "string"
2890
+ }
2891
+ },
2892
+ "max_memory_mb": {
2893
+ "type": "integer"
2894
+ },
2895
+ "memory_mb": {
2896
+ "type": "integer"
2897
+ },
2898
+ "persist_rootfs": {
2899
+ "type": "string",
2900
+ "description": "Deprecated: use MachineConfig.Rootfs instead",
2901
+ "enum": [
2902
+ "never",
2903
+ "always",
2904
+ "restart"
2905
+ ]
2906
+ }
2907
+ },
2908
+ "x-ruby-class": "FlyMachineGuest"
2909
+ },
2910
+ "fly.MachineHTTPHeader": {
2911
+ "type": "object",
2912
+ "properties": {
2913
+ "name": {
2914
+ "type": "string",
2915
+ "description": "The header name"
2916
+ },
2917
+ "values": {
2918
+ "type": "array",
2919
+ "description": "The header value",
2920
+ "items": {
2921
+ "type": "string"
2922
+ }
2923
+ }
2924
+ },
2925
+ "description": "For http checks, an array of objects with string field Name and array of strings field Values. The key/value pairs specify header and header values that will get passed with the check call.",
2926
+ "x-ruby-class": "FlyMachineHTTPHeader"
2927
+ },
2928
+ "fly.MachineInit": {
2929
+ "type": "object",
2930
+ "properties": {
2931
+ "cmd": {
2932
+ "type": "array",
2933
+ "items": {
2934
+ "type": "string"
2935
+ }
2936
+ },
2937
+ "entrypoint": {
2938
+ "type": "array",
2939
+ "items": {
2940
+ "type": "string"
2941
+ }
2942
+ },
2943
+ "exec": {
2944
+ "type": "array",
2945
+ "items": {
2946
+ "type": "string"
2947
+ }
2948
+ },
2949
+ "kernel_args": {
2950
+ "type": "array",
2951
+ "items": {
2952
+ "type": "string"
2953
+ }
2954
+ },
2955
+ "swap_size_mb": {
2956
+ "type": "integer"
2957
+ },
2958
+ "tty": {
2959
+ "type": "boolean"
2960
+ }
2961
+ },
2962
+ "x-ruby-class": "FlyMachineInit"
2963
+ },
2964
+ "fly.MachineMetrics": {
2965
+ "type": "object",
2966
+ "properties": {
2967
+ "https": {
2968
+ "type": "boolean"
2969
+ },
2970
+ "path": {
2971
+ "type": "string"
2972
+ },
2973
+ "port": {
2974
+ "type": "integer"
2975
+ }
2976
+ },
2977
+ "x-ruby-class": "FlyMachineMetrics"
2978
+ },
2979
+ "fly.MachineMount": {
2980
+ "type": "object",
2981
+ "properties": {
2982
+ "add_size_gb": {
2983
+ "type": "integer"
2984
+ },
2985
+ "encrypted": {
2986
+ "type": "boolean"
2987
+ },
2988
+ "extend_threshold_percent": {
2989
+ "type": "integer"
2990
+ },
2991
+ "name": {
2992
+ "type": "string"
2993
+ },
2994
+ "path": {
2995
+ "type": "string"
2996
+ },
2997
+ "size_gb": {
2998
+ "type": "integer"
2999
+ },
3000
+ "size_gb_limit": {
3001
+ "type": "integer"
3002
+ },
3003
+ "volume": {
3004
+ "type": "string"
3005
+ }
3006
+ },
3007
+ "x-ruby-class": "FlyMachineMount"
3008
+ },
3009
+ "fly.MachinePort": {
3010
+ "type": "object",
3011
+ "properties": {
3012
+ "end_port": {
3013
+ "type": "integer"
3014
+ },
3015
+ "force_https": {
3016
+ "type": "boolean"
3017
+ },
3018
+ "handlers": {
3019
+ "type": "array",
3020
+ "items": {
3021
+ "type": "string"
3022
+ }
3023
+ },
3024
+ "http_options": {
3025
+ "$ref": "#/components/schemas/fly.HTTPOptions"
3026
+ },
3027
+ "port": {
3028
+ "type": "integer"
3029
+ },
3030
+ "proxy_proto_options": {
3031
+ "$ref": "#/components/schemas/fly.ProxyProtoOptions"
3032
+ },
3033
+ "start_port": {
3034
+ "type": "integer"
3035
+ },
3036
+ "tls_options": {
3037
+ "$ref": "#/components/schemas/fly.TLSOptions"
3038
+ }
3039
+ },
3040
+ "x-ruby-class": "FlyMachinePort"
3041
+ },
3042
+ "fly.MachineProcess": {
3043
+ "type": "object",
3044
+ "properties": {
3045
+ "cmd": {
3046
+ "type": "array",
3047
+ "items": {
3048
+ "type": "string"
3049
+ }
3050
+ },
3051
+ "entrypoint": {
3052
+ "type": "array",
3053
+ "items": {
3054
+ "type": "string"
3055
+ }
3056
+ },
3057
+ "env": {
3058
+ "type": "object",
3059
+ "additionalProperties": {
3060
+ "type": "string"
3061
+ }
3062
+ },
3063
+ "env_from": {
3064
+ "type": "array",
3065
+ "description": "EnvFrom can be provided to set environment variables from machine fields.",
3066
+ "items": {
3067
+ "$ref": "#/components/schemas/fly.EnvFrom"
3068
+ }
3069
+ },
3070
+ "exec": {
3071
+ "type": "array",
3072
+ "items": {
3073
+ "type": "string"
3074
+ }
3075
+ },
3076
+ "ignore_app_secrets": {
3077
+ "type": "boolean",
3078
+ "description": "IgnoreAppSecrets can be set to true to ignore the secrets for the App the Machine belongs to\nand only use the secrets provided at the process level. The default/legacy behavior is to use\nthe secrets provided at the App level."
3079
+ },
3080
+ "secrets": {
3081
+ "type": "array",
3082
+ "description": "Secrets can be provided at the process level to explicitly indicate which secrets should be\nused for the process. If not provided, the secrets provided at the machine level will be used.",
3083
+ "items": {
3084
+ "$ref": "#/components/schemas/fly.MachineSecret"
3085
+ }
3086
+ },
3087
+ "user": {
3088
+ "type": "string"
3089
+ }
3090
+ },
3091
+ "x-ruby-class": "FlyMachineProcess"
3092
+ },
3093
+ "fly.MachineRestart": {
3094
+ "type": "object",
3095
+ "properties": {
3096
+ "gpu_bid_price": {
3097
+ "type": "number",
3098
+ "description": "GPU bid price for spot Machines."
3099
+ },
3100
+ "max_retries": {
3101
+ "type": "integer",
3102
+ "description": "When policy is on-failure, the maximum number of times to attempt to restart the Machine before letting it stop."
3103
+ },
3104
+ "policy": {
3105
+ "type": "string",
3106
+ "description": "* no - Never try to restart a Machine automatically when its main process exits, whether that’s on purpose or on a crash.\n* always - Always restart a Machine automatically and never let it enter a stopped state, even when the main process exits cleanly.\n* on-failure - Try up to MaxRetries times to automatically restart the Machine if it exits with a non-zero exit code. Default when no explicit policy is set, and for Machines with schedules.\n* spot-price - Starts the Machine only when there is capacity and the spot price is less than or equal to the bid price.",
3107
+ "enum": [
3108
+ "no",
3109
+ "always",
3110
+ "on-failure",
3111
+ "spot-price"
3112
+ ]
3113
+ }
3114
+ },
3115
+ "description": "The Machine restart policy defines whether and how flyd restarts a Machine after its main process exits. See https://fly.io/docs/machines/guides-examples/machine-restart-policy/.",
3116
+ "x-ruby-class": "FlyMachineRestart"
3117
+ },
3118
+ "fly.MachineRootfs": {
3119
+ "type": "object",
3120
+ "properties": {
3121
+ "persist": {
3122
+ "type": "string",
3123
+ "enum": [
3124
+ "never",
3125
+ "always",
3126
+ "restart"
3127
+ ]
3128
+ },
3129
+ "size_gb": {
3130
+ "type": "integer"
3131
+ }
3132
+ },
3133
+ "x-ruby-class": "FlyMachineRootfs"
3134
+ },
3135
+ "fly.MachineSecret": {
3136
+ "type": "object",
3137
+ "properties": {
3138
+ "env_var": {
3139
+ "type": "string",
3140
+ "description": "EnvVar is required and is the name of the environment variable that will be set from the\nsecret. It must be a valid environment variable name."
3141
+ },
3142
+ "name": {
3143
+ "type": "string",
3144
+ "description": "Name is optional and when provided is used to reference a secret name where the EnvVar is\ndifferent from what was set as the secret name."
3145
+ }
3146
+ },
3147
+ "description": "A Secret needing to be set in the environment of the Machine. env_var is required",
3148
+ "x-ruby-class": "FlyMachineSecret"
3149
+ },
3150
+ "fly.MachineService": {
3151
+ "type": "object",
3152
+ "properties": {
3153
+ "autostart": {
3154
+ "type": "boolean"
3155
+ },
3156
+ "autostop": {
3157
+ "type": "string",
3158
+ "description": "Accepts a string (new format) or a boolean (old format). For backward compatibility with older clients, the API continues to use booleans for \"off\" and \"stop\" in responses.\n* \"off\" or false - Do not autostop the Machine.\n* \"stop\" or true - Automatically stop the Machine.\n* \"suspend\" - Automatically suspend the Machine, falling back to a full stop if this is not possible.",
3159
+ "enum": [
3160
+ "off",
3161
+ "stop",
3162
+ "suspend"
3163
+ ]
3164
+ },
3165
+ "checks": {
3166
+ "type": "array",
3167
+ "description": "An optional list of service checks",
3168
+ "items": {
3169
+ "$ref": "#/components/schemas/fly.MachineServiceCheck"
3170
+ }
3171
+ },
3172
+ "concurrency": {
3173
+ "$ref": "#/components/schemas/fly.MachineServiceConcurrency"
3174
+ },
3175
+ "force_instance_description": {
3176
+ "type": "string"
3177
+ },
3178
+ "force_instance_key": {
3179
+ "type": "string"
3180
+ },
3181
+ "internal_port": {
3182
+ "type": "integer"
3183
+ },
3184
+ "min_machines_running": {
3185
+ "type": "integer"
3186
+ },
3187
+ "ports": {
3188
+ "type": "array",
3189
+ "items": {
3190
+ "$ref": "#/components/schemas/fly.MachinePort"
3191
+ }
3192
+ },
3193
+ "protocol": {
3194
+ "type": "string"
3195
+ }
3196
+ },
3197
+ "x-ruby-class": "FlyMachineService"
3198
+ },
3199
+ "fly.MachineServiceCheck": {
3200
+ "type": "object",
3201
+ "properties": {
3202
+ "grace_period": {
3203
+ "type": "string",
3204
+ "description": "The time to wait after a VM starts before checking its health",
3205
+ "example": "1s"
3206
+ },
3207
+ "headers": {
3208
+ "type": "array",
3209
+ "items": {
3210
+ "$ref": "#/components/schemas/fly.MachineHTTPHeader"
3211
+ }
3212
+ },
3213
+ "interval": {
3214
+ "type": "string",
3215
+ "description": "The time between connectivity checks",
3216
+ "example": "15s"
3217
+ },
3218
+ "method": {
3219
+ "type": "string",
3220
+ "description": "For http checks, the HTTP method to use to when making the request"
3221
+ },
3222
+ "path": {
3223
+ "type": "string",
3224
+ "description": "For http checks, the path to send the request to"
3225
+ },
3226
+ "port": {
3227
+ "type": "integer",
3228
+ "description": "The port to connect to, often the same as internal_port"
3229
+ },
3230
+ "protocol": {
3231
+ "type": "string",
3232
+ "description": "For http checks, whether to use http or https"
3233
+ },
3234
+ "timeout": {
3235
+ "type": "string",
3236
+ "description": "The maximum time a connection can take before being reported as failing its health check",
3237
+ "example": "2s"
3238
+ },
3239
+ "tls_server_name": {
3240
+ "type": "string",
3241
+ "description": "If the protocol is https, the hostname to use for TLS certificate validation"
3242
+ },
3243
+ "tls_skip_verify": {
3244
+ "type": "boolean",
3245
+ "description": "For http checks with https protocol, whether or not to verify the TLS certificate"
3246
+ },
3247
+ "type": {
3248
+ "type": "string",
3249
+ "description": "tcp or http"
3250
+ }
3251
+ },
3252
+ "x-ruby-class": "FlyMachineServiceCheck"
3253
+ },
3254
+ "fly.MachineServiceConcurrency": {
3255
+ "type": "object",
3256
+ "properties": {
3257
+ "hard_limit": {
3258
+ "type": "integer"
3259
+ },
3260
+ "soft_limit": {
3261
+ "type": "integer"
3262
+ },
3263
+ "type": {
3264
+ "type": "string"
3265
+ }
3266
+ },
3267
+ "x-ruby-class": "FlyMachineServiceConcurrency"
3268
+ },
3269
+ "fly.MachineSpot": {
3270
+ "type": "object",
3271
+ "properties": {
3272
+ "max_price_fraction": {
3273
+ "type": "number",
3274
+ "description": "MaxPriceFraction is the maximum fraction of the full Machine price you will pay for this Machine. Range: (0, 1.0]"
3275
+ }
3276
+ },
3277
+ "x-ruby-class": "FlyMachineSpot"
3278
+ },
3279
+ "fly.ProxyProtoOptions": {
3280
+ "type": "object",
3281
+ "properties": {
3282
+ "version": {
3283
+ "type": "string"
3284
+ }
3285
+ },
3286
+ "x-ruby-class": "FlyProxyProtoOptions"
3287
+ },
3288
+ "fly.ReplayCache": {
3289
+ "type": "object",
3290
+ "properties": {
3291
+ "allow_bypass": {
3292
+ "type": "boolean"
3293
+ },
3294
+ "name": {
3295
+ "type": "string",
3296
+ "description": "Name of the cookie or header to key the cache on"
3297
+ },
3298
+ "path_prefix": {
3299
+ "type": "string"
3300
+ },
3301
+ "ttl_seconds": {
3302
+ "type": "integer"
3303
+ },
3304
+ "type": {
3305
+ "type": "string",
3306
+ "description": "Currently either \"cookie\" or \"header\"",
3307
+ "enum": [
3308
+ "cookie",
3309
+ "header"
3310
+ ]
3311
+ }
3312
+ },
3313
+ "x-ruby-class": "FlyReplayCache"
3314
+ },
3315
+ "fly.Static": {
3316
+ "required": [
3317
+ "guest_path",
3318
+ "url_prefix"
3319
+ ],
3320
+ "type": "object",
3321
+ "properties": {
3322
+ "guest_path": {
3323
+ "type": "string"
3324
+ },
3325
+ "index_document": {
3326
+ "type": "string"
3327
+ },
3328
+ "tigris_bucket": {
3329
+ "type": "string"
3330
+ },
3331
+ "url_prefix": {
3332
+ "type": "string"
3333
+ }
3334
+ },
3335
+ "x-ruby-class": "FlyStatic"
3336
+ },
3337
+ "fly.StopConfig": {
3338
+ "type": "object",
3339
+ "properties": {
3340
+ "signal": {
3341
+ "type": "string",
3342
+ "enum": [
3343
+ "SIGHUP",
3344
+ "SIGINT",
3345
+ "SIGQUIT",
3346
+ "SIGKILL",
3347
+ "SIGUSR1",
3348
+ "SIGUSR2",
3349
+ "SIGTERM"
3350
+ ]
3351
+ },
3352
+ "timeout": {
3353
+ "type": "string",
3354
+ "example": "10s"
3355
+ }
3356
+ },
3357
+ "x-ruby-class": "FlyStopConfig"
3358
+ },
3359
+ "fly.TCPHealthcheck": {
3360
+ "type": "object",
3361
+ "properties": {
3362
+ "port": {
3363
+ "type": "integer",
3364
+ "description": "The port to connect to, often the same as internal_port"
3365
+ }
3366
+ },
3367
+ "x-ruby-class": "FlyTCPHealthcheck"
3368
+ },
3369
+ "fly.TLSOptions": {
3370
+ "type": "object",
3371
+ "properties": {
3372
+ "alpn": {
3373
+ "type": "array",
3374
+ "items": {
3375
+ "type": "string"
3376
+ }
3377
+ },
3378
+ "default_self_signed": {
3379
+ "type": "boolean"
3380
+ },
3381
+ "versions": {
3382
+ "type": "array",
3383
+ "items": {
3384
+ "type": "string"
3385
+ }
3386
+ }
3387
+ },
3388
+ "x-ruby-class": "FlyTLSOptions"
3389
+ },
3390
+ "fly.UnhealthyPolicy": {
3391
+ "type": "string",
3392
+ "enum": [
3393
+ "stop"
3394
+ ],
3395
+ "x-enum-varnames": [
3396
+ "UnhealthyPolicyStop"
3397
+ ],
3398
+ "x-ruby-class": "FlyUnhealthyPolicy"
3399
+ },
3400
+ "fly.dnsForwardRule": {
3401
+ "type": "object",
3402
+ "properties": {
3403
+ "addr": {
3404
+ "type": "string"
3405
+ },
3406
+ "basename": {
3407
+ "type": "string"
3408
+ }
3409
+ },
3410
+ "x-ruby-class": "FlyDnsForwardRule"
3411
+ },
3412
+ "fly.dnsOption": {
3413
+ "type": "object",
3414
+ "properties": {
3415
+ "name": {
3416
+ "type": "string"
3417
+ },
3418
+ "value": {
3419
+ "type": "string"
3420
+ }
3421
+ },
3422
+ "x-ruby-class": "FlyDnsOption"
3423
+ },
3424
+ "flydv1.ExecResponse": {
3425
+ "type": "object",
3426
+ "properties": {
3427
+ "exit_code": {
3428
+ "type": "integer"
3429
+ },
3430
+ "exit_signal": {
3431
+ "type": "integer"
3432
+ },
3433
+ "stderr": {
3434
+ "type": "string"
3435
+ },
3436
+ "stdout": {
3437
+ "type": "string"
3438
+ }
3439
+ },
3440
+ "x-ruby-class": "Flydv1ExecResponse"
3441
+ },
3442
+ "flyio.Access": {
3443
+ "type": "object",
3444
+ "properties": {
3445
+ "action": {
3446
+ "$ref": "#/components/schemas/resset.Action"
3447
+ },
3448
+ "app_feature": {
3449
+ "type": "string"
3450
+ },
3451
+ "appid": {
3452
+ "type": "integer"
3453
+ },
3454
+ "cluster": {
3455
+ "type": "string"
3456
+ },
3457
+ "command": {
3458
+ "type": "array",
3459
+ "items": {
3460
+ "type": "string"
3461
+ }
3462
+ },
3463
+ "feature": {
3464
+ "type": "string"
3465
+ },
3466
+ "machine": {
3467
+ "type": "string"
3468
+ },
3469
+ "machine_feature": {
3470
+ "type": "string"
3471
+ },
3472
+ "mutation": {
3473
+ "type": "string"
3474
+ },
3475
+ "orgid": {
3476
+ "type": "integer"
3477
+ },
3478
+ "sourceApp": {
3479
+ "type": "string"
3480
+ },
3481
+ "sourceMachine": {
3482
+ "type": "string"
3483
+ },
3484
+ "sourceOrganization": {
3485
+ "type": "string"
3486
+ },
3487
+ "storage_object": {
3488
+ "type": "string"
3489
+ },
3490
+ "volume": {
3491
+ "type": "string"
3492
+ }
3493
+ },
3494
+ "x-ruby-class": "FlyioAccess"
3495
+ },
3496
+ "forkPostgresClusterRequest": {
3497
+ "type": "object",
3498
+ "properties": {
3499
+ "name": {
3500
+ "type": "string",
3501
+ "description": "Name for the forked cluster. Defaults to the source name with a -fork suffix."
3502
+ }
3503
+ },
3504
+ "x-ruby-class": "ForkPostgresClusterRequest"
3505
+ },
3506
+ "getPostgresUserCredentialsResponse": {
3507
+ "type": "object",
3508
+ "properties": {
3509
+ "data": {
3510
+ "$ref": "#/components/schemas/PostgresUserCredentials"
3511
+ }
3512
+ },
3513
+ "x-ruby-class": "GetPostgresUserCredentialsResponse"
3514
+ },
3515
+ "listCertificatesResponse": {
3516
+ "type": "object",
3517
+ "properties": {
3518
+ "certificates": {
3519
+ "type": "array",
3520
+ "items": {
3521
+ "$ref": "#/components/schemas/CertificateSummary"
3522
+ }
3523
+ },
3524
+ "next_cursor": {
3525
+ "type": "string"
3526
+ },
3527
+ "total_count": {
3528
+ "type": "integer"
3529
+ }
3530
+ },
3531
+ "x-ruby-class": "ListCertificatesResponse"
3532
+ },
3533
+ "listIPAssignmentsResponse": {
3534
+ "type": "object",
3535
+ "properties": {
3536
+ "ips": {
3537
+ "type": "array",
3538
+ "items": {
3539
+ "$ref": "#/components/schemas/IPAssignment"
3540
+ }
3541
+ }
3542
+ },
3543
+ "x-ruby-class": "ListIPAssignmentsResponse"
3544
+ },
3545
+ "listPostgresBackupsResponse": {
3546
+ "type": "object",
3547
+ "properties": {
3548
+ "data": {
3549
+ "type": "array",
3550
+ "items": {
3551
+ "$ref": "#/components/schemas/PostgresBackup"
3552
+ }
3553
+ }
3554
+ },
3555
+ "x-ruby-class": "ListPostgresBackupsResponse"
3556
+ },
3557
+ "listPostgresClustersResponse": {
3558
+ "type": "object",
3559
+ "properties": {
3560
+ "data": {
3561
+ "type": "array",
3562
+ "items": {
3563
+ "$ref": "#/components/schemas/PostgresClusterSummary"
3564
+ }
3565
+ }
3566
+ },
3567
+ "x-ruby-class": "ListPostgresClustersResponse"
3568
+ },
3569
+ "listPostgresDatabasesResponse": {
3570
+ "type": "object",
3571
+ "properties": {
3572
+ "data": {
3573
+ "type": "array",
3574
+ "items": {
3575
+ "$ref": "#/components/schemas/PostgresDatabase"
3576
+ }
3577
+ }
3578
+ },
3579
+ "x-ruby-class": "ListPostgresDatabasesResponse"
3580
+ },
3581
+ "listPostgresExtensionsResponse": {
3582
+ "type": "object",
3583
+ "properties": {
3584
+ "data": {
3585
+ "type": "array",
3586
+ "items": {
3587
+ "$ref": "#/components/schemas/PostgresExtension"
3588
+ }
3589
+ }
3590
+ },
3591
+ "x-ruby-class": "ListPostgresExtensionsResponse"
3592
+ },
3593
+ "listPostgresUsersResponse": {
3594
+ "type": "object",
3595
+ "properties": {
3596
+ "data": {
3597
+ "type": "array",
3598
+ "items": {
3599
+ "$ref": "#/components/schemas/PostgresUser"
3600
+ }
3601
+ }
3602
+ },
3603
+ "x-ruby-class": "ListPostgresUsersResponse"
3604
+ },
3605
+ "macaroon.CaveatSet": {
3606
+ "type": "object",
3607
+ "properties": {
3608
+ "caveats": {
3609
+ "type": "array",
3610
+ "items": {
3611
+ "type": "object"
3612
+ }
3613
+ }
3614
+ },
3615
+ "x-ruby-class": "MacaroonCaveatSet"
3616
+ },
3617
+ "macaroon.Nonce": {
3618
+ "type": "object",
3619
+ "properties": {
3620
+ "kid": {
3621
+ "type": "array",
3622
+ "items": {
3623
+ "type": "integer"
3624
+ }
3625
+ },
3626
+ "proof": {
3627
+ "type": "boolean"
3628
+ },
3629
+ "rnd": {
3630
+ "type": "array",
3631
+ "items": {
3632
+ "type": "integer"
3633
+ }
3634
+ }
3635
+ },
3636
+ "x-ruby-class": "MacaroonNonce"
3637
+ },
3638
+ "main.TokenAccess": {
3639
+ "type": "object",
3640
+ "properties": {
3641
+ "action": {
3642
+ "type": "object",
3643
+ "description": "Action is the action being taken on the specified resource. This is the\ncombination of individual action characters (e.g \"rw\")\n - r: read\n - w: write\n - c: create\n - d: delete\n - C: control",
3644
+ "allOf": [
3645
+ {
3646
+ "$ref": "#/components/schemas/resset.Action"
3647
+ }
3648
+ ]
3649
+ },
3650
+ "app_feature": {
3651
+ "type": "string",
3652
+ "description": "AppFeature is a named set of functionality associated with the app. If\nthis is specified, the AppName field must be set.\n - images: images in the fly.io registry"
3653
+ },
3654
+ "app_name": {
3655
+ "type": "string",
3656
+ "description": "AppName is the name of the app being accessed."
3657
+ },
3658
+ "command": {
3659
+ "type": "array",
3660
+ "description": "Command is the command being executed on a machine. If this is specified,\nthe Machine must be set.",
3661
+ "items": {
3662
+ "type": "string"
3663
+ }
3664
+ },
3665
+ "machine_feature": {
3666
+ "type": "string",
3667
+ "description": "MachineFeature is a named set of functionality associated with the\nmachine. If this is specified, the Machine field must be set.\n - metadata: machine metadata service\n - oidc: OIDC tokens\n - kmstoken: Petsem tokens for KMS access"
3668
+ },
3669
+ "machine_id": {
3670
+ "type": "string",
3671
+ "description": "MachineID is the ID of the machine being accessed (e.g. 7811701f564258)."
3672
+ },
3673
+ "mutation": {
3674
+ "type": "string",
3675
+ "description": "Mutation is the GraphQL mutation being performed."
3676
+ },
3677
+ "org_feature": {
3678
+ "type": "string",
3679
+ "description": "OrgFeature is a named set of functionality associated with the\norganization. If this is specified, the OrgSlug field must be set.\n - wg: WireGuard peers\n - builder: remote builders\n - addon: addons\n - membership: organization membership\n - billing: billing\n - litefs-cloud: LiteFS Cloud\n - authentication: authentication settings"
3680
+ },
3681
+ "org_slug": {
3682
+ "type": "string",
3683
+ "description": "OrgSlug is the slug of the organization being accessed."
3684
+ },
3685
+ "source_machine": {
3686
+ "type": "string",
3687
+ "description": "SourceMachine is the machine ID of the actor attempting access."
3688
+ },
3689
+ "storage_object": {
3690
+ "type": "string",
3691
+ "description": "StorageObject is the storage object being accessed. If this is specified,\nthe OrgSlug must be set."
3692
+ },
3693
+ "volume_id": {
3694
+ "type": "string",
3695
+ "description": "VolumeID is the encoded ID of the volume being accessed (e.g.\nvol_r1p6pln1k9m9j7zr)."
3696
+ }
3697
+ },
3698
+ "x-ruby-class": "MainTokenAccess"
3699
+ },
3700
+ "main.getPlacementsRequest": {
3701
+ "required": [
3702
+ "org_slug"
3703
+ ],
3704
+ "type": "object",
3705
+ "properties": {
3706
+ "compute": {
3707
+ "type": "object",
3708
+ "description": "Resource requirements for the Machine to simulate. Defaults to a performance-1x machine",
3709
+ "allOf": [
3710
+ {
3711
+ "$ref": "#/components/schemas/fly.MachineGuest"
3712
+ }
3713
+ ]
3714
+ },
3715
+ "count": {
3716
+ "type": "integer",
3717
+ "description": "Number of machines to simulate placement.\nDefaults to 0, which returns the org-specific limit for each region."
3718
+ },
3719
+ "org_slug": {
3720
+ "type": "string",
3721
+ "example": "personal"
3722
+ },
3723
+ "region": {
3724
+ "type": "string",
3725
+ "description": "Region expression for placement as a comma-delimited set of regions or aliases.\nDefaults to \"[region],any\", to prefer the API endpoint's local region with any other region as fallback.",
3726
+ "example": "lhr,eu"
3727
+ },
3728
+ "volume_name": {
3729
+ "type": "string",
3730
+ "example": ""
3731
+ },
3732
+ "volume_size_bytes": {
3733
+ "type": "integer"
3734
+ },
3735
+ "weights": {
3736
+ "type": "object",
3737
+ "description": "Optional weights to override default placement preferences.",
3738
+ "example": {
3739
+ "region": 1000,
3740
+ "spread": 0
3741
+ },
3742
+ "allOf": [
3743
+ {
3744
+ "$ref": "#/components/schemas/placement.Weights"
3745
+ }
3746
+ ]
3747
+ }
3748
+ },
3749
+ "x-ruby-class": "MainGetPlacementsRequest"
3750
+ },
3751
+ "main.getPlacementsResponse": {
3752
+ "type": "object",
3753
+ "properties": {
3754
+ "regions": {
3755
+ "type": "array",
3756
+ "items": {
3757
+ "$ref": "#/components/schemas/placement.RegionPlacement"
3758
+ }
3759
+ }
3760
+ },
3761
+ "x-ruby-class": "MainGetPlacementsResponse"
3762
+ },
3763
+ "main.memoryResponse": {
3764
+ "type": "object",
3765
+ "properties": {
3766
+ "available_mb": {
3767
+ "type": "integer"
3768
+ },
3769
+ "limit_mb": {
3770
+ "type": "integer"
3771
+ }
3772
+ },
3773
+ "x-ruby-class": "MainMemoryResponse"
3774
+ },
3775
+ "main.reclaimMemoryRequest": {
3776
+ "type": "object",
3777
+ "properties": {
3778
+ "amount_mb": {
3779
+ "type": "integer"
3780
+ }
3781
+ },
3782
+ "x-ruby-class": "MainReclaimMemoryRequest"
3783
+ },
3784
+ "main.reclaimMemoryResponse": {
3785
+ "type": "object",
3786
+ "properties": {
3787
+ "actual_mb": {
3788
+ "type": "integer"
3789
+ }
3790
+ },
3791
+ "x-ruby-class": "MainReclaimMemoryResponse"
3792
+ },
3793
+ "main.regionResponse": {
3794
+ "type": "object",
3795
+ "properties": {
3796
+ "nearest": {
3797
+ "type": "string"
3798
+ },
3799
+ "regions": {
3800
+ "type": "array",
3801
+ "items": {
3802
+ "$ref": "#/components/schemas/main.regionRow"
3803
+ }
3804
+ }
3805
+ },
3806
+ "x-ruby-class": "MainRegionResponse"
3807
+ },
3808
+ "main.regionRow": {
3809
+ "type": "object",
3810
+ "properties": {
3811
+ "code": {
3812
+ "type": "string"
3813
+ },
3814
+ "deprecated": {
3815
+ "type": "boolean"
3816
+ },
3817
+ "gateway_available": {
3818
+ "type": "boolean"
3819
+ },
3820
+ "geo_region": {
3821
+ "type": "string"
3822
+ },
3823
+ "latitude": {
3824
+ "type": "number"
3825
+ },
3826
+ "longitude": {
3827
+ "type": "number"
3828
+ },
3829
+ "mpg_available": {
3830
+ "type": "boolean"
3831
+ },
3832
+ "name": {
3833
+ "type": "string"
3834
+ },
3835
+ "requires_paid_plan": {
3836
+ "type": "boolean"
3837
+ }
3838
+ },
3839
+ "x-ruby-class": "MainRegionRow"
3840
+ },
3841
+ "main.setMemoryLimitRequest": {
3842
+ "type": "object",
3843
+ "properties": {
3844
+ "limit_mb": {
3845
+ "type": "integer"
3846
+ }
3847
+ },
3848
+ "x-ruby-class": "MainSetMemoryLimitRequest"
3849
+ },
3850
+ "main.statusCode": {
3851
+ "type": "string",
3852
+ "enum": [
3853
+ "unknown",
3854
+ "insufficient_capacity",
3855
+ "name_taken"
3856
+ ],
3857
+ "x-enum-varnames": [
3858
+ "unknown",
3859
+ "capacityErr",
3860
+ "nameTakenErr"
3861
+ ],
3862
+ "x-ruby-class": "MainStatusCode"
3863
+ },
3864
+ "main.tokenInfo": {
3865
+ "type": "object",
3866
+ "properties": {
3867
+ "apps": {
3868
+ "type": "array",
3869
+ "items": {
3870
+ "type": "string"
3871
+ }
3872
+ },
3873
+ "org_slug": {
3874
+ "type": "string"
3875
+ },
3876
+ "organization": {
3877
+ "type": "string"
3878
+ },
3879
+ "restricted_to_machine": {
3880
+ "type": "string",
3881
+ "description": "Machine the token is restricted to (FromMachine caveat)"
3882
+ },
3883
+ "source_machine_id": {
3884
+ "type": "string",
3885
+ "description": "Machine making the request"
3886
+ },
3887
+ "token_id": {
3888
+ "type": "string"
3889
+ },
3890
+ "user": {
3891
+ "type": "string",
3892
+ "description": "User identifier if token is for a user"
3893
+ }
3894
+ },
3895
+ "x-ruby-class": "MainTokenInfo"
3896
+ },
3897
+ "metadataValueResponse": {
3898
+ "type": "object",
3899
+ "properties": {
3900
+ "value": {
3901
+ "type": "string"
3902
+ }
3903
+ },
3904
+ "x-ruby-class": "MetadataValueResponse"
3905
+ },
3906
+ "placement.RegionPlacement": {
3907
+ "type": "object",
3908
+ "properties": {
3909
+ "concurrency": {
3910
+ "type": "integer"
3911
+ },
3912
+ "count": {
3913
+ "type": "integer"
3914
+ },
3915
+ "region": {
3916
+ "type": "string"
3917
+ }
3918
+ },
3919
+ "x-ruby-class": "PlacementRegionPlacement"
3920
+ },
3921
+ "placement.Weights": {
3922
+ "type": "object",
3923
+ "additionalProperties": {
3924
+ "type": "integer"
3925
+ },
3926
+ "x-ruby-class": "PlacementWeights"
3927
+ },
3928
+ "postgresDatabaseResponse": {
3929
+ "type": "object",
3930
+ "properties": {
3931
+ "data": {
3932
+ "$ref": "#/components/schemas/PostgresDatabase"
3933
+ }
3934
+ },
3935
+ "x-ruby-class": "PostgresDatabaseResponse"
3936
+ },
3937
+ "resset.Action": {
3938
+ "type": "integer",
3939
+ "enum": [
3940
+ 1,
3941
+ 2,
3942
+ 4,
3943
+ 8,
3944
+ 16,
3945
+ 31,
3946
+ 0
3947
+ ],
3948
+ "x-enum-varnames": [
3949
+ "ActionRead",
3950
+ "ActionWrite",
3951
+ "ActionCreate",
3952
+ "ActionDelete",
3953
+ "ActionControl",
3954
+ "ActionAll",
3955
+ "ActionNone"
3956
+ ],
3957
+ "x-ruby-class": "RessetAction"
3958
+ },
3959
+ "restorePostgresClusterRequest": {
3960
+ "type": "object",
3961
+ "properties": {
3962
+ "backup_id": {
3963
+ "type": "string",
3964
+ "description": "Backup label to restore from, as returned by the backups list. Mutually exclusive with pitr_time."
3965
+ },
3966
+ "name": {
3967
+ "type": "string",
3968
+ "description": "Name for the restored cluster. Defaults to a generated name derived from the source cluster and backup/point in time when omitted or blank."
3969
+ },
3970
+ "pitr_time": {
3971
+ "type": "string",
3972
+ "description": "Point in time to restore to, as an RFC3339 timestamp with an explicit offset from UTC (e.g. Z or +02:00). Normalized to UTC and must fall within the cluster's PITR recovery window. Mutually exclusive with backup_id."
3973
+ }
3974
+ },
3975
+ "x-ruby-class": "RestorePostgresClusterRequest"
3976
+ },
3977
+ "root.VerifiedToken": {
3978
+ "type": "object",
3979
+ "properties": {
3980
+ "caveats": {
3981
+ "$ref": "#/components/schemas/macaroon.CaveatSet"
3982
+ },
3983
+ "header": {
3984
+ "type": "string"
3985
+ },
3986
+ "nonce": {
3987
+ "$ref": "#/components/schemas/macaroon.Nonce"
3988
+ },
3989
+ "permission_token": {
3990
+ "type": "array",
3991
+ "items": {
3992
+ "type": "integer"
3993
+ }
3994
+ }
3995
+ },
3996
+ "x-ruby-class": "RootVerifiedToken"
3997
+ },
3998
+ "rotatePostgresPasswordRequest": {
3999
+ "type": "object",
4000
+ "properties": {
4001
+ "kill_sessions": {
4002
+ "type": "boolean",
4003
+ "description": "Terminate the user's existing sessions after rotating."
4004
+ }
4005
+ },
4006
+ "x-ruby-class": "RotatePostgresPasswordRequest"
4007
+ },
4008
+ "rotatePostgresPasswordResponse": {
4009
+ "type": "object",
4010
+ "properties": {
4011
+ "data": {
4012
+ "$ref": "#/components/schemas/PostgresUserCredentials"
4013
+ }
4014
+ },
4015
+ "x-ruby-class": "RotatePostgresPasswordResponse"
4016
+ },
4017
+ "showPostgresClusterResponse": {
4018
+ "type": "object",
4019
+ "properties": {
4020
+ "data": {
4021
+ "$ref": "#/components/schemas/PostgresCluster"
4022
+ }
4023
+ },
4024
+ "x-ruby-class": "ShowPostgresClusterResponse"
4025
+ },
4026
+ "updateMetadataRequest": {
4027
+ "type": "object",
4028
+ "properties": {
4029
+ "machine_version": {
4030
+ "type": "string"
4031
+ },
4032
+ "metadata": {
4033
+ "type": "object",
4034
+ "additionalProperties": {
4035
+ "type": "string"
4036
+ }
4037
+ },
4038
+ "updated_at": {
4039
+ "type": "string"
4040
+ }
4041
+ },
4042
+ "x-ruby-class": "UpdateMetadataRequest"
4043
+ },
4044
+ "updatePostgresUserRoleRequest": {
4045
+ "required": [
4046
+ "role"
4047
+ ],
4048
+ "type": "object",
4049
+ "properties": {
4050
+ "role": {
4051
+ "type": "string",
4052
+ "description": "New role for the user.",
4053
+ "example": "reader",
4054
+ "enum": [
4055
+ "schema_admin",
4056
+ "writer",
4057
+ "reader"
4058
+ ]
4059
+ }
4060
+ },
4061
+ "x-ruby-class": "UpdatePostgresUserRoleRequest"
4062
+ },
4063
+ "upsertMetadataKeyRequest": {
4064
+ "type": "object",
4065
+ "properties": {
4066
+ "updated_at": {
4067
+ "type": "string"
4068
+ },
4069
+ "value": {
4070
+ "type": "string"
4071
+ }
4072
+ },
4073
+ "x-ruby-class": "UpsertMetadataKeyRequest"
4074
+ },
4075
+ "NetworkPolicyPort": {
4076
+ "type": "object",
4077
+ "required": [
4078
+ "protocol",
4079
+ "port"
4080
+ ],
4081
+ "properties": {
4082
+ "protocol": {
4083
+ "type": "string"
4084
+ },
4085
+ "port": {
4086
+ "type": "integer"
4087
+ }
4088
+ },
4089
+ "x-ruby-class": "NetworkPolicyPort"
4090
+ },
4091
+ "NetworkPolicyRule": {
4092
+ "type": "object",
4093
+ "required": [
4094
+ "action",
4095
+ "direction",
4096
+ "ports"
4097
+ ],
4098
+ "properties": {
4099
+ "action": {
4100
+ "type": "string",
4101
+ "enum": [
4102
+ "allow"
4103
+ ]
4104
+ },
4105
+ "direction": {
4106
+ "type": "string",
4107
+ "enum": [
4108
+ "ingress",
4109
+ "egress"
4110
+ ]
4111
+ },
4112
+ "ports": {
4113
+ "type": "array",
4114
+ "items": {
4115
+ "$ref": "#/additional/schemas/NetworkPolicyPort"
4116
+ }
4117
+ }
4118
+ },
4119
+ "x-ruby-class": "NetworkPolicyRule"
4120
+ },
4121
+ "NetworkPolicySelector": {
4122
+ "type": "object",
4123
+ "properties": {
4124
+ "all": {
4125
+ "type": "boolean"
4126
+ },
4127
+ "machines": {
4128
+ "type": "array",
4129
+ "items": {
4130
+ "type": "object",
4131
+ "required": [
4132
+ "id"
4133
+ ],
4134
+ "properties": {
4135
+ "id": {
4136
+ "type": "string"
4137
+ }
4138
+ }
4139
+ }
4140
+ },
4141
+ "metadata": {
4142
+ "type": "object",
4143
+ "additionalProperties": {
4144
+ "type": "string"
4145
+ }
4146
+ }
4147
+ },
4148
+ "x-ruby-class": "NetworkPolicySelector"
4149
+ },
4150
+ "NetworkPolicyRequest": {
4151
+ "type": "object",
4152
+ "required": [
4153
+ "name",
4154
+ "selector",
4155
+ "rules"
4156
+ ],
4157
+ "properties": {
4158
+ "id": {
4159
+ "type": "string"
4160
+ },
4161
+ "name": {
4162
+ "type": "string"
4163
+ },
4164
+ "selector": {
4165
+ "$ref": "#/additional/schemas/NetworkPolicySelector"
4166
+ },
4167
+ "rules": {
4168
+ "type": "array",
4169
+ "items": {
4170
+ "$ref": "#/additional/schemas/NetworkPolicyRule"
4171
+ }
4172
+ }
4173
+ },
4174
+ "x-ruby-class": "NetworkPolicyRequest"
4175
+ },
4176
+ "NetworkPolicy": {
4177
+ "type": "object",
4178
+ "additionalProperties": true,
4179
+ "properties": {
4180
+ "id": {
4181
+ "type": "string"
4182
+ },
4183
+ "name": {
4184
+ "type": "string"
4185
+ },
4186
+ "selector": {
4187
+ "$ref": "#/additional/schemas/NetworkPolicySelector"
4188
+ },
4189
+ "rules": {
4190
+ "type": "array",
4191
+ "items": {
4192
+ "$ref": "#/additional/schemas/NetworkPolicyRule"
4193
+ }
4194
+ }
4195
+ },
4196
+ "x-ruby-class": "NetworkPolicy"
4197
+ },
4198
+ "PrometheusAPIResponse": {
4199
+ "type": "object",
4200
+ "required": [
4201
+ "status"
4202
+ ],
4203
+ "additionalProperties": true,
4204
+ "properties": {
4205
+ "status": {
4206
+ "type": "string",
4207
+ "enum": [
4208
+ "success",
4209
+ "error"
4210
+ ]
4211
+ },
4212
+ "data": {
4213
+ "type": "object",
4214
+ "additionalProperties": true
4215
+ },
4216
+ "errorType": {
4217
+ "type": "string"
4218
+ },
4219
+ "error": {
4220
+ "type": "string"
4221
+ },
4222
+ "warnings": {
4223
+ "type": "array",
4224
+ "items": {
4225
+ "type": "string"
4226
+ }
4227
+ },
4228
+ "infos": {
4229
+ "type": "array",
4230
+ "items": {
4231
+ "type": "string"
4232
+ }
4233
+ }
4234
+ },
4235
+ "x-ruby-class": "PrometheusAPIResponse"
4236
+ }
4237
+ }