@inklok/api-spec 7.9.3 → 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 +140 -1
  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.3"
11
+ version: "7.10.0"
12
12
  contact:
13
13
  name: Inklok API Support
14
14
  email: support@inklok.com
@@ -746,6 +746,100 @@ 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
@@ -3905,6 +3999,7 @@ components:
3905
3999
  - orgs
3906
4000
  - emails
3907
4001
  - profile
4002
+ - featureFlags
3908
4003
  properties:
3909
4004
  orgs:
3910
4005
  type: array
@@ -3923,6 +4018,50 @@ components:
3923
4018
  - PLATFORM_ADMIN
3924
4019
  profile:
3925
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 }
3926
4065
 
3927
4066
  MeBillingSubscription:
3928
4067
  type: object
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inklok/api-spec",
3
- "version": "7.9.3",
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",