@greatwait/contracts 0.2.0 → 0.2.2

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 (46) hide show
  1. package/dist/billing.d.ts +339 -0
  2. package/dist/billing.js +131 -1
  3. package/dist/host-correlation.d.ts +4 -0
  4. package/dist/host-correlation.js +18 -0
  5. package/dist/identifiers.d.ts +2 -0
  6. package/dist/identifiers.js +3 -0
  7. package/dist/index.d.ts +2 -1
  8. package/dist/index.js +2 -1
  9. package/dist/operations.d.ts +514 -0
  10. package/dist/operations.js +93 -1
  11. package/dist/protocol.d.ts +2 -0
  12. package/dist/protocol.js +3 -0
  13. package/dist/scheduling-records.d.ts +4 -0
  14. package/dist/scheduling.d.ts +12 -0
  15. package/dist/scheduling.js +13 -0
  16. package/generated/v1/examples/billing.promotions.response.json +26 -0
  17. package/generated/v1/examples/billing.redeem.request.json +4 -0
  18. package/generated/v1/examples/billing.redeem.response.json +43 -0
  19. package/generated/v1/manifest.json +56 -0
  20. package/generated/v1/openapi.json +2749 -89
  21. package/generated/v1/policy-matrix.json +14 -0
  22. package/generated/v1/schemas/billing.change.response.json +64 -0
  23. package/generated/v1/schemas/billing.projects.response.json +64 -0
  24. package/generated/v1/schemas/billing.promotions.response.json +188 -0
  25. package/generated/v1/schemas/billing.quote.response.json +51 -0
  26. package/generated/v1/schemas/billing.reconcile.response.json +324 -0
  27. package/generated/v1/schemas/billing.redeem.request-headers.json +13 -0
  28. package/generated/v1/schemas/billing.redeem.request.json +22 -0
  29. package/generated/v1/schemas/billing.redeem.response-headers.json +10 -0
  30. package/generated/v1/schemas/billing.redeem.response.json +326 -0
  31. package/generated/v1/schemas/billing.summary.response.json +324 -0
  32. package/generated/v1/schemas/executions.list.query.json +12 -0
  33. package/generated/v1/schemas/schedules.archive.response.json +17 -0
  34. package/generated/v1/schemas/schedules.cancel.response.json +17 -0
  35. package/generated/v1/schemas/schedules.create.request.json +17 -0
  36. package/generated/v1/schemas/schedules.create.response.json +17 -0
  37. package/generated/v1/schemas/schedules.list.query.json +12 -0
  38. package/generated/v1/schemas/schedules.list.response.json +17 -0
  39. package/generated/v1/schemas/schedules.pause.response.json +17 -0
  40. package/generated/v1/schemas/schedules.read.response.json +17 -0
  41. package/generated/v1/schemas/schedules.replace.request.json +17 -0
  42. package/generated/v1/schemas/schedules.replace.response.json +17 -0
  43. package/generated/v1/schemas/schedules.resume.response.json +17 -0
  44. package/generated/v1/snippets/billing.promotions.json +6 -0
  45. package/generated/v1/snippets/billing.redeem.json +6 -0
  46. package/package.json +1 -1
@@ -30477,6 +30477,23 @@
30477
30477
  "minLength": 1,
30478
30478
  "maxLength": 120
30479
30479
  },
30480
+ "external_identifier": {
30481
+ "type": "string",
30482
+ "minLength": 1,
30483
+ "maxLength": 256,
30484
+ "description": "Host application identifier, matched exactly and case-sensitively; at most 256 UTF-8 bytes. Readable by schedule readers; do not include secrets."
30485
+ },
30486
+ "tags": {
30487
+ "maxItems": 16,
30488
+ "type": "array",
30489
+ "items": {
30490
+ "type": "string",
30491
+ "minLength": 1,
30492
+ "maxLength": 64,
30493
+ "description": "An exact, case-sensitive tag of at most 64 UTF-8 bytes."
30494
+ },
30495
+ "description": "Up to 16 distinct searchable tags. Omission preserves tags on replacement; [] clears them."
30496
+ },
30480
30497
  "partitionKey": {
30481
30498
  "type": "string",
30482
30499
  "minLength": 1,
@@ -31342,6 +31359,23 @@
31342
31359
  "minLength": 1,
31343
31360
  "maxLength": 120
31344
31361
  },
31362
+ "external_identifier": {
31363
+ "type": "string",
31364
+ "minLength": 1,
31365
+ "maxLength": 256,
31366
+ "description": "Host application identifier, matched exactly and case-sensitively; at most 256 UTF-8 bytes. Readable by schedule readers; do not include secrets."
31367
+ },
31368
+ "tags": {
31369
+ "maxItems": 16,
31370
+ "type": "array",
31371
+ "items": {
31372
+ "type": "string",
31373
+ "minLength": 1,
31374
+ "maxLength": 64,
31375
+ "description": "An exact, case-sensitive tag of at most 64 UTF-8 bytes."
31376
+ },
31377
+ "description": "Up to 16 distinct searchable tags. Omission preserves tags on replacement; [] clears them."
31378
+ },
31345
31379
  "timeZone": {
31346
31380
  "type": "string",
31347
31381
  "minLength": 1
@@ -31449,6 +31483,17 @@
31449
31483
  "pattern": "^ep_[0-9abcdefghjkmnpqrstvwxyz]{26}$"
31450
31484
  }
31451
31485
  },
31486
+ {
31487
+ "in": "query",
31488
+ "name": "external_identifier",
31489
+ "required": false,
31490
+ "schema": {
31491
+ "type": "string",
31492
+ "minLength": 1,
31493
+ "maxLength": 256,
31494
+ "description": "Host application identifier, matched exactly and case-sensitively; at most 256 UTF-8 bytes. Readable by schedule readers; do not include secrets."
31495
+ }
31496
+ },
31452
31497
  {
31453
31498
  "in": "query",
31454
31499
  "name": "limit",
@@ -31469,6 +31514,17 @@
31469
31514
  "type": "string",
31470
31515
  "enum": ["created", "due"]
31471
31516
  }
31517
+ },
31518
+ {
31519
+ "in": "query",
31520
+ "name": "tag",
31521
+ "required": false,
31522
+ "schema": {
31523
+ "type": "string",
31524
+ "minLength": 1,
31525
+ "maxLength": 64,
31526
+ "description": "An exact, case-sensitive tag of at most 64 UTF-8 bytes."
31527
+ }
31472
31528
  }
31473
31529
  ],
31474
31530
  "responses": {
@@ -31749,6 +31805,23 @@
31749
31805
  "minLength": 1,
31750
31806
  "maxLength": 120
31751
31807
  },
31808
+ "external_identifier": {
31809
+ "type": "string",
31810
+ "minLength": 1,
31811
+ "maxLength": 256,
31812
+ "description": "Host application identifier, matched exactly and case-sensitively; at most 256 UTF-8 bytes. Readable by schedule readers; do not include secrets."
31813
+ },
31814
+ "tags": {
31815
+ "maxItems": 16,
31816
+ "type": "array",
31817
+ "items": {
31818
+ "type": "string",
31819
+ "minLength": 1,
31820
+ "maxLength": 64,
31821
+ "description": "An exact, case-sensitive tag of at most 64 UTF-8 bytes."
31822
+ },
31823
+ "description": "Up to 16 distinct searchable tags. Omission preserves tags on replacement; [] clears them."
31824
+ },
31752
31825
  "partitionKey": {
31753
31826
  "type": "string",
31754
31827
  "minLength": 1,
@@ -32708,6 +32781,23 @@
32708
32781
  "minLength": 1,
32709
32782
  "maxLength": 120
32710
32783
  },
32784
+ "external_identifier": {
32785
+ "type": "string",
32786
+ "minLength": 1,
32787
+ "maxLength": 256,
32788
+ "description": "Host application identifier, matched exactly and case-sensitively; at most 256 UTF-8 bytes. Readable by schedule readers; do not include secrets."
32789
+ },
32790
+ "tags": {
32791
+ "maxItems": 16,
32792
+ "type": "array",
32793
+ "items": {
32794
+ "type": "string",
32795
+ "minLength": 1,
32796
+ "maxLength": 64,
32797
+ "description": "An exact, case-sensitive tag of at most 64 UTF-8 bytes."
32798
+ },
32799
+ "description": "Up to 16 distinct searchable tags. Omission preserves tags on replacement; [] clears them."
32800
+ },
32711
32801
  "partitionKey": {
32712
32802
  "type": "string",
32713
32803
  "minLength": 1,
@@ -33698,6 +33788,23 @@
33698
33788
  "minLength": 1,
33699
33789
  "maxLength": 120
33700
33790
  },
33791
+ "external_identifier": {
33792
+ "type": "string",
33793
+ "minLength": 1,
33794
+ "maxLength": 256,
33795
+ "description": "Host application identifier, matched exactly and case-sensitively; at most 256 UTF-8 bytes. Readable by schedule readers; do not include secrets."
33796
+ },
33797
+ "tags": {
33798
+ "maxItems": 16,
33799
+ "type": "array",
33800
+ "items": {
33801
+ "type": "string",
33802
+ "minLength": 1,
33803
+ "maxLength": 64,
33804
+ "description": "An exact, case-sensitive tag of at most 64 UTF-8 bytes."
33805
+ },
33806
+ "description": "Up to 16 distinct searchable tags. Omission preserves tags on replacement; [] clears them."
33807
+ },
33701
33808
  "partitionKey": {
33702
33809
  "type": "string",
33703
33810
  "minLength": 1,
@@ -34555,6 +34662,23 @@
34555
34662
  "minLength": 1,
34556
34663
  "maxLength": 120
34557
34664
  },
34665
+ "external_identifier": {
34666
+ "type": "string",
34667
+ "minLength": 1,
34668
+ "maxLength": 256,
34669
+ "description": "Host application identifier, matched exactly and case-sensitively; at most 256 UTF-8 bytes. Readable by schedule readers; do not include secrets."
34670
+ },
34671
+ "tags": {
34672
+ "maxItems": 16,
34673
+ "type": "array",
34674
+ "items": {
34675
+ "type": "string",
34676
+ "minLength": 1,
34677
+ "maxLength": 64,
34678
+ "description": "An exact, case-sensitive tag of at most 64 UTF-8 bytes."
34679
+ },
34680
+ "description": "Up to 16 distinct searchable tags. Omission preserves tags on replacement; [] clears them."
34681
+ },
34558
34682
  "timeZone": {
34559
34683
  "type": "string",
34560
34684
  "minLength": 1
@@ -35012,6 +35136,23 @@
35012
35136
  "minLength": 1,
35013
35137
  "maxLength": 120
35014
35138
  },
35139
+ "external_identifier": {
35140
+ "type": "string",
35141
+ "minLength": 1,
35142
+ "maxLength": 256,
35143
+ "description": "Host application identifier, matched exactly and case-sensitively; at most 256 UTF-8 bytes. Readable by schedule readers; do not include secrets."
35144
+ },
35145
+ "tags": {
35146
+ "maxItems": 16,
35147
+ "type": "array",
35148
+ "items": {
35149
+ "type": "string",
35150
+ "minLength": 1,
35151
+ "maxLength": 64,
35152
+ "description": "An exact, case-sensitive tag of at most 64 UTF-8 bytes."
35153
+ },
35154
+ "description": "Up to 16 distinct searchable tags. Omission preserves tags on replacement; [] clears them."
35155
+ },
35015
35156
  "partitionKey": {
35016
35157
  "type": "string",
35017
35158
  "minLength": 1,
@@ -36625,6 +36766,390 @@
36625
36766
  }
36626
36767
  },
36627
36768
  "required": ["currency", "microdollars", "scale"]
36769
+ },
36770
+ "byKind": {
36771
+ "type": "object",
36772
+ "properties": {
36773
+ "purchased": {
36774
+ "type": "object",
36775
+ "properties": {
36776
+ "available": {
36777
+ "type": "object",
36778
+ "properties": {
36779
+ "currency": {
36780
+ "type": "string",
36781
+ "const": "USD"
36782
+ },
36783
+ "microdollars": {
36784
+ "type": "string",
36785
+ "pattern": "^(?:0|[1-9]\\d*)$"
36786
+ },
36787
+ "scale": {
36788
+ "type": "number",
36789
+ "const": 6
36790
+ }
36791
+ },
36792
+ "required": [
36793
+ "currency",
36794
+ "microdollars",
36795
+ "scale"
36796
+ ]
36797
+ },
36798
+ "reserved": {
36799
+ "type": "object",
36800
+ "properties": {
36801
+ "currency": {
36802
+ "type": "string",
36803
+ "const": "USD"
36804
+ },
36805
+ "microdollars": {
36806
+ "type": "string",
36807
+ "pattern": "^(?:0|[1-9]\\d*)$"
36808
+ },
36809
+ "scale": {
36810
+ "type": "number",
36811
+ "const": 6
36812
+ }
36813
+ },
36814
+ "required": [
36815
+ "currency",
36816
+ "microdollars",
36817
+ "scale"
36818
+ ]
36819
+ },
36820
+ "consumed": {
36821
+ "type": "object",
36822
+ "properties": {
36823
+ "currency": {
36824
+ "type": "string",
36825
+ "const": "USD"
36826
+ },
36827
+ "microdollars": {
36828
+ "type": "string",
36829
+ "pattern": "^(?:0|[1-9]\\d*)$"
36830
+ },
36831
+ "scale": {
36832
+ "type": "number",
36833
+ "const": 6
36834
+ }
36835
+ },
36836
+ "required": [
36837
+ "currency",
36838
+ "microdollars",
36839
+ "scale"
36840
+ ]
36841
+ },
36842
+ "forfeited": {
36843
+ "type": "object",
36844
+ "properties": {
36845
+ "currency": {
36846
+ "type": "string",
36847
+ "const": "USD"
36848
+ },
36849
+ "microdollars": {
36850
+ "type": "string",
36851
+ "pattern": "^(?:0|[1-9]\\d*)$"
36852
+ },
36853
+ "scale": {
36854
+ "type": "number",
36855
+ "const": 6
36856
+ }
36857
+ },
36858
+ "required": [
36859
+ "currency",
36860
+ "microdollars",
36861
+ "scale"
36862
+ ]
36863
+ },
36864
+ "granted": {
36865
+ "type": "object",
36866
+ "properties": {
36867
+ "currency": {
36868
+ "type": "string",
36869
+ "const": "USD"
36870
+ },
36871
+ "microdollars": {
36872
+ "type": "string",
36873
+ "pattern": "^(?:0|[1-9]\\d*)$"
36874
+ },
36875
+ "scale": {
36876
+ "type": "number",
36877
+ "const": 6
36878
+ }
36879
+ },
36880
+ "required": [
36881
+ "currency",
36882
+ "microdollars",
36883
+ "scale"
36884
+ ]
36885
+ },
36886
+ "expiresAt": {
36887
+ "type": "string",
36888
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
36889
+ }
36890
+ },
36891
+ "required": [
36892
+ "available",
36893
+ "reserved",
36894
+ "consumed",
36895
+ "forfeited",
36896
+ "granted"
36897
+ ]
36898
+ },
36899
+ "trial": {
36900
+ "type": "object",
36901
+ "properties": {
36902
+ "available": {
36903
+ "type": "object",
36904
+ "properties": {
36905
+ "currency": {
36906
+ "type": "string",
36907
+ "const": "USD"
36908
+ },
36909
+ "microdollars": {
36910
+ "type": "string",
36911
+ "pattern": "^(?:0|[1-9]\\d*)$"
36912
+ },
36913
+ "scale": {
36914
+ "type": "number",
36915
+ "const": 6
36916
+ }
36917
+ },
36918
+ "required": [
36919
+ "currency",
36920
+ "microdollars",
36921
+ "scale"
36922
+ ]
36923
+ },
36924
+ "reserved": {
36925
+ "type": "object",
36926
+ "properties": {
36927
+ "currency": {
36928
+ "type": "string",
36929
+ "const": "USD"
36930
+ },
36931
+ "microdollars": {
36932
+ "type": "string",
36933
+ "pattern": "^(?:0|[1-9]\\d*)$"
36934
+ },
36935
+ "scale": {
36936
+ "type": "number",
36937
+ "const": 6
36938
+ }
36939
+ },
36940
+ "required": [
36941
+ "currency",
36942
+ "microdollars",
36943
+ "scale"
36944
+ ]
36945
+ },
36946
+ "consumed": {
36947
+ "type": "object",
36948
+ "properties": {
36949
+ "currency": {
36950
+ "type": "string",
36951
+ "const": "USD"
36952
+ },
36953
+ "microdollars": {
36954
+ "type": "string",
36955
+ "pattern": "^(?:0|[1-9]\\d*)$"
36956
+ },
36957
+ "scale": {
36958
+ "type": "number",
36959
+ "const": 6
36960
+ }
36961
+ },
36962
+ "required": [
36963
+ "currency",
36964
+ "microdollars",
36965
+ "scale"
36966
+ ]
36967
+ },
36968
+ "forfeited": {
36969
+ "type": "object",
36970
+ "properties": {
36971
+ "currency": {
36972
+ "type": "string",
36973
+ "const": "USD"
36974
+ },
36975
+ "microdollars": {
36976
+ "type": "string",
36977
+ "pattern": "^(?:0|[1-9]\\d*)$"
36978
+ },
36979
+ "scale": {
36980
+ "type": "number",
36981
+ "const": 6
36982
+ }
36983
+ },
36984
+ "required": [
36985
+ "currency",
36986
+ "microdollars",
36987
+ "scale"
36988
+ ]
36989
+ },
36990
+ "granted": {
36991
+ "type": "object",
36992
+ "properties": {
36993
+ "currency": {
36994
+ "type": "string",
36995
+ "const": "USD"
36996
+ },
36997
+ "microdollars": {
36998
+ "type": "string",
36999
+ "pattern": "^(?:0|[1-9]\\d*)$"
37000
+ },
37001
+ "scale": {
37002
+ "type": "number",
37003
+ "const": 6
37004
+ }
37005
+ },
37006
+ "required": [
37007
+ "currency",
37008
+ "microdollars",
37009
+ "scale"
37010
+ ]
37011
+ },
37012
+ "expiresAt": {
37013
+ "type": "string",
37014
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
37015
+ }
37016
+ },
37017
+ "required": [
37018
+ "available",
37019
+ "reserved",
37020
+ "consumed",
37021
+ "forfeited",
37022
+ "granted"
37023
+ ]
37024
+ },
37025
+ "promotional": {
37026
+ "type": "object",
37027
+ "properties": {
37028
+ "available": {
37029
+ "type": "object",
37030
+ "properties": {
37031
+ "currency": {
37032
+ "type": "string",
37033
+ "const": "USD"
37034
+ },
37035
+ "microdollars": {
37036
+ "type": "string",
37037
+ "pattern": "^(?:0|[1-9]\\d*)$"
37038
+ },
37039
+ "scale": {
37040
+ "type": "number",
37041
+ "const": 6
37042
+ }
37043
+ },
37044
+ "required": [
37045
+ "currency",
37046
+ "microdollars",
37047
+ "scale"
37048
+ ]
37049
+ },
37050
+ "reserved": {
37051
+ "type": "object",
37052
+ "properties": {
37053
+ "currency": {
37054
+ "type": "string",
37055
+ "const": "USD"
37056
+ },
37057
+ "microdollars": {
37058
+ "type": "string",
37059
+ "pattern": "^(?:0|[1-9]\\d*)$"
37060
+ },
37061
+ "scale": {
37062
+ "type": "number",
37063
+ "const": 6
37064
+ }
37065
+ },
37066
+ "required": [
37067
+ "currency",
37068
+ "microdollars",
37069
+ "scale"
37070
+ ]
37071
+ },
37072
+ "consumed": {
37073
+ "type": "object",
37074
+ "properties": {
37075
+ "currency": {
37076
+ "type": "string",
37077
+ "const": "USD"
37078
+ },
37079
+ "microdollars": {
37080
+ "type": "string",
37081
+ "pattern": "^(?:0|[1-9]\\d*)$"
37082
+ },
37083
+ "scale": {
37084
+ "type": "number",
37085
+ "const": 6
37086
+ }
37087
+ },
37088
+ "required": [
37089
+ "currency",
37090
+ "microdollars",
37091
+ "scale"
37092
+ ]
37093
+ },
37094
+ "forfeited": {
37095
+ "type": "object",
37096
+ "properties": {
37097
+ "currency": {
37098
+ "type": "string",
37099
+ "const": "USD"
37100
+ },
37101
+ "microdollars": {
37102
+ "type": "string",
37103
+ "pattern": "^(?:0|[1-9]\\d*)$"
37104
+ },
37105
+ "scale": {
37106
+ "type": "number",
37107
+ "const": 6
37108
+ }
37109
+ },
37110
+ "required": [
37111
+ "currency",
37112
+ "microdollars",
37113
+ "scale"
37114
+ ]
37115
+ },
37116
+ "granted": {
37117
+ "type": "object",
37118
+ "properties": {
37119
+ "currency": {
37120
+ "type": "string",
37121
+ "const": "USD"
37122
+ },
37123
+ "microdollars": {
37124
+ "type": "string",
37125
+ "pattern": "^(?:0|[1-9]\\d*)$"
37126
+ },
37127
+ "scale": {
37128
+ "type": "number",
37129
+ "const": 6
37130
+ }
37131
+ },
37132
+ "required": [
37133
+ "currency",
37134
+ "microdollars",
37135
+ "scale"
37136
+ ]
37137
+ },
37138
+ "expiresAt": {
37139
+ "type": "string",
37140
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
37141
+ }
37142
+ },
37143
+ "required": [
37144
+ "available",
37145
+ "reserved",
37146
+ "consumed",
37147
+ "forfeited",
37148
+ "granted"
37149
+ ]
37150
+ }
37151
+ },
37152
+ "required": ["purchased", "trial", "promotional"]
36628
37153
  }
36629
37154
  },
36630
37155
  "required": ["available", "consumed", "reserved"]
@@ -37258,6 +37783,1505 @@
37258
37783
  ]
37259
37784
  }
37260
37785
  },
37786
+ "/v1/billing/promotions": {
37787
+ "get": {
37788
+ "description": "Lists the verified organization's launch promotions: each promotional credit grant, complimentary project slot, perk and project-subscription discount, whether it came from an operator or a redeemed code, and when it ends or was revoked. Also reports effective project capacity by source and any restriction that applies. Promotional credit balances by kind are on billing.summary. Promotional value has no cash value, is never refunded and cannot move to another organization or product.",
37789
+ "operationId": "billing.promotions",
37790
+ "parameters": [],
37791
+ "responses": {
37792
+ "200": {
37793
+ "content": {
37794
+ "application/json": {
37795
+ "example": {
37796
+ "grants": [
37797
+ {
37798
+ "id": "grn_01hzy3v8k2m9q4r6t7w8x9y0za",
37799
+ "source": "code",
37800
+ "benefit": {
37801
+ "kind": "credit",
37802
+ "amount": {
37803
+ "currency": "USD",
37804
+ "microdollars": "10000000",
37805
+ "scale": 6
37806
+ }
37807
+ },
37808
+ "state": "active",
37809
+ "startsAt": "2026-09-09T12:00:00.000Z",
37810
+ "endsAt": "2026-12-08T12:00:00.000Z"
37811
+ }
37812
+ ],
37813
+ "projectCapacity": {
37814
+ "included": 1,
37815
+ "paid": 0,
37816
+ "complimentary": 0
37817
+ },
37818
+ "perks": [],
37819
+ "restrictions": []
37820
+ },
37821
+ "schema": {
37822
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
37823
+ "type": "object",
37824
+ "properties": {
37825
+ "grants": {
37826
+ "type": "array",
37827
+ "items": {
37828
+ "type": "object",
37829
+ "properties": {
37830
+ "id": {
37831
+ "type": "string",
37832
+ "pattern": "^grn_[0-9abcdefghjkmnpqrstvwxyz]{26}$"
37833
+ },
37834
+ "source": {
37835
+ "type": "string",
37836
+ "enum": ["operator", "code"]
37837
+ },
37838
+ "benefit": {
37839
+ "oneOf": [
37840
+ {
37841
+ "type": "object",
37842
+ "properties": {
37843
+ "kind": {
37844
+ "type": "string",
37845
+ "const": "credit"
37846
+ },
37847
+ "amount": {
37848
+ "type": "object",
37849
+ "properties": {
37850
+ "currency": {
37851
+ "type": "string",
37852
+ "const": "USD"
37853
+ },
37854
+ "microdollars": {
37855
+ "type": "string",
37856
+ "pattern": "^(?:0|[1-9]\\d*)$"
37857
+ },
37858
+ "scale": {
37859
+ "type": "number",
37860
+ "const": 6
37861
+ }
37862
+ },
37863
+ "required": [
37864
+ "currency",
37865
+ "microdollars",
37866
+ "scale"
37867
+ ]
37868
+ }
37869
+ },
37870
+ "required": ["kind", "amount"]
37871
+ },
37872
+ {
37873
+ "type": "object",
37874
+ "properties": {
37875
+ "kind": {
37876
+ "type": "string",
37877
+ "const": "project-slot"
37878
+ },
37879
+ "project": {
37880
+ "type": "string",
37881
+ "pattern": "^proj_[0-9abcdefghjkmnpqrstvwxyz]{26}$"
37882
+ }
37883
+ },
37884
+ "required": ["kind", "project"]
37885
+ },
37886
+ {
37887
+ "type": "object",
37888
+ "properties": {
37889
+ "kind": {
37890
+ "type": "string",
37891
+ "const": "perk"
37892
+ },
37893
+ "perk": {
37894
+ "type": "string",
37895
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
37896
+ }
37897
+ },
37898
+ "required": ["kind", "perk"]
37899
+ },
37900
+ {
37901
+ "type": "object",
37902
+ "properties": {
37903
+ "kind": {
37904
+ "type": "string",
37905
+ "const": "discount"
37906
+ },
37907
+ "percentOff": {
37908
+ "type": "integer",
37909
+ "minimum": 1,
37910
+ "maximum": 100
37911
+ },
37912
+ "amountOff": {
37913
+ "type": "object",
37914
+ "properties": {
37915
+ "currency": {
37916
+ "type": "string",
37917
+ "const": "USD"
37918
+ },
37919
+ "microdollars": {
37920
+ "type": "string",
37921
+ "pattern": "^(?:0|[1-9]\\d*)$"
37922
+ },
37923
+ "scale": {
37924
+ "type": "number",
37925
+ "const": 6
37926
+ }
37927
+ },
37928
+ "required": [
37929
+ "currency",
37930
+ "microdollars",
37931
+ "scale"
37932
+ ]
37933
+ },
37934
+ "duration": {
37935
+ "type": "string",
37936
+ "enum": ["once", "repeating"]
37937
+ },
37938
+ "durationInMonths": {
37939
+ "type": "integer",
37940
+ "minimum": 1,
37941
+ "maximum": 12
37942
+ }
37943
+ },
37944
+ "required": ["kind", "duration"]
37945
+ }
37946
+ ]
37947
+ },
37948
+ "state": {
37949
+ "type": "string",
37950
+ "enum": ["active", "expired", "revoked"]
37951
+ },
37952
+ "startsAt": {
37953
+ "type": "string",
37954
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
37955
+ },
37956
+ "endsAt": {
37957
+ "type": "string",
37958
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
37959
+ },
37960
+ "revokedAt": {
37961
+ "type": "string",
37962
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
37963
+ }
37964
+ },
37965
+ "required": [
37966
+ "id",
37967
+ "source",
37968
+ "benefit",
37969
+ "state",
37970
+ "startsAt"
37971
+ ]
37972
+ }
37973
+ },
37974
+ "projectCapacity": {
37975
+ "type": "object",
37976
+ "properties": {
37977
+ "included": {
37978
+ "type": "integer",
37979
+ "minimum": 0,
37980
+ "maximum": 9007199254740991
37981
+ },
37982
+ "paid": {
37983
+ "type": "integer",
37984
+ "minimum": 0,
37985
+ "maximum": 9007199254740991
37986
+ },
37987
+ "complimentary": {
37988
+ "type": "integer",
37989
+ "minimum": 0,
37990
+ "maximum": 9007199254740991
37991
+ }
37992
+ },
37993
+ "required": ["included", "paid", "complimentary"]
37994
+ },
37995
+ "perks": {
37996
+ "type": "array",
37997
+ "items": {
37998
+ "type": "object",
37999
+ "properties": {
38000
+ "perk": {
38001
+ "type": "string",
38002
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
38003
+ },
38004
+ "endsAt": {
38005
+ "type": "string",
38006
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
38007
+ }
38008
+ },
38009
+ "required": ["perk", "endsAt"]
38010
+ }
38011
+ },
38012
+ "restrictions": {
38013
+ "type": "array",
38014
+ "items": {
38015
+ "type": "string",
38016
+ "minLength": 1,
38017
+ "maxLength": 300
38018
+ }
38019
+ }
38020
+ },
38021
+ "required": [
38022
+ "grants",
38023
+ "projectCapacity",
38024
+ "perks",
38025
+ "restrictions"
38026
+ ]
38027
+ }
38028
+ }
38029
+ },
38030
+ "description": "List promotions and complimentary grants"
38031
+ },
38032
+ "401": {
38033
+ "content": {
38034
+ "application/problem+json": {
38035
+ "schema": {
38036
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
38037
+ "type": "object",
38038
+ "properties": {
38039
+ "code": {
38040
+ "type": "string",
38041
+ "x-problem-codes": [
38042
+ "authentication_required",
38043
+ "credential_expired",
38044
+ "credential_revoked"
38045
+ ]
38046
+ },
38047
+ "detail": {
38048
+ "type": "string",
38049
+ "minLength": 1
38050
+ },
38051
+ "errors": {
38052
+ "type": "array",
38053
+ "items": {
38054
+ "type": "object",
38055
+ "properties": {
38056
+ "pointer": {
38057
+ "type": "string",
38058
+ "pattern": "^\\/.*"
38059
+ },
38060
+ "reason": {
38061
+ "type": "string",
38062
+ "minLength": 1
38063
+ }
38064
+ },
38065
+ "required": ["pointer", "reason"]
38066
+ }
38067
+ },
38068
+ "retryAfterSeconds": {
38069
+ "type": "integer",
38070
+ "exclusiveMinimum": 0,
38071
+ "maximum": 9007199254740991
38072
+ },
38073
+ "status": {
38074
+ "type": "integer",
38075
+ "minimum": 400,
38076
+ "maximum": 599
38077
+ },
38078
+ "title": {
38079
+ "type": "string",
38080
+ "minLength": 1
38081
+ },
38082
+ "traceId": {
38083
+ "type": "string",
38084
+ "minLength": 1
38085
+ },
38086
+ "type": {
38087
+ "type": "string",
38088
+ "const": "about:blank"
38089
+ }
38090
+ },
38091
+ "required": ["code", "status", "title", "type"]
38092
+ }
38093
+ }
38094
+ },
38095
+ "description": "Problem document. Possible codes at this status: authentication_required, credential_expired, credential_revoked."
38096
+ },
38097
+ "403": {
38098
+ "content": {
38099
+ "application/problem+json": {
38100
+ "schema": {
38101
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
38102
+ "type": "object",
38103
+ "properties": {
38104
+ "code": {
38105
+ "type": "string",
38106
+ "x-problem-codes": [
38107
+ "scope_missing",
38108
+ "test_to_live_escalation"
38109
+ ]
38110
+ },
38111
+ "detail": {
38112
+ "type": "string",
38113
+ "minLength": 1
38114
+ },
38115
+ "errors": {
38116
+ "type": "array",
38117
+ "items": {
38118
+ "type": "object",
38119
+ "properties": {
38120
+ "pointer": {
38121
+ "type": "string",
38122
+ "pattern": "^\\/.*"
38123
+ },
38124
+ "reason": {
38125
+ "type": "string",
38126
+ "minLength": 1
38127
+ }
38128
+ },
38129
+ "required": ["pointer", "reason"]
38130
+ }
38131
+ },
38132
+ "retryAfterSeconds": {
38133
+ "type": "integer",
38134
+ "exclusiveMinimum": 0,
38135
+ "maximum": 9007199254740991
38136
+ },
38137
+ "status": {
38138
+ "type": "integer",
38139
+ "minimum": 400,
38140
+ "maximum": 599
38141
+ },
38142
+ "title": {
38143
+ "type": "string",
38144
+ "minLength": 1
38145
+ },
38146
+ "traceId": {
38147
+ "type": "string",
38148
+ "minLength": 1
38149
+ },
38150
+ "type": {
38151
+ "type": "string",
38152
+ "const": "about:blank"
38153
+ }
38154
+ },
38155
+ "required": ["code", "status", "title", "type"]
38156
+ }
38157
+ }
38158
+ },
38159
+ "description": "Problem document. Possible codes at this status: scope_missing, test_to_live_escalation."
38160
+ },
38161
+ "409": {
38162
+ "content": {
38163
+ "application/problem+json": {
38164
+ "schema": {
38165
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
38166
+ "type": "object",
38167
+ "properties": {
38168
+ "code": {
38169
+ "type": "string",
38170
+ "x-problem-codes": ["project_archived"]
38171
+ },
38172
+ "detail": {
38173
+ "type": "string",
38174
+ "minLength": 1
38175
+ },
38176
+ "errors": {
38177
+ "type": "array",
38178
+ "items": {
38179
+ "type": "object",
38180
+ "properties": {
38181
+ "pointer": {
38182
+ "type": "string",
38183
+ "pattern": "^\\/.*"
38184
+ },
38185
+ "reason": {
38186
+ "type": "string",
38187
+ "minLength": 1
38188
+ }
38189
+ },
38190
+ "required": ["pointer", "reason"]
38191
+ }
38192
+ },
38193
+ "retryAfterSeconds": {
38194
+ "type": "integer",
38195
+ "exclusiveMinimum": 0,
38196
+ "maximum": 9007199254740991
38197
+ },
38198
+ "status": {
38199
+ "type": "integer",
38200
+ "minimum": 400,
38201
+ "maximum": 599
38202
+ },
38203
+ "title": {
38204
+ "type": "string",
38205
+ "minLength": 1
38206
+ },
38207
+ "traceId": {
38208
+ "type": "string",
38209
+ "minLength": 1
38210
+ },
38211
+ "type": {
38212
+ "type": "string",
38213
+ "const": "about:blank"
38214
+ }
38215
+ },
38216
+ "required": ["code", "status", "title", "type"]
38217
+ }
38218
+ }
38219
+ },
38220
+ "description": "Problem document. Possible codes at this status: project_archived."
38221
+ },
38222
+ "429": {
38223
+ "content": {
38224
+ "application/problem+json": {
38225
+ "schema": {
38226
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
38227
+ "type": "object",
38228
+ "properties": {
38229
+ "code": {
38230
+ "type": "string",
38231
+ "x-problem-codes": ["rate_limited"]
38232
+ },
38233
+ "detail": {
38234
+ "type": "string",
38235
+ "minLength": 1
38236
+ },
38237
+ "errors": {
38238
+ "type": "array",
38239
+ "items": {
38240
+ "type": "object",
38241
+ "properties": {
38242
+ "pointer": {
38243
+ "type": "string",
38244
+ "pattern": "^\\/.*"
38245
+ },
38246
+ "reason": {
38247
+ "type": "string",
38248
+ "minLength": 1
38249
+ }
38250
+ },
38251
+ "required": ["pointer", "reason"]
38252
+ }
38253
+ },
38254
+ "retryAfterSeconds": {
38255
+ "type": "integer",
38256
+ "exclusiveMinimum": 0,
38257
+ "maximum": 9007199254740991
38258
+ },
38259
+ "status": {
38260
+ "type": "integer",
38261
+ "minimum": 400,
38262
+ "maximum": 599
38263
+ },
38264
+ "title": {
38265
+ "type": "string",
38266
+ "minLength": 1
38267
+ },
38268
+ "traceId": {
38269
+ "type": "string",
38270
+ "minLength": 1
38271
+ },
38272
+ "type": {
38273
+ "type": "string",
38274
+ "const": "about:blank"
38275
+ }
38276
+ },
38277
+ "required": ["code", "status", "title", "type"]
38278
+ }
38279
+ }
38280
+ },
38281
+ "description": "Problem document. Possible codes at this status: rate_limited."
38282
+ },
38283
+ "503": {
38284
+ "content": {
38285
+ "application/problem+json": {
38286
+ "schema": {
38287
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
38288
+ "type": "object",
38289
+ "properties": {
38290
+ "code": {
38291
+ "type": "string",
38292
+ "x-problem-codes": [
38293
+ "capability_not_configured",
38294
+ "service_unavailable"
38295
+ ]
38296
+ },
38297
+ "detail": {
38298
+ "type": "string",
38299
+ "minLength": 1
38300
+ },
38301
+ "errors": {
38302
+ "type": "array",
38303
+ "items": {
38304
+ "type": "object",
38305
+ "properties": {
38306
+ "pointer": {
38307
+ "type": "string",
38308
+ "pattern": "^\\/.*"
38309
+ },
38310
+ "reason": {
38311
+ "type": "string",
38312
+ "minLength": 1
38313
+ }
38314
+ },
38315
+ "required": ["pointer", "reason"]
38316
+ }
38317
+ },
38318
+ "retryAfterSeconds": {
38319
+ "type": "integer",
38320
+ "exclusiveMinimum": 0,
38321
+ "maximum": 9007199254740991
38322
+ },
38323
+ "status": {
38324
+ "type": "integer",
38325
+ "minimum": 400,
38326
+ "maximum": 599
38327
+ },
38328
+ "title": {
38329
+ "type": "string",
38330
+ "minLength": 1
38331
+ },
38332
+ "traceId": {
38333
+ "type": "string",
38334
+ "minLength": 1
38335
+ },
38336
+ "type": {
38337
+ "type": "string",
38338
+ "const": "about:blank"
38339
+ }
38340
+ },
38341
+ "required": ["code", "status", "title", "type"]
38342
+ }
38343
+ }
38344
+ },
38345
+ "description": "Problem document. Possible codes at this status: capability_not_configured, service_unavailable."
38346
+ }
38347
+ },
38348
+ "summary": "List promotions and complimentary grants",
38349
+ "security": [
38350
+ {
38351
+ "apiCredential": ["usage:read"]
38352
+ },
38353
+ {
38354
+ "memberSession": ["usage:read"],
38355
+ "memberSessionEnvironment": [],
38356
+ "memberSessionProject": []
38357
+ }
38358
+ ]
38359
+ }
38360
+ },
38361
+ "/v1/billing/promotions/redeem": {
38362
+ "post": {
38363
+ "description": "Redeems one promotion code for the verified organization, with the billing owner's explicit confirmation. A code carries one benefit: promotional execution credit that expires and is spent before purchased credit, a complimentary slot for a named project that never becomes a paid subscription, a perk, or a discount on the project subscription shown in the next project quote. Every code that cannot be redeemed — unknown, ended, used up, not for this organization, or not combinable with a benefit already held — receives the same not_found answer; repeated refusals are throttled with rate_limited. The Idempotency-Key makes retries return the original grant. Nothing is charged and no payment method is needed.",
38364
+ "operationId": "billing.redeem",
38365
+ "parameters": [
38366
+ {
38367
+ "in": "header",
38368
+ "name": "Idempotency-Key",
38369
+ "required": true,
38370
+ "schema": {
38371
+ "type": "string",
38372
+ "minLength": 16,
38373
+ "maxLength": 255,
38374
+ "pattern": "^[\\x20-\\x7e]+$"
38375
+ }
38376
+ }
38377
+ ],
38378
+ "responses": {
38379
+ "201": {
38380
+ "content": {
38381
+ "application/json": {
38382
+ "example": {
38383
+ "grant": {
38384
+ "id": "grn_01hzy3v8k2m9q4r6t7w8x9y0za",
38385
+ "source": "code",
38386
+ "benefit": {
38387
+ "kind": "credit",
38388
+ "amount": {
38389
+ "currency": "USD",
38390
+ "microdollars": "10000000",
38391
+ "scale": 6
38392
+ }
38393
+ },
38394
+ "state": "active",
38395
+ "startsAt": "2026-09-09T12:00:00.000Z",
38396
+ "endsAt": "2026-12-08T12:00:00.000Z"
38397
+ },
38398
+ "promotions": {
38399
+ "grants": [
38400
+ {
38401
+ "id": "grn_01hzy3v8k2m9q4r6t7w8x9y0za",
38402
+ "source": "code",
38403
+ "benefit": {
38404
+ "kind": "credit",
38405
+ "amount": {
38406
+ "currency": "USD",
38407
+ "microdollars": "10000000",
38408
+ "scale": 6
38409
+ }
38410
+ },
38411
+ "state": "active",
38412
+ "startsAt": "2026-09-09T12:00:00.000Z",
38413
+ "endsAt": "2026-12-08T12:00:00.000Z"
38414
+ }
38415
+ ],
38416
+ "projectCapacity": {
38417
+ "included": 1,
38418
+ "paid": 0,
38419
+ "complimentary": 0
38420
+ },
38421
+ "perks": [],
38422
+ "restrictions": []
38423
+ }
38424
+ },
38425
+ "schema": {
38426
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
38427
+ "type": "object",
38428
+ "properties": {
38429
+ "grant": {
38430
+ "type": "object",
38431
+ "properties": {
38432
+ "id": {
38433
+ "type": "string",
38434
+ "pattern": "^grn_[0-9abcdefghjkmnpqrstvwxyz]{26}$"
38435
+ },
38436
+ "source": {
38437
+ "type": "string",
38438
+ "enum": ["operator", "code"]
38439
+ },
38440
+ "benefit": {
38441
+ "oneOf": [
38442
+ {
38443
+ "type": "object",
38444
+ "properties": {
38445
+ "kind": {
38446
+ "type": "string",
38447
+ "const": "credit"
38448
+ },
38449
+ "amount": {
38450
+ "type": "object",
38451
+ "properties": {
38452
+ "currency": {
38453
+ "type": "string",
38454
+ "const": "USD"
38455
+ },
38456
+ "microdollars": {
38457
+ "type": "string",
38458
+ "pattern": "^(?:0|[1-9]\\d*)$"
38459
+ },
38460
+ "scale": {
38461
+ "type": "number",
38462
+ "const": 6
38463
+ }
38464
+ },
38465
+ "required": [
38466
+ "currency",
38467
+ "microdollars",
38468
+ "scale"
38469
+ ]
38470
+ }
38471
+ },
38472
+ "required": ["kind", "amount"]
38473
+ },
38474
+ {
38475
+ "type": "object",
38476
+ "properties": {
38477
+ "kind": {
38478
+ "type": "string",
38479
+ "const": "project-slot"
38480
+ },
38481
+ "project": {
38482
+ "type": "string",
38483
+ "pattern": "^proj_[0-9abcdefghjkmnpqrstvwxyz]{26}$"
38484
+ }
38485
+ },
38486
+ "required": ["kind", "project"]
38487
+ },
38488
+ {
38489
+ "type": "object",
38490
+ "properties": {
38491
+ "kind": {
38492
+ "type": "string",
38493
+ "const": "perk"
38494
+ },
38495
+ "perk": {
38496
+ "type": "string",
38497
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
38498
+ }
38499
+ },
38500
+ "required": ["kind", "perk"]
38501
+ },
38502
+ {
38503
+ "type": "object",
38504
+ "properties": {
38505
+ "kind": {
38506
+ "type": "string",
38507
+ "const": "discount"
38508
+ },
38509
+ "percentOff": {
38510
+ "type": "integer",
38511
+ "minimum": 1,
38512
+ "maximum": 100
38513
+ },
38514
+ "amountOff": {
38515
+ "type": "object",
38516
+ "properties": {
38517
+ "currency": {
38518
+ "type": "string",
38519
+ "const": "USD"
38520
+ },
38521
+ "microdollars": {
38522
+ "type": "string",
38523
+ "pattern": "^(?:0|[1-9]\\d*)$"
38524
+ },
38525
+ "scale": {
38526
+ "type": "number",
38527
+ "const": 6
38528
+ }
38529
+ },
38530
+ "required": [
38531
+ "currency",
38532
+ "microdollars",
38533
+ "scale"
38534
+ ]
38535
+ },
38536
+ "duration": {
38537
+ "type": "string",
38538
+ "enum": ["once", "repeating"]
38539
+ },
38540
+ "durationInMonths": {
38541
+ "type": "integer",
38542
+ "minimum": 1,
38543
+ "maximum": 12
38544
+ }
38545
+ },
38546
+ "required": ["kind", "duration"]
38547
+ }
38548
+ ]
38549
+ },
38550
+ "state": {
38551
+ "type": "string",
38552
+ "enum": ["active", "expired", "revoked"]
38553
+ },
38554
+ "startsAt": {
38555
+ "type": "string",
38556
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
38557
+ },
38558
+ "endsAt": {
38559
+ "type": "string",
38560
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
38561
+ },
38562
+ "revokedAt": {
38563
+ "type": "string",
38564
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
38565
+ }
38566
+ },
38567
+ "required": [
38568
+ "id",
38569
+ "source",
38570
+ "benefit",
38571
+ "state",
38572
+ "startsAt"
38573
+ ]
38574
+ },
38575
+ "promotions": {
38576
+ "type": "object",
38577
+ "properties": {
38578
+ "grants": {
38579
+ "type": "array",
38580
+ "items": {
38581
+ "type": "object",
38582
+ "properties": {
38583
+ "id": {
38584
+ "type": "string",
38585
+ "pattern": "^grn_[0-9abcdefghjkmnpqrstvwxyz]{26}$"
38586
+ },
38587
+ "source": {
38588
+ "type": "string",
38589
+ "enum": ["operator", "code"]
38590
+ },
38591
+ "benefit": {
38592
+ "oneOf": [
38593
+ {
38594
+ "type": "object",
38595
+ "properties": {
38596
+ "kind": {
38597
+ "type": "string",
38598
+ "const": "credit"
38599
+ },
38600
+ "amount": {
38601
+ "type": "object",
38602
+ "properties": {
38603
+ "currency": {
38604
+ "type": "string",
38605
+ "const": "USD"
38606
+ },
38607
+ "microdollars": {
38608
+ "type": "string",
38609
+ "pattern": "^(?:0|[1-9]\\d*)$"
38610
+ },
38611
+ "scale": {
38612
+ "type": "number",
38613
+ "const": 6
38614
+ }
38615
+ },
38616
+ "required": [
38617
+ "currency",
38618
+ "microdollars",
38619
+ "scale"
38620
+ ]
38621
+ }
38622
+ },
38623
+ "required": ["kind", "amount"]
38624
+ },
38625
+ {
38626
+ "type": "object",
38627
+ "properties": {
38628
+ "kind": {
38629
+ "type": "string",
38630
+ "const": "project-slot"
38631
+ },
38632
+ "project": {
38633
+ "type": "string",
38634
+ "pattern": "^proj_[0-9abcdefghjkmnpqrstvwxyz]{26}$"
38635
+ }
38636
+ },
38637
+ "required": ["kind", "project"]
38638
+ },
38639
+ {
38640
+ "type": "object",
38641
+ "properties": {
38642
+ "kind": {
38643
+ "type": "string",
38644
+ "const": "perk"
38645
+ },
38646
+ "perk": {
38647
+ "type": "string",
38648
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
38649
+ }
38650
+ },
38651
+ "required": ["kind", "perk"]
38652
+ },
38653
+ {
38654
+ "type": "object",
38655
+ "properties": {
38656
+ "kind": {
38657
+ "type": "string",
38658
+ "const": "discount"
38659
+ },
38660
+ "percentOff": {
38661
+ "type": "integer",
38662
+ "minimum": 1,
38663
+ "maximum": 100
38664
+ },
38665
+ "amountOff": {
38666
+ "type": "object",
38667
+ "properties": {
38668
+ "currency": {
38669
+ "type": "string",
38670
+ "const": "USD"
38671
+ },
38672
+ "microdollars": {
38673
+ "type": "string",
38674
+ "pattern": "^(?:0|[1-9]\\d*)$"
38675
+ },
38676
+ "scale": {
38677
+ "type": "number",
38678
+ "const": 6
38679
+ }
38680
+ },
38681
+ "required": [
38682
+ "currency",
38683
+ "microdollars",
38684
+ "scale"
38685
+ ]
38686
+ },
38687
+ "duration": {
38688
+ "type": "string",
38689
+ "enum": ["once", "repeating"]
38690
+ },
38691
+ "durationInMonths": {
38692
+ "type": "integer",
38693
+ "minimum": 1,
38694
+ "maximum": 12
38695
+ }
38696
+ },
38697
+ "required": ["kind", "duration"]
38698
+ }
38699
+ ]
38700
+ },
38701
+ "state": {
38702
+ "type": "string",
38703
+ "enum": ["active", "expired", "revoked"]
38704
+ },
38705
+ "startsAt": {
38706
+ "type": "string",
38707
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
38708
+ },
38709
+ "endsAt": {
38710
+ "type": "string",
38711
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
38712
+ },
38713
+ "revokedAt": {
38714
+ "type": "string",
38715
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
38716
+ }
38717
+ },
38718
+ "required": [
38719
+ "id",
38720
+ "source",
38721
+ "benefit",
38722
+ "state",
38723
+ "startsAt"
38724
+ ]
38725
+ }
38726
+ },
38727
+ "projectCapacity": {
38728
+ "type": "object",
38729
+ "properties": {
38730
+ "included": {
38731
+ "type": "integer",
38732
+ "minimum": 0,
38733
+ "maximum": 9007199254740991
38734
+ },
38735
+ "paid": {
38736
+ "type": "integer",
38737
+ "minimum": 0,
38738
+ "maximum": 9007199254740991
38739
+ },
38740
+ "complimentary": {
38741
+ "type": "integer",
38742
+ "minimum": 0,
38743
+ "maximum": 9007199254740991
38744
+ }
38745
+ },
38746
+ "required": ["included", "paid", "complimentary"]
38747
+ },
38748
+ "perks": {
38749
+ "type": "array",
38750
+ "items": {
38751
+ "type": "object",
38752
+ "properties": {
38753
+ "perk": {
38754
+ "type": "string",
38755
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
38756
+ },
38757
+ "endsAt": {
38758
+ "type": "string",
38759
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
38760
+ }
38761
+ },
38762
+ "required": ["perk", "endsAt"]
38763
+ }
38764
+ },
38765
+ "restrictions": {
38766
+ "type": "array",
38767
+ "items": {
38768
+ "type": "string",
38769
+ "minLength": 1,
38770
+ "maxLength": 300
38771
+ }
38772
+ }
38773
+ },
38774
+ "required": [
38775
+ "grants",
38776
+ "projectCapacity",
38777
+ "perks",
38778
+ "restrictions"
38779
+ ]
38780
+ }
38781
+ },
38782
+ "required": ["grant", "promotions"]
38783
+ }
38784
+ }
38785
+ },
38786
+ "description": "Redeem a promotion code",
38787
+ "headers": {
38788
+ "Idempotency-Replayed": {
38789
+ "required": false,
38790
+ "schema": {
38791
+ "type": "string",
38792
+ "const": "true"
38793
+ }
38794
+ }
38795
+ }
38796
+ },
38797
+ "400": {
38798
+ "content": {
38799
+ "application/problem+json": {
38800
+ "schema": {
38801
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
38802
+ "type": "object",
38803
+ "properties": {
38804
+ "code": {
38805
+ "type": "string",
38806
+ "x-problem-codes": ["invalid_request"]
38807
+ },
38808
+ "detail": {
38809
+ "type": "string",
38810
+ "minLength": 1
38811
+ },
38812
+ "errors": {
38813
+ "type": "array",
38814
+ "items": {
38815
+ "type": "object",
38816
+ "properties": {
38817
+ "pointer": {
38818
+ "type": "string",
38819
+ "pattern": "^\\/.*"
38820
+ },
38821
+ "reason": {
38822
+ "type": "string",
38823
+ "minLength": 1
38824
+ }
38825
+ },
38826
+ "required": ["pointer", "reason"]
38827
+ }
38828
+ },
38829
+ "retryAfterSeconds": {
38830
+ "type": "integer",
38831
+ "exclusiveMinimum": 0,
38832
+ "maximum": 9007199254740991
38833
+ },
38834
+ "status": {
38835
+ "type": "integer",
38836
+ "minimum": 400,
38837
+ "maximum": 599
38838
+ },
38839
+ "title": {
38840
+ "type": "string",
38841
+ "minLength": 1
38842
+ },
38843
+ "traceId": {
38844
+ "type": "string",
38845
+ "minLength": 1
38846
+ },
38847
+ "type": {
38848
+ "type": "string",
38849
+ "const": "about:blank"
38850
+ }
38851
+ },
38852
+ "required": ["code", "status", "title", "type"]
38853
+ }
38854
+ }
38855
+ },
38856
+ "description": "Problem document. Possible codes at this status: invalid_request."
38857
+ },
38858
+ "401": {
38859
+ "content": {
38860
+ "application/problem+json": {
38861
+ "schema": {
38862
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
38863
+ "type": "object",
38864
+ "properties": {
38865
+ "code": {
38866
+ "type": "string",
38867
+ "x-problem-codes": [
38868
+ "authentication_required",
38869
+ "credential_expired",
38870
+ "credential_revoked"
38871
+ ]
38872
+ },
38873
+ "detail": {
38874
+ "type": "string",
38875
+ "minLength": 1
38876
+ },
38877
+ "errors": {
38878
+ "type": "array",
38879
+ "items": {
38880
+ "type": "object",
38881
+ "properties": {
38882
+ "pointer": {
38883
+ "type": "string",
38884
+ "pattern": "^\\/.*"
38885
+ },
38886
+ "reason": {
38887
+ "type": "string",
38888
+ "minLength": 1
38889
+ }
38890
+ },
38891
+ "required": ["pointer", "reason"]
38892
+ }
38893
+ },
38894
+ "retryAfterSeconds": {
38895
+ "type": "integer",
38896
+ "exclusiveMinimum": 0,
38897
+ "maximum": 9007199254740991
38898
+ },
38899
+ "status": {
38900
+ "type": "integer",
38901
+ "minimum": 400,
38902
+ "maximum": 599
38903
+ },
38904
+ "title": {
38905
+ "type": "string",
38906
+ "minLength": 1
38907
+ },
38908
+ "traceId": {
38909
+ "type": "string",
38910
+ "minLength": 1
38911
+ },
38912
+ "type": {
38913
+ "type": "string",
38914
+ "const": "about:blank"
38915
+ }
38916
+ },
38917
+ "required": ["code", "status", "title", "type"]
38918
+ }
38919
+ }
38920
+ },
38921
+ "description": "Problem document. Possible codes at this status: authentication_required, credential_expired, credential_revoked."
38922
+ },
38923
+ "403": {
38924
+ "content": {
38925
+ "application/problem+json": {
38926
+ "schema": {
38927
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
38928
+ "type": "object",
38929
+ "properties": {
38930
+ "code": {
38931
+ "type": "string",
38932
+ "x-problem-codes": [
38933
+ "scope_missing",
38934
+ "test_to_live_escalation"
38935
+ ]
38936
+ },
38937
+ "detail": {
38938
+ "type": "string",
38939
+ "minLength": 1
38940
+ },
38941
+ "errors": {
38942
+ "type": "array",
38943
+ "items": {
38944
+ "type": "object",
38945
+ "properties": {
38946
+ "pointer": {
38947
+ "type": "string",
38948
+ "pattern": "^\\/.*"
38949
+ },
38950
+ "reason": {
38951
+ "type": "string",
38952
+ "minLength": 1
38953
+ }
38954
+ },
38955
+ "required": ["pointer", "reason"]
38956
+ }
38957
+ },
38958
+ "retryAfterSeconds": {
38959
+ "type": "integer",
38960
+ "exclusiveMinimum": 0,
38961
+ "maximum": 9007199254740991
38962
+ },
38963
+ "status": {
38964
+ "type": "integer",
38965
+ "minimum": 400,
38966
+ "maximum": 599
38967
+ },
38968
+ "title": {
38969
+ "type": "string",
38970
+ "minLength": 1
38971
+ },
38972
+ "traceId": {
38973
+ "type": "string",
38974
+ "minLength": 1
38975
+ },
38976
+ "type": {
38977
+ "type": "string",
38978
+ "const": "about:blank"
38979
+ }
38980
+ },
38981
+ "required": ["code", "status", "title", "type"]
38982
+ }
38983
+ }
38984
+ },
38985
+ "description": "Problem document. Possible codes at this status: scope_missing, test_to_live_escalation."
38986
+ },
38987
+ "404": {
38988
+ "content": {
38989
+ "application/problem+json": {
38990
+ "schema": {
38991
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
38992
+ "type": "object",
38993
+ "properties": {
38994
+ "code": {
38995
+ "type": "string",
38996
+ "x-problem-codes": ["not_found"]
38997
+ },
38998
+ "detail": {
38999
+ "type": "string",
39000
+ "minLength": 1
39001
+ },
39002
+ "errors": {
39003
+ "type": "array",
39004
+ "items": {
39005
+ "type": "object",
39006
+ "properties": {
39007
+ "pointer": {
39008
+ "type": "string",
39009
+ "pattern": "^\\/.*"
39010
+ },
39011
+ "reason": {
39012
+ "type": "string",
39013
+ "minLength": 1
39014
+ }
39015
+ },
39016
+ "required": ["pointer", "reason"]
39017
+ }
39018
+ },
39019
+ "retryAfterSeconds": {
39020
+ "type": "integer",
39021
+ "exclusiveMinimum": 0,
39022
+ "maximum": 9007199254740991
39023
+ },
39024
+ "status": {
39025
+ "type": "integer",
39026
+ "minimum": 400,
39027
+ "maximum": 599
39028
+ },
39029
+ "title": {
39030
+ "type": "string",
39031
+ "minLength": 1
39032
+ },
39033
+ "traceId": {
39034
+ "type": "string",
39035
+ "minLength": 1
39036
+ },
39037
+ "type": {
39038
+ "type": "string",
39039
+ "const": "about:blank"
39040
+ }
39041
+ },
39042
+ "required": ["code", "status", "title", "type"]
39043
+ }
39044
+ }
39045
+ },
39046
+ "description": "Problem document. Possible codes at this status: not_found."
39047
+ },
39048
+ "409": {
39049
+ "content": {
39050
+ "application/problem+json": {
39051
+ "schema": {
39052
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
39053
+ "type": "object",
39054
+ "properties": {
39055
+ "code": {
39056
+ "type": "string",
39057
+ "x-problem-codes": [
39058
+ "idempotency_key_reused",
39059
+ "project_archived",
39060
+ "state_conflict"
39061
+ ]
39062
+ },
39063
+ "detail": {
39064
+ "type": "string",
39065
+ "minLength": 1
39066
+ },
39067
+ "errors": {
39068
+ "type": "array",
39069
+ "items": {
39070
+ "type": "object",
39071
+ "properties": {
39072
+ "pointer": {
39073
+ "type": "string",
39074
+ "pattern": "^\\/.*"
39075
+ },
39076
+ "reason": {
39077
+ "type": "string",
39078
+ "minLength": 1
39079
+ }
39080
+ },
39081
+ "required": ["pointer", "reason"]
39082
+ }
39083
+ },
39084
+ "retryAfterSeconds": {
39085
+ "type": "integer",
39086
+ "exclusiveMinimum": 0,
39087
+ "maximum": 9007199254740991
39088
+ },
39089
+ "status": {
39090
+ "type": "integer",
39091
+ "minimum": 400,
39092
+ "maximum": 599
39093
+ },
39094
+ "title": {
39095
+ "type": "string",
39096
+ "minLength": 1
39097
+ },
39098
+ "traceId": {
39099
+ "type": "string",
39100
+ "minLength": 1
39101
+ },
39102
+ "type": {
39103
+ "type": "string",
39104
+ "const": "about:blank"
39105
+ }
39106
+ },
39107
+ "required": ["code", "status", "title", "type"]
39108
+ }
39109
+ }
39110
+ },
39111
+ "description": "Problem document. Possible codes at this status: idempotency_key_reused, project_archived, state_conflict."
39112
+ },
39113
+ "429": {
39114
+ "content": {
39115
+ "application/problem+json": {
39116
+ "schema": {
39117
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
39118
+ "type": "object",
39119
+ "properties": {
39120
+ "code": {
39121
+ "type": "string",
39122
+ "x-problem-codes": ["rate_limited"]
39123
+ },
39124
+ "detail": {
39125
+ "type": "string",
39126
+ "minLength": 1
39127
+ },
39128
+ "errors": {
39129
+ "type": "array",
39130
+ "items": {
39131
+ "type": "object",
39132
+ "properties": {
39133
+ "pointer": {
39134
+ "type": "string",
39135
+ "pattern": "^\\/.*"
39136
+ },
39137
+ "reason": {
39138
+ "type": "string",
39139
+ "minLength": 1
39140
+ }
39141
+ },
39142
+ "required": ["pointer", "reason"]
39143
+ }
39144
+ },
39145
+ "retryAfterSeconds": {
39146
+ "type": "integer",
39147
+ "exclusiveMinimum": 0,
39148
+ "maximum": 9007199254740991
39149
+ },
39150
+ "status": {
39151
+ "type": "integer",
39152
+ "minimum": 400,
39153
+ "maximum": 599
39154
+ },
39155
+ "title": {
39156
+ "type": "string",
39157
+ "minLength": 1
39158
+ },
39159
+ "traceId": {
39160
+ "type": "string",
39161
+ "minLength": 1
39162
+ },
39163
+ "type": {
39164
+ "type": "string",
39165
+ "const": "about:blank"
39166
+ }
39167
+ },
39168
+ "required": ["code", "status", "title", "type"]
39169
+ }
39170
+ }
39171
+ },
39172
+ "description": "Problem document. Possible codes at this status: rate_limited."
39173
+ },
39174
+ "503": {
39175
+ "content": {
39176
+ "application/problem+json": {
39177
+ "schema": {
39178
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
39179
+ "type": "object",
39180
+ "properties": {
39181
+ "code": {
39182
+ "type": "string",
39183
+ "x-problem-codes": [
39184
+ "capability_not_configured",
39185
+ "service_unavailable"
39186
+ ]
39187
+ },
39188
+ "detail": {
39189
+ "type": "string",
39190
+ "minLength": 1
39191
+ },
39192
+ "errors": {
39193
+ "type": "array",
39194
+ "items": {
39195
+ "type": "object",
39196
+ "properties": {
39197
+ "pointer": {
39198
+ "type": "string",
39199
+ "pattern": "^\\/.*"
39200
+ },
39201
+ "reason": {
39202
+ "type": "string",
39203
+ "minLength": 1
39204
+ }
39205
+ },
39206
+ "required": ["pointer", "reason"]
39207
+ }
39208
+ },
39209
+ "retryAfterSeconds": {
39210
+ "type": "integer",
39211
+ "exclusiveMinimum": 0,
39212
+ "maximum": 9007199254740991
39213
+ },
39214
+ "status": {
39215
+ "type": "integer",
39216
+ "minimum": 400,
39217
+ "maximum": 599
39218
+ },
39219
+ "title": {
39220
+ "type": "string",
39221
+ "minLength": 1
39222
+ },
39223
+ "traceId": {
39224
+ "type": "string",
39225
+ "minLength": 1
39226
+ },
39227
+ "type": {
39228
+ "type": "string",
39229
+ "const": "about:blank"
39230
+ }
39231
+ },
39232
+ "required": ["code", "status", "title", "type"]
39233
+ }
39234
+ }
39235
+ },
39236
+ "description": "Problem document. Possible codes at this status: capability_not_configured, service_unavailable."
39237
+ }
39238
+ },
39239
+ "summary": "Redeem a promotion code",
39240
+ "security": [
39241
+ {
39242
+ "apiCredential": ["billing:write"]
39243
+ },
39244
+ {
39245
+ "memberSession": ["billing:write"],
39246
+ "memberSessionEnvironment": [],
39247
+ "memberSessionProject": []
39248
+ }
39249
+ ],
39250
+ "requestBody": {
39251
+ "content": {
39252
+ "application/json": {
39253
+ "example": {
39254
+ "code": "LAUNCH-2026",
39255
+ "confirmed": true
39256
+ },
39257
+ "schema": {
39258
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
39259
+ "type": "object",
39260
+ "properties": {
39261
+ "code": {
39262
+ "type": "string",
39263
+ "minLength": 4,
39264
+ "maxLength": 64,
39265
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9 _-]*$"
39266
+ },
39267
+ "project": {
39268
+ "type": "string",
39269
+ "pattern": "^proj_[0-9abcdefghjkmnpqrstvwxyz]{26}$"
39270
+ },
39271
+ "confirmed": {
39272
+ "type": "boolean",
39273
+ "const": true
39274
+ }
39275
+ },
39276
+ "required": ["code", "confirmed"],
39277
+ "additionalProperties": false
39278
+ }
39279
+ }
39280
+ },
39281
+ "required": true
39282
+ }
39283
+ }
39284
+ },
37261
39285
  "/v1/billing/notices": {
37262
39286
  "get": {
37263
39287
  "description": "Lists the verified organization's durable billing notices with exact USD amounts, affected scope, payment state, a fixed same-page recovery path, and visible email delivery failure. Raw provider details, payment credentials, callback data and arbitrary URLs have no field.",
@@ -48290,11 +50314,75 @@
48290
50314
  },
48291
50315
  "deleted": {
48292
50316
  "type": "boolean"
50317
+ },
50318
+ "complimentary": {
50319
+ "type": "object",
50320
+ "properties": {
50321
+ "grant": {
50322
+ "type": "string",
50323
+ "pattern": "^grn_[0-9abcdefghjkmnpqrstvwxyz]{26}$"
50324
+ },
50325
+ "endsAt": {
50326
+ "type": "string",
50327
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
50328
+ }
50329
+ },
50330
+ "required": ["grant", "endsAt"]
48293
50331
  }
48294
50332
  },
48295
50333
  "required": ["name", "project", "access", "deleted"]
48296
50334
  }
48297
50335
  },
50336
+ "discount": {
50337
+ "type": "object",
50338
+ "properties": {
50339
+ "grant": {
50340
+ "type": "string",
50341
+ "pattern": "^grn_[0-9abcdefghjkmnpqrstvwxyz]{26}$"
50342
+ },
50343
+ "duration": {
50344
+ "type": "string",
50345
+ "enum": ["once", "repeating"]
50346
+ },
50347
+ "durationInMonths": {
50348
+ "type": "integer",
50349
+ "minimum": 1,
50350
+ "maximum": 12
50351
+ },
50352
+ "percentOff": {
50353
+ "type": "integer",
50354
+ "minimum": 1,
50355
+ "maximum": 100
50356
+ },
50357
+ "amountOff": {
50358
+ "type": "object",
50359
+ "properties": {
50360
+ "currency": {
50361
+ "type": "string",
50362
+ "const": "USD"
50363
+ },
50364
+ "microdollars": {
50365
+ "type": "string",
50366
+ "pattern": "^(?:0|[1-9]\\d*)$"
50367
+ },
50368
+ "scale": {
50369
+ "type": "number",
50370
+ "const": 6
50371
+ }
50372
+ },
50373
+ "required": ["currency", "microdollars", "scale"]
50374
+ },
50375
+ "state": {
50376
+ "type": "string",
50377
+ "enum": ["pending", "applied"]
50378
+ },
50379
+ "appliedAt": {
50380
+ "type": "string",
50381
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
50382
+ }
50383
+ },
50384
+ "required": ["grant", "duration", "state"]
50385
+ },
48298
50386
  "pendingOperations": {
48299
50387
  "type": "array",
48300
50388
  "items": {
@@ -48838,6 +50926,57 @@
48838
50926
  },
48839
50927
  "formerIncludedWillBlock": {
48840
50928
  "type": "boolean"
50929
+ },
50930
+ "discount": {
50931
+ "type": "object",
50932
+ "properties": {
50933
+ "gross": {
50934
+ "type": "object",
50935
+ "properties": {
50936
+ "currency": {
50937
+ "type": "string",
50938
+ "const": "USD"
50939
+ },
50940
+ "microdollars": {
50941
+ "type": "string",
50942
+ "pattern": "^(?:0|[1-9]\\d*)$"
50943
+ },
50944
+ "scale": {
50945
+ "type": "number",
50946
+ "const": 6
50947
+ }
50948
+ },
50949
+ "required": ["currency", "microdollars", "scale"]
50950
+ },
50951
+ "amount": {
50952
+ "type": "object",
50953
+ "properties": {
50954
+ "currency": {
50955
+ "type": "string",
50956
+ "const": "USD"
50957
+ },
50958
+ "microdollars": {
50959
+ "type": "string",
50960
+ "pattern": "^(?:0|[1-9]\\d*)$"
50961
+ },
50962
+ "scale": {
50963
+ "type": "number",
50964
+ "const": 6
50965
+ }
50966
+ },
50967
+ "required": ["currency", "microdollars", "scale"]
50968
+ },
50969
+ "duration": {
50970
+ "type": "string",
50971
+ "enum": ["once", "repeating"]
50972
+ },
50973
+ "durationInMonths": {
50974
+ "type": "integer",
50975
+ "minimum": 1,
50976
+ "maximum": 12
50977
+ }
50978
+ },
50979
+ "required": ["gross", "amount", "duration"]
48841
50980
  }
48842
50981
  },
48843
50982
  "required": [
@@ -49383,11 +51522,75 @@
49383
51522
  },
49384
51523
  "deleted": {
49385
51524
  "type": "boolean"
51525
+ },
51526
+ "complimentary": {
51527
+ "type": "object",
51528
+ "properties": {
51529
+ "grant": {
51530
+ "type": "string",
51531
+ "pattern": "^grn_[0-9abcdefghjkmnpqrstvwxyz]{26}$"
51532
+ },
51533
+ "endsAt": {
51534
+ "type": "string",
51535
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
51536
+ }
51537
+ },
51538
+ "required": ["grant", "endsAt"]
49386
51539
  }
49387
51540
  },
49388
51541
  "required": ["name", "project", "access", "deleted"]
49389
51542
  }
49390
51543
  },
51544
+ "discount": {
51545
+ "type": "object",
51546
+ "properties": {
51547
+ "grant": {
51548
+ "type": "string",
51549
+ "pattern": "^grn_[0-9abcdefghjkmnpqrstvwxyz]{26}$"
51550
+ },
51551
+ "duration": {
51552
+ "type": "string",
51553
+ "enum": ["once", "repeating"]
51554
+ },
51555
+ "durationInMonths": {
51556
+ "type": "integer",
51557
+ "minimum": 1,
51558
+ "maximum": 12
51559
+ },
51560
+ "percentOff": {
51561
+ "type": "integer",
51562
+ "minimum": 1,
51563
+ "maximum": 100
51564
+ },
51565
+ "amountOff": {
51566
+ "type": "object",
51567
+ "properties": {
51568
+ "currency": {
51569
+ "type": "string",
51570
+ "const": "USD"
51571
+ },
51572
+ "microdollars": {
51573
+ "type": "string",
51574
+ "pattern": "^(?:0|[1-9]\\d*)$"
51575
+ },
51576
+ "scale": {
51577
+ "type": "number",
51578
+ "const": 6
51579
+ }
51580
+ },
51581
+ "required": ["currency", "microdollars", "scale"]
51582
+ },
51583
+ "state": {
51584
+ "type": "string",
51585
+ "enum": ["pending", "applied"]
51586
+ },
51587
+ "appliedAt": {
51588
+ "type": "string",
51589
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
51590
+ }
51591
+ },
51592
+ "required": ["grant", "duration", "state"]
51593
+ },
49391
51594
  "pendingOperations": {
49392
51595
  "type": "array",
49393
51596
  "items": {
@@ -53105,14 +55308,258 @@
53105
55308
  "scale"
53106
55309
  ]
53107
55310
  },
53108
- {
53109
- "type": "null"
55311
+ {
55312
+ "type": "null"
55313
+ }
55314
+ ]
55315
+ },
55316
+ "hardCap": {
55317
+ "anyOf": [
55318
+ {
55319
+ "type": "object",
55320
+ "properties": {
55321
+ "currency": {
55322
+ "type": "string",
55323
+ "const": "USD"
55324
+ },
55325
+ "microdollars": {
55326
+ "type": "string",
55327
+ "pattern": "^(?:0|[1-9]\\d*)$"
55328
+ },
55329
+ "scale": {
55330
+ "type": "number",
55331
+ "const": 6
55332
+ }
55333
+ },
55334
+ "required": [
55335
+ "currency",
55336
+ "microdollars",
55337
+ "scale"
55338
+ ]
55339
+ },
55340
+ {
55341
+ "type": "null"
55342
+ }
55343
+ ]
55344
+ }
55345
+ },
55346
+ "required": ["advisoryBudget", "hardCap"]
55347
+ },
55348
+ "desiredRevision": {
55349
+ "type": "integer",
55350
+ "minimum": 0,
55351
+ "maximum": 9007199254740991
55352
+ },
55353
+ "effectiveRevision": {
55354
+ "type": "integer",
55355
+ "minimum": 0,
55356
+ "maximum": 9007199254740991
55357
+ },
55358
+ "pending": {
55359
+ "type": "boolean"
55360
+ }
55361
+ },
55362
+ "required": [
55363
+ "desired",
55364
+ "desiredRevision",
55365
+ "effectiveRevision",
55366
+ "pending"
55367
+ ]
55368
+ },
55369
+ "closedAt": {
55370
+ "type": "string",
55371
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
55372
+ },
55373
+ "credit": {
55374
+ "type": "object",
55375
+ "properties": {
55376
+ "available": {
55377
+ "type": "object",
55378
+ "properties": {
55379
+ "currency": {
55380
+ "type": "string",
55381
+ "const": "USD"
55382
+ },
55383
+ "microdollars": {
55384
+ "type": "string",
55385
+ "pattern": "^-?(?:0|[1-9]\\d*)$"
55386
+ },
55387
+ "scale": {
55388
+ "type": "number",
55389
+ "const": 6
55390
+ }
55391
+ },
55392
+ "required": ["currency", "microdollars", "scale"]
55393
+ },
55394
+ "consumed": {
55395
+ "type": "object",
55396
+ "properties": {
55397
+ "currency": {
55398
+ "type": "string",
55399
+ "const": "USD"
55400
+ },
55401
+ "microdollars": {
55402
+ "type": "string",
55403
+ "pattern": "^(?:0|[1-9]\\d*)$"
55404
+ },
55405
+ "scale": {
55406
+ "type": "number",
55407
+ "const": 6
55408
+ }
55409
+ },
55410
+ "required": ["currency", "microdollars", "scale"]
55411
+ },
55412
+ "reserved": {
55413
+ "type": "object",
55414
+ "properties": {
55415
+ "currency": {
55416
+ "type": "string",
55417
+ "const": "USD"
55418
+ },
55419
+ "microdollars": {
55420
+ "type": "string",
55421
+ "pattern": "^(?:0|[1-9]\\d*)$"
55422
+ },
55423
+ "scale": {
55424
+ "type": "number",
55425
+ "const": 6
55426
+ }
55427
+ },
55428
+ "required": ["currency", "microdollars", "scale"]
55429
+ },
55430
+ "byKind": {
55431
+ "type": "object",
55432
+ "properties": {
55433
+ "purchased": {
55434
+ "type": "object",
55435
+ "properties": {
55436
+ "available": {
55437
+ "type": "object",
55438
+ "properties": {
55439
+ "currency": {
55440
+ "type": "string",
55441
+ "const": "USD"
55442
+ },
55443
+ "microdollars": {
55444
+ "type": "string",
55445
+ "pattern": "^(?:0|[1-9]\\d*)$"
55446
+ },
55447
+ "scale": {
55448
+ "type": "number",
55449
+ "const": 6
55450
+ }
55451
+ },
55452
+ "required": [
55453
+ "currency",
55454
+ "microdollars",
55455
+ "scale"
55456
+ ]
55457
+ },
55458
+ "reserved": {
55459
+ "type": "object",
55460
+ "properties": {
55461
+ "currency": {
55462
+ "type": "string",
55463
+ "const": "USD"
55464
+ },
55465
+ "microdollars": {
55466
+ "type": "string",
55467
+ "pattern": "^(?:0|[1-9]\\d*)$"
55468
+ },
55469
+ "scale": {
55470
+ "type": "number",
55471
+ "const": 6
55472
+ }
55473
+ },
55474
+ "required": [
55475
+ "currency",
55476
+ "microdollars",
55477
+ "scale"
55478
+ ]
55479
+ },
55480
+ "consumed": {
55481
+ "type": "object",
55482
+ "properties": {
55483
+ "currency": {
55484
+ "type": "string",
55485
+ "const": "USD"
55486
+ },
55487
+ "microdollars": {
55488
+ "type": "string",
55489
+ "pattern": "^(?:0|[1-9]\\d*)$"
55490
+ },
55491
+ "scale": {
55492
+ "type": "number",
55493
+ "const": 6
55494
+ }
55495
+ },
55496
+ "required": [
55497
+ "currency",
55498
+ "microdollars",
55499
+ "scale"
55500
+ ]
55501
+ },
55502
+ "forfeited": {
55503
+ "type": "object",
55504
+ "properties": {
55505
+ "currency": {
55506
+ "type": "string",
55507
+ "const": "USD"
55508
+ },
55509
+ "microdollars": {
55510
+ "type": "string",
55511
+ "pattern": "^(?:0|[1-9]\\d*)$"
55512
+ },
55513
+ "scale": {
55514
+ "type": "number",
55515
+ "const": 6
55516
+ }
55517
+ },
55518
+ "required": [
55519
+ "currency",
55520
+ "microdollars",
55521
+ "scale"
55522
+ ]
55523
+ },
55524
+ "granted": {
55525
+ "type": "object",
55526
+ "properties": {
55527
+ "currency": {
55528
+ "type": "string",
55529
+ "const": "USD"
55530
+ },
55531
+ "microdollars": {
55532
+ "type": "string",
55533
+ "pattern": "^(?:0|[1-9]\\d*)$"
55534
+ },
55535
+ "scale": {
55536
+ "type": "number",
55537
+ "const": 6
55538
+ }
55539
+ },
55540
+ "required": [
55541
+ "currency",
55542
+ "microdollars",
55543
+ "scale"
55544
+ ]
55545
+ },
55546
+ "expiresAt": {
55547
+ "type": "string",
55548
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
53110
55549
  }
55550
+ },
55551
+ "required": [
55552
+ "available",
55553
+ "reserved",
55554
+ "consumed",
55555
+ "forfeited",
55556
+ "granted"
53111
55557
  ]
53112
55558
  },
53113
- "hardCap": {
53114
- "anyOf": [
53115
- {
55559
+ "trial": {
55560
+ "type": "object",
55561
+ "properties": {
55562
+ "available": {
53116
55563
  "type": "object",
53117
55564
  "properties": {
53118
55565
  "currency": {
@@ -53134,95 +55581,235 @@
53134
55581
  "scale"
53135
55582
  ]
53136
55583
  },
53137
- {
53138
- "type": "null"
55584
+ "reserved": {
55585
+ "type": "object",
55586
+ "properties": {
55587
+ "currency": {
55588
+ "type": "string",
55589
+ "const": "USD"
55590
+ },
55591
+ "microdollars": {
55592
+ "type": "string",
55593
+ "pattern": "^(?:0|[1-9]\\d*)$"
55594
+ },
55595
+ "scale": {
55596
+ "type": "number",
55597
+ "const": 6
55598
+ }
55599
+ },
55600
+ "required": [
55601
+ "currency",
55602
+ "microdollars",
55603
+ "scale"
55604
+ ]
55605
+ },
55606
+ "consumed": {
55607
+ "type": "object",
55608
+ "properties": {
55609
+ "currency": {
55610
+ "type": "string",
55611
+ "const": "USD"
55612
+ },
55613
+ "microdollars": {
55614
+ "type": "string",
55615
+ "pattern": "^(?:0|[1-9]\\d*)$"
55616
+ },
55617
+ "scale": {
55618
+ "type": "number",
55619
+ "const": 6
55620
+ }
55621
+ },
55622
+ "required": [
55623
+ "currency",
55624
+ "microdollars",
55625
+ "scale"
55626
+ ]
55627
+ },
55628
+ "forfeited": {
55629
+ "type": "object",
55630
+ "properties": {
55631
+ "currency": {
55632
+ "type": "string",
55633
+ "const": "USD"
55634
+ },
55635
+ "microdollars": {
55636
+ "type": "string",
55637
+ "pattern": "^(?:0|[1-9]\\d*)$"
55638
+ },
55639
+ "scale": {
55640
+ "type": "number",
55641
+ "const": 6
55642
+ }
55643
+ },
55644
+ "required": [
55645
+ "currency",
55646
+ "microdollars",
55647
+ "scale"
55648
+ ]
55649
+ },
55650
+ "granted": {
55651
+ "type": "object",
55652
+ "properties": {
55653
+ "currency": {
55654
+ "type": "string",
55655
+ "const": "USD"
55656
+ },
55657
+ "microdollars": {
55658
+ "type": "string",
55659
+ "pattern": "^(?:0|[1-9]\\d*)$"
55660
+ },
55661
+ "scale": {
55662
+ "type": "number",
55663
+ "const": 6
55664
+ }
55665
+ },
55666
+ "required": [
55667
+ "currency",
55668
+ "microdollars",
55669
+ "scale"
55670
+ ]
55671
+ },
55672
+ "expiresAt": {
55673
+ "type": "string",
55674
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
53139
55675
  }
55676
+ },
55677
+ "required": [
55678
+ "available",
55679
+ "reserved",
55680
+ "consumed",
55681
+ "forfeited",
55682
+ "granted"
53140
55683
  ]
53141
- }
53142
- },
53143
- "required": ["advisoryBudget", "hardCap"]
53144
- },
53145
- "desiredRevision": {
53146
- "type": "integer",
53147
- "minimum": 0,
53148
- "maximum": 9007199254740991
53149
- },
53150
- "effectiveRevision": {
53151
- "type": "integer",
53152
- "minimum": 0,
53153
- "maximum": 9007199254740991
53154
- },
53155
- "pending": {
53156
- "type": "boolean"
53157
- }
53158
- },
53159
- "required": [
53160
- "desired",
53161
- "desiredRevision",
53162
- "effectiveRevision",
53163
- "pending"
53164
- ]
53165
- },
53166
- "closedAt": {
53167
- "type": "string",
53168
- "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
53169
- },
53170
- "credit": {
53171
- "type": "object",
53172
- "properties": {
53173
- "available": {
53174
- "type": "object",
53175
- "properties": {
53176
- "currency": {
53177
- "type": "string",
53178
- "const": "USD"
53179
- },
53180
- "microdollars": {
53181
- "type": "string",
53182
- "pattern": "^-?(?:0|[1-9]\\d*)$"
53183
- },
53184
- "scale": {
53185
- "type": "number",
53186
- "const": 6
53187
- }
53188
- },
53189
- "required": ["currency", "microdollars", "scale"]
53190
- },
53191
- "consumed": {
53192
- "type": "object",
53193
- "properties": {
53194
- "currency": {
53195
- "type": "string",
53196
- "const": "USD"
53197
- },
53198
- "microdollars": {
53199
- "type": "string",
53200
- "pattern": "^(?:0|[1-9]\\d*)$"
53201
- },
53202
- "scale": {
53203
- "type": "number",
53204
- "const": 6
53205
- }
53206
- },
53207
- "required": ["currency", "microdollars", "scale"]
53208
- },
53209
- "reserved": {
53210
- "type": "object",
53211
- "properties": {
53212
- "currency": {
53213
- "type": "string",
53214
- "const": "USD"
53215
55684
  },
53216
- "microdollars": {
53217
- "type": "string",
53218
- "pattern": "^(?:0|[1-9]\\d*)$"
53219
- },
53220
- "scale": {
53221
- "type": "number",
53222
- "const": 6
55685
+ "promotional": {
55686
+ "type": "object",
55687
+ "properties": {
55688
+ "available": {
55689
+ "type": "object",
55690
+ "properties": {
55691
+ "currency": {
55692
+ "type": "string",
55693
+ "const": "USD"
55694
+ },
55695
+ "microdollars": {
55696
+ "type": "string",
55697
+ "pattern": "^(?:0|[1-9]\\d*)$"
55698
+ },
55699
+ "scale": {
55700
+ "type": "number",
55701
+ "const": 6
55702
+ }
55703
+ },
55704
+ "required": [
55705
+ "currency",
55706
+ "microdollars",
55707
+ "scale"
55708
+ ]
55709
+ },
55710
+ "reserved": {
55711
+ "type": "object",
55712
+ "properties": {
55713
+ "currency": {
55714
+ "type": "string",
55715
+ "const": "USD"
55716
+ },
55717
+ "microdollars": {
55718
+ "type": "string",
55719
+ "pattern": "^(?:0|[1-9]\\d*)$"
55720
+ },
55721
+ "scale": {
55722
+ "type": "number",
55723
+ "const": 6
55724
+ }
55725
+ },
55726
+ "required": [
55727
+ "currency",
55728
+ "microdollars",
55729
+ "scale"
55730
+ ]
55731
+ },
55732
+ "consumed": {
55733
+ "type": "object",
55734
+ "properties": {
55735
+ "currency": {
55736
+ "type": "string",
55737
+ "const": "USD"
55738
+ },
55739
+ "microdollars": {
55740
+ "type": "string",
55741
+ "pattern": "^(?:0|[1-9]\\d*)$"
55742
+ },
55743
+ "scale": {
55744
+ "type": "number",
55745
+ "const": 6
55746
+ }
55747
+ },
55748
+ "required": [
55749
+ "currency",
55750
+ "microdollars",
55751
+ "scale"
55752
+ ]
55753
+ },
55754
+ "forfeited": {
55755
+ "type": "object",
55756
+ "properties": {
55757
+ "currency": {
55758
+ "type": "string",
55759
+ "const": "USD"
55760
+ },
55761
+ "microdollars": {
55762
+ "type": "string",
55763
+ "pattern": "^(?:0|[1-9]\\d*)$"
55764
+ },
55765
+ "scale": {
55766
+ "type": "number",
55767
+ "const": 6
55768
+ }
55769
+ },
55770
+ "required": [
55771
+ "currency",
55772
+ "microdollars",
55773
+ "scale"
55774
+ ]
55775
+ },
55776
+ "granted": {
55777
+ "type": "object",
55778
+ "properties": {
55779
+ "currency": {
55780
+ "type": "string",
55781
+ "const": "USD"
55782
+ },
55783
+ "microdollars": {
55784
+ "type": "string",
55785
+ "pattern": "^(?:0|[1-9]\\d*)$"
55786
+ },
55787
+ "scale": {
55788
+ "type": "number",
55789
+ "const": 6
55790
+ }
55791
+ },
55792
+ "required": [
55793
+ "currency",
55794
+ "microdollars",
55795
+ "scale"
55796
+ ]
55797
+ },
55798
+ "expiresAt": {
55799
+ "type": "string",
55800
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
55801
+ }
55802
+ },
55803
+ "required": [
55804
+ "available",
55805
+ "reserved",
55806
+ "consumed",
55807
+ "forfeited",
55808
+ "granted"
55809
+ ]
53223
55810
  }
53224
55811
  },
53225
- "required": ["currency", "microdollars", "scale"]
55812
+ "required": ["purchased", "trial", "promotional"]
53226
55813
  }
53227
55814
  },
53228
55815
  "required": ["available", "consumed", "reserved"]
@@ -57877,6 +60464,17 @@
57877
60464
  "pattern": "^ep_[0-9abcdefghjkmnpqrstvwxyz]{26}$"
57878
60465
  }
57879
60466
  },
60467
+ {
60468
+ "in": "query",
60469
+ "name": "external_identifier",
60470
+ "required": false,
60471
+ "schema": {
60472
+ "type": "string",
60473
+ "minLength": 1,
60474
+ "maxLength": 256,
60475
+ "description": "Host application identifier, matched exactly and case-sensitively; at most 256 UTF-8 bytes. Readable by schedule readers; do not include secrets."
60476
+ }
60477
+ },
57880
60478
  {
57881
60479
  "in": "query",
57882
60480
  "name": "from",
@@ -57925,6 +60523,17 @@
57925
60523
  "pattern": "^sch_[0-9abcdefghjkmnpqrstvwxyz]{26}$"
57926
60524
  }
57927
60525
  },
60526
+ {
60527
+ "in": "query",
60528
+ "name": "tag",
60529
+ "required": false,
60530
+ "schema": {
60531
+ "type": "string",
60532
+ "minLength": 1,
60533
+ "maxLength": 64,
60534
+ "description": "An exact, case-sensitive tag of at most 64 UTF-8 bytes."
60535
+ }
60536
+ },
57928
60537
  {
57929
60538
  "in": "query",
57930
60539
  "name": "to",
@@ -61978,6 +64587,23 @@
61978
64587
  "minLength": 1,
61979
64588
  "maxLength": 120
61980
64589
  },
64590
+ "external_identifier": {
64591
+ "type": "string",
64592
+ "minLength": 1,
64593
+ "maxLength": 256,
64594
+ "description": "Host application identifier, matched exactly and case-sensitively; at most 256 UTF-8 bytes. Readable by schedule readers; do not include secrets."
64595
+ },
64596
+ "tags": {
64597
+ "maxItems": 16,
64598
+ "type": "array",
64599
+ "items": {
64600
+ "type": "string",
64601
+ "minLength": 1,
64602
+ "maxLength": 64,
64603
+ "description": "An exact, case-sensitive tag of at most 64 UTF-8 bytes."
64604
+ },
64605
+ "description": "Up to 16 distinct searchable tags. Omission preserves tags on replacement; [] clears them."
64606
+ },
61981
64607
  "partitionKey": {
61982
64608
  "type": "string",
61983
64609
  "minLength": 1,
@@ -62972,6 +65598,23 @@
62972
65598
  "minLength": 1,
62973
65599
  "maxLength": 120
62974
65600
  },
65601
+ "external_identifier": {
65602
+ "type": "string",
65603
+ "minLength": 1,
65604
+ "maxLength": 256,
65605
+ "description": "Host application identifier, matched exactly and case-sensitively; at most 256 UTF-8 bytes. Readable by schedule readers; do not include secrets."
65606
+ },
65607
+ "tags": {
65608
+ "maxItems": 16,
65609
+ "type": "array",
65610
+ "items": {
65611
+ "type": "string",
65612
+ "minLength": 1,
65613
+ "maxLength": 64,
65614
+ "description": "An exact, case-sensitive tag of at most 64 UTF-8 bytes."
65615
+ },
65616
+ "description": "Up to 16 distinct searchable tags. Omission preserves tags on replacement; [] clears them."
65617
+ },
62975
65618
  "partitionKey": {
62976
65619
  "type": "string",
62977
65620
  "minLength": 1,
@@ -63968,6 +66611,23 @@
63968
66611
  "minLength": 1,
63969
66612
  "maxLength": 120
63970
66613
  },
66614
+ "external_identifier": {
66615
+ "type": "string",
66616
+ "minLength": 1,
66617
+ "maxLength": 256,
66618
+ "description": "Host application identifier, matched exactly and case-sensitively; at most 256 UTF-8 bytes. Readable by schedule readers; do not include secrets."
66619
+ },
66620
+ "tags": {
66621
+ "maxItems": 16,
66622
+ "type": "array",
66623
+ "items": {
66624
+ "type": "string",
66625
+ "minLength": 1,
66626
+ "maxLength": 64,
66627
+ "description": "An exact, case-sensitive tag of at most 64 UTF-8 bytes."
66628
+ },
66629
+ "description": "Up to 16 distinct searchable tags. Omission preserves tags on replacement; [] clears them."
66630
+ },
63971
66631
  "partitionKey": {
63972
66632
  "type": "string",
63973
66633
  "minLength": 1,