@@ -546,6 +546,43 @@ func (enum *ListSSHKeysRequestOrderBy) UnmarshalJSON(data []byte) error {
546546 return nil
547547}
548548
549+ type ListScimTokensRequestOrderBy string
550+
551+ const (
552+ ListScimTokensRequestOrderByCreatedAtAsc = ListScimTokensRequestOrderBy ("created_at_asc" )
553+ ListScimTokensRequestOrderByCreatedAtDesc = ListScimTokensRequestOrderBy ("created_at_desc" )
554+ )
555+
556+ func (enum ListScimTokensRequestOrderBy ) String () string {
557+ if enum == "" {
558+ // return default value if empty
559+ return string (ListScimTokensRequestOrderByCreatedAtAsc )
560+ }
561+ return string (enum )
562+ }
563+
564+ func (enum ListScimTokensRequestOrderBy ) Values () []ListScimTokensRequestOrderBy {
565+ return []ListScimTokensRequestOrderBy {
566+ "created_at_asc" ,
567+ "created_at_desc" ,
568+ }
569+ }
570+
571+ func (enum ListScimTokensRequestOrderBy ) MarshalJSON () ([]byte , error ) {
572+ return []byte (fmt .Sprintf (`"%s"` , enum )), nil
573+ }
574+
575+ func (enum * ListScimTokensRequestOrderBy ) UnmarshalJSON (data []byte ) error {
576+ tmp := ""
577+
578+ if err := json .Unmarshal (data , & tmp ); err != nil {
579+ return err
580+ }
581+
582+ * enum = ListScimTokensRequestOrderBy (ListScimTokensRequestOrderBy (tmp ).String ())
583+ return nil
584+ }
585+
549586type ListUsersRequestOrderBy string
550587
551588const (
@@ -1085,6 +1122,17 @@ type RuleSpecs struct {
10851122 OrganizationID * string `json:"organization_id,omitempty"`
10861123}
10871124
1125+ // ScimToken: scim token.
1126+ type ScimToken struct {
1127+ ID string `json:"id"`
1128+
1129+ ScimID string `json:"scim_id"`
1130+
1131+ CreatedAt * time.Time `json:"created_at"`
1132+
1133+ ExpiresAt * time.Time `json:"expires_at"`
1134+ }
1135+
10881136// CreateUserRequestMember: create user request member.
10891137type CreateUserRequestMember struct {
10901138 // Email: email of the user to create.
@@ -1691,6 +1739,21 @@ type CreateSSHKeyRequest struct {
16911739 ProjectID string `json:"project_id"`
16921740}
16931741
1742+ // CreateScimTokenRequest: create scim token request.
1743+ type CreateScimTokenRequest struct {
1744+ // ScimID: ID of the SCIM configuration.
1745+ ScimID string `json:"-"`
1746+ }
1747+
1748+ // CreateScimTokenResponse: create scim token response.
1749+ type CreateScimTokenResponse struct {
1750+ // Token: the SCIM token metadata.
1751+ Token * ScimToken `json:"token"`
1752+
1753+ // BearerToken: the Bearer Token to use to authenticate to SCIM endpoints.
1754+ BearerToken string `json:"bearer_token"`
1755+ }
1756+
16941757// CreateUserMFAOTPRequest: create user mfaotp request.
16951758type CreateUserMFAOTPRequest struct {
16961759 // UserID: user ID of the MFA OTP.
@@ -1761,6 +1824,18 @@ type DeleteSamlRequest struct {
17611824 SamlID string `json:"-"`
17621825}
17631826
1827+ // DeleteScimRequest: delete scim request.
1828+ type DeleteScimRequest struct {
1829+ // ScimID: ID of the SCIM configuration.
1830+ ScimID string `json:"-"`
1831+ }
1832+
1833+ // DeleteScimTokenRequest: delete scim token request.
1834+ type DeleteScimTokenRequest struct {
1835+ // TokenID: the SCIM token ID.
1836+ TokenID string `json:"-"`
1837+ }
1838+
17641839// DeleteUserMFAOTPRequest: delete user mfaotp request.
17651840type DeleteUserMFAOTPRequest struct {
17661841 // UserID: user ID of the MFA OTP.
@@ -1779,6 +1854,12 @@ type EnableOrganizationSamlRequest struct {
17791854 OrganizationID string `json:"-"`
17801855}
17811856
1857+ // EnableOrganizationScimRequest: enable organization scim request.
1858+ type EnableOrganizationScimRequest struct {
1859+ // OrganizationID: ID of the Organization.
1860+ OrganizationID string `json:"-"`
1861+ }
1862+
17821863// EncodedJWT: encoded jwt.
17831864type EncodedJWT struct {
17841865 // Jwt: the renewed JWT.
@@ -2470,6 +2551,50 @@ type ListSamlCertificatesResponse struct {
24702551 Certificates []* SamlCertificate `json:"certificates"`
24712552}
24722553
2554+ // ListScimTokensRequest: list scim tokens request.
2555+ type ListScimTokensRequest struct {
2556+ // ScimID: ID of the SCIM configuration.
2557+ ScimID string `json:"-"`
2558+
2559+ // OrderBy: sort order of SCIM tokens.
2560+ // Default value: created_at_asc
2561+ OrderBy ListScimTokensRequestOrderBy `json:"-"`
2562+
2563+ // Page: requested page number. Value must be greater or equal to 1.
2564+ Page * int32 `json:"-"`
2565+
2566+ // PageSize: number of items per page. Value must be between 1 and 100.
2567+ PageSize * uint32 `json:"-"`
2568+ }
2569+
2570+ // ListScimTokensResponse: list scim tokens response.
2571+ type ListScimTokensResponse struct {
2572+ // ScimTokens: list of SCIM tokens.
2573+ ScimTokens []* ScimToken `json:"scim_tokens"`
2574+
2575+ // TotalCount: total count of SCIM tokens.
2576+ TotalCount uint64 `json:"total_count"`
2577+ }
2578+
2579+ // UnsafeGetTotalCount should not be used
2580+ // Internal usage only
2581+ func (r * ListScimTokensResponse ) UnsafeGetTotalCount () uint64 {
2582+ return r .TotalCount
2583+ }
2584+
2585+ // UnsafeAppend should not be used
2586+ // Internal usage only
2587+ func (r * ListScimTokensResponse ) UnsafeAppend (res any ) (uint64 , error ) {
2588+ results , ok := res .(* ListScimTokensResponse )
2589+ if ! ok {
2590+ return 0 , errors .New ("%T type cannot be appended to type %T" , res , r )
2591+ }
2592+
2593+ r .ScimTokens = append (r .ScimTokens , results .ScimTokens ... )
2594+ r .TotalCount += uint64 (len (results .ScimTokens ))
2595+ return uint64 (len (results .ScimTokens )), nil
2596+ }
2597+
24732598// ListUsersRequest: list users request.
24742599type ListUsersRequest struct {
24752600 // OrderBy: criteria for sorting results.
@@ -2636,6 +2761,15 @@ type Saml struct {
26362761 SingleSignOnURL string `json:"single_sign_on_url"`
26372762}
26382763
2764+ // Scim: scim.
2765+ type Scim struct {
2766+ // ID: ID of the SCIM configuration.
2767+ ID string `json:"id"`
2768+
2769+ // CreatedAt: date and time of SCIM configuration creation.
2770+ CreatedAt * time.Time `json:"created_at"`
2771+ }
2772+
26392773// SetGroupMembersRequest: set group members request.
26402774type SetGroupMembersRequest struct {
26412775 GroupID string `json:"-"`
@@ -4805,3 +4939,130 @@ func (s *API) DeleteSamlCertificate(req *DeleteSamlCertificateRequest, opts ...s
48054939 }
48064940 return nil
48074941}
4942+
4943+ // EnableOrganizationScim:
4944+ func (s * API ) EnableOrganizationScim (req * EnableOrganizationScimRequest , opts ... scw.RequestOption ) (* Scim , error ) {
4945+ var err error
4946+
4947+ if req .OrganizationID == "" {
4948+ defaultOrganizationID , _ := s .client .GetDefaultOrganizationID ()
4949+ req .OrganizationID = defaultOrganizationID
4950+ }
4951+
4952+ if fmt .Sprint (req .OrganizationID ) == "" {
4953+ return nil , errors .New ("field OrganizationID cannot be empty in request" )
4954+ }
4955+
4956+ scwReq := & scw.ScalewayRequest {
4957+ Method : "POST" ,
4958+ Path : "/iam/v1alpha1/organizations/" + fmt .Sprint (req .OrganizationID ) + "/scim" ,
4959+ }
4960+
4961+ err = scwReq .SetBody (req )
4962+ if err != nil {
4963+ return nil , err
4964+ }
4965+
4966+ var resp Scim
4967+
4968+ err = s .client .Do (scwReq , & resp , opts ... )
4969+ if err != nil {
4970+ return nil , err
4971+ }
4972+ return & resp , nil
4973+ }
4974+
4975+ // DeleteScim:
4976+ func (s * API ) DeleteScim (req * DeleteScimRequest , opts ... scw.RequestOption ) error {
4977+ var err error
4978+
4979+ if fmt .Sprint (req .ScimID ) == "" {
4980+ return errors .New ("field ScimID cannot be empty in request" )
4981+ }
4982+
4983+ scwReq := & scw.ScalewayRequest {
4984+ Method : "DELETE" ,
4985+ Path : "/iam/v1alpha1/scim/" + fmt .Sprint (req .ScimID ) + "" ,
4986+ }
4987+
4988+ err = s .client .Do (scwReq , nil , opts ... )
4989+ if err != nil {
4990+ return err
4991+ }
4992+ return nil
4993+ }
4994+
4995+ // ListScimTokens:
4996+ func (s * API ) ListScimTokens (req * ListScimTokensRequest , opts ... scw.RequestOption ) (* ListScimTokensResponse , error ) {
4997+ var err error
4998+
4999+ defaultPageSize , exist := s .client .GetDefaultPageSize ()
5000+ if (req .PageSize == nil || * req .PageSize == 0 ) && exist {
5001+ req .PageSize = & defaultPageSize
5002+ }
5003+
5004+ query := url.Values {}
5005+ parameter .AddToQuery (query , "order_by" , req .OrderBy )
5006+ parameter .AddToQuery (query , "page" , req .Page )
5007+ parameter .AddToQuery (query , "page_size" , req .PageSize )
5008+
5009+ if fmt .Sprint (req .ScimID ) == "" {
5010+ return nil , errors .New ("field ScimID cannot be empty in request" )
5011+ }
5012+
5013+ scwReq := & scw.ScalewayRequest {
5014+ Method : "GET" ,
5015+ Path : "/iam/v1alpha1/scim/" + fmt .Sprint (req .ScimID ) + "/tokens" ,
5016+ Query : query ,
5017+ }
5018+
5019+ var resp ListScimTokensResponse
5020+
5021+ err = s .client .Do (scwReq , & resp , opts ... )
5022+ if err != nil {
5023+ return nil , err
5024+ }
5025+ return & resp , nil
5026+ }
5027+
5028+ // CreateScimToken:
5029+ func (s * API ) CreateScimToken (req * CreateScimTokenRequest , opts ... scw.RequestOption ) (* CreateScimTokenResponse , error ) {
5030+ var err error
5031+
5032+ if fmt .Sprint (req .ScimID ) == "" {
5033+ return nil , errors .New ("field ScimID cannot be empty in request" )
5034+ }
5035+
5036+ scwReq := & scw.ScalewayRequest {
5037+ Method : "POST" ,
5038+ Path : "/iam/v1alpha1/scim/" + fmt .Sprint (req .ScimID ) + "/tokens" ,
5039+ }
5040+
5041+ var resp CreateScimTokenResponse
5042+
5043+ err = s .client .Do (scwReq , & resp , opts ... )
5044+ if err != nil {
5045+ return nil , err
5046+ }
5047+ return & resp , nil
5048+ }
5049+
5050+ // DeleteScimToken:
5051+ func (s * API ) DeleteScimToken (req * DeleteScimTokenRequest , opts ... scw.RequestOption ) error {
5052+ var err error
5053+
5054+ if fmt .Sprint (req .TokenID ) == "" {
5055+ return errors .New ("field TokenID cannot be empty in request" )
5056+ }
5057+
5058+ scwReq := & scw.ScalewayRequest {
5059+ Method : "DELETE" ,
5060+ Path : "/iam/v1alpha1/scim-tokens/" + fmt .Sprint (req .TokenID ) + "" ,
5061+ }
5062+
5063+ err = s .client .Do (scwReq , nil , opts ... )
5064+ if err != nil {
5065+ return err
5066+ }
5067+ return nil
5068+ }
0 commit comments