@@ -162,6 +162,16 @@ func (enum *ListJobRunsRequestOrderBy) UnmarshalJSON(data []byte) error {
162162 return nil
163163}
164164
165+ // SecretEnvVar: secret env var.
166+ type SecretEnvVar struct {
167+ Name string `json:"name"`
168+ }
169+
170+ // SecretFile: secret file.
171+ type SecretFile struct {
172+ Path string `json:"path"`
173+ }
174+
165175// CronSchedule: cron schedule.
166176type CronSchedule struct {
167177 // Schedule: uNIX cron schedule to run job (e.g., '* * * * *').
@@ -178,6 +188,34 @@ type CreateJobDefinitionRequestCronScheduleConfig struct {
178188 Timezone string `json:"timezone"`
179189}
180190
191+ // CreateJobDefinitionSecretsRequestSecretConfig: create job definition secrets request secret config.
192+ type CreateJobDefinitionSecretsRequestSecretConfig struct {
193+ SecretManagerID string `json:"secret_manager_id"`
194+
195+ SecretManagerVersion string `json:"secret_manager_version"`
196+
197+ // Precisely one of Path, EnvVarName must be set.
198+ Path * string `json:"path,omitempty"`
199+
200+ // Precisely one of Path, EnvVarName must be set.
201+ EnvVarName * string `json:"env_var_name,omitempty"`
202+ }
203+
204+ // Secret: secret.
205+ type Secret struct {
206+ SecretID string `json:"secret_id"`
207+
208+ SecretManagerID string `json:"secret_manager_id"`
209+
210+ SecretManagerVersion string `json:"secret_manager_version"`
211+
212+ // Precisely one of File, EnvVar must be set.
213+ File * SecretFile `json:"file,omitempty"`
214+
215+ // Precisely one of File, EnvVar must be set.
216+ EnvVar * SecretEnvVar `json:"env_var,omitempty"`
217+ }
218+
181219// JobDefinition: job definition.
182220type JobDefinition struct {
183221 ID string `json:"id"`
@@ -302,6 +340,23 @@ type CreateJobDefinitionRequest struct {
302340 CronSchedule * CreateJobDefinitionRequestCronScheduleConfig `json:"cron_schedule,omitempty"`
303341}
304342
343+ // CreateJobDefinitionSecretsRequest: create job definition secrets request.
344+ type CreateJobDefinitionSecretsRequest struct {
345+ // Region: region to target. If none is passed will use default region from the config.
346+ Region scw.Region `json:"-"`
347+
348+ // JobDefinitionID: UUID of the job definition to get.
349+ JobDefinitionID string `json:"-"`
350+
351+ // Secrets: secrets to inject into the job.
352+ Secrets []* CreateJobDefinitionSecretsRequestSecretConfig `json:"secrets"`
353+ }
354+
355+ // CreateJobDefinitionSecretsResponse: create job definition secrets response.
356+ type CreateJobDefinitionSecretsResponse struct {
357+ Secrets []* Secret `json:"secrets"`
358+ }
359+
305360// DeleteJobDefinitionRequest: delete job definition request.
306361type DeleteJobDefinitionRequest struct {
307362 // Region: region to target. If none is passed will use default region from the config.
@@ -311,6 +366,16 @@ type DeleteJobDefinitionRequest struct {
311366 JobDefinitionID string `json:"-"`
312367}
313368
369+ // DeleteJobDefinitionSecretRequest: delete job definition secret request.
370+ type DeleteJobDefinitionSecretRequest struct {
371+ // Region: region to target. If none is passed will use default region from the config.
372+ Region scw.Region `json:"-"`
373+
374+ JobDefinitionID string `json:"-"`
375+
376+ SecretID string `json:"-"`
377+ }
378+
314379// GetJobDefinitionRequest: get job definition request.
315380type GetJobDefinitionRequest struct {
316381 // Region: region to target. If none is passed will use default region from the config.
@@ -320,6 +385,16 @@ type GetJobDefinitionRequest struct {
320385 JobDefinitionID string `json:"-"`
321386}
322387
388+ // GetJobDefinitionSecretRequest: get job definition secret request.
389+ type GetJobDefinitionSecretRequest struct {
390+ // Region: region to target. If none is passed will use default region from the config.
391+ Region scw.Region `json:"-"`
392+
393+ JobDefinitionID string `json:"-"`
394+
395+ SecretID string `json:"-"`
396+ }
397+
323398// GetJobRunRequest: get job run request.
324399type GetJobRunRequest struct {
325400 // Region: region to target. If none is passed will use default region from the config.
@@ -329,6 +404,40 @@ type GetJobRunRequest struct {
329404 JobRunID string `json:"-"`
330405}
331406
407+ // ListJobDefinitionSecretsRequest: list job definition secrets request.
408+ type ListJobDefinitionSecretsRequest struct {
409+ // Region: region to target. If none is passed will use default region from the config.
410+ Region scw.Region `json:"-"`
411+
412+ JobDefinitionID string `json:"-"`
413+ }
414+
415+ // ListJobDefinitionSecretsResponse: list job definition secrets response.
416+ type ListJobDefinitionSecretsResponse struct {
417+ Secrets []* Secret `json:"secrets"`
418+
419+ TotalCount uint64 `json:"total_count"`
420+ }
421+
422+ // UnsafeGetTotalCount should not be used
423+ // Internal usage only
424+ func (r * ListJobDefinitionSecretsResponse ) UnsafeGetTotalCount () uint64 {
425+ return r .TotalCount
426+ }
427+
428+ // UnsafeAppend should not be used
429+ // Internal usage only
430+ func (r * ListJobDefinitionSecretsResponse ) UnsafeAppend (res interface {}) (uint64 , error ) {
431+ results , ok := res .(* ListJobDefinitionSecretsResponse )
432+ if ! ok {
433+ return 0 , errors .New ("%T type cannot be appended to type %T" , res , r )
434+ }
435+
436+ r .Secrets = append (r .Secrets , results .Secrets ... )
437+ r .TotalCount += uint64 (len (results .Secrets ))
438+ return uint64 (len (results .Secrets )), nil
439+ }
440+
332441// ListJobDefinitionsRequest: list job definitions request.
333442type ListJobDefinitionsRequest struct {
334443 // Region: region to target. If none is passed will use default region from the config.
@@ -498,6 +607,24 @@ type UpdateJobDefinitionRequest struct {
498607 CronSchedule * UpdateJobDefinitionRequestCronScheduleConfig `json:"cron_schedule,omitempty"`
499608}
500609
610+ // UpdateJobDefinitionSecretRequest: update job definition secret request.
611+ type UpdateJobDefinitionSecretRequest struct {
612+ // Region: region to target. If none is passed will use default region from the config.
613+ Region scw.Region `json:"-"`
614+
615+ JobDefinitionID string `json:"-"`
616+
617+ SecretID string `json:"-"`
618+
619+ SecretManagerVersion * string `json:"secret_manager_version,omitempty"`
620+
621+ // Precisely one of Path, EnvVarName must be set.
622+ Path * string `json:"path,omitempty"`
623+
624+ // Precisely one of Path, EnvVarName must be set.
625+ EnvVarName * string `json:"env_var_name,omitempty"`
626+ }
627+
501628// This API allows you to manage your Serverless Jobs.
502629type API struct {
503630 client * scw.Client
@@ -726,6 +853,181 @@ func (s *API) StartJobDefinition(req *StartJobDefinitionRequest, opts ...scw.Req
726853 return & resp , nil
727854}
728855
856+ // CreateJobDefinitionSecrets:
857+ func (s * API ) CreateJobDefinitionSecrets (req * CreateJobDefinitionSecretsRequest , opts ... scw.RequestOption ) (* CreateJobDefinitionSecretsResponse , error ) {
858+ var err error
859+
860+ if req .Region == "" {
861+ defaultRegion , _ := s .client .GetDefaultRegion ()
862+ req .Region = defaultRegion
863+ }
864+
865+ if fmt .Sprint (req .Region ) == "" {
866+ return nil , errors .New ("field Region cannot be empty in request" )
867+ }
868+
869+ if fmt .Sprint (req .JobDefinitionID ) == "" {
870+ return nil , errors .New ("field JobDefinitionID cannot be empty in request" )
871+ }
872+
873+ scwReq := & scw.ScalewayRequest {
874+ Method : "POST" ,
875+ Path : "/serverless-jobs/v1alpha1/regions/" + fmt .Sprint (req .Region ) + "/job-definitions/" + fmt .Sprint (req .JobDefinitionID ) + "/secrets" ,
876+ }
877+
878+ err = scwReq .SetBody (req )
879+ if err != nil {
880+ return nil , err
881+ }
882+
883+ var resp CreateJobDefinitionSecretsResponse
884+
885+ err = s .client .Do (scwReq , & resp , opts ... )
886+ if err != nil {
887+ return nil , err
888+ }
889+ return & resp , nil
890+ }
891+
892+ // GetJobDefinitionSecret:
893+ func (s * API ) GetJobDefinitionSecret (req * GetJobDefinitionSecretRequest , opts ... scw.RequestOption ) (* Secret , error ) {
894+ var err error
895+
896+ if req .Region == "" {
897+ defaultRegion , _ := s .client .GetDefaultRegion ()
898+ req .Region = defaultRegion
899+ }
900+
901+ if fmt .Sprint (req .Region ) == "" {
902+ return nil , errors .New ("field Region cannot be empty in request" )
903+ }
904+
905+ if fmt .Sprint (req .JobDefinitionID ) == "" {
906+ return nil , errors .New ("field JobDefinitionID cannot be empty in request" )
907+ }
908+
909+ if fmt .Sprint (req .SecretID ) == "" {
910+ return nil , errors .New ("field SecretID cannot be empty in request" )
911+ }
912+
913+ scwReq := & scw.ScalewayRequest {
914+ Method : "GET" ,
915+ Path : "/serverless-jobs/v1alpha1/regions/" + fmt .Sprint (req .Region ) + "/job-definitions/" + fmt .Sprint (req .JobDefinitionID ) + "/secrets/" + fmt .Sprint (req .SecretID ) + "" ,
916+ }
917+
918+ var resp Secret
919+
920+ err = s .client .Do (scwReq , & resp , opts ... )
921+ if err != nil {
922+ return nil , err
923+ }
924+ return & resp , nil
925+ }
926+
927+ // ListJobDefinitionSecrets:
928+ func (s * API ) ListJobDefinitionSecrets (req * ListJobDefinitionSecretsRequest , opts ... scw.RequestOption ) (* ListJobDefinitionSecretsResponse , error ) {
929+ var err error
930+
931+ if req .Region == "" {
932+ defaultRegion , _ := s .client .GetDefaultRegion ()
933+ req .Region = defaultRegion
934+ }
935+
936+ if fmt .Sprint (req .Region ) == "" {
937+ return nil , errors .New ("field Region cannot be empty in request" )
938+ }
939+
940+ if fmt .Sprint (req .JobDefinitionID ) == "" {
941+ return nil , errors .New ("field JobDefinitionID cannot be empty in request" )
942+ }
943+
944+ scwReq := & scw.ScalewayRequest {
945+ Method : "GET" ,
946+ Path : "/serverless-jobs/v1alpha1/regions/" + fmt .Sprint (req .Region ) + "/job-definitions/" + fmt .Sprint (req .JobDefinitionID ) + "/secrets" ,
947+ }
948+
949+ var resp ListJobDefinitionSecretsResponse
950+
951+ err = s .client .Do (scwReq , & resp , opts ... )
952+ if err != nil {
953+ return nil , err
954+ }
955+ return & resp , nil
956+ }
957+
958+ // UpdateJobDefinitionSecret:
959+ func (s * API ) UpdateJobDefinitionSecret (req * UpdateJobDefinitionSecretRequest , opts ... scw.RequestOption ) (* Secret , error ) {
960+ var err error
961+
962+ if req .Region == "" {
963+ defaultRegion , _ := s .client .GetDefaultRegion ()
964+ req .Region = defaultRegion
965+ }
966+
967+ if fmt .Sprint (req .Region ) == "" {
968+ return nil , errors .New ("field Region cannot be empty in request" )
969+ }
970+
971+ if fmt .Sprint (req .JobDefinitionID ) == "" {
972+ return nil , errors .New ("field JobDefinitionID cannot be empty in request" )
973+ }
974+
975+ if fmt .Sprint (req .SecretID ) == "" {
976+ return nil , errors .New ("field SecretID cannot be empty in request" )
977+ }
978+
979+ scwReq := & scw.ScalewayRequest {
980+ Method : "PATCH" ,
981+ Path : "/serverless-jobs/v1alpha1/regions/" + fmt .Sprint (req .Region ) + "/job-definitions/" + fmt .Sprint (req .JobDefinitionID ) + "/secrets/" + fmt .Sprint (req .SecretID ) + "" ,
982+ }
983+
984+ err = scwReq .SetBody (req )
985+ if err != nil {
986+ return nil , err
987+ }
988+
989+ var resp Secret
990+
991+ err = s .client .Do (scwReq , & resp , opts ... )
992+ if err != nil {
993+ return nil , err
994+ }
995+ return & resp , nil
996+ }
997+
998+ // DeleteJobDefinitionSecret:
999+ func (s * API ) DeleteJobDefinitionSecret (req * DeleteJobDefinitionSecretRequest , opts ... scw.RequestOption ) error {
1000+ var err error
1001+
1002+ if req .Region == "" {
1003+ defaultRegion , _ := s .client .GetDefaultRegion ()
1004+ req .Region = defaultRegion
1005+ }
1006+
1007+ if fmt .Sprint (req .Region ) == "" {
1008+ return errors .New ("field Region cannot be empty in request" )
1009+ }
1010+
1011+ if fmt .Sprint (req .JobDefinitionID ) == "" {
1012+ return errors .New ("field JobDefinitionID cannot be empty in request" )
1013+ }
1014+
1015+ if fmt .Sprint (req .SecretID ) == "" {
1016+ return errors .New ("field SecretID cannot be empty in request" )
1017+ }
1018+
1019+ scwReq := & scw.ScalewayRequest {
1020+ Method : "DELETE" ,
1021+ Path : "/serverless-jobs/v1alpha1/regions/" + fmt .Sprint (req .Region ) + "/job-definitions/" + fmt .Sprint (req .JobDefinitionID ) + "/secrets/" + fmt .Sprint (req .SecretID ) + "" ,
1022+ }
1023+
1024+ err = s .client .Do (scwReq , nil , opts ... )
1025+ if err != nil {
1026+ return err
1027+ }
1028+ return nil
1029+ }
1030+
7291031// GetJobRun: Get a job run by its unique identifier.
7301032func (s * API ) GetJobRun (req * GetJobRunRequest , opts ... scw.RequestOption ) (* JobRun , error ) {
7311033 var err error
0 commit comments