@faable/deploy-sdk 2.9.0 → 2.11.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.
package/spec/openapi.json CHANGED
@@ -17,24 +17,32 @@
17
17
  }
18
18
  },
19
19
  "securitySchemes": {
20
- "faable_machine": {
21
- "type": "http",
22
- "scheme": "bearer",
23
- "bearerFormat": "JWT",
24
- "description": "Paste the token obtained from the Token Exchange flow (GitHub OIDC)"
25
- },
26
20
  "faable_user": {
27
21
  "type": "oauth2",
22
+ "description": "Interactive user login — the flow the dashboard uses. Authorization Code with PKCE (S256); the auth server accepts public clients, so no client secret is involved. To use the Authorize button here, the client you enter must have `<this-host>/docs/oauth2-redirect.html` registered as a redirect URI.",
28
23
  "flows": {
29
24
  "authorizationCode": {
30
- "authorizationUrl": "https://faable.auth.faable.link/authorize?connection=connection_6475d947ea96eb57c2062c90",
25
+ "authorizationUrl": "https://faable.auth.faable.link/authorize",
31
26
  "tokenUrl": "https://faable.auth.faable.link/oauth/token",
32
- "scopes": {}
27
+ "refreshUrl": "https://faable.auth.faable.link/oauth/token",
28
+ "scopes": {
29
+ "openid": "Sign in and read the subject claim",
30
+ "profile": "Basic profile of the signed-in user",
31
+ "email": "Email address of the signed-in user",
32
+ "offline_access": "Issue a refresh token"
33
+ }
33
34
  }
34
35
  }
35
36
  },
36
37
  "faable_cli": {
38
+ "type": "http",
39
+ "scheme": "bearer",
40
+ "bearerFormat": "JWT",
41
+ "description": "Token issued by `faable login`, which runs the OAuth 2.0 device authorization grant (RFC 8628: `POST /oauth/device/code`, then `POST /oauth/token` with `grant_type=urn:ietf:params:oauth:grant-type:device_code`). OpenAPI has no device flow object, so paste the access token directly."
42
+ },
43
+ "faable_m2m": {
37
44
  "type": "oauth2",
45
+ "description": "Machine-to-machine identity (service accounts, the SDKs). The token carries no user, so endpoints scoped to a user reject it.",
38
46
  "flows": {
39
47
  "clientCredentials": {
40
48
  "tokenUrl": "https://faable.auth.faable.link/oauth/token",
@@ -42,10 +50,22 @@
42
50
  }
43
51
  }
44
52
  },
53
+ "faable_machine": {
54
+ "type": "http",
55
+ "scheme": "bearer",
56
+ "bearerFormat": "JWT",
57
+ "description": "Token obtained by exchanging a GitHub Actions OIDC token (RFC 8693 token exchange) — how a workflow deploys without a stored secret. The remote builder also authenticates as a machine, with an opaque `fbt_…` build token minted per deployment and scoped to its app; those are issued by the platform and cannot be requested here."
58
+ },
59
+ "apikey_basic": {
60
+ "type": "http",
61
+ "scheme": "basic",
62
+ "description": "API key as HTTP Basic: the key is the username, the password is empty (`Authorization: Basic base64(\"<key>:\")`). Preferred over the query parameter — it keeps the key out of URLs, logs and referrers."
63
+ },
45
64
  "apikey": {
46
65
  "type": "apiKey",
47
66
  "in": "query",
48
- "name": "apikey"
67
+ "name": "apikey",
68
+ "description": "API key as a query parameter. Accepted, but it travels in the URL, so prefer `apikey_basic`."
49
69
  }
50
70
  },
51
71
  "schemas": {
@@ -805,6 +825,117 @@
805
825
  }
806
826
  }
807
827
  },
828
+ "RepoBranches": {
829
+ "type": "object",
830
+ "required": [
831
+ "branches"
832
+ ],
833
+ "properties": {
834
+ "branches": {
835
+ "type": "array",
836
+ "items": {
837
+ "type": "string"
838
+ }
839
+ }
840
+ }
841
+ },
842
+ "RepoWorkflows": {
843
+ "type": "object",
844
+ "required": [
845
+ "workflows",
846
+ "deploy_workflow"
847
+ ],
848
+ "properties": {
849
+ "workflows": {
850
+ "type": "array",
851
+ "items": {
852
+ "type": "object",
853
+ "required": [
854
+ "name",
855
+ "path"
856
+ ],
857
+ "properties": {
858
+ "name": {
859
+ "type": "string"
860
+ },
861
+ "path": {
862
+ "type": "string"
863
+ }
864
+ }
865
+ }
866
+ },
867
+ "deploy_workflow": {
868
+ "anyOf": [
869
+ {
870
+ "type": "string"
871
+ },
872
+ {
873
+ "type": "null"
874
+ }
875
+ ]
876
+ }
877
+ }
878
+ },
879
+ "RepoConfig": {
880
+ "type": "object",
881
+ "required": [
882
+ "root_dir",
883
+ "root_dir_source"
884
+ ],
885
+ "properties": {
886
+ "root_dir": {
887
+ "anyOf": [
888
+ {
889
+ "type": "string"
890
+ },
891
+ {
892
+ "type": "null"
893
+ }
894
+ ]
895
+ },
896
+ "root_dir_source": {
897
+ "anyOf": [
898
+ {
899
+ "type": "string",
900
+ "enum": [
901
+ "platform"
902
+ ]
903
+ },
904
+ {
905
+ "type": "string",
906
+ "enum": [
907
+ "faable.json"
908
+ ]
909
+ },
910
+ {
911
+ "type": "null"
912
+ }
913
+ ]
914
+ }
915
+ }
916
+ },
917
+ "DeployNowResult": {
918
+ "type": "object",
919
+ "required": [
920
+ "status",
921
+ "commit",
922
+ "branch"
923
+ ],
924
+ "properties": {
925
+ "status": {
926
+ "type": "string",
927
+ "enum": [
928
+ "created"
929
+ ]
930
+ },
931
+ "commit": {
932
+ "type": "string"
933
+ },
934
+ "branch": {
935
+ "type": "string"
936
+ }
937
+ }
938
+ },
808
939
  "DeploymentStatus": {
809
940
  "type": "object",
810
941
  "required": [
@@ -822,7 +953,8 @@
822
953
  "READY",
823
954
  "CANCELED",
824
955
  "TERMINATING",
825
- "SUPERSEDED"
956
+ "SUPERSEDED",
957
+ "QUOTA_HOLD"
826
958
  ],
827
959
  "description": "High-level summary of where the Deployment is in its lifecycle",
828
960
  "default": "QUEUED"
@@ -1066,6 +1198,10 @@
1066
1198
  "redeploy_of": {
1067
1199
  "type": "string"
1068
1200
  },
1201
+ "quota_released_at": {
1202
+ "type": "string",
1203
+ "format": "date-time"
1204
+ },
1069
1205
  "trigger": {
1070
1206
  "anyOf": [
1071
1207
  {
@@ -2638,6 +2774,66 @@
2638
2774
  },
2639
2775
  "additionalProperties": false
2640
2776
  },
2777
+ "DeployQuota": {
2778
+ "type": "object",
2779
+ "required": [
2780
+ "limited",
2781
+ "over",
2782
+ "used",
2783
+ "limit",
2784
+ "resets_at",
2785
+ "held"
2786
+ ],
2787
+ "properties": {
2788
+ "limited": {
2789
+ "type": "boolean"
2790
+ },
2791
+ "over": {
2792
+ "type": "boolean"
2793
+ },
2794
+ "used": {
2795
+ "type": "integer"
2796
+ },
2797
+ "limit": {
2798
+ "anyOf": [
2799
+ {
2800
+ "type": "integer"
2801
+ },
2802
+ {
2803
+ "type": "null"
2804
+ }
2805
+ ]
2806
+ },
2807
+ "resets_at": {
2808
+ "type": "string",
2809
+ "format": "date-time"
2810
+ },
2811
+ "held": {
2812
+ "type": "integer"
2813
+ }
2814
+ }
2815
+ },
2816
+ "DeployQuotaRelease": {
2817
+ "type": "object",
2818
+ "required": [
2819
+ "released",
2820
+ "canceled"
2821
+ ],
2822
+ "properties": {
2823
+ "released": {
2824
+ "type": "array",
2825
+ "items": {
2826
+ "type": "string"
2827
+ }
2828
+ },
2829
+ "canceled": {
2830
+ "type": "array",
2831
+ "items": {
2832
+ "type": "string"
2833
+ }
2834
+ }
2835
+ }
2836
+ },
2641
2837
  "AppChecknameResponse": {
2642
2838
  "type": "object",
2643
2839
  "required": [
@@ -2808,10 +3004,22 @@
2808
3004
  ],
2809
3005
  "security": [
2810
3006
  {
2811
- "faable_user": [],
2812
- "faable_cli": [],
2813
- "apikey": [],
3007
+ "faable_user": []
3008
+ },
3009
+ {
3010
+ "faable_cli": []
3011
+ },
3012
+ {
3013
+ "faable_m2m": []
3014
+ },
3015
+ {
2814
3016
  "faable_machine": []
3017
+ },
3018
+ {
3019
+ "apikey_basic": []
3020
+ },
3021
+ {
3022
+ "apikey": []
2815
3023
  }
2816
3024
  ],
2817
3025
  "responses": {
@@ -2889,10 +3097,22 @@
2889
3097
  ],
2890
3098
  "security": [
2891
3099
  {
2892
- "faable_user": [],
2893
- "faable_cli": [],
2894
- "apikey": [],
3100
+ "faable_user": []
3101
+ },
3102
+ {
3103
+ "faable_cli": []
3104
+ },
3105
+ {
3106
+ "faable_m2m": []
3107
+ },
3108
+ {
2895
3109
  "faable_machine": []
3110
+ },
3111
+ {
3112
+ "apikey_basic": []
3113
+ },
3114
+ {
3115
+ "apikey": []
2896
3116
  }
2897
3117
  ],
2898
3118
  "responses": {
@@ -2971,10 +3191,22 @@
2971
3191
  },
2972
3192
  "security": [
2973
3193
  {
2974
- "faable_user": [],
2975
- "faable_cli": [],
2976
- "apikey": [],
3194
+ "faable_user": []
3195
+ },
3196
+ {
3197
+ "faable_cli": []
3198
+ },
3199
+ {
3200
+ "faable_m2m": []
3201
+ },
3202
+ {
2977
3203
  "faable_machine": []
3204
+ },
3205
+ {
3206
+ "apikey_basic": []
3207
+ },
3208
+ {
3209
+ "apikey": []
2978
3210
  }
2979
3211
  ],
2980
3212
  "responses": {
@@ -3057,10 +3289,22 @@
3057
3289
  ],
3058
3290
  "security": [
3059
3291
  {
3060
- "faable_user": [],
3061
- "faable_cli": [],
3062
- "apikey": [],
3292
+ "faable_user": []
3293
+ },
3294
+ {
3295
+ "faable_cli": []
3296
+ },
3297
+ {
3298
+ "faable_m2m": []
3299
+ },
3300
+ {
3063
3301
  "faable_machine": []
3302
+ },
3303
+ {
3304
+ "apikey_basic": []
3305
+ },
3306
+ {
3307
+ "apikey": []
3064
3308
  }
3065
3309
  ],
3066
3310
  "responses": {
@@ -3169,10 +3413,22 @@
3169
3413
  ],
3170
3414
  "security": [
3171
3415
  {
3172
- "faable_user": [],
3173
- "faable_cli": [],
3174
- "apikey": [],
3416
+ "faable_user": []
3417
+ },
3418
+ {
3419
+ "faable_cli": []
3420
+ },
3421
+ {
3422
+ "faable_m2m": []
3423
+ },
3424
+ {
3175
3425
  "faable_machine": []
3426
+ },
3427
+ {
3428
+ "apikey_basic": []
3429
+ },
3430
+ {
3431
+ "apikey": []
3176
3432
  }
3177
3433
  ],
3178
3434
  "responses": {
@@ -3253,10 +3509,22 @@
3253
3509
  ],
3254
3510
  "security": [
3255
3511
  {
3256
- "faable_user": [],
3257
- "faable_cli": [],
3258
- "apikey": [],
3512
+ "faable_user": []
3513
+ },
3514
+ {
3515
+ "faable_cli": []
3516
+ },
3517
+ {
3518
+ "faable_m2m": []
3519
+ },
3520
+ {
3259
3521
  "faable_machine": []
3522
+ },
3523
+ {
3524
+ "apikey_basic": []
3525
+ },
3526
+ {
3527
+ "apikey": []
3260
3528
  }
3261
3529
  ],
3262
3530
  "responses": {
@@ -3387,10 +3655,22 @@
3387
3655
  ],
3388
3656
  "security": [
3389
3657
  {
3390
- "faable_user": [],
3391
- "faable_cli": [],
3392
- "apikey": [],
3658
+ "faable_user": []
3659
+ },
3660
+ {
3661
+ "faable_cli": []
3662
+ },
3663
+ {
3664
+ "faable_m2m": []
3665
+ },
3666
+ {
3393
3667
  "faable_machine": []
3668
+ },
3669
+ {
3670
+ "apikey_basic": []
3671
+ },
3672
+ {
3673
+ "apikey": []
3394
3674
  }
3395
3675
  ],
3396
3676
  "responses": {
@@ -3463,10 +3743,22 @@
3463
3743
  },
3464
3744
  "security": [
3465
3745
  {
3466
- "faable_user": [],
3467
- "faable_cli": [],
3468
- "apikey": [],
3746
+ "faable_user": []
3747
+ },
3748
+ {
3749
+ "faable_cli": []
3750
+ },
3751
+ {
3752
+ "faable_m2m": []
3753
+ },
3754
+ {
3469
3755
  "faable_machine": []
3756
+ },
3757
+ {
3758
+ "apikey_basic": []
3759
+ },
3760
+ {
3761
+ "apikey": []
3470
3762
  }
3471
3763
  ],
3472
3764
  "responses": {
@@ -3746,10 +4038,22 @@
3746
4038
  ],
3747
4039
  "security": [
3748
4040
  {
3749
- "faable_user": [],
3750
- "faable_cli": [],
3751
- "apikey": [],
4041
+ "faable_user": []
4042
+ },
4043
+ {
4044
+ "faable_cli": []
4045
+ },
4046
+ {
4047
+ "faable_m2m": []
4048
+ },
4049
+ {
3752
4050
  "faable_machine": []
4051
+ },
4052
+ {
4053
+ "apikey_basic": []
4054
+ },
4055
+ {
4056
+ "apikey": []
3753
4057
  }
3754
4058
  ],
3755
4059
  "responses": {
@@ -4048,10 +4352,22 @@
4048
4352
  ],
4049
4353
  "security": [
4050
4354
  {
4051
- "faable_user": [],
4052
- "faable_cli": [],
4053
- "apikey": [],
4355
+ "faable_user": []
4356
+ },
4357
+ {
4358
+ "faable_cli": []
4359
+ },
4360
+ {
4361
+ "faable_m2m": []
4362
+ },
4363
+ {
4054
4364
  "faable_machine": []
4365
+ },
4366
+ {
4367
+ "apikey_basic": []
4368
+ },
4369
+ {
4370
+ "apikey": []
4055
4371
  }
4056
4372
  ],
4057
4373
  "responses": {
@@ -4311,12 +4627,24 @@
4311
4627
  ],
4312
4628
  "security": [
4313
4629
  {
4314
- "faable_user": [],
4315
- "faable_cli": [],
4316
- "apikey": [],
4630
+ "faable_user": []
4631
+ },
4632
+ {
4633
+ "faable_cli": []
4634
+ },
4635
+ {
4636
+ "faable_m2m": []
4637
+ },
4638
+ {
4317
4639
  "faable_machine": []
4318
- }
4319
- ],
4640
+ },
4641
+ {
4642
+ "apikey_basic": []
4643
+ },
4644
+ {
4645
+ "apikey": []
4646
+ }
4647
+ ],
4320
4648
  "responses": {
4321
4649
  "200": {
4322
4650
  "description": "App",
@@ -4576,10 +4904,22 @@
4576
4904
  ],
4577
4905
  "security": [
4578
4906
  {
4579
- "faable_user": [],
4580
- "faable_cli": [],
4581
- "apikey": [],
4907
+ "faable_user": []
4908
+ },
4909
+ {
4910
+ "faable_cli": []
4911
+ },
4912
+ {
4913
+ "faable_m2m": []
4914
+ },
4915
+ {
4582
4916
  "faable_machine": []
4917
+ },
4918
+ {
4919
+ "apikey_basic": []
4920
+ },
4921
+ {
4922
+ "apikey": []
4583
4923
  }
4584
4924
  ],
4585
4925
  "responses": {
@@ -4618,10 +4958,22 @@
4618
4958
  ],
4619
4959
  "security": [
4620
4960
  {
4621
- "faable_user": [],
4622
- "faable_cli": [],
4623
- "apikey": [],
4961
+ "faable_user": []
4962
+ },
4963
+ {
4964
+ "faable_cli": []
4965
+ },
4966
+ {
4967
+ "faable_m2m": []
4968
+ },
4969
+ {
4624
4970
  "faable_machine": []
4971
+ },
4972
+ {
4973
+ "apikey_basic": []
4974
+ },
4975
+ {
4976
+ "apikey": []
4625
4977
  }
4626
4978
  ],
4627
4979
  "responses": {
@@ -4658,10 +5010,22 @@
4658
5010
  ],
4659
5011
  "security": [
4660
5012
  {
4661
- "faable_user": [],
4662
- "faable_cli": [],
4663
- "apikey": [],
5013
+ "faable_user": []
5014
+ },
5015
+ {
5016
+ "faable_cli": []
5017
+ },
5018
+ {
5019
+ "faable_m2m": []
5020
+ },
5021
+ {
4664
5022
  "faable_machine": []
5023
+ },
5024
+ {
5025
+ "apikey_basic": []
5026
+ },
5027
+ {
5028
+ "apikey": []
4665
5029
  }
4666
5030
  ],
4667
5031
  "responses": {
@@ -4743,10 +5107,22 @@
4743
5107
  ],
4744
5108
  "security": [
4745
5109
  {
4746
- "faable_user": [],
4747
- "faable_cli": [],
4748
- "apikey": [],
5110
+ "faable_user": []
5111
+ },
5112
+ {
5113
+ "faable_cli": []
5114
+ },
5115
+ {
5116
+ "faable_m2m": []
5117
+ },
5118
+ {
4749
5119
  "faable_machine": []
5120
+ },
5121
+ {
5122
+ "apikey_basic": []
5123
+ },
5124
+ {
5125
+ "apikey": []
4750
5126
  }
4751
5127
  ],
4752
5128
  "responses": {
@@ -4852,10 +5228,22 @@
4852
5228
  ],
4853
5229
  "security": [
4854
5230
  {
4855
- "faable_user": [],
4856
- "faable_cli": [],
4857
- "apikey": [],
5231
+ "faable_user": []
5232
+ },
5233
+ {
5234
+ "faable_cli": []
5235
+ },
5236
+ {
5237
+ "faable_m2m": []
5238
+ },
5239
+ {
4858
5240
  "faable_machine": []
5241
+ },
5242
+ {
5243
+ "apikey_basic": []
5244
+ },
5245
+ {
5246
+ "apikey": []
4859
5247
  }
4860
5248
  ],
4861
5249
  "responses": {
@@ -5152,10 +5540,22 @@
5152
5540
  ],
5153
5541
  "security": [
5154
5542
  {
5155
- "faable_user": [],
5156
- "faable_cli": [],
5157
- "apikey": [],
5543
+ "faable_user": []
5544
+ },
5545
+ {
5546
+ "faable_cli": []
5547
+ },
5548
+ {
5549
+ "faable_m2m": []
5550
+ },
5551
+ {
5158
5552
  "faable_machine": []
5553
+ },
5554
+ {
5555
+ "apikey_basic": []
5556
+ },
5557
+ {
5558
+ "apikey": []
5159
5559
  }
5160
5560
  ],
5161
5561
  "responses": {
@@ -5193,10 +5593,22 @@
5193
5593
  ],
5194
5594
  "security": [
5195
5595
  {
5196
- "faable_user": [],
5197
- "faable_cli": [],
5198
- "apikey": [],
5596
+ "faable_user": []
5597
+ },
5598
+ {
5599
+ "faable_cli": []
5600
+ },
5601
+ {
5602
+ "faable_m2m": []
5603
+ },
5604
+ {
5199
5605
  "faable_machine": []
5606
+ },
5607
+ {
5608
+ "apikey_basic": []
5609
+ },
5610
+ {
5611
+ "apikey": []
5200
5612
  }
5201
5613
  ],
5202
5614
  "responses": {
@@ -5255,10 +5667,22 @@
5255
5667
  ],
5256
5668
  "security": [
5257
5669
  {
5258
- "faable_user": [],
5259
- "faable_cli": [],
5260
- "apikey": [],
5670
+ "faable_user": []
5671
+ },
5672
+ {
5673
+ "faable_cli": []
5674
+ },
5675
+ {
5676
+ "faable_m2m": []
5677
+ },
5678
+ {
5261
5679
  "faable_machine": []
5680
+ },
5681
+ {
5682
+ "apikey_basic": []
5683
+ },
5684
+ {
5685
+ "apikey": []
5262
5686
  }
5263
5687
  ],
5264
5688
  "responses": {
@@ -5287,60 +5711,43 @@
5287
5711
  }
5288
5712
  }
5289
5713
  },
5290
- "/deployment": {
5714
+ "/app/{id}/repo/branches": {
5291
5715
  "get": {
5292
- "operationId": "deployment/list",
5293
- "summary": "List Deployments",
5716
+ "operationId": "app/repo_branches",
5717
+ "summary": "List repository branches",
5294
5718
  "tags": [
5295
- "deployments"
5719
+ "apps",
5720
+ "github"
5296
5721
  ],
5297
- "description": "List Deployments",
5722
+ "description": "Branch names of the linked repository.",
5298
5723
  "parameters": [
5299
- {
5300
- "schema": {
5301
- "type": "number",
5302
- "minimum": 1,
5303
- "maximum": 200
5304
- },
5305
- "in": "query",
5306
- "name": "pageSize",
5307
- "required": false,
5308
- "description": "Number of items per page (max 200)"
5309
- },
5310
5724
  {
5311
5725
  "schema": {
5312
5726
  "type": "string"
5313
5727
  },
5314
- "in": "query",
5315
- "name": "cursor",
5316
- "required": false,
5317
- "description": "Cursor for next page"
5728
+ "in": "path",
5729
+ "name": "id",
5730
+ "required": true
5731
+ }
5732
+ ],
5733
+ "security": [
5734
+ {
5735
+ "faable_user": []
5318
5736
  },
5319
5737
  {
5320
- "schema": {
5321
- "type": "string"
5322
- },
5323
- "in": "query",
5324
- "name": "next",
5325
- "required": false,
5326
- "description": "Cursor returned by the previous page"
5738
+ "faable_cli": []
5327
5739
  },
5328
5740
  {
5329
- "schema": {
5330
- "type": "string"
5331
- },
5332
- "in": "query",
5333
- "name": "query",
5334
- "required": false,
5335
- "description": "Filter using a FaableQL query"
5336
- }
5337
- ],
5338
- "security": [
5741
+ "faable_m2m": []
5742
+ },
5339
5743
  {
5340
- "faable_user": [],
5341
- "faable_cli": [],
5342
- "apikey": [],
5343
5744
  "faable_machine": []
5745
+ },
5746
+ {
5747
+ "apikey_basic": []
5748
+ },
5749
+ {
5750
+ "apikey": []
5344
5751
  }
5345
5752
  ],
5346
5753
  "responses": {
@@ -5351,113 +5758,556 @@
5351
5758
  "schema": {
5352
5759
  "type": "object",
5353
5760
  "required": [
5354
- "next",
5355
- "results"
5761
+ "branches"
5356
5762
  ],
5357
5763
  "properties": {
5358
- "next": {
5359
- "anyOf": [
5360
- {
5361
- "type": "string"
5362
- },
5363
- {
5364
- "type": "null"
5365
- }
5366
- ]
5367
- },
5368
- "results": {
5764
+ "branches": {
5369
5765
  "type": "array",
5370
5766
  "items": {
5371
- "$ref": "#/components/schemas/Deployment"
5767
+ "type": "string"
5372
5768
  }
5373
5769
  }
5374
- },
5375
- "additionalProperties": false
5770
+ }
5376
5771
  }
5377
5772
  }
5378
5773
  }
5379
5774
  }
5380
5775
  }
5381
- },
5382
- "post": {
5383
- "operationId": "deployment/create",
5384
- "summary": "Create Deployment",
5776
+ }
5777
+ },
5778
+ "/app/{id}/repo/workflows": {
5779
+ "get": {
5780
+ "operationId": "app/repo_workflows",
5781
+ "summary": "List repository workflow files",
5385
5782
  "tags": [
5386
- "deployments"
5783
+ "apps",
5784
+ "github"
5387
5785
  ],
5388
- "description": "Create Deployment",
5389
- "requestBody": {
5390
- "required": true,
5391
- "content": {
5392
- "application/json": {
5393
- "schema": {
5394
- "type": "object",
5395
- "required": [
5396
- "app_id"
5397
- ],
5398
- "properties": {
5399
- "app_id": {
5400
- "type": "string"
5401
- },
5402
- "image": {
5403
- "type": "string"
5404
- },
5405
- "release": {
5406
- "type": "string",
5407
- "maxLength": 128
5408
- },
5409
- "github_commit": {
5410
- "type": "string"
5411
- },
5412
- "github_ref": {
5413
- "type": "string"
5414
- },
5415
- "github_actor": {
5416
- "type": "string"
5417
- },
5418
- "github_commit_message": {
5419
- "type": "string"
5420
- },
5421
- "type": {
5422
- "type": "string"
5423
- },
5424
- "source": {
5425
- "$ref": "#/components/schemas/DeploymentSource"
5426
- }
5427
- }
5428
- }
5429
- }
5786
+ "description": "GitHub Actions workflow files present on the linked repository (deploy branch).",
5787
+ "parameters": [
5788
+ {
5789
+ "schema": {
5790
+ "type": "string"
5791
+ },
5792
+ "in": "path",
5793
+ "name": "id",
5794
+ "required": true
5430
5795
  }
5431
- },
5796
+ ],
5432
5797
  "security": [
5433
5798
  {
5434
- "faable_user": [],
5435
- "faable_cli": [],
5436
- "apikey": [],
5799
+ "faable_user": []
5800
+ },
5801
+ {
5802
+ "faable_cli": []
5803
+ },
5804
+ {
5805
+ "faable_m2m": []
5806
+ },
5807
+ {
5437
5808
  "faable_machine": []
5809
+ },
5810
+ {
5811
+ "apikey_basic": []
5812
+ },
5813
+ {
5814
+ "apikey": []
5438
5815
  }
5439
5816
  ],
5440
5817
  "responses": {
5441
- "201": {
5442
- "description": "Deployment",
5818
+ "200": {
5819
+ "description": "Default Response",
5443
5820
  "content": {
5444
5821
  "application/json": {
5445
5822
  "schema": {
5446
5823
  "type": "object",
5447
5824
  "required": [
5448
- "id",
5449
- "team",
5450
- "app_id",
5451
- "status",
5452
- "metadata",
5453
- "createdAt"
5825
+ "workflows",
5826
+ "deploy_workflow"
5454
5827
  ],
5455
5828
  "properties": {
5456
- "id": {
5457
- "type": "string",
5458
- "description": "Deployment ID"
5829
+ "workflows": {
5830
+ "type": "array",
5831
+ "items": {
5832
+ "type": "object",
5833
+ "required": [
5834
+ "name",
5835
+ "path"
5836
+ ],
5837
+ "properties": {
5838
+ "name": {
5839
+ "type": "string"
5840
+ },
5841
+ "path": {
5842
+ "type": "string"
5843
+ }
5844
+ }
5845
+ }
5459
5846
  },
5460
- "team": {
5847
+ "deploy_workflow": {
5848
+ "anyOf": [
5849
+ {
5850
+ "type": "string"
5851
+ },
5852
+ {
5853
+ "type": "null"
5854
+ }
5855
+ ]
5856
+ }
5857
+ }
5858
+ }
5859
+ }
5860
+ }
5861
+ }
5862
+ }
5863
+ }
5864
+ },
5865
+ "/app/{id}/repo/config": {
5866
+ "get": {
5867
+ "operationId": "app/repo_config",
5868
+ "summary": "Get effective repository build config",
5869
+ "tags": [
5870
+ "apps",
5871
+ "github"
5872
+ ],
5873
+ "description": "Effective build configuration read from the repository: the monorepo Root Directory and its source (platform override or the repo's faable.json).",
5874
+ "parameters": [
5875
+ {
5876
+ "schema": {
5877
+ "type": "string"
5878
+ },
5879
+ "in": "path",
5880
+ "name": "id",
5881
+ "required": true
5882
+ }
5883
+ ],
5884
+ "security": [
5885
+ {
5886
+ "faable_user": []
5887
+ },
5888
+ {
5889
+ "faable_cli": []
5890
+ },
5891
+ {
5892
+ "faable_m2m": []
5893
+ },
5894
+ {
5895
+ "faable_machine": []
5896
+ },
5897
+ {
5898
+ "apikey_basic": []
5899
+ },
5900
+ {
5901
+ "apikey": []
5902
+ }
5903
+ ],
5904
+ "responses": {
5905
+ "200": {
5906
+ "description": "Default Response",
5907
+ "content": {
5908
+ "application/json": {
5909
+ "schema": {
5910
+ "type": "object",
5911
+ "required": [
5912
+ "root_dir",
5913
+ "root_dir_source"
5914
+ ],
5915
+ "properties": {
5916
+ "root_dir": {
5917
+ "anyOf": [
5918
+ {
5919
+ "type": "string"
5920
+ },
5921
+ {
5922
+ "type": "null"
5923
+ }
5924
+ ]
5925
+ },
5926
+ "root_dir_source": {
5927
+ "anyOf": [
5928
+ {
5929
+ "type": "string",
5930
+ "enum": [
5931
+ "platform"
5932
+ ]
5933
+ },
5934
+ {
5935
+ "type": "string",
5936
+ "enum": [
5937
+ "faable.json"
5938
+ ]
5939
+ },
5940
+ {
5941
+ "type": "null"
5942
+ }
5943
+ ]
5944
+ }
5945
+ }
5946
+ }
5947
+ }
5948
+ }
5949
+ }
5950
+ }
5951
+ }
5952
+ },
5953
+ "/app/{id}/deploy-mode": {
5954
+ "post": {
5955
+ "operationId": "app/set_deploy_mode",
5956
+ "summary": "Set the deploy mode",
5957
+ "tags": [
5958
+ "apps",
5959
+ "github"
5960
+ ],
5961
+ "description": "Choose how pushes deploy: 'push' = every push deploys directly; 'ci' = deploy once the commit's CI checks pass. Both are platform-managed (webhook) triggers.",
5962
+ "requestBody": {
5963
+ "required": true,
5964
+ "content": {
5965
+ "application/json": {
5966
+ "schema": {
5967
+ "type": "object",
5968
+ "required": [
5969
+ "mode"
5970
+ ],
5971
+ "properties": {
5972
+ "mode": {
5973
+ "anyOf": [
5974
+ {
5975
+ "type": "string",
5976
+ "enum": [
5977
+ "push"
5978
+ ]
5979
+ },
5980
+ {
5981
+ "type": "string",
5982
+ "enum": [
5983
+ "ci"
5984
+ ]
5985
+ },
5986
+ {
5987
+ "type": "string",
5988
+ "enum": [
5989
+ "workflow"
5990
+ ]
5991
+ }
5992
+ ]
5993
+ }
5994
+ },
5995
+ "additionalProperties": false
5996
+ }
5997
+ }
5998
+ }
5999
+ },
6000
+ "parameters": [
6001
+ {
6002
+ "schema": {
6003
+ "type": "string"
6004
+ },
6005
+ "in": "path",
6006
+ "name": "id",
6007
+ "required": true
6008
+ }
6009
+ ],
6010
+ "security": [
6011
+ {
6012
+ "faable_user": []
6013
+ },
6014
+ {
6015
+ "faable_cli": []
6016
+ },
6017
+ {
6018
+ "faable_m2m": []
6019
+ },
6020
+ {
6021
+ "faable_machine": []
6022
+ },
6023
+ {
6024
+ "apikey_basic": []
6025
+ },
6026
+ {
6027
+ "apikey": []
6028
+ }
6029
+ ],
6030
+ "responses": {
6031
+ "200": {
6032
+ "description": "App",
6033
+ "content": {
6034
+ "application/json": {
6035
+ "schema": {
6036
+ "$ref": "#/components/schemas/App"
6037
+ }
6038
+ }
6039
+ }
6040
+ }
6041
+ }
6042
+ }
6043
+ },
6044
+ "/app/{id}/deploy": {
6045
+ "post": {
6046
+ "operationId": "app/deploy_now",
6047
+ "summary": "Deploy the latest commit now",
6048
+ "tags": [
6049
+ "apps",
6050
+ "deployments"
6051
+ ],
6052
+ "description": "Build and deploy the current head of the deploy branch, without waiting for a push. Same path as a push webhook, including the same-commit dedupe.",
6053
+ "parameters": [
6054
+ {
6055
+ "schema": {
6056
+ "type": "string"
6057
+ },
6058
+ "in": "path",
6059
+ "name": "id",
6060
+ "required": true
6061
+ }
6062
+ ],
6063
+ "security": [
6064
+ {
6065
+ "faable_user": []
6066
+ },
6067
+ {
6068
+ "faable_cli": []
6069
+ },
6070
+ {
6071
+ "faable_m2m": []
6072
+ },
6073
+ {
6074
+ "faable_machine": []
6075
+ },
6076
+ {
6077
+ "apikey_basic": []
6078
+ },
6079
+ {
6080
+ "apikey": []
6081
+ }
6082
+ ],
6083
+ "responses": {
6084
+ "200": {
6085
+ "description": "Default Response",
6086
+ "content": {
6087
+ "application/json": {
6088
+ "schema": {
6089
+ "type": "object",
6090
+ "required": [
6091
+ "status",
6092
+ "commit",
6093
+ "branch"
6094
+ ],
6095
+ "properties": {
6096
+ "status": {
6097
+ "type": "string",
6098
+ "enum": [
6099
+ "created"
6100
+ ]
6101
+ },
6102
+ "commit": {
6103
+ "type": "string"
6104
+ },
6105
+ "branch": {
6106
+ "type": "string"
6107
+ }
6108
+ }
6109
+ }
6110
+ }
6111
+ }
6112
+ }
6113
+ }
6114
+ }
6115
+ },
6116
+ "/deployment": {
6117
+ "get": {
6118
+ "operationId": "deployment/list",
6119
+ "summary": "List Deployments",
6120
+ "tags": [
6121
+ "deployments"
6122
+ ],
6123
+ "description": "List Deployments",
6124
+ "parameters": [
6125
+ {
6126
+ "schema": {
6127
+ "type": "number",
6128
+ "minimum": 1,
6129
+ "maximum": 200
6130
+ },
6131
+ "in": "query",
6132
+ "name": "pageSize",
6133
+ "required": false,
6134
+ "description": "Number of items per page (max 200)"
6135
+ },
6136
+ {
6137
+ "schema": {
6138
+ "type": "string"
6139
+ },
6140
+ "in": "query",
6141
+ "name": "cursor",
6142
+ "required": false,
6143
+ "description": "Cursor for next page"
6144
+ },
6145
+ {
6146
+ "schema": {
6147
+ "type": "string"
6148
+ },
6149
+ "in": "query",
6150
+ "name": "next",
6151
+ "required": false,
6152
+ "description": "Cursor returned by the previous page"
6153
+ },
6154
+ {
6155
+ "schema": {
6156
+ "type": "string"
6157
+ },
6158
+ "in": "query",
6159
+ "name": "query",
6160
+ "required": false,
6161
+ "description": "Filter using a FaableQL query"
6162
+ }
6163
+ ],
6164
+ "security": [
6165
+ {
6166
+ "faable_user": []
6167
+ },
6168
+ {
6169
+ "faable_cli": []
6170
+ },
6171
+ {
6172
+ "faable_m2m": []
6173
+ },
6174
+ {
6175
+ "faable_machine": []
6176
+ },
6177
+ {
6178
+ "apikey_basic": []
6179
+ },
6180
+ {
6181
+ "apikey": []
6182
+ }
6183
+ ],
6184
+ "responses": {
6185
+ "200": {
6186
+ "description": "Default Response",
6187
+ "content": {
6188
+ "application/json": {
6189
+ "schema": {
6190
+ "type": "object",
6191
+ "required": [
6192
+ "next",
6193
+ "results"
6194
+ ],
6195
+ "properties": {
6196
+ "next": {
6197
+ "anyOf": [
6198
+ {
6199
+ "type": "string"
6200
+ },
6201
+ {
6202
+ "type": "null"
6203
+ }
6204
+ ]
6205
+ },
6206
+ "results": {
6207
+ "type": "array",
6208
+ "items": {
6209
+ "$ref": "#/components/schemas/Deployment"
6210
+ }
6211
+ }
6212
+ },
6213
+ "additionalProperties": false
6214
+ }
6215
+ }
6216
+ }
6217
+ }
6218
+ }
6219
+ },
6220
+ "post": {
6221
+ "operationId": "deployment/create",
6222
+ "summary": "Create Deployment",
6223
+ "tags": [
6224
+ "deployments"
6225
+ ],
6226
+ "description": "Create Deployment",
6227
+ "requestBody": {
6228
+ "required": true,
6229
+ "content": {
6230
+ "application/json": {
6231
+ "schema": {
6232
+ "type": "object",
6233
+ "required": [
6234
+ "app_id"
6235
+ ],
6236
+ "properties": {
6237
+ "app_id": {
6238
+ "type": "string"
6239
+ },
6240
+ "image": {
6241
+ "type": "string"
6242
+ },
6243
+ "release": {
6244
+ "type": "string",
6245
+ "maxLength": 128
6246
+ },
6247
+ "github_commit": {
6248
+ "type": "string"
6249
+ },
6250
+ "github_ref": {
6251
+ "type": "string"
6252
+ },
6253
+ "github_actor": {
6254
+ "type": "string"
6255
+ },
6256
+ "github_commit_message": {
6257
+ "type": "string"
6258
+ },
6259
+ "type": {
6260
+ "type": "string"
6261
+ },
6262
+ "source": {
6263
+ "$ref": "#/components/schemas/DeploymentSource"
6264
+ }
6265
+ }
6266
+ }
6267
+ }
6268
+ }
6269
+ },
6270
+ "security": [
6271
+ {
6272
+ "faable_user": []
6273
+ },
6274
+ {
6275
+ "faable_cli": []
6276
+ },
6277
+ {
6278
+ "faable_m2m": []
6279
+ },
6280
+ {
6281
+ "faable_machine": []
6282
+ },
6283
+ {
6284
+ "apikey_basic": []
6285
+ },
6286
+ {
6287
+ "apikey": []
6288
+ }
6289
+ ],
6290
+ "responses": {
6291
+ "201": {
6292
+ "description": "Deployment",
6293
+ "content": {
6294
+ "application/json": {
6295
+ "schema": {
6296
+ "type": "object",
6297
+ "required": [
6298
+ "id",
6299
+ "team",
6300
+ "app_id",
6301
+ "status",
6302
+ "metadata",
6303
+ "createdAt"
6304
+ ],
6305
+ "properties": {
6306
+ "id": {
6307
+ "type": "string",
6308
+ "description": "Deployment ID"
6309
+ },
6310
+ "team": {
5461
6311
  "type": "string"
5462
6312
  },
5463
6313
  "app_id": {
@@ -5491,6 +6341,10 @@
5491
6341
  "redeploy_of": {
5492
6342
  "type": "string"
5493
6343
  },
6344
+ "quota_released_at": {
6345
+ "type": "string",
6346
+ "format": "date-time"
6347
+ },
5494
6348
  "trigger": {
5495
6349
  "anyOf": [
5496
6350
  {
@@ -5548,10 +6402,22 @@
5548
6402
  ],
5549
6403
  "security": [
5550
6404
  {
5551
- "faable_user": [],
5552
- "faable_cli": [],
5553
- "apikey": [],
6405
+ "faable_user": []
6406
+ },
6407
+ {
6408
+ "faable_cli": []
6409
+ },
6410
+ {
6411
+ "faable_m2m": []
6412
+ },
6413
+ {
5554
6414
  "faable_machine": []
6415
+ },
6416
+ {
6417
+ "apikey_basic": []
6418
+ },
6419
+ {
6420
+ "apikey": []
5555
6421
  }
5556
6422
  ],
5557
6423
  "responses": {
@@ -5608,6 +6474,10 @@
5608
6474
  "redeploy_of": {
5609
6475
  "type": "string"
5610
6476
  },
6477
+ "quota_released_at": {
6478
+ "type": "string",
6479
+ "format": "date-time"
6480
+ },
5611
6481
  "trigger": {
5612
6482
  "anyOf": [
5613
6483
  {
@@ -5684,10 +6554,22 @@
5684
6554
  ],
5685
6555
  "security": [
5686
6556
  {
5687
- "faable_user": [],
5688
- "faable_cli": [],
5689
- "apikey": [],
6557
+ "faable_user": []
6558
+ },
6559
+ {
6560
+ "faable_cli": []
6561
+ },
6562
+ {
6563
+ "faable_m2m": []
6564
+ },
6565
+ {
5690
6566
  "faable_machine": []
6567
+ },
6568
+ {
6569
+ "apikey_basic": []
6570
+ },
6571
+ {
6572
+ "apikey": []
5691
6573
  }
5692
6574
  ],
5693
6575
  "responses": {
@@ -5744,6 +6626,10 @@
5744
6626
  "redeploy_of": {
5745
6627
  "type": "string"
5746
6628
  },
6629
+ "quota_released_at": {
6630
+ "type": "string",
6631
+ "format": "date-time"
6632
+ },
5747
6633
  "trigger": {
5748
6634
  "anyOf": [
5749
6635
  {
@@ -5799,10 +6685,22 @@
5799
6685
  ],
5800
6686
  "security": [
5801
6687
  {
5802
- "faable_user": [],
5803
- "faable_cli": [],
5804
- "apikey": [],
6688
+ "faable_user": []
6689
+ },
6690
+ {
6691
+ "faable_cli": []
6692
+ },
6693
+ {
6694
+ "faable_m2m": []
6695
+ },
6696
+ {
5805
6697
  "faable_machine": []
6698
+ },
6699
+ {
6700
+ "apikey_basic": []
6701
+ },
6702
+ {
6703
+ "apikey": []
5806
6704
  }
5807
6705
  ],
5808
6706
  "responses": {
@@ -5859,6 +6757,10 @@
5859
6757
  "redeploy_of": {
5860
6758
  "type": "string"
5861
6759
  },
6760
+ "quota_released_at": {
6761
+ "type": "string",
6762
+ "format": "date-time"
6763
+ },
5862
6764
  "trigger": {
5863
6765
  "anyOf": [
5864
6766
  {
@@ -5916,10 +6818,22 @@
5916
6818
  ],
5917
6819
  "security": [
5918
6820
  {
5919
- "faable_user": [],
5920
- "faable_cli": [],
5921
- "apikey": [],
6821
+ "faable_user": []
6822
+ },
6823
+ {
6824
+ "faable_cli": []
6825
+ },
6826
+ {
6827
+ "faable_m2m": []
6828
+ },
6829
+ {
5922
6830
  "faable_machine": []
6831
+ },
6832
+ {
6833
+ "apikey_basic": []
6834
+ },
6835
+ {
6836
+ "apikey": []
5923
6837
  }
5924
6838
  ],
5925
6839
  "responses": {
@@ -6030,10 +6944,22 @@
6030
6944
  ],
6031
6945
  "security": [
6032
6946
  {
6033
- "faable_user": [],
6034
- "faable_cli": [],
6035
- "apikey": [],
6947
+ "faable_user": []
6948
+ },
6949
+ {
6950
+ "faable_cli": []
6951
+ },
6952
+ {
6953
+ "faable_m2m": []
6954
+ },
6955
+ {
6036
6956
  "faable_machine": []
6957
+ },
6958
+ {
6959
+ "apikey_basic": []
6960
+ },
6961
+ {
6962
+ "apikey": []
6037
6963
  }
6038
6964
  ],
6039
6965
  "responses": {
@@ -6107,10 +7033,22 @@
6107
7033
  },
6108
7034
  "security": [
6109
7035
  {
6110
- "faable_user": [],
6111
- "faable_cli": [],
6112
- "apikey": [],
7036
+ "faable_user": []
7037
+ },
7038
+ {
7039
+ "faable_cli": []
7040
+ },
7041
+ {
7042
+ "faable_m2m": []
7043
+ },
7044
+ {
6113
7045
  "faable_machine": []
7046
+ },
7047
+ {
7048
+ "apikey_basic": []
7049
+ },
7050
+ {
7051
+ "apikey": []
6114
7052
  }
6115
7053
  ],
6116
7054
  "responses": {
@@ -6213,10 +7151,22 @@
6213
7151
  ],
6214
7152
  "security": [
6215
7153
  {
6216
- "faable_user": [],
6217
- "faable_cli": [],
6218
- "apikey": [],
7154
+ "faable_user": []
7155
+ },
7156
+ {
7157
+ "faable_cli": []
7158
+ },
7159
+ {
7160
+ "faable_m2m": []
7161
+ },
7162
+ {
6219
7163
  "faable_machine": []
7164
+ },
7165
+ {
7166
+ "apikey_basic": []
7167
+ },
7168
+ {
7169
+ "apikey": []
6220
7170
  }
6221
7171
  ],
6222
7172
  "responses": {
@@ -6338,10 +7288,22 @@
6338
7288
  ],
6339
7289
  "security": [
6340
7290
  {
6341
- "faable_user": [],
6342
- "faable_cli": [],
6343
- "apikey": [],
7291
+ "faable_user": []
7292
+ },
7293
+ {
7294
+ "faable_cli": []
7295
+ },
7296
+ {
7297
+ "faable_m2m": []
7298
+ },
7299
+ {
6344
7300
  "faable_machine": []
7301
+ },
7302
+ {
7303
+ "apikey_basic": []
7304
+ },
7305
+ {
7306
+ "apikey": []
6345
7307
  }
6346
7308
  ],
6347
7309
  "responses": {
@@ -6442,10 +7404,22 @@
6442
7404
  ],
6443
7405
  "security": [
6444
7406
  {
6445
- "faable_user": [],
6446
- "faable_cli": [],
6447
- "apikey": [],
7407
+ "faable_user": []
7408
+ },
7409
+ {
7410
+ "faable_cli": []
7411
+ },
7412
+ {
7413
+ "faable_m2m": []
7414
+ },
7415
+ {
6448
7416
  "faable_machine": []
7417
+ },
7418
+ {
7419
+ "apikey_basic": []
7420
+ },
7421
+ {
7422
+ "apikey": []
6449
7423
  }
6450
7424
  ],
6451
7425
  "responses": {
@@ -6548,10 +7522,22 @@
6548
7522
  ],
6549
7523
  "security": [
6550
7524
  {
6551
- "faable_user": [],
6552
- "faable_cli": [],
6553
- "apikey": [],
7525
+ "faable_user": []
7526
+ },
7527
+ {
7528
+ "faable_cli": []
7529
+ },
7530
+ {
7531
+ "faable_m2m": []
7532
+ },
7533
+ {
6554
7534
  "faable_machine": []
7535
+ },
7536
+ {
7537
+ "apikey_basic": []
7538
+ },
7539
+ {
7540
+ "apikey": []
6555
7541
  }
6556
7542
  ],
6557
7543
  "responses": {
@@ -6588,10 +7574,22 @@
6588
7574
  },
6589
7575
  "security": [
6590
7576
  {
6591
- "faable_user": [],
6592
- "faable_cli": [],
6593
- "apikey": [],
7577
+ "faable_user": []
7578
+ },
7579
+ {
7580
+ "faable_cli": []
7581
+ },
7582
+ {
7583
+ "faable_m2m": []
7584
+ },
7585
+ {
6594
7586
  "faable_machine": []
7587
+ },
7588
+ {
7589
+ "apikey_basic": []
7590
+ },
7591
+ {
7592
+ "apikey": []
6595
7593
  }
6596
7594
  ],
6597
7595
  "responses": {
@@ -6655,10 +7653,22 @@
6655
7653
  ],
6656
7654
  "security": [
6657
7655
  {
6658
- "faable_user": [],
6659
- "faable_cli": [],
6660
- "apikey": [],
7656
+ "faable_user": []
7657
+ },
7658
+ {
7659
+ "faable_cli": []
7660
+ },
7661
+ {
7662
+ "faable_m2m": []
7663
+ },
7664
+ {
6661
7665
  "faable_machine": []
7666
+ },
7667
+ {
7668
+ "apikey_basic": []
7669
+ },
7670
+ {
7671
+ "apikey": []
6662
7672
  }
6663
7673
  ],
6664
7674
  "responses": {
@@ -6695,10 +7705,22 @@
6695
7705
  ],
6696
7706
  "security": [
6697
7707
  {
6698
- "faable_user": [],
6699
- "faable_cli": [],
6700
- "apikey": [],
7708
+ "faable_user": []
7709
+ },
7710
+ {
7711
+ "faable_cli": []
7712
+ },
7713
+ {
7714
+ "faable_m2m": []
7715
+ },
7716
+ {
6701
7717
  "faable_machine": []
7718
+ },
7719
+ {
7720
+ "apikey_basic": []
7721
+ },
7722
+ {
7723
+ "apikey": []
6702
7724
  }
6703
7725
  ],
6704
7726
  "responses": {
@@ -6728,10 +7750,22 @@
6728
7750
  },
6729
7751
  "security": [
6730
7752
  {
6731
- "faable_user": [],
6732
- "faable_cli": [],
6733
- "apikey": [],
7753
+ "faable_user": []
7754
+ },
7755
+ {
7756
+ "faable_cli": []
7757
+ },
7758
+ {
7759
+ "faable_m2m": []
7760
+ },
7761
+ {
6734
7762
  "faable_machine": []
7763
+ },
7764
+ {
7765
+ "apikey_basic": []
7766
+ },
7767
+ {
7768
+ "apikey": []
6735
7769
  }
6736
7770
  ],
6737
7771
  "responses": {
@@ -6795,12 +7829,35 @@
6795
7829
  "tags": [
6796
7830
  "usage"
6797
7831
  ],
7832
+ "parameters": [
7833
+ {
7834
+ "schema": {
7835
+ "type": "boolean",
7836
+ "default": true
7837
+ },
7838
+ "in": "query",
7839
+ "name": "traffic",
7840
+ "required": false
7841
+ }
7842
+ ],
6798
7843
  "security": [
6799
7844
  {
6800
- "faable_user": [],
6801
- "faable_cli": [],
6802
- "apikey": [],
7845
+ "faable_user": []
7846
+ },
7847
+ {
7848
+ "faable_cli": []
7849
+ },
7850
+ {
7851
+ "faable_m2m": []
7852
+ },
7853
+ {
6803
7854
  "faable_machine": []
7855
+ },
7856
+ {
7857
+ "apikey_basic": []
7858
+ },
7859
+ {
7860
+ "apikey": []
6804
7861
  }
6805
7862
  ],
6806
7863
  "responses": {
@@ -6813,7 +7870,8 @@
6813
7870
  "required": [
6814
7871
  "resources",
6815
7872
  "traffic",
6816
- "teams"
7873
+ "teams",
7874
+ "billing_available"
6817
7875
  ],
6818
7876
  "properties": {
6819
7877
  "resources": {
@@ -6836,19 +7894,26 @@
6836
7894
  }
6837
7895
  },
6838
7896
  "traffic": {
6839
- "type": "object",
6840
- "required": [
6841
- "used_gb",
6842
- "cost_estimate_cents"
6843
- ],
6844
- "properties": {
6845
- "used_gb": {
6846
- "type": "number"
7897
+ "anyOf": [
7898
+ {
7899
+ "type": "object",
7900
+ "required": [
7901
+ "used_gb",
7902
+ "cost_estimate_cents"
7903
+ ],
7904
+ "properties": {
7905
+ "used_gb": {
7906
+ "type": "number"
7907
+ },
7908
+ "cost_estimate_cents": {
7909
+ "type": "integer"
7910
+ }
7911
+ }
6847
7912
  },
6848
- "cost_estimate_cents": {
6849
- "type": "integer"
7913
+ {
7914
+ "type": "null"
6850
7915
  }
6851
- }
7916
+ ]
6852
7917
  },
6853
7918
  "teams": {
6854
7919
  "type": "array",
@@ -6962,6 +8027,257 @@
6962
8027
  }
6963
8028
  }
6964
8029
  }
8030
+ },
8031
+ "billing_available": {
8032
+ "type": "boolean"
8033
+ }
8034
+ }
8035
+ }
8036
+ }
8037
+ }
8038
+ }
8039
+ }
8040
+ }
8041
+ },
8042
+ "/usage/traffic": {
8043
+ "get": {
8044
+ "operationId": "usage/traffic",
8045
+ "summary": "Get metered traffic usage per team for the current period",
8046
+ "tags": [
8047
+ "usage"
8048
+ ],
8049
+ "security": [
8050
+ {
8051
+ "faable_user": []
8052
+ },
8053
+ {
8054
+ "faable_cli": []
8055
+ },
8056
+ {
8057
+ "faable_m2m": []
8058
+ },
8059
+ {
8060
+ "faable_machine": []
8061
+ },
8062
+ {
8063
+ "apikey_basic": []
8064
+ },
8065
+ {
8066
+ "apikey": []
8067
+ }
8068
+ ],
8069
+ "responses": {
8070
+ "200": {
8071
+ "description": "Default Response",
8072
+ "content": {
8073
+ "application/json": {
8074
+ "schema": {
8075
+ "type": "object",
8076
+ "required": [
8077
+ "traffic",
8078
+ "teams",
8079
+ "billing_available"
8080
+ ],
8081
+ "properties": {
8082
+ "traffic": {
8083
+ "anyOf": [
8084
+ {
8085
+ "type": "object",
8086
+ "required": [
8087
+ "used_gb",
8088
+ "cost_estimate_cents"
8089
+ ],
8090
+ "properties": {
8091
+ "used_gb": {
8092
+ "type": "number"
8093
+ },
8094
+ "cost_estimate_cents": {
8095
+ "type": "integer"
8096
+ }
8097
+ }
8098
+ },
8099
+ {
8100
+ "type": "null"
8101
+ }
8102
+ ]
8103
+ },
8104
+ "teams": {
8105
+ "type": "array",
8106
+ "items": {
8107
+ "type": "object",
8108
+ "required": [
8109
+ "id",
8110
+ "traffic"
8111
+ ],
8112
+ "properties": {
8113
+ "id": {
8114
+ "type": "string"
8115
+ },
8116
+ "traffic": {
8117
+ "anyOf": [
8118
+ {
8119
+ "type": "object",
8120
+ "required": [
8121
+ "used_gb",
8122
+ "cost_estimate_cents"
8123
+ ],
8124
+ "properties": {
8125
+ "used_gb": {
8126
+ "type": "number"
8127
+ },
8128
+ "cost_estimate_cents": {
8129
+ "type": "integer"
8130
+ }
8131
+ }
8132
+ },
8133
+ {
8134
+ "type": "null"
8135
+ }
8136
+ ]
8137
+ }
8138
+ }
8139
+ }
8140
+ },
8141
+ "billing_available": {
8142
+ "type": "boolean"
8143
+ }
8144
+ }
8145
+ }
8146
+ }
8147
+ }
8148
+ }
8149
+ }
8150
+ }
8151
+ },
8152
+ "/deploy-quota": {
8153
+ "get": {
8154
+ "operationId": "deploy_quota/get",
8155
+ "summary": "Get the team's daily deploy quota status",
8156
+ "tags": [
8157
+ "deployments"
8158
+ ],
8159
+ "description": "Daily deploy allowance of the current team: how much was used today, when it resets, and how many builds are held waiting for it.",
8160
+ "security": [
8161
+ {
8162
+ "faable_user": []
8163
+ },
8164
+ {
8165
+ "faable_cli": []
8166
+ },
8167
+ {
8168
+ "faable_m2m": []
8169
+ },
8170
+ {
8171
+ "faable_machine": []
8172
+ },
8173
+ {
8174
+ "apikey_basic": []
8175
+ },
8176
+ {
8177
+ "apikey": []
8178
+ }
8179
+ ],
8180
+ "responses": {
8181
+ "200": {
8182
+ "description": "Default Response",
8183
+ "content": {
8184
+ "application/json": {
8185
+ "schema": {
8186
+ "type": "object",
8187
+ "required": [
8188
+ "limited",
8189
+ "over",
8190
+ "used",
8191
+ "limit",
8192
+ "resets_at",
8193
+ "held"
8194
+ ],
8195
+ "properties": {
8196
+ "limited": {
8197
+ "type": "boolean"
8198
+ },
8199
+ "over": {
8200
+ "type": "boolean"
8201
+ },
8202
+ "used": {
8203
+ "type": "integer"
8204
+ },
8205
+ "limit": {
8206
+ "anyOf": [
8207
+ {
8208
+ "type": "integer"
8209
+ },
8210
+ {
8211
+ "type": "null"
8212
+ }
8213
+ ]
8214
+ },
8215
+ "resets_at": {
8216
+ "type": "string",
8217
+ "format": "date-time"
8218
+ },
8219
+ "held": {
8220
+ "type": "integer"
8221
+ }
8222
+ }
8223
+ }
8224
+ }
8225
+ }
8226
+ }
8227
+ }
8228
+ }
8229
+ },
8230
+ "/deploy-quota/release": {
8231
+ "post": {
8232
+ "operationId": "deploy_quota/release",
8233
+ "summary": "Roll out the builds held by the daily deploy quota",
8234
+ "tags": [
8235
+ "deployments"
8236
+ ],
8237
+ "description": "Releases the team's held deployments if its current plan allows it (per app, only the newest held build rolls out; older ones are canceled). Safe to call at any time — it does nothing while the quota is still spent.",
8238
+ "security": [
8239
+ {
8240
+ "faable_user": []
8241
+ },
8242
+ {
8243
+ "faable_cli": []
8244
+ },
8245
+ {
8246
+ "faable_m2m": []
8247
+ },
8248
+ {
8249
+ "faable_machine": []
8250
+ },
8251
+ {
8252
+ "apikey_basic": []
8253
+ },
8254
+ {
8255
+ "apikey": []
8256
+ }
8257
+ ],
8258
+ "responses": {
8259
+ "200": {
8260
+ "description": "Default Response",
8261
+ "content": {
8262
+ "application/json": {
8263
+ "schema": {
8264
+ "type": "object",
8265
+ "required": [
8266
+ "released",
8267
+ "canceled"
8268
+ ],
8269
+ "properties": {
8270
+ "released": {
8271
+ "type": "array",
8272
+ "items": {
8273
+ "type": "string"
8274
+ }
8275
+ },
8276
+ "canceled": {
8277
+ "type": "array",
8278
+ "items": {
8279
+ "type": "string"
8280
+ }
6965
8281
  }
6966
8282
  }
6967
8283
  }