Functions Access Service
The Functions Access Service provides access to backend services like number generators and file uploads. These services are available through the service parameter that is passed to all Functions.
The Access Service is ratelimited to 100 req/min per token. Functions receive a fresh token for every call.
Number Generation
You can use the service.generator to generate unique numbers, for example for part numbers or document IDs.
Methods
get_number(name: str) -> intRetrieve one number from the given generator.get_numbers(name: str, count: int) -> list[int]Retrieve multiple numbers from the given generator in one request. Maximum forcountis 100.
Example:
To generate multiple numbers at once:
numbers = service.generator.get_numbers("external_part_number", count=5)
# Returns a list of integers
File Uploads
The service.file_upload object allows you to upload new files to the CIM Database Cloud or overwrite existing ones.
Upload a new file
service.file_upload.upload_new_file(
self,
parent_object_id: str,
filename: str,
stream: BinaryIO,
persno: str | None = None,
check_access: bool = True,
filesize: int | None = None,
) -> str:
| Parameter | Type | Description |
|---|---|---|
parent_object_id |
str |
The ID of the parent object to which the new file will be attached. |
filename |
str |
The name of the new file to be uploaded. |
stream |
BinaryIO |
A binary stream containing the file data to upload. |
persno |
str \| None |
The user/person number uploading the file (defaults to the user that triggered the Function). |
check_access |
bool |
Whether to check access permissions before uploading. Defaults to True. |
filesize |
int \| None |
Size of the file in bytes (required only if the stream is not seekable). |
Exceptions:
csfunctions.service.Unauthorized: If th service token is invalid.csfunctions.service.Forbidden: If access check fails.csfunctions.service.NotFound: If the parent object does not exist.
Info
Uploading new files performs 3 requests to the Functions Access Service, which count towards the ratelimit of 100 req/min per token.
Example:
with open("myfile.pdf", "rb") as f:
file_object_id = service.file_upload.upload_new_file(
parent_object_id="123456",
filename="myfile.pdf",
stream=f
)
Overwrite an existing file
service.file_upload.upload_file_content(
file_object_id: str,
stream: BinaryIO,
persno: str | None = None,
check_access: bool = True,
filesize: int | None = None,
delete_derived_files: bool = True,
) -> None
| Parameter | Type | Description |
|---|---|---|
file_object_id |
str |
The ID of the file object to upload to (must already exist). |
stream |
BinaryIO |
A binary stream containing the file data to upload. |
persno |
str \| None |
The user/person number uploading the file (defaults to the user that triggered the Function). |
check_access |
bool |
Whether to check access permissions before uploading. Defaults to True. |
filesize |
int \| None |
Size of the file in bytes (required only if the stream is not seekable). |
delete_derived_files |
bool |
Whether to delete derived files (e.g. converted pdfs) after upload and trigger a new conversion. Defaults to True. |
Warning
Overwriting files is only possible if the file is not locked!
Exceptions:
csfunctions.service.Unauthorized: If th service token is invalid.csfunctions.service.Forbidden: If access check fails.csfunctions.service.Conflict: If the file is already locked.csfunctions.service.NotFound: If the file object does not exist.csfunctions.service.RateLimitExceeded: If the services rate limit is exceeded.
Info
Uploading new files performs 2 requests to the Functions Access Service, which count towards the ratelimit of 100 req/min per token.
Example: