github.com/Files-com/files-sdk-go/v3@v3.1.81/automation.go (about) 1 package files_sdk 2 3 import ( 4 "encoding/json" 5 "time" 6 7 lib "github.com/Files-com/files-sdk-go/v3/lib" 8 ) 9 10 type Automation struct { 11 Id int64 `json:"id,omitempty" path:"id,omitempty" url:"id,omitempty"` 12 AlwaysOverwriteSizeMatchingFiles *bool `json:"always_overwrite_size_matching_files,omitempty" path:"always_overwrite_size_matching_files,omitempty" url:"always_overwrite_size_matching_files,omitempty"` 13 Automation string `json:"automation,omitempty" path:"automation,omitempty" url:"automation,omitempty"` 14 Deleted *bool `json:"deleted,omitempty" path:"deleted,omitempty" url:"deleted,omitempty"` 15 Description string `json:"description,omitempty" path:"description,omitempty" url:"description,omitempty"` 16 DestinationReplaceFrom string `json:"destination_replace_from,omitempty" path:"destination_replace_from,omitempty" url:"destination_replace_from,omitempty"` 17 DestinationReplaceTo string `json:"destination_replace_to,omitempty" path:"destination_replace_to,omitempty" url:"destination_replace_to,omitempty"` 18 Destinations []string `json:"destinations,omitempty" path:"destinations,omitempty" url:"destinations,omitempty"` 19 Disabled *bool `json:"disabled,omitempty" path:"disabled,omitempty" url:"disabled,omitempty"` 20 FlattenDestinationStructure *bool `json:"flatten_destination_structure,omitempty" path:"flatten_destination_structure,omitempty" url:"flatten_destination_structure,omitempty"` 21 GroupIds []int64 `json:"group_ids,omitempty" path:"group_ids,omitempty" url:"group_ids,omitempty"` 22 IgnoreLockedFolders *bool `json:"ignore_locked_folders,omitempty" path:"ignore_locked_folders,omitempty" url:"ignore_locked_folders,omitempty"` 23 Interval string `json:"interval,omitempty" path:"interval,omitempty" url:"interval,omitempty"` 24 LastModifiedAt *time.Time `json:"last_modified_at,omitempty" path:"last_modified_at,omitempty" url:"last_modified_at,omitempty"` 25 Name string `json:"name,omitempty" path:"name,omitempty" url:"name,omitempty"` 26 OverwriteFiles *bool `json:"overwrite_files,omitempty" path:"overwrite_files,omitempty" url:"overwrite_files,omitempty"` 27 Path string `json:"path,omitempty" path:"path,omitempty" url:"path,omitempty"` 28 PathTimeZone string `json:"path_time_zone,omitempty" path:"path_time_zone,omitempty" url:"path_time_zone,omitempty"` 29 RecurringDay int64 `json:"recurring_day,omitempty" path:"recurring_day,omitempty" url:"recurring_day,omitempty"` 30 Schedule map[string]interface{} `json:"schedule,omitempty" path:"schedule,omitempty" url:"schedule,omitempty"` 31 HumanReadableSchedule string `json:"human_readable_schedule,omitempty" path:"human_readable_schedule,omitempty" url:"human_readable_schedule,omitempty"` 32 ScheduleDaysOfWeek []int64 `json:"schedule_days_of_week,omitempty" path:"schedule_days_of_week,omitempty" url:"schedule_days_of_week,omitempty"` 33 ScheduleTimesOfDay []string `json:"schedule_times_of_day,omitempty" path:"schedule_times_of_day,omitempty" url:"schedule_times_of_day,omitempty"` 34 ScheduleTimeZone string `json:"schedule_time_zone,omitempty" path:"schedule_time_zone,omitempty" url:"schedule_time_zone,omitempty"` 35 Source string `json:"source,omitempty" path:"source,omitempty" url:"source,omitempty"` 36 SyncIds []int64 `json:"sync_ids,omitempty" path:"sync_ids,omitempty" url:"sync_ids,omitempty"` 37 TriggerActions []string `json:"trigger_actions,omitempty" path:"trigger_actions,omitempty" url:"trigger_actions,omitempty"` 38 Trigger string `json:"trigger,omitempty" path:"trigger,omitempty" url:"trigger,omitempty"` 39 UserId int64 `json:"user_id,omitempty" path:"user_id,omitempty" url:"user_id,omitempty"` 40 UserIds []int64 `json:"user_ids,omitempty" path:"user_ids,omitempty" url:"user_ids,omitempty"` 41 Value map[string]interface{} `json:"value,omitempty" path:"value,omitempty" url:"value,omitempty"` 42 WebhookUrl string `json:"webhook_url,omitempty" path:"webhook_url,omitempty" url:"webhook_url,omitempty"` 43 Destination string `json:"destination,omitempty" path:"destination,omitempty" url:"destination,omitempty"` 44 } 45 46 func (a Automation) Identifier() interface{} { 47 return a.Id 48 } 49 50 type AutomationCollection []Automation 51 52 type AutomationTriggerEnum string 53 54 func (u AutomationTriggerEnum) String() string { 55 return string(u) 56 } 57 58 func (u AutomationTriggerEnum) Enum() map[string]AutomationTriggerEnum { 59 return map[string]AutomationTriggerEnum{ 60 "daily": AutomationTriggerEnum("daily"), 61 "custom_schedule": AutomationTriggerEnum("custom_schedule"), 62 "webhook": AutomationTriggerEnum("webhook"), 63 "email": AutomationTriggerEnum("email"), 64 "action": AutomationTriggerEnum("action"), 65 } 66 } 67 68 type AutomationEnum string 69 70 func (u AutomationEnum) String() string { 71 return string(u) 72 } 73 74 func (u AutomationEnum) Enum() map[string]AutomationEnum { 75 return map[string]AutomationEnum{ 76 "create_folder": AutomationEnum("create_folder"), 77 "delete_file": AutomationEnum("delete_file"), 78 "copy_file": AutomationEnum("copy_file"), 79 "move_file": AutomationEnum("move_file"), 80 "as2_send": AutomationEnum("as2_send"), 81 "run_sync": AutomationEnum("run_sync"), 82 } 83 } 84 85 type AutomationListParams struct { 86 SortBy map[string]interface{} `url:"sort_by,omitempty" required:"false" json:"sort_by,omitempty" path:"sort_by"` 87 Filter Automation `url:"filter,omitempty" required:"false" json:"filter,omitempty" path:"filter"` 88 FilterGt map[string]interface{} `url:"filter_gt,omitempty" required:"false" json:"filter_gt,omitempty" path:"filter_gt"` 89 FilterGteq map[string]interface{} `url:"filter_gteq,omitempty" required:"false" json:"filter_gteq,omitempty" path:"filter_gteq"` 90 FilterLt map[string]interface{} `url:"filter_lt,omitempty" required:"false" json:"filter_lt,omitempty" path:"filter_lt"` 91 FilterLteq map[string]interface{} `url:"filter_lteq,omitempty" required:"false" json:"filter_lteq,omitempty" path:"filter_lteq"` 92 WithDeleted *bool `url:"with_deleted,omitempty" required:"false" json:"with_deleted,omitempty" path:"with_deleted"` 93 ListParams 94 } 95 96 type AutomationFindParams struct { 97 Id int64 `url:"-,omitempty" required:"false" json:"-,omitempty" path:"id"` 98 } 99 100 type AutomationCreateParams struct { 101 Source string `url:"source,omitempty" required:"false" json:"source,omitempty" path:"source"` 102 Destination string `url:"destination,omitempty" required:"false" json:"destination,omitempty" path:"destination"` 103 Destinations []string `url:"destinations,omitempty" required:"false" json:"destinations,omitempty" path:"destinations"` 104 DestinationReplaceFrom string `url:"destination_replace_from,omitempty" required:"false" json:"destination_replace_from,omitempty" path:"destination_replace_from"` 105 DestinationReplaceTo string `url:"destination_replace_to,omitempty" required:"false" json:"destination_replace_to,omitempty" path:"destination_replace_to"` 106 Interval string `url:"interval,omitempty" required:"false" json:"interval,omitempty" path:"interval"` 107 Path string `url:"path,omitempty" required:"false" json:"path,omitempty" path:"path"` 108 SyncIds string `url:"sync_ids,omitempty" required:"false" json:"sync_ids,omitempty" path:"sync_ids"` 109 UserIds string `url:"user_ids,omitempty" required:"false" json:"user_ids,omitempty" path:"user_ids"` 110 GroupIds string `url:"group_ids,omitempty" required:"false" json:"group_ids,omitempty" path:"group_ids"` 111 ScheduleDaysOfWeek []int64 `url:"schedule_days_of_week,omitempty" required:"false" json:"schedule_days_of_week,omitempty" path:"schedule_days_of_week"` 112 ScheduleTimesOfDay []string `url:"schedule_times_of_day,omitempty" required:"false" json:"schedule_times_of_day,omitempty" path:"schedule_times_of_day"` 113 ScheduleTimeZone string `url:"schedule_time_zone,omitempty" required:"false" json:"schedule_time_zone,omitempty" path:"schedule_time_zone"` 114 AlwaysOverwriteSizeMatchingFiles *bool `url:"always_overwrite_size_matching_files,omitempty" required:"false" json:"always_overwrite_size_matching_files,omitempty" path:"always_overwrite_size_matching_files"` 115 Description string `url:"description,omitempty" required:"false" json:"description,omitempty" path:"description"` 116 Disabled *bool `url:"disabled,omitempty" required:"false" json:"disabled,omitempty" path:"disabled"` 117 FlattenDestinationStructure *bool `url:"flatten_destination_structure,omitempty" required:"false" json:"flatten_destination_structure,omitempty" path:"flatten_destination_structure"` 118 IgnoreLockedFolders *bool `url:"ignore_locked_folders,omitempty" required:"false" json:"ignore_locked_folders,omitempty" path:"ignore_locked_folders"` 119 Name string `url:"name,omitempty" required:"false" json:"name,omitempty" path:"name"` 120 OverwriteFiles *bool `url:"overwrite_files,omitempty" required:"false" json:"overwrite_files,omitempty" path:"overwrite_files"` 121 PathTimeZone string `url:"path_time_zone,omitempty" required:"false" json:"path_time_zone,omitempty" path:"path_time_zone"` 122 Trigger AutomationTriggerEnum `url:"trigger,omitempty" required:"false" json:"trigger,omitempty" path:"trigger"` 123 TriggerActions []string `url:"trigger_actions,omitempty" required:"false" json:"trigger_actions,omitempty" path:"trigger_actions"` 124 Value map[string]interface{} `url:"value,omitempty" required:"false" json:"value,omitempty" path:"value"` 125 RecurringDay int64 `url:"recurring_day,omitempty" required:"false" json:"recurring_day,omitempty" path:"recurring_day"` 126 Automation AutomationEnum `url:"automation,omitempty" required:"true" json:"automation,omitempty" path:"automation"` 127 } 128 129 // Manually run automation 130 type AutomationManualRunParams struct { 131 Id int64 `url:"-,omitempty" required:"false" json:"-,omitempty" path:"id"` 132 } 133 134 type AutomationUpdateParams struct { 135 Id int64 `url:"-,omitempty" required:"false" json:"-,omitempty" path:"id"` 136 Source string `url:"source,omitempty" required:"false" json:"source,omitempty" path:"source"` 137 Destination string `url:"destination,omitempty" required:"false" json:"destination,omitempty" path:"destination"` 138 Destinations []string `url:"destinations,omitempty" required:"false" json:"destinations,omitempty" path:"destinations"` 139 DestinationReplaceFrom string `url:"destination_replace_from,omitempty" required:"false" json:"destination_replace_from,omitempty" path:"destination_replace_from"` 140 DestinationReplaceTo string `url:"destination_replace_to,omitempty" required:"false" json:"destination_replace_to,omitempty" path:"destination_replace_to"` 141 Interval string `url:"interval,omitempty" required:"false" json:"interval,omitempty" path:"interval"` 142 Path string `url:"path,omitempty" required:"false" json:"path,omitempty" path:"path"` 143 SyncIds string `url:"sync_ids,omitempty" required:"false" json:"sync_ids,omitempty" path:"sync_ids"` 144 UserIds string `url:"user_ids,omitempty" required:"false" json:"user_ids,omitempty" path:"user_ids"` 145 GroupIds string `url:"group_ids,omitempty" required:"false" json:"group_ids,omitempty" path:"group_ids"` 146 ScheduleDaysOfWeek []int64 `url:"schedule_days_of_week,omitempty" required:"false" json:"schedule_days_of_week,omitempty" path:"schedule_days_of_week"` 147 ScheduleTimesOfDay []string `url:"schedule_times_of_day,omitempty" required:"false" json:"schedule_times_of_day,omitempty" path:"schedule_times_of_day"` 148 ScheduleTimeZone string `url:"schedule_time_zone,omitempty" required:"false" json:"schedule_time_zone,omitempty" path:"schedule_time_zone"` 149 AlwaysOverwriteSizeMatchingFiles *bool `url:"always_overwrite_size_matching_files,omitempty" required:"false" json:"always_overwrite_size_matching_files,omitempty" path:"always_overwrite_size_matching_files"` 150 Description string `url:"description,omitempty" required:"false" json:"description,omitempty" path:"description"` 151 Disabled *bool `url:"disabled,omitempty" required:"false" json:"disabled,omitempty" path:"disabled"` 152 FlattenDestinationStructure *bool `url:"flatten_destination_structure,omitempty" required:"false" json:"flatten_destination_structure,omitempty" path:"flatten_destination_structure"` 153 IgnoreLockedFolders *bool `url:"ignore_locked_folders,omitempty" required:"false" json:"ignore_locked_folders,omitempty" path:"ignore_locked_folders"` 154 Name string `url:"name,omitempty" required:"false" json:"name,omitempty" path:"name"` 155 OverwriteFiles *bool `url:"overwrite_files,omitempty" required:"false" json:"overwrite_files,omitempty" path:"overwrite_files"` 156 PathTimeZone string `url:"path_time_zone,omitempty" required:"false" json:"path_time_zone,omitempty" path:"path_time_zone"` 157 Trigger AutomationTriggerEnum `url:"trigger,omitempty" required:"false" json:"trigger,omitempty" path:"trigger"` 158 TriggerActions []string `url:"trigger_actions,omitempty" required:"false" json:"trigger_actions,omitempty" path:"trigger_actions"` 159 Value map[string]interface{} `url:"value,omitempty" required:"false" json:"value,omitempty" path:"value"` 160 RecurringDay int64 `url:"recurring_day,omitempty" required:"false" json:"recurring_day,omitempty" path:"recurring_day"` 161 Automation AutomationEnum `url:"automation,omitempty" required:"false" json:"automation,omitempty" path:"automation"` 162 } 163 164 type AutomationDeleteParams struct { 165 Id int64 `url:"-,omitempty" required:"false" json:"-,omitempty" path:"id"` 166 } 167 168 func (a *Automation) UnmarshalJSON(data []byte) error { 169 type automation Automation 170 var v automation 171 if err := json.Unmarshal(data, &v); err != nil { 172 return lib.ErrorWithOriginalResponse{}.ProcessError(data, err, map[string]interface{}{}) 173 } 174 175 *a = Automation(v) 176 return nil 177 } 178 179 func (a *AutomationCollection) UnmarshalJSON(data []byte) error { 180 type automations AutomationCollection 181 var v automations 182 if err := json.Unmarshal(data, &v); err != nil { 183 return lib.ErrorWithOriginalResponse{}.ProcessError(data, err, []map[string]interface{}{}) 184 } 185 186 *a = AutomationCollection(v) 187 return nil 188 } 189 190 func (a *AutomationCollection) ToSlice() *[]interface{} { 191 ret := make([]interface{}, len(*a)) 192 for i, v := range *a { 193 ret[i] = v 194 } 195 196 return &ret 197 }