layer 1.0.76__tar.gz → 1.0.84__tar.gz
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.
- {layer-1.0.76 → layer-1.0.84}/PKG-INFO +1 -1
- {layer-1.0.76 → layer-1.0.84}/pyproject.toml +1 -1
- {layer-1.0.76 → layer-1.0.84}/pyproject.toml.orig +1 -1
- {layer-1.0.76 → layer-1.0.84}/src/layer/_api/models.py +458 -2
- {layer-1.0.76 → layer-1.0.84}/README.md +0 -0
- {layer-1.0.76 → layer-1.0.84}/src/layer/__init__.py +0 -0
- {layer-1.0.76 → layer-1.0.84}/src/layer/__main__.py +0 -0
- {layer-1.0.76 → layer-1.0.84}/src/layer/_api/__init__.py +0 -0
- {layer-1.0.76 → layer-1.0.84}/src/layer/_api/client.py +0 -0
- {layer-1.0.76 → layer-1.0.84}/src/layer/_cli/__init__.py +0 -0
- {layer-1.0.76 → layer-1.0.84}/src/layer/_cli/auth_commands.py +0 -0
- {layer-1.0.76 → layer-1.0.84}/src/layer/_cli/base_model_commands.py +0 -0
- {layer-1.0.76 → layer-1.0.84}/src/layer/_cli/context.py +0 -0
- {layer-1.0.76 → layer-1.0.84}/src/layer/_cli/context_commands.py +0 -0
- {layer-1.0.76 → layer-1.0.84}/src/layer/_cli/generate_commands.py +0 -0
- {layer-1.0.76 → layer-1.0.84}/src/layer/_cli/main.py +0 -0
- {layer-1.0.76 → layer-1.0.84}/src/layer/_cli/output.py +0 -0
- {layer-1.0.76 → layer-1.0.84}/src/layer/auth.py +0 -0
- {layer-1.0.76 → layer-1.0.84}/src/layer/catalog.py +0 -0
- {layer-1.0.76 → layer-1.0.84}/src/layer/config.py +0 -0
- {layer-1.0.76 → layer-1.0.84}/src/layer/credentials.py +0 -0
- {layer-1.0.76 → layer-1.0.84}/src/layer/download.py +0 -0
- {layer-1.0.76 → layer-1.0.84}/src/layer/exit_codes.py +0 -0
- {layer-1.0.76 → layer-1.0.84}/src/layer/generate.py +0 -0
- {layer-1.0.76 → layer-1.0.84}/src/layer/oauth.py +0 -0
- {layer-1.0.76 → layer-1.0.84}/src/layer/params.py +0 -0
- {layer-1.0.76 → layer-1.0.84}/src/layer/sessions.py +0 -0
- {layer-1.0.76 → layer-1.0.84}/src/layer/sse.py +0 -0
- {layer-1.0.76 → layer-1.0.84}/src/layer/uploads.py +0 -0
- {layer-1.0.76 → layer-1.0.84}/src/layer/workspaces.py +0 -0
|
@@ -83,6 +83,17 @@ class AudioOutputFormat(Enum):
|
|
|
83
83
|
flac = "flac"
|
|
84
84
|
|
|
85
85
|
|
|
86
|
+
class AutoDeleteRunStatus(Enum):
|
|
87
|
+
running = "running"
|
|
88
|
+
finished = "finished"
|
|
89
|
+
failed = "failed"
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
class AutoDeleteTrigger(Enum):
|
|
93
|
+
schedule = "schedule"
|
|
94
|
+
manual = "manual"
|
|
95
|
+
|
|
96
|
+
|
|
86
97
|
class BlueprintRunStatus(Enum):
|
|
87
98
|
"""
|
|
88
99
|
Enum representing the status of a blueprint run.
|
|
@@ -489,6 +500,24 @@ class SegmentPartNames(RootModel[list[str]]):
|
|
|
489
500
|
)
|
|
490
501
|
|
|
491
502
|
|
|
503
|
+
class SegmentParts(RootModel[int]):
|
|
504
|
+
root: int = Field(
|
|
505
|
+
...,
|
|
506
|
+
description="How many parts a CHARACTER split makes. Support varies by model.",
|
|
507
|
+
ge=1,
|
|
508
|
+
title="Segment Parts",
|
|
509
|
+
)
|
|
510
|
+
|
|
511
|
+
|
|
512
|
+
class SegmentStrength(RootModel[int]):
|
|
513
|
+
root: int = Field(
|
|
514
|
+
...,
|
|
515
|
+
description="How aggressively a mesh split cuts: higher makes more parts. Support varies by model.",
|
|
516
|
+
ge=1,
|
|
517
|
+
title="Segment Strength",
|
|
518
|
+
)
|
|
519
|
+
|
|
520
|
+
|
|
492
521
|
class FaceLimit(RootModel[int]):
|
|
493
522
|
root: int = Field(..., description="Face/polygon limit for 3D mesh.", gt=0, title="Face Limit")
|
|
494
523
|
|
|
@@ -716,6 +745,41 @@ class SessionName1(RootModel[str]):
|
|
|
716
745
|
)
|
|
717
746
|
|
|
718
747
|
|
|
748
|
+
class FileContentCategory(Enum):
|
|
749
|
+
image = "image"
|
|
750
|
+
video = "video"
|
|
751
|
+
mesh = "mesh"
|
|
752
|
+
audio = "audio"
|
|
753
|
+
pose = "pose"
|
|
754
|
+
safetensors = "safetensors"
|
|
755
|
+
playable = "playable"
|
|
756
|
+
spine = "spine"
|
|
757
|
+
font = "font"
|
|
758
|
+
world = "world"
|
|
759
|
+
pbr_materials = "pbr_materials"
|
|
760
|
+
other = "other"
|
|
761
|
+
|
|
762
|
+
|
|
763
|
+
class FileDependencyOutput(BaseModel):
|
|
764
|
+
kind: str = Field(
|
|
765
|
+
...,
|
|
766
|
+
description="What depends on the file: `style`, `reference_set`, `workflow`, `skill`, `template`, `content_policy_rule`, `base_model`, `workspace_share`, `trend`, `ua_creative`, `export` or `scoring_run`.",
|
|
767
|
+
title="Kind",
|
|
768
|
+
)
|
|
769
|
+
owner_id: str = Field(..., description="Id of the thing that depends on the file.", title="Owner Id")
|
|
770
|
+
owner_name: str | None = Field(..., description="Its name, when it has one.", title="Owner Name")
|
|
771
|
+
|
|
772
|
+
|
|
773
|
+
class FileIdsInput(BaseModel):
|
|
774
|
+
file_ids: list[UUID] = Field(
|
|
775
|
+
...,
|
|
776
|
+
description="At most 500 file ids.",
|
|
777
|
+
max_length=500,
|
|
778
|
+
min_length=1,
|
|
779
|
+
title="File Ids",
|
|
780
|
+
)
|
|
781
|
+
|
|
782
|
+
|
|
719
783
|
class FileScore(BaseModel):
|
|
720
784
|
rule_id: UUID = Field(..., description="The rule that produced this verdict.", title="Rule Id")
|
|
721
785
|
rule_name: str = Field(
|
|
@@ -762,6 +826,8 @@ class FileSourceType(Enum):
|
|
|
762
826
|
composite = "composite"
|
|
763
827
|
google_drive = "google_drive"
|
|
764
828
|
miro = "miro"
|
|
829
|
+
linear = "linear"
|
|
830
|
+
jira = "jira"
|
|
765
831
|
transformed_reference = "transformed_reference"
|
|
766
832
|
skill_resource = "skill_resource"
|
|
767
833
|
skill_bundle = "skill_bundle"
|
|
@@ -1033,6 +1099,7 @@ class InferenceUseCase(Enum):
|
|
|
1033
1099
|
rig = "rig"
|
|
1034
1100
|
segment = "segment"
|
|
1035
1101
|
image_segment = "image_segment"
|
|
1102
|
+
image_mask = "image_mask"
|
|
1036
1103
|
text_to_speech = "text_to_speech"
|
|
1037
1104
|
sound_effects = "sound_effects"
|
|
1038
1105
|
music = "music"
|
|
@@ -1563,6 +1630,15 @@ class RequestUploadUrlResponse(BaseModel):
|
|
|
1563
1630
|
)
|
|
1564
1631
|
|
|
1565
1632
|
|
|
1633
|
+
class RestoreDeletedFilesOutput(BaseModel):
|
|
1634
|
+
restored_files: int = Field(
|
|
1635
|
+
...,
|
|
1636
|
+
description="Files restored. Ids not in the trash are left silently.",
|
|
1637
|
+
title="Restored Files",
|
|
1638
|
+
)
|
|
1639
|
+
restored_bytes: int = Field(..., description="Bytes those files hold.", title="Restored Bytes")
|
|
1640
|
+
|
|
1641
|
+
|
|
1566
1642
|
class Role(Enum):
|
|
1567
1643
|
admin = "admin"
|
|
1568
1644
|
editor = "editor"
|
|
@@ -1641,6 +1717,28 @@ class SegmentBy(Enum):
|
|
|
1641
1717
|
PARTS = "PARTS"
|
|
1642
1718
|
|
|
1643
1719
|
|
|
1720
|
+
class SegmentLevel(Enum):
|
|
1721
|
+
"""
|
|
1722
|
+
Split granularity for a general-target segmentation (more parts as it
|
|
1723
|
+
rises). Only meaningful when the target is ``GENERAL``.
|
|
1724
|
+
"""
|
|
1725
|
+
|
|
1726
|
+
LOW = "LOW"
|
|
1727
|
+
MEDIUM = "MEDIUM"
|
|
1728
|
+
HIGH = "HIGH"
|
|
1729
|
+
|
|
1730
|
+
|
|
1731
|
+
class SegmentTarget(Enum):
|
|
1732
|
+
"""
|
|
1733
|
+
What a mesh-segmentation model treats the input as, selecting its split
|
|
1734
|
+
strategy. ``CHARACTER`` splits a humanoid mesh with a body-part template;
|
|
1735
|
+
``GENERAL`` splits any mesh by granularity level (e.g. Hi3D Parts).
|
|
1736
|
+
"""
|
|
1737
|
+
|
|
1738
|
+
CHARACTER = "CHARACTER"
|
|
1739
|
+
GENERAL = "GENERAL"
|
|
1740
|
+
|
|
1741
|
+
|
|
1644
1742
|
class Kind(Enum):
|
|
1645
1743
|
"""
|
|
1646
1744
|
Whether the object is a single file or a composite asset.
|
|
@@ -1686,6 +1784,18 @@ class SkippedFile(BaseModel):
|
|
|
1686
1784
|
)
|
|
1687
1785
|
|
|
1688
1786
|
|
|
1787
|
+
class SkippedFileOutput(BaseModel):
|
|
1788
|
+
file_id: UUID = Field(..., description="Id of the file left.", title="File Id")
|
|
1789
|
+
message: str = Field(
|
|
1790
|
+
...,
|
|
1791
|
+
description="What holds the file, and what to do about it.",
|
|
1792
|
+
title="Message",
|
|
1793
|
+
)
|
|
1794
|
+
dependencies: list[FileDependencyOutput] = Field(
|
|
1795
|
+
..., description="Everything that holds the file.", title="Dependencies"
|
|
1796
|
+
)
|
|
1797
|
+
|
|
1798
|
+
|
|
1689
1799
|
class SpriteSheetAnimationView(BaseModel):
|
|
1690
1800
|
name: str = Field(..., description="The animation's name.", title="Name")
|
|
1691
1801
|
frames: list[int] = Field(
|
|
@@ -1711,6 +1821,59 @@ class State2(Enum):
|
|
|
1711
1821
|
terminal_failure = "terminal_failure"
|
|
1712
1822
|
|
|
1713
1823
|
|
|
1824
|
+
class StorageSliceOutput(BaseModel):
|
|
1825
|
+
key: str | None = Field(
|
|
1826
|
+
...,
|
|
1827
|
+
description="What the slice is: an origin (`generated`, `uploaded`), a content category (`image`, `video`, ...), an age (`under_30_days`, `30_to_90_days`, `90_to_365_days`, `over_1_year`), a project id (`none` for files in no project) or a member's principal id. Null for the slice that totals everything not listed.",
|
|
1828
|
+
title="Key",
|
|
1829
|
+
)
|
|
1830
|
+
label: str = Field(..., description="What to call the slice.", title="Label")
|
|
1831
|
+
files: int = Field(..., description="Files in the slice.", title="Files")
|
|
1832
|
+
bytes: int = Field(..., description="Bytes those files hold.", title="Bytes")
|
|
1833
|
+
|
|
1834
|
+
|
|
1835
|
+
class StoredFileOrigin(Enum):
|
|
1836
|
+
"""
|
|
1837
|
+
Whether a file is the output of a generation, or something a person put in the workspace.
|
|
1838
|
+
"""
|
|
1839
|
+
|
|
1840
|
+
generated = "generated"
|
|
1841
|
+
uploaded = "uploaded"
|
|
1842
|
+
|
|
1843
|
+
|
|
1844
|
+
class StoredFileOutput(BaseModel):
|
|
1845
|
+
file_id: UUID = Field(..., description="Id of the file.", title="File Id")
|
|
1846
|
+
name: str = Field(..., description="The file's name.", title="Name")
|
|
1847
|
+
content_type: str = Field(..., description="The file's MIME type.", title="Content Type")
|
|
1848
|
+
content_category: FileContentCategory = Field(..., description="What kind of asset the file is.")
|
|
1849
|
+
origin: StoredFileOrigin = Field(
|
|
1850
|
+
...,
|
|
1851
|
+
description="Whether a generation produced the file or a person uploaded it.",
|
|
1852
|
+
)
|
|
1853
|
+
size_bytes: int = Field(..., description="Bytes the file holds.", title="Size Bytes")
|
|
1854
|
+
created_at: AwareDatetime = Field(..., description="When the file was created.", title="Created At")
|
|
1855
|
+
created_by_name: str | None = Field(..., description="Who created the file, when known.", title="Created By Name")
|
|
1856
|
+
deleted_at: AwareDatetime | None = Field(
|
|
1857
|
+
...,
|
|
1858
|
+
description="When the file was deleted; set in the trash only.",
|
|
1859
|
+
title="Deleted At",
|
|
1860
|
+
)
|
|
1861
|
+
deleted_by_name: str | None = Field(
|
|
1862
|
+
...,
|
|
1863
|
+
description="Who deleted the file; null for an automatic delete.",
|
|
1864
|
+
title="Deleted By Name",
|
|
1865
|
+
)
|
|
1866
|
+
|
|
1867
|
+
|
|
1868
|
+
class StoredFilePageOutput(BaseModel):
|
|
1869
|
+
files: list[StoredFileOutput] = Field(..., title="Files")
|
|
1870
|
+
next_cursor: str | None = Field(
|
|
1871
|
+
...,
|
|
1872
|
+
description="Pass as `cursor` for the next page; null on the last page.",
|
|
1873
|
+
title="Next Cursor",
|
|
1874
|
+
)
|
|
1875
|
+
|
|
1876
|
+
|
|
1714
1877
|
class StyleCategory(Enum):
|
|
1715
1878
|
"""
|
|
1716
1879
|
What a reference set *is*.
|
|
@@ -1978,6 +2141,10 @@ class UsageLimitMode(Enum):
|
|
|
1978
2141
|
|
|
1979
2142
|
|
|
1980
2143
|
class UsageLimitPeriod(Enum):
|
|
2144
|
+
"""
|
|
2145
|
+
How often a usage cap resets: at midnight UTC, on Monday, or on the 1st of the month.
|
|
2146
|
+
"""
|
|
2147
|
+
|
|
1981
2148
|
daily = "daily"
|
|
1982
2149
|
weekly = "weekly"
|
|
1983
2150
|
monthly = "monthly"
|
|
@@ -2338,6 +2505,70 @@ class WorkspaceUsageOutput(BaseModel):
|
|
|
2338
2505
|
)
|
|
2339
2506
|
|
|
2340
2507
|
|
|
2508
|
+
class AutoDeletePreviewOutput(BaseModel):
|
|
2509
|
+
files: int = Field(..., description="Files the rules would delete now.", title="Files")
|
|
2510
|
+
bytes: int = Field(..., description="Bytes those files hold.", title="Bytes")
|
|
2511
|
+
is_at_least: bool = Field(
|
|
2512
|
+
...,
|
|
2513
|
+
description="Whether counting stopped at 20,000 files, so the run would delete at least this many.",
|
|
2514
|
+
title="Is At Least",
|
|
2515
|
+
)
|
|
2516
|
+
sample: list[StoredFileOutput] = Field(..., description="The largest of those files.", title="Sample")
|
|
2517
|
+
|
|
2518
|
+
|
|
2519
|
+
class AutoDeleteRuleIO(BaseModel):
|
|
2520
|
+
older_than_days: int = Field(
|
|
2521
|
+
...,
|
|
2522
|
+
description="Delete files created at least this many days ago (7 or more).",
|
|
2523
|
+
ge=7,
|
|
2524
|
+
le=3650,
|
|
2525
|
+
title="Older Than Days",
|
|
2526
|
+
)
|
|
2527
|
+
origin: StoredFileOrigin | None = Field(None, description="Generated or uploaded files only; both when null.")
|
|
2528
|
+
content_categories: list[FileContentCategory] | None = Field(
|
|
2529
|
+
None,
|
|
2530
|
+
description="Only these content categories; every category when empty.",
|
|
2531
|
+
title="Content Categories",
|
|
2532
|
+
)
|
|
2533
|
+
keep_labeled: bool | None = Field(True, description="Keep files with a label.", title="Keep Labeled")
|
|
2534
|
+
keep_in_folder: bool | None = Field(True, description="Keep files filed in a folder.", title="Keep In Folder")
|
|
2535
|
+
keep_liked: bool | None = Field(True, description="Keep files someone liked.", title="Keep Liked")
|
|
2536
|
+
keep_pinned: bool | None = Field(True, description="Keep files someone pinned.", title="Keep Pinned")
|
|
2537
|
+
|
|
2538
|
+
|
|
2539
|
+
class AutoDeleteRunOutput(BaseModel):
|
|
2540
|
+
run_id: UUID = Field(..., description="Id of the run.", title="Run Id")
|
|
2541
|
+
trigger: AutoDeleteTrigger = Field(..., description="Whether the nightly schedule or a person started it.")
|
|
2542
|
+
status: AutoDeleteRunStatus = Field(..., description="`running`, `finished` or `failed`.")
|
|
2543
|
+
policy_workspace_id: UUID = Field(
|
|
2544
|
+
...,
|
|
2545
|
+
description="The workspace whose policy the run applied.",
|
|
2546
|
+
title="Policy Workspace Id",
|
|
2547
|
+
)
|
|
2548
|
+
started_at: AwareDatetime = Field(..., title="Started At")
|
|
2549
|
+
finished_at: AwareDatetime | None = Field(..., title="Finished At")
|
|
2550
|
+
deleted_files: int = Field(
|
|
2551
|
+
...,
|
|
2552
|
+
description="Files deleted. They stay in the trash for 29 days.",
|
|
2553
|
+
title="Deleted Files",
|
|
2554
|
+
)
|
|
2555
|
+
deleted_bytes: int = Field(..., description="Bytes those files held.", title="Deleted Bytes")
|
|
2556
|
+
kept_in_use: int = Field(
|
|
2557
|
+
...,
|
|
2558
|
+
description="Files a rule reached that were kept because something depends on them.",
|
|
2559
|
+
title="Kept In Use",
|
|
2560
|
+
)
|
|
2561
|
+
is_capped: bool = Field(
|
|
2562
|
+
...,
|
|
2563
|
+
description="Whether the run stopped at 50,000 files, leaving the rest for the next one.",
|
|
2564
|
+
title="Is Capped",
|
|
2565
|
+
)
|
|
2566
|
+
|
|
2567
|
+
|
|
2568
|
+
class AutoDeleteRunsOutput(BaseModel):
|
|
2569
|
+
runs: list[AutoDeleteRunOutput] = Field(..., description="Most recent first.", title="Runs")
|
|
2570
|
+
|
|
2571
|
+
|
|
2341
2572
|
class BaseModelCapabilitiesREST(BaseModel):
|
|
2342
2573
|
"""
|
|
2343
2574
|
ToolModelCapabilities without the MCP token-saving serializer — returns all fields for REST.
|
|
@@ -2465,6 +2696,11 @@ class BaseModelCapabilitiesREST(BaseModel):
|
|
|
2465
2696
|
description="ISO 639-1 codes a `dub_video` model can speak, passed to forge as `target_language`.",
|
|
2466
2697
|
title="Dub Languages",
|
|
2467
2698
|
)
|
|
2699
|
+
speech_languages: list[str] | None = Field(
|
|
2700
|
+
None,
|
|
2701
|
+
description="Language codes a text-to-speech model can be told to read the script in, passed to forge as `speech_language`. Empty: the model takes no language and detects it from the text.",
|
|
2702
|
+
title="Speech Languages",
|
|
2703
|
+
)
|
|
2468
2704
|
voice_reference_set_required: bool | None = Field(
|
|
2469
2705
|
False,
|
|
2470
2706
|
description="Speaks only in a trained voice, so a generation needs a reference set holding one. Without it the provider falls back to its own default voice.",
|
|
@@ -2652,6 +2888,20 @@ class CreateReferenceSetResponse(BaseModel):
|
|
|
2652
2888
|
)
|
|
2653
2889
|
|
|
2654
2890
|
|
|
2891
|
+
class DeleteStoredFilesOutput(BaseModel):
|
|
2892
|
+
deleted_files: int = Field(
|
|
2893
|
+
...,
|
|
2894
|
+
description="Files deleted. They stay in the trash for 29 days.",
|
|
2895
|
+
title="Deleted Files",
|
|
2896
|
+
)
|
|
2897
|
+
deleted_bytes: int = Field(..., description="Bytes those files held.", title="Deleted Bytes")
|
|
2898
|
+
skipped: list[SkippedFileOutput] = Field(
|
|
2899
|
+
...,
|
|
2900
|
+
description="Files left because something depends on them. Ids that are not a stored file are left silently.",
|
|
2901
|
+
title="Skipped",
|
|
2902
|
+
)
|
|
2903
|
+
|
|
2904
|
+
|
|
2655
2905
|
class EstimateInferencePriceV2Output(BaseModel):
|
|
2656
2906
|
estimated_price_creative_units: float = Field(
|
|
2657
2907
|
...,
|
|
@@ -3165,6 +3415,7 @@ class OutputFit(BaseModel):
|
|
|
3165
3415
|
scale: OutputFitScale | None = "PLACE"
|
|
3166
3416
|
anchor: OutputFitAnchor | None = "CENTER"
|
|
3167
3417
|
padding: int | None = Field(0, ge=0, le=512, title="Padding")
|
|
3418
|
+
corner_radius: int | None = Field(0, ge=0, le=512, title="Corner Radius")
|
|
3168
3419
|
|
|
3169
3420
|
|
|
3170
3421
|
class ProjectDetail(BaseModel):
|
|
@@ -3445,6 +3696,37 @@ class StartTrainingResponse(BaseModel):
|
|
|
3445
3696
|
)
|
|
3446
3697
|
|
|
3447
3698
|
|
|
3699
|
+
class StorageBreakdownOutput(BaseModel):
|
|
3700
|
+
total_files: int = Field(
|
|
3701
|
+
...,
|
|
3702
|
+
description="Stored files when the breakdown was computed.",
|
|
3703
|
+
title="Total Files",
|
|
3704
|
+
)
|
|
3705
|
+
total_bytes: int = Field(..., description="Bytes those files hold.", title="Total Bytes")
|
|
3706
|
+
by_origin: list[StorageSliceOutput] = Field(..., description="Generated and uploaded files.", title="By Origin")
|
|
3707
|
+
by_category: list[StorageSliceOutput] = Field(
|
|
3708
|
+
...,
|
|
3709
|
+
description="Files by content category, most bytes first.",
|
|
3710
|
+
title="By Category",
|
|
3711
|
+
)
|
|
3712
|
+
by_age: list[StorageSliceOutput] = Field(..., description="Files by age, youngest first.", title="By Age")
|
|
3713
|
+
by_project: list[StorageSliceOutput] = Field(
|
|
3714
|
+
...,
|
|
3715
|
+
description="The projects holding the most, then the rest together, then files in no project. A file in several projects counts in each.",
|
|
3716
|
+
title="By Project",
|
|
3717
|
+
)
|
|
3718
|
+
by_member: list[StorageSliceOutput] = Field(
|
|
3719
|
+
...,
|
|
3720
|
+
description="The members who created the most, then everyone else together.",
|
|
3721
|
+
title="By Member",
|
|
3722
|
+
)
|
|
3723
|
+
largest_files: list[StoredFileOutput] = Field(
|
|
3724
|
+
...,
|
|
3725
|
+
description="The largest stored files, largest first.",
|
|
3726
|
+
title="Largest Files",
|
|
3727
|
+
)
|
|
3728
|
+
|
|
3729
|
+
|
|
3448
3730
|
class TileGrid(BaseModel):
|
|
3449
3731
|
"""
|
|
3450
3732
|
One tile's place on the grid. Every tile of a set shares all but the footprint and height.
|
|
@@ -3557,6 +3839,62 @@ class UpdateMemberBody(BaseModel):
|
|
|
3557
3839
|
)
|
|
3558
3840
|
|
|
3559
3841
|
|
|
3842
|
+
class WorkspaceStorageOutput(BaseModel):
|
|
3843
|
+
used_bytes: int = Field(
|
|
3844
|
+
...,
|
|
3845
|
+
description="Bytes the workspace stores now: a live count.",
|
|
3846
|
+
title="Used Bytes",
|
|
3847
|
+
)
|
|
3848
|
+
quota_bytes: int | None = Field(
|
|
3849
|
+
...,
|
|
3850
|
+
description="The most the workspace may store; null when it has no limit.",
|
|
3851
|
+
title="Quota Bytes",
|
|
3852
|
+
)
|
|
3853
|
+
breakdown: StorageBreakdownOutput | None = Field(
|
|
3854
|
+
...,
|
|
3855
|
+
description="What the stored files are, as of `breakdown_computed_at`; null until first computed.",
|
|
3856
|
+
)
|
|
3857
|
+
breakdown_computed_at: AwareDatetime | None = Field(
|
|
3858
|
+
...,
|
|
3859
|
+
description="When the breakdown was computed. It trails `used_bytes`, which is live.",
|
|
3860
|
+
title="Breakdown Computed At",
|
|
3861
|
+
)
|
|
3862
|
+
is_breakdown_computing: bool = Field(
|
|
3863
|
+
...,
|
|
3864
|
+
description="Whether a fresh breakdown is being computed.",
|
|
3865
|
+
title="Is Breakdown Computing",
|
|
3866
|
+
)
|
|
3867
|
+
breakdown_recompute_available_at: AwareDatetime | None = Field(
|
|
3868
|
+
...,
|
|
3869
|
+
description="When a fresh breakdown can next be asked for: 15 minutes after the last was computed. Null when it can be now.",
|
|
3870
|
+
title="Breakdown Recompute Available At",
|
|
3871
|
+
)
|
|
3872
|
+
|
|
3873
|
+
|
|
3874
|
+
class AutoDeletePolicyIO(BaseModel):
|
|
3875
|
+
is_enabled: bool | None = Field(False, description="Whether the rules run every night.", title="Is Enabled")
|
|
3876
|
+
rules: list[AutoDeleteRuleIO] | None = Field(
|
|
3877
|
+
None,
|
|
3878
|
+
description="A file any rule reaches is deleted. A file something depends on, or that is public or featured, never is.",
|
|
3879
|
+
max_length=10,
|
|
3880
|
+
title="Rules",
|
|
3881
|
+
)
|
|
3882
|
+
is_locked: bool | None = Field(
|
|
3883
|
+
False,
|
|
3884
|
+
description="Whether every workspace under this one must follow these rules, whatever they set.",
|
|
3885
|
+
title="Is Locked",
|
|
3886
|
+
)
|
|
3887
|
+
notify_admins: bool | None = Field(
|
|
3888
|
+
False,
|
|
3889
|
+
description="Whether admins are told what each run deleted.",
|
|
3890
|
+
title="Notify Admins",
|
|
3891
|
+
)
|
|
3892
|
+
|
|
3893
|
+
|
|
3894
|
+
class AutoDeletePreviewInput(BaseModel):
|
|
3895
|
+
rules: list[AutoDeleteRuleIO] = Field(..., description="The rules to preview.", max_length=10, title="Rules")
|
|
3896
|
+
|
|
3897
|
+
|
|
3560
3898
|
class BaseModelDefaultsOutput(BaseModel):
|
|
3561
3899
|
"""
|
|
3562
3900
|
Layer's curated recommendations, filtered to what this workspace may run.
|
|
@@ -3584,6 +3922,21 @@ class BaseModelDefaultsOutput(BaseModel):
|
|
|
3584
3922
|
)
|
|
3585
3923
|
|
|
3586
3924
|
|
|
3925
|
+
class EffectiveAutoDeletePolicyOutput(BaseModel):
|
|
3926
|
+
policy: AutoDeletePolicyIO
|
|
3927
|
+
source_workspace_id: UUID = Field(
|
|
3928
|
+
...,
|
|
3929
|
+
description="The workspace that set the policy: this one or an ancestor.",
|
|
3930
|
+
title="Source Workspace Id",
|
|
3931
|
+
)
|
|
3932
|
+
source_workspace_name: str | None = Field(..., description="That workspace's name.", title="Source Workspace Name")
|
|
3933
|
+
is_locked_by_ancestor: bool = Field(
|
|
3934
|
+
...,
|
|
3935
|
+
description="Whether an ancestor locked it, so this workspace cannot set its own.",
|
|
3936
|
+
title="Is Locked By Ancestor",
|
|
3937
|
+
)
|
|
3938
|
+
|
|
3939
|
+
|
|
3587
3940
|
class FileMetadataView(BaseModel):
|
|
3588
3941
|
"""
|
|
3589
3942
|
What an engine needs beyond the image to build a resource from a file. Each kind is null when absent.
|
|
@@ -3860,6 +4213,22 @@ class WorkflowRunAsset(BaseModel):
|
|
|
3860
4213
|
)
|
|
3861
4214
|
|
|
3862
4215
|
|
|
4216
|
+
class AutoDeleteOutput(BaseModel):
|
|
4217
|
+
is_available: bool = Field(
|
|
4218
|
+
...,
|
|
4219
|
+
description="Whether the workspace can use auto-delete: Enterprise only.",
|
|
4220
|
+
title="Is Available",
|
|
4221
|
+
)
|
|
4222
|
+
policy: AutoDeletePolicyIO | None = Field(
|
|
4223
|
+
...,
|
|
4224
|
+
description="The policy this workspace set itself; null when it follows another.",
|
|
4225
|
+
)
|
|
4226
|
+
effective_policy: EffectiveAutoDeletePolicyOutput | None = Field(
|
|
4227
|
+
...,
|
|
4228
|
+
description="The policy that applies to this workspace; null when none does.",
|
|
4229
|
+
)
|
|
4230
|
+
|
|
4231
|
+
|
|
3863
4232
|
class EstimateInferencePriceRequest(BaseModel):
|
|
3864
4233
|
"""
|
|
3865
4234
|
REST request body for estimating inference price. workspace_id comes from path.
|
|
@@ -4000,6 +4369,24 @@ class EstimateInferencePriceRequest(BaseModel):
|
|
|
4000
4369
|
description="Parts to split along when segment_by is PARTS, at most 10.",
|
|
4001
4370
|
title="Segment Part Names",
|
|
4002
4371
|
)
|
|
4372
|
+
segment_target: SegmentTarget | None = Field(
|
|
4373
|
+
None,
|
|
4374
|
+
description="What a mesh split treats the mesh as: CHARACTER, split by a body-part template, or GENERAL, split by segment_level. Support varies by model.",
|
|
4375
|
+
)
|
|
4376
|
+
segment_parts: SegmentParts | None = Field(
|
|
4377
|
+
None,
|
|
4378
|
+
description="How many parts a CHARACTER split makes. Support varies by model.",
|
|
4379
|
+
title="Segment Parts",
|
|
4380
|
+
)
|
|
4381
|
+
segment_level: SegmentLevel | None = Field(
|
|
4382
|
+
None,
|
|
4383
|
+
description="How finely a GENERAL split cuts the mesh: LOW, MEDIUM or HIGH. Support varies by model.",
|
|
4384
|
+
)
|
|
4385
|
+
segment_strength: SegmentStrength | None = Field(
|
|
4386
|
+
None,
|
|
4387
|
+
description="How aggressively a mesh split cuts: higher makes more parts. Support varies by model.",
|
|
4388
|
+
title="Segment Strength",
|
|
4389
|
+
)
|
|
4003
4390
|
quad_mesh: bool | None = Field(None, description="Generate quad mesh.", title="Quad Mesh")
|
|
4004
4391
|
pbr_materials: bool | None = Field(None, description="Generate PBR materials.", title="Pbr Materials")
|
|
4005
4392
|
low_poly: bool | None = Field(None, description="Generate low-poly mesh.", title="Low Poly")
|
|
@@ -4212,6 +4599,24 @@ class EstimateInferencePriceV2Request(BaseModel):
|
|
|
4212
4599
|
description="Parts to split along when segment_by is PARTS, at most 10.",
|
|
4213
4600
|
title="Segment Part Names",
|
|
4214
4601
|
)
|
|
4602
|
+
segment_target: SegmentTarget | None = Field(
|
|
4603
|
+
None,
|
|
4604
|
+
description="What a mesh split treats the mesh as: CHARACTER, split by a body-part template, or GENERAL, split by segment_level. Support varies by model.",
|
|
4605
|
+
)
|
|
4606
|
+
segment_parts: SegmentParts | None = Field(
|
|
4607
|
+
None,
|
|
4608
|
+
description="How many parts a CHARACTER split makes. Support varies by model.",
|
|
4609
|
+
title="Segment Parts",
|
|
4610
|
+
)
|
|
4611
|
+
segment_level: SegmentLevel | None = Field(
|
|
4612
|
+
None,
|
|
4613
|
+
description="How finely a GENERAL split cuts the mesh: LOW, MEDIUM or HIGH. Support varies by model.",
|
|
4614
|
+
)
|
|
4615
|
+
segment_strength: SegmentStrength | None = Field(
|
|
4616
|
+
None,
|
|
4617
|
+
description="How aggressively a mesh split cuts: higher makes more parts. Support varies by model.",
|
|
4618
|
+
title="Segment Strength",
|
|
4619
|
+
)
|
|
4215
4620
|
quad_mesh: bool | None = Field(None, description="Generate quad mesh.", title="Quad Mesh")
|
|
4216
4621
|
pbr_materials: bool | None = Field(None, description="Generate PBR materials.", title="Pbr Materials")
|
|
4217
4622
|
low_poly: bool | None = Field(None, description="Generate low-poly mesh.", title="Low Poly")
|
|
@@ -4236,6 +4641,11 @@ class EstimateInferencePriceV2Request(BaseModel):
|
|
|
4236
4641
|
None, description="Style exaggeration (0-1).", title="Style Exaggeration"
|
|
4237
4642
|
)
|
|
4238
4643
|
speed: Speed | None = Field(None, description="Speech speed multiplier.", title="Speed")
|
|
4644
|
+
speech_language: str | None = Field(
|
|
4645
|
+
None,
|
|
4646
|
+
description="The language the speech is in, as one of the codes the model's capabilities list under `speech_languages`. Omit to let the model detect it from the text.",
|
|
4647
|
+
title="Speech Language",
|
|
4648
|
+
)
|
|
4239
4649
|
upscale_ratio: float | None = Field(None, description="Upscale factor (e.g. 2.0, 4.0).", title="Upscale Ratio")
|
|
4240
4650
|
creativity: float | None = Field(
|
|
4241
4651
|
None,
|
|
@@ -4400,7 +4810,7 @@ class EstimateInferencePriceV2Request(BaseModel):
|
|
|
4400
4810
|
)
|
|
4401
4811
|
output_fit: OutputFit | None = Field(
|
|
4402
4812
|
None,
|
|
4403
|
-
description="Fit the image onto its delivery canvas after everything else the run does: `trim` its transparent margin, keep the drawing's own size (`canvas: CONTENT`) or place it on a `FIXED` `width` x `height` canvas, scaled as `scale` says and aligned on `anchor` (`BASE` stands a game tile's base on the bottom centre), with `padding` px of transparent margin. Image outputs only.",
|
|
4813
|
+
description="Fit the image onto its delivery canvas after everything else the run does: `trim` its transparent margin, keep the drawing's own size (`canvas: CONTENT`) or place it on a `FIXED` `width` x `height` canvas, scaled as `scale` says and aligned on `anchor` (`BASE` stands a game tile's base on the bottom centre), with `padding` px of transparent margin and `corner_radius` px rounded corners cut to transparent. Image outputs only.",
|
|
4404
4814
|
)
|
|
4405
4815
|
nine_slice: bool | None = Field(
|
|
4406
4816
|
None,
|
|
@@ -4592,6 +5002,24 @@ class ExecuteInferenceRequest(BaseModel):
|
|
|
4592
5002
|
description="Parts to split along when segment_by is PARTS, at most 10.",
|
|
4593
5003
|
title="Segment Part Names",
|
|
4594
5004
|
)
|
|
5005
|
+
segment_target: SegmentTarget | None = Field(
|
|
5006
|
+
None,
|
|
5007
|
+
description="What a mesh split treats the mesh as: CHARACTER, split by a body-part template, or GENERAL, split by segment_level. Support varies by model.",
|
|
5008
|
+
)
|
|
5009
|
+
segment_parts: SegmentParts | None = Field(
|
|
5010
|
+
None,
|
|
5011
|
+
description="How many parts a CHARACTER split makes. Support varies by model.",
|
|
5012
|
+
title="Segment Parts",
|
|
5013
|
+
)
|
|
5014
|
+
segment_level: SegmentLevel | None = Field(
|
|
5015
|
+
None,
|
|
5016
|
+
description="How finely a GENERAL split cuts the mesh: LOW, MEDIUM or HIGH. Support varies by model.",
|
|
5017
|
+
)
|
|
5018
|
+
segment_strength: SegmentStrength | None = Field(
|
|
5019
|
+
None,
|
|
5020
|
+
description="How aggressively a mesh split cuts: higher makes more parts. Support varies by model.",
|
|
5021
|
+
title="Segment Strength",
|
|
5022
|
+
)
|
|
4595
5023
|
quad_mesh: bool | None = Field(None, description="Generate quad mesh.", title="Quad Mesh")
|
|
4596
5024
|
pbr_materials: bool | None = Field(None, description="Generate PBR materials.", title="Pbr Materials")
|
|
4597
5025
|
low_poly: bool | None = Field(None, description="Generate low-poly mesh.", title="Low Poly")
|
|
@@ -4803,6 +5231,24 @@ class ExecuteInferenceV2Request(BaseModel):
|
|
|
4803
5231
|
description="Parts to split along when segment_by is PARTS, at most 10.",
|
|
4804
5232
|
title="Segment Part Names",
|
|
4805
5233
|
)
|
|
5234
|
+
segment_target: SegmentTarget | None = Field(
|
|
5235
|
+
None,
|
|
5236
|
+
description="What a mesh split treats the mesh as: CHARACTER, split by a body-part template, or GENERAL, split by segment_level. Support varies by model.",
|
|
5237
|
+
)
|
|
5238
|
+
segment_parts: SegmentParts | None = Field(
|
|
5239
|
+
None,
|
|
5240
|
+
description="How many parts a CHARACTER split makes. Support varies by model.",
|
|
5241
|
+
title="Segment Parts",
|
|
5242
|
+
)
|
|
5243
|
+
segment_level: SegmentLevel | None = Field(
|
|
5244
|
+
None,
|
|
5245
|
+
description="How finely a GENERAL split cuts the mesh: LOW, MEDIUM or HIGH. Support varies by model.",
|
|
5246
|
+
)
|
|
5247
|
+
segment_strength: SegmentStrength | None = Field(
|
|
5248
|
+
None,
|
|
5249
|
+
description="How aggressively a mesh split cuts: higher makes more parts. Support varies by model.",
|
|
5250
|
+
title="Segment Strength",
|
|
5251
|
+
)
|
|
4806
5252
|
quad_mesh: bool | None = Field(None, description="Generate quad mesh.", title="Quad Mesh")
|
|
4807
5253
|
pbr_materials: bool | None = Field(None, description="Generate PBR materials.", title="Pbr Materials")
|
|
4808
5254
|
low_poly: bool | None = Field(None, description="Generate low-poly mesh.", title="Low Poly")
|
|
@@ -4827,6 +5273,11 @@ class ExecuteInferenceV2Request(BaseModel):
|
|
|
4827
5273
|
None, description="Style exaggeration (0-1).", title="Style Exaggeration"
|
|
4828
5274
|
)
|
|
4829
5275
|
speed: Speed | None = Field(None, description="Speech speed multiplier.", title="Speed")
|
|
5276
|
+
speech_language: str | None = Field(
|
|
5277
|
+
None,
|
|
5278
|
+
description="The language the speech is in, as one of the codes the model's capabilities list under `speech_languages`. Omit to let the model detect it from the text.",
|
|
5279
|
+
title="Speech Language",
|
|
5280
|
+
)
|
|
4830
5281
|
upscale_ratio: float | None = Field(None, description="Upscale factor (e.g. 2.0, 4.0).", title="Upscale Ratio")
|
|
4831
5282
|
creativity: float | None = Field(
|
|
4832
5283
|
None,
|
|
@@ -4991,7 +5442,7 @@ class ExecuteInferenceV2Request(BaseModel):
|
|
|
4991
5442
|
)
|
|
4992
5443
|
output_fit: OutputFit | None = Field(
|
|
4993
5444
|
None,
|
|
4994
|
-
description="Fit the image onto its delivery canvas after everything else the run does: `trim` its transparent margin, keep the drawing's own size (`canvas: CONTENT`) or place it on a `FIXED` `width` x `height` canvas, scaled as `scale` says and aligned on `anchor` (`BASE` stands a game tile's base on the bottom centre), with `padding` px of transparent margin. Image outputs only.",
|
|
5445
|
+
description="Fit the image onto its delivery canvas after everything else the run does: `trim` its transparent margin, keep the drawing's own size (`canvas: CONTENT`) or place it on a `FIXED` `width` x `height` canvas, scaled as `scale` says and aligned on `anchor` (`BASE` stands a game tile's base on the bottom centre), with `padding` px of transparent margin and `corner_radius` px rounded corners cut to transparent. Image outputs only.",
|
|
4995
5446
|
)
|
|
4996
5447
|
nine_slice: bool | None = Field(
|
|
4997
5448
|
None,
|
|
@@ -5053,6 +5504,11 @@ class ExecuteInferenceV2Request(BaseModel):
|
|
|
5053
5504
|
None,
|
|
5054
5505
|
description="Deliver this run's terminal events to a URL instead of polling for them. See the Webhooks section of this document for the payload, headers and retry behaviour.",
|
|
5055
5506
|
)
|
|
5507
|
+
inference_tool_key: str | None = Field(
|
|
5508
|
+
None,
|
|
5509
|
+
description="The Layer tool this run is, such as `image.upscale`, so the asset it makes reopens in that tool in the Layer app. The run must be one the tool makes: a `base_model_id` from the tool's models, with every value the tool fixes left as the tool sets it. A run that is not is refused with a 422 naming why (`UNKNOWN_INFERENCE_TOOL`, `INFERENCE_TOOL_MODEL_NOT_IN_POOL`, `INFERENCE_TOOL_PIN_MISMATCH`, `INFERENCE_TOOL_NO_REFRAME` or `INFERENCE_TOOL_UPSCALE_COPIES_SOURCE`).",
|
|
5510
|
+
title="Inference Tool Key",
|
|
5511
|
+
)
|
|
5056
5512
|
|
|
5057
5513
|
|
|
5058
5514
|
class GetWorkflowRunOutput(BaseModel):
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|