diff --git a/msgraph/models.go b/msgraph/models.go index 943f5e3e..763f1ad7 100644 --- a/msgraph/models.go +++ b/msgraph/models.go @@ -1383,9 +1383,9 @@ type SamlSingleSignOnSettings struct { RelayState *string `json:"relayState,omitempty"` } -type ScheduleInfo struct { - StartDateTime time.Time `json:"startDateTime"` - Expiration ExpirationPattern `json:"expiration"` +type RequestSchedule struct { + StartDateTime *time.Time `json:"startDateTime,omitempty"` + Expiration *ExpirationPattern `json:"expiration,omitempty"` } type SchemaExtension struct { @@ -1664,8 +1664,8 @@ type TemporaryAccessPassAuthenticationMethod struct { } type TicketInfo struct { - TicketNumber string `json:"ticketNumber"` - TicketSystem string `json:"ticketSystem"` + TicketNumber *string `json:"ticketNumber,omitempty"` + TicketSystem *string `json:"ticketSystem,omitempty"` } type TokenIssuancePolicy struct { @@ -1704,13 +1704,13 @@ type UnifiedRoleEligibilityScheduleRequest struct { AppScopeID *string `json:"appScopeId,omitempty"` ApprovalID *string `json:"approvalId,omitempty"` CompletedDateTime *time.Time `json:"completedDateTime,omitempty"` - CreatedDateTime *time.Time `json:"completedDateTime,omitempty"` + CreatedDateTime *time.Time `json:"createdDateTime,omitempty"` DirectoryScopeId *string `json:"directoryScopeId,omitempty"` IsValidationOnly *bool `json:"isValidationOnly,omitempty"` Justification *string `json:"justification,omitempty"` PrincipalId *string `json:"principalId,omitempty"` RoleDefinitionId *string `json:"roleDefinitionId,omitempty"` - ScheduleInfo *ScheduleInfo `json:"scheduleInfo,omitempty"` + ScheduleInfo *RequestSchedule `json:"scheduleInfo,omitempty"` Status *string `json:"status,omitempty"` TargetScheduleID *string `json:"targetScheduleId,omitempty"` TicketInfo *TicketInfo `json:"ticketInfo,omitempty"` diff --git a/msgraph/role_eligibility_schedule_request.go b/msgraph/role_eligibility_schedule_request.go index fb4c6882..082f7852 100644 --- a/msgraph/role_eligibility_schedule_request.go +++ b/msgraph/role_eligibility_schedule_request.go @@ -43,12 +43,40 @@ func (c *RoleEligibilityScheduleRequestClient) Get(ctx context.Context, id strin return nil, status, fmt.Errorf("io.ReadAll(): %v", err) } - var dirRole UnifiedRoleEligibilityScheduleRequest - if err := json.Unmarshal(respBody, &dirRole); err != nil { + var roleEligibilityScheduleRequest UnifiedRoleEligibilityScheduleRequest + if err := json.Unmarshal(respBody, &roleEligibilityScheduleRequest); err != nil { return nil, status, fmt.Errorf("json.Unmarshal(): %v", err) } - return &dirRole, status, nil + return &roleEligibilityScheduleRequest, status, nil +} + +// List retrieves all UnifiedRoleEligibilityScheduleRequests. +func (c *RoleEligibilityScheduleRequestClient) List(ctx context.Context) (*[]UnifiedRoleEligibilityScheduleRequest, int, error) { + var status int + + resp, status, _, err := c.BaseClient.Get(ctx, GetHttpRequestInput{ + ValidStatusCodes: []int{http.StatusOK}, + Uri: Uri{ + Entity: "/roleManagement/directory/roleEligibilityScheduleRequests", + }, + }) + if err != nil { + return nil, status, fmt.Errorf("RoleEligibilityScheduleRequestClient.BaseClient.Get(): %v", err) + } + + defer resp.Body.Close() + respBody, err := io.ReadAll(resp.Body) + if err != nil { + return nil, status, fmt.Errorf("io.ReadAll(): %v", err) + } + + var roleEligibilityScheduleRequests []UnifiedRoleEligibilityScheduleRequest + if err := json.Unmarshal(respBody, &roleEligibilityScheduleRequests); err != nil { + return nil, status, fmt.Errorf("json.Unmarshal(): %v", err) + } + + return &roleEligibilityScheduleRequests, status, nil } // Create creates a new UnifiedRoleEligibilityScheduleRequest. @@ -79,12 +107,12 @@ func (c *RoleEligibilityScheduleRequestClient) Create(ctx context.Context, resr return nil, status, fmt.Errorf("io.ReadAll(): %v", err) } - var newRoleAssignment UnifiedRoleEligibilityScheduleRequest - if err := json.Unmarshal(respBody, &newRoleAssignment); err != nil { + var newEligibilityScheduleRequest UnifiedRoleEligibilityScheduleRequest + if err := json.Unmarshal(respBody, &newEligibilityScheduleRequest); err != nil { return nil, status, fmt.Errorf("json.Unmarshal(): %v", err) } - return &newRoleAssignment, status, nil + return &newEligibilityScheduleRequest, status, nil } // Delete removes a UnifiedRoleEligibilityScheduleRequest. @@ -116,3 +144,19 @@ func (c *RoleEligibilityScheduleRequestClient) Delete(ctx context.Context, id st return status, nil } + +// Cancel revokes a granted UnifiedRoleEligibilityScheduleRequest +func (c *RoleEligibilityScheduleRequestClient) Cancel(ctx context.Context, id string, query odata.Query) (int, error) { + _, status, _, err := c.BaseClient.Post(ctx, PostHttpRequestInput{ + OData: query, + ValidStatusCodes: []int{http.StatusNoContent}, + Uri: Uri{ + Entity: fmt.Sprintf("/roleManagement/directory/roleEligibilityScheduleRequests/%s/cancel", id), + }, + }) + if err != nil { + return status, fmt.Errorf("RoleEligibilityScheduleRequestClient.BaseClient.Post(): %v", err) + } + + return status, nil +} diff --git a/msgraph/role_eligibility_schedule_request_test.go b/msgraph/role_eligibility_schedule_request_test.go index 6f7050c9..4a617b93 100644 --- a/msgraph/role_eligibility_schedule_request_test.go +++ b/msgraph/role_eligibility_schedule_request_test.go @@ -39,14 +39,16 @@ func TestRoleEligibilityScheduleRequestClient(t *testing.T) { Version: utils.StringPtr("1.5"), }) + now := time.Now() + roleEligibilityScheduleRequest := testRoleEligibilityScheduleRequestClient_Create(t, c, msgraph.UnifiedRoleEligibilityScheduleRequest{ RoleDefinitionId: roleDefinition.ID(), PrincipalId: user.ID(), DirectoryScopeId: utils.StringPtr("/"), Justification: utils.StringPtr("abc"), - ScheduleInfo: &msgraph.ScheduleInfo{ - StartDateTime: time.Now(), - Expiration: msgraph.ExpirationPattern{ + ScheduleInfo: &msgraph.RequestSchedule{ + StartDateTime: &now, + Expiration: &msgraph.ExpirationPattern{ Type: utils.StringPtr(msgraph.ExpirationPatternTypeNoExpiration), }, },