flip_api.domain.schemas.file
Attributes
Classes
Model for file paths in the model. |
|
Model for list of model files. |
|
Model for SNS message when a file is scanned. |
|
Model for the message received when a file is scanned. |
|
Model for file upload request body. |
|
Response for a presigned-POST upload request. |
|
Response model for pre-signed URL requests. |
|
Model for file download requests. |
|
Model for a list of UUIDs. |
Functions
|
Reject any character that would let the caller steer an S3 key off-prefix. |
Module Contents
- flip_api.domain.schemas.file.validate_safe_file_name(value: str) str
Reject any character that would let the caller steer an S3 key off-prefix.
Used at every boundary where caller-supplied text is concatenated into an S3 object key — request bodies (
UploadFileBody) and FastAPI path parameters on the download/delete routes. Without this guard a value like../other-model/xor one containing NUL/control bytes would write outside the{model_id}/prefix or smuggle an unexpected key past the downstream scan/download endpoints.- Parameters:
value (str) – Caller-supplied filename to validate.
- Returns:
The value unchanged when every rule passes.
- Return type:
str
- Raises:
ValueError – If the value contains whitespace at the edges, path separators, a path-traversal token, or control characters.
- flip_api.domain.schemas.file.SafeFileName
- class flip_api.domain.schemas.file.ModelFiles
Bases:
pydantic.BaseModelModel for file paths in the model.
- algo: str | None = None
- opener: str | None = None
- model: str | None = None
- class flip_api.domain.schemas.file.ModelFilesList
Bases:
pydantic.BaseModelModel for list of model files.
- files: ModelFiles
- class flip_api.domain.schemas.file.ScannedFileSns
Bases:
pydantic.BaseModelModel for SNS message when a file is scanned.
- message: str
- class flip_api.domain.schemas.file.ScannedFileMessage
Bases:
pydantic.BaseModelModel for the message received when a file is scanned.
- bucket: str
- key: str
- finding: str
- class flip_api.domain.schemas.file.ScannedFileInput
Bases:
pydantic.BaseModel- Records: list[dict[str, Any]]
- class flip_api.domain.schemas.file.UploadFileBody
Bases:
pydantic.BaseModelModel for file upload request body.
Field names are camelCase rather than snake_case because they map directly to the case-sensitive form-field names in the multipart upload (e.g. S3’s
Content-Typeform field), and to stay consistent with the existingfileNameboundary.- fileName: str
- contentType: str | None
- classmethod _validate_file_name(v: str) str
- class flip_api.domain.schemas.file.PresignedUploadResponse
Bases:
pydantic.BaseModelResponse for a presigned-POST upload request.
The client must POST
multipart/form-datatourlwith every entry infieldsincluded as a form field, plus the file last under the field namefile.maxBytesmirrors the size cap baked into the policy so the UI can short-circuit oversized files locally and surface a clear error.- url: str
- fields: dict[str, str]
- maxBytes: int
- class flip_api.domain.schemas.file.ModelFile
Bases:
pydantic.BaseModel- id: str | None = None
- name: str
- size: int | None = None
- type: str | None = None
- status: flip_api.domain.schemas.status.FileUploadStatus | None = None
- model_id: uuid.UUID
- created: str | None = None
- modified: str | None = None
- class flip_api.domain.schemas.file.PreSignedUrlResponse
Bases:
pydantic.BaseModelResponse model for pre-signed URL requests.
- fileName: str
- presignedUrl: str
- model_id: str
- class flip_api.domain.schemas.file.ModelFileDownload
Bases:
pydantic.BaseModelModel for file download requests.
- fileName: SafeFileName
- model_id: uuid.UUID
- user_id: uuid.UUID
- class flip_api.domain.schemas.file.IdList
Bases:
pydantic.BaseModelModel for a list of UUIDs.
Enforces that it’s a list with at least 1 element. Ensures each item in the list is a valid UUID.