All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- add support for commenter permissions
- add base URL for smartsheet.eu
- add
level
parameter to get_row
- pull updates for Python 3.10 compatibility
- update setup and readme for Python version 3.7 - 3.10
- update EnumeratedValue
__eq__
method to handle comparisons to NoneType
- separate
DatetimeObjectValue
fromDateObjectValue
to fix Sheet Summary Field serialization
- don't add time offset to date types when serializing
- add column formulas
- add filterId to get_sheets
- Adding rowsModifiedSince parameter to sheet.get_sheet
- add
rules
andruleRecipients
to create sheet from template inclusion
- #144 bumped missing property message to debug.
- Model Profile Image as different object from Image
- Webhooks for Columns
- type and object definitions to support multi-picklist columns
- additions to CellDataItem widget contents to support METRIC widgets containing sheet summary fields
- dashboards widget model to support widgets that are in an error state
- get_columns needs level support
- update doc to indicate format and objectValue are valid for cell history includes
- continue to support level 0 widget type names
- Make INFO+ level logging return either strings or well-formed json for log parsing
- add support for sheet summary
- column descriptions
- additional date formats
- enable Coveralls
- cleaned up include/exclude flags on copy sheet/folder/workspace
- Significant overhaul of Sights
- Fix logging to use existing module logger instead of a new logger'util'
- automated doc updates should be ignored in changelist
- bug-21961 sendEmail is hardcoded to true in share_sheet api
- doc: update CHANGELOG.md
- doc: build 2.68.2 final docs
- install dependencies for sphinx
- automated doc updates should be ignored in changelist
- fix arguments for current versions of pytest
- Event Reporting functionality
- WEBCONTENT sight widget type
- Add Workspace to sheet model
- Support for groups in get_current_user
- Multi-contact feature support
- Fixed setter for modified_at attribute in row model
- Added BASE URI definition for Smartsheetgov
- Remove enum34 as a dependency for versions of Python after 3.4
- XLSX and CSV import endpoints for workspaces, folders and sheets
- Rudimentary support Sight chart objects (chart contents read into JSON strings)
- Exclude
permalinks
option to Home.list_all_contents - backgroundColor to Sight object
- String representations for EnumeratedValue should contain just their
name
notclass_name.name
(SO reported).
- Implemented cross-sheet References
- Updated UserProfile and added support for profile images
- Added an argument to the client constructor method to externally set the API base URI
- Implemented Automation Rules
- Implemented row sort objects and Sort Rows in Sheet endpoint
- Added row filter properties to SheetFilter
- Added ifVersionAfter parameter to Sheet.get_sheet() method
In our efforts to further streamline the SDK, enumerated properties have been changed from type String to type EnumeratedValue, which wraps Python Enum. In addition to allowing us to remove a number of redundant string arrays, this also provides the benefit of better code completion (in most IDEs) and provides for more programmatic clarity, for example:
sheet = smartsheet.Sheets.get_sheet(sheet_id)
if sheet.access_level == AccessLevel.OWNER:
# perform some task for OWNER
...
However, string comparisons will continue to operate as they did previously. No change is required if your code uses comparisons such as:
sheet = smartsheet.Sheets.get_sheet(sheet_id)
if sheet.access_level == 'OWNER':
# perform some task for OWNER
...
enum34 has been added as a required package for the SDK
Several changes have been made to the SDK to improve both the maintainability of the SDK and the predictability/reliability of the results returned by the SDK. Some of these changes may be breaking to code that currently uses the SDK. The following changes should be reviewed:
- The JSON serializer has been changed to ignore
null
values and empty lists ([]
). A new Smartsheet model, ExplicitNull, is provided for circumstances where there is a need to force the serialization of a null value. As an example, to clear a hyperlink value from a cell, you can perform the following operation:
first_row = Row()
first_row.id = 10
first_row.cells.append({
"columnId": 101,
"value": "",
"hyperlink": ExplicitNull()
})
response = self.client.Sheets.update_rows(1, [first_row])
- Property values are more strongly type checked on assignment and you will get a
ValueError
exception if you attempt to assign an incompatible object. Previously, there were a number of cases where assignment of incompatible types would have resulted in a silent failure by the SDK. - In previous releases, property filters were executed prior to create or update operations on many models within the SDK. Unfortunately, those filters were sometimes at odds with the API and occasionally returned unpredictable results. For that reason those filters have been removed. Be aware that any property that is set in a model will be passed through to the API.
- Properties
id
,format
, andtype
are accessible without the preceding underscore, e.g.cell._format
has changed tocell.format
.
- There is a race condition which exists in the window between when the API servers disconnect an idle connection and when the client receives notification of the disconnection. If a request is made during that window, the client reads a blank status line and issues an error indicating that the session was terminated without a response (UnexpectedRequestError). This release is made to address that issue by implementing appropriate retries in the SDK.
- Safe defaults for mock api test name and module name
-
Support for column validation
-
New
Passthrough
object supportsget
,post
,put
, ordelete
with arbitrary json payload. Use this for access to any API feature that isn't yet modeled in the API. Requests still benefit from error retry and logging. -
add_image_to_cell
&attach_file_to_cell
: Now supportoverride_validation
andalt_text
parameters -
copy_folder
,copy_workspace
andcopy_sheet
: Additional options forinclude
,skip_remap
, andomit
parameters -
Support for
include=sheetVersion
for several endpoints that return a list of sheets -
Support for reading sheet filters
-
More flags when publishing Sheets or Reports as HTML
-
Search
- Results include favorite information
- Limit search scope
- Mock tests
- Improved logging
- Sight widget column property name
- Documented as Github releases