Files
commafeed-podcasts/docs/CommaFeed API.md
2026-04-24 14:03:17 +02:00

3601 lines
38 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
created: 2026-04-01T10:04:33 (UTC +02:00)
tags: []
source: https://rss.jaandrle.cz/api-documentation/
---
# CommaFeed API (OpenAPI UI, powered by Quarkus 3.31.4)
---
### [Admin](https://rss.jaandrle.cz/api-documentation/#/Admin)
GET/rest/admin/metrics
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
"string"
```
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
POST/rest/admin/user/delete
Delete a user, and all his subscriptions
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
"string"
```
| _No links_ |
| 400 |
Bad Request
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
GET/rest/admin/user/get/{id}
| Name | Description |
| --- | --- |
|
id \*
integer($int64)
(path)
|
user id
|
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
{
"id": 0,
"name": "string",
"email": "string",
"apiKey": "string",
"password": "string",
"enabled": true,
"created": "string",
"lastLogin": "string",
"admin": true,
"lastForceRefresh": "string"
}
```
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
GET/rest/admin/user/getAll
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
[
{
"id": 0,
"name": "string",
"email": "string",
"apiKey": "string",
"password": "string",
"enabled": true,
"created": "string",
"lastLogin": "string",
"admin": true,
"lastForceRefresh": "string"
}
]
```
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
POST/rest/admin/user/save
Save or update a user. If the id is not specified, a new user will be created
```
{
"id": 0,
"name": "string",
"email": "string",
"password": "string",
"enabled": true,
"admin": true
}
```
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
"string"
```
| _No links_ |
| 400 |
Bad Request
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
### [Feed categories](https://rss.jaandrle.cz/api-documentation/#/Feed%20categories)
POST/rest/category/add
```
{
"name": "string",
"parentId": "string"
}
```
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
0
```
| _No links_ |
| 400 |
Bad Request
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
POST/rest/category/collapse
Save collapsed or expanded status for a category
```
{
"id": 0,
"collapse": true
}
```
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
"string"
```
| _No links_ |
| 400 |
Bad Request
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
POST/rest/category/delete
Delete an existing feed category
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
"string"
```
| _No links_ |
| 400 |
Bad Request
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
GET/rest/category/entries
Get a list of category entries
| Name | Description |
| --- | --- |
|
excludedSubscriptionIds
string
(query)
|
comma-separated list of excluded subscription ids
|
|
id \*
string
(query)
|
id of the category, 'all' or 'starred'
|
|
keywords
string
(query)
|
search for keywords in either the title or the content of the entries, separated by spaces
|
|
limit
integer($int32)
(query)
|
limit for paging, default 20, maximum 1000
_Default value_ : 20
|
|
newerThan
integer($int64)
(query)
|
only entries newer than this
|
|
offset
integer($int32)
(query)
|
offset for paging
_Default value_ : 0
|
|
order
string
(query)
|
ordering
_Available values_ : asc, desc
_Default value_ : desc
|
|
readType \*
string
(query)
|
all entries or only unread ones
_Available values_ : all, unread
_Default value_ : unread
|
|
tag
string
(query)
|
keep only entries tagged with this tag
|
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
{
"name": "string",
"message": "string",
"errorCount": 0,
"feedLink": "string",
"timestamp": 0,
"hasMore": true,
"offset": 0,
"limit": 0,
"entries": [
{
"id": "string",
"guid": "string",
"title": "string",
"content": "string",
"categories": "string",
"rtl": true,
"author": "string",
"enclosureUrl": "string",
"enclosureType": "string",
"mediaDescription": "string",
"mediaThumbnailUrl": "string",
"mediaThumbnailWidth": 0,
"mediaThumbnailHeight": 0,
"date": "string",
"insertedDate": "string",
"feedId": "string",
"feedName": "string",
"feedUrl": "string",
"feedLink": "string",
"iconUrl": "string",
"url": "string",
"read": true,
"starred": true,
"markable": true,
"tags": [
"string"
]
}
],
"ignoredReadStatus": true
}
```
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
| 404 |
category not found
| _No links_ |
GET/rest/category/entriesAsFeed
Get a feed of category entries
| Name | Description |
| --- | --- |
|
excludedSubscriptionIds
string
(query)
|
comma-separated list of excluded subscription ids
|
|
id \*
string
(query)
|
id of the category, 'all' or 'starred'
|
|
keywords
string
(query)
|
search for keywords in either the title or the content of the entries, separated by spaces
|
|
limit
integer($int32)
(query)
|
limit for paging, default 20, maximum 1000
_Default value_ : 20
|
|
newerThan
integer($int64)
(query)
|
only entries newer than this
|
|
offset
integer($int32)
(query)
|
offset for paging
_Default value_ : 0
|
|
order
string
(query)
|
date ordering
_Available values_ : asc, desc
_Default value_ : desc
|
|
readType \*
string
(query)
|
all entries or only unread ones
_Available values_ : all, unread
_Default value_ : all
|
|
tag
string
(query)
|
keep only entries tagged with this tag
|
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
GET/rest/category/get
Get all categories and subscriptions of the user
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
{
"id": "string",
"parentId": "string",
"parentName": "string",
"name": "string",
"children": [
"string"
],
"feeds": [
{
"id": 0,
"name": "string",
"message": "string",
"errorCount": 0,
"lastRefresh": "string",
"nextRefresh": "string",
"feedUrl": "string",
"feedLink": "string",
"iconUrl": "string",
"unread": 0,
"categoryId": "string",
"position": 0,
"newestItemTime": "string",
"filter": "string",
"filterLegacy": "string",
"pushNotificationsEnabled": true,
"autoMarkAsReadAfterDays": 0
}
],
"expanded": true,
"position": 0
}
```
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
POST/rest/category/mark
Mark feed entries of this category as read
```
{
"id": "string",
"read": true,
"olderThan": 0,
"insertedBefore": 0,
"keywords": "string",
"excludedSubscriptions": [
0
]
}
```
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
"string"
```
| _No links_ |
| 400 |
Bad Request
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
POST/rest/category/modify
Modify an existing feed category
```
{
"id": 0,
"name": "string",
"parentId": "string",
"position": 0
}
```
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
"string"
```
| _No links_ |
| 400 |
Bad Request
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
GET/rest/category/unreadCount
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
[
{
"feedId": 0,
"unreadCount": 0,
"newestItemTime": "string"
}
]
```
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
### [Feed entries](https://rss.jaandrle.cz/api-documentation/#/Feed%20entries)
POST/rest/entry/mark
Mark a feed entry as read/unread
```
{
"id": "string",
"read": true,
"olderThan": 0,
"insertedBefore": 0,
"keywords": "string",
"excludedSubscriptions": [
0
]
}
```
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
"string"
```
| _No links_ |
| 400 |
Bad Request
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
POST/rest/entry/markMultiple
Mark feed entries as read/unread
```
{
"requests": [
{
"id": "string",
"read": true,
"olderThan": 0,
"insertedBefore": 0,
"keywords": "string",
"excludedSubscriptions": [
0
]
}
]
}
```
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
"string"
```
| _No links_ |
| 400 |
Bad Request
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
POST/rest/entry/star
Mark a feed entry as read/unread
```
{
"id": "string",
"feedId": 0,
"starred": true
}
```
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
"string"
```
| _No links_ |
| 400 |
Bad Request
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
POST/rest/entry/tag
```
{
"entryId": 0,
"tags": [
"string"
]
}
```
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
"string"
```
| _No links_ |
| 400 |
Bad Request
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
GET/rest/entry/tags
Get list of tags for the user
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
"string"
```
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
### [Feeds](https://rss.jaandrle.cz/api-documentation/#/Feeds)
GET/rest/feed/entries
Get a list of feed entries
| Name | Description |
| --- | --- |
|
id \*
string
(query)
|
id of the feed
|
|
keywords
string
(query)
|
search for keywords in either the title or the content of the entries, separated by spaces
|
|
limit
integer($int32)
(query)
|
limit for paging, default 20, maximum 1000
_Default value_ : 20
|
|
newerThan
integer($int64)
(query)
|
only entries newer than this
|
|
offset
integer($int32)
(query)
|
offset for paging
_Default value_ : 0
|
|
order
string
(query)
|
ordering
_Available values_ : asc, desc
_Default value_ : desc
|
|
readType \*
string
(query)
|
all entries or only unread ones
_Available values_ : all, unread
_Default value_ : unread
|
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
{
"name": "string",
"message": "string",
"errorCount": 0,
"feedLink": "string",
"timestamp": 0,
"hasMore": true,
"offset": 0,
"limit": 0,
"entries": [
{
"id": "string",
"guid": "string",
"title": "string",
"content": "string",
"categories": "string",
"rtl": true,
"author": "string",
"enclosureUrl": "string",
"enclosureType": "string",
"mediaDescription": "string",
"mediaThumbnailUrl": "string",
"mediaThumbnailWidth": 0,
"mediaThumbnailHeight": 0,
"date": "string",
"insertedDate": "string",
"feedId": "string",
"feedName": "string",
"feedUrl": "string",
"feedLink": "string",
"iconUrl": "string",
"url": "string",
"read": true,
"starred": true,
"markable": true,
"tags": [
"string"
]
}
],
"ignoredReadStatus": true
}
```
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
| 404 |
feed not found
| _No links_ |
GET/rest/feed/entriesAsFeed
Get a feed of feed entries
| Name | Description |
| --- | --- |
|
id \*
string
(query)
|
id of the feed
|
|
keywords
string
(query)
|
search for keywords in either the title or the content of the entries, separated by spaces
|
|
limit
integer($int32)
(query)
|
limit for paging, default 20, maximum 1000
_Default value_ : 20
|
|
newerThan
integer($int64)
(query)
|
only entries newer than this
|
|
offset
integer($int32)
(query)
|
offset for paging
_Default value_ : 0
|
|
order
string
(query)
|
date ordering
_Available values_ : asc, desc
_Default value_ : desc
|
|
readType \*
string
(query)
|
all entries or only unread ones
_Available values_ : all, unread
_Default value_ : all
|
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
GET/rest/feed/export
Export an OPML file of the user's subscriptions
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
GET/rest/feed/favicon/{id}
| Name | Description |
| --- | --- |
|
id \*
integer($int64)
(path)
|
subscription id
|
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
"string"
```
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
POST/rest/feed/fetch
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
{
"url": "string",
"title": "string"
}
```
| _No links_ |
| 400 |
Bad Request
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
| 404 |
feed not found
| _No links_ |
GET/rest/feed/get/{id}
| Name | Description |
| --- | --- |
|
id \*
integer($int64)
(path)
|
user id
|
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
{
"id": 0,
"name": "string",
"message": "string",
"errorCount": 0,
"lastRefresh": "string",
"nextRefresh": "string",
"feedUrl": "string",
"feedLink": "string",
"iconUrl": "string",
"unread": 0,
"categoryId": "string",
"position": 0,
"newestItemTime": "string",
"filter": "string",
"filterLegacy": "string",
"pushNotificationsEnabled": true,
"autoMarkAsReadAfterDays": 0
}
```
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
| 404 |
feed not found
| _No links_ |
POST/rest/feed/import
Import an OPML file, posted as a FORM with the 'file' name
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
"string"
```
| _No links_ |
| 400 |
Bad Request
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
POST/rest/feed/mark
Mark feed entries as read (unread is not supported)
```
{
"id": "string",
"read": true,
"olderThan": 0,
"insertedBefore": 0,
"keywords": "string",
"excludedSubscriptions": [
0
]
}
```
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
"string"
```
| _No links_ |
| 400 |
Bad Request
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
POST/rest/feed/modify
Modify a feed subscription
```
{
"id": 0,
"name": "string",
"categoryId": "string",
"position": 0,
"filter": "string",
"pushNotificationsEnabled": true,
"autoMarkAsReadAfterDays": 0
}
```
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
"string"
```
| _No links_ |
| 400 |
Bad Request
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
GET/rest/feed/refreshAll
Manually add all feeds of the user to the refresh queue
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
"string"
```
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
GET/rest/feed/subscribe
| Name | Description |
| --- | --- |
|
url \*
string
(query)
|
feed url
|
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
"string"
```
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
POST/rest/feed/subscribe
```
{
"url": "string",
"title": "string",
"categoryId": "string"
}
```
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
0
```
| _No links_ |
| 400 |
Bad Request
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
POST/rest/feed/unsubscribe
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
"string"
```
| _No links_ |
| 400 |
Bad Request
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
### [Server](https://rss.jaandrle.cz/api-documentation/#/Server)
GET/rest/server/get
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
{
"announcement": "string",
"version": "string",
"gitCommit": "string",
"allowRegistrations": true,
"emailAddressRequired": true,
"smtpEnabled": true,
"demoAccountEnabled": true,
"websocketEnabled": true,
"websocketPingInterval": 0,
"treeReloadInterval": 0,
"forceRefreshCooldownDuration": 0,
"initialSetupRequired": true,
"minimumPasswordLength": 0,
"pushNotificationsEnabled": true
}
```
| _No links_ |
GET/rest/server/proxy
| Name | Description |
| --- | --- |
|
u \*
string
(query)
|
image url
|
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
### [Users](https://rss.jaandrle.cz/api-documentation/#/Users)
POST/rest/user/initialSetup
This endpoint is only available when no users exist in the database
```
{
"name": "string",
"password": "string",
"email": "string"
}
```
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
"string"
```
| _No links_ |
| 400 |
Bad Request
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
POST/rest/user/passwordReset
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
"string"
```
| _No links_ |
| 400 |
Bad Request
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
POST/rest/user/passwordResetCallback
```
{
"email": "string",
"token": "string",
"password": "string"
}
```
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
"string"
```
| _No links_ |
| 400 |
Bad Request
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
POST/rest/user/profile
```
{
"currentPassword": "string",
"email": "string",
"newPassword": "string",
"newApiKey": true
}
```
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
"string"
```
| _No links_ |
| 400 |
Bad Request
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
GET/rest/user/profile
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
{
"id": 0,
"name": "string",
"email": "string",
"apiKey": "string",
"password": "string",
"enabled": true,
"created": "string",
"lastLogin": "string",
"admin": true,
"lastForceRefresh": "string"
}
```
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
POST/rest/user/profile/deleteAccount
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
"string"
```
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
POST/rest/user/pushNotificationTest
```
{
"type": "ntfy",
"serverUrl": "string",
"userId": "string",
"userSecret": "string",
"topic": "string"
}
```
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
"string"
```
| _No links_ |
| 400 |
Bad Request
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
POST/rest/user/register
```
{
"name": "string",
"password": "string",
"email": "string"
}
```
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
"string"
```
| _No links_ |
| 400 |
Bad Request
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
POST/rest/user/settings
```
{
"language": "string",
"readingMode": "all",
"readingOrder": "asc",
"showRead": true,
"scrollMarks": true,
"customCss": "string",
"customJs": "string",
"scrollSpeed": 0,
"scrollMode": "always",
"entriesToKeepOnTopWhenScrolling": 0,
"starIconDisplayMode": "always",
"externalLinkIconDisplayMode": "always",
"markAllAsReadConfirmation": true,
"markAllAsReadNavigateToNextUnread": true,
"customContextMenu": true,
"mobileFooter": true,
"unreadCountTitle": true,
"unreadCountFavicon": true,
"disablePullToRefresh": true,
"primaryColor": "string",
"sharingSettings": {
"email": true,
"gmail": true,
"facebook": true,
"twitter": true,
"tumblr": true,
"pocket": true,
"instapaper": true,
"buffer": true
},
"pushNotificationSettings": {
"type": "ntfy",
"serverUrl": "string",
"userId": "string",
"userSecret": "string",
"topic": "string"
}
}
```
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
"string"
```
| _No links_ |
| 400 |
Bad Request
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
GET/rest/user/settings
| Code | Description | Links |
| --- | --- | --- |
| 200 |
OK
Media type
Controls `Accept` header.
```
{
"language": "string",
"readingMode": "all",
"readingOrder": "asc",
"showRead": true,
"scrollMarks": true,
"customCss": "string",
"customJs": "string",
"scrollSpeed": 0,
"scrollMode": "always",
"entriesToKeepOnTopWhenScrolling": 0,
"starIconDisplayMode": "always",
"externalLinkIconDisplayMode": "always",
"markAllAsReadConfirmation": true,
"markAllAsReadNavigateToNextUnread": true,
"customContextMenu": true,
"mobileFooter": true,
"unreadCountTitle": true,
"unreadCountFavicon": true,
"disablePullToRefresh": true,
"primaryColor": "string",
"sharingSettings": {
"email": true,
"gmail": true,
"facebook": true,
"twitter": true,
"tumblr": true,
"pocket": true,
"instapaper": true,
"buffer": true
},
"pushNotificationSettings": {
"type": "ntfy",
"serverUrl": "string",
"userId": "string",
"userSecret": "string",
"topic": "string"
}
}
```
| _No links_ |
| 401 |
Not Authorized
| _No links_ |
| 403 |
Not Allowed
| _No links_ |
#### Schemas
**object**
- **string**\[1, 128\] characters
- **string**≤ 128 characters
parent category id, if any
**object**
- **integer**int64
- **string**
- **string**
- **string**
- **boolean**
- **boolean**
**object**
- **string**
- **string**
- **string**
- **string**
- **array<any>**
category children categories
**any**
$refhttps://rss.jaandrle.cz/openapi#/components/schemas/Category
- **array<object>**
**object**
- **integer**int64
- **string**
- **string**
error message while fetching the feed
- **integer**int32
- **any**
last time the feed was refreshed
- **any**
next time the feed refresh is planned, null if refresh is already queued
- **string**
this subscription's feed url
- **string**
this subscription's website url
- **string**
The favicon url to use for this feed
- **integer**int64
- **string**
- **integer**int32
position of the subscription's in the list
- **any**
- **string**
CEL string evaluated on new entries to mark them as read if they do not match
- **string**
- **boolean**
whether to send push notifications for new entries of this feed
- **integer**int32
automatically mark entries as read after this many days (null to disable)
- **boolean**
whether the category is expanded or collapsed
- **integer**int32
position of the category in the list
**object**
Category modification request
- **integer**int64
- **string**≤ 128 characters
new name, null if not changed
- **string**≤ 128 characters
- **integer**int32
new display position, null if not changed
**object**
- **integer**int64
- **boolean**
**object**
List of entries with some metadata
- **string**
name of the feed or the category requested
- **string**
- **integer**int32
times the server tried to refresh the feed and failed
- **string**
URL of the website, extracted from the feed, only filled if querying for feed entries, not category entries
- **integer**int64
list generation timestamp
- **boolean**
if the query has more elements
- **integer**int32
- **integer**int32
- **array<object>**
**object**
- **string**
- **string**
- **string**
- **string**
- **string**
comma-separated list of categories
- **boolean**
whether entry content and title are rtl
- **string**
- **string**
entry enclosure url, if any
- **string**
entry enclosure mime type, if any
- **string**
entry media description, if any
- **string**
entry media thumbnail url, if any
- **integer**int32
entry media thumbnail width, if any
- **integer**int32
entry media thumbnail height, if any
- **any**
- **any**
entry insertion date in the database
- **string**
- **string**
- **string**
- **string**
- **string**
The favicon url to use for this feed
- **string**
- **boolean**
- **boolean**
- **boolean**
whether the entry is still markable (old entry statuses are discarded)
- **array<string>**
- **boolean**
if true, the unread flag was ignored in the request, all entries are returned regardless of their read status
**object**
- **string**
- **string**
- **string**
- **string**
- **string**
comma-separated list of categories
- **boolean**
whether entry content and title are rtl
- **string**
- **string**
entry enclosure url, if any
- **string**
entry enclosure mime type, if any
- **string**
entry media description, if any
- **string**
entry media thumbnail url, if any
- **integer**int32
entry media thumbnail width, if any
- **integer**int32
entry media thumbnail height, if any
- **any**
- **any**
entry insertion date in the database
- **string**
- **string**
- **string**
- **string**
- **string**
The favicon url to use for this feed
- **string**
- **boolean**
- **boolean**
- **boolean**
whether the entry is still markable (old entry statuses are discarded)
- **array<string>**
**object**
- **string**
- **string**
**object**
- **string**\[1, 4096\] characters
**object**
Feed modification request
- **integer**int64
- **string**≤ 128 characters
new name, null if not changed
- **string**≤ 128 characters
- **integer**int32
new display position, null if not changed
- **string**≤ 4096 characters
CEL string evaluated on new entries to mark them as read if they do not match
- **boolean**
whether to send push notifications for new entries of this feed
- **integer**int32
automatically mark entries as read after this many days (null to disable)
**object**
**string**
**array**
- #0"always"
- #1"never"
- #2"on\_desktop"
- #3"on\_mobile"
**object**
Initial admin account setup request
- **string**
- **string**
- **string**
**object**
- **string**\[1, 128\] characters
entry id, category id, 'all' or 'starred'
- **boolean**
- **integer**int64
mark only entries older than this
- **integer**int64
pass the timestamp you got from the entry list to avoid marking entries that may have been fetched in the mean time and never displayed
- **string**≤ 128 characters
only mark read if a feed has these keywords in the title or rss content
- **array<integer>**
if marking a category or 'all', exclude those subscriptions from the marking
**object**
- **array<object>**
**object**
- **string**\[1, 128\] characters
entry id, category id, 'all' or 'starred'
- **boolean**
- **integer**int64
mark only entries older than this
- **integer**int64
pass the timestamp you got from the entry list to avoid marking entries that may have been fetched in the mean time and never displayed
- **string**≤ 128 characters
only mark read if a feed has these keywords in the title or rss content
- **array<integer>**
if marking a category or 'all', exclude those subscriptions from the marking
**object**
- **string**\[1, 255\] characters
email address for password recovery
- **string**≥ 1 characters
- **string**≥ 1 characters
**object**
- **string**\[1, 255\] characters
email address for password recovery
**object**
Profile modification request
- **string**\[1, 128\] characters
current user password, required to change profile data
- **string**≤ 255 characters
changes email of the user, if specified
- **string**
changes password of the user, if specified
- **boolean**
**object**
User notification settings
- **string**
notification provider type
**array**
- #0"ntfy"
- #1"gotify"
- #2"pushover"
- **string**
server URL for ntfy or gotify
- **string**
- **string**
user secret for authentication with the service
- **string**
**string**
**array**
- #0"ntfy"
- #1"gotify"
- #2"pushover"
**string**
**string**
**object**
- **string**\[3, 32\] characters
username, between 3 and 32 characters
- **string**≥ 1 characters
- **string**\[1, 255\] characters
email address for password recovery
**string**
**array**
- #0"always"
- #1"never"
- #2"if\_needed"
**object**
- allowRegistrations
**boolean**
- emailAddressRequired
**boolean**
- demoAccountEnabled
**boolean**
- websocketPingInterval
**integer**int64
- treeReloadInterval
**integer**int64
- forceRefreshCooldownDuration
**integer**int64
- initialSetupRequired
**boolean**
- minimumPasswordLength
**integer**int32
- pushNotificationsEnabled
**boolean**
**object**
- **string**
user's preferred language, english if none
- **string**
user reads all entries or unread entries only
- **string**
user reads entries in ascending or descending order
- **boolean**
user wants category and feeds with no unread entries shown
- **boolean**
In expanded view, scroll through entries mark them as read
- **string**
user's custom css for the website
- **string**
user's custom js for the website
- **integer**int32
user's preferred scroll speed when navigating between entries
- **string**
whether to scroll to the selected entry
**array**
- #0"always"
- #1"never"
- #2"if\_needed"
- **integer**int32
number of entries to keep above the selected entry when scrolling
- **string**
whether to show the star icon in the header of entries
**array**
- #0"always"
- #1"never"
- #2"on\_desktop"
- #3"on\_mobile"
- **string**
whether to show the external link icon in the header of entries
**array**
- #0"always"
- #1"never"
- #2"on\_desktop"
- #3"on\_mobile"
- **boolean**
ask for confirmation when marking all entries as read
- **boolean**
navigate to the next unread category or feed after marking all entries as read
- **boolean**
show commafeed's own context menu on right click
- **boolean**
on mobile, show action buttons at the bottom of the screen
- **boolean**
show unread count in the title
- **boolean**
show unread count in the favicon
- **boolean**
- **string**
primary theme color to use in the UI
- **object**
- **object**
push notification settings
- **string**
notification provider type
**array**
- #0"ntfy"
- #1"gotify"
- #2"pushover"
- **string**
server URL for ntfy or gotify
- **string**
- **string**
user secret for authentication with the service
- **string**
**object**
**object**
- **string**\[1, 128\] characters
- **integer**int64
- **boolean**
**object**
- **string**\[1, 4096\] characters
- **string**\[1, 128\] characters
name of the feed for the user
- **string**≤ 128 characters
id of the user category to place the feed in
**object**
- **integer**int64
- **string**
- **string**
error message while fetching the feed
- **integer**int32
- **any**
last time the feed was refreshed
- **any**
next time the feed refresh is planned, null if refresh is already queued
- **string**
this subscription's feed url
- **string**
this subscription's website url
- **string**
The favicon url to use for this feed
- **integer**int64
- **string**
- **integer**int32
position of the subscription's in the list
- **any**
- **string**
CEL string evaluated on new entries to mark them as read if they do not match
- **string**
- **boolean**
whether to send push notifications for new entries of this feed
- **integer**int32
automatically mark entries as read after this many days (null to disable)
**object**
- **integer**int64
- **array<string>**
**object**
- **any**
**object**
- **integer**int64
- **string**
- **string**
- **string**
- **string**
user password, never returned by the api
- **boolean**
- **any**
- **any**
- **boolean**
- **any**