From e4c5e6486d8cf732d10a9f2b3ecb2c2b8d37928f Mon Sep 17 00:00:00 2001 From: Pascal Bleser Date: Thu, 23 Apr 2026 15:14:51 +0200 Subject: [PATCH] groupware: rename 'offset' to 'position' to be consistent with the JMAP specification --- pkg/jmap/api.go | 2 +- pkg/jmap/api_email.go | 48 +++++++++---------- pkg/jmap/model.go | 4 +- .../groupware/pkg/groupware/api_contacts.go | 6 +-- .../groupware/pkg/groupware/api_emails.go | 48 +++++++++---------- .../groupware/pkg/groupware/api_events.go | 12 ++--- services/groupware/pkg/groupware/route.go | 2 +- services/groupware/pkg/groupware/templates.go | 22 ++++----- 8 files changed, 72 insertions(+), 72 deletions(-) diff --git a/pkg/jmap/api.go b/pkg/jmap/api.go index e53db6c758..dad83a99c1 100644 --- a/pkg/jmap/api.go +++ b/pkg/jmap/api.go @@ -56,7 +56,7 @@ type BlobClient interface { const ( logOperation = "operation" logFetchBodies = "fetch-bodies" - logOffset = "offset" + logPosition = "position" logLimit = "limit" logDownloadUrl = "download-url" logBlobId = "blob-id" diff --git a/pkg/jmap/api_email.go b/pkg/jmap/api_email.go index a42c63b5a0..974d2a2292 100644 --- a/pkg/jmap/api_email.go +++ b/pkg/jmap/api_email.go @@ -123,10 +123,10 @@ func (r EmailSearchResults) GetTotal() *uint { return r.Total } // Retrieve all the Emails in a given Mailbox by its id. func (j *Client) GetAllEmailsInMailbox(accountId string, mailboxId string, //NOSONAR - offset int, limit uint, collapseThreads bool, fetchBodies bool, maxBodyValueBytes uint, withThreads bool, + position int, limit uint, collapseThreads bool, fetchBodies bool, maxBodyValueBytes uint, withThreads bool, ctx Context) (EmailSearchResults, SessionState, State, Language, Error) { logger := j.loggerParams("GetAllEmailsInMailbox", ctx, func(z zerolog.Context) zerolog.Context { - return z.Bool(logFetchBodies, fetchBodies).Int(logOffset, offset).Uint(logLimit, limit) + return z.Bool(logFetchBodies, fetchBodies).Int(logPosition, position).Uint(logLimit, limit) }) ctx = ctx.WithLogger(logger) @@ -137,8 +137,8 @@ func (j *Client) GetAllEmailsInMailbox(accountId string, mailboxId string, //NOS CollapseThreads: collapseThreads, CalculateTotal: true, } - if offset > 0 { - query.Position = offset + if position > 0 { + query.Position = position } if limit > 0 { query.Limit = &limit @@ -304,10 +304,10 @@ type SearchSnippetWithMeta struct { type EmailSnippetSearchResults SearchResultsTemplate[SearchSnippetWithMeta] func (j *Client) QueryEmailSnippets(accountIds []string, //NOSONAR - filter EmailFilterElement, offset int, limit uint, + filter EmailFilterElement, position int, limit uint, ctx Context) (map[string]EmailSnippetSearchResults, SessionState, State, Language, Error) { logger := j.loggerParams("QueryEmailSnippets", ctx, func(z zerolog.Context) zerolog.Context { - return z.Uint(logLimit, limit).Int(logOffset, offset) + return z.Uint(logLimit, limit).Int(logPosition, position) }) ctx = ctx.WithLogger(logger) @@ -321,8 +321,8 @@ func (j *Client) QueryEmailSnippets(accountIds []string, //NOSONAR CollapseThreads: true, CalculateTotal: true, } - if offset > 0 { - query.Position = offset + if position > 0 { + query.Position = position } if limit > 0 { query.Limit = &limit @@ -426,7 +426,7 @@ type EmailQueryResult struct { } func (j *Client) QueryEmails(accountIds []string, - filter EmailFilterElement, offset int, limit uint, fetchBodies bool, maxBodyValueBytes uint, + filter EmailFilterElement, position int, limit uint, fetchBodies bool, maxBodyValueBytes uint, ctx Context) (map[string]EmailQueryResult, SessionState, State, Language, Error) { //NOSONAR logger := j.loggerParams("QueryEmails", ctx, func(z zerolog.Context) zerolog.Context { return z.Bool(logFetchBodies, fetchBodies) @@ -443,8 +443,8 @@ func (j *Client) QueryEmails(accountIds []string, CollapseThreads: true, CalculateTotal: true, } - if offset > 0 { - query.Position = offset + if position > 0 { + query.Position = position } if limit > 0 { query.Limit = &limit @@ -511,7 +511,7 @@ type EmailQueryWithSnippetsResult struct { } func (j *Client) QueryEmailsWithSnippets(accountIds []string, //NOSONAR - filter EmailFilterElement, offset int, limit uint, collapseThreads bool, calculateTotal bool, fetchBodies bool, maxBodyValueBytes uint, + filter EmailFilterElement, position int, limit uint, collapseThreads bool, calculateTotal bool, fetchBodies bool, maxBodyValueBytes uint, ctx Context) (map[string]EmailQueryWithSnippetsResult, SessionState, State, Language, Error) { logger := j.loggerParams("QueryEmailsWithSnippets", ctx, func(z zerolog.Context) zerolog.Context { return z.Bool(logFetchBodies, fetchBodies) @@ -528,8 +528,8 @@ func (j *Client) QueryEmailsWithSnippets(accountIds []string, //NOSONAR CollapseThreads: collapseThreads, CalculateTotal: calculateTotal, } - if offset > 0 { - query.Position = offset + if position > 0 { + query.Position = position } if limit > 0 { query.Limit = &limit @@ -1000,11 +1000,11 @@ func (j *Client) EmailsInThread(accountId string, threadId string, } type EmailsSummary struct { - Emails []Email `json:"emails"` - Total uint `json:"total"` - Limit uint `json:"limit"` - Offset uint `json:"offset"` - State State `json:"state"` + Emails []Email `json:"emails"` + Total uint `json:"total"` + Limit uint `json:"limit"` + Position uint `json:"position"` + State State `json:"state"` } var EmailSummaryProperties = []string{ @@ -1103,11 +1103,11 @@ func (j *Client) QueryEmailSummaries(accountIds []string, //NOSONAR } resp[accountId] = EmailsSummary{ - Emails: response.List, - Total: queryResponse.Total, - Limit: queryResponse.Limit, - Offset: queryResponse.Position, - State: response.State, + Emails: response.List, + Total: queryResponse.Total, + Limit: queryResponse.Limit, + Position: queryResponse.Position, + State: response.State, } } return resp, squashStateFunc(resp, func(s EmailsSummary) State { return s.State }), nil diff --git a/pkg/jmap/model.go b/pkg/jmap/model.go index f1c539c0fc..680d4619e8 100644 --- a/pkg/jmap/model.go +++ b/pkg/jmap/model.go @@ -4242,7 +4242,7 @@ type BlobGetCommand struct { AccountId string `json:"accountId"` Ids []string `json:"ids,omitempty"` Properties []string `json:"properties,omitempty"` - Offset int `json:"offset,omitzero"` + Position int `json:"position,omitzero"` Length int `json:"length,omitzero"` } @@ -4256,7 +4256,7 @@ type BlobGetRefCommand struct { AccountId string `json:"accountId"` IdRef *ResultReference `json:"#ids,omitempty"` Properties []string `json:"properties,omitempty"` - Offset int `json:"offset,omitzero"` + Position int `json:"position,omitzero"` Length int `json:"length,omitzero"` } diff --git a/services/groupware/pkg/groupware/api_contacts.go b/services/groupware/pkg/groupware/api_contacts.go index d57f5b7a66..69f0276796 100644 --- a/services/groupware/pkg/groupware/api_contacts.go +++ b/services/groupware/pkg/groupware/api_contacts.go @@ -57,12 +57,12 @@ func (g *Groupware) GetContactsInAddressbook(w http.ResponseWriter, r *http.Requ } l = l.Str(UriParamAddressBookId, log.SafeString(addressBookId)) - offset, ok, err := req.parseIntParam(QueryParamOffset, 0) + position, ok, err := req.parseIntParam(QueryParamPosition, 0) if err != nil { return req.errorN(accountIds, err) } if ok { - l = l.Int(QueryParamOffset, offset) + l = l.Int(QueryParamPosition, position) } limit, ok, err := req.parseUIntParam(QueryParamLimit, g.defaults.contactLimit) @@ -85,7 +85,7 @@ func (g *Groupware) GetContactsInAddressbook(w http.ResponseWriter, r *http.Requ logger := log.From(l) ctx := req.ctx.WithLogger(logger) - contactsByAccountId, sessionState, state, lang, jerr := g.jmap.QueryContactCards(accountIds, filter, sortBy, offset, limit, true, ctx) + contactsByAccountId, sessionState, state, lang, jerr := g.jmap.QueryContactCards(accountIds, filter, sortBy, position, limit, true, ctx) if jerr != nil { return req.jmapErrorN(accountIds, jerr, sessionState, lang) } diff --git a/services/groupware/pkg/groupware/api_emails.go b/services/groupware/pkg/groupware/api_emails.go index 1f5d70872c..1b4e388553 100644 --- a/services/groupware/pkg/groupware/api_emails.go +++ b/services/groupware/pkg/groupware/api_emails.go @@ -35,15 +35,15 @@ func (g *Groupware) GetEmailChanges(w http.ResponseWriter, r *http.Request) { // // The mailbox must be specified by its id, as part of the request URL path. // -// A limit and an offset may be specified using the query parameters 'limit' and 'offset', +// A limit and a position may be specified using the query parameters 'limit' and 'position', // respectively. func (g *Groupware) GetAllEmailsInMailbox(w http.ResponseWriter, r *http.Request) { //NOSONAR collapseThreads := false fetchBodies := false withThreads := true query(Email, w, r, g, g.defaults.emailLimit, - func(req Request, accountId, containerId string, offset int, limit uint, ctx jmap.Context) (jmap.EmailSearchResults, jmap.SessionState, jmap.State, jmap.Language, *Error) { - emails, sessionState, state, lang, jerr := g.jmap.GetAllEmailsInMailbox(accountId, containerId, offset, limit, collapseThreads, fetchBodies, g.config.maxBodyValueBytes, withThreads, ctx) + func(req Request, accountId, containerId string, position int, limit uint, ctx jmap.Context) (jmap.EmailSearchResults, jmap.SessionState, jmap.State, jmap.Language, *Error) { + emails, sessionState, state, lang, jerr := g.jmap.GetAllEmailsInMailbox(accountId, containerId, position, limit, collapseThreads, fetchBodies, g.config.maxBodyValueBytes, withThreads, ctx) if jerr != nil { return emails, sessionState, state, lang, req.apiErrorFromJmap(req.observeJmapError(jerr)) } @@ -403,12 +403,12 @@ func (g *Groupware) buildEmailFilter(req Request) (bool, jmap.EmailFilterElement l := req.logger.With() - offset, ok, err := req.parseIntParam(QueryParamOffset, 0) // pagination element offset + position, ok, err := req.parseIntParam(QueryParamPosition, 0) // pagination element position (offset) if err != nil { return false, nil, snippets, 0, 0, nil, err } if ok { - l = l.Int(QueryParamOffset, offset) + l = l.Int(QueryParamPosition, position) } limit, ok, err := req.parseUIntParam(QueryParamLimit, g.defaults.emailLimit) // maximum number of results (size of a page) @@ -530,7 +530,7 @@ func (g *Groupware) buildEmailFilter(req Request) (bool, jmap.EmailFilterElement } } - return true, filter, snippets, offset, limit, logger, nil + return true, filter, snippets, position, limit, logger, nil } func (g *Groupware) GetEmails(w http.ResponseWriter, r *http.Request) { //NOSONAR @@ -552,7 +552,7 @@ func (g *Groupware) GetEmails(w http.ResponseWriter, r *http.Request) { //NOSONA l := req.logger.With().Str(logAccountId, log.SafeString(accountId)) - ok, filter, makesSnippets, offset, limit, logger, err := g.buildEmailFilter(req) + ok, filter, makesSnippets, position, limit, logger, err := g.buildEmailFilter(req) if !ok { return req.error(accountId, err) } @@ -575,7 +575,7 @@ func (g *Groupware) GetEmails(w http.ResponseWriter, r *http.Request) { //NOSONA logger = log.From(l) ctx := req.ctx.WithLogger(logger) - resultsByAccount, sessionState, state, lang, jerr := g.jmap.QueryEmailsWithSnippets(single(accountId), filter, offset, limit, collapseThreads, calculateTotal, fetchBodies, g.config.maxBodyValueBytes, ctx) + resultsByAccount, sessionState, state, lang, jerr := g.jmap.QueryEmailsWithSnippets(single(accountId), filter, position, limit, collapseThreads, calculateTotal, fetchBodies, g.config.maxBodyValueBytes, ctx) if jerr != nil { return req.jmapError(accountId, jerr, sessionState, lang) } @@ -628,7 +628,7 @@ func (g *Groupware) GetEmailsForAllAccounts(w http.ResponseWriter, r *http.Reque g.respond(w, r, func(req Request) Response { allAccountIds := req.AllAccountIds() - ok, filter, makesSnippets, offset, limit, logger, err := g.buildEmailFilter(req) + ok, filter, makesSnippets, position, limit, logger, err := g.buildEmailFilter(req) if !ok { return req.errorN(allAccountIds, err) } @@ -640,7 +640,7 @@ func (g *Groupware) GetEmailsForAllAccounts(w http.ResponseWriter, r *http.Reque } if makesSnippets { - resultsByAccountId, sessionState, state, lang, jerr := g.jmap.QueryEmailSnippets(allAccountIds, filter, offset, limit, ctx) + resultsByAccountId, sessionState, state, lang, jerr := g.jmap.QueryEmailSnippets(allAccountIds, filter, position, limit, ctx) if jerr != nil { return req.jmapErrorN(allAccountIds, jerr, sessionState, lang) } @@ -669,7 +669,7 @@ func (g *Groupware) GetEmailsForAllAccounts(w http.ResponseWriter, r *http.Reque slices.SortFunc(flattened, func(a, b Snippet) int { return a.ReceivedAt.Compare(b.ReceivedAt) }) - // TODO offset and limit over the aggregated results by account + // TODO position and limit over the aggregated results by account body := EmailSearchSnippetsResults{ Results: flattened, @@ -708,7 +708,7 @@ func (g *Groupware) GetEmailsForAllAccounts(w http.ResponseWriter, r *http.Reque slices.SortFunc(flattened, func(a, b jmap.Email) int { return a.ReceivedAt.Compare(b.ReceivedAt) }) - // TODO offset and limit over the aggregated results by account + // TODO position and limit over the aggregated results by account body := EmailSearchResults{ Results: flattened, @@ -1439,11 +1439,11 @@ type emailWithAccountId struct { } type EmailSummaries struct { - Emails []EmailSummary `json:"emails,omitempty"` - Total uint `json:"total,omitzero"` - Limit uint `json:"limit,omitzero"` - Offset uint `json:"offset,omitzero"` - State jmap.State `json:"state,omitempty"` + Emails []EmailSummary `json:"emails,omitempty"` + Total uint `json:"total,omitzero"` + Limit uint `json:"limit,omitzero"` + Position uint `json:"position,omitzero"` + State jmap.State `json:"state,omitempty"` } // Get a summary of the latest emails across all the mailboxes, across all of a user's accounts. @@ -1471,15 +1471,15 @@ func (g *Groupware) GetLatestEmailsSummaryForAllAccounts(w http.ResponseWriter, l = l.Uint(QueryParamLimit, limit) } - offset, ok, err := req.parseUIntParam(QueryParamOffset, 0) + position, ok, err := req.parseUIntParam(QueryParamPosition, 0) if err != nil { return req.errorN(allAccountIds, err) } - if offset > 0 { + if position > 0 { return req.notImplementedN(allAccountIds, EmailResponseObjectType) } if ok { - l = l.Uint(QueryParamOffset, limit) + l = l.Uint(QueryParamPosition, limit) } seen, ok, err := req.parseBoolParam(QueryParamSeen, false) @@ -1540,10 +1540,10 @@ func (g *Groupware) GetLatestEmailsSummaryForAllAccounts(w http.ResponseWriter, } return req.respondN(allAccountIds, EmailSummaries{ - Emails: summaries, - Total: total, - Limit: limit, - Offset: offset, + Emails: summaries, + Total: total, + Limit: limit, + Position: position, }, sessionState, EmailResponseObjectType, state, lang) }) } diff --git a/services/groupware/pkg/groupware/api_events.go b/services/groupware/pkg/groupware/api_events.go index e3c06bf694..cca2b63799 100644 --- a/services/groupware/pkg/groupware/api_events.go +++ b/services/groupware/pkg/groupware/api_events.go @@ -24,12 +24,12 @@ func (g *Groupware) GetEventsInCalendar(w http.ResponseWriter, r *http.Request) } l = l.Str(UriParamCalendarId, log.SafeString(calendarId)) - offset, ok, err := req.parseIntParam(QueryParamOffset, 0) + position, ok, err := req.parseIntParam(QueryParamPosition, 0) if err != nil { return req.error(accountId, err) } if ok { - l = l.Int(QueryParamOffset, offset) + l = l.Int(QueryParamPosition, position) } limit, ok, err := req.parseUIntParam(QueryParamLimit, g.defaults.contactLimit) @@ -47,7 +47,7 @@ func (g *Groupware) GetEventsInCalendar(w http.ResponseWriter, r *http.Request) logger := log.From(l) ctx := req.ctx.WithLogger(logger) - eventsByAccountId, sessionState, state, lang, jerr := g.jmap.QueryCalendarEvents(single(accountId), filter, sortBy, offset, limit, true, ctx) + eventsByAccountId, sessionState, state, lang, jerr := g.jmap.QueryCalendarEvents(single(accountId), filter, sortBy, position, limit, true, ctx) if jerr != nil { return req.jmapError(accountId, jerr, sessionState, lang) } @@ -62,9 +62,9 @@ func (g *Groupware) GetEventsInCalendar(w http.ResponseWriter, r *http.Request) func curryMapQuery[SRES jmap.SearchResults[T], T jmap.Foo, FILTER any, COMP any]( f func(accountIds []string, filter FILTER, sortBy []COMP, position int, limit uint, calculateTotal bool, ctx jmap.Context) (map[string]SRES, jmap.SessionState, jmap.State, jmap.Language, jmap.Error), -) func(req Request, accountId string, filter FILTER, sortBy []COMP, offset int, limit uint, ctx jmap.Context) (SRES, jmap.SessionState, jmap.State, jmap.Language, jmap.Error) { - return func(req Request, accountId string, filter FILTER, sortBy []COMP, offset int, limit uint, ctx jmap.Context) (SRES, jmap.SessionState, jmap.State, jmap.Language, jmap.Error) { - m, sessionState, state, lang, err := f(single(accountId), filter, sortBy, offset, limit, true, ctx) +) func(req Request, accountId string, filter FILTER, sortBy []COMP, position int, limit uint, ctx jmap.Context) (SRES, jmap.SessionState, jmap.State, jmap.Language, jmap.Error) { + return func(req Request, accountId string, filter FILTER, sortBy []COMP, position int, limit uint, ctx jmap.Context) (SRES, jmap.SessionState, jmap.State, jmap.Language, jmap.Error) { + m, sessionState, state, lang, err := f(single(accountId), filter, sortBy, position, limit, true, ctx) return m[accountId], sessionState, state, lang, err } } diff --git a/services/groupware/pkg/groupware/route.go b/services/groupware/pkg/groupware/route.go index 991bc5992f..5ecc18883d 100644 --- a/services/groupware/pkg/groupware/route.go +++ b/services/groupware/pkg/groupware/route.go @@ -48,7 +48,7 @@ const ( QueryParamSearchMaxSize = "maxsize" QueryParamSearchKeyword = "keyword" QueryParamSearchMessageId = "messageId" - QueryParamOffset = "offset" + QueryParamPosition = "position" QueryParamLimit = "limit" QueryParamDays = "days" QueryParamPartId = "partId" diff --git a/services/groupware/pkg/groupware/templates.go b/services/groupware/pkg/groupware/templates.go index e839039da0..18a95b3360 100644 --- a/services/groupware/pkg/groupware/templates.go +++ b/services/groupware/pkg/groupware/templates.go @@ -62,7 +62,7 @@ func getall[T jmap.Foo, CHANGE jmap.Change, CHANGES jmap.Changes[T], RESP jmap.G } l := req.logger.With().Str(accountId, log.SafeString(accountId)) - if notok, resp := req.unsupportedParams(single(accountId), QueryParamOffset, QueryParamLimit); notok { + if notok, resp := req.unsupportedParams(single(accountId), QueryParamPosition, QueryParamLimit); notok { return resp } @@ -76,7 +76,7 @@ func getall[T jmap.Foo, CHANGE jmap.Change, CHANGES jmap.Changes[T], RESP jmap.G }) } -// Retrieve all the {{.Name}} with support for paging using the {{.QueryParam.QueryParamOffset.Name}} and {{.QueryParam.QueryParamLimit.Name}} query parameters. +// Retrieve all the {{.Name}} with support for paging using the {{.QueryParam.QueryParamPosition.Name}} and {{.QueryParam.QueryParamLimit.Name}} query parameters. // @api:response 200:SEARCHRESULTS returns the {{.Names}} within the requested range, as well as the total amount of {{.Names}} func getallpaged[T jmap.Foo, CHANGE jmap.Change, CHANGES jmap.Changes[T], FILTER any, COMP any, SEARCHRESULTS jmap.SearchResults[T]]( //NOSONAR o ObjectType[T, CHANGE, CHANGES], @@ -84,7 +84,7 @@ func getallpaged[T jmap.Foo, CHANGE jmap.Change, CHANGES jmap.Changes[T], FILTER g *Groupware, filterFunc func(containerId string) FILTER, sortBy []COMP, - queryFunc func(req Request, accountId string, filter FILTER, sortBy []COMP, offset int, limit uint, ctx jmap.Context) (SEARCHRESULTS, jmap.SessionState, jmap.State, jmap.Language, jmap.Error), + queryFunc func(req Request, accountId string, filter FILTER, sortBy []COMP, position int, limit uint, ctx jmap.Context) (SEARCHRESULTS, jmap.SessionState, jmap.State, jmap.Language, jmap.Error), ) { g.respond(w, r, func(req Request) Response { ok, accountId, resp := o.accountFunc(&req) @@ -93,12 +93,12 @@ func getallpaged[T jmap.Foo, CHANGE jmap.Change, CHANGES jmap.Changes[T], FILTER } l := req.logger.With().Str(accountId, log.SafeString(accountId)) - offset, ok, err := req.parseIntParam(QueryParamOffset, 0) + position, ok, err := req.parseIntParam(QueryParamPosition, 0) if err != nil { return req.error(accountId, err) } if ok { - l = l.Int(QueryParamOffset, offset) + l = l.Int(QueryParamPosition, position) } limit, ok, err := req.parseUIntParam(QueryParamLimit, uint(0)) @@ -123,7 +123,7 @@ func getallpaged[T jmap.Foo, CHANGE jmap.Change, CHANGES jmap.Changes[T], FILTER logger := log.From(l) ctx := req.ctx.WithLogger(logger) - results, sessionState, state, lang, jerr := queryFunc(req, accountId, filter, sortBy, offset, limit, ctx) + results, sessionState, state, lang, jerr := queryFunc(req, accountId, filter, sortBy, position, limit, ctx) if jerr != nil { return req.jmapError(accountId, jerr, sessionState, lang) } @@ -131,14 +131,14 @@ func getallpaged[T jmap.Foo, CHANGE jmap.Change, CHANGES jmap.Changes[T], FILTER }) } -// Query all the {{.Name}} with support for paging using the {{.QueryParam.QueryParamOffset.Name}} and {{.QueryParam.QueryParamLimit.Name}} query parameters. +// Query all the {{.Name}} with support for paging using the {{.QueryParam.QueryParamPosition.Name}} and {{.QueryParam.QueryParamLimit.Name}} query parameters. // @api:response 200:SEARCHRESULTS returns the {{.Names}} that match the filter, within the requested range, as well as the total amount of matches func query[T jmap.Foo, CHANGE jmap.Change, CHANGES jmap.Changes[T], SEARCHRESULTS jmap.SearchResults[T]]( //NOSONAR o ObjectType[T, CHANGE, CHANGES], w http.ResponseWriter, r *http.Request, g *Groupware, defaultLimit uint, - queryFunc func(req Request, accountId string, containerId string, offset int, limit uint, ctx jmap.Context) (SEARCHRESULTS, jmap.SessionState, jmap.State, jmap.Language, *Error), + queryFunc func(req Request, accountId string, containerId string, position int, limit uint, ctx jmap.Context) (SEARCHRESULTS, jmap.SessionState, jmap.State, jmap.Language, *Error), ) { g.respond(w, r, func(req Request) Response { ok, accountId, resp := o.accountFunc(&req) @@ -157,12 +157,12 @@ func query[T jmap.Foo, CHANGE jmap.Change, CHANGES jmap.Changes[T], SEARCHRESULT l = l.Str(o.containerUriParamName, log.SafeString(containerId)) } - offset, ok, err := req.parseIntParam(QueryParamOffset, 0) + position, ok, err := req.parseIntParam(QueryParamPosition, 0) if err != nil { return req.error(accountId, err) } if ok { - l = l.Int(QueryParamOffset, offset) + l = l.Int(QueryParamPosition, position) } limit, ok, err := req.parseUIntParam(QueryParamLimit, defaultLimit) @@ -176,7 +176,7 @@ func query[T jmap.Foo, CHANGE jmap.Change, CHANGES jmap.Changes[T], SEARCHRESULT logger := log.From(l) ctx := req.ctx.WithLogger(logger) - results, sessionState, state, lang, err := queryFunc(req, accountId, containerId, offset, limit, ctx) + results, sessionState, state, lang, err := queryFunc(req, accountId, containerId, position, limit, ctx) if err != nil { return req.error(accountId, err) }