From 23e696e7d05f1c4f59282f66df6d2da3a1561e48 Mon Sep 17 00:00:00 2001 From: Pascal Bleser Date: Fri, 6 Feb 2026 09:44:33 +0100 Subject: [PATCH] groupware: remove remnants of go-swagger documentation, since we are switching to using our own tool instead --- pkg/jmap/model.go | 2 - pkg/jscalendar/model.go | 4 - pkg/jscontact/model.go | 6 +- .../groupware/pkg/groupware/api_account.go | 33 +--- .../groupware/pkg/groupware/api_calendars.go | 48 ----- .../groupware/pkg/groupware/api_contacts.go | 49 +---- .../groupware/pkg/groupware/api_emails.go | 184 ++---------------- .../groupware/pkg/groupware/api_identity.go | 15 -- services/groupware/pkg/groupware/api_index.go | 18 +- .../groupware/pkg/groupware/api_mailbox.go | 89 +-------- services/groupware/pkg/groupware/api_quota.go | 28 --- .../groupware/pkg/groupware/api_tasklists.go | 47 ----- .../groupware/pkg/groupware/api_vacation.go | 32 --- services/groupware/pkg/groupware/docs.go | 48 ----- 14 files changed, 22 insertions(+), 581 deletions(-) delete mode 100644 services/groupware/pkg/groupware/docs.go diff --git a/pkg/jmap/model.go b/pkg/jmap/model.go index 6ee0d1b2b3..a70694c1a2 100644 --- a/pkg/jmap/model.go +++ b/pkg/jmap/model.go @@ -1924,8 +1924,6 @@ type EmailBodyPart struct { // // This is scoped to the `emailId` and has no meaning outside of the JMAP Email object representation. // This is null if, and only if, the part is of type `multipart/*`. - // - // example: $attachmentPartId PartId string `json:"partId,omitempty"` // The id representing the raw octets of the contents of the part, after decoding any known diff --git a/pkg/jscalendar/model.go b/pkg/jscalendar/model.go index 8c2159958f..7c26a5edf5 100644 --- a/pkg/jscalendar/model.go +++ b/pkg/jscalendar/model.go @@ -1554,8 +1554,6 @@ type TimeZoneRule struct { // Negative numbers represent time zones west of the prime meridian, or behind UTC. // // Mandatory. - // - // example: -0500 OffsetFrom string `json:"offsetFrom" doc:"req"` // This is the TZOFFSETTO property from iCalendar: specifies the offset that is in use in this time zone observance. @@ -1571,8 +1569,6 @@ type TimeZoneRule struct { // Negative numbers represent time zones west of the prime meridian, or behind UTC. // // Mandatory. - // - // example: +1245 OffsetTo string `json:"offsetTo" doc:"req"` // This is the `RRULE` property mapped. diff --git a/pkg/jscontact/model.go b/pkg/jscontact/model.go index 2db08bbbb5..8e1be8a3b7 100644 --- a/pkg/jscontact/model.go +++ b/pkg/jscontact/model.go @@ -215,8 +215,6 @@ type PersonalInfoLevel string // * `location`: a named location // * `device`: a device such as an appliance, a computer, or a network element // * `application`: a software application -// -// example: individual type ContactCardKind string // The kind of the `Directory` resource. @@ -366,8 +364,6 @@ type LinkContext string // The JSContact version of this Card. // // The value MUST be one of the IANA-registered JSContact Version values for the version property. -// -// example: 1.0 type JSContactVersion string type TypeOfAddress string @@ -2038,7 +2034,7 @@ type ContactCard struct { // The id uniquely identifies a Card with a particular “uid” within a particular account. // // This is a JMAP extension and not part of [RFC9553]. - Id string `json:"id,omitempty"` + Id string `json:"id,omitempty" doc:"!request,req"` // The set of AddressBook ids this Card belongs to. // diff --git a/services/groupware/pkg/groupware/api_account.go b/services/groupware/pkg/groupware/api_account.go index 94927c8872..42f922737a 100644 --- a/services/groupware/pkg/groupware/api_account.go +++ b/services/groupware/pkg/groupware/api_account.go @@ -9,24 +9,7 @@ import ( "github.com/opencloud-eu/opencloud/pkg/structs" ) -// When the request succeeds. -// swagger:response GetAccountResponse200 -type SwaggerGetAccountResponse struct { - // in: body - Body struct { - *jmap.Account - } -} - -// swagger:route GET /groupware/accounts/{account} account account // Get attributes of a given account. -// -// responses: -// -// 200: GetAccountResponse200 -// 400: ErrorResponse400 -// 404: ErrorResponse404 -// 500: ErrorResponse500 func (g *Groupware) GetAccount(w http.ResponseWriter, r *http.Request) { g.respond(w, r, func(req Request) Response { accountId, account, err := req.GetAccountForMail() @@ -38,22 +21,7 @@ func (g *Groupware) GetAccount(w http.ResponseWriter, r *http.Request) { }) } -// When the request succeeds. -// swagger:response GetAccountsResponse200 -type SwaggerGetAccountsResponse struct { - // in: body - Body map[string]jmap.Account -} - -// swagger:route GET /groupware/accounts account accounts // Get the list of all of the user's accounts. -// -// responses: -// -// 200: GetAccountsResponse200 -// 400: ErrorResponse400 -// 404: ErrorResponse404 -// 500: ErrorResponse500 func (g *Groupware) GetAccounts(w http.ResponseWriter, r *http.Request) { g.respond(w, r, func(req Request) Response { list := make([]AccountWithId, len(req.session.Accounts)) @@ -72,6 +40,7 @@ func (g *Groupware) GetAccounts(w http.ResponseWriter, r *http.Request) { }) } +// Get the list of all of the user's accounts, along with the list of all the identities for each of those accounts. func (g *Groupware) GetAccountsWithTheirIdentities(w http.ResponseWriter, r *http.Request) { g.respond(w, r, func(req Request) Response { allAccountIds := req.AllAccountIds() diff --git a/services/groupware/pkg/groupware/api_calendars.go b/services/groupware/pkg/groupware/api_calendars.go index 0cca84752e..585ff7e101 100644 --- a/services/groupware/pkg/groupware/api_calendars.go +++ b/services/groupware/pkg/groupware/api_calendars.go @@ -8,22 +8,7 @@ import ( "github.com/opencloud-eu/opencloud/pkg/log" ) -// When the request succeeds. -// swagger:response GetCalendars200 -type SwaggerGetCalendars200 struct { - // in: body - Body []jmap.Calendar -} - -// swagger:route GET /groupware/accounts/{account}/calendars calendar calendars // Get all calendars of an account. -// -// responses: -// -// 200: GetCalendars200 -// 400: ErrorResponse400 -// 404: ErrorResponse404 -// 500: ErrorResponse500 func (g *Groupware) GetCalendars(w http.ResponseWriter, r *http.Request) { g.respond(w, r, func(req Request) Response { ok, accountId, resp := req.needCalendarWithAccount() @@ -40,24 +25,7 @@ func (g *Groupware) GetCalendars(w http.ResponseWriter, r *http.Request) { }) } -// When the request succeeds. -// swagger:response GetCalendarById200 -type SwaggerGetCalendarById200 struct { - // in: body - Body struct { - *jmap.Calendar - } -} - -// swagger:route GET /groupware/accounts/{account}/calendars/{calendarid} calendar calendar_by_id // Get a calendar of an account by its identifier. -// -// responses: -// -// 200: GetCalendarById200 -// 400: ErrorResponse400 -// 404: ErrorResponse404 -// 500: ErrorResponse500 func (g *Groupware) GetCalendarById(w http.ResponseWriter, r *http.Request) { g.respond(w, r, func(req Request) Response { ok, accountId, resp := req.needCalendarWithAccount() @@ -87,22 +55,7 @@ func (g *Groupware) GetCalendarById(w http.ResponseWriter, r *http.Request) { }) } -// When the request succeeds. -// swagger:response GetEventsInCalendar200 -type SwaggerGetEventsInCalendar200 struct { - // in: body - Body []jmap.CalendarEvent -} - -// swagger:route GET /groupware/accounts/{account}/calendars/{calendarid}/events event events_in_addressbook // Get all the events in a calendar of an account by its identifier. -// -// responses: -// -// 200: GetEventsInCalendar200 -// 400: ErrorResponse400 -// 404: ErrorResponse404 -// 500: ErrorResponse500 func (g *Groupware) GetEventsInCalendar(w http.ResponseWriter, r *http.Request) { g.respond(w, r, func(req Request) Response { ok, accountId, resp := req.needCalendarWithAccount() @@ -177,7 +130,6 @@ func (g *Groupware) CreateCalendarEvent(w http.ResponseWriter, r *http.Request) }) } -// @api:tag XYZ func (g *Groupware) DeleteCalendarEvent(w http.ResponseWriter, r *http.Request) { g.respond(w, r, func(req Request) Response { ok, accountId, resp := req.needCalendarWithAccount() diff --git a/services/groupware/pkg/groupware/api_contacts.go b/services/groupware/pkg/groupware/api_contacts.go index cffcfd0126..f9f4f12318 100644 --- a/services/groupware/pkg/groupware/api_contacts.go +++ b/services/groupware/pkg/groupware/api_contacts.go @@ -8,22 +8,7 @@ import ( "github.com/opencloud-eu/opencloud/pkg/log" ) -// When the request succeeds. -// swagger:response GetAddressbooks200 -type SwaggerGetAddressbooks200 struct { - // in: body - Body []jmap.AddressBook -} - -// swagger:route GET /groupware/accounts/{account}/addressbooks addressbook addressbooks // Get all addressbooks of an account. -// -// responses: -// -// 200: GetAddressbooks200 -// 400: ErrorResponse400 -// 404: ErrorResponse404 -// 500: ErrorResponse500 func (g *Groupware) GetAddressbooks(w http.ResponseWriter, r *http.Request) { g.respond(w, r, func(req Request) Response { ok, accountId, resp := req.needContactWithAccount() @@ -40,24 +25,7 @@ func (g *Groupware) GetAddressbooks(w http.ResponseWriter, r *http.Request) { }) } -// When the request succeeds. -// swagger:response GetAddressbookById200 -type SwaggerGetAddressbookById200 struct { - // in: body - Body struct { - *jmap.AddressBook - } -} - -// swagger:route GET /groupware/accounts/{account}/addressbooks/{addressbookid} addressbook addressbook_by_id // Get an addressbook of an account by its identifier. -// -// responses: -// -// 200: GetAddressbookById200 -// 400: ErrorResponse400 -// 404: ErrorResponse404 -// 500: ErrorResponse500 func (g *Groupware) GetAddressbook(w http.ResponseWriter, r *http.Request) { g.respond(w, r, func(req Request) Response { ok, accountId, resp := req.needContactWithAccount() @@ -82,27 +50,12 @@ func (g *Groupware) GetAddressbook(w http.ResponseWriter, r *http.Request) { if len(addressbooks.NotFound) > 0 { return notFoundResponse(single(accountId), sessionState) } else { - return etagResponse(single(accountId), addressbooks, sessionState, AddressBookResponseObjectType, state, lang) + return etagResponse(single(accountId), addressbooks.AddressBooks[0], sessionState, AddressBookResponseObjectType, state, lang) } }) } -// When the request succeeds. -// swagger:response GetContactsInAddressbook200 -type SwaggerGetContactsInAddressbook200 struct { - // in: body - Body []jscontact.ContactCard -} - -// swagger:route GET /groupware/accounts/{account}/addressbooks/{addressbookid}/contacts contact contacts_in_addressbook // Get all the contacts in an addressbook of an account by its identifier. -// -// responses: -// -// 200: GetContactsInAddressbook200 -// 400: ErrorResponse400 -// 404: ErrorResponse404 -// 500: ErrorResponse500 func (g *Groupware) GetContactsInAddressbook(w http.ResponseWriter, r *http.Request) { g.respond(w, r, func(req Request) Response { ok, accountId, resp := req.needContactWithAccount() diff --git a/services/groupware/pkg/groupware/api_emails.go b/services/groupware/pkg/groupware/api_emails.go index 058dad1e04..2dc81cd57a 100644 --- a/services/groupware/pkg/groupware/api_emails.go +++ b/services/groupware/pkg/groupware/api_emails.go @@ -20,25 +20,6 @@ import ( "github.com/opencloud-eu/opencloud/services/groupware/pkg/metrics" ) -// When the request succeeds without a "since" query parameter. -// swagger:response GetAllEmailsInMailbox200 -type SwaggerGetAllEmailsInMailbox200 struct { - // in: body - Body struct { - *jmap.Emails - } -} - -// When the request succeeds with a "since" query parameter. -// swagger:response GetAllEmailsInMailboxSince200 -type SwaggerGetAllEmailsInMailboxSince200 struct { - // in: body - Body struct { - *jmap.MailboxChanges - } -} - -// swagger:route GET /groupware/accounts/{account}/mailboxes/{mailbox}/emails/since/{since} email get_all_emails_in_mailbox_since // Get all the emails in a mailbox since a given state. // // Retrieve the list of all the emails that are in a given mailbox since a given state. @@ -47,13 +28,6 @@ type SwaggerGetAllEmailsInMailboxSince200 struct { // // A limit and an offset may be specified using the query parameters 'limit' and 'offset', // respectively. -// -// responses: -// -// 200: GetAllEmailsInMailboxSince200 -// 400: ErrorResponse400 -// 404: ErrorResponse404 -// 500: ErrorResponse500 func (g *Groupware) GetAllEmailsInMailboxSince(w http.ResponseWriter, r *http.Request) { maxChanges := uint(0) @@ -86,7 +60,6 @@ func (g *Groupware) GetAllEmailsInMailboxSince(w http.ResponseWriter, r *http.Re } -// swagger:route GET /groupware/accounts/{account}/mailboxes/{mailbox}/emails email get_all_emails_in_mailbox // Get all the emails in a mailbox. // // Retrieve the list of all the emails that are in a given mailbox. @@ -95,13 +68,6 @@ func (g *Groupware) GetAllEmailsInMailboxSince(w http.ResponseWriter, r *http.Re // // A limit and an offset may be specified using the query parameters 'limit' and 'offset', // respectively. -// -// responses: -// -// 200: GetAllEmailsInMailbox200 -// 400: ErrorResponse400 -// 404: ErrorResponse404 -// 500: ErrorResponse500 func (g *Groupware) GetAllEmailsInMailbox(w http.ResponseWriter, r *http.Request) { g.respond(w, r, func(req Request) Response { l := req.logger.With() @@ -921,14 +887,6 @@ func (g *Groupware) ReplaceEmail(w http.ResponseWriter, r *http.Request) { }) } -// swagger:parameters update_email -type SwaggerUpdateEmailBody struct { - // List of identifiers of emails to delete. - // in: body - // example: ["caen3iujoo8u", "aec8phaetaiz", "bohna0me"] - Body map[string]string -} - func (g *Groupware) UpdateEmail(w http.ResponseWriter, r *http.Request) { g.respond(w, r, func(req Request) Response { l := req.logger.With() @@ -1043,15 +1001,7 @@ func (g *Groupware) UpdateEmailKeywords(w http.ResponseWriter, r *http.Request) }) } -// swagger:route POST /groupware/accounts/{account}/emails/{emailid}/keywords email add_email_keywords // Add keywords to an email by its unique identifier. -// -// responses: -// -// 204: Success204 -// 400: ErrorResponse400 -// 404: ErrorResponse404 -// 500: ErrorResponse500 func (g *Groupware) AddEmailKeywords(w http.ResponseWriter, r *http.Request) { g.respond(w, r, func(req Request) Response { l := req.logger.With() @@ -1111,15 +1061,7 @@ func (g *Groupware) AddEmailKeywords(w http.ResponseWriter, r *http.Request) { }) } -// swagger:route DELETE /groupware/accounts/{account}/emails/{emailid}/keywords email remove_email_keywords // Remove keywords of an email by its unique identifier. -// -// responses: -// -// 204: Success204 -// 400: ErrorResponse400 -// 404: ErrorResponse404 -// 500: ErrorResponse500 func (g *Groupware) RemoveEmailKeywords(w http.ResponseWriter, r *http.Request) { g.respond(w, r, func(req Request) Response { l := req.logger.With() @@ -1179,15 +1121,7 @@ func (g *Groupware) RemoveEmailKeywords(w http.ResponseWriter, r *http.Request) }) } -// swagger:route DELETE /groupware/accounts/{account}/emails/{emailid} email delete_email // Delete an email by its unique identifier. -// -// responses: -// -// 204: Success204 -// 400: ErrorResponse400 -// 404: ErrorResponse404 -// 500: ErrorResponse500 func (g *Groupware) DeleteEmail(w http.ResponseWriter, r *http.Request) { g.respond(w, r, func(req Request) Response { l := req.logger.With() @@ -1230,26 +1164,10 @@ func (g *Groupware) DeleteEmail(w http.ResponseWriter, r *http.Request) { }) } -// swagger:parameters delete_emails -type SwaggerDeleteEmailsBody struct { - // List of identifiers of emails to delete. - // in: body - // example: ["caen3iujoo8u", "aec8phaetaiz", "bohna0me"] - Body []string -} - -// swagger:route DELETE /groupware/accounts/{account}/emails email delete_emails // Delete a set of emails by their unique identifiers. // // The identifiers of the emails to delete are specified as part of the request // body, as an array of strings. -// -// responses: -// -// 204: Success204 -// 400: ErrorResponse400 -// 404: ErrorResponse404 -// 500: ErrorResponse500 func (g *Groupware) DeleteEmails(w http.ResponseWriter, r *http.Request) { /// @api body g.respond(w, r, func(req Request) Response { @@ -1511,23 +1429,14 @@ func (g *Groupware) RelatedToEmail(w http.ResponseWriter, r *http.Request) { type EmailSummary struct { // The id of the account this Email summary pertains to. - // required: true - // example: $accountId AccountId string `json:"accountId,omitempty"` // The id of the Email object. // // Note that this is the JMAP object id, NOT the Message-ID header field value of the message [RFC5322]. - // - // [RFC5322]: https://www.rfc-editor.org/rfc/rfc5322.html - // - // required: true - // example: $emailId Id string `json:"id,omitempty"` // The id of the Thread to which this Email belongs. - // - // example: $threadId ThreadId string `json:"threadId,omitempty"` // The number of emails in the thread, including this one. @@ -1539,8 +1448,6 @@ type EmailSummary struct { // The set is represented as an object, with each key being a Mailbox id. // // The value for each key in the object MUST be true. - // - // example: $mailboxIds MailboxIds map[string]bool `json:"mailboxIds,omitempty"` // A set of keywords that apply to the Email. @@ -1572,8 +1479,8 @@ type EmailSummary struct { // // Because JSON is case sensitive, servers MUST return keywords in lowercase. // - // The [IMAP and JMAP Keywords] registry as established in [RFC5788] assigns semantic meaning to some other - // keywords in common use. + // The [IMAP and JMAP Keywords](https://www.iana.org/assignments/imap-jmap-keywords/) registry as established in + // [RFC5788] assigns semantic meaning to some other keywords in common use. // // New keywords may be established here in the future. In particular, note: // @@ -1584,54 +1491,36 @@ type EmailSummary struct { // Clients SHOULD set this flag when users report spam to help train automated spam-detection systems. // - $notjunk: The Email is definitely not spam. // Clients SHOULD set this flag when users indicate an Email is legitimate, to help train automated spam-detection systems. - // - // [IMAP and JMAP Keywords]: https://www.iana.org/assignments/imap-jmap-keywords/ - // [RFC5788]: https://www.rfc-editor.org/rfc/rfc5788.html - // - // example: $emailKeywords Keywords map[string]bool `json:"keywords,omitempty"` // The size, in octets, of the raw data for the message [RFC5322] // (as referenced by the blobId, i.e., the number of octets in the file the user would download). - // - // [RFC5322]: https://www.rfc-editor.org/rfc/rfc5322.html Size int `json:"size"` // The date the Email was received by the message store. // // This is the internal date in IMAP [RFC3501]. - // - // [RFC3501]: https://www.rfc-editor.org/rfc/rfc3501.html - // - // example: $emailReceivedAt ReceivedAt time.Time `json:"receivedAt,omitzero"` - // The value is identical to the value of header:Sender:asAddresses. - // example: $emailSenders + // The value is identical to the value of `header:Sender:asAddresses`. Sender []jmap.EmailAddress `json:"sender,omitempty"` - // The value is identical to the value of header:From:asAddresses. - // example: $emailFroms + // The value is identical to the value of `header:From:asAddresses`. From []jmap.EmailAddress `json:"from,omitempty"` - // The value is identical to the value of header:To:asAddresses. - // example: $emailTos + // The value is identical to the value of `header:To:asAddresses`. To []jmap.EmailAddress `json:"to,omitempty"` - // The value is identical to the value of header:Cc:asAddresses. - // example: $emailCCs + // The value is identical to the value of `header:Cc:asAddresses`. Cc []jmap.EmailAddress `json:"cc,omitempty"` - // The value is identical to the value of header:Bcc:asAddresses. - // example: $emailBCCs + // The value is identical to the value of `header:Bcc:asAddresses`. Bcc []jmap.EmailAddress `json:"bcc,omitempty"` - // The value is identical to the value of header:Subject:asText. - // example: $emailSubject + // The value is identical to the value of `header:Subject:asText`. Subject string `json:"subject,omitempty"` - // The value is identical to the value of header:Date:asDate. - // example: $emailSentAt + // The value is identical to the value of `header:Date:asDate`. SentAt time.Time `json:"sentAt,omitzero"` // This is true if there are one or more parts in the message that a client UI should offer as downloadable. @@ -1643,26 +1532,21 @@ type EmailSummary struct { // as embedded images in one of the text/html parts of the message. // // The server MAY set hasAttachment based on implementation-defined or site-configurable heuristics. - // example: true HasAttachment bool `json:"hasAttachment,omitempty"` // A list, traversing depth-first, of all parts in bodyStructure. // // They must satisfy either of the following conditions: // - // - not of type multipart/* and not included in textBody or htmlBody - // - of type image/*, audio/*, or video/* and not in both textBody and htmlBody + // - not of type `multipart/*` and not included in textBody or htmlBody + // - of type `image/*`, `audio/*`, or `video/*` and not in both textBody and htmlBody // - // None of these parts include subParts, including message/* types. + // None of these parts include subParts, including `message/*` types. // // Attached messages may be fetched using the Email/parse method and the blobId. // - // Note that a text/html body part HTML may reference image parts in attachments by using cid: + // Note that a `text/html` body part HTML may reference image parts in attachments by using cid: // links to reference the Content-Id, as defined in [RFC2392], or by referencing the Content-Location. - // - // [RFC2392]: https://www.rfc-editor.org/rfc/rfc2392.html - // - // example: $emailAttachments Attachments []jmap.EmailBodyPart `json:"attachments,omitempty"` // A plaintext fragment of the message body. @@ -1679,8 +1563,6 @@ type EmailSummary struct { // time, fetching this for an Email a second time MAY return a different result. // However, the previous value is not considered incorrect, and the change SHOULD NOT cause the Email object // to be considered as changed by the server. - // - // example: $emailPreview Preview string `json:"preview,omitempty"` } @@ -1712,34 +1594,6 @@ type emailWithAccountId struct { email jmap.Email } -// When the request succeeds. -// swagger:response GetLatestEmailsSummaryForAllAccounts200 -type SwaggerGetLatestEmailsSummaryForAllAccounts200 struct { - // in: body - Body []EmailSummary -} - -// swagger:parameters get_latest_emails_summary_for_all_accounts -type SwaggerGetLatestEmailsSummaryForAllAccountsParams struct { - // The maximum amount of email summaries to return. - // in: query - // example: 10 - // default: 10 - Limit uint `json:"limit"` - - // Whether to include emails that have already been seen (read) or not. - // in: query - // example: true - // default: false - Seen bool `json:"seen"` - - // Whether to include emails that have been flagged as junk or phishing. - // in: query - // example: false - // default: false - Undesirable bool `json:"undesirable"` -} - type EmailSummaries struct { Emails []EmailSummary `json:"emails,omitempty"` Total uint `json:"total,omitzero"` @@ -1748,7 +1602,6 @@ type EmailSummaries struct { State jmap.State `json:"state,omitempty"` } -// swagger:route GET /groupware/accounts/all/emails/latest/summary email get_latest_emails_summary_for_all_accounts // Get a summary of the latest emails across all the mailboxes, across all of a user's accounts. // // Retrieves summaries of the latest emails of a user, in all accounts, across all mailboxes. @@ -1757,15 +1610,8 @@ type EmailSummaries struct { // // The following additional query parameters may be specified to further filter the emails to summarize: // -// !- `seen`: when `true`, emails that have already been seen (read) will be included as well (default is to only include emails that have not been read yet) -// !- `undesirable`: when `true`, emails that are flagged as spam or phishing will also be summarized (default is to ignore those) -// -// responses: -// -// 200: GetLatestEmailsSummaryForAllAccounts200 -// 400: ErrorResponse400 -// 404: ErrorResponse404 -// 500: ErrorResponse500 +// * `seen`: when `true`, emails that have already been seen (read) will be included as well (default is to only include emails that have not been read yet) +// * `undesirable`: when `true`, emails that are flagged as spam or phishing will also be summarized (default is to ignore those) func (g *Groupware) GetLatestEmailsSummaryForAllAccounts(w http.ResponseWriter, r *http.Request) { g.respond(w, r, func(req Request) Response { l := req.logger.With() diff --git a/services/groupware/pkg/groupware/api_identity.go b/services/groupware/pkg/groupware/api_identity.go index 65c56e738b..9ff339a6b4 100644 --- a/services/groupware/pkg/groupware/api_identity.go +++ b/services/groupware/pkg/groupware/api_identity.go @@ -10,22 +10,7 @@ import ( "github.com/opencloud-eu/opencloud/pkg/structs" ) -// When the request suceeds. -// swagger:response GetIdentitiesResponse -type SwaggerGetIdentitiesResponse struct { - // in: body - Body []jmap.Identity -} - -// swagger:route GET /groupware/accounts/{account}/identities identity identities // Get the list of identities that are associated with an account. -// -// responses: -// -// 200: GetIdentitiesResponse -// 400: ErrorResponse400 -// 404: ErrorResponse404 -// 500: ErrorResponse500 func (g *Groupware) GetIdentities(w http.ResponseWriter, r *http.Request) { g.respond(w, r, func(req Request) Response { accountId, err := req.GetAccountIdForMail() diff --git a/services/groupware/pkg/groupware/api_index.go b/services/groupware/pkg/groupware/api_index.go index f4c6bf225d..f6991e4835 100644 --- a/services/groupware/pkg/groupware/api_index.go +++ b/services/groupware/pkg/groupware/api_index.go @@ -142,22 +142,8 @@ type IndexResponse struct { PrimaryAccounts IndexPrimaryAccounts `json:"primaryAccounts"` } -// When the request suceeds. -// swagger:response IndexResponse -type SwaggerIndexResponse struct { - // in: body - Body struct { - *IndexResponse - } -} - -// swagger:route GET /groupware bootstrap index // Get initial bootstrapping information for a user. // @api:tag bootstrap -// -// responses: -// -// 200: IndexResponse func (g *Groupware) Index(w http.ResponseWriter, r *http.Request) { g.respond(w, r, func(req Request) Response { accountIds := req.AllAccountIds() @@ -167,14 +153,14 @@ func (g *Groupware) Index(w http.ResponseWriter, r *http.Request) { return req.errorResponseFromJmap(accountIds, err) } - var RBODY IndexResponse = IndexResponse{ + var body IndexResponse = IndexResponse{ Version: Version, Capabilities: Capabilities, Limits: buildIndexLimits(req.session), Accounts: buildIndexAccounts(req.session, boot), PrimaryAccounts: buildIndexPrimaryAccounts(req.session), } - return etagResponse(accountIds, RBODY, sessionState, IndexResponseObjectType, state, lang) + return etagResponse(accountIds, body, sessionState, IndexResponseObjectType, state, lang) }) } diff --git a/services/groupware/pkg/groupware/api_mailbox.go b/services/groupware/pkg/groupware/api_mailbox.go index a9f5cb8a2a..acbac71a67 100644 --- a/services/groupware/pkg/groupware/api_mailbox.go +++ b/services/groupware/pkg/groupware/api_mailbox.go @@ -11,28 +11,12 @@ import ( "github.com/opencloud-eu/opencloud/pkg/log" ) -// When the request succeeds. -// swagger:response MailboxResponse200 -type SwaggerGetMailboxById200 struct { - // in: body - Body struct { - *jmap.Mailbox - } -} - -// swagger:route GET /groupware/accounts/{account}/mailboxes/{mailbox} mailbox mailboxes_by_id // Get a specific mailbox by its identifier. // // A Mailbox represents a named set of Emails. +// // This is the primary mechanism for organising Emails within an account. // It is analogous to a folder or a label in other systems. -// -// responses: -// -// 200: MailboxResponse200 -// 400: ErrorResponse400 -// 404: ErrorResponse404 -// 500: ErrorResponse500 func (g *Groupware) GetMailbox(w http.ResponseWriter, r *http.Request) { g.respond(w, r, func(req Request) Response { accountId, err := req.GetAccountIdForMail() @@ -58,42 +42,15 @@ func (g *Groupware) GetMailbox(w http.ResponseWriter, r *http.Request) { }) } -// swagger:parameters mailboxes -type SwaggerMailboxesParams struct { - // The name of the mailbox, with substring matching. - // in: query - Name string `json:"name,omitempty"` - // The role of the mailbox. - // in: query - Role string `json:"role,omitempty"` - // Whether the mailbox is subscribed by the user or not. - // When omitted, the subscribed and unsubscribed mailboxes are returned. - // in: query - Subscribed bool `json:"subscribed,omitempty"` -} - -// When the request succeeds. -// swagger:response MailboxesResponse200 -type SwaggerMailboxesResponse200 struct { - // in: body - Body []jmap.Mailbox -} - -// swagger:route GET /groupware/accounts/{account}/mailboxes mailbox mailboxes // Get the list of all the mailboxes of an account, potentially filtering on the // name and/or role of the mailbox. // // A Mailbox represents a named set of Emails. +// // This is the primary mechanism for organising Emails within an account. // It is analogous to a folder or a label in other systems. // // When none of the query parameters are specified, all the mailboxes are returned. -// -// responses: -// -// 200: MailboxesResponse200 -// 400: ErrorResponse400 -// 500: ErrorResponse500 func (g *Groupware) GetMailboxes(w http.ResponseWriter, r *http.Request) { g.respond(w, r, func(req Request) Response { var filter jmap.MailboxFilterCondition @@ -151,21 +108,7 @@ func (g *Groupware) GetMailboxes(w http.ResponseWriter, r *http.Request) { }) } -// When the request succeeds. -// swagger:response MailboxesForAllAccountsResponse200 -type SwaggerMailboxesForAllAccountsResponse200 struct { - // in: body - Body map[string][]jmap.Mailbox -} - -// swagger:route GET /groupware/accounts/all/mailboxes mailboxesforallaccounts mailbox // Get the list of all the mailboxes of all accounts of a user, potentially filtering on the role of the mailboxes. -// -// responses: -// -// 200: MailboxesForAllAccountsResponse200 -// 400: ErrorResponse400 -// 500: ErrorResponse500 func (g *Groupware) GetMailboxesForAllAccounts(w http.ResponseWriter, r *http.Request) { g.respond(w, r, func(req Request) Response { accountIds := req.AllAccountIds() @@ -232,21 +175,7 @@ func (g *Groupware) GetMailboxByRoleForAllAccounts(w http.ResponseWriter, r *htt }) } -// When the request succeeds. -// swagger:response MailboxChangesResponse200 -type SwaggerMailboxChangesResponse200 struct { - // in: body - Body *jmap.MailboxChanges -} - -// swagger:route GET /groupware/accounts/{account}/mailboxes/{mailbox}/changes mailbox mailboxchanges // Get the changes that occured in a given mailbox since a certain state. -// -// responses: -// -// 200: MailboxChangesResponse200 -// 400: ErrorResponse400 -// 500: ErrorResponse500 func (g *Groupware) GetMailboxChanges(w http.ResponseWriter, r *http.Request) { g.respond(w, r, func(req Request) Response { l := req.logger.With() @@ -287,21 +216,7 @@ func (g *Groupware) GetMailboxChanges(w http.ResponseWriter, r *http.Request) { }) } -// When the request succeeds. -// swagger:response MailboxChangesForAllAccountsResponse200 -type SwaggerMailboxChangesForAllAccountsResponse200 struct { - // in: body - Body map[string]jmap.MailboxChanges -} - -// swagger:route GET /groupware/accounts/all/mailboxes/changes mailbox mailboxchangesforallaccounts // Get the changes that occured in all the mailboxes of all accounts. -// -// responses: -// -// 200: MailboxChangesForAllAccountsResponse200 -// 400: ErrorResponse400 -// 500: ErrorResponse500 func (g *Groupware) GetMailboxChangesForAllAccounts(w http.ResponseWriter, r *http.Request) { g.respond(w, r, func(req Request) Response { l := req.logger.With() diff --git a/services/groupware/pkg/groupware/api_quota.go b/services/groupware/pkg/groupware/api_quota.go index 2237ada3f6..437791668f 100644 --- a/services/groupware/pkg/groupware/api_quota.go +++ b/services/groupware/pkg/groupware/api_quota.go @@ -7,25 +7,11 @@ import ( "github.com/opencloud-eu/opencloud/pkg/log" ) -// When the request succeeds. -// swagger:response GetQuotaResponse200 -type SwaggerGetQuotaResponse200 struct { - // in: body - Body []jmap.Quota -} - -// swagger:route GET /groupware/accounts/{account}/quota quota get_quota // Get quota limits. // // Retrieves the list of Quota configurations for a given account. // // Note that there may be multiple Quota objects for different resource types. -// -// responses: -// -// 200: GetQuotaResponse200 -// 400: ErrorResponse400 -// 500: ErrorResponse500 func (g *Groupware) GetQuota(w http.ResponseWriter, r *http.Request) { g.respond(w, r, func(req Request) Response { accountId, err := req.GetAccountIdForQuota() @@ -51,24 +37,10 @@ type AccountQuota struct { State jmap.State `json:"state"` } -// When the request succeeds. -// swagger:response GetQuotaForAllAccountsResponse200 -type SwaggerGetQuotaForAllAccountsResponse200 struct { - // in: body - Body map[string]AccountQuota -} - -// swagger:route GET /groupware/accounts/all/quota quota get_quota_for_all_accounts // Get quota limits for all accounts. // // Retrieves the Quota configuration for all the accounts the user currently has access to, // as a dictionary that has the account identifier as its key and an array of Quotas as its value. -// -// responses: -// -// 200: GetQuotaForAllAccountsResponse200 -// 400: ErrorResponse400 -// 500: ErrorResponse500 func (g *Groupware) GetQuotaForAllAccounts(w http.ResponseWriter, r *http.Request) { g.respond(w, r, func(req Request) Response { accountIds := req.AllAccountIds() diff --git a/services/groupware/pkg/groupware/api_tasklists.go b/services/groupware/pkg/groupware/api_tasklists.go index 931b7a3c6a..eb5cbe1a1c 100644 --- a/services/groupware/pkg/groupware/api_tasklists.go +++ b/services/groupware/pkg/groupware/api_tasklists.go @@ -6,22 +6,7 @@ import ( "github.com/opencloud-eu/opencloud/pkg/jmap" ) -// When the request succeeds. -// swagger:response GetTaskLists200 -type SwaggerGetTaskLists200 struct { - // in: body - Body []jmap.TaskList -} - -// swagger:route GET /groupware/accounts/{account}/tasklists tasklist tasklists // Get all tasklists of an account. -// -// responses: -// -// 200: GetTaskLists200 -// 400: ErrorResponse400 -// 404: ErrorResponse404 -// 500: ErrorResponse500 func (g *Groupware) GetTaskLists(w http.ResponseWriter, r *http.Request) { g.respond(w, r, func(req Request) Response { ok, accountId, resp := req.needTaskWithAccount() @@ -35,24 +20,7 @@ func (g *Groupware) GetTaskLists(w http.ResponseWriter, r *http.Request) { }) } -// When the request succeeds. -// swagger:response GetTaskListById200 -type SwaggerGetTaskListById200 struct { - // in: body - Body struct { - *jmap.TaskList - } -} - -// swagger:route GET /groupware/accounts/{account}/tasklists/{tasklistid} tasklist tasklist_by_id // Get a tasklist by its identifier. -// -// responses: -// -// 200: GetTaskListById200 -// 400: ErrorResponse400 -// 404: ErrorResponse404 -// 500: ErrorResponse500 func (g *Groupware) GetTaskListById(w http.ResponseWriter, r *http.Request) { g.respond(w, r, func(req Request) Response { ok, accountId, resp := req.needTaskWithAccount() @@ -75,22 +43,7 @@ func (g *Groupware) GetTaskListById(w http.ResponseWriter, r *http.Request) { }) } -// When the request succeeds. -// swagger:response GetTasksInTaskList200 -type SwaggerGetTasksInTaskList200 struct { - // in: body - Body []jmap.Task -} - -// swagger:route GET /groupware/accounts/{account}/tasklists/{tasklistid}/tasks task tasks_in_tasklist // Get all the tasks in a tasklist of an account by its identifier. -// -// responses: -// -// 200: GetTasksInTaskList200 -// 400: ErrorResponse400 -// 404: ErrorResponse404 -// 500: ErrorResponse500 func (g *Groupware) GetTasksInTaskList(w http.ResponseWriter, r *http.Request) { g.respond(w, r, func(req Request) Response { ok, accountId, resp := req.needTaskWithAccount() diff --git a/services/groupware/pkg/groupware/api_vacation.go b/services/groupware/pkg/groupware/api_vacation.go index 1e4db2938b..5885b1c92c 100644 --- a/services/groupware/pkg/groupware/api_vacation.go +++ b/services/groupware/pkg/groupware/api_vacation.go @@ -7,28 +7,12 @@ import ( "github.com/opencloud-eu/opencloud/pkg/log" ) -// When the request succeeds. -// swagger:response GetVacationResponse200 -type SwaggerGetVacationResponse200 struct { - // in: body - Body struct { - *jmap.VacationResponseGetResponse - } -} - -// swagger:route GET /groupware/accounts/{account}/vacation vacation getvacation // Get vacation notice information. // // A vacation response sends an automatic reply when a message is delivered to the mail store, informing the original // sender that their message may not be read for some time. // // The VacationResponse object represents the state of vacation-response-related settings for an account. -// -// responses: -// -// 200: GetVacationResponse200 -// 400: ErrorResponse400 -// 500: ErrorResponse500 func (g *Groupware) GetVacation(w http.ResponseWriter, r *http.Request) { g.respond(w, r, func(req Request) Response { accountId, err := req.GetAccountIdForVacationResponse() @@ -45,26 +29,10 @@ func (g *Groupware) GetVacation(w http.ResponseWriter, r *http.Request) { }) } -// When the request succeeds. -// swagger:response SetVacationResponse200 -type SwaggerSetVacationResponse200 struct { - // in: body - Body struct { - *jmap.VacationResponse - } -} - -// swagger:route PUT /groupware/accounts/{account}/vacation vacation setvacation // Set the vacation notice information. // // A vacation response sends an automatic reply when a message is delivered to the mail store, informing the original // sender that their message may not be read for some time. -// -// responses: -// -// 200: SetVacationResponse200 -// 400: ErrorResponse400 -// 500: ErrorResponse500 func (g *Groupware) SetVacation(w http.ResponseWriter, r *http.Request) { g.respond(w, r, func(req Request) Response { accountId, err := req.GetAccountIdForVacationResponse() diff --git a/services/groupware/pkg/groupware/docs.go b/services/groupware/pkg/groupware/docs.go deleted file mode 100644 index c4a759ae30..0000000000 --- a/services/groupware/pkg/groupware/docs.go +++ /dev/null @@ -1,48 +0,0 @@ -// OpenCloud Groupware API -// -// Documentation for the OpenCloud Groupware API -// -// Schemes: https -// BasePath: / -// Version: 1.0.0 -// Host: -// -// Consumes: -// - application/json -// -// Produces: -// - application/json -// -// Security: -// - bearer -// -// swagger:meta -package groupware - -// When the request contains invalid parameters. -// swagger:response ErrorResponse400 -type SwaggerErrorResponse400 struct { - // in: body - Body struct { - *ErrorResponse - } -} - -// When the requested object does not exist. -// swagger:response ErrorResponse404 -type SwaggerErrorResponse404 struct { -} - -// When the server was unable to complete the request. -// swagger:response ErrorResponse500 -type SwaggerErrorResponse500 struct { - // in: body - Body struct { - *ErrorResponse - } -} - -// When the request succeeds. -// swagger:response Success204 -type SwaggerSuccess204 struct { -}