diff --git a/backend/edge-api/pom.xml b/backend/edge-api/pom.xml index 5eb71c134..7a13cf6e6 100644 --- a/backend/edge-api/pom.xml +++ b/backend/edge-api/pom.xml @@ -58,7 +58,7 @@ io.featurehub.tooling maven-openapi-publisher - 1.1 + 1.2 export @@ -89,7 +89,7 @@ io.featurehub.tooling maven-openapi-publisher - 1.1 + 1.2 export diff --git a/backend/enricher-api/pom.xml b/backend/enricher-api/pom.xml index 4fb69b23b..e367c1a3c 100644 --- a/backend/enricher-api/pom.xml +++ b/backend/enricher-api/pom.xml @@ -83,7 +83,7 @@ io.featurehub.tooling maven-openapi-publisher - 1.1 + 1.2 publish @@ -114,7 +114,7 @@ io.featurehub.tooling maven-openapi-publisher - 1.1 + 1.2 export diff --git a/backend/messaging-api/pom.xml b/backend/messaging-api/pom.xml index 53fbbc251..9c90a936c 100644 --- a/backend/messaging-api/pom.xml +++ b/backend/messaging-api/pom.xml @@ -76,7 +76,7 @@ io.featurehub.tooling maven-openapi-publisher - 1.1 + 1.2 publish @@ -107,7 +107,7 @@ io.featurehub.tooling maven-openapi-publisher - 1.1 + 1.2 export diff --git a/backend/mr-api/pom.xml b/backend/mr-api/pom.xml index 689175396..826cd86e2 100644 --- a/backend/mr-api/pom.xml +++ b/backend/mr-api/pom.xml @@ -58,7 +58,7 @@ io.featurehub.tooling maven-openapi-publisher - 1.1 + 1.2 publish @@ -89,7 +89,7 @@ io.featurehub.tooling maven-openapi-publisher - 1.1 + 1.2 export diff --git a/current-rc.txt b/current-rc.txt index 2ea4e3f38..bd8bf882d 100644 --- a/current-rc.txt +++ b/current-rc.txt @@ -1 +1 @@ -1.7.0-RC +1.7.0 diff --git a/docs/antora.yml b/docs/antora.yml index aafef7b1e..5bf42f884 100644 --- a/docs/antora.yml +++ b/docs/antora.yml @@ -2,7 +2,7 @@ name: featurehub version: 1.7.0 start_page: ROOT:index.adoc title: FeatureHub -prerelease: -rc +#prerelease: -rc # comment nav: - modules/ROOT/nav.adoc diff --git a/infra/api-bucket/files/edge/releases.json b/infra/api-bucket/files/edge/releases.json index abad6e4b0..86c5b468a 100644 --- a/infra/api-bucket/files/edge/releases.json +++ b/infra/api-bucket/files/edge/releases.json @@ -1,5 +1,5 @@ { - "latest" : "1.1.5", + "latest" : "1.1.6", "versions" : [ "1.1.2", "1.1.3", "1.1.4", "1.1.5", "1.1.6" ], - "published" : [ "1.1.2", "1.1.3", "1.1.4", "1.1.5" ] + "published" : [ "1.1.2", "1.1.3", "1.1.4", "1.1.5", "1.1.6" ] } \ No newline at end of file diff --git a/infra/api-bucket/files/messaging/releases.json b/infra/api-bucket/files/messaging/releases.json index 1240a0746..41c62aeac 100644 --- a/infra/api-bucket/files/messaging/releases.json +++ b/infra/api-bucket/files/messaging/releases.json @@ -1,5 +1,5 @@ { - "latest" : "1.1.2", + "latest" : "1.1.3", "versions" : [ "1.1.1", "1.1.2", "1.1.3" ], - "published" : [ "1.1.1", "1.1.2" ] + "published" : [ "1.1.1", "1.1.2", "1.1.3" ] } \ No newline at end of file diff --git a/infra/api-bucket/files/mrapi/1.2.0.yaml b/infra/api-bucket/files/mrapi/1.2.0.yaml index c9b579f0a..a6cc0faa5 100644 --- a/infra/api-bucket/files/mrapi/1.2.0.yaml +++ b/infra/api-bucket/files/mrapi/1.2.0.yaml @@ -4576,6 +4576,13 @@ components: - serviceAccount - sdkServiceAccount default: person + PersonId: + required: + - id + properties: + id: + type: string + format: uuid ApplicationPermissions: required: - applicationRoles diff --git a/infra/api-bucket/files/mrapi/releases.json b/infra/api-bucket/files/mrapi/releases.json index bcc4679d5..b921e8d62 100644 --- a/infra/api-bucket/files/mrapi/releases.json +++ b/infra/api-bucket/files/mrapi/releases.json @@ -1,5 +1,5 @@ { - "latest" : "1.1.12", + "latest" : "1.2.0", "versions" : [ "1.1.5", "1.1.6", "1.1.8", "1.1.9", "1.1.10", "1.1.11", "1.1.12", "1.1.14", "1.2.0" ], - "published" : [ "1.1.5", "1.1.6", "1.1.8", "1.1.9", "1.1.10", "1.1.11", "1.1.12" ] + "published" : [ "1.1.5", "1.1.6", "1.1.8", "1.1.9", "1.1.10", "1.1.11", "1.1.12", "1.2.0" ] } \ No newline at end of file diff --git a/infra/api-bucket/files/webhooks/1.2.0.yaml b/infra/api-bucket/files/webhooks/1.2.0.yaml index d4ca18847..b2e1dbb09 100644 --- a/infra/api-bucket/files/webhooks/1.2.0.yaml +++ b/infra/api-bucket/files/webhooks/1.2.0.yaml @@ -141,6 +141,66 @@ components: type: integer description: used for optimistic locking when renaming a feature format: int64 + CacheFeatureValue: + required: + - id + - key + - locked + - version + properties: + id: + type: string + format: uuid + key: + type: string + locked: + type: boolean + value: + description: default value if no strategy matches. interpreted by type in + parent + rolloutStrategies: + type: array + description: These are custom rollout strategies that only apply to this + feature value. + items: + $ref: '#/components/schemas/CacheRolloutStrategy' + version: + type: integer + description: used for optimistic locking + format: int64 + retired: + type: boolean + description: "if true or null, this feature will visible on edge. if false,\ + \ it will not be passed to the client" + pId: + type: string + description: personIdWhoChanged + format: uuid + CacheRolloutStrategy: + description: This is the model for the rollout strategy as required by Dacha + and Edge + allOf: + - $ref: '#/components/schemas/BaseRolloutStrategy' + - required: + - attributes + - id + type: object + properties: + id: + type: string + description: strategy id + attributes: + type: array + items: + $ref: '#/components/schemas/CacheRolloutStrategyAttribute' + CacheRolloutStrategyAttribute: + allOf: + - $ref: '#/components/schemas/RolloutStrategyAttribute' + - required: + - conditional + - fieldName + - type + type: object FeatureValueType: type: string enum: @@ -148,3 +208,85 @@ components: - STRING - NUMBER - JSON + BaseStrategy: + properties: + percentage: + type: integer + description: value between 0 and 1000000 - for four decimal places + nullable: true + percentageAttributes: + type: array + description: "if you don't wish to apply percentage based on user id, you\ + \ can use one or more attributes defined here" + nullable: true + items: + type: string + default: [] + attributes: + type: array + nullable: true + items: + $ref: '#/components/schemas/RolloutStrategyAttribute' + default: [] + description: "if the feature in an environment is different from its default,\ + \ this will be the reason for it. a rollout strategy is defined at the Application\ + \ level and then applied to a specific feature value. When they are copied\ + \ to the cache layer they are cloned and the feature value for that strategy\ + \ is inserted into the clone and those are published." + BaseRolloutStrategy: + allOf: + - $ref: '#/components/schemas/BaseStrategy' + - type: object + properties: + value: + description: when we attach the RolloutStrategy for Dacha or SSE this + lets us push the value out. Only visible in SDK and SSE Edge. + nullable: true + RolloutStrategyAttribute: + required: + - conditional + - fieldName + - type + properties: + id: + type: string + description: An ID that needs to exist for validation + nullable: true + conditional: + $ref: '#/components/schemas/RolloutStrategyAttributeConditional' + fieldName: + type: string + values: + type: array + description: the value(s) associated with this rule + items: + $ref: '#/components/schemas/RolloutStrategyArrayType' + default: [] + type: + $ref: '#/components/schemas/RolloutStrategyFieldType' + RolloutStrategyArrayType: + description: values depend on the field type + RolloutStrategyFieldType: + type: string + enum: + - STRING + - SEMANTIC_VERSION + - NUMBER + - DATE + - DATETIME + - BOOLEAN + - IP_ADDRESS + RolloutStrategyAttributeConditional: + type: string + enum: + - EQUALS + - ENDS_WITH + - STARTS_WITH + - GREATER + - GREATER_EQUALS + - LESS + - LESS_EQUALS + - NOT_EQUALS + - INCLUDES + - EXCLUDES + - REGEX diff --git a/infra/api-bucket/files/webhooks/releases.json b/infra/api-bucket/files/webhooks/releases.json index 5007cf1c2..59c2731cd 100644 --- a/infra/api-bucket/files/webhooks/releases.json +++ b/infra/api-bucket/files/webhooks/releases.json @@ -1,5 +1,5 @@ { - "latest" : "1.1.2", + "latest" : "1.2.0", "versions" : [ "1.1.1", "1.1.2", "1.2.0" ], - "published" : [ "1.1.1", "1.1.2" ] + "published" : [ "1.1.1", "1.1.2", "1.2.0" ] } \ No newline at end of file