microsoftgraph / microsoftgraph/msgraph-sdk-go

Snippet generation should lead to use with url for next and skip tokens parameters in url

Open
#796 6 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

area:documentation documentation type:bug type:documentation
Dominant language
Go
Stars
335
Forks
43
Avg merge
15h 19m
Merged PRs (30d)
3

Description

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_

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start at graphClient.Users().Delta() and inspect DeltaRequestBuilderGetQueryParameters, then compare its available parameters with the linked Microsoft Delta Query documentation. Determine how the SDK should expose skip-token and delta-token handling; done means the documented Go delta-query flow is supported and can paginate successfully.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
api
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.