|
7 | 7 | from typing import Any, Dict, List, Optional, Union
|
8 | 8 | from uuid import UUID
|
9 | 9 |
|
10 |
| -from pydantic import AnyUrl, BaseModel, Extra, Field, constr |
| 10 | +from pydantic import AnyUrl, BaseModel, Extra, Field, conint, constr |
11 | 11 | from typing_extensions import Literal
|
12 | 12 |
|
13 | 13 |
|
@@ -96,6 +96,21 @@ class JobType(BaseModel):
|
96 | 96 | )
|
97 | 97 |
|
98 | 98 |
|
| 99 | +class RolloutConfiguration(BaseModel): |
| 100 | + class Config: |
| 101 | + extra = Extra.forbid |
| 102 | + |
| 103 | + initialPercentage: Optional[conint(ge=0, le=100)] = Field( |
| 104 | + 0, description="The percentage of users that should receive the new version initially." |
| 105 | + ) |
| 106 | + maxPercentage: Optional[conint(ge=0, le=100)] = Field( |
| 107 | + 50, description="The percentage of users who should receive the release candidate during the test phase before full rollout." |
| 108 | + ) |
| 109 | + advanceDelayMinutes: Optional[conint(ge=10)] = Field( |
| 110 | + 10, description="The number of minutes to wait before advancing the rollout percentage." |
| 111 | + ) |
| 112 | + |
| 113 | + |
99 | 114 | class StreamBreakingChangeScope(BaseModel):
|
100 | 115 | class Config:
|
101 | 116 | extra = Extra.forbid
|
@@ -268,6 +283,8 @@ class ConnectorReleases(BaseModel):
|
268 | 283 | class Config:
|
269 | 284 | extra = Extra.forbid
|
270 | 285 |
|
| 286 | + isReleaseCandidate: Optional[bool] = Field(False, description="Whether the release is eligible to be a release candidate.") |
| 287 | + rolloutConfiguration: Optional[RolloutConfiguration] = None |
271 | 288 | breakingChanges: ConnectorBreakingChanges
|
272 | 289 | migrationDocumentationUrl: Optional[AnyUrl] = Field(
|
273 | 290 | None,
|
|
0 commit comments