Folder Models
Table of Contents
Overview
This page documents the Pydantic models used for folder operations in the Strata Cloud Manager SDK. These models provide structured data validation and serialization for folder creation, updates, and API responses.
Models
FolderBaseModel
The base model for folder resources containing common fields.
class FolderBaseModel(BaseModel):
name: str
parent: str
description: Optional[str] = None
labels: Optional[List[str]] = None
snippets: Optional[List[str]] = None
display_name: Optional[str] = None
model: Optional[str] = None
serial_number: Optional[str] = None
type: Optional[str] = None
device_only: Optional[bool] = None
FolderCreateModel
Model for creating new folder resources.
class FolderCreateModel(FolderBaseModel):
# Inherits all fields from FolderBaseModel without additional fields
pass
FolderUpdateModel
Model for updating existing folder resources.
FolderResponseModel
Model for folder responses from the API.
class FolderResponseModel(FolderBaseModel):
id: UUID
@field_validator("parent")
@classmethod
def validate_parent(cls, v: str) -> str:
"""
Validate parent field. Empty string is allowed for root folders.
"""
# Allow empty string for root folders
return v
Model Validation Rules
Field | Validation Rules |
---|---|
name |
Non-empty string, max 255 characters |
parent |
String, empty string for root folders |
id |
Valid UUID format (required in response and update models) |
description |
Optional text description |
labels |
Optional list of string labels |
snippets |
Optional list of snippet IDs (usually UUIDs as strings) |
display_name |
Optional string |
model |
Optional string |
serial_number |
Optional string |
type |
Optional string |
device_only |
Optional boolean |
The FolderResponseModel
includes a validator for the parent field:
@field_validator("parent")
@classmethod
def validate_parent(cls, v: str) -> str:
"""
Validate parent field. Empty string is allowed for root folders.
"""
# Allow empty string for root folders
return v
Usage Examples
Creating Model Instances
from uuid import UUID
from scm.models.setup.folder import (
FolderBaseModel,
FolderCreateModel,
FolderUpdateModel,
FolderResponseModel
)
# Create a base folder model
base_folder = FolderBaseModel(
name="Projects",
parent="", # Root folder
description="Main projects folder",
labels=["root", "projects"],
display_name="Projects (Root)",
)
# Create a folder creation model
create_folder = FolderCreateModel(
name="Development",
parent="Projects",
description="Development projects folder",
labels=["development"]
)
# Create a folder update model
update_folder = FolderUpdateModel(
id=UUID("baf4dc4c-9ea2-4a3d-92bb-6f8a9e60822e"),
name="Development",
parent="Projects",
description="Updated folder",
labels=["dev", "updated"]
)
# Parse a folder API response
response = FolderResponseModel(
id=UUID("baf4dc4c-9ea2-4a3d-92bb-6f8a9e60822e"),
name="Engineering",
parent="root",
display_name="Engineering",
model="PA-VM",
serial_number="0123456789",
type="container",
device_only=False
)
Model Validation
from pydantic_core import ValidationError
try:
FolderCreateModel(name="", parent="root")
except ValidationError as e:
print("Validation error:", e)
Model Serialization
folder = FolderResponseModel(
id=UUID("baf4dc4c-9ea2-4a3d-92bb-6f8a9e60822e"),
name="Engineering",
parent="root"
)
# Convert to dict
folder_dict = folder.model_dump()
# Convert to JSON
folder_json = folder.model_dump_json()
API Integration Examples
from scm.config.setup.folder import Folder
folders = Folder(client)
# Create and send a folder
new_folder = FolderCreateModel(
name="QA",
parent="Engineering",
description="Quality Assurance folder"
)
created = folders.create(new_folder.model_dump(exclude_unset=True))
# Update a folder
update = FolderUpdateModel(
id=created.id,
name="QA",
parent="Engineering",
description="QA and Testing"
)
folders.update(update)