msgraph-sdk-go icon indicating copy to clipboard operation
msgraph-sdk-go copied to clipboard

Unable to query delta users using SkipToken

Open franciscoandrade82 opened this issue 1 year ago • 0 comments
trafficstars

Describe the bug

I’m trying to query users with the Delta API in the Go SDK, but examples in Microsoft documentation don’t match available SDK entities.

Detailed Description:

From the Microsoft Delta Query Documentation:

// Documentation example for Delta queries
import (
	"context"
	msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
	graphusers "github.com/microsoftgraph/msgraph-sdk-go/users"
)

requestSkiptoken := "oEBwdSP6uehIAxQOWq_3Ksh_TLol6KIm3stvdc6hGhZRi1hQ7Spe__dpvm3U4zReE4CYXC2zOtaKdi7KHlUtC2CbRiBIUwOxPKLa"

requestParameters := &graphusers.UsersDeltaWithRequestBuilderGetQueryParameters{
	Skiptoken: &requestSkiptoken,
}
configuration := &graphusers.UsersDeltaWithRequestBuilderGetRequestConfiguration{
	QueryParameters: requestParameters,
}

delta, err := graphClient.Users().Delta().GetAsDeltaGetResponse(context.Background(), configuration)

In the SDK, UsersDeltaWithRequestBuilderGetQueryParameters isn’t available. The closest alternative, DeltaRequestBuilderGetQueryParameters, lacks a Skiptoken field:

type DeltaRequestBuilderGetQueryParameters struct {
    Count *bool `uriparametername:"%24count"`
    Expand []string `uriparametername:"%24expand"`
    Filter *string `uriparametername:"%24filter"`
    Orderby []string `uriparametername:"%24orderby"`
    Search *string `uriparametername:"%24search"`
    Select []string `uriparametername:"%24select"`
    Skip *int32 `uriparametername:"%24skip"`
    Top *int32 `uriparametername:"%24top"`
}

Additional Attempt:

I tried direct request configuration using the following code, but without success:

response, err := graphClient.GetClient().GetAdapter().Send(ctx, requestInfo, models.CreateUserCollectionResponseFromDiscriminatorValue, nil)
if err != nil {
	log.Fatalf("Error making direct request: %v", err)
}

Without access to Skiptoken or guidance on retrieving deltaToken, it’s challenging to perform delta queries effectively.

Expected behavior

The Go SDK should provide delta query support equivalent to the documentation examples, including options for Skiptoken and deltaToken handling. This would allow developers to correctly paginate through delta queries and manage state with each request, ensuring alignment with other Microsoft Graph SDKs.

How to reproduce

How to Reproduce:

  1. Set up a graphClient in Go using the Microsoft Graph Go SDK.
  2. Attempt a Delta query to list users using the following configuration in your code:
requestParameters := &graphusers.UsersDeltaWithRequestBuilderGetQueryParameters{
    Skiptoken: &requestSkiptoken, // Expecting Skiptoken field here
}
configuration := &graphusers.UsersDeltaWithRequestBuilderGetRequestConfiguration{
    QueryParameters: requestParameters,
}
delta, err := graphClient.Users().Delta().GetAsDeltaGetResponse(context.Background(), configuration)
  1. Observe that UsersDeltaWithRequestBuilderGetQueryParameters is missing in the SDK, and Skiptoken cannot be added.

SDK Version

1.51.0

Latest version known to work for scenario above?

No response

Known Workarounds

No response

Debug output

Click to expand log ```
</details>


### Configuration

_No response_

### Other information

_No response_

franciscoandrade82 avatar Oct 28 '24 17:10 franciscoandrade82