38 KiB
created, tags, source
| created | tags | source |
|---|---|---|
| 2026-04-01T10:04:33 (UTC +02:00) | https://rss.jaandrle.cz/api-documentation/ |
CommaFeed API (OpenAPI UI, powered by Quarkus 3.31.4)
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
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
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
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
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
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
-
integerint64
-
string
-
string
-
string
-
boolean
-
boolean
object
-
string
-
string
-
string
-
string
-
array
category children categories
any
$refhttps://rss.jaandrle.cz/openapi#/components/schemas/Category
-
array