@inklok/api-spec 7.9.2 → 7.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/openapi.yaml +170 -5
  2. package/package.json +1 -1
package/openapi.yaml CHANGED
@@ -8,7 +8,7 @@ info:
8
8
  Authenticate using an API key or bearer token, then use the resources below to manage
9
9
  templates, agreements, documents, and signing. For your first integration, start with
10
10
  the Quick Start guide.
11
- version: "7.9.2"
11
+ version: "7.10.0"
12
12
  contact:
13
13
  name: Inklok API Support
14
14
  email: support@inklok.com
@@ -746,13 +746,108 @@ paths:
746
746
  '500':
747
747
  $ref: '#/components/responses/InternalServerError'
748
748
 
749
+ /v1/platform/feature-flags:
750
+ get:
751
+ operationId: listPlatformFeatureFlags
752
+ summary: List feature flags
753
+ x-internal: true
754
+ x-visibility: internal
755
+ x-required-global-roles: [PLATFORM_ADMIN]
756
+ tags: [Platform]
757
+ responses:
758
+ '200':
759
+ description: Feature flag definitions
760
+ content:
761
+ application/json:
762
+ schema:
763
+ type: object
764
+ required: [featureFlags]
765
+ properties:
766
+ featureFlags:
767
+ type: array
768
+ items: { $ref: '#/components/schemas/FeatureFlag' }
769
+ '401': { $ref: '#/components/responses/Unauthorized' }
770
+ '403': { $ref: '#/components/responses/Forbidden' }
771
+ '500': { $ref: '#/components/responses/InternalServerError' }
772
+ post:
773
+ operationId: createPlatformFeatureFlag
774
+ summary: Create a feature flag
775
+ x-internal: true
776
+ x-visibility: internal
777
+ x-required-global-roles: [PLATFORM_ADMIN]
778
+ tags: [Platform]
779
+ requestBody:
780
+ required: true
781
+ content:
782
+ application/json:
783
+ schema: { $ref: '#/components/schemas/CreateFeatureFlagRequest' }
784
+ responses:
785
+ '201':
786
+ description: Created feature flag
787
+ content:
788
+ application/json:
789
+ schema: { $ref: '#/components/schemas/FeatureFlag' }
790
+ '400': { $ref: '#/components/responses/BadRequest' }
791
+ '401': { $ref: '#/components/responses/Unauthorized' }
792
+ '403': { $ref: '#/components/responses/Forbidden' }
793
+ '409': { description: A feature flag with the key already exists }
794
+ '500': { $ref: '#/components/responses/InternalServerError' }
795
+
796
+ /v1/platform/feature-flags/{key}:
797
+ parameters:
798
+ - in: path
799
+ name: key
800
+ required: true
801
+ schema: { type: string, pattern: '^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$' }
802
+ get:
803
+ operationId: getPlatformFeatureFlag
804
+ summary: Get a feature flag
805
+ x-internal: true
806
+ x-visibility: internal
807
+ x-required-global-roles: [PLATFORM_ADMIN]
808
+ tags: [Platform]
809
+ responses:
810
+ '200':
811
+ description: Feature flag
812
+ content:
813
+ application/json:
814
+ schema: { $ref: '#/components/schemas/FeatureFlag' }
815
+ '401': { $ref: '#/components/responses/Unauthorized' }
816
+ '403': { $ref: '#/components/responses/Forbidden' }
817
+ '404': { $ref: '#/components/responses/NotFound' }
818
+ '500': { $ref: '#/components/responses/InternalServerError' }
819
+ patch:
820
+ operationId: updatePlatformFeatureFlag
821
+ summary: Update a feature flag
822
+ x-internal: true
823
+ x-visibility: internal
824
+ x-required-global-roles: [PLATFORM_ADMIN]
825
+ tags: [Platform]
826
+ requestBody:
827
+ required: true
828
+ content:
829
+ application/json:
830
+ schema: { $ref: '#/components/schemas/UpdateFeatureFlagRequest' }
831
+ responses:
832
+ '200':
833
+ description: Updated feature flag
834
+ content:
835
+ application/json:
836
+ schema: { $ref: '#/components/schemas/FeatureFlag' }
837
+ '400': { $ref: '#/components/responses/BadRequest' }
838
+ '401': { $ref: '#/components/responses/Unauthorized' }
839
+ '403': { $ref: '#/components/responses/Forbidden' }
840
+ '404': { $ref: '#/components/responses/NotFound' }
841
+ '500': { $ref: '#/components/responses/InternalServerError' }
842
+
749
843
  /platform/api-usage:
750
844
  get:
751
845
  operationId: getPlatformApiUsage
752
846
  summary: Get Platform API usage health
753
847
  x-visibility: internal
754
848
  description: |
755
- Returns a small operational API usage health view for platform administrators.
849
+ Returns a small operational published-API usage health view for platform administrators.
850
+ Cognito-authenticated first-party application traffic is excluded.
756
851
  This endpoint uses existing usage counters and does not expose customer-facing analytics.
757
852
  x-required-global-roles: [PLATFORM_ADMIN]
758
853
  tags:
@@ -778,6 +873,16 @@ paths:
778
873
  - usagePercentage
779
874
  default: throttleCount
780
875
  description: Sort order for returned organizations.
876
+ - in: query
877
+ name: filter
878
+ schema:
879
+ type: string
880
+ enum:
881
+ - all
882
+ - throttled
883
+ - approaching
884
+ default: all
885
+ description: Optional status subset. Approaching means non-throttled organizations at 60% usage or higher.
781
886
  - in: query
782
887
  name: limit
783
888
  schema:
@@ -3894,6 +3999,7 @@ components:
3894
3999
  - orgs
3895
4000
  - emails
3896
4001
  - profile
4002
+ - featureFlags
3897
4003
  properties:
3898
4004
  orgs:
3899
4005
  type: array
@@ -3912,6 +4018,50 @@ components:
3912
4018
  - PLATFORM_ADMIN
3913
4019
  profile:
3914
4020
  $ref: '#/components/schemas/BootstrapProfile'
4021
+ featureFlags:
4022
+ type: object
4023
+ additionalProperties:
4024
+ type: boolean
4025
+ description: Effective feature availability for this principal; targeting and audit fields are not included.
4026
+
4027
+ FeatureFlag:
4028
+ type: object
4029
+ additionalProperties: false
4030
+ required: [key, name, enabledForTestUsers, enabledForCustomers, enabledForApiKeys, createdAt, createdBy, updatedAt, updatedBy]
4031
+ properties:
4032
+ key: { type: string, pattern: '^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$' }
4033
+ name: { type: string, minLength: 2, maxLength: 120 }
4034
+ description: { type: string, maxLength: 1000 }
4035
+ enabledForTestUsers: { type: boolean }
4036
+ enabledForCustomers: { type: boolean }
4037
+ enabledForApiKeys: { type: boolean }
4038
+ createdAt: { type: string, format: date-time }
4039
+ createdBy: { type: string }
4040
+ updatedAt: { type: string, format: date-time }
4041
+ updatedBy: { type: string }
4042
+
4043
+ CreateFeatureFlagRequest:
4044
+ type: object
4045
+ additionalProperties: false
4046
+ required: [key, name]
4047
+ properties:
4048
+ key: { type: string, minLength: 2, maxLength: 80, pattern: '^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$' }
4049
+ name: { type: string, minLength: 2, maxLength: 120 }
4050
+ description: { type: string, maxLength: 1000 }
4051
+ enabledForTestUsers: { type: boolean, default: false }
4052
+ enabledForCustomers: { type: boolean, default: false }
4053
+ enabledForApiKeys: { type: boolean, default: false }
4054
+
4055
+ UpdateFeatureFlagRequest:
4056
+ type: object
4057
+ additionalProperties: false
4058
+ minProperties: 1
4059
+ properties:
4060
+ name: { type: string, minLength: 2, maxLength: 120 }
4061
+ description: { type: string, nullable: true, maxLength: 1000 }
4062
+ enabledForTestUsers: { type: boolean }
4063
+ enabledForCustomers: { type: boolean }
4064
+ enabledForApiKeys: { type: boolean }
3915
4065
 
3916
4066
  MeBillingSubscription:
3917
4067
  type: object
@@ -5069,10 +5219,13 @@ components:
5069
5219
  required:
5070
5220
  - window
5071
5221
  - sort
5222
+ - filter
5072
5223
  - limit
5073
5224
  - nextCursor
5074
5225
  - organizations
5075
5226
  - totalOrganizations
5227
+ - totalThrottledOrganizations
5228
+ - totalApproachingLimitOrganizations
5076
5229
  - dataSource
5077
5230
  - generatedAt
5078
5231
  properties:
@@ -5088,6 +5241,12 @@ components:
5088
5241
  enum:
5089
5242
  - throttleCount
5090
5243
  - usagePercentage
5244
+ filter:
5245
+ type: string
5246
+ enum:
5247
+ - all
5248
+ - throttled
5249
+ - approaching
5091
5250
  limit:
5092
5251
  type: integer
5093
5252
  minimum: 1
@@ -5101,6 +5260,12 @@ components:
5101
5260
  totalOrganizations:
5102
5261
  type: integer
5103
5262
  minimum: 0
5263
+ totalThrottledOrganizations:
5264
+ type: integer
5265
+ minimum: 0
5266
+ totalApproachingLimitOrganizations:
5267
+ type: integer
5268
+ minimum: 0
5104
5269
  dataSource:
5105
5270
  type: object
5106
5271
  required:
@@ -5125,9 +5290,9 @@ components:
5125
5290
  enum:
5126
5291
  - peak_minute
5127
5292
  - daily_capacity
5128
- generatedAt:
5129
- type: string
5130
- format: date-time
5293
+ generatedAt:
5294
+ type: string
5295
+ format: date-time
5131
5296
 
5132
5297
  PlatformBillingActivityType:
5133
5298
  type: string
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inklok/api-spec",
3
- "version": "7.9.2",
3
+ "version": "7.10.0",
4
4
  "description": "Canonical OpenAPI specification for the Inklok public API.",
5
5
  "main": "openapi.yaml",
6
6
  "license": "MIT",