# Tranga API Calls v2
This document outlines all different HTTP API calls that Tranga accepts.
Tranga expects specific HTTP methods for its calls and therefore careful attention must be paid when making them.
`apiUri` refers to your `http(s)://TRANGA.FRONTEND.URI/api`.
Parameters are included in the HTTP request URI and/or the request body.
The request Body is in JSON key-value-pair format, with all values as strings.
Tranga responses are always in the JSON format within the Response Body.
Parameters in *italics* are optional
### Quick Entry
* [Connectors](#connectors-top)
* [Manga](#manga-top)
* [Jobs](#jobs-top)
* [Settings](#settings-top)
* [Library Connectors](#library-connectors-top)
* [Notification Connectors](#notification-connectors-top)
* [Miscellaneous](#miscellaneous-top)
## Connectors [^top](#top)
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Connector/Types`
Returns available Manga Connectors (Scanlation sites)
Returns
List of strings with Names.
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Connector//GetManga`
Returns the Manga from the specified Manga Connector.
Request
`ConnectorName` is returned in the response of [GET /v2/Connector/Types](#-v2connectortypes)
Use either `title` or `url` Parameter.
| Parameter | Value |
|-----------|-------------------------------------------------|
| title | Search Term |
| url | Direct link (URL) to the Manga on the used Site |
Returns
List of [Manga](Types.md#Manga)
| StatusCode | Meaning |
|------------|--------------------------|
| 400 | Connector does not exist |
| 404 | URL/Connector Mismatch |
## Manga [^top](#top)
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Manga/`
Returns the specified Manga.
Request
`internalId` is returned in the response of
* [GET /v2/Connector/*ConnectorName*/GetManga](#-v2connectorconnectornamegetmanga)
* [GET /v2/Job/*jobId*](#-v2jobjobid)
Returns
[Manga](Types.md#manga)
| StatusCode | Meaning |
|------------|--------------------------------------------|
| 404 | Manga with `internalId` could not be found |
### ![DELETE](https://img.shields.io/badge/DELETE-f00) `/v2/Manga/`
Deletes all associated Jobs for the specified Manga
Request
`internalId` is returned in the response of
* [GET /v2/Connector/*ConnectorName*/GetManga](#-v2connectorconnectornamegetmanga)
* [GET /v2/Job/*jobId*](#-v2jobjobid)
Returns
| StatusCode | Meaning |
|------------|--------------------------------------------|
| 200 | Jobs were deleted |
| 404 | Manga with `internalId` could not be found |
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Manga//Cover`
Returns the URL for the Cover of the specified Manga.
Request
`internalId` is returned in the response of
* [GET /v2/Connector/*ConnectorName*/GetManga](#-v2connectorconnectornamegetmanga)
* [GET /v2/Job/*jobId*](#-v2jobjobid)
Returns
String with the url.
| StatusCode | Meaning |
|------------|--------------------------------------------|
| 404 | Manga with `internalId` could not be found |
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Manga//Chapters`
Returns the Chapter-list for the specified Manga.
Request
`internalId` is returned in the response of
* [GET /v2/Connector/*ConnectorName*/GetManga](#-v2connectorconnectornamegetmanga)
* [GET /v2/Job/*jobId*](#-v2jobjobid)
Returns
List of [Chapters](Types.md/#chapter)
| StatusCode | Meaning |
|------------|--------------------------------------------|
| 404 | Manga with `internalId` could not be found |
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Manga//Chapters/latest`
Returns the latest Chapter of the specified Manga.
Request
`internalId` is returned in the response of
* [GET /v2/Connector/*ConnectorName*/GetManga](#-v2connectorconnectornamegetmanga)
* [GET /v2/Job/*jobId*](#-v2jobjobid)
Returns
[Chapter](Types.md/#chapter)
| StatusCode | Meaning |
|------------|--------------------------------------------|
| 404 | Manga with `internalId` could not be found |
## Jobs [^top](#top)
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Jobs`
Returns all configured Jobs.
Returns
List of JobIds.
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Jobs/Running`
Returns all Running Jobs.
Returns
List of JobIds.
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Jobs/Waiting`
Returns all Waiting Jobs.
Returns
List of JobIds.
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Jobs/Monitoring`
Returns all Monitoring Jobs.
Returns
List of JobIds.
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Job/Types`
Returns the valid Job-Types.
Returns
List of strings.
### ![POST](https://img.shields.io/badge/POST-00f) `/v2/Job/Create/`
Creates a Job.
Request
`Type` is returned in the response of [GET /v2/Job/Types](#-v2jobtypes)
| Parameter | Value |
|------------|---------------------------------------------------------------------------------------------------|
| connector | Name of the connector to use |
| internalId | Manga ID |
| *interval* | Interval at which the Job is re-run in HH:MM:SS format
Only for MonitorManga, UpdateMetadata |
| *language* | Translated language
Only for MonitorManga, DownloadNewChapters and DownloadChapter |
`internalId` is returned in the response of
* [GET /v2/Connector/*ConnectorName*/GetManga](#-v2connectorconnectornamegetmanga)
* [GET /v2/Job/*jobId*](#-v2jobjobid)
Returns
[Job](Types.md#job)
| StatusCode | Meaning |
|------------|------------------------------------------|
| 404 | Parameter missing or could not be found. |
| 500 | Error parsing interval |
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Job/`
Returns the specified Job.
Request
`jobId` is returned in the response of
* [GET /v2/Jobs](#-v2jobs)
* [GET /v2/Jobs/Running](#-v2jobsrunning)
* [GET /v2/Jobs/Waiting](#-v2jobswaiting)
* [GET /v2/Jobs/Monitoring](#-v2jobsmonitoring)
Returns
[Job](Types.md#job)
| StatusCode | Meaning |
|------------|---------------------------------------|
| 404 | Manga with `jobId` could not be found |
### ![DELETE](https://img.shields.io/badge/DELETE-f00) `/v2/Job/`
Deletes the specified Job and all descendants.
Request
`jobId` is returned in the response of
* [GET /v2/Jobs](#-v2jobs)
* [GET /v2/Jobs/Running](#-v2jobsrunning)
* [GET /v2/Jobs/Waiting](#-v2jobswaiting)
* [GET /v2/Jobs/Monitoring](#-v2jobsmonitoring)
Returns
| StatusCode | Meaning |
|------------|---------------------------------------|
| 200 | Job deleted |
| 404 | Manga with `jobId` could not be found |
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Job//Progress`
Returns the progress the of the specified Job.
Request
`jobId` is returned in the response of
* [GET /v2/Jobs](#-v2jobs)
* [GET /v2/Jobs/Running](#-v2jobsrunning)
* [GET /v2/Jobs/Waiting](#-v2jobswaiting)
* [GET /v2/Jobs/Monitoring](#-v2jobsmonitoring)
Returns
[ProgressToken](Types.md#progresstoken)
| StatusCode | Meaning |
|------------|---------------------------------------|
| 404 | Manga with `jobId` could not be found |
### ![POST](https://img.shields.io/badge/POST-00f) `/v2/Job//StartNow`
Starts the specified Job.
Request
`jobId` is returned in the response of
* [GET /v2/Jobs](#-v2jobs)
* [GET /v2/Jobs/Running](#-v2jobsrunning)
* [GET /v2/Jobs/Waiting](#-v2jobswaiting)
* [GET /v2/Jobs/Monitoring](#-v2jobsmonitoring)
Returns
| StatusCode | Meaning |
|------------|---------------------------------------|
| 200 | Job started |
| 404 | Manga with `jobId` could not be found |
### ![POST](https://img.shields.io/badge/POST-00f) `/v2/Job//Cancel`
Cancels the specified Job, or dequeues it.
Request
`jobId` is returned in the response of
* [GET /v2/Jobs](#-v2jobs)
* [GET /v2/Jobs/Running](#-v2jobsrunning)
* [GET /v2/Jobs/Waiting](#-v2jobswaiting)
* [GET /v2/Jobs/Monitoring](#-v2jobsmonitoring)
Returns
| StatusCode | Meaning |
|------------|---------------------------------------|
| 200 | Job cancelled |
| 404 | Manga with `jobId` could not be found |
### ![POST](https://img.shields.io/badge/POST-00f) `/v2/Job//SetInterval`
Edits the specified Job.
Request
`jobId` is returned in the response of
* [GET /v2/Jobs](#-v2jobs)
* [GET /v2/Jobs/Running](#-v2jobsrunning)
* [GET /v2/Jobs/Waiting](#-v2jobswaiting)
* [GET /v2/Jobs/Monitoring](#-v2jobsmonitoring)
Returns
| StatusCode | Meaning |
|------------|---------------------------------------|
| 404 | Manga with `jobId` could not be found |
## Settings [^top](#top)
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Settings`
Returns the `settings.json` file.
Returns
[Settings](Types.md#settings)
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Settings/UserAgent`
Returns the current User Agent used for Requests.
Returns
[UserAgent](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent)
### ![POST](https://img.shields.io/badge/POST-00f) `/v2/Settings/UserAgent`
Sets the User Agent. If left empty, User Agent is reset to default.
Request
| Parameter | Value |
|-----------|----------------------------------------------------------------------------------------|
| value | New [UserAgent](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent) |
Returns
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Settings/RateLimit/Types`
Returns the configurable Rate-Limits.
Returns
List of Rate-Limit-Names.
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Settings/RateLimit`
Returns the current configuration of Rate-Limits for Requests.
Returns
Dictionary of `Rate-Limits` and `Requests per Minute`
### ![POST](https://img.shields.io/badge/POST-00f) `/v2/Settings/RateLimit`
Sets the Rate-Limits for all Requests. If left empty, resets to default Rate-Limits.
Request
For each Rate-Limit set as follows:
| Parameter | Value |
|------------------------------------|---------------------|
| [Type](#-v2settingsratelimittypes) | Requests per Minute |
`Type` is returned by [GET /v2/Settings/RateLimit/Types](#-v2settingsratelimittypes)
Returns
| StatusCode | Meaning |
|------------|--------------------------------|
| 404 | Rate-Limit-Name does not exist |
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Settings/RateLimit/`
Returns the current Rate-Limit for the Request-Type.
Request
`Type` is returned by [GET /v2/Settings/RateLimit/Types](#-v2settingsratelimittypes)
Returns
Integer with Requests per Minute.
### ![POST](https://img.shields.io/badge/POST-00f) `/v2/Settings/RateLimit/`
Sets the Rate-Limit for the Request-Type in Requests per Minute.
Request
`Type` is returned by [GET /v2/Settings/RateLimit/Types](#-v2settingsratelimittypes)
| Parameter | Value |
|-----------|---------------------|
| value | Requests per Minute |
Returns
| StatusCode | Meaning |
|------------|--------------------------------|
| 404 | Rate-Limit-Name does not exist |
| 500 | Parsing Error |
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Settings/AprilFoolsMode`
Returns the current state of the April-Fools-Mode setting.
Returns
Boolean
### ![POST](https://img.shields.io/badge/POST-00f) `/v2/Settings/AprilFoolsMode`
Enables/Disables April-Fools-Mode.
Request
| Parameter | Value |
|-----------|------------|
| value | true/false |
Returns
| StatusCode | Meaning |
|------------|--------------------------------|
| 404 | Rate-Limit-Name does not exist |
| 500 | Parsing Error |
### ![POST](https://img.shields.io/badge/POST-00f) `/v2/Settings/DownloadLocation`
Updates the default Download-Location.
Request
| Parameter | Value |
|-------------|------------------|
| location | New Folder-Path |
| *moveFiles* | __*true*__/false |
Returns
| StatusCode | Meaning |
|------------|--------------------------|
| 200 | Successfully changed |
| 500 | Files could not be moved |
## Library Connectors [^top](#top)
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/LibraryConnector`
Returns the configured Library-Connectors.
Returns
List of [LibraryConnectors](Types.md#libraryconnector)
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/LibraryConnector/Types`
Returns the available Library-Connector types.
Returns
List of String of Names.
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/LibraryConnector/`
Returns the Library-Connector for the specified Type.
Request
`Type` is returned by [GET /v2/LibraryConnector/Types](#-v2libraryconnectortypes)
Returns
[LibraryConnector](Types.md#libraryconnector)
| StatusCode | Meaning |
|------------|---------------------------------------|
| 404 | Library Connector Type does not exist |
### ![POST](https://img.shields.io/badge/POST-00f) `/v2/LibraryConnector/`
Creates a Library-Connector of the specified Type.
Request
`Type` is returned by [GET /v2/LibraryConnector/Types](#-v2libraryconnectortypes)
| Parameter | Value |
|-------------|--------------------|
| URL | URL of the Library |
#### Type specific Parameters (must be included for each)
* Komga
| Parameter | Value |
|-----------|-------------------------------------------------------------------------------------------------------------------|
| auth | [Base64 encoded Basic-Authentication-String](https://datatracker.ietf.org/doc/html/rfc7617) (`username:password`) |
* Kavita
| Parameter | Value |
|-----------|-----------------|
| username | Kavita Username |
| password | Kavita Password |
Returns
[LibraryConnector](Types.md#libraryconnector)
| StatusCode | Meaning |
|------------|----------------------------------|
| 404 | Library Connector does not exist |
| 500 | Parsing Error |
### ![POST](https://img.shields.io/badge/POST-00f) `/v2/LibraryConnector//Test`
Tests a Library-Connector of the specified Type.
Request
`Type` is returned by [GET /v2/LibraryConnector/Types](#-v2libraryconnectortypes)
| Parameter | Value |
|-------------|--------------------|
| URL | URL of the Library |
#### Type specific Parameters (must be included for each)
* Komga
| Parameter | Value |
|-----------|-------------------------------------------------------------------------------------------------------------------|
| auth | [Base64 encoded Basic-Authentication-String](https://datatracker.ietf.org/doc/html/rfc7617) (`username:password`) |
* Kavita
| Parameter | Value |
|-----------|-----------------|
| username | Kavita Username |
| password | Kavita Password |
Returns
| StatusCode | Meaning |
|------------|---------------------------------------|
| 200 | Test successful |
| 404 | Library Connector Type does not exist |
| 408 | Test failed |
| 500 | Parsing Error |
### ![DELETE](https://img.shields.io/badge/DELETE-f00) `/v2/LibraryConnector/`
Deletes the Library-Connector of the specified Type.
Request
`Type` is returned by [GET /v2/LibraryConnector/Types](#-v2libraryconnectortypes)
Returns
| StatusCode | Meaning |
|------------|---------------------------------------|
| 200 | Deleted |
| 404 | Library Connector Type does not exist |
## Notification Connectors [^top](#top)
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/NotificationConnector`
Returns the configured Notification-Connectors.
Returns
List of [NotificationConnectors](Types.md#notificationconnector)
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/NotificationConnector/Types`
Returns the available Notification-Connectors.
Returns
List of String of Names.
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/NotificationConnector/`
Returns the configured Notification-Connector of the specified Type.
Request
`Type` is returned by [GET /v2/NotificationConnector/Types](#-v2notificationconnectortypes)
Returns
[Notification Connector](Types.md#notificationconnector)
| StatusCode | Meaning |
|------------|---------------------------------------|
| 404 | Library Connector Type does not exist |
### ![POST](https://img.shields.io/badge/POST-00f) `/v2/NotificationConnector/`
Creates a Notification-Connector of the specified Type.
Request
`Type` is returned by [GET /v2/NotificationConnector/Types](-v2notificationconnectortypes)
#### Type specific Parameters (must be included for each)
* Gotify
| Parameter | Value |
|-----------|---------------------------------------|
| url | URL of the Gotify Instance |
| appToken | AppToken of the configured Gotify App |
* LunaSea
| Parameter | Value |
|-----------|-----------------|
| webhook | LunaSea Webhook |
* Nty
| Parameter | Value |
|-----------|--------------------------|
| url | URL of the Ntfy Instance |
| auth | Auth-String |
Returns
[NotificationConnector](Types.md#notificationconnector)
| StatusCode | Meaning |
|------------|--------------------------------------------|
| 404 | Notification Connector Type does not exist |
| 500 | Parsing Error |
### ![POST](https://img.shields.io/badge/POST-00f) `/v2/NotificationConnector//Test`
Tests a Notification-Connector of the specified Type.
Request
`Type` is returned by [GET /v2/NotificationConnector/Types](#-v2notificationconnectortypes)
#### Type specific Parameters (must be included for each)
* Gotify
| Parameter | Value |
|-----------|---------------------------------------|
| url | URL of the Gotify Instance |
| appToken | AppToken of the configured Gotify App |
* LunaSea
| Parameter | Value |
|-----------|-----------------|
| webhook | LunaSea Webhook |
* Ntfy
| Parameter | Value |
|-----------|--------------------------|
| url | URL of the Ntfy Instance |
| auth | Auth-String |
Returns
| StatusCode | Meaning |
|------------|--------------------------------------------|
| 200 | Test successful |
| 404 | Notification Connector Type does not exist |
| 408 | Test failed |
| 500 | Parsing Error |
### ![DELETE](https://img.shields.io/badge/DELETE-f00) `/v2/NotificationConnector/`
Deletes the Notification-Connector of the specified Type.
Request
`Type` is returned by [GET /v2/NotificationConnector/Types](#-v2notificationconnectortypes)
Returns
| StatusCode | Meaning |
|------------|--------------------------------------------|
| 200 | Deleted |
| 404 | Notification Connector Type does not exist |
## Miscellaneous [^top](#top)
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/LogFile`
Returns the current log-file.
Returns
The Logfile as Stream.
### ![GET](https://img.shields.io/badge/GET-0f0) `/v2/Ping`
Pong!
### ![POST](https://img.shields.io/badge/POST-00f) `/v2/Ping`
Pong!