diff --git a/android/Omnivore/app/src/main/graphql/ApplyLabels.graphql b/android/Omnivore/app/src/main/graphql/ApplyLabels.graphql index 0e9fe8cf0..54b4405a5 100644 --- a/android/Omnivore/app/src/main/graphql/ApplyLabels.graphql +++ b/android/Omnivore/app/src/main/graphql/ApplyLabels.graphql @@ -1,12 +1,12 @@ mutation SetLabels($input: SetLabelsInput!) { - setLabels(input: $input) { - ... on SetLabelsSuccess { - labels { - ...LabelFields - } + setLabels(input: $input) { + ... on SetLabelsSuccess { + labels { + ...LabelFields + } + } + ... on SetLabelsError { + errorCodes + } } - ... on SetLabelsError { - errorCodes - } - } } diff --git a/android/Omnivore/app/src/main/graphql/ArchiveSavedItem.graphql b/android/Omnivore/app/src/main/graphql/ArchiveSavedItem.graphql index 7f0bff0a5..7e36a82b9 100644 --- a/android/Omnivore/app/src/main/graphql/ArchiveSavedItem.graphql +++ b/android/Omnivore/app/src/main/graphql/ArchiveSavedItem.graphql @@ -1,12 +1,12 @@ mutation SetLinkArchived($input: ArchiveLinkInput!) { - setLinkArchived(input: $input) { - ... on ArchiveLinkSuccess { - linkId - message + setLinkArchived(input: $input) { + ... on ArchiveLinkSuccess { + linkId + message + } + ... on ArchiveLinkError { + message + errorCodes + } } - ... on ArchiveLinkError { - message - errorCodes - } - } } diff --git a/android/Omnivore/app/src/main/graphql/ArticleContent.graphql b/android/Omnivore/app/src/main/graphql/ArticleContent.graphql index 3070ab101..e33ab6705 100644 --- a/android/Omnivore/app/src/main/graphql/ArticleContent.graphql +++ b/android/Omnivore/app/src/main/graphql/ArticleContent.graphql @@ -1,70 +1,70 @@ query GetArticle($slug: String!) { - article(username: "me", slug: $slug) { - ... on ArticleSuccess { - article { - ...ArticleFields - content - highlights(input: { includeFriends: false }) { - ...HighlightFields + article(username: "me", slug: $slug) { + ... on ArticleSuccess { + article { + ...ArticleFields + content + highlights(input: { includeFriends: false }) { + ...HighlightFields + } + labels { + ...LabelFields + } + } } - labels { - ...LabelFields + ... on ArticleError { + errorCodes } - } } - ... on ArticleError { - errorCodes - } - } } fragment ArticleFields on Article { - id - title - url - author - image - savedAt - createdAt - publishedAt - contentReader - originalArticleUrl - readingProgressPercent - readingProgressAnchorIndex - slug - isArchived - description - linkId - siteName - state - readAt - updatedAt - content - wordsCount + id + title + url + author + image + savedAt + createdAt + publishedAt + contentReader + originalArticleUrl + readingProgressPercent + readingProgressAnchorIndex + slug + isArchived + description + linkId + siteName + state + readAt + updatedAt + content + wordsCount } fragment HighlightFields on Highlight { - id - type - shortId - quote - prefix - suffix - patch - annotation - createdByMe - createdAt - updatedAt - sharedAt - color - highlightPositionPercent - highlightPositionAnchorIndex + id + type + shortId + quote + prefix + suffix + patch + annotation + createdByMe + createdAt + updatedAt + sharedAt + color + highlightPositionPercent + highlightPositionAnchorIndex } fragment LabelFields on Label { - id - name - color - description - createdAt + id + name + color + description + createdAt } diff --git a/android/Omnivore/app/src/main/graphql/CreateHighlight.graphql b/android/Omnivore/app/src/main/graphql/CreateHighlight.graphql index d4417067d..e9717ac6a 100644 --- a/android/Omnivore/app/src/main/graphql/CreateHighlight.graphql +++ b/android/Omnivore/app/src/main/graphql/CreateHighlight.graphql @@ -1,13 +1,13 @@ mutation CreateHighlight($input: CreateHighlightInput!) { - createHighlight(input: $input) { - ... on CreateHighlightSuccess { - highlight { - ...HighlightFields - } - } + createHighlight(input: $input) { + ... on CreateHighlightSuccess { + highlight { + ...HighlightFields + } + } - ... on CreateHighlightError { - errorCodes + ... on CreateHighlightError { + errorCodes + } } - } } diff --git a/android/Omnivore/app/src/main/graphql/CreateLabel.graphql b/android/Omnivore/app/src/main/graphql/CreateLabel.graphql index d3b438b2e..df5638235 100644 --- a/android/Omnivore/app/src/main/graphql/CreateLabel.graphql +++ b/android/Omnivore/app/src/main/graphql/CreateLabel.graphql @@ -1,16 +1,16 @@ mutation CreateLabel($input: CreateLabelInput!) { - createLabel(input: $input) { - ... on CreateLabelSuccess { - label { - id - name - color - description - createdAt - } + createLabel(input: $input) { + ... on CreateLabelSuccess { + label { + id + name + color + description + createdAt + } + } + ... on CreateLabelError { + errorCodes + } } - ... on CreateLabelError { - errorCodes - } - } } diff --git a/android/Omnivore/app/src/main/graphql/DeleteHighlight.graphql b/android/Omnivore/app/src/main/graphql/DeleteHighlight.graphql index e61011a3e..df2c4e8ab 100644 --- a/android/Omnivore/app/src/main/graphql/DeleteHighlight.graphql +++ b/android/Omnivore/app/src/main/graphql/DeleteHighlight.graphql @@ -1,12 +1,12 @@ mutation DeleteHighlight($highlightId: ID!) { - deleteHighlight(highlightId: $highlightId) { - ... on DeleteHighlightSuccess { - highlight { - id - } + deleteHighlight(highlightId: $highlightId) { + ... on DeleteHighlightSuccess { + highlight { + id + } + } + ... on DeleteHighlightError { + errorCodes + } } - ... on DeleteHighlightError { - errorCodes - } - } } diff --git a/android/Omnivore/app/src/main/graphql/DeleteSavedItem.graphql b/android/Omnivore/app/src/main/graphql/DeleteSavedItem.graphql index cabbc6a0d..0327ac373 100644 --- a/android/Omnivore/app/src/main/graphql/DeleteSavedItem.graphql +++ b/android/Omnivore/app/src/main/graphql/DeleteSavedItem.graphql @@ -1,12 +1,12 @@ mutation SetBookmarkArticle($input: SetBookmarkArticleInput!) { - setBookmarkArticle(input: $input) { - ... on SetBookmarkArticleSuccess { - bookmarkedArticle { - id - } + setBookmarkArticle(input: $input) { + ... on SetBookmarkArticleSuccess { + bookmarkedArticle { + id + } + } + ... on SetBookmarkArticleError { + errorCodes + } } - ... on SetBookmarkArticleError { - errorCodes - } - } } diff --git a/android/Omnivore/app/src/main/graphql/Labels.graphql b/android/Omnivore/app/src/main/graphql/Labels.graphql index d61a6c868..cc6aaf202 100644 --- a/android/Omnivore/app/src/main/graphql/Labels.graphql +++ b/android/Omnivore/app/src/main/graphql/Labels.graphql @@ -1,12 +1,12 @@ query GetLabels { - labels { - ... on LabelsSuccess { - labels { - ...LabelFields - } + labels { + ... on LabelsSuccess { + labels { + ...LabelFields + } + } + ... on LabelsError { + errorCodes + } } - ... on LabelsError { - errorCodes - } - } } diff --git a/android/Omnivore/app/src/main/graphql/MergeHighlight.graphql b/android/Omnivore/app/src/main/graphql/MergeHighlight.graphql index 7765de8d7..6bc25fd86 100644 --- a/android/Omnivore/app/src/main/graphql/MergeHighlight.graphql +++ b/android/Omnivore/app/src/main/graphql/MergeHighlight.graphql @@ -1,23 +1,23 @@ mutation MergeHighlight($input: MergeHighlightInput!) { - mergeHighlight(input: $input) { - ... on MergeHighlightSuccess { - highlight { - id - shortId - quote - prefix - suffix - patch - createdAt - updatedAt - annotation - sharedAt - createdByMe - } - overlapHighlightIdList + mergeHighlight(input: $input) { + ... on MergeHighlightSuccess { + highlight { + id + shortId + quote + prefix + suffix + patch + createdAt + updatedAt + annotation + sharedAt + createdByMe + } + overlapHighlightIdList + } + ... on MergeHighlightError { + errorCodes + } } - ... on MergeHighlightError { - errorCodes - } - } } diff --git a/android/Omnivore/app/src/main/graphql/ReadingProgressMutation.graphql b/android/Omnivore/app/src/main/graphql/ReadingProgressMutation.graphql index 80a30eea1..275272894 100644 --- a/android/Omnivore/app/src/main/graphql/ReadingProgressMutation.graphql +++ b/android/Omnivore/app/src/main/graphql/ReadingProgressMutation.graphql @@ -1,14 +1,14 @@ mutation SaveArticleReadingProgress($input: SaveArticleReadingProgressInput!) { - saveArticleReadingProgress(input: $input) { - ... on SaveArticleReadingProgressSuccess { - updatedArticle { - id - readingProgressPercent - readingProgressAnchorIndex - } + saveArticleReadingProgress(input: $input) { + ... on SaveArticleReadingProgressSuccess { + updatedArticle { + id + readingProgressPercent + readingProgressAnchorIndex + } + } + ... on SaveArticleReadingProgressError { + errorCodes + } } - ... on SaveArticleReadingProgressError { - errorCodes - } - } } diff --git a/android/Omnivore/app/src/main/graphql/SaveUrl.graphql b/android/Omnivore/app/src/main/graphql/SaveUrl.graphql index 964e2b332..5f08fc990 100644 --- a/android/Omnivore/app/src/main/graphql/SaveUrl.graphql +++ b/android/Omnivore/app/src/main/graphql/SaveUrl.graphql @@ -1,10 +1,10 @@ mutation SaveUrl($input: SaveUrlInput!) { - saveUrl(input: $input) { - ... on SaveSuccess { - url + saveUrl(input: $input) { + ... on SaveSuccess { + url + } + ... on SaveError { + errorCodes + } } - ... on SaveError { - errorCodes - } - } } diff --git a/android/Omnivore/app/src/main/graphql/Search.graphql b/android/Omnivore/app/src/main/graphql/Search.graphql index e35140fc2..f948558be 100644 --- a/android/Omnivore/app/src/main/graphql/Search.graphql +++ b/android/Omnivore/app/src/main/graphql/Search.graphql @@ -1,55 +1,55 @@ query Search($after: String, $first: Int, $query: String) { - search(first: $first, after: $after, query: $query) { - ... on SearchSuccess { - edges { - cursor - node { - id - title - slug - url - pageType - contentReader - createdAt - isArchived - readingProgressPercent - readingProgressAnchorIndex - author - image - description - publishedAt - ownedByViewer - originalArticleUrl - uploadFileId - labels { - ...LabelFields - } - highlights { - ...HighlightFields - } - pageId - shortId - quote - annotation - state - siteName - subscription - readAt - savedAt - updatedAt - wordsCount + search(first: $first, after: $after, query: $query) { + ... on SearchSuccess { + edges { + cursor + node { + id + title + slug + url + pageType + contentReader + createdAt + isArchived + readingProgressPercent + readingProgressAnchorIndex + author + image + description + publishedAt + ownedByViewer + originalArticleUrl + uploadFileId + labels { + ...LabelFields + } + highlights { + ...HighlightFields + } + pageId + shortId + quote + annotation + state + siteName + subscription + readAt + savedAt + updatedAt + wordsCount + } + } + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + totalCount + } + } + ... on SearchError { + errorCodes } - } - pageInfo { - hasNextPage - hasPreviousPage - startCursor - endCursor - totalCount - } } - ... on SearchError { - errorCodes - } - } } diff --git a/android/Omnivore/app/src/main/graphql/TypeAheadSearch.graphql b/android/Omnivore/app/src/main/graphql/TypeAheadSearch.graphql index 489ec923a..35d8d0ceb 100644 --- a/android/Omnivore/app/src/main/graphql/TypeAheadSearch.graphql +++ b/android/Omnivore/app/src/main/graphql/TypeAheadSearch.graphql @@ -1,15 +1,15 @@ query TypeaheadSearch($query: String!) { - typeaheadSearch(query: $query) { - ... on TypeaheadSearchSuccess { - items { - id - title - slug - siteName - } + typeaheadSearch(query: $query) { + ... on TypeaheadSearchSuccess { + items { + id + title + slug + siteName + } + } + ... on TypeaheadSearchError { + errorCodes + } } - ... on TypeaheadSearchError { - errorCodes - } - } } diff --git a/android/Omnivore/app/src/main/graphql/UpdateHighlight.graphql b/android/Omnivore/app/src/main/graphql/UpdateHighlight.graphql index 18f93dcea..1a2b69eb9 100644 --- a/android/Omnivore/app/src/main/graphql/UpdateHighlight.graphql +++ b/android/Omnivore/app/src/main/graphql/UpdateHighlight.graphql @@ -1,13 +1,13 @@ mutation UpdateHighlight($input: UpdateHighlightInput!) { - updateHighlight(input: $input) { - ... on UpdateHighlightSuccess { - highlight { - id - } - } + updateHighlight(input: $input) { + ... on UpdateHighlightSuccess { + highlight { + id + } + } - ... on UpdateHighlightError { - errorCodes + ... on UpdateHighlightError { + errorCodes + } } - } } diff --git a/android/Omnivore/app/src/main/graphql/UpdatePage.graphql b/android/Omnivore/app/src/main/graphql/UpdatePage.graphql index acb8f248f..3aca4ae64 100644 --- a/android/Omnivore/app/src/main/graphql/UpdatePage.graphql +++ b/android/Omnivore/app/src/main/graphql/UpdatePage.graphql @@ -1,15 +1,15 @@ mutation UpdatePage($input: UpdatePageInput!) { - updatePage(input: $input) { - ... on UpdatePageSuccess { - updatedPage { - title - author - description - } - } + updatePage(input: $input) { + ... on UpdatePageSuccess { + updatedPage { + title + author + description + } + } - ... on UpdatePageError { - errorCodes + ... on UpdatePageError { + errorCodes + } } - } } diff --git a/android/Omnivore/app/src/main/graphql/UpdatesSince.graphql b/android/Omnivore/app/src/main/graphql/UpdatesSince.graphql index 8a2c29013..97148a176 100644 --- a/android/Omnivore/app/src/main/graphql/UpdatesSince.graphql +++ b/android/Omnivore/app/src/main/graphql/UpdatesSince.graphql @@ -1,63 +1,63 @@ query UpdatesSince( - $folder: String - $after: String - $first: Int - $since: Date! + $folder: String + $after: String + $first: Int + $since: Date! ) { - updatesSince(after: $after, first: $first, folder: $folder, since: $since) { - ... on UpdatesSinceSuccess { - edges { - cursor - itemID - updateReason - node { - id - title - slug - url - pageType - contentReader - createdAt - isArchived - readingProgressPercent - readingProgressAnchorIndex - author - image - description - publishedAt - ownedByViewer - originalArticleUrl - uploadFileId - labels { - ...LabelFields - } - highlights { - ...HighlightFields - } - pageId - shortId - quote - annotation - state - siteName - subscription - readAt - savedAt - updatedAt - language - wordsCount + updatesSince(after: $after, first: $first, folder: $folder, since: $since) { + ... on UpdatesSinceSuccess { + edges { + cursor + itemID + updateReason + node { + id + title + slug + url + pageType + contentReader + createdAt + isArchived + readingProgressPercent + readingProgressAnchorIndex + author + image + description + publishedAt + ownedByViewer + originalArticleUrl + uploadFileId + labels { + ...LabelFields + } + highlights { + ...HighlightFields + } + pageId + shortId + quote + annotation + state + siteName + subscription + readAt + savedAt + updatedAt + language + wordsCount + } + } + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + totalCount + } + } + ... on UpdatesSinceError { + errorCodes } - } - pageInfo { - hasNextPage - hasPreviousPage - startCursor - endCursor - totalCount - } } - ... on UpdatesSinceError { - errorCodes - } - } } diff --git a/android/Omnivore/app/src/main/graphql/ValidateUsername.graphql b/android/Omnivore/app/src/main/graphql/ValidateUsername.graphql index 79938a855..47aafc8a1 100644 --- a/android/Omnivore/app/src/main/graphql/ValidateUsername.graphql +++ b/android/Omnivore/app/src/main/graphql/ValidateUsername.graphql @@ -1,3 +1,3 @@ query ValidateUsername($username: String!) { - validateUsername(username: $username) + validateUsername(username: $username) } diff --git a/android/Omnivore/app/src/main/graphql/Viewer.graphql b/android/Omnivore/app/src/main/graphql/Viewer.graphql index 1430d4e6f..05c493af2 100644 --- a/android/Omnivore/app/src/main/graphql/Viewer.graphql +++ b/android/Omnivore/app/src/main/graphql/Viewer.graphql @@ -1,14 +1,14 @@ query Viewer { - me { - id - name - isFullUser - intercomHash - profile { - id - username - pictureUrl - bio + me { + id + name + isFullUser + intercomHash + profile { + id + username + pictureUrl + bio + } } - } } diff --git a/android/Omnivore/app/src/main/graphql/schema.graphqls b/android/Omnivore/app/src/main/graphql/schema.graphqls index 5c2431d8a..9bf3f87e6 100644 --- a/android/Omnivore/app/src/main/graphql/schema.graphqls +++ b/android/Omnivore/app/src/main/graphql/schema.graphqls @@ -1,2823 +1,2823 @@ directive @sanitize(allowedTags: [String], maxLength: Int, minLength: Int, pattern: String) on INPUT_FIELD_DEFINITION type AddPopularReadError { - errorCodes: [AddPopularReadErrorCode!]! + errorCodes: [AddPopularReadErrorCode!]! } enum AddPopularReadErrorCode { - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED } union AddPopularReadResult = AddPopularReadError | AddPopularReadSuccess type AddPopularReadSuccess { - pageId: String! + pageId: String! } type ApiKey { - createdAt: Date! - expiresAt: Date! - id: ID! - key: String - name: String! - scopes: [String!] - usedAt: Date + createdAt: Date! + expiresAt: Date! + id: ID! + key: String + name: String! + scopes: [String!] + usedAt: Date } type ApiKeysError { - errorCodes: [ApiKeysErrorCode!]! + errorCodes: [ApiKeysErrorCode!]! } enum ApiKeysErrorCode { - BAD_REQUEST - UNAUTHORIZED + BAD_REQUEST + UNAUTHORIZED } union ApiKeysResult = ApiKeysError | ApiKeysSuccess type ApiKeysSuccess { - apiKeys: [ApiKey!]! + apiKeys: [ApiKey!]! } type ArchiveLinkError { - errorCodes: [ArchiveLinkErrorCode!]! - message: String! + errorCodes: [ArchiveLinkErrorCode!]! + message: String! } enum ArchiveLinkErrorCode { - BAD_REQUEST - UNAUTHORIZED + BAD_REQUEST + UNAUTHORIZED } input ArchiveLinkInput { - archived: Boolean! - linkId: ID! + archived: Boolean! + linkId: ID! } union ArchiveLinkResult = ArchiveLinkError | ArchiveLinkSuccess type ArchiveLinkSuccess { - linkId: String! - message: String! + linkId: String! + message: String! } type Article { - author: String - content: String! - contentReader: ContentReader! - createdAt: Date! - description: String - folder: String! - hasContent: Boolean - hash: String! - highlights(input: ArticleHighlightsInput): [Highlight!]! - id: ID! - image: String - isArchived: Boolean! - labels: [Label!] - language: String - linkId: ID - originalArticleUrl: String - originalHtml: String - pageType: PageType - postedByViewer: Boolean - publishedAt: Date - readAt: Date - readingProgressAnchorIndex: Int! - readingProgressPercent: Float! - readingProgressTopPercent: Float - recommendations: [Recommendation!] - savedAt: Date! - savedByViewer: Boolean - shareInfo: LinkShareInfo - sharedComment: String - siteIcon: String - siteName: String - slug: String! - state: ArticleSavingRequestStatus - subscription: String - title: String! - unsubHttpUrl: String - unsubMailTo: String - updatedAt: Date - uploadFileId: ID - url: String! - wordsCount: Int + author: String + content: String! + contentReader: ContentReader! + createdAt: Date! + description: String + folder: String! + hasContent: Boolean + hash: String! + highlights(input: ArticleHighlightsInput): [Highlight!]! + id: ID! + image: String + isArchived: Boolean! + labels: [Label!] + language: String + linkId: ID + originalArticleUrl: String + originalHtml: String + pageType: PageType + postedByViewer: Boolean + publishedAt: Date + readAt: Date + readingProgressAnchorIndex: Int! + readingProgressPercent: Float! + readingProgressTopPercent: Float + recommendations: [Recommendation!] + savedAt: Date! + savedByViewer: Boolean + shareInfo: LinkShareInfo + sharedComment: String + siteIcon: String + siteName: String + slug: String! + state: ArticleSavingRequestStatus + subscription: String + title: String! + unsubHttpUrl: String + unsubMailTo: String + updatedAt: Date + uploadFileId: ID + url: String! + wordsCount: Int } type ArticleEdge { - cursor: String! - node: Article! + cursor: String! + node: Article! } type ArticleError { - errorCodes: [ArticleErrorCode!]! + errorCodes: [ArticleErrorCode!]! } enum ArticleErrorCode { - BAD_DATA - NOT_FOUND - UNAUTHORIZED + BAD_DATA + NOT_FOUND + UNAUTHORIZED } input ArticleHighlightsInput { - includeFriends: Boolean + includeFriends: Boolean } union ArticleResult = ArticleError | ArticleSuccess type ArticleSavingRequest { - article: Article @deprecated(reason: "article has been replaced with slug") - createdAt: Date! - errorCode: CreateArticleErrorCode - id: ID! - slug: String! - status: ArticleSavingRequestStatus! - updatedAt: Date - url: String! - user: User! - userId: ID! @deprecated(reason: "userId has been replaced with user") + article: Article @deprecated(reason: "article has been replaced with slug") + createdAt: Date! + errorCode: CreateArticleErrorCode + id: ID! + slug: String! + status: ArticleSavingRequestStatus! + updatedAt: Date + url: String! + user: User! + userId: ID! @deprecated(reason: "userId has been replaced with user") } type ArticleSavingRequestError { - errorCodes: [ArticleSavingRequestErrorCode!]! + errorCodes: [ArticleSavingRequestErrorCode!]! } enum ArticleSavingRequestErrorCode { - BAD_DATA - NOT_FOUND - UNAUTHORIZED + BAD_DATA + NOT_FOUND + UNAUTHORIZED } union ArticleSavingRequestResult = ArticleSavingRequestError | ArticleSavingRequestSuccess enum ArticleSavingRequestStatus { - ARCHIVED - CONTENT_NOT_FETCHED - DELETED - FAILED - PROCESSING - SUCCEEDED + ARCHIVED + CONTENT_NOT_FETCHED + DELETED + FAILED + PROCESSING + SUCCEEDED } type ArticleSavingRequestSuccess { - articleSavingRequest: ArticleSavingRequest! + articleSavingRequest: ArticleSavingRequest! } type ArticleSuccess { - article: Article! + article: Article! } type ArticlesError { - errorCodes: [ArticlesErrorCode!]! + errorCodes: [ArticlesErrorCode!]! } enum ArticlesErrorCode { - UNAUTHORIZED + UNAUTHORIZED } union ArticlesResult = ArticlesError | ArticlesSuccess type ArticlesSuccess { - edges: [ArticleEdge!]! - pageInfo: PageInfo! + edges: [ArticleEdge!]! + pageInfo: PageInfo! } type BulkActionError { - errorCodes: [BulkActionErrorCode!]! + errorCodes: [BulkActionErrorCode!]! } enum BulkActionErrorCode { - BAD_REQUEST - UNAUTHORIZED + BAD_REQUEST + UNAUTHORIZED } union BulkActionResult = BulkActionError | BulkActionSuccess type BulkActionSuccess { - success: Boolean! + success: Boolean! } enum BulkActionType { - ADD_LABELS - ARCHIVE - DELETE - MARK_AS_READ - MOVE_TO_FOLDER + ADD_LABELS + ARCHIVE + DELETE + MARK_AS_READ + MOVE_TO_FOLDER } enum ContentReader { - EPUB - PDF - WEB + EPUB + PDF + WEB } type CreateArticleError { - errorCodes: [CreateArticleErrorCode!]! + errorCodes: [CreateArticleErrorCode!]! } enum CreateArticleErrorCode { - ELASTIC_ERROR - NOT_ALLOWED_TO_PARSE - PAYLOAD_TOO_LARGE - UNABLE_TO_FETCH - UNABLE_TO_PARSE - UNAUTHORIZED - UPLOAD_FILE_MISSING + ELASTIC_ERROR + NOT_ALLOWED_TO_PARSE + PAYLOAD_TOO_LARGE + UNABLE_TO_FETCH + UNABLE_TO_PARSE + UNAUTHORIZED + UPLOAD_FILE_MISSING } input CreateArticleInput { - articleSavingRequestId: ID - folder: String - labels: [CreateLabelInput!] - preparedDocument: PreparedDocumentInput - publishedAt: Date - rssFeedUrl: String - savedAt: Date - skipParsing: Boolean - source: String - state: ArticleSavingRequestStatus - uploadFileId: ID - url: String! + articleSavingRequestId: ID + folder: String + labels: [CreateLabelInput!] + preparedDocument: PreparedDocumentInput + publishedAt: Date + rssFeedUrl: String + savedAt: Date + skipParsing: Boolean + source: String + state: ArticleSavingRequestStatus + uploadFileId: ID + url: String! } union CreateArticleResult = CreateArticleError | CreateArticleSuccess type CreateArticleSavingRequestError { - errorCodes: [CreateArticleSavingRequestErrorCode!]! + errorCodes: [CreateArticleSavingRequestErrorCode!]! } enum CreateArticleSavingRequestErrorCode { - BAD_DATA - UNAUTHORIZED + BAD_DATA + UNAUTHORIZED } input CreateArticleSavingRequestInput { - url: String! + url: String! } union CreateArticleSavingRequestResult = CreateArticleSavingRequestError | CreateArticleSavingRequestSuccess type CreateArticleSavingRequestSuccess { - articleSavingRequest: ArticleSavingRequest! + articleSavingRequest: ArticleSavingRequest! } type CreateArticleSuccess { - created: Boolean! - createdArticle: Article! - user: User! + created: Boolean! + createdArticle: Article! + user: User! } type CreateGroupError { - errorCodes: [CreateGroupErrorCode!]! + errorCodes: [CreateGroupErrorCode!]! } enum CreateGroupErrorCode { - BAD_REQUEST - UNAUTHORIZED + BAD_REQUEST + UNAUTHORIZED } input CreateGroupInput { - description: String - expiresInDays: Int - maxMembers: Int - name: String! - onlyAdminCanPost: Boolean - onlyAdminCanSeeMembers: Boolean - topics: [String!] + description: String + expiresInDays: Int + maxMembers: Int + name: String! + onlyAdminCanPost: Boolean + onlyAdminCanSeeMembers: Boolean + topics: [String!] } union CreateGroupResult = CreateGroupError | CreateGroupSuccess type CreateGroupSuccess { - group: RecommendationGroup! + group: RecommendationGroup! } type CreateHighlightError { - errorCodes: [CreateHighlightErrorCode!]! + errorCodes: [CreateHighlightErrorCode!]! } enum CreateHighlightErrorCode { - ALREADY_EXISTS - BAD_DATA - FORBIDDEN - NOT_FOUND - UNAUTHORIZED + ALREADY_EXISTS + BAD_DATA + FORBIDDEN + NOT_FOUND + UNAUTHORIZED } input CreateHighlightInput { - annotation: String - articleId: ID! - color: String - highlightPositionAnchorIndex: Int - highlightPositionPercent: Float - html: String - id: ID! - patch: String - prefix: String - quote: String - sharedAt: Date - shortId: String! - suffix: String - type: HighlightType + annotation: String + articleId: ID! + color: String + highlightPositionAnchorIndex: Int + highlightPositionPercent: Float + html: String + id: ID! + patch: String + prefix: String + quote: String + sharedAt: Date + shortId: String! + suffix: String + type: HighlightType } type CreateHighlightReplyError { - errorCodes: [CreateHighlightReplyErrorCode!]! + errorCodes: [CreateHighlightReplyErrorCode!]! } enum CreateHighlightReplyErrorCode { - EMPTY_ANNOTATION - FORBIDDEN - NOT_FOUND - UNAUTHORIZED + EMPTY_ANNOTATION + FORBIDDEN + NOT_FOUND + UNAUTHORIZED } input CreateHighlightReplyInput { - highlightId: ID! - text: String! + highlightId: ID! + text: String! } union CreateHighlightReplyResult = CreateHighlightReplyError | CreateHighlightReplySuccess type CreateHighlightReplySuccess { - highlightReply: HighlightReply! + highlightReply: HighlightReply! } union CreateHighlightResult = CreateHighlightError | CreateHighlightSuccess type CreateHighlightSuccess { - highlight: Highlight! + highlight: Highlight! } type CreateLabelError { - errorCodes: [CreateLabelErrorCode!]! + errorCodes: [CreateLabelErrorCode!]! } enum CreateLabelErrorCode { - BAD_REQUEST - LABEL_ALREADY_EXISTS - NOT_FOUND - UNAUTHORIZED + BAD_REQUEST + LABEL_ALREADY_EXISTS + NOT_FOUND + UNAUTHORIZED } input CreateLabelInput { - color: String - description: String - name: String! + color: String + description: String + name: String! } union CreateLabelResult = CreateLabelError | CreateLabelSuccess type CreateLabelSuccess { - label: Label! + label: Label! } type CreateNewsletterEmailError { - errorCodes: [CreateNewsletterEmailErrorCode!]! + errorCodes: [CreateNewsletterEmailErrorCode!]! } enum CreateNewsletterEmailErrorCode { - BAD_REQUEST - UNAUTHORIZED + BAD_REQUEST + UNAUTHORIZED } input CreateNewsletterEmailInput { - description: String - folder: String - name: String + description: String + folder: String + name: String } union CreateNewsletterEmailResult = CreateNewsletterEmailError | CreateNewsletterEmailSuccess type CreateNewsletterEmailSuccess { - newsletterEmail: NewsletterEmail! + newsletterEmail: NewsletterEmail! } type CreateReactionError { - errorCodes: [CreateReactionErrorCode!]! + errorCodes: [CreateReactionErrorCode!]! } enum CreateReactionErrorCode { - BAD_CODE - BAD_TARGET - FORBIDDEN - NOT_FOUND - UNAUTHORIZED + BAD_CODE + BAD_TARGET + FORBIDDEN + NOT_FOUND + UNAUTHORIZED } input CreateReactionInput { - code: ReactionType! - highlightId: ID - userArticleId: ID + code: ReactionType! + highlightId: ID + userArticleId: ID } union CreateReactionResult = CreateReactionError | CreateReactionSuccess type CreateReactionSuccess { - reaction: Reaction! + reaction: Reaction! } type CreateReminderError { - errorCodes: [CreateReminderErrorCode!]! + errorCodes: [CreateReminderErrorCode!]! } enum CreateReminderErrorCode { - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED } input CreateReminderInput { - archiveUntil: Boolean! - clientRequestId: ID - linkId: ID - remindAt: Date! - sendNotification: Boolean! + archiveUntil: Boolean! + clientRequestId: ID + linkId: ID + remindAt: Date! + sendNotification: Boolean! } union CreateReminderResult = CreateReminderError | CreateReminderSuccess type CreateReminderSuccess { - reminder: Reminder! + reminder: Reminder! } scalar Date type DeleteAccountError { - errorCodes: [DeleteAccountErrorCode!]! + errorCodes: [DeleteAccountErrorCode!]! } enum DeleteAccountErrorCode { - FORBIDDEN - UNAUTHORIZED - USER_NOT_FOUND + FORBIDDEN + UNAUTHORIZED + USER_NOT_FOUND } union DeleteAccountResult = DeleteAccountError | DeleteAccountSuccess type DeleteAccountSuccess { - userID: ID! + userID: ID! } type DeleteFilterError { - errorCodes: [DeleteFilterErrorCode!]! + errorCodes: [DeleteFilterErrorCode!]! } enum DeleteFilterErrorCode { - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED } union DeleteFilterResult = DeleteFilterError | DeleteFilterSuccess type DeleteFilterSuccess { - filter: Filter! + filter: Filter! } type DeleteHighlightError { - errorCodes: [DeleteHighlightErrorCode!]! + errorCodes: [DeleteHighlightErrorCode!]! } enum DeleteHighlightErrorCode { - FORBIDDEN - NOT_FOUND - UNAUTHORIZED + FORBIDDEN + NOT_FOUND + UNAUTHORIZED } type DeleteHighlightReplyError { - errorCodes: [DeleteHighlightReplyErrorCode!]! + errorCodes: [DeleteHighlightReplyErrorCode!]! } enum DeleteHighlightReplyErrorCode { - FORBIDDEN - NOT_FOUND - UNAUTHORIZED + FORBIDDEN + NOT_FOUND + UNAUTHORIZED } union DeleteHighlightReplyResult = DeleteHighlightReplyError | DeleteHighlightReplySuccess type DeleteHighlightReplySuccess { - highlightReply: HighlightReply! + highlightReply: HighlightReply! } union DeleteHighlightResult = DeleteHighlightError | DeleteHighlightSuccess type DeleteHighlightSuccess { - highlight: Highlight! + highlight: Highlight! } type DeleteIntegrationError { - errorCodes: [DeleteIntegrationErrorCode!]! + errorCodes: [DeleteIntegrationErrorCode!]! } enum DeleteIntegrationErrorCode { - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED } union DeleteIntegrationResult = DeleteIntegrationError | DeleteIntegrationSuccess type DeleteIntegrationSuccess { - integration: Integration! + integration: Integration! } type DeleteLabelError { - errorCodes: [DeleteLabelErrorCode!]! + errorCodes: [DeleteLabelErrorCode!]! } enum DeleteLabelErrorCode { - BAD_REQUEST - FORBIDDEN - NOT_FOUND - UNAUTHORIZED + BAD_REQUEST + FORBIDDEN + NOT_FOUND + UNAUTHORIZED } union DeleteLabelResult = DeleteLabelError | DeleteLabelSuccess type DeleteLabelSuccess { - label: Label! + label: Label! } type DeleteNewsletterEmailError { - errorCodes: [DeleteNewsletterEmailErrorCode!]! + errorCodes: [DeleteNewsletterEmailErrorCode!]! } enum DeleteNewsletterEmailErrorCode { - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED } union DeleteNewsletterEmailResult = DeleteNewsletterEmailError | DeleteNewsletterEmailSuccess type DeleteNewsletterEmailSuccess { - newsletterEmail: NewsletterEmail! + newsletterEmail: NewsletterEmail! } type DeleteReactionError { - errorCodes: [DeleteReactionErrorCode!]! + errorCodes: [DeleteReactionErrorCode!]! } enum DeleteReactionErrorCode { - FORBIDDEN - NOT_FOUND - UNAUTHORIZED + FORBIDDEN + NOT_FOUND + UNAUTHORIZED } union DeleteReactionResult = DeleteReactionError | DeleteReactionSuccess type DeleteReactionSuccess { - reaction: Reaction! + reaction: Reaction! } type DeleteReminderError { - errorCodes: [DeleteReminderErrorCode!]! + errorCodes: [DeleteReminderErrorCode!]! } enum DeleteReminderErrorCode { - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED } union DeleteReminderResult = DeleteReminderError | DeleteReminderSuccess type DeleteReminderSuccess { - reminder: Reminder! + reminder: Reminder! } type DeleteRuleError { - errorCodes: [DeleteRuleErrorCode!]! + errorCodes: [DeleteRuleErrorCode!]! } enum DeleteRuleErrorCode { - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED } union DeleteRuleResult = DeleteRuleError | DeleteRuleSuccess type DeleteRuleSuccess { - rule: Rule! + rule: Rule! } type DeleteWebhookError { - errorCodes: [DeleteWebhookErrorCode!]! + errorCodes: [DeleteWebhookErrorCode!]! } enum DeleteWebhookErrorCode { - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED } union DeleteWebhookResult = DeleteWebhookError | DeleteWebhookSuccess type DeleteWebhookSuccess { - webhook: Webhook! + webhook: Webhook! } type DeviceToken { - createdAt: Date! - id: ID! - token: String! + createdAt: Date! + id: ID! + token: String! } type DeviceTokensError { - errorCodes: [DeviceTokensErrorCode!]! + errorCodes: [DeviceTokensErrorCode!]! } enum DeviceTokensErrorCode { - BAD_REQUEST - UNAUTHORIZED + BAD_REQUEST + UNAUTHORIZED } union DeviceTokensResult = DeviceTokensError | DeviceTokensSuccess type DeviceTokensSuccess { - deviceTokens: [DeviceToken!]! + deviceTokens: [DeviceToken!]! } type EmptyTrashError { - errorCodes: [EmptyTrashErrorCode!]! + errorCodes: [EmptyTrashErrorCode!]! } enum EmptyTrashErrorCode { - UNAUTHORIZED + UNAUTHORIZED } union EmptyTrashResult = EmptyTrashError | EmptyTrashSuccess type EmptyTrashSuccess { - success: Boolean + success: Boolean } type Feature { - createdAt: Date! - expiresAt: Date - grantedAt: Date - id: ID! - name: String! - token: String! - updatedAt: Date + createdAt: Date! + expiresAt: Date + grantedAt: Date + id: ID! + name: String! + token: String! + updatedAt: Date } type Feed { - author: String - createdAt: Date - description: String - id: ID - image: String - publishedAt: Date - title: String! - type: String - updatedAt: Date - url: String! + author: String + createdAt: Date + description: String + id: ID + image: String + publishedAt: Date + title: String! + type: String + updatedAt: Date + url: String! } type FeedArticle { - annotationsCount: Int - article: Article! - highlight: Highlight - highlightsCount: Int - id: ID! - reactions: [Reaction!]! - sharedAt: Date! - sharedBy: User! - sharedComment: String - sharedWithHighlights: Boolean + annotationsCount: Int + article: Article! + highlight: Highlight + highlightsCount: Int + id: ID! + reactions: [Reaction!]! + sharedAt: Date! + sharedBy: User! + sharedComment: String + sharedWithHighlights: Boolean } type FeedArticleEdge { - cursor: String! - node: FeedArticle! + cursor: String! + node: FeedArticle! } type FeedArticlesError { - errorCodes: [FeedArticlesErrorCode!]! + errorCodes: [FeedArticlesErrorCode!]! } enum FeedArticlesErrorCode { - UNAUTHORIZED + UNAUTHORIZED } union FeedArticlesResult = FeedArticlesError | FeedArticlesSuccess type FeedArticlesSuccess { - edges: [FeedArticleEdge!]! - pageInfo: PageInfo! + edges: [FeedArticleEdge!]! + pageInfo: PageInfo! } type FeedEdge { - cursor: String! - node: Feed! + cursor: String! + node: Feed! } type FeedsError { - errorCodes: [FeedsErrorCode!]! + errorCodes: [FeedsErrorCode!]! } enum FeedsErrorCode { - BAD_REQUEST - UNAUTHORIZED + BAD_REQUEST + UNAUTHORIZED } input FeedsInput { - after: String - first: Int - query: String - sort: SortParams + after: String + first: Int + query: String + sort: SortParams } union FeedsResult = FeedsError | FeedsSuccess type FeedsSuccess { - edges: [FeedEdge!]! - pageInfo: PageInfo! + edges: [FeedEdge!]! + pageInfo: PageInfo! } type FetchContentError { - errorCodes: [FetchContentErrorCode!]! + errorCodes: [FetchContentErrorCode!]! } enum FetchContentErrorCode { - BAD_REQUEST - UNAUTHORIZED + BAD_REQUEST + UNAUTHORIZED } union FetchContentResult = FetchContentError | FetchContentSuccess type FetchContentSuccess { - success: Boolean! + success: Boolean! } type Filter { - category: String - createdAt: Date! - defaultFilter: Boolean - description: String - filter: String! - folder: String - id: ID! - name: String! - position: Int! - updatedAt: Date - visible: Boolean + category: String + createdAt: Date! + defaultFilter: Boolean + description: String + filter: String! + folder: String + id: ID! + name: String! + position: Int! + updatedAt: Date + visible: Boolean } type FiltersError { - errorCodes: [FiltersErrorCode!]! + errorCodes: [FiltersErrorCode!]! } enum FiltersErrorCode { - BAD_REQUEST - UNAUTHORIZED + BAD_REQUEST + UNAUTHORIZED } union FiltersResult = FiltersError | FiltersSuccess type FiltersSuccess { - filters: [Filter!]! + filters: [Filter!]! } type GenerateApiKeyError { - errorCodes: [GenerateApiKeyErrorCode!]! + errorCodes: [GenerateApiKeyErrorCode!]! } enum GenerateApiKeyErrorCode { - ALREADY_EXISTS - BAD_REQUEST - UNAUTHORIZED + ALREADY_EXISTS + BAD_REQUEST + UNAUTHORIZED } input GenerateApiKeyInput { - expiresAt: Date! - name: String! - scopes: [String!] + expiresAt: Date! + name: String! + scopes: [String!] } union GenerateApiKeyResult = GenerateApiKeyError | GenerateApiKeySuccess type GenerateApiKeySuccess { - apiKey: ApiKey! + apiKey: ApiKey! } type GetFollowersError { - errorCodes: [GetFollowersErrorCode!]! + errorCodes: [GetFollowersErrorCode!]! } enum GetFollowersErrorCode { - UNAUTHORIZED + UNAUTHORIZED } union GetFollowersResult = GetFollowersError | GetFollowersSuccess type GetFollowersSuccess { - followers: [User!]! + followers: [User!]! } type GetFollowingError { - errorCodes: [GetFollowingErrorCode!]! + errorCodes: [GetFollowingErrorCode!]! } enum GetFollowingErrorCode { - UNAUTHORIZED + UNAUTHORIZED } union GetFollowingResult = GetFollowingError | GetFollowingSuccess type GetFollowingSuccess { - following: [User!]! + following: [User!]! } type GetUserPersonalizationError { - errorCodes: [GetUserPersonalizationErrorCode!]! + errorCodes: [GetUserPersonalizationErrorCode!]! } enum GetUserPersonalizationErrorCode { - UNAUTHORIZED + UNAUTHORIZED } union GetUserPersonalizationResult = GetUserPersonalizationError | GetUserPersonalizationSuccess type GetUserPersonalizationSuccess { - userPersonalization: UserPersonalization + userPersonalization: UserPersonalization } input GoogleLoginInput { - email: String! - secret: String! + email: String! + secret: String! } type GoogleSignupError { - errorCodes: [SignupErrorCode]! + errorCodes: [SignupErrorCode]! } input GoogleSignupInput { - bio: String - email: String! - name: String! - pictureUrl: String! - secret: String! - sourceUserId: String! - username: String! + bio: String + email: String! + name: String! + pictureUrl: String! + secret: String! + sourceUserId: String! + username: String! } union GoogleSignupResult = GoogleSignupError | GoogleSignupSuccess type GoogleSignupSuccess { - me: User! + me: User! } type GroupsError { - errorCodes: [GroupsErrorCode!]! + errorCodes: [GroupsErrorCode!]! } enum GroupsErrorCode { - BAD_REQUEST - UNAUTHORIZED + BAD_REQUEST + UNAUTHORIZED } union GroupsResult = GroupsError | GroupsSuccess type GroupsSuccess { - groups: [RecommendationGroup!]! + groups: [RecommendationGroup!]! } type Highlight { - annotation: String - color: String - createdAt: Date! - createdByMe: Boolean! - highlightPositionAnchorIndex: Int - highlightPositionPercent: Float - html: String - id: ID! - labels: [Label!] - patch: String - prefix: String - quote: String - reactions: [Reaction!]! - replies: [HighlightReply!]! - sharedAt: Date - shortId: String! - suffix: String - type: HighlightType! - updatedAt: Date - user: User! + annotation: String + color: String + createdAt: Date! + createdByMe: Boolean! + highlightPositionAnchorIndex: Int + highlightPositionPercent: Float + html: String + id: ID! + labels: [Label!] + patch: String + prefix: String + quote: String + reactions: [Reaction!]! + replies: [HighlightReply!]! + sharedAt: Date + shortId: String! + suffix: String + type: HighlightType! + updatedAt: Date + user: User! } type HighlightReply { - createdAt: Date! - highlight: Highlight! - id: ID! - text: String! - updatedAt: Date - user: User! + createdAt: Date! + highlight: Highlight! + id: ID! + text: String! + updatedAt: Date + user: User! } type HighlightStats { - highlightCount: Int! + highlightCount: Int! } enum HighlightType { - HIGHLIGHT - NOTE - REDACTION + HIGHLIGHT + NOTE + REDACTION } type ImportFromIntegrationError { - errorCodes: [ImportFromIntegrationErrorCode!]! + errorCodes: [ImportFromIntegrationErrorCode!]! } enum ImportFromIntegrationErrorCode { - BAD_REQUEST - UNAUTHORIZED + BAD_REQUEST + UNAUTHORIZED } union ImportFromIntegrationResult = ImportFromIntegrationError | ImportFromIntegrationSuccess type ImportFromIntegrationSuccess { - success: Boolean! + success: Boolean! } enum ImportItemState { - ALL - ARCHIVED - UNARCHIVED - UNREAD + ALL + ARCHIVED + UNARCHIVED + UNREAD } type Integration { - createdAt: Date! - enabled: Boolean! - id: ID! - name: String! - taskName: String - token: String! - type: IntegrationType! - updatedAt: Date + createdAt: Date! + enabled: Boolean! + id: ID! + name: String! + taskName: String + token: String! + type: IntegrationType! + updatedAt: Date } enum IntegrationType { - EXPORT - IMPORT + EXPORT + IMPORT } type IntegrationsError { - errorCodes: [IntegrationsErrorCode!]! + errorCodes: [IntegrationsErrorCode!]! } enum IntegrationsErrorCode { - BAD_REQUEST - UNAUTHORIZED + BAD_REQUEST + UNAUTHORIZED } union IntegrationsResult = IntegrationsError | IntegrationsSuccess type IntegrationsSuccess { - integrations: [Integration!]! + integrations: [Integration!]! } scalar JSON type JoinGroupError { - errorCodes: [JoinGroupErrorCode!]! + errorCodes: [JoinGroupErrorCode!]! } enum JoinGroupErrorCode { - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED } union JoinGroupResult = JoinGroupError | JoinGroupSuccess type JoinGroupSuccess { - group: RecommendationGroup! + group: RecommendationGroup! } type Label { - color: String! - createdAt: Date - description: String - id: ID! - internal: Boolean - name: String! - position: Int - source: String + color: String! + createdAt: Date + description: String + id: ID! + internal: Boolean + name: String! + position: Int + source: String } type LabelsError { - errorCodes: [LabelsErrorCode!]! + errorCodes: [LabelsErrorCode!]! } enum LabelsErrorCode { - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED } union LabelsResult = LabelsError | LabelsSuccess type LabelsSuccess { - labels: [Label!]! + labels: [Label!]! } type LeaveGroupError { - errorCodes: [LeaveGroupErrorCode!]! + errorCodes: [LeaveGroupErrorCode!]! } enum LeaveGroupErrorCode { - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED } union LeaveGroupResult = LeaveGroupError | LeaveGroupSuccess type LeaveGroupSuccess { - success: Boolean! + success: Boolean! } type Link { - highlightStats: HighlightStats! - id: ID! - page: Page! - postedByViewer: Boolean! - readState: ReadState! - savedAt: Date! - savedBy: User! - savedByViewer: Boolean! - shareInfo: LinkShareInfo! - shareStats: ShareStats! - slug: String! - updatedAt: Date - url: String! + highlightStats: HighlightStats! + id: ID! + page: Page! + postedByViewer: Boolean! + readState: ReadState! + savedAt: Date! + savedBy: User! + savedByViewer: Boolean! + shareInfo: LinkShareInfo! + shareStats: ShareStats! + slug: String! + updatedAt: Date + url: String! } type LinkShareInfo { - description: String! - imageUrl: String! - title: String! + description: String! + imageUrl: String! + title: String! } type LogOutError { - errorCodes: [LogOutErrorCode!]! + errorCodes: [LogOutErrorCode!]! } enum LogOutErrorCode { - LOG_OUT_FAILED + LOG_OUT_FAILED } union LogOutResult = LogOutError | LogOutSuccess type LogOutSuccess { - message: String + message: String } type LoginError { - errorCodes: [LoginErrorCode!]! + errorCodes: [LoginErrorCode!]! } enum LoginErrorCode { - ACCESS_DENIED - AUTH_FAILED - INVALID_CREDENTIALS - USER_ALREADY_EXISTS - USER_NOT_FOUND - WRONG_SOURCE + ACCESS_DENIED + AUTH_FAILED + INVALID_CREDENTIALS + USER_ALREADY_EXISTS + USER_NOT_FOUND + WRONG_SOURCE } union LoginResult = LoginError | LoginSuccess type LoginSuccess { - me: User! + me: User! } type MarkEmailAsItemError { - errorCodes: [MarkEmailAsItemErrorCode!]! + errorCodes: [MarkEmailAsItemErrorCode!]! } enum MarkEmailAsItemErrorCode { - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED } union MarkEmailAsItemResult = MarkEmailAsItemError | MarkEmailAsItemSuccess type MarkEmailAsItemSuccess { - success: Boolean! + success: Boolean! } type MergeHighlightError { - errorCodes: [MergeHighlightErrorCode!]! + errorCodes: [MergeHighlightErrorCode!]! } enum MergeHighlightErrorCode { - ALREADY_EXISTS - BAD_DATA - FORBIDDEN - NOT_FOUND - UNAUTHORIZED + ALREADY_EXISTS + BAD_DATA + FORBIDDEN + NOT_FOUND + UNAUTHORIZED } input MergeHighlightInput { - annotation: String - articleId: ID! - color: String - highlightPositionAnchorIndex: Int - highlightPositionPercent: Float - html: String - id: ID! - overlapHighlightIdList: [String!]! - patch: String! - prefix: String - quote: String! - shortId: ID! - suffix: String + annotation: String + articleId: ID! + color: String + highlightPositionAnchorIndex: Int + highlightPositionPercent: Float + html: String + id: ID! + overlapHighlightIdList: [String!]! + patch: String! + prefix: String + quote: String! + shortId: ID! + suffix: String } union MergeHighlightResult = MergeHighlightError | MergeHighlightSuccess type MergeHighlightSuccess { - highlight: Highlight! - overlapHighlightIdList: [String!]! + highlight: Highlight! + overlapHighlightIdList: [String!]! } type MoveFilterError { - errorCodes: [MoveFilterErrorCode!]! + errorCodes: [MoveFilterErrorCode!]! } enum MoveFilterErrorCode { - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED } input MoveFilterInput { - afterFilterId: ID - filterId: ID! + afterFilterId: ID + filterId: ID! } union MoveFilterResult = MoveFilterError | MoveFilterSuccess type MoveFilterSuccess { - filter: Filter! + filter: Filter! } type MoveLabelError { - errorCodes: [MoveLabelErrorCode!]! + errorCodes: [MoveLabelErrorCode!]! } enum MoveLabelErrorCode { - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED } input MoveLabelInput { - afterLabelId: ID - labelId: ID! + afterLabelId: ID + labelId: ID! } union MoveLabelResult = MoveLabelError | MoveLabelSuccess type MoveLabelSuccess { - label: Label! + label: Label! } type MoveToFolderError { - errorCodes: [MoveToFolderErrorCode!]! + errorCodes: [MoveToFolderErrorCode!]! } enum MoveToFolderErrorCode { - ALREADY_EXISTS - BAD_REQUEST - UNAUTHORIZED + ALREADY_EXISTS + BAD_REQUEST + UNAUTHORIZED } union MoveToFolderResult = MoveToFolderError | MoveToFolderSuccess type MoveToFolderSuccess { - success: Boolean! + success: Boolean! } type Mutation { - addPopularRead(name: String!): AddPopularReadResult! - bulkAction(action: BulkActionType!, arguments: JSON, async: Boolean, expectedCount: Int, labelIds: [ID!], query: String!): BulkActionResult! - createArticle(input: CreateArticleInput!): CreateArticleResult! - createArticleSavingRequest(input: CreateArticleSavingRequestInput!): CreateArticleSavingRequestResult! - createGroup(input: CreateGroupInput!): CreateGroupResult! - createHighlight(input: CreateHighlightInput!): CreateHighlightResult! - createLabel(input: CreateLabelInput!): CreateLabelResult! - createNewsletterEmail(input: CreateNewsletterEmailInput): CreateNewsletterEmailResult! - deleteAccount(userID: ID!): DeleteAccountResult! - deleteFilter(id: ID!): DeleteFilterResult! - deleteHighlight(highlightId: ID!): DeleteHighlightResult! - deleteIntegration(id: ID!): DeleteIntegrationResult! - deleteLabel(id: ID!): DeleteLabelResult! - deleteNewsletterEmail(newsletterEmailId: ID!): DeleteNewsletterEmailResult! - deleteRule(id: ID!): DeleteRuleResult! - deleteWebhook(id: ID!): DeleteWebhookResult! - emptyTrash: EmptyTrashResult! - fetchContent(id: ID!): FetchContentResult! - generateApiKey(input: GenerateApiKeyInput!): GenerateApiKeyResult! - googleLogin(input: GoogleLoginInput!): LoginResult! - googleSignup(input: GoogleSignupInput!): GoogleSignupResult! - importFromIntegration(integrationId: ID!): ImportFromIntegrationResult! - joinGroup(inviteCode: String!): JoinGroupResult! - leaveGroup(groupId: ID!): LeaveGroupResult! - logOut: LogOutResult! - markEmailAsItem(recentEmailId: ID!): MarkEmailAsItemResult! - mergeHighlight(input: MergeHighlightInput!): MergeHighlightResult! - moveFilter(input: MoveFilterInput!): MoveFilterResult! - moveLabel(input: MoveLabelInput!): MoveLabelResult! - moveToFolder(folder: String!, id: ID!): MoveToFolderResult! - optInFeature(input: OptInFeatureInput!): OptInFeatureResult! - recommend(input: RecommendInput!): RecommendResult! - recommendHighlights(input: RecommendHighlightsInput!): RecommendHighlightsResult! - reportItem(input: ReportItemInput!): ReportItemResult! - revokeApiKey(id: ID!): RevokeApiKeyResult! - saveArticleReadingProgress(input: SaveArticleReadingProgressInput!): SaveArticleReadingProgressResult! - saveFile(input: SaveFileInput!): SaveResult! - saveFilter(input: SaveFilterInput!): SaveFilterResult! - savePage(input: SavePageInput!): SaveResult! - saveUrl(input: SaveUrlInput!): SaveResult! - setBookmarkArticle(input: SetBookmarkArticleInput!): SetBookmarkArticleResult! - setDeviceToken(input: SetDeviceTokenInput!): SetDeviceTokenResult! - setFavoriteArticle(id: ID!): SetFavoriteArticleResult! - setIntegration(input: SetIntegrationInput!): SetIntegrationResult! - setLabels(input: SetLabelsInput!): SetLabelsResult! - setLabelsForHighlight(input: SetLabelsForHighlightInput!): SetLabelsResult! - setLinkArchived(input: ArchiveLinkInput!): ArchiveLinkResult! - setRule(input: SetRuleInput!): SetRuleResult! - setUserPersonalization(input: SetUserPersonalizationInput!): SetUserPersonalizationResult! - setWebhook(input: SetWebhookInput!): SetWebhookResult! - subscribe(input: SubscribeInput!): SubscribeResult! - unsubscribe(name: String!, subscriptionId: ID): UnsubscribeResult! - updateEmail(input: UpdateEmailInput!): UpdateEmailResult! - updateFilter(input: UpdateFilterInput!): UpdateFilterResult! - updateHighlight(input: UpdateHighlightInput!): UpdateHighlightResult! - updateLabel(input: UpdateLabelInput!): UpdateLabelResult! - updateNewsletterEmail(input: UpdateNewsletterEmailInput!): UpdateNewsletterEmailResult! - updatePage(input: UpdatePageInput!): UpdatePageResult! - updateSubscription(input: UpdateSubscriptionInput!): UpdateSubscriptionResult! - updateUser(input: UpdateUserInput!): UpdateUserResult! - updateUserProfile(input: UpdateUserProfileInput!): UpdateUserProfileResult! - uploadFileRequest(input: UploadFileRequestInput!): UploadFileRequestResult! - uploadImportFile(contentType: String!, type: UploadImportFileType!): UploadImportFileResult! + addPopularRead(name: String!): AddPopularReadResult! + bulkAction(action: BulkActionType!, arguments: JSON, async: Boolean, expectedCount: Int, labelIds: [ID!], query: String!): BulkActionResult! + createArticle(input: CreateArticleInput!): CreateArticleResult! + createArticleSavingRequest(input: CreateArticleSavingRequestInput!): CreateArticleSavingRequestResult! + createGroup(input: CreateGroupInput!): CreateGroupResult! + createHighlight(input: CreateHighlightInput!): CreateHighlightResult! + createLabel(input: CreateLabelInput!): CreateLabelResult! + createNewsletterEmail(input: CreateNewsletterEmailInput): CreateNewsletterEmailResult! + deleteAccount(userID: ID!): DeleteAccountResult! + deleteFilter(id: ID!): DeleteFilterResult! + deleteHighlight(highlightId: ID!): DeleteHighlightResult! + deleteIntegration(id: ID!): DeleteIntegrationResult! + deleteLabel(id: ID!): DeleteLabelResult! + deleteNewsletterEmail(newsletterEmailId: ID!): DeleteNewsletterEmailResult! + deleteRule(id: ID!): DeleteRuleResult! + deleteWebhook(id: ID!): DeleteWebhookResult! + emptyTrash: EmptyTrashResult! + fetchContent(id: ID!): FetchContentResult! + generateApiKey(input: GenerateApiKeyInput!): GenerateApiKeyResult! + googleLogin(input: GoogleLoginInput!): LoginResult! + googleSignup(input: GoogleSignupInput!): GoogleSignupResult! + importFromIntegration(integrationId: ID!): ImportFromIntegrationResult! + joinGroup(inviteCode: String!): JoinGroupResult! + leaveGroup(groupId: ID!): LeaveGroupResult! + logOut: LogOutResult! + markEmailAsItem(recentEmailId: ID!): MarkEmailAsItemResult! + mergeHighlight(input: MergeHighlightInput!): MergeHighlightResult! + moveFilter(input: MoveFilterInput!): MoveFilterResult! + moveLabel(input: MoveLabelInput!): MoveLabelResult! + moveToFolder(folder: String!, id: ID!): MoveToFolderResult! + optInFeature(input: OptInFeatureInput!): OptInFeatureResult! + recommend(input: RecommendInput!): RecommendResult! + recommendHighlights(input: RecommendHighlightsInput!): RecommendHighlightsResult! + reportItem(input: ReportItemInput!): ReportItemResult! + revokeApiKey(id: ID!): RevokeApiKeyResult! + saveArticleReadingProgress(input: SaveArticleReadingProgressInput!): SaveArticleReadingProgressResult! + saveFile(input: SaveFileInput!): SaveResult! + saveFilter(input: SaveFilterInput!): SaveFilterResult! + savePage(input: SavePageInput!): SaveResult! + saveUrl(input: SaveUrlInput!): SaveResult! + setBookmarkArticle(input: SetBookmarkArticleInput!): SetBookmarkArticleResult! + setDeviceToken(input: SetDeviceTokenInput!): SetDeviceTokenResult! + setFavoriteArticle(id: ID!): SetFavoriteArticleResult! + setIntegration(input: SetIntegrationInput!): SetIntegrationResult! + setLabels(input: SetLabelsInput!): SetLabelsResult! + setLabelsForHighlight(input: SetLabelsForHighlightInput!): SetLabelsResult! + setLinkArchived(input: ArchiveLinkInput!): ArchiveLinkResult! + setRule(input: SetRuleInput!): SetRuleResult! + setUserPersonalization(input: SetUserPersonalizationInput!): SetUserPersonalizationResult! + setWebhook(input: SetWebhookInput!): SetWebhookResult! + subscribe(input: SubscribeInput!): SubscribeResult! + unsubscribe(name: String!, subscriptionId: ID): UnsubscribeResult! + updateEmail(input: UpdateEmailInput!): UpdateEmailResult! + updateFilter(input: UpdateFilterInput!): UpdateFilterResult! + updateHighlight(input: UpdateHighlightInput!): UpdateHighlightResult! + updateLabel(input: UpdateLabelInput!): UpdateLabelResult! + updateNewsletterEmail(input: UpdateNewsletterEmailInput!): UpdateNewsletterEmailResult! + updatePage(input: UpdatePageInput!): UpdatePageResult! + updateSubscription(input: UpdateSubscriptionInput!): UpdateSubscriptionResult! + updateUser(input: UpdateUserInput!): UpdateUserResult! + updateUserProfile(input: UpdateUserProfileInput!): UpdateUserProfileResult! + uploadFileRequest(input: UploadFileRequestInput!): UploadFileRequestResult! + uploadImportFile(contentType: String!, type: UploadImportFileType!): UploadImportFileResult! } type NewsletterEmail { - address: String! - confirmationCode: String - createdAt: Date! - description: String - folder: String! - id: ID! - name: String - subscriptionCount: Int! + address: String! + confirmationCode: String + createdAt: Date! + description: String + folder: String! + id: ID! + name: String + subscriptionCount: Int! } type NewsletterEmailsError { - errorCodes: [NewsletterEmailsErrorCode!]! + errorCodes: [NewsletterEmailsErrorCode!]! } enum NewsletterEmailsErrorCode { - BAD_REQUEST - UNAUTHORIZED + BAD_REQUEST + UNAUTHORIZED } union NewsletterEmailsResult = NewsletterEmailsError | NewsletterEmailsSuccess type NewsletterEmailsSuccess { - newsletterEmails: [NewsletterEmail!]! + newsletterEmails: [NewsletterEmail!]! } type OptInFeatureError { - errorCodes: [OptInFeatureErrorCode!]! + errorCodes: [OptInFeatureErrorCode!]! } enum OptInFeatureErrorCode { - BAD_REQUEST - NOT_FOUND + BAD_REQUEST + NOT_FOUND } input OptInFeatureInput { - name: String! + name: String! } union OptInFeatureResult = OptInFeatureError | OptInFeatureSuccess type OptInFeatureSuccess { - feature: Feature! + feature: Feature! } type Page { - author: String - createdAt: Date! - description: String - hash: String! - id: ID! - image: String! - originalHtml: String! - originalUrl: String! - publishedAt: Date - readableHtml: String! - title: String! - type: PageType! - updatedAt: Date - url: String! + author: String + createdAt: Date! + description: String + hash: String! + id: ID! + image: String! + originalHtml: String! + originalUrl: String! + publishedAt: Date + readableHtml: String! + title: String! + type: PageType! + updatedAt: Date + url: String! } type PageInfo { - endCursor: String - hasNextPage: Boolean! - hasPreviousPage: Boolean! - startCursor: String - totalCount: Int + endCursor: String + hasNextPage: Boolean! + hasPreviousPage: Boolean! + startCursor: String + totalCount: Int } input PageInfoInput { - author: String - canonicalUrl: String - contentType: String - description: String - previewImage: String - publishedAt: Date - title: String + author: String + canonicalUrl: String + contentType: String + description: String + previewImage: String + publishedAt: Date + title: String } enum PageType { - ARTICLE - BOOK - FILE - HIGHLIGHTS - IMAGE - PROFILE - TWEET - UNKNOWN - VIDEO - WEBSITE + ARTICLE + BOOK + FILE + HIGHLIGHTS + IMAGE + PROFILE + TWEET + UNKNOWN + VIDEO + WEBSITE } input ParseResult { - byline: String - content: String! - dir: String - excerpt: String! - language: String - length: Int! - previewImage: String - publishedDate: Date - siteIcon: String - siteName: String - textContent: String! - title: String! + byline: String + content: String! + dir: String + excerpt: String! + language: String + length: Int! + previewImage: String + publishedDate: Date + siteIcon: String + siteName: String + textContent: String! + title: String! } input PreparedDocumentInput { - document: String! - pageInfo: PageInfoInput! + document: String! + pageInfo: PageInfoInput! } type Profile { - bio: String - id: ID! - pictureUrl: String - private: Boolean! - username: String! + bio: String + id: ID! + pictureUrl: String + private: Boolean! + username: String! } type Query { - apiKeys: ApiKeysResult! - article(format: String, slug: String!, username: String!): ArticleResult! - articleSavingRequest(id: ID, url: String): ArticleSavingRequestResult! - deviceTokens: DeviceTokensResult! - feeds(input: FeedsInput!): FeedsResult! - filters: FiltersResult! - getUserPersonalization: GetUserPersonalizationResult! - groups: GroupsResult! - hello: String - integrations: IntegrationsResult! - labels: LabelsResult! - me: User - newsletterEmails: NewsletterEmailsResult! - recentEmails: RecentEmailsResult! - recentSearches: RecentSearchesResult! - rules(enabled: Boolean): RulesResult! - scanFeeds(input: ScanFeedsInput!): ScanFeedsResult! - search(after: String, first: Int, format: String, includeContent: Boolean, query: String): SearchResult! - sendInstallInstructions: SendInstallInstructionsResult! - subscriptions(sort: SortParams, type: SubscriptionType): SubscriptionsResult! - typeaheadSearch(first: Int, query: String!): TypeaheadSearchResult! - updatesSince(after: String, first: Int, folder: String, since: Date!, sort: SortParams): UpdatesSinceResult! - user(userId: ID, username: String): UserResult! - users: UsersResult! - validateUsername(username: String!): Boolean! - webhook(id: ID!): WebhookResult! - webhooks: WebhooksResult! + apiKeys: ApiKeysResult! + article(format: String, slug: String!, username: String!): ArticleResult! + articleSavingRequest(id: ID, url: String): ArticleSavingRequestResult! + deviceTokens: DeviceTokensResult! + feeds(input: FeedsInput!): FeedsResult! + filters: FiltersResult! + getUserPersonalization: GetUserPersonalizationResult! + groups: GroupsResult! + hello: String + integrations: IntegrationsResult! + labels: LabelsResult! + me: User + newsletterEmails: NewsletterEmailsResult! + recentEmails: RecentEmailsResult! + recentSearches: RecentSearchesResult! + rules(enabled: Boolean): RulesResult! + scanFeeds(input: ScanFeedsInput!): ScanFeedsResult! + search(after: String, first: Int, format: String, includeContent: Boolean, query: String): SearchResult! + sendInstallInstructions: SendInstallInstructionsResult! + subscriptions(sort: SortParams, type: SubscriptionType): SubscriptionsResult! + typeaheadSearch(first: Int, query: String!): TypeaheadSearchResult! + updatesSince(after: String, first: Int, folder: String, since: Date!, sort: SortParams): UpdatesSinceResult! + user(userId: ID, username: String): UserResult! + users: UsersResult! + validateUsername(username: String!): Boolean! + webhook(id: ID!): WebhookResult! + webhooks: WebhooksResult! } type Reaction { - code: ReactionType! - createdAt: Date! - id: ID! - updatedAt: Date - user: User! + code: ReactionType! + createdAt: Date! + id: ID! + updatedAt: Date + user: User! } enum ReactionType { - CRYING - HEART - HUSHED - LIKE - POUT - SMILE + CRYING + HEART + HUSHED + LIKE + POUT + SMILE } type ReadState { - progressAnchorIndex: Int! - progressPercent: Float! - reading: Boolean - readingTime: Int + progressAnchorIndex: Int! + progressPercent: Float! + reading: Boolean + readingTime: Int } type RecentEmail { - createdAt: Date! - from: String! - html: String - id: ID! - subject: String! - text: String! - to: String! - type: String! + createdAt: Date! + from: String! + html: String + id: ID! + subject: String! + text: String! + to: String! + type: String! } type RecentEmailsError { - errorCodes: [RecentEmailsErrorCode!]! + errorCodes: [RecentEmailsErrorCode!]! } enum RecentEmailsErrorCode { - BAD_REQUEST - UNAUTHORIZED + BAD_REQUEST + UNAUTHORIZED } union RecentEmailsResult = RecentEmailsError | RecentEmailsSuccess type RecentEmailsSuccess { - recentEmails: [RecentEmail!]! + recentEmails: [RecentEmail!]! } type RecentSearch { - createdAt: Date! - id: ID! - term: String! + createdAt: Date! + id: ID! + term: String! } type RecentSearchesError { - errorCodes: [RecentSearchesErrorCode!]! + errorCodes: [RecentSearchesErrorCode!]! } enum RecentSearchesErrorCode { - BAD_REQUEST - UNAUTHORIZED + BAD_REQUEST + UNAUTHORIZED } union RecentSearchesResult = RecentSearchesError | RecentSearchesSuccess type RecentSearchesSuccess { - searches: [RecentSearch!]! + searches: [RecentSearch!]! } type RecommendError { - errorCodes: [RecommendErrorCode!]! + errorCodes: [RecommendErrorCode!]! } enum RecommendErrorCode { - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED } type RecommendHighlightsError { - errorCodes: [RecommendHighlightsErrorCode!]! + errorCodes: [RecommendHighlightsErrorCode!]! } enum RecommendHighlightsErrorCode { - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED } input RecommendHighlightsInput { - groupIds: [ID!]! - highlightIds: [ID!]! - note: String - pageId: ID! + groupIds: [ID!]! + highlightIds: [ID!]! + note: String + pageId: ID! } union RecommendHighlightsResult = RecommendHighlightsError | RecommendHighlightsSuccess type RecommendHighlightsSuccess { - success: Boolean! + success: Boolean! } input RecommendInput { - groupIds: [ID!]! - note: String - pageId: ID! - recommendedWithHighlights: Boolean + groupIds: [ID!]! + note: String + pageId: ID! + recommendedWithHighlights: Boolean } union RecommendResult = RecommendError | RecommendSuccess type RecommendSuccess { - success: Boolean! + success: Boolean! } type Recommendation { - id: ID! - name: String! - note: String - recommendedAt: Date! - user: RecommendingUser + id: ID! + name: String! + note: String + recommendedAt: Date! + user: RecommendingUser } type RecommendationGroup { - admins: [User!]! - canPost: Boolean! - canSeeMembers: Boolean! - createdAt: Date! - description: String - id: ID! - inviteUrl: String! - members: [User!]! - name: String! - topics: [String!] - updatedAt: Date + admins: [User!]! + canPost: Boolean! + canSeeMembers: Boolean! + createdAt: Date! + description: String + id: ID! + inviteUrl: String! + members: [User!]! + name: String! + topics: [String!] + updatedAt: Date } type RecommendingUser { - name: String! - profileImageURL: String - userId: String! - username: String! + name: String! + profileImageURL: String + userId: String! + username: String! } type Reminder { - archiveUntil: Boolean! - id: ID! - remindAt: Date! - sendNotification: Boolean! + archiveUntil: Boolean! + id: ID! + remindAt: Date! + sendNotification: Boolean! } type ReminderError { - errorCodes: [ReminderErrorCode!]! + errorCodes: [ReminderErrorCode!]! } enum ReminderErrorCode { - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED } union ReminderResult = ReminderError | ReminderSuccess type ReminderSuccess { - reminder: Reminder! + reminder: Reminder! } input ReportItemInput { - itemUrl: String! - pageId: ID! - reportComment: String! - reportTypes: [ReportType!]! - sharedBy: ID + itemUrl: String! + pageId: ID! + reportComment: String! + reportTypes: [ReportType!]! + sharedBy: ID } type ReportItemResult { - message: String! + message: String! } enum ReportType { - ABUSIVE - CONTENT_DISPLAY - CONTENT_VIOLATION - SPAM + ABUSIVE + CONTENT_DISPLAY + CONTENT_VIOLATION + SPAM } type RevokeApiKeyError { - errorCodes: [RevokeApiKeyErrorCode!]! + errorCodes: [RevokeApiKeyErrorCode!]! } enum RevokeApiKeyErrorCode { - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED } union RevokeApiKeyResult = RevokeApiKeyError | RevokeApiKeySuccess type RevokeApiKeySuccess { - apiKey: ApiKey! + apiKey: ApiKey! } type Rule { - actions: [RuleAction!]! - createdAt: Date! - enabled: Boolean! - eventTypes: [RuleEventType!]! - filter: String! - id: ID! - name: String! - updatedAt: Date + actions: [RuleAction!]! + createdAt: Date! + enabled: Boolean! + eventTypes: [RuleEventType!]! + filter: String! + id: ID! + name: String! + updatedAt: Date } type RuleAction { - params: [String!]! - type: RuleActionType! + params: [String!]! + type: RuleActionType! } input RuleActionInput { - params: [String!]! - type: RuleActionType! + params: [String!]! + type: RuleActionType! } enum RuleActionType { - ADD_LABEL - ARCHIVE - MARK_AS_READ - SEND_NOTIFICATION + ADD_LABEL + ARCHIVE + MARK_AS_READ + SEND_NOTIFICATION } enum RuleEventType { - PAGE_CREATED - PAGE_UPDATED + PAGE_CREATED + PAGE_UPDATED } type RulesError { - errorCodes: [RulesErrorCode!]! + errorCodes: [RulesErrorCode!]! } enum RulesErrorCode { - BAD_REQUEST - UNAUTHORIZED + BAD_REQUEST + UNAUTHORIZED } union RulesResult = RulesError | RulesSuccess type RulesSuccess { - rules: [Rule!]! + rules: [Rule!]! } type SaveArticleReadingProgressError { - errorCodes: [SaveArticleReadingProgressErrorCode!]! + errorCodes: [SaveArticleReadingProgressErrorCode!]! } enum SaveArticleReadingProgressErrorCode { - BAD_DATA - NOT_FOUND - UNAUTHORIZED + BAD_DATA + NOT_FOUND + UNAUTHORIZED } input SaveArticleReadingProgressInput { - force: Boolean - id: ID! - readingProgressAnchorIndex: Int - readingProgressPercent: Float! - readingProgressTopPercent: Float + force: Boolean + id: ID! + readingProgressAnchorIndex: Int + readingProgressPercent: Float! + readingProgressTopPercent: Float } union SaveArticleReadingProgressResult = SaveArticleReadingProgressError | SaveArticleReadingProgressSuccess type SaveArticleReadingProgressSuccess { - updatedArticle: Article! + updatedArticle: Article! } type SaveError { - errorCodes: [SaveErrorCode!]! - message: String + errorCodes: [SaveErrorCode!]! + message: String } enum SaveErrorCode { - EMBEDDED_HIGHLIGHT_FAILED - UNAUTHORIZED - UNKNOWN + EMBEDDED_HIGHLIGHT_FAILED + UNAUTHORIZED + UNKNOWN } input SaveFileInput { - clientRequestId: ID! - folder: String - labels: [CreateLabelInput!] - source: String! - state: ArticleSavingRequestStatus - uploadFileId: ID! - url: String! + clientRequestId: ID! + folder: String + labels: [CreateLabelInput!] + source: String! + state: ArticleSavingRequestStatus + uploadFileId: ID! + url: String! } type SaveFilterError { - errorCodes: [SaveFilterErrorCode!]! + errorCodes: [SaveFilterErrorCode!]! } enum SaveFilterErrorCode { - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED } input SaveFilterInput { - category: String - description: String - filter: String! - folder: String - name: String! - position: Int + category: String + description: String + filter: String! + folder: String + name: String! + position: Int } union SaveFilterResult = SaveFilterError | SaveFilterSuccess type SaveFilterSuccess { - filter: Filter! + filter: Filter! } input SavePageInput { - clientRequestId: ID! - folder: String - labels: [CreateLabelInput!] - originalContent: String! - parseResult: ParseResult - publishedAt: Date - rssFeedUrl: String - savedAt: Date - source: String! - state: ArticleSavingRequestStatus - title: String - url: String! + clientRequestId: ID! + folder: String + labels: [CreateLabelInput!] + originalContent: String! + parseResult: ParseResult + publishedAt: Date + rssFeedUrl: String + savedAt: Date + source: String! + state: ArticleSavingRequestStatus + title: String + url: String! } union SaveResult = SaveError | SaveSuccess type SaveSuccess { - clientRequestId: ID! - url: String! + clientRequestId: ID! + url: String! } input SaveUrlInput { - clientRequestId: ID! - folder: String - labels: [CreateLabelInput!] - locale: String - publishedAt: Date - savedAt: Date - source: String! - state: ArticleSavingRequestStatus - timezone: String - url: String! + clientRequestId: ID! + folder: String + labels: [CreateLabelInput!] + locale: String + publishedAt: Date + savedAt: Date + source: String! + state: ArticleSavingRequestStatus + timezone: String + url: String! } type ScanFeedsError { - errorCodes: [ScanFeedsErrorCode!]! + errorCodes: [ScanFeedsErrorCode!]! } enum ScanFeedsErrorCode { - BAD_REQUEST + BAD_REQUEST } input ScanFeedsInput { - opml: String - url: String + opml: String + url: String } union ScanFeedsResult = ScanFeedsError | ScanFeedsSuccess type ScanFeedsSuccess { - feeds: [Feed!]! + feeds: [Feed!]! } type SearchError { - errorCodes: [SearchErrorCode!]! + errorCodes: [SearchErrorCode!]! } enum SearchErrorCode { - QUERY_TOO_LONG - UNAUTHORIZED + QUERY_TOO_LONG + UNAUTHORIZED } type SearchItem { - annotation: String - archivedAt: Date - author: String - color: String - content: String - contentReader: ContentReader! - createdAt: Date! - description: String - folder: String! - highlights: [Highlight!] - id: ID! - image: String - isArchived: Boolean! - labels: [Label!] - language: String - links: JSON - originalArticleUrl: String - ownedByViewer: Boolean - pageId: ID - pageType: PageType! - previewContent: String - previewContentType: String - publishedAt: Date - quote: String - readAt: Date - readingProgressAnchorIndex: Int! - readingProgressPercent: Float! - readingProgressTopPercent: Float - recommendations: [Recommendation!] - savedAt: Date! - shortId: String - siteIcon: String - siteName: String - slug: String! - state: ArticleSavingRequestStatus - subscription: String - title: String! - unsubHttpUrl: String - unsubMailTo: String - updatedAt: Date - uploadFileId: ID - url: String! - wordsCount: Int + annotation: String + archivedAt: Date + author: String + color: String + content: String + contentReader: ContentReader! + createdAt: Date! + description: String + folder: String! + highlights: [Highlight!] + id: ID! + image: String + isArchived: Boolean! + labels: [Label!] + language: String + links: JSON + originalArticleUrl: String + ownedByViewer: Boolean + pageId: ID + pageType: PageType! + previewContent: String + previewContentType: String + publishedAt: Date + quote: String + readAt: Date + readingProgressAnchorIndex: Int! + readingProgressPercent: Float! + readingProgressTopPercent: Float + recommendations: [Recommendation!] + savedAt: Date! + shortId: String + siteIcon: String + siteName: String + slug: String! + state: ArticleSavingRequestStatus + subscription: String + title: String! + unsubHttpUrl: String + unsubMailTo: String + updatedAt: Date + uploadFileId: ID + url: String! + wordsCount: Int } type SearchItemEdge { - cursor: String! - node: SearchItem! + cursor: String! + node: SearchItem! } union SearchResult = SearchError | SearchSuccess type SearchSuccess { - edges: [SearchItemEdge!]! - pageInfo: PageInfo! + edges: [SearchItemEdge!]! + pageInfo: PageInfo! } type SendInstallInstructionsError { - errorCodes: [SendInstallInstructionsErrorCode!]! + errorCodes: [SendInstallInstructionsErrorCode!]! } enum SendInstallInstructionsErrorCode { - BAD_REQUEST - FORBIDDEN - NOT_FOUND - UNAUTHORIZED + BAD_REQUEST + FORBIDDEN + NOT_FOUND + UNAUTHORIZED } union SendInstallInstructionsResult = SendInstallInstructionsError | SendInstallInstructionsSuccess type SendInstallInstructionsSuccess { - sent: Boolean! + sent: Boolean! } type SetBookmarkArticleError { - errorCodes: [SetBookmarkArticleErrorCode!]! + errorCodes: [SetBookmarkArticleErrorCode!]! } enum SetBookmarkArticleErrorCode { - BOOKMARK_EXISTS - NOT_FOUND + BOOKMARK_EXISTS + NOT_FOUND } input SetBookmarkArticleInput { - articleID: ID! - bookmark: Boolean! + articleID: ID! + bookmark: Boolean! } union SetBookmarkArticleResult = SetBookmarkArticleError | SetBookmarkArticleSuccess type SetBookmarkArticleSuccess { - bookmarkedArticle: Article! + bookmarkedArticle: Article! } type SetDeviceTokenError { - errorCodes: [SetDeviceTokenErrorCode!]! + errorCodes: [SetDeviceTokenErrorCode!]! } enum SetDeviceTokenErrorCode { - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED } input SetDeviceTokenInput { - id: ID - token: String + id: ID + token: String } union SetDeviceTokenResult = SetDeviceTokenError | SetDeviceTokenSuccess type SetDeviceTokenSuccess { - deviceToken: DeviceToken! + deviceToken: DeviceToken! } type SetFavoriteArticleError { - errorCodes: [SetFavoriteArticleErrorCode!]! + errorCodes: [SetFavoriteArticleErrorCode!]! } enum SetFavoriteArticleErrorCode { - ALREADY_EXISTS - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED + ALREADY_EXISTS + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED } union SetFavoriteArticleResult = SetFavoriteArticleError | SetFavoriteArticleSuccess type SetFavoriteArticleSuccess { - success: Boolean! + success: Boolean! } type SetFollowError { - errorCodes: [SetFollowErrorCode!]! + errorCodes: [SetFollowErrorCode!]! } enum SetFollowErrorCode { - NOT_FOUND - UNAUTHORIZED + NOT_FOUND + UNAUTHORIZED } input SetFollowInput { - follow: Boolean! - userId: ID! + follow: Boolean! + userId: ID! } union SetFollowResult = SetFollowError | SetFollowSuccess type SetFollowSuccess { - updatedUser: User! + updatedUser: User! } type SetIntegrationError { - errorCodes: [SetIntegrationErrorCode!]! + errorCodes: [SetIntegrationErrorCode!]! } enum SetIntegrationErrorCode { - ALREADY_EXISTS - BAD_REQUEST - INVALID_TOKEN - NOT_FOUND - UNAUTHORIZED + ALREADY_EXISTS + BAD_REQUEST + INVALID_TOKEN + NOT_FOUND + UNAUTHORIZED } input SetIntegrationInput { - enabled: Boolean! - id: ID - importItemState: ImportItemState - name: String! - syncedAt: Date - taskName: String - token: String! - type: IntegrationType + enabled: Boolean! + id: ID + importItemState: ImportItemState + name: String! + syncedAt: Date + taskName: String + token: String! + type: IntegrationType } union SetIntegrationResult = SetIntegrationError | SetIntegrationSuccess type SetIntegrationSuccess { - integration: Integration! + integration: Integration! } type SetLabelsError { - errorCodes: [SetLabelsErrorCode!]! + errorCodes: [SetLabelsErrorCode!]! } enum SetLabelsErrorCode { - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED } input SetLabelsForHighlightInput { - highlightId: ID! - labelIds: [ID!] - labels: [CreateLabelInput!] + highlightId: ID! + labelIds: [ID!] + labels: [CreateLabelInput!] } input SetLabelsInput { - labelIds: [ID!] - labels: [CreateLabelInput!] - pageId: ID! - source: String + labelIds: [ID!] + labels: [CreateLabelInput!] + pageId: ID! + source: String } union SetLabelsResult = SetLabelsError | SetLabelsSuccess type SetLabelsSuccess { - labels: [Label!]! + labels: [Label!]! } type SetRuleError { - errorCodes: [SetRuleErrorCode!]! + errorCodes: [SetRuleErrorCode!]! } enum SetRuleErrorCode { - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED } input SetRuleInput { - actions: [RuleActionInput!]! - description: String - enabled: Boolean! - eventTypes: [RuleEventType!]! - filter: String! - id: ID - name: String! + actions: [RuleActionInput!]! + description: String + enabled: Boolean! + eventTypes: [RuleEventType!]! + filter: String! + id: ID + name: String! } union SetRuleResult = SetRuleError | SetRuleSuccess type SetRuleSuccess { - rule: Rule! + rule: Rule! } type SetShareArticleError { - errorCodes: [SetShareArticleErrorCode!]! + errorCodes: [SetShareArticleErrorCode!]! } enum SetShareArticleErrorCode { - NOT_FOUND - UNAUTHORIZED + NOT_FOUND + UNAUTHORIZED } input SetShareArticleInput { - articleID: ID! - share: Boolean! - sharedComment: String - sharedWithHighlights: Boolean + articleID: ID! + share: Boolean! + sharedComment: String + sharedWithHighlights: Boolean } union SetShareArticleResult = SetShareArticleError | SetShareArticleSuccess type SetShareArticleSuccess { - updatedArticle: Article! - updatedFeedArticle: FeedArticle - updatedFeedArticleId: String + updatedArticle: Article! + updatedFeedArticle: FeedArticle + updatedFeedArticleId: String } type SetShareHighlightError { - errorCodes: [SetShareHighlightErrorCode!]! + errorCodes: [SetShareHighlightErrorCode!]! } enum SetShareHighlightErrorCode { - FORBIDDEN - NOT_FOUND - UNAUTHORIZED + FORBIDDEN + NOT_FOUND + UNAUTHORIZED } input SetShareHighlightInput { - id: ID! - share: Boolean! + id: ID! + share: Boolean! } union SetShareHighlightResult = SetShareHighlightError | SetShareHighlightSuccess type SetShareHighlightSuccess { - highlight: Highlight! + highlight: Highlight! } type SetUserPersonalizationError { - errorCodes: [SetUserPersonalizationErrorCode!]! + errorCodes: [SetUserPersonalizationErrorCode!]! } enum SetUserPersonalizationErrorCode { - NOT_FOUND - UNAUTHORIZED + NOT_FOUND + UNAUTHORIZED } input SetUserPersonalizationInput { - fields: JSON - fontFamily: String - fontSize: Int - libraryLayoutType: String - librarySortOrder: SortOrder - margin: Int - speechRate: String - speechSecondaryVoice: String - speechVoice: String - speechVolume: String - theme: String + fields: JSON + fontFamily: String + fontSize: Int + libraryLayoutType: String + librarySortOrder: SortOrder + margin: Int + speechRate: String + speechSecondaryVoice: String + speechVoice: String + speechVolume: String + theme: String } union SetUserPersonalizationResult = SetUserPersonalizationError | SetUserPersonalizationSuccess type SetUserPersonalizationSuccess { - updatedUserPersonalization: UserPersonalization! + updatedUserPersonalization: UserPersonalization! } type SetWebhookError { - errorCodes: [SetWebhookErrorCode!]! + errorCodes: [SetWebhookErrorCode!]! } enum SetWebhookErrorCode { - ALREADY_EXISTS - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED + ALREADY_EXISTS + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED } input SetWebhookInput { - contentType: String - enabled: Boolean - eventTypes: [WebhookEvent!]! - id: ID - method: String - url: String! + contentType: String + enabled: Boolean + eventTypes: [WebhookEvent!]! + id: ID + method: String + url: String! } union SetWebhookResult = SetWebhookError | SetWebhookSuccess type SetWebhookSuccess { - webhook: Webhook! + webhook: Webhook! } type ShareStats { - readDuration: Int! - saveCount: Int! - viewCount: Int! + readDuration: Int! + saveCount: Int! + viewCount: Int! } type SharedArticleError { - errorCodes: [SharedArticleErrorCode!]! + errorCodes: [SharedArticleErrorCode!]! } enum SharedArticleErrorCode { - NOT_FOUND + NOT_FOUND } union SharedArticleResult = SharedArticleError | SharedArticleSuccess type SharedArticleSuccess { - article: Article! + article: Article! } enum SignupErrorCode { - ACCESS_DENIED - EXPIRED_TOKEN - GOOGLE_AUTH_ERROR - INVALID_EMAIL - INVALID_PASSWORD - INVALID_USERNAME - UNKNOWN - USER_EXISTS + ACCESS_DENIED + EXPIRED_TOKEN + GOOGLE_AUTH_ERROR + INVALID_EMAIL + INVALID_PASSWORD + INVALID_USERNAME + UNKNOWN + USER_EXISTS } enum SortBy { - PUBLISHED_AT - SAVED_AT - SCORE - UPDATED_TIME + PUBLISHED_AT + SAVED_AT + SCORE + UPDATED_TIME } enum SortOrder { - ASCENDING - DESCENDING + ASCENDING + DESCENDING } input SortParams { - by: SortBy! - order: SortOrder + by: SortBy! + order: SortOrder } type SubscribeError { - errorCodes: [SubscribeErrorCode!]! + errorCodes: [SubscribeErrorCode!]! } enum SubscribeErrorCode { - ALREADY_SUBSCRIBED - BAD_REQUEST - EXCEEDED_MAX_SUBSCRIPTIONS - NOT_FOUND - UNAUTHORIZED + ALREADY_SUBSCRIBED + BAD_REQUEST + EXCEEDED_MAX_SUBSCRIPTIONS + NOT_FOUND + UNAUTHORIZED } input SubscribeInput { - autoAddToLibrary: Boolean - fetchContent: Boolean - folder: String - isPrivate: Boolean - subscriptionType: SubscriptionType - url: String! + autoAddToLibrary: Boolean + fetchContent: Boolean + folder: String + isPrivate: Boolean + subscriptionType: SubscriptionType + url: String! } union SubscribeResult = SubscribeError | SubscribeSuccess type SubscribeSuccess { - subscriptions: [Subscription!]! + subscriptions: [Subscription!]! } type Subscription { - autoAddToLibrary: Boolean - count: Int! - createdAt: Date! - description: String - fetchContent: Boolean! - folder: String! - icon: String - id: ID! - isPrivate: Boolean - lastFetchedAt: Date - name: String! - newsletterEmail: String - status: SubscriptionStatus! - type: SubscriptionType! - unsubscribeHttpUrl: String - unsubscribeMailTo: String - updatedAt: Date - url: String + autoAddToLibrary: Boolean + count: Int! + createdAt: Date! + description: String + fetchContent: Boolean! + folder: String! + icon: String + id: ID! + isPrivate: Boolean + lastFetchedAt: Date + name: String! + newsletterEmail: String + status: SubscriptionStatus! + type: SubscriptionType! + unsubscribeHttpUrl: String + unsubscribeMailTo: String + updatedAt: Date + url: String } enum SubscriptionStatus { - ACTIVE - DELETED - UNSUBSCRIBED + ACTIVE + DELETED + UNSUBSCRIBED } enum SubscriptionType { - NEWSLETTER - RSS + NEWSLETTER + RSS } type SubscriptionsError { - errorCodes: [SubscriptionsErrorCode!]! + errorCodes: [SubscriptionsErrorCode!]! } enum SubscriptionsErrorCode { - BAD_REQUEST - UNAUTHORIZED + BAD_REQUEST + UNAUTHORIZED } union SubscriptionsResult = SubscriptionsError | SubscriptionsSuccess type SubscriptionsSuccess { - subscriptions: [Subscription!]! + subscriptions: [Subscription!]! } type SyncUpdatedItemEdge { - cursor: String! - itemID: ID! - node: SearchItem - updateReason: UpdateReason! + cursor: String! + itemID: ID! + node: SearchItem + updateReason: UpdateReason! } type TypeaheadSearchError { - errorCodes: [TypeaheadSearchErrorCode!]! + errorCodes: [TypeaheadSearchErrorCode!]! } enum TypeaheadSearchErrorCode { - UNAUTHORIZED + UNAUTHORIZED } type TypeaheadSearchItem { - contentReader: ContentReader! - id: ID! - siteName: String - slug: String! - title: String! + contentReader: ContentReader! + id: ID! + siteName: String + slug: String! + title: String! } union TypeaheadSearchResult = TypeaheadSearchError | TypeaheadSearchSuccess type TypeaheadSearchSuccess { - items: [TypeaheadSearchItem!]! + items: [TypeaheadSearchItem!]! } type UnsubscribeError { - errorCodes: [UnsubscribeErrorCode!]! + errorCodes: [UnsubscribeErrorCode!]! } enum UnsubscribeErrorCode { - ALREADY_UNSUBSCRIBED - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED - UNSUBSCRIBE_METHOD_NOT_FOUND + ALREADY_UNSUBSCRIBED + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED + UNSUBSCRIBE_METHOD_NOT_FOUND } union UnsubscribeResult = UnsubscribeError | UnsubscribeSuccess type UnsubscribeSuccess { - subscription: Subscription! + subscription: Subscription! } type UpdateEmailError { - errorCodes: [UpdateEmailErrorCode!]! + errorCodes: [UpdateEmailErrorCode!]! } enum UpdateEmailErrorCode { - BAD_REQUEST - EMAIL_ALREADY_EXISTS - UNAUTHORIZED + BAD_REQUEST + EMAIL_ALREADY_EXISTS + UNAUTHORIZED } input UpdateEmailInput { - email: String! + email: String! } union UpdateEmailResult = UpdateEmailError | UpdateEmailSuccess type UpdateEmailSuccess { - email: String! - verificationEmailSent: Boolean + email: String! + verificationEmailSent: Boolean } type UpdateFilterError { - errorCodes: [UpdateFilterErrorCode!]! + errorCodes: [UpdateFilterErrorCode!]! } enum UpdateFilterErrorCode { - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED } input UpdateFilterInput { - category: String - description: String - filter: String - folder: String - id: String! - name: String - position: Int - visible: Boolean + category: String + description: String + filter: String + folder: String + id: String! + name: String + position: Int + visible: Boolean } union UpdateFilterResult = UpdateFilterError | UpdateFilterSuccess type UpdateFilterSuccess { - filter: Filter! + filter: Filter! } type UpdateHighlightError { - errorCodes: [UpdateHighlightErrorCode!]! + errorCodes: [UpdateHighlightErrorCode!]! } enum UpdateHighlightErrorCode { - BAD_DATA - FORBIDDEN - NOT_FOUND - UNAUTHORIZED + BAD_DATA + FORBIDDEN + NOT_FOUND + UNAUTHORIZED } input UpdateHighlightInput { - annotation: String - color: String - highlightId: ID! - html: String - quote: String - sharedAt: Date + annotation: String + color: String + highlightId: ID! + html: String + quote: String + sharedAt: Date } type UpdateHighlightReplyError { - errorCodes: [UpdateHighlightReplyErrorCode!]! + errorCodes: [UpdateHighlightReplyErrorCode!]! } enum UpdateHighlightReplyErrorCode { - FORBIDDEN - NOT_FOUND - UNAUTHORIZED + FORBIDDEN + NOT_FOUND + UNAUTHORIZED } input UpdateHighlightReplyInput { - highlightReplyId: ID! - text: String! + highlightReplyId: ID! + text: String! } union UpdateHighlightReplyResult = UpdateHighlightReplyError | UpdateHighlightReplySuccess type UpdateHighlightReplySuccess { - highlightReply: HighlightReply! + highlightReply: HighlightReply! } union UpdateHighlightResult = UpdateHighlightError | UpdateHighlightSuccess type UpdateHighlightSuccess { - highlight: Highlight! + highlight: Highlight! } type UpdateLabelError { - errorCodes: [UpdateLabelErrorCode!]! + errorCodes: [UpdateLabelErrorCode!]! } enum UpdateLabelErrorCode { - BAD_REQUEST - FORBIDDEN - NOT_FOUND - UNAUTHORIZED + BAD_REQUEST + FORBIDDEN + NOT_FOUND + UNAUTHORIZED } input UpdateLabelInput { - color: String! - description: String - labelId: ID! - name: String! + color: String! + description: String + labelId: ID! + name: String! } union UpdateLabelResult = UpdateLabelError | UpdateLabelSuccess type UpdateLabelSuccess { - label: Label! + label: Label! } type UpdateLinkShareInfoError { - errorCodes: [UpdateLinkShareInfoErrorCode!]! + errorCodes: [UpdateLinkShareInfoErrorCode!]! } enum UpdateLinkShareInfoErrorCode { - BAD_REQUEST - UNAUTHORIZED + BAD_REQUEST + UNAUTHORIZED } input UpdateLinkShareInfoInput { - description: String! - linkId: ID! - title: String! + description: String! + linkId: ID! + title: String! } union UpdateLinkShareInfoResult = UpdateLinkShareInfoError | UpdateLinkShareInfoSuccess type UpdateLinkShareInfoSuccess { - message: String! + message: String! } type UpdateNewsletterEmailError { - errorCodes: [UpdateNewsletterEmailErrorCode!]! + errorCodes: [UpdateNewsletterEmailErrorCode!]! } enum UpdateNewsletterEmailErrorCode { - BAD_REQUEST - UNAUTHORIZED + BAD_REQUEST + UNAUTHORIZED } input UpdateNewsletterEmailInput { - description: String - folder: String - id: ID! - name: String + description: String + folder: String + id: ID! + name: String } union UpdateNewsletterEmailResult = UpdateNewsletterEmailError | UpdateNewsletterEmailSuccess type UpdateNewsletterEmailSuccess { - newsletterEmail: NewsletterEmail! + newsletterEmail: NewsletterEmail! } type UpdatePageError { - errorCodes: [UpdatePageErrorCode!]! + errorCodes: [UpdatePageErrorCode!]! } enum UpdatePageErrorCode { - BAD_REQUEST - FORBIDDEN - NOT_FOUND - UNAUTHORIZED - UPDATE_FAILED + BAD_REQUEST + FORBIDDEN + NOT_FOUND + UNAUTHORIZED + UPDATE_FAILED } input UpdatePageInput { - byline: String - description: String - pageId: ID! - previewImage: String - publishedAt: Date - savedAt: Date - state: ArticleSavingRequestStatus - title: String + byline: String + description: String + pageId: ID! + previewImage: String + publishedAt: Date + savedAt: Date + state: ArticleSavingRequestStatus + title: String } union UpdatePageResult = UpdatePageError | UpdatePageSuccess type UpdatePageSuccess { - updatedPage: Article! + updatedPage: Article! } enum UpdateReason { - CREATED - DELETED - UPDATED + CREATED + DELETED + UPDATED } type UpdateReminderError { - errorCodes: [UpdateReminderErrorCode!]! + errorCodes: [UpdateReminderErrorCode!]! } enum UpdateReminderErrorCode { - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED } input UpdateReminderInput { - archiveUntil: Boolean! - id: ID! - remindAt: Date! - sendNotification: Boolean! + archiveUntil: Boolean! + id: ID! + remindAt: Date! + sendNotification: Boolean! } union UpdateReminderResult = UpdateReminderError | UpdateReminderSuccess type UpdateReminderSuccess { - reminder: Reminder! + reminder: Reminder! } type UpdateSharedCommentError { - errorCodes: [UpdateSharedCommentErrorCode!]! + errorCodes: [UpdateSharedCommentErrorCode!]! } enum UpdateSharedCommentErrorCode { - NOT_FOUND - UNAUTHORIZED + NOT_FOUND + UNAUTHORIZED } input UpdateSharedCommentInput { - articleID: ID! - sharedComment: String! + articleID: ID! + sharedComment: String! } union UpdateSharedCommentResult = UpdateSharedCommentError | UpdateSharedCommentSuccess type UpdateSharedCommentSuccess { - articleID: ID! - sharedComment: String! + articleID: ID! + sharedComment: String! } type UpdateSubscriptionError { - errorCodes: [UpdateSubscriptionErrorCode!]! + errorCodes: [UpdateSubscriptionErrorCode!]! } enum UpdateSubscriptionErrorCode { - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED } input UpdateSubscriptionInput { - autoAddToLibrary: Boolean - description: String - fetchContent: Boolean - folder: String - id: ID! - isPrivate: Boolean - lastFetchedAt: Date - lastFetchedChecksum: String - name: String - scheduledAt: Date - status: SubscriptionStatus + autoAddToLibrary: Boolean + description: String + fetchContent: Boolean + folder: String + id: ID! + isPrivate: Boolean + lastFetchedAt: Date + lastFetchedChecksum: String + name: String + scheduledAt: Date + status: SubscriptionStatus } union UpdateSubscriptionResult = UpdateSubscriptionError | UpdateSubscriptionSuccess type UpdateSubscriptionSuccess { - subscription: Subscription! + subscription: Subscription! } type UpdateUserError { - errorCodes: [UpdateUserErrorCode!]! + errorCodes: [UpdateUserErrorCode!]! } enum UpdateUserErrorCode { - BIO_TOO_LONG - EMPTY_NAME - UNAUTHORIZED - USER_NOT_FOUND + BIO_TOO_LONG + EMPTY_NAME + UNAUTHORIZED + USER_NOT_FOUND } input UpdateUserInput { - bio: String - name: String! + bio: String + name: String! } type UpdateUserProfileError { - errorCodes: [UpdateUserProfileErrorCode!]! + errorCodes: [UpdateUserProfileErrorCode!]! } enum UpdateUserProfileErrorCode { - BAD_DATA - BAD_USERNAME - FORBIDDEN - UNAUTHORIZED - USERNAME_EXISTS + BAD_DATA + BAD_USERNAME + FORBIDDEN + UNAUTHORIZED + USERNAME_EXISTS } input UpdateUserProfileInput { - bio: String - pictureUrl: String - userId: ID! - username: String + bio: String + pictureUrl: String + userId: ID! + username: String } union UpdateUserProfileResult = UpdateUserProfileError | UpdateUserProfileSuccess type UpdateUserProfileSuccess { - user: User! + user: User! } union UpdateUserResult = UpdateUserError | UpdateUserSuccess type UpdateUserSuccess { - user: User! + user: User! } type UpdatesSinceError { - errorCodes: [UpdatesSinceErrorCode!]! + errorCodes: [UpdatesSinceErrorCode!]! } enum UpdatesSinceErrorCode { - UNAUTHORIZED + UNAUTHORIZED } union UpdatesSinceResult = UpdatesSinceError | UpdatesSinceSuccess type UpdatesSinceSuccess { - edges: [SyncUpdatedItemEdge!]! - pageInfo: PageInfo! + edges: [SyncUpdatedItemEdge!]! + pageInfo: PageInfo! } type UploadFileRequestError { - errorCodes: [UploadFileRequestErrorCode!]! + errorCodes: [UploadFileRequestErrorCode!]! } enum UploadFileRequestErrorCode { - BAD_INPUT - FAILED_CREATE - UNAUTHORIZED + BAD_INPUT + FAILED_CREATE + UNAUTHORIZED } input UploadFileRequestInput { - clientRequestId: String - contentType: String! - createPageEntry: Boolean - url: String! + clientRequestId: String + contentType: String! + createPageEntry: Boolean + url: String! } union UploadFileRequestResult = UploadFileRequestError | UploadFileRequestSuccess type UploadFileRequestSuccess { - createdPageId: String - id: ID! - uploadFileId: ID - uploadSignedUrl: String + createdPageId: String + id: ID! + uploadFileId: ID + uploadSignedUrl: String } enum UploadFileStatus { - COMPLETED - INITIALIZED + COMPLETED + INITIALIZED } type UploadImportFileError { - errorCodes: [UploadImportFileErrorCode!]! + errorCodes: [UploadImportFileErrorCode!]! } enum UploadImportFileErrorCode { - BAD_REQUEST - UNAUTHORIZED - UPLOAD_DAILY_LIMIT_EXCEEDED + BAD_REQUEST + UNAUTHORIZED + UPLOAD_DAILY_LIMIT_EXCEEDED } union UploadImportFileResult = UploadImportFileError | UploadImportFileSuccess type UploadImportFileSuccess { - uploadSignedUrl: String + uploadSignedUrl: String } enum UploadImportFileType { - MATTER - POCKET - URL_LIST + MATTER + POCKET + URL_LIST } type User { - email: String - followersCount: Int - friendsCount: Int - id: ID! - intercomHash: String - isFriend: Boolean @deprecated(reason: "isFriend has been replaced with viewerIsFollowing") - isFullUser: Boolean - name: String! - picture: String - profile: Profile! - sharedArticles: [FeedArticle!]! - sharedArticlesCount: Int - sharedHighlightsCount: Int - sharedNotesCount: Int - source: String - viewerIsFollowing: Boolean + email: String + followersCount: Int + friendsCount: Int + id: ID! + intercomHash: String + isFriend: Boolean @deprecated(reason: "isFriend has been replaced with viewerIsFollowing") + isFullUser: Boolean + name: String! + picture: String + profile: Profile! + sharedArticles: [FeedArticle!]! + sharedArticlesCount: Int + sharedHighlightsCount: Int + sharedNotesCount: Int + source: String + viewerIsFollowing: Boolean } type UserError { - errorCodes: [UserErrorCode!]! + errorCodes: [UserErrorCode!]! } enum UserErrorCode { - BAD_REQUEST - UNAUTHORIZED - USER_NOT_FOUND + BAD_REQUEST + UNAUTHORIZED + USER_NOT_FOUND } type UserPersonalization { - fields: JSON - fontFamily: String - fontSize: Int - id: ID - libraryLayoutType: String - librarySortOrder: SortOrder - margin: Int - speechRate: String - speechSecondaryVoice: String - speechVoice: String - speechVolume: String - theme: String + fields: JSON + fontFamily: String + fontSize: Int + id: ID + libraryLayoutType: String + librarySortOrder: SortOrder + margin: Int + speechRate: String + speechSecondaryVoice: String + speechVoice: String + speechVolume: String + theme: String } union UserResult = UserError | UserSuccess type UserSuccess { - user: User! + user: User! } type UsersError { - errorCodes: [UsersErrorCode!]! + errorCodes: [UsersErrorCode!]! } enum UsersErrorCode { - UNAUTHORIZED + UNAUTHORIZED } union UsersResult = UsersError | UsersSuccess type UsersSuccess { - users: [User!]! + users: [User!]! } type Webhook { - contentType: String! - createdAt: Date! - enabled: Boolean! - eventTypes: [WebhookEvent!]! - id: ID! - method: String! - updatedAt: Date - url: String! + contentType: String! + createdAt: Date! + enabled: Boolean! + eventTypes: [WebhookEvent!]! + id: ID! + method: String! + updatedAt: Date + url: String! } type WebhookError { - errorCodes: [WebhookErrorCode!]! + errorCodes: [WebhookErrorCode!]! } enum WebhookErrorCode { - BAD_REQUEST - NOT_FOUND - UNAUTHORIZED + BAD_REQUEST + NOT_FOUND + UNAUTHORIZED } enum WebhookEvent { - HIGHLIGHT_CREATED - HIGHLIGHT_DELETED - HIGHLIGHT_UPDATED - LABEL_CREATED - LABEL_DELETED - LABEL_UPDATED - PAGE_CREATED - PAGE_DELETED - PAGE_UPDATED + HIGHLIGHT_CREATED + HIGHLIGHT_DELETED + HIGHLIGHT_UPDATED + LABEL_CREATED + LABEL_DELETED + LABEL_UPDATED + PAGE_CREATED + PAGE_DELETED + PAGE_UPDATED } union WebhookResult = WebhookError | WebhookSuccess type WebhookSuccess { - webhook: Webhook! + webhook: Webhook! } type WebhooksError { - errorCodes: [WebhooksErrorCode!]! + errorCodes: [WebhooksErrorCode!]! } enum WebhooksErrorCode { - BAD_REQUEST - UNAUTHORIZED + BAD_REQUEST + UNAUTHORIZED } union WebhooksResult = WebhooksError | WebhooksSuccess type WebhooksSuccess { - webhooks: [Webhook!]! + webhooks: [Webhook!]! } diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/core/network/SearchQuery.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/core/network/SearchQuery.kt index f12a73a42..f311e3e12 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/core/network/SearchQuery.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/core/network/SearchQuery.kt @@ -1,100 +1,90 @@ package app.omnivore.omnivore.core.network +import app.omnivore.omnivore.core.data.model.ServerSyncStatus import app.omnivore.omnivore.core.database.entities.Highlight import app.omnivore.omnivore.core.database.entities.SavedItem import app.omnivore.omnivore.core.database.entities.SavedItemLabel import app.omnivore.omnivore.graphql.generated.SearchQuery -import app.omnivore.omnivore.core.data.model.ServerSyncStatus import com.apollographql.apollo3.api.Optional data class LibrarySearchQueryResponse( - val cursor: String?, - val items: List + val cursor: String?, val items: List ) data class LibrarySearchItem( - val item: SavedItem, - val labels: List, - val highlights: List + val item: SavedItem, val labels: List, val highlights: List ) suspend fun Networker.search( - cursor: String? = null, - limit: Int = 15, - query: String + cursor: String? = null, limit: Int = 15, query: String ): LibrarySearchQueryResponse { - try { - val result = authenticatedApolloClient().query( - SearchQuery( - after = Optional.presentIfNotNull(cursor), - first = Optional.presentIfNotNull(limit), - query = Optional.presentIfNotNull(query) - ) - ).execute() + try { + val result = authenticatedApolloClient().query( + SearchQuery( + after = Optional.presentIfNotNull(cursor), + first = Optional.presentIfNotNull(limit), + query = Optional.presentIfNotNull(query) + ) + ).execute() - val newCursor = result.data?.search?.onSearchSuccess?.pageInfo?.endCursor - val itemList = result.data?.search?.onSearchSuccess?.edges ?: listOf() + val newCursor = result.data?.search?.onSearchSuccess?.pageInfo?.endCursor + val itemList = result.data?.search?.onSearchSuccess?.edges ?: listOf() - val searchItems = itemList.map { - LibrarySearchItem( - item = SavedItem( - savedItemId = it.node.id, - title = it.node.title, - createdAt = it.node.createdAt as String, - savedAt = it.node.savedAt as String, - readAt = it.node.readAt as String?, - updatedAt = it.node.updatedAt as String?, - readingProgress = it.node.readingProgressPercent, - readingProgressAnchor = it.node.readingProgressAnchorIndex, - imageURLString = it.node.image, - pageURLString = it.node.url, - descriptionText = it.node.description, - publisherURLString = it.node.originalArticleUrl, - siteName = it.node.siteName, - author = it.node.author, - publishDate = it.node.publishedAt as String?, - slug = it.node.slug, - isArchived = it.node.isArchived, - contentReader = it.node.contentReader.rawValue, - content = null, - wordsCount = it.node.wordsCount, - ), - labels = (it.node.labels ?: listOf()).map { label -> - SavedItemLabel( - savedItemLabelId = label.labelFields.id, - name = label.labelFields.name, - color = label.labelFields.color, - createdAt = label.labelFields.createdAt as String?, - labelDescription = null - ) - }, - highlights = (it.node.highlights ?: listOf()).map { highlight -> - Highlight( - highlightId = highlight.highlightFields.id, - type = highlight.highlightFields.type.toString(), - annotation = highlight.highlightFields.annotation, - createdByMe = highlight.highlightFields.createdByMe, - patch = highlight.highlightFields.patch, - prefix = highlight.highlightFields.prefix, - quote = highlight.highlightFields.quote, - serverSyncStatus = ServerSyncStatus.IS_SYNCED.rawValue, - shortId = highlight.highlightFields.shortId, - suffix = highlight.highlightFields.suffix, - updatedAt = highlight.highlightFields.updatedAt as String?, - createdAt = highlight.highlightFields.createdAt as String?, - color = highlight.highlightFields.color, - highlightPositionPercent = highlight.highlightFields.highlightPositionPercent, - highlightPositionAnchorIndex = highlight.highlightFields.highlightPositionAnchorIndex - ) + val searchItems = itemList.map { + LibrarySearchItem(item = SavedItem( + savedItemId = it.node.id, + title = it.node.title, + createdAt = it.node.createdAt as String, + savedAt = it.node.savedAt as String, + readAt = it.node.readAt as String?, + updatedAt = it.node.updatedAt as String?, + readingProgress = it.node.readingProgressPercent, + readingProgressAnchor = it.node.readingProgressAnchorIndex, + imageURLString = it.node.image, + pageURLString = it.node.url, + descriptionText = it.node.description, + publisherURLString = it.node.originalArticleUrl, + siteName = it.node.siteName, + author = it.node.author, + publishDate = it.node.publishedAt as String?, + slug = it.node.slug, + isArchived = it.node.isArchived, + contentReader = it.node.contentReader.rawValue, + content = null, + wordsCount = it.node.wordsCount, + ), labels = (it.node.labels ?: listOf()).map { label -> + SavedItemLabel( + savedItemLabelId = label.labelFields.id, + name = label.labelFields.name, + color = label.labelFields.color, + createdAt = label.labelFields.createdAt as String?, + labelDescription = null + ) + }, highlights = (it.node.highlights ?: listOf()).map { highlight -> + Highlight( + highlightId = highlight.highlightFields.id, + type = highlight.highlightFields.type.toString(), + annotation = highlight.highlightFields.annotation, + createdByMe = highlight.highlightFields.createdByMe, + patch = highlight.highlightFields.patch, + prefix = highlight.highlightFields.prefix, + quote = highlight.highlightFields.quote, + serverSyncStatus = ServerSyncStatus.IS_SYNCED.rawValue, + shortId = highlight.highlightFields.shortId, + suffix = highlight.highlightFields.suffix, + updatedAt = highlight.highlightFields.updatedAt as String?, + createdAt = highlight.highlightFields.createdAt as String?, + color = highlight.highlightFields.color, + highlightPositionPercent = highlight.highlightFields.highlightPositionPercent, + highlightPositionAnchorIndex = highlight.highlightFields.highlightPositionAnchorIndex + ) + }) } - ) - } - return LibrarySearchQueryResponse( - cursor = newCursor, - items = searchItems - ) - } catch (e: java.lang.Exception) { - return LibrarySearchQueryResponse(null, listOf()) - } + return LibrarySearchQueryResponse( + cursor = newCursor, items = searchItems + ) + } catch (e: java.lang.Exception) { + return LibrarySearchQueryResponse(null, listOf()) + } } diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/auth/LoginViewModel.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/auth/LoginViewModel.kt index 7ced32d09..36e4f273a 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/auth/LoginViewModel.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/auth/LoginViewModel.kt @@ -24,7 +24,7 @@ import app.omnivore.omnivore.core.network.RetrofitHelper import app.omnivore.omnivore.core.network.SignInParams import app.omnivore.omnivore.core.network.UserProfile import app.omnivore.omnivore.core.network.viewer -import app.omnivore.omnivore.feature.ResourceProvider +import app.omnivore.omnivore.utils.ResourceProvider import app.omnivore.omnivore.utils.Constants import app.omnivore.omnivore.utils.DatastoreKeys import com.apollographql.apollo3.ApolloClient diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/editinfo/EditInfoViewModel.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/editinfo/EditInfoViewModel.kt index befbe8f67..2d4197eca 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/editinfo/EditInfoViewModel.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/editinfo/EditInfoViewModel.kt @@ -13,7 +13,7 @@ import app.omnivore.omnivore.R import app.omnivore.omnivore.core.data.DataService import app.omnivore.omnivore.graphql.generated.UpdatePageMutation import app.omnivore.omnivore.graphql.generated.type.UpdatePageInput -import app.omnivore.omnivore.feature.ResourceProvider +import app.omnivore.omnivore.utils.ResourceProvider import com.apollographql.apollo3.ApolloClient import com.apollographql.apollo3.api.Optional import dagger.hilt.android.lifecycle.HiltViewModel diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/following/FollowingViewModel.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/following/FollowingViewModel.kt index f5012f550..82d23ceaa 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/following/FollowingViewModel.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/following/FollowingViewModel.kt @@ -69,7 +69,7 @@ class FollowingViewModel @Inject constructor( initialValue = FollowingUiState.Loading ) - val appliedFilterLiveData = MutableLiveData( + val appliedFilterLiveData = MutableLiveData( SavedItemFilter.FOLLOWING ) val appliedSortFilterLiveData = MutableLiveData(SavedItemSortFilter.NEWEST) @@ -159,7 +159,7 @@ class FollowingViewModel @Inject constructor( } } - fun updateSavedItemFilter(filter: SavedItemFilter) { + private fun updateSavedItemFilter(filter: SavedItemFilter) { viewModelScope.launch { datastoreRepo.putString(DatastoreKeys.lastUsedSavedItemFilter, filter.rawValue) appliedFilterLiveData.value = filter @@ -206,10 +206,9 @@ class FollowingViewModel @Inject constructor( } var requiredLabels = when (appliedFilterLiveData.value) { - SavedItemFilter.FOLLOWING -> listOf("Newsletter", "RSS") SavedItemFilter.NEWSLETTERS -> listOf("Newsletter") SavedItemFilter.FEEDS -> listOf("RSS") - else -> listOf("Newsletter", "RSS")//activeLabels.value.map { it.name } + else -> activeLabels.value.map { it.name } } activeLabels.value.let { it -> diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/library/LibraryViewModel.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/library/LibraryViewModel.kt index df331d547..3d805ba4c 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/library/LibraryViewModel.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/library/LibraryViewModel.kt @@ -51,7 +51,7 @@ class LibraryViewModel @Inject constructor( allowedArchiveStates = listOf(0), sortKey = "newest", requiredLabels = listOf(), - excludedLabels = listOf(), + excludedLabels = listOf("Newsletter", "RSS"), allowedContentReaders = listOf("WEB", "PDF", "EPUB") ) ) @@ -65,6 +65,7 @@ class LibraryViewModel @Inject constructor( ) val appliedFilterLiveData = MutableLiveData() + val appliedSortFilterLiveData = MutableLiveData(SavedItemSortFilter.NEWEST) val bottomSheetState = MutableLiveData(LibraryBottomSheetState.HIDDEN) val currentItem = mutableStateOf(null) @@ -198,7 +199,6 @@ class LibraryViewModel @Inject constructor( } var requiredLabels = when (appliedFilterLiveData.value) { - SavedItemFilter.FOLLOWING -> listOf("Newsletter", "RSS") SavedItemFilter.NEWSLETTERS -> listOf("Newsletter") SavedItemFilter.FEEDS -> listOf("RSS") else -> activeLabels.value.map { it.name } @@ -211,7 +211,7 @@ class LibraryViewModel @Inject constructor( val excludeLabels = when (appliedFilterLiveData.value) { SavedItemFilter.READ_LATER -> listOf("Newsletter", "RSS") - else -> listOf() + else -> listOf("Newsletter", "RSS") } _libraryQuery.value = LibraryQuery( diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/library/SavedItemFilter.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/library/SavedItemFilter.kt index 88a9dd8f4..a829e03ad 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/library/SavedItemFilter.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/library/SavedItemFilter.kt @@ -8,12 +8,13 @@ import androidx.compose.ui.text.font.FontWeight enum class SavedItemFilter(val displayText: String, val rawValue: String, val queryString: String) { FOLLOWING("Following", "following", "in:following use:folders"), - INBOX("Inbox", rawValue = "inbox", "in:inbox"), + INBOX("Inbox", rawValue = "inbox", "in:inbox use:folders"), READ_LATER("Non-Feed Items", "nonFeed", "no:subscription"), FEEDS("Feeds", "feeds", "in:inbox label:RSS"), NEWSLETTERS("Newsletters", "newsletters", "in:inbox label:Newsletter"), ALL("All", "all", "in:all"), ARCHIVED("Archived", "archived", "in:archive"), + // HAS_HIGHLIGHTS("Highlighted", "hasHighlights", "has:highlights"), FILES("Files", "files", "type:file"), } diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/save/SaveViewModel.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/save/SaveViewModel.kt index f2dba6cf7..9fbf64228 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/save/SaveViewModel.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/save/SaveViewModel.kt @@ -14,7 +14,7 @@ import app.omnivore.omnivore.core.datastore.DatastoreRepository import app.omnivore.omnivore.R import app.omnivore.omnivore.graphql.generated.SaveUrlMutation import app.omnivore.omnivore.graphql.generated.type.SaveUrlInput -import app.omnivore.omnivore.feature.ResourceProvider +import app.omnivore.omnivore.utils.ResourceProvider import com.apollographql.apollo3.ApolloClient import com.apollographql.apollo3.api.Optional import dagger.hilt.android.lifecycle.HiltViewModel