diff --git a/.github/workflows/manual_regenerate_models.yaml b/.github/workflows/manual_regenerate_models.yaml index 86793801..c19f8de5 100644 --- a/.github/workflows/manual_regenerate_models.yaml +++ b/.github/workflows/manual_regenerate_models.yaml @@ -17,6 +17,10 @@ on: description: Workflow run ID in apify/apify-docs that built the OpenAPI spec artifact (optional for manual runs) required: false type: string + docs_pr_author: + description: GitHub login of the apify-docs PR author (optional for manual runs) + required: false + type: string permissions: contents: write @@ -35,6 +39,9 @@ jobs: DOCS_PR_NUMBER: ${{ inputs.docs_pr_number }} BRANCH: ${{ inputs.docs_pr_number && format('update-models-docs-pr-{0}', inputs.docs_pr_number) || 'update-models-manual' }} TITLE: "${{ inputs.docs_pr_number && format('[TODO]: update generated models from apify-docs PR #{0}', inputs.docs_pr_number) || '[TODO]: update generated models from published OpenAPI spec' }}" + ASSIGNEE: ${{ inputs.docs_pr_author || github.actor }} + REVIEWER: vdusek + LABEL: t-tooling steps: - name: Validate inputs @@ -54,6 +61,17 @@ jobs: with: token: ${{ secrets.APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN }} + # If the branch already exists on the remote (e.g. from a previous run, possibly with + # reviewer commits), check it out to build on top of it instead of starting fresh. + - name: Switch to existing branch or create a new one + run: | + if git ls-remote --exit-code --heads origin "$BRANCH" > /dev/null 2>&1; then + git fetch origin "$BRANCH" + git switch "$BRANCH" + else + git switch -c "$BRANCH" + fi + # Download the pre-built OpenAPI spec artifact from the apify-docs workflow run. # Skipped for manual runs — datamodel-codegen will fetch from the published spec URL instead. - name: Download OpenAPI spec artifact @@ -84,7 +102,7 @@ jobs: uv run poe generate-models fi - - name: Commit model changes + - name: Commit and push model changes id: commit uses: EndBug/add-and-commit@v10 with: @@ -92,9 +110,8 @@ jobs: author_name: apify-service-account author_email: apify-service-account@users.noreply.github.com message: ${{ env.TITLE }} - new_branch: ${{ env.BRANCH }} commit: --no-verify - push: -u origin ${{ env.BRANCH }} --force + push: -u origin ${{ env.BRANCH }} - name: Create or update PR if: steps.commit.outputs.committed == 'true' @@ -111,34 +128,19 @@ jobs: else if [[ -n "$DOCS_PR_NUMBER" ]]; then DOCS_PR_URL="https://github.com/apify/apify-docs/pull/${DOCS_PR_NUMBER}" - BODY=$(cat <> "$GITHUB_OUTPUT" echo "created=true" >> "$GITHUB_OUTPUT" diff --git a/scripts/postprocess_generated_models.py b/scripts/postprocess_generated_models.py index 685f0d1c..9c363335 100644 --- a/scripts/postprocess_generated_models.py +++ b/scripts/postprocess_generated_models.py @@ -8,6 +8,8 @@ nested-$ref limitation), causing datamodel-codegen to generate a duplicate `Type(StrEnum)` class alongside the canonical `ErrorType(StrEnum)`. This script removes the duplicate and rewires references to use `ErrorType`. +- Missing @docs_group decorator: Adds `@docs_group('Models')` to all model classes for API + reference documentation grouping, along with the required import. """ from __future__ import annotations @@ -51,10 +53,27 @@ def deduplicate_error_type_enum(content: str) -> str: return re.sub(r'\n{3,}', '\n\n\n', content) +def add_docs_group_decorators(content: str) -> str: + """Add `@docs_group('Models')` decorator to all model classes and the required import.""" + # Add the import after the existing imports. + content = re.sub( + r'(from pydantic import [^\n]+\n)', + r'\1\nfrom apify_client._docs import docs_group\n', + content, + ) + # Add @docs_group('Models') before every class definition. + return re.sub( + r'\nclass ', + "\n@docs_group('Models')\nclass ", + content, + ) + + def main() -> None: content = MODELS_PATH.read_text() fixed = fix_discriminators(content) fixed = deduplicate_error_type_enum(fixed) + fixed = add_docs_group_decorators(fixed) if fixed != content: MODELS_PATH.write_text(fixed) diff --git a/src/apify_client/_models.py b/src/apify_client/_models.py index 13f39659..be7a738d 100644 --- a/src/apify_client/_models.py +++ b/src/apify_client/_models.py @@ -9,7 +9,10 @@ from pydantic import AnyUrl, AwareDatetime, BaseModel, ConfigDict, EmailStr, Field, RootModel +from apify_client._docs import docs_group + +@docs_group('Models') class PaginationResponse(BaseModel): """Common pagination fields for list responses.""" @@ -39,6 +42,7 @@ class PaginationResponse(BaseModel): """ +@docs_group('Models') class ActorStats(BaseModel): model_config = ConfigDict( extra='allow', @@ -56,6 +60,7 @@ class ActorStats(BaseModel): ] = None +@docs_group('Models') class ActorShort(BaseModel): model_config = ConfigDict( extra='allow', @@ -70,6 +75,7 @@ class ActorShort(BaseModel): stats: ActorStats | None = None +@docs_group('Models') class ListOfActors(PaginationResponse): model_config = ConfigDict( extra='allow', @@ -78,6 +84,7 @@ class ListOfActors(PaginationResponse): items: list[ActorShort] +@docs_group('Models') class ListOfActorsResponse(BaseModel): model_config = ConfigDict( extra='allow', @@ -86,6 +93,7 @@ class ListOfActorsResponse(BaseModel): data: ListOfActors +@docs_group('Models') class Error(BaseModel): model_config = ConfigDict( extra='allow', @@ -101,6 +109,7 @@ class Error(BaseModel): """ +@docs_group('Models') class ErrorResponse(BaseModel): model_config = ConfigDict( extra='allow', @@ -109,6 +118,7 @@ class ErrorResponse(BaseModel): error: Annotated[Error, Field(title='ErrorDetail')] +@docs_group('Models') class VersionSourceType(StrEnum): SOURCE_FILES = 'SOURCE_FILES' GIT_REPO = 'GIT_REPO' @@ -116,6 +126,7 @@ class VersionSourceType(StrEnum): GITHUB_GIST = 'GITHUB_GIST' +@docs_group('Models') class EnvVar(BaseModel): model_config = ConfigDict( extra='allow', @@ -129,11 +140,13 @@ class EnvVar(BaseModel): is_secret: Annotated[bool | None, Field(alias='isSecret', examples=[False])] = None +@docs_group('Models') class SourceCodeFileFormat(StrEnum): BASE64 = 'BASE64' TEXT = 'TEXT' +@docs_group('Models') class SourceCodeFile(BaseModel): model_config = ConfigDict( extra='allow', @@ -144,6 +157,7 @@ class SourceCodeFile(BaseModel): name: Annotated[str, Field(examples=['src/main.js'])] +@docs_group('Models') class SourceCodeFolder(BaseModel): """Represents a folder in the Actor's source code structure. Distinguished from SourceCodeFile by the presence of the `folder` property set to `true`. @@ -164,6 +178,7 @@ class SourceCodeFolder(BaseModel): """ +@docs_group('Models') class Version(BaseModel): model_config = ConfigDict( extra='allow', @@ -191,6 +206,7 @@ class Version(BaseModel): """ +@docs_group('Models') class CommonActorPricingInfo(BaseModel): model_config = ConfigDict( extra='allow', @@ -213,6 +229,7 @@ class CommonActorPricingInfo(BaseModel): reason_for_change: Annotated[str | None, Field(alias='reasonForChange')] = None +@docs_group('Models') class PricingModel(StrEnum): PAY_PER_EVENT = 'PAY_PER_EVENT' PRICE_PER_DATASET_ITEM = 'PRICE_PER_DATASET_ITEM' @@ -220,6 +237,7 @@ class PricingModel(StrEnum): FREE = 'FREE' +@docs_group('Models') class ActorChargeEvent(BaseModel): model_config = ConfigDict( extra='allow', @@ -230,6 +248,7 @@ class ActorChargeEvent(BaseModel): event_description: Annotated[str, Field(alias='eventDescription')] +@docs_group('Models') class PricingPerEvent(BaseModel): model_config = ConfigDict( extra='allow', @@ -238,6 +257,7 @@ class PricingPerEvent(BaseModel): actor_charge_events: Annotated[dict[str, ActorChargeEvent] | None, Field(alias='actorChargeEvents')] = None +@docs_group('Models') class PayPerEventActorPricingInfo(CommonActorPricingInfo): model_config = ConfigDict( extra='allow', @@ -248,6 +268,7 @@ class PayPerEventActorPricingInfo(CommonActorPricingInfo): minimal_max_total_charge_usd: Annotated[float | None, Field(alias='minimalMaxTotalChargeUsd')] = None +@docs_group('Models') class PricePerDatasetItemActorPricingInfo(CommonActorPricingInfo): model_config = ConfigDict( extra='allow', @@ -261,6 +282,7 @@ class PricePerDatasetItemActorPricingInfo(CommonActorPricingInfo): price_per_unit_usd: Annotated[float, Field(alias='pricePerUnitUsd')] +@docs_group('Models') class FlatPricePerMonthActorPricingInfo(CommonActorPricingInfo): model_config = ConfigDict( extra='allow', @@ -277,6 +299,7 @@ class FlatPricePerMonthActorPricingInfo(CommonActorPricingInfo): """ +@docs_group('Models') class FreeActorPricingInfo(CommonActorPricingInfo): model_config = ConfigDict( extra='allow', @@ -285,6 +308,7 @@ class FreeActorPricingInfo(CommonActorPricingInfo): pricing_model: Annotated[Literal['FREE'], Field(alias='pricingModel')] +@docs_group('Models') class ActorPermissionLevel(StrEnum): """Determines permissions that the Actor requires to run. For more information, see the [Actor permissions documentation](https://docs.apify.com/platform/actors/development/permissions).""" @@ -292,6 +316,7 @@ class ActorPermissionLevel(StrEnum): FULL_PERMISSIONS = 'FULL_PERMISSIONS' +@docs_group('Models') class DefaultRunOptions(BaseModel): model_config = ConfigDict( extra='allow', @@ -305,6 +330,7 @@ class DefaultRunOptions(BaseModel): force_permission_level: Annotated[ActorPermissionLevel | None, Field(alias='forcePermissionLevel')] = None +@docs_group('Models') class ActorStandby(BaseModel): model_config = ConfigDict( extra='allow', @@ -320,6 +346,7 @@ class ActorStandby(BaseModel): should_pass_actor_input: Annotated[bool | None, Field(alias='shouldPassActorInput')] = None +@docs_group('Models') class ExampleRunInput(BaseModel): model_config = ConfigDict( extra='allow', @@ -329,6 +356,7 @@ class ExampleRunInput(BaseModel): content_type: Annotated[str | None, Field(alias='contentType', examples=['application/json; charset=utf-8'])] = None +@docs_group('Models') class CreateActorRequest(BaseModel): model_config = ConfigDict( extra='allow', @@ -362,6 +390,7 @@ class CreateActorRequest(BaseModel): is_deprecated: Annotated[bool | None, Field(alias='isDeprecated')] = None +@docs_group('Models') class TaggedBuildInfo(BaseModel): """Information about a tagged build.""" @@ -385,6 +414,7 @@ class TaggedBuildInfo(BaseModel): """ +@docs_group('Models') class Actor(BaseModel): model_config = ConfigDict( extra='allow', @@ -428,6 +458,7 @@ class Actor(BaseModel): """ +@docs_group('Models') class ActorResponse(BaseModel): """Response containing Actor data.""" @@ -438,6 +469,7 @@ class ActorResponse(BaseModel): data: Actor +@docs_group('Models') class EnvVarRequest(EnvVar): model_config = ConfigDict( extra='allow', @@ -445,6 +477,7 @@ class EnvVarRequest(EnvVar): ) +@docs_group('Models') class CreateOrUpdateVersionRequest(BaseModel): model_config = ConfigDict( extra='allow', @@ -472,6 +505,7 @@ class CreateOrUpdateVersionRequest(BaseModel): """ +@docs_group('Models') class BuildTag(BaseModel): model_config = ConfigDict( extra='allow', @@ -480,6 +514,7 @@ class BuildTag(BaseModel): build_id: Annotated[str, Field(alias='buildId')] +@docs_group('Models') class UpdateActorRequest(BaseModel): model_config = ConfigDict( extra='allow', @@ -559,6 +594,7 @@ class UpdateActorRequest(BaseModel): is_deprecated: Annotated[bool | None, Field(alias='isDeprecated')] = None +@docs_group('Models') class ListOfVersions(BaseModel): model_config = ConfigDict( extra='allow', @@ -568,6 +604,7 @@ class ListOfVersions(BaseModel): items: list[Version] +@docs_group('Models') class ListOfVersionsResponse(BaseModel): model_config = ConfigDict( extra='allow', @@ -576,6 +613,7 @@ class ListOfVersionsResponse(BaseModel): data: ListOfVersions +@docs_group('Models') class VersionResponse(BaseModel): model_config = ConfigDict( extra='allow', @@ -584,6 +622,7 @@ class VersionResponse(BaseModel): data: Version +@docs_group('Models') class ErrorType(StrEnum): """Machine-processable error type identifier.""" @@ -605,6 +644,7 @@ class ErrorType(StrEnum): UNSUPPORTED_CONTENT_ENCODING = 'unsupported-content-encoding' +@docs_group('Models') class ErrorDetail(BaseModel): model_config = ConfigDict( extra='allow', @@ -617,6 +657,7 @@ class ErrorDetail(BaseModel): """ +@docs_group('Models') class ActorNotFoundErrorDetail(ErrorDetail): model_config = ConfigDict( extra='allow', @@ -628,6 +669,7 @@ class ActorNotFoundErrorDetail(ErrorDetail): """ +@docs_group('Models') class ActorNotFoundError(BaseModel): model_config = ConfigDict( extra='allow', @@ -636,6 +678,7 @@ class ActorNotFoundError(BaseModel): error: ActorNotFoundErrorDetail | None = None +@docs_group('Models') class RecordNotFoundErrorDetail(ErrorDetail): model_config = ConfigDict( extra='allow', @@ -647,6 +690,7 @@ class RecordNotFoundErrorDetail(ErrorDetail): """ +@docs_group('Models') class ActorVersionNotFoundError(BaseModel): model_config = ConfigDict( extra='allow', @@ -655,6 +699,7 @@ class ActorVersionNotFoundError(BaseModel): error: RecordNotFoundErrorDetail | None = None +@docs_group('Models') class ListOfEnvVars(BaseModel): model_config = ConfigDict( extra='allow', @@ -664,6 +709,7 @@ class ListOfEnvVars(BaseModel): items: list[EnvVar] +@docs_group('Models') class ListOfEnvVarsResponse(BaseModel): model_config = ConfigDict( extra='allow', @@ -672,6 +718,7 @@ class ListOfEnvVarsResponse(BaseModel): data: ListOfEnvVars +@docs_group('Models') class EnvVarResponse(BaseModel): model_config = ConfigDict( extra='allow', @@ -680,6 +727,7 @@ class EnvVarResponse(BaseModel): data: EnvVar +@docs_group('Models') class EnvironmentVariableNotFoundError(BaseModel): model_config = ConfigDict( extra='allow', @@ -688,6 +736,7 @@ class EnvironmentVariableNotFoundError(BaseModel): error: RecordNotFoundErrorDetail | None = None +@docs_group('Models') class WebhookEventType(StrEnum): """Type of event that triggers the webhook.""" @@ -705,6 +754,7 @@ class WebhookEventType(StrEnum): TEST = 'TEST' +@docs_group('Models') class WebhookCondition(BaseModel): model_config = ConfigDict( extra='allow', @@ -715,6 +765,7 @@ class WebhookCondition(BaseModel): actor_run_id: Annotated[str | None, Field(alias='actorRunId', examples=['hgdKZtadYvn4mBpoi'])] = None +@docs_group('Models') class WebhookDispatchStatus(StrEnum): """Status of the webhook dispatch indicating whether the HTTP request was successful.""" @@ -723,6 +774,7 @@ class WebhookDispatchStatus(StrEnum): FAILED = 'FAILED' +@docs_group('Models') class ExampleWebhookDispatch(BaseModel): model_config = ConfigDict( extra='allow', @@ -734,6 +786,7 @@ class ExampleWebhookDispatch(BaseModel): ) +@docs_group('Models') class WebhookStats(BaseModel): model_config = ConfigDict( extra='allow', @@ -742,6 +795,7 @@ class WebhookStats(BaseModel): total_dispatches: Annotated[int, Field(alias='totalDispatches', examples=[1])] +@docs_group('Models') class WebhookShort(BaseModel): model_config = ConfigDict( extra='allow', @@ -762,6 +816,7 @@ class WebhookShort(BaseModel): stats: WebhookStats | None = None +@docs_group('Models') class ListOfWebhooks(PaginationResponse): model_config = ConfigDict( extra='allow', @@ -770,6 +825,7 @@ class ListOfWebhooks(PaginationResponse): items: list[WebhookShort] +@docs_group('Models') class ListOfWebhooksResponse(BaseModel): model_config = ConfigDict( extra='allow', @@ -778,6 +834,7 @@ class ListOfWebhooksResponse(BaseModel): data: ListOfWebhooks +@docs_group('Models') class ActorJobStatus(StrEnum): """Status of an Actor job (run or build).""" @@ -791,6 +848,7 @@ class ActorJobStatus(StrEnum): ABORTED = 'ABORTED' +@docs_group('Models') class RunOrigin(StrEnum): DEVELOPMENT = 'DEVELOPMENT' WEB = 'WEB' @@ -803,6 +861,7 @@ class RunOrigin(StrEnum): STANDBY = 'STANDBY' +@docs_group('Models') class BuildsMeta(BaseModel): model_config = ConfigDict( extra='allow', @@ -819,6 +878,7 @@ class BuildsMeta(BaseModel): """ +@docs_group('Models') class BuildShort(BaseModel): model_config = ConfigDict( extra='allow', @@ -835,6 +895,7 @@ class BuildShort(BaseModel): meta: BuildsMeta | None = None +@docs_group('Models') class ListOfBuilds(PaginationResponse): model_config = ConfigDict( extra='allow', @@ -843,6 +904,7 @@ class ListOfBuilds(PaginationResponse): items: list[BuildShort] +@docs_group('Models') class ListOfBuildsResponse(BaseModel): model_config = ConfigDict( extra='allow', @@ -851,6 +913,7 @@ class ListOfBuildsResponse(BaseModel): data: ListOfBuilds +@docs_group('Models') class BuildStats(BaseModel): model_config = ConfigDict( extra='allow', @@ -861,6 +924,7 @@ class BuildStats(BaseModel): compute_units: Annotated[float, Field(alias='computeUnits', examples=[0.0126994444444444])] +@docs_group('Models') class BuildOptions(BaseModel): model_config = ConfigDict( extra='allow', @@ -872,6 +936,7 @@ class BuildOptions(BaseModel): disk_mbytes: Annotated[int | None, Field(alias='diskMbytes', examples=[2048])] = None +@docs_group('Models') class BuildUsage(BaseModel): model_config = ConfigDict( extra='allow', @@ -880,6 +945,7 @@ class BuildUsage(BaseModel): actor_compute_units: Annotated[float | None, Field(alias='ACTOR_COMPUTE_UNITS', examples=[0.08])] = None +@docs_group('Models') class Storages(BaseModel): model_config = ConfigDict( extra='allow', @@ -891,6 +957,7 @@ class Storages(BaseModel): """ +@docs_group('Models') class ActorDefinition(BaseModel): """The definition of the Actor, the full specification of this field can be found in [Apify docs](https://docs.apify.com/platform/actors/development/actor-definition/actor-json).""" @@ -957,6 +1024,7 @@ class ActorDefinition(BaseModel): """ +@docs_group('Models') class Build(BaseModel): model_config = ConfigDict( extra='allow', @@ -984,6 +1052,7 @@ class Build(BaseModel): actor_definition: Annotated[ActorDefinition | None, Field(alias='actorDefinition')] = None +@docs_group('Models') class BuildResponse(BaseModel): """Response containing Actor build data.""" @@ -994,6 +1063,7 @@ class BuildResponse(BaseModel): data: Build +@docs_group('Models') class UnknownBuildTagErrorDetail(ErrorDetail): model_config = ConfigDict( extra='allow', @@ -1005,6 +1075,7 @@ class UnknownBuildTagErrorDetail(ErrorDetail): """ +@docs_group('Models') class UnknownBuildTagError(BaseModel): model_config = ConfigDict( extra='allow', @@ -1013,6 +1084,7 @@ class UnknownBuildTagError(BaseModel): error: UnknownBuildTagErrorDetail | None = None +@docs_group('Models') class ActorBuildNotFoundError(BaseModel): model_config = ConfigDict( extra='allow', @@ -1021,6 +1093,7 @@ class ActorBuildNotFoundError(BaseModel): error: RecordNotFoundErrorDetail | None = None +@docs_group('Models') class RunMeta(BaseModel): model_config = ConfigDict( extra='allow', @@ -1045,6 +1118,7 @@ class RunMeta(BaseModel): """ +@docs_group('Models') class RunShort(BaseModel): model_config = ConfigDict( extra='allow', @@ -1067,6 +1141,7 @@ class RunShort(BaseModel): default_request_queue_id: Annotated[str, Field(alias='defaultRequestQueueId', examples=['so93g2shcDzK3pA85'])] +@docs_group('Models') class ListOfRuns(PaginationResponse): model_config = ConfigDict( extra='allow', @@ -1075,6 +1150,7 @@ class ListOfRuns(PaginationResponse): items: list[RunShort] +@docs_group('Models') class ListOfRunsResponse(BaseModel): model_config = ConfigDict( extra='allow', @@ -1083,6 +1159,7 @@ class ListOfRunsResponse(BaseModel): data: ListOfRuns +@docs_group('Models') class RunStats(BaseModel): model_config = ConfigDict( extra='allow', @@ -1107,6 +1184,7 @@ class RunStats(BaseModel): compute_units: Annotated[float, Field(alias='computeUnits', examples=[0.13804], ge=0.0)] +@docs_group('Models') class RunOptions(BaseModel): model_config = ConfigDict( extra='allow', @@ -1120,6 +1198,7 @@ class RunOptions(BaseModel): max_total_charge_usd: Annotated[float | None, Field(alias='maxTotalChargeUsd', examples=[5], ge=0.0)] = None +@docs_group('Models') class GeneralAccess(StrEnum): """Defines the general access level for the resource.""" @@ -1129,6 +1208,7 @@ class GeneralAccess(StrEnum): RESTRICTED = 'RESTRICTED' +@docs_group('Models') class RunUsage(BaseModel): model_config = ConfigDict( extra='allow', @@ -1154,6 +1234,7 @@ class RunUsage(BaseModel): proxy_serps: Annotated[int | None, Field(alias='PROXY_SERPS', examples=[3])] = None +@docs_group('Models') class RunUsageUsd(BaseModel): """Resource usage costs in USD. All values are monetary amounts in US dollars.""" @@ -1181,6 +1262,7 @@ class RunUsageUsd(BaseModel): proxy_serps: Annotated[float | None, Field(alias='PROXY_SERPS', examples=[0.003])] = None +@docs_group('Models') class Metamorph(BaseModel): """Information about a metamorph event that occurred during the run.""" @@ -1206,6 +1288,7 @@ class Metamorph(BaseModel): """ +@docs_group('Models') class Datasets(BaseModel): """Aliased dataset IDs for this run.""" @@ -1219,6 +1302,7 @@ class Datasets(BaseModel): """ +@docs_group('Models') class KeyValueStores(BaseModel): """Aliased key-value store IDs for this run.""" @@ -1232,6 +1316,7 @@ class KeyValueStores(BaseModel): """ +@docs_group('Models') class RequestQueues(BaseModel): """Aliased request queue IDs for this run.""" @@ -1245,6 +1330,7 @@ class RequestQueues(BaseModel): """ +@docs_group('Models') class StorageIds(BaseModel): """A map of aliased storage IDs associated with this run, grouped by storage type.""" @@ -1266,6 +1352,7 @@ class StorageIds(BaseModel): """ +@docs_group('Models') class Run(BaseModel): """Represents an Actor run and its associated data.""" @@ -1405,6 +1492,7 @@ class Run(BaseModel): """ +@docs_group('Models') class RunResponse(BaseModel): model_config = ConfigDict( extra='allow', @@ -1413,6 +1501,7 @@ class RunResponse(BaseModel): data: Run +@docs_group('Models') class RunFailedErrorDetail(ErrorDetail): model_config = ConfigDict( extra='allow', @@ -1424,6 +1513,7 @@ class RunFailedErrorDetail(ErrorDetail): """ +@docs_group('Models') class ActorRunFailedError(BaseModel): model_config = ConfigDict( extra='allow', @@ -1432,6 +1522,7 @@ class ActorRunFailedError(BaseModel): error: RunFailedErrorDetail | None = None +@docs_group('Models') class RunTimeoutExceededErrorDetail(ErrorDetail): model_config = ConfigDict( extra='allow', @@ -1443,6 +1534,7 @@ class RunTimeoutExceededErrorDetail(ErrorDetail): """ +@docs_group('Models') class ActorRunTimeoutExceededError(BaseModel): model_config = ConfigDict( extra='allow', @@ -1451,6 +1543,7 @@ class ActorRunTimeoutExceededError(BaseModel): error: RunTimeoutExceededErrorDetail | None = None +@docs_group('Models') class ActorRunNotFoundError(BaseModel): model_config = ConfigDict( extra='allow', @@ -1459,6 +1552,7 @@ class ActorRunNotFoundError(BaseModel): error: RecordNotFoundErrorDetail | None = None +@docs_group('Models') class TaskStats(BaseModel): model_config = ConfigDict( extra='allow', @@ -1467,6 +1561,7 @@ class TaskStats(BaseModel): total_runs: Annotated[int | None, Field(alias='totalRuns', examples=[15])] = None +@docs_group('Models') class TaskShort(BaseModel): model_config = ConfigDict( extra='allow', @@ -1484,6 +1579,7 @@ class TaskShort(BaseModel): stats: TaskStats | None = None +@docs_group('Models') class ListOfTasks(PaginationResponse): model_config = ConfigDict( extra='allow', @@ -1492,6 +1588,7 @@ class ListOfTasks(PaginationResponse): items: list[TaskShort] +@docs_group('Models') class ListOfTasksResponse(BaseModel): model_config = ConfigDict( extra='allow', @@ -1500,6 +1597,7 @@ class ListOfTasksResponse(BaseModel): data: ListOfTasks +@docs_group('Models') class TaskOptions(BaseModel): model_config = ConfigDict( extra='allow', @@ -1513,6 +1611,7 @@ class TaskOptions(BaseModel): restart_on_error: Annotated[bool | None, Field(alias='restartOnError', examples=[False])] = None +@docs_group('Models') class TaskInput(BaseModel): """The input configuration for the Actor task. This is a user-defined JSON object that will be passed to the Actor when the task is run. @@ -1525,6 +1624,7 @@ class TaskInput(BaseModel): ) +@docs_group('Models') class CreateTaskRequest(BaseModel): model_config = ConfigDict( extra='allow', @@ -1538,6 +1638,7 @@ class CreateTaskRequest(BaseModel): actor_standby: Annotated[ActorStandby | None, Field(alias='actorStandby')] = None +@docs_group('Models') class Task(BaseModel): model_config = ConfigDict( extra='allow', @@ -1559,6 +1660,7 @@ class Task(BaseModel): standby_url: Annotated[AnyUrl | None, Field(alias='standbyUrl')] = None +@docs_group('Models') class TaskResponse(BaseModel): """Response containing Actor task data.""" @@ -1569,6 +1671,7 @@ class TaskResponse(BaseModel): data: Task +@docs_group('Models') class UpdateTaskRequest(BaseModel): model_config = ConfigDict( extra='allow', @@ -1581,6 +1684,7 @@ class UpdateTaskRequest(BaseModel): actor_standby: Annotated[ActorStandby | None, Field(alias='actorStandby')] = None +@docs_group('Models') class Webhook(BaseModel): model_config = ConfigDict( extra='allow', @@ -1608,6 +1712,7 @@ class Webhook(BaseModel): stats: WebhookStats | None = None +@docs_group('Models') class UpdateRunRequest(BaseModel): model_config = ConfigDict( extra='allow', @@ -1619,6 +1724,7 @@ class UpdateRunRequest(BaseModel): general_access: Annotated[GeneralAccess | None, Field(alias='generalAccess')] = None +@docs_group('Models') class ChargeRunRequest(BaseModel): model_config = ConfigDict( extra='allow', @@ -1628,6 +1734,7 @@ class ChargeRunRequest(BaseModel): count: Annotated[int, Field(examples=[1])] +@docs_group('Models') class RecordOrTokenNotFoundErrorDetail(ErrorDetail): model_config = ConfigDict( extra='allow', @@ -1639,6 +1746,7 @@ class RecordOrTokenNotFoundErrorDetail(ErrorDetail): """ +@docs_group('Models') class RecordOrTokenNotFoundError(BaseModel): model_config = ConfigDict( extra='allow', @@ -1647,11 +1755,13 @@ class RecordOrTokenNotFoundError(BaseModel): error: RecordOrTokenNotFoundErrorDetail | None = None +@docs_group('Models') class StorageOwnership(StrEnum): OWNED_BY_ME = 'ownedByMe' SHARED_WITH_ME = 'sharedWithMe' +@docs_group('Models') class KeyValueStoreStats(BaseModel): model_config = ConfigDict( extra='allow', @@ -1664,6 +1774,7 @@ class KeyValueStoreStats(BaseModel): s3_storage_bytes: Annotated[int | None, Field(alias='s3StorageBytes', examples=[18])] = None +@docs_group('Models') class KeyValueStore(BaseModel): model_config = ConfigDict( extra='allow', @@ -1700,6 +1811,7 @@ class KeyValueStore(BaseModel): stats: KeyValueStoreStats | None = None +@docs_group('Models') class ListOfKeyValueStores(PaginationResponse): model_config = ConfigDict( extra='allow', @@ -1708,6 +1820,7 @@ class ListOfKeyValueStores(PaginationResponse): items: list[KeyValueStore] +@docs_group('Models') class ListOfKeyValueStoresResponse(BaseModel): model_config = ConfigDict( extra='allow', @@ -1716,6 +1829,7 @@ class ListOfKeyValueStoresResponse(BaseModel): data: ListOfKeyValueStores +@docs_group('Models') class KeyValueStoreResponse(BaseModel): """Response containing key-value store data.""" @@ -1726,6 +1840,7 @@ class KeyValueStoreResponse(BaseModel): data: KeyValueStore +@docs_group('Models') class KeyValueStoreNotFoundError(BaseModel): model_config = ConfigDict( extra='allow', @@ -1734,6 +1849,7 @@ class KeyValueStoreNotFoundError(BaseModel): error: RecordNotFoundErrorDetail | None = None +@docs_group('Models') class UpdateStoreRequest(BaseModel): model_config = ConfigDict( extra='allow', @@ -1743,6 +1859,7 @@ class UpdateStoreRequest(BaseModel): general_access: Annotated[GeneralAccess | None, Field(alias='generalAccess')] = None +@docs_group('Models') class KeyValueStoreKey(BaseModel): model_config = ConfigDict( extra='allow', @@ -1762,6 +1879,7 @@ class KeyValueStoreKey(BaseModel): """ +@docs_group('Models') class ListOfKeys(BaseModel): model_config = ConfigDict( extra='allow', @@ -1775,6 +1893,7 @@ class ListOfKeys(BaseModel): next_exclusive_start_key: Annotated[str | None, Field(alias='nextExclusiveStartKey', examples=['third-key'])] = None +@docs_group('Models') class ListOfKeysResponse(BaseModel): model_config = ConfigDict( extra='allow', @@ -1783,6 +1902,7 @@ class ListOfKeysResponse(BaseModel): data: ListOfKeys +@docs_group('Models') class RecordResponse(BaseModel): """The response body contains the value of the record. The content type of the response is determined by the Content-Type header stored with the record. @@ -1795,6 +1915,7 @@ class RecordResponse(BaseModel): ) +@docs_group('Models') class RecordNotFoundError(BaseModel): model_config = ConfigDict( extra='allow', @@ -1803,6 +1924,7 @@ class RecordNotFoundError(BaseModel): error: RecordNotFoundErrorDetail | None = None +@docs_group('Models') class PutRecordRequest(BaseModel): """The request body contains the value to store in the record. The content type should be specified in the Content-Type header. @@ -1815,6 +1937,7 @@ class PutRecordRequest(BaseModel): ) +@docs_group('Models') class DatasetListItem(BaseModel): model_config = ConfigDict( extra='allow', @@ -1832,6 +1955,7 @@ class DatasetListItem(BaseModel): act_run_id: Annotated[str | None, Field(alias='actRunId', examples=['HG7ML7M8z78YcAPEB'])] = None +@docs_group('Models') class ListOfDatasets(PaginationResponse): model_config = ConfigDict( extra='allow', @@ -1840,6 +1964,7 @@ class ListOfDatasets(PaginationResponse): items: list[DatasetListItem] +@docs_group('Models') class ListOfDatasetsResponse(BaseModel): model_config = ConfigDict( extra='allow', @@ -1848,6 +1973,7 @@ class ListOfDatasetsResponse(BaseModel): data: ListOfDatasets +@docs_group('Models') class DatasetStats(BaseModel): model_config = ConfigDict( extra='allow', @@ -1858,6 +1984,7 @@ class DatasetStats(BaseModel): storage_bytes: Annotated[int, Field(alias='storageBytes', examples=[783])] +@docs_group('Models') class Dataset(BaseModel): model_config = ConfigDict( extra='allow', @@ -1920,6 +2047,7 @@ class Dataset(BaseModel): stats: DatasetStats | None = None +@docs_group('Models') class DatasetResponse(BaseModel): """Response containing dataset metadata.""" @@ -1930,6 +2058,7 @@ class DatasetResponse(BaseModel): data: Dataset +@docs_group('Models') class DatasetNotFoundError(BaseModel): model_config = ConfigDict( extra='allow', @@ -1938,6 +2067,7 @@ class DatasetNotFoundError(BaseModel): error: RecordNotFoundErrorDetail | None = None +@docs_group('Models') class UpdateDatasetRequest(BaseModel): model_config = ConfigDict( extra='allow', @@ -1947,6 +2077,7 @@ class UpdateDatasetRequest(BaseModel): general_access: Annotated[GeneralAccess | None, Field(alias='generalAccess')] = None +@docs_group('Models') class PutItemsRequest(BaseModel): """The request body containing the item(s) to add to the dataset. Can be a single object or an array of objects. Each object represents one dataset item. @@ -1959,6 +2090,7 @@ class PutItemsRequest(BaseModel): ) +@docs_group('Models') class ValidationError(BaseModel): model_config = ConfigDict( extra='allow', @@ -1986,6 +2118,7 @@ class ValidationError(BaseModel): """ +@docs_group('Models') class InvalidItem(BaseModel): model_config = ConfigDict( extra='allow', @@ -2001,6 +2134,7 @@ class InvalidItem(BaseModel): """ +@docs_group('Models') class SchemaValidationErrorData(BaseModel): model_config = ConfigDict( extra='allow', @@ -2012,6 +2146,7 @@ class SchemaValidationErrorData(BaseModel): """ +@docs_group('Models') class DatasetSchemaValidationError(BaseModel): model_config = ConfigDict( extra='allow', @@ -2028,6 +2163,7 @@ class DatasetSchemaValidationError(BaseModel): data: SchemaValidationErrorData | None = None +@docs_group('Models') class PutItemResponseError(BaseModel): model_config = ConfigDict( extra='allow', @@ -2036,6 +2172,7 @@ class PutItemResponseError(BaseModel): error: DatasetSchemaValidationError +@docs_group('Models') class DatasetFieldStatistics(BaseModel): model_config = ConfigDict( extra='allow', @@ -2059,6 +2196,7 @@ class DatasetFieldStatistics(BaseModel): """ +@docs_group('Models') class DatasetStatistics(BaseModel): model_config = ConfigDict( extra='allow', @@ -2070,6 +2208,7 @@ class DatasetStatistics(BaseModel): """ +@docs_group('Models') class DatasetStatisticsResponse(BaseModel): model_config = ConfigDict( extra='allow', @@ -2078,6 +2217,7 @@ class DatasetStatisticsResponse(BaseModel): data: DatasetStatistics +@docs_group('Models') class RequestQueueShort(BaseModel): """A shortened request queue object for list responses.""" @@ -2143,6 +2283,7 @@ class RequestQueueShort(BaseModel): """ +@docs_group('Models') class ListOfRequestQueues(PaginationResponse): """A paginated list of request queues.""" @@ -2156,6 +2297,7 @@ class ListOfRequestQueues(PaginationResponse): """ +@docs_group('Models') class ListOfRequestQueuesResponse(BaseModel): """Response containing a list of request queues.""" @@ -2166,6 +2308,7 @@ class ListOfRequestQueuesResponse(BaseModel): data: ListOfRequestQueues +@docs_group('Models') class RequestQueueStats(BaseModel): """Statistics about request queue operations and storage.""" @@ -2195,6 +2338,7 @@ class RequestQueueStats(BaseModel): """ +@docs_group('Models') class RequestQueue(BaseModel): """A request queue object containing metadata and statistics.""" @@ -2252,6 +2396,7 @@ class RequestQueue(BaseModel): general_access: Annotated[GeneralAccess | None, Field(alias='generalAccess')] = None +@docs_group('Models') class RequestQueueResponse(BaseModel): """Response containing request queue data.""" @@ -2262,6 +2407,7 @@ class RequestQueueResponse(BaseModel): data: RequestQueue +@docs_group('Models') class RequestQueueNotFoundError(BaseModel): model_config = ConfigDict( extra='allow', @@ -2270,6 +2416,7 @@ class RequestQueueNotFoundError(BaseModel): error: RecordNotFoundErrorDetail | None = None +@docs_group('Models') class UpdateRequestQueueRequest(BaseModel): """Request object for updating a request queue.""" @@ -2284,6 +2431,7 @@ class UpdateRequestQueueRequest(BaseModel): general_access: Annotated[GeneralAccess | None, Field(alias='generalAccess')] = None +@docs_group('Models') class HttpMethod(StrEnum): GET = 'GET' HEAD = 'HEAD' @@ -2296,6 +2444,7 @@ class HttpMethod(StrEnum): PATCH = 'PATCH' +@docs_group('Models') class RequestUserData(BaseModel): """Custom user data attached to the request. Can contain arbitrary fields.""" @@ -2313,6 +2462,7 @@ class RequestUserData(BaseModel): """ +@docs_group('Models') class RequestBase(BaseModel): model_config = ConfigDict( extra='allow', @@ -2360,6 +2510,7 @@ class RequestBase(BaseModel): """ +@docs_group('Models') class AddedRequest(BaseModel): """Information about a request that was successfully added to a request queue.""" @@ -2385,6 +2536,7 @@ class AddedRequest(BaseModel): """ +@docs_group('Models') class RequestDraft(BaseModel): """A request that failed to be processed during a request queue operation and can be retried.""" @@ -2407,6 +2559,7 @@ class RequestDraft(BaseModel): method: HttpMethod | None = None +@docs_group('Models') class BatchAddResult(BaseModel): """Result of a batch add operation containing successfully processed and failed requests.""" @@ -2424,6 +2577,7 @@ class BatchAddResult(BaseModel): """ +@docs_group('Models') class BatchAddResponse(BaseModel): """Response containing the result of a batch add operation.""" @@ -2434,6 +2588,7 @@ class BatchAddResponse(BaseModel): data: BatchAddResult +@docs_group('Models') class RequestDraftDeleteById(BaseModel): """A request that should be deleted, identified by its ID.""" @@ -2453,6 +2608,7 @@ class RequestDraftDeleteById(BaseModel): """ +@docs_group('Models') class RequestDraftDeleteByUniqueKey(BaseModel): """A request that should be deleted, identified by its unique key.""" @@ -2470,6 +2626,7 @@ class RequestDraftDeleteByUniqueKey(BaseModel): """ +@docs_group('Models') class RequestDraftDelete(RootModel[RequestDraftDeleteById | RequestDraftDeleteByUniqueKey]): root: Annotated[RequestDraftDeleteById | RequestDraftDeleteByUniqueKey, Field(title='RequestDraftDelete')] """ @@ -2477,6 +2634,7 @@ class RequestDraftDelete(RootModel[RequestDraftDeleteById | RequestDraftDeleteBy """ +@docs_group('Models') class DeletedRequestById(BaseModel): """Confirmation of a request that was successfully deleted, identified by its ID.""" @@ -2496,6 +2654,7 @@ class DeletedRequestById(BaseModel): """ +@docs_group('Models') class DeletedRequestByUniqueKey(BaseModel): """Confirmation of a request that was successfully deleted, identified by its unique key.""" @@ -2513,6 +2672,7 @@ class DeletedRequestByUniqueKey(BaseModel): """ +@docs_group('Models') class BatchDeleteResult(BaseModel): """Result of a batch delete operation containing successfully deleted and failed requests.""" @@ -2532,6 +2692,7 @@ class BatchDeleteResult(BaseModel): """ +@docs_group('Models') class BatchDeleteResponse(BaseModel): """Response containing the result of a batch delete operation.""" @@ -2542,6 +2703,7 @@ class BatchDeleteResponse(BaseModel): data: BatchDeleteResult +@docs_group('Models') class UnlockRequestsResult(BaseModel): """Result of unlocking requests in the request queue.""" @@ -2555,6 +2717,7 @@ class UnlockRequestsResult(BaseModel): """ +@docs_group('Models') class UnlockRequestsResponse(BaseModel): """Response containing the result of unlocking requests.""" @@ -2565,6 +2728,7 @@ class UnlockRequestsResponse(BaseModel): data: UnlockRequestsResult +@docs_group('Models') class Request(RequestBase): """A request stored in the request queue, including its metadata and processing state.""" @@ -2578,6 +2742,7 @@ class Request(RequestBase): """ +@docs_group('Models') class ListOfRequests(BaseModel): """A paginated list of requests from the request queue.""" @@ -2615,6 +2780,7 @@ class ListOfRequests(BaseModel): """ +@docs_group('Models') class ListOfRequestsResponse(BaseModel): """Response containing a list of requests from the request queue.""" @@ -2625,6 +2791,7 @@ class ListOfRequestsResponse(BaseModel): data: ListOfRequests +@docs_group('Models') class RequestRegistration(BaseModel): """Result of registering a request in the request queue, either by adding a new request or updating an existing one.""" @@ -2646,6 +2813,7 @@ class RequestRegistration(BaseModel): """ +@docs_group('Models') class AddRequestResponse(BaseModel): """Response containing the result of adding a request to the request queue.""" @@ -2656,6 +2824,7 @@ class AddRequestResponse(BaseModel): data: RequestRegistration +@docs_group('Models') class RequestResponse(BaseModel): """Response containing a single request from the request queue.""" @@ -2666,6 +2835,7 @@ class RequestResponse(BaseModel): data: Request +@docs_group('Models') class RequestNotFoundError(BaseModel): model_config = ConfigDict( extra='allow', @@ -2674,6 +2844,7 @@ class RequestNotFoundError(BaseModel): error: RecordNotFoundErrorDetail | None = None +@docs_group('Models') class UpdateRequestResponse(BaseModel): """Response containing the result of updating a request in the request queue.""" @@ -2684,6 +2855,7 @@ class UpdateRequestResponse(BaseModel): data: RequestRegistration +@docs_group('Models') class HeadRequest(BaseModel): """A request from the request queue head without lock information.""" @@ -2710,6 +2882,7 @@ class HeadRequest(BaseModel): """ +@docs_group('Models') class RequestQueueHead(BaseModel): """A batch of requests from the request queue head without locking.""" @@ -2735,6 +2908,7 @@ class RequestQueueHead(BaseModel): """ +@docs_group('Models') class HeadResponse(BaseModel): """Response containing requests from the request queue head without locking.""" @@ -2745,6 +2919,7 @@ class HeadResponse(BaseModel): data: RequestQueueHead +@docs_group('Models') class LockedHeadRequest(BaseModel): """A request from the request queue head that has been locked for processing.""" @@ -2775,6 +2950,7 @@ class LockedHeadRequest(BaseModel): """ +@docs_group('Models') class LockedRequestQueueHead(BaseModel): """A batch of locked requests from the request queue head.""" @@ -2812,6 +2988,7 @@ class LockedRequestQueueHead(BaseModel): """ +@docs_group('Models') class HeadAndLockResponse(BaseModel): """Response containing locked requests from the request queue head.""" @@ -2822,6 +2999,7 @@ class HeadAndLockResponse(BaseModel): data: LockedRequestQueueHead +@docs_group('Models') class RequestLockInfo(BaseModel): """Information about a request lock.""" @@ -2835,6 +3013,7 @@ class RequestLockInfo(BaseModel): """ +@docs_group('Models') class ProlongRequestLockResponse(BaseModel): """Response containing updated lock information after prolonging a request lock.""" @@ -2845,6 +3024,7 @@ class ProlongRequestLockResponse(BaseModel): data: RequestLockInfo +@docs_group('Models') class WebhookCreate(BaseModel): model_config = ConfigDict( extra='allow', @@ -2867,6 +3047,7 @@ class WebhookCreate(BaseModel): should_interpolate_strings: Annotated[bool | None, Field(alias='shouldInterpolateStrings', examples=[False])] = None +@docs_group('Models') class WebhookResponse(BaseModel): """Response containing webhook data.""" @@ -2877,6 +3058,7 @@ class WebhookResponse(BaseModel): data: Webhook +@docs_group('Models') class WebhookUpdate(BaseModel): model_config = ConfigDict( extra='allow', @@ -2900,6 +3082,7 @@ class WebhookUpdate(BaseModel): should_interpolate_strings: Annotated[bool | None, Field(alias='shouldInterpolateStrings', examples=[False])] = None +@docs_group('Models') class EventData(BaseModel): model_config = ConfigDict( extra='allow', @@ -2909,6 +3092,7 @@ class EventData(BaseModel): actor_run_id: Annotated[str, Field(alias='actorRunId', examples=['JgwXN9BdwxGcu9MMF'])] +@docs_group('Models') class Call(BaseModel): model_config = ConfigDict( extra='allow', @@ -2923,6 +3107,7 @@ class Call(BaseModel): response_body: Annotated[str | None, Field(alias='responseBody', examples=['{"foo": "bar"}'])] = None +@docs_group('Models') class WebhookDispatch(BaseModel): model_config = ConfigDict( extra='allow', @@ -2938,6 +3123,7 @@ class WebhookDispatch(BaseModel): calls: Annotated[list[Call] | None, Field(title='calls')] = None +@docs_group('Models') class TestWebhookResponse(BaseModel): model_config = ConfigDict( extra='allow', @@ -2946,6 +3132,7 @@ class TestWebhookResponse(BaseModel): data: WebhookDispatch +@docs_group('Models') class ListOfWebhookDispatches(PaginationResponse): model_config = ConfigDict( extra='allow', @@ -2954,6 +3141,7 @@ class ListOfWebhookDispatches(PaginationResponse): items: list[WebhookDispatch] +@docs_group('Models') class WebhookDispatchList(BaseModel): model_config = ConfigDict( extra='allow', @@ -2962,6 +3150,7 @@ class WebhookDispatchList(BaseModel): data: ListOfWebhookDispatches | None = None +@docs_group('Models') class WebhookDispatchResponse(BaseModel): model_config = ConfigDict( extra='allow', @@ -2970,6 +3159,7 @@ class WebhookDispatchResponse(BaseModel): data: WebhookDispatch +@docs_group('Models') class ScheduleBase(BaseModel): model_config = ConfigDict( extra='allow', @@ -2988,6 +3178,7 @@ class ScheduleBase(BaseModel): last_run_at: Annotated[AwareDatetime | None, Field(alias='lastRunAt', examples=['2019-04-12T07:33:10.202Z'])] = None +@docs_group('Models') class ScheduleActionShortRunActor(BaseModel): model_config = ConfigDict( extra='allow', @@ -2998,6 +3189,7 @@ class ScheduleActionShortRunActor(BaseModel): actor_id: Annotated[str, Field(alias='actorId', examples=['HKhKmiCMrDgu9eXeE'])] +@docs_group('Models') class ScheduleActionShortRunActorTask(BaseModel): model_config = ConfigDict( extra='allow', @@ -3008,6 +3200,7 @@ class ScheduleActionShortRunActorTask(BaseModel): actor_task_id: Annotated[str, Field(alias='actorTaskId', examples=['HKhKmiCMrDgu9eXeE'])] +@docs_group('Models') class ScheduleShort(ScheduleBase): model_config = ConfigDict( extra='allow', @@ -3016,6 +3209,7 @@ class ScheduleShort(ScheduleBase): actions: list[Annotated[ScheduleActionShortRunActor | ScheduleActionShortRunActorTask, Field(discriminator='type')]] +@docs_group('Models') class ListOfSchedules(PaginationResponse): model_config = ConfigDict( extra='allow', @@ -3024,6 +3218,7 @@ class ListOfSchedules(PaginationResponse): items: list[ScheduleShort] +@docs_group('Models') class ListOfSchedulesResponse(BaseModel): model_config = ConfigDict( extra='allow', @@ -3032,6 +3227,7 @@ class ListOfSchedulesResponse(BaseModel): data: ListOfSchedules +@docs_group('Models') class ScheduleActionRunInput(BaseModel): model_config = ConfigDict( extra='allow', @@ -3041,6 +3237,7 @@ class ScheduleActionRunInput(BaseModel): content_type: Annotated[str | None, Field(alias='contentType', examples=['application/json; charset=utf-8'])] = None +@docs_group('Models') class ScheduleCreateActionRunActor(BaseModel): model_config = ConfigDict( extra='allow', @@ -3052,6 +3249,7 @@ class ScheduleCreateActionRunActor(BaseModel): run_options: Annotated[TaskOptions | None, Field(alias='runOptions')] = None +@docs_group('Models') class ScheduleCreateActionRunActorTask(BaseModel): model_config = ConfigDict( extra='allow', @@ -3062,6 +3260,7 @@ class ScheduleCreateActionRunActorTask(BaseModel): input: dict[str, Any] | None = None +@docs_group('Models') class ScheduleCreate(BaseModel): model_config = ConfigDict( extra='allow', @@ -3080,6 +3279,7 @@ class ScheduleCreate(BaseModel): ) = None +@docs_group('Models') class ScheduleActionRunActor(BaseModel): model_config = ConfigDict( extra='allow', @@ -3092,6 +3292,7 @@ class ScheduleActionRunActor(BaseModel): run_options: Annotated[TaskOptions | None, Field(alias='runOptions')] = None +@docs_group('Models') class ScheduleActionRunActorTask(BaseModel): model_config = ConfigDict( extra='allow', @@ -3103,6 +3304,7 @@ class ScheduleActionRunActorTask(BaseModel): input: dict[str, Any] | None = None +@docs_group('Models') class Schedule(ScheduleBase): model_config = ConfigDict( extra='allow', @@ -3113,6 +3315,7 @@ class Schedule(ScheduleBase): actions: list[Annotated[ScheduleActionRunActor | ScheduleActionRunActorTask, Field(discriminator='type')]] +@docs_group('Models') class ScheduleResponse(BaseModel): model_config = ConfigDict( extra='allow', @@ -3121,6 +3324,7 @@ class ScheduleResponse(BaseModel): data: Schedule +@docs_group('Models') class ScheduleInvoked(BaseModel): model_config = ConfigDict( extra='allow', @@ -3131,6 +3335,7 @@ class ScheduleInvoked(BaseModel): created_at: Annotated[AwareDatetime, Field(alias='createdAt', examples=['2019-03-26T12:28:00.370Z'])] +@docs_group('Models') class ScheduleLogResponse(BaseModel): model_config = ConfigDict( extra='allow', @@ -3139,6 +3344,7 @@ class ScheduleLogResponse(BaseModel): data: list[ScheduleInvoked] +@docs_group('Models') class CurrentPricingInfo(BaseModel): model_config = ConfigDict( extra='allow', @@ -3147,6 +3353,7 @@ class CurrentPricingInfo(BaseModel): pricing_model: Annotated[str, Field(alias='pricingModel', examples=['FREE'])] +@docs_group('Models') class StoreListActor(BaseModel): model_config = ConfigDict( extra='allow', @@ -3175,6 +3382,7 @@ class StoreListActor(BaseModel): """ +@docs_group('Models') class ListOfStoreActors(PaginationResponse): model_config = ConfigDict( extra='allow', @@ -3183,6 +3391,7 @@ class ListOfStoreActors(PaginationResponse): items: list[StoreListActor] +@docs_group('Models') class ListOfActorsInStoreResponse(BaseModel): model_config = ConfigDict( extra='allow', @@ -3191,6 +3400,7 @@ class ListOfActorsInStoreResponse(BaseModel): data: ListOfStoreActors +@docs_group('Models') class Profile(BaseModel): model_config = ConfigDict( extra='allow', @@ -3206,6 +3416,7 @@ class Profile(BaseModel): twitter_username: Annotated[str | None, Field(alias='twitterUsername', examples=['@BillGates'])] = None +@docs_group('Models') class UserPublicInfo(BaseModel): model_config = ConfigDict( extra='allow', @@ -3215,6 +3426,7 @@ class UserPublicInfo(BaseModel): profile: Profile | None = None +@docs_group('Models') class PublicUserDataResponse(BaseModel): model_config = ConfigDict( extra='allow', @@ -3223,6 +3435,7 @@ class PublicUserDataResponse(BaseModel): data: UserPublicInfo +@docs_group('Models') class ProxyGroup(BaseModel): model_config = ConfigDict( extra='allow', @@ -3233,6 +3446,7 @@ class ProxyGroup(BaseModel): available_count: Annotated[int, Field(alias='availableCount', examples=[10])] +@docs_group('Models') class Proxy(BaseModel): model_config = ConfigDict( extra='allow', @@ -3242,6 +3456,7 @@ class Proxy(BaseModel): groups: list[ProxyGroup] +@docs_group('Models') class Plan(BaseModel): model_config = ConfigDict( extra='allow', @@ -3281,6 +3496,7 @@ class Plan(BaseModel): available_add_ons: Annotated[list[str], Field(alias='availableAddOns', examples=[[]])] +@docs_group('Models') class EffectivePlatformFeature(BaseModel): model_config = ConfigDict( extra='allow', @@ -3303,6 +3519,7 @@ class EffectivePlatformFeature(BaseModel): ] +@docs_group('Models') class EffectivePlatformFeatures(BaseModel): model_config = ConfigDict( extra='allow', @@ -3320,6 +3537,7 @@ class EffectivePlatformFeatures(BaseModel): actors_public_developer: Annotated[EffectivePlatformFeature, Field(alias='ACTORS_PUBLIC_DEVELOPER')] +@docs_group('Models') class UserPrivateInfo(BaseModel): model_config = ConfigDict( extra='allow', @@ -3336,6 +3554,7 @@ class UserPrivateInfo(BaseModel): is_paying: Annotated[bool, Field(alias='isPaying', examples=[True])] +@docs_group('Models') class PrivateUserDataResponse(BaseModel): model_config = ConfigDict( extra='allow', @@ -3344,6 +3563,7 @@ class PrivateUserDataResponse(BaseModel): data: UserPrivateInfo +@docs_group('Models') class UsageCycle(BaseModel): model_config = ConfigDict( extra='allow', @@ -3353,6 +3573,7 @@ class UsageCycle(BaseModel): end_at: Annotated[AwareDatetime, Field(alias='endAt', examples=['2022-11-01T23:59:59.999Z'])] +@docs_group('Models') class PriceTiers(BaseModel): model_config = ConfigDict( extra='allow', @@ -3365,6 +3586,7 @@ class PriceTiers(BaseModel): price_usd: Annotated[float, Field(alias='priceUsd', examples=[0])] +@docs_group('Models') class UsageItem(BaseModel): model_config = ConfigDict( extra='allow', @@ -3379,6 +3601,7 @@ class UsageItem(BaseModel): price_tiers: Annotated[list[PriceTiers] | None, Field(alias='priceTiers')] = None +@docs_group('Models') class DailyServiceUsages(BaseModel): model_config = ConfigDict( extra='allow', @@ -3389,6 +3612,7 @@ class DailyServiceUsages(BaseModel): total_usage_credits_usd: Annotated[float, Field(alias='totalUsageCreditsUsd', examples=[0.0474385791970591])] +@docs_group('Models') class MonthlyUsage(BaseModel): model_config = ConfigDict( extra='allow', @@ -3405,6 +3629,7 @@ class MonthlyUsage(BaseModel): ] +@docs_group('Models') class MonthlyUsageResponse(BaseModel): model_config = ConfigDict( extra='allow', @@ -3413,6 +3638,7 @@ class MonthlyUsageResponse(BaseModel): data: MonthlyUsage +@docs_group('Models') class Limits(BaseModel): model_config = ConfigDict( extra='allow', @@ -3435,6 +3661,7 @@ class Limits(BaseModel): data_retention_days: Annotated[int, Field(alias='dataRetentionDays', examples=[90])] +@docs_group('Models') class Current(BaseModel): model_config = ConfigDict( extra='allow', @@ -3454,6 +3681,7 @@ class Current(BaseModel): team_account_seat_count: Annotated[int, Field(alias='teamAccountSeatCount', examples=[5])] +@docs_group('Models') class AccountLimits(BaseModel): model_config = ConfigDict( extra='allow', @@ -3464,6 +3692,7 @@ class AccountLimits(BaseModel): current: Current +@docs_group('Models') class LimitsResponse(BaseModel): model_config = ConfigDict( extra='allow', @@ -3472,6 +3701,7 @@ class LimitsResponse(BaseModel): data: AccountLimits +@docs_group('Models') class UpdateLimitsRequest(BaseModel): model_config = ConfigDict( extra='allow', @@ -3489,6 +3719,7 @@ class UpdateLimitsRequest(BaseModel): """ +@docs_group('Models') class BrowserInfoResponse(BaseModel): model_config = ConfigDict( extra='allow', @@ -3523,6 +3754,7 @@ class BrowserInfoResponse(BaseModel): """ +@docs_group('Models') class EncodeAndSignData(BaseModel): model_config = ConfigDict( extra='allow', @@ -3531,6 +3763,7 @@ class EncodeAndSignData(BaseModel): encoded: Annotated[str, Field(examples=['eyJwYXlsb2FkIjoiLi4uIiwic2lnbmF0dXJlIjoiLi4uIn0='])] +@docs_group('Models') class EncodeAndSignResponse(BaseModel): model_config = ConfigDict( extra='allow', @@ -3539,6 +3772,7 @@ class EncodeAndSignResponse(BaseModel): data: EncodeAndSignData +@docs_group('Models') class DecodeAndVerifyRequest(BaseModel): model_config = ConfigDict( extra='allow', @@ -3547,6 +3781,7 @@ class DecodeAndVerifyRequest(BaseModel): encoded: Annotated[str, Field(examples=['eyJwYXlsb2FkIjoiLi4uIiwic2lnbmF0dXJlIjoiLi4uIn0='])] +@docs_group('Models') class DecodeAndVerifyData(BaseModel): model_config = ConfigDict( extra='allow', @@ -3560,6 +3795,7 @@ class DecodeAndVerifyData(BaseModel): is_verified_user: Annotated[bool, Field(alias='isVerifiedUser', examples=[False])] +@docs_group('Models') class DecodeAndVerifyResponse(BaseModel): model_config = ConfigDict( extra='allow',