Files
newznab-tmux-NNTmux/docs/postman/nntmux_api_v2.postman_collection.json
T
2026-07-14 20:18:04 +02:00

648 lines
22 KiB
JSON

{
"info": {
"_postman_id": "5f2f7e0b-66a9-4d0f-9f68-2a0e7ac5d4f2",
"name": "NNTmux API v2",
"description": "Code-aligned collection for NNTmux `/api/v2` endpoints.\n\nSource references:\n- routes/api.php\n- app/Http/Controllers/Api/ApiV2Controller.php\n- app/Transformers/ApiTransformer.php\n- app/Transformers/DetailsTransformer.php\n\nNotes:\n- `capabilities` is public.\n- Other endpoints require `api_token` query param and may also be guarded by `auth:api` middleware depending on server auth setup.\n- `details` returns a single object (`link` field), while search endpoints return an envelope with `Results` (`url` field).",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
},
"variable": [
{
"key": "baseUrl",
"value": "https://example.com"
},
{
"key": "apiToken",
"value": "replace-with-user-api-token"
},
{
"key": "guid",
"value": "replace-with-release-guid"
}
],
"item": [
{
"name": "Capabilities",
"request": {
"method": "GET",
"header": [],
"description": "Public capabilities endpoint with server info, registration flags, supported search params, and category tree.",
"url": {
"raw": "{{baseUrl}}/api/v2/capabilities",
"host": [
"{{baseUrl}}"
],
"path": [
"api",
"v2",
"capabilities"
]
}
},
"response": [
{
"name": "200 OK - Capabilities",
"originalRequest": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/v2/capabilities",
"host": [
"{{baseUrl}}"
],
"path": [
"api",
"v2",
"capabilities"
]
}
},
"status": "OK",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"cookie": [],
"body": "{\n \"server\": {\n \"title\": \"NNTmux\",\n \"strapline\": \"High speed indexing\",\n \"email\": \"admin@example.com\",\n \"url\": \"https://example.com\"\n },\n \"limits\": {\n \"max\": 100,\n \"default\": 100\n },\n \"searching\": {\n \"search\": {\n \"available\": \"yes\",\n \"supportedParams\": \"id\"\n },\n \"tv-search\": {\n \"available\": \"yes\",\n \"supportedParams\": \"id,vid,tvdbid,traktid,rid,tvmazeid,imdbid,tmdbid,season,ep\"\n },\n \"movie-search\": {\n \"available\": \"yes\",\n \"supportedParams\": \"id, imdbid, tmdbid, traktid\"\n },\n \"audio-search\": {\n \"available\": \"no\",\n \"supportedParams\": \"\"\n }\n },\n \"registration\": {\n \"available\": \"no\",\n \"open\": \"yes\"\n },\n \"categories\": [\n {\n \"id\": 2000,\n \"name\": \"Movies\",\n \"subcategories\": {\n \"2030\": \"SD\",\n \"2040\": \"HD\"\n }\n }\n ]\n}"
}
]
},
{
"name": "Search",
"request": {
"method": "GET",
"header": [],
"description": "General search. If `id` is omitted, backend returns browse-style recent releases using provided filters.",
"url": {
"raw": "{{baseUrl}}/api/v2/search?api_token={{apiToken}}&id=linux&cat=1000,2000&offset=0&limit=100&maxage=30&minsize=0",
"host": [
"{{baseUrl}}"
],
"path": [
"api",
"v2",
"search"
],
"query": [
{
"key": "api_token",
"value": "{{apiToken}}"
},
{
"key": "id",
"value": "linux",
"description": "Search text (optional)."
},
{
"key": "cat",
"value": "1000,2000",
"description": "Comma-separated categories (optional)."
},
{
"key": "offset",
"value": "0"
},
{
"key": "limit",
"value": "100"
},
{
"key": "maxage",
"value": "30"
},
{
"key": "minsize",
"value": "0"
}
]
}
},
"response": [
{
"name": "200 OK - Search Results",
"originalRequest": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/v2/search?api_token={{apiToken}}&id=linux&cat=1000,2000&offset=0&limit=100&maxage=30&minsize=0",
"host": [
"{{baseUrl}}"
],
"path": [
"api",
"v2",
"search"
],
"query": [
{
"key": "api_token",
"value": "{{apiToken}}"
},
{
"key": "id",
"value": "linux"
}
]
}
},
"status": "OK",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"cookie": [],
"body": "{\n \"Total\": 123,\n \"apiCurrent\": 2,\n \"apiMax\": 1000,\n \"grabCurrent\": 1,\n \"grabMax\": 100,\n \"apiOldestTime\": \"Wed, 20 Nov 2024 12:00:00 +0000\",\n \"grabOldestTime\": \"\",\n \"Results\": [\n {\n \"title\": \"Linux.ISO.Collection.2024-11\",\n \"details\": \"https://example.com/details/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n \"url\": \"https://example.com/getnzb?id=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.nzb&r=replace-with-user-api-token\",\n \"category\": 4050,\n \"category_name\": \"PC > 0day\",\n \"added\": \"Wed, 20 Nov 2024 12:00:00 +0000\",\n \"size\": 734003200,\n \"files\": 55,\n \"grabs\": null,\n \"comments\": null,\n \"password\": 0,\n \"usenetdate\": \"Wed, 20 Nov 2024 10:00:00 +0000\"\n }\n ]\n}"
},
{
"name": "403 Forbidden - Missing or Invalid API Key",
"originalRequest": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/v2/search?id=linux",
"host": [
"{{baseUrl}}"
],
"path": [
"api",
"v2",
"search"
],
"query": [
{
"key": "id",
"value": "linux"
}
]
}
},
"status": "Bad Request",
"code": 400,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"cookie": [],
"body": "{\n \"error\": \"Missing parameter (api_token)\"\n}"
}
]
},
{
"name": "TV Search",
"request": {
"method": "GET",
"header": [],
"description": "TV-focused search by external IDs and/or title. Daily episode lookup is supported with `season=YYYY` and `ep=MM/DD`.",
"url": {
"raw": "{{baseUrl}}/api/v2/tv?api_token={{apiToken}}&id=law and order&season=7&ep=12&tvdbid=153021",
"host": [
"{{baseUrl}}"
],
"path": [
"api",
"v2",
"tv"
],
"query": [
{
"key": "api_token",
"value": "{{apiToken}}"
},
{
"key": "id",
"value": "law and order",
"description": "Title query (optional)."
},
{
"key": "season",
"value": "7"
},
{
"key": "ep",
"value": "12"
},
{
"key": "tvdbid",
"value": "153021",
"description": "Optional external IDs: vid, tvdbid, traktid, rid, tvmazeid, imdbid, tmdbid."
}
]
}
},
"response": [
{
"name": "200 OK - TV Results",
"originalRequest": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/v2/tv?api_token={{apiToken}}&id=law and order&season=7&ep=12&tvdbid=153021",
"host": [
"{{baseUrl}}"
],
"path": [
"api",
"v2",
"tv"
]
}
},
"status": "OK",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"cookie": [],
"body": "{\n \"Total\": 1,\n \"apiCurrent\": 5,\n \"apiMax\": 1000,\n \"grabCurrent\": 1,\n \"grabMax\": 100,\n \"apiOldestTime\": \"Wed, 20 Nov 2024 12:00:00 +0000\",\n \"grabOldestTime\": \"\",\n \"Results\": [\n {\n \"title\": \"Law.And.Order.S07E12.1080p.WEB-DL\",\n \"details\": \"https://example.com/details/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\",\n \"url\": \"https://example.com/getnzb?id=bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.nzb&r=replace-with-user-api-token\",\n \"category\": 5040,\n \"category_name\": \"TV > HD\",\n \"added\": \"Wed, 20 Nov 2024 12:30:00 +0000\",\n \"size\": 1450971565,\n \"files\": 44,\n \"grabs\": 3,\n \"comments\": 0,\n \"password\": 0,\n \"usenetdate\": \"Wed, 20 Nov 2024 10:30:00 +0000\",\n \"episode_title\": \"Final Answer\",\n \"season\": \"7\",\n \"episode\": \"12\",\n \"tvairdate\": \"2024-11-19\",\n \"tvdbid\": 153021,\n \"traktid\": 1393,\n \"tvrageid\": null,\n \"tvmazeid\": 73,\n \"imdbid\": 1520211,\n \"tmdbid\": 1402\n }\n ]\n}"
}
]
},
{
"name": "Movie Search",
"request": {
"method": "GET",
"header": [],
"description": "Movie search by identifiers (`imdbid`, `tmdbid`, `traktid`) and/or title (`id`).",
"url": {
"raw": "{{baseUrl}}/api/v2/movies?api_token={{apiToken}}&imdbid=1418646&cat=2030,2040",
"host": [
"{{baseUrl}}"
],
"path": [
"api",
"v2",
"movies"
],
"query": [
{
"key": "api_token",
"value": "{{apiToken}}"
},
{
"key": "imdbid",
"value": "1418646"
},
{
"key": "cat",
"value": "2030,2040"
}
]
}
},
"response": [
{
"name": "200 OK - Movie Results",
"originalRequest": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/v2/movies?api_token={{apiToken}}&imdbid=1418646&cat=2030,2040",
"host": [
"{{baseUrl}}"
],
"path": [
"api",
"v2",
"movies"
]
}
},
"status": "OK",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"cookie": [],
"body": "{\n \"Total\": 1,\n \"apiCurrent\": 8,\n \"apiMax\": 1000,\n \"grabCurrent\": 1,\n \"grabMax\": 100,\n \"apiOldestTime\": \"Wed, 20 Nov 2024 12:00:00 +0000\",\n \"grabOldestTime\": \"\",\n \"Results\": [\n {\n \"title\": \"Movie.Title.2024.1080p.BluRay.x264\",\n \"details\": \"https://example.com/details/cccccccccccccccccccccccccccccccc\",\n \"url\": \"https://example.com/getnzb?id=cccccccccccccccccccccccccccccccc.nzb&r=replace-with-user-api-token\",\n \"category\": 2040,\n \"category_name\": \"Movies > HD\",\n \"added\": \"Wed, 20 Nov 2024 12:15:00 +0000\",\n \"size\": 2854971565,\n \"files\": 77,\n \"grabs\": 12,\n \"comments\": 2,\n \"password\": 0,\n \"usenetdate\": \"Wed, 20 Nov 2024 09:00:00 +0000\",\n \"imdbid\": 1418646,\n \"tmdbid\": 43418,\n \"traktid\": 29200\n }\n ]\n}"
}
]
},
{
"name": "Details",
"request": {
"method": "GET",
"header": [],
"description": "Single release lookup by GUID. Returns one object (not search envelope).",
"url": {
"raw": "{{baseUrl}}/api/v2/details?api_token={{apiToken}}&id={{guid}}",
"host": [
"{{baseUrl}}"
],
"path": [
"api",
"v2",
"details"
],
"query": [
{
"key": "api_token",
"value": "{{apiToken}}"
},
{
"key": "id",
"value": "{{guid}}"
}
]
}
},
"response": [
{
"name": "200 OK - Release Details",
"originalRequest": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/v2/details?api_token={{apiToken}}&id={{guid}}",
"host": [
"{{baseUrl}}"
],
"path": [
"api",
"v2",
"details"
]
}
},
"status": "OK",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"cookie": [],
"body": "{\n \"title\": \"Some.Show.S01E01.720p.WEB-DL\",\n \"details\": \"https://example.com/details/dddddddddddddddddddddddddddddddd\",\n \"link\": \"https://example.com/getnzb?id=dddddddddddddddddddddddddddddddd.nzb&r=replace-with-user-api-token\",\n \"category\": 5030,\n \"category_name\": \"TV > SD\",\n \"added\": \"Wed, 20 Nov 2024 12:00:00 +0000\",\n \"size\": 450971565,\n \"files\": 44,\n \"grabs\": 3,\n \"comments\": 0,\n \"password\": 0,\n \"usenetdate\": \"Wed, 20 Nov 2024 10:00:00 +0000\",\n \"tvairdate\": \"2024-11-19\",\n \"tvdbid\": 12345,\n \"traktid\": 67890,\n \"tvrageid\": null,\n \"tvmazeid\": null,\n \"imdbid\": 1234567,\n \"tmdbid\": 98765\n}"
},
{
"name": "400 Bad Request - Missing GUID",
"originalRequest": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/v2/details?api_token={{apiToken}}",
"host": [
"{{baseUrl}}"
],
"path": [
"api",
"v2",
"details"
]
}
},
"status": "Bad Request",
"code": 400,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"cookie": [],
"body": "{\n \"error\": \"Missing parameter (guid is required for single release details)\"\n}"
},
{
"name": "403 Forbidden - Missing or Invalid API Key",
"originalRequest": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/v2/details?id={{guid}}",
"host": [
"{{baseUrl}}"
],
"path": [
"api",
"v2",
"details"
]
}
},
"status": "Bad Request",
"code": 400,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"cookie": [],
"body": "{\n \"error\": \"Missing parameter (api_token)\"\n}"
}
]
},
{
"name": "Get NZB",
"request": {
"method": "GET",
"header": [],
"description": "Redirects to the NZB download endpoint when GUID exists. Optional `del=1` forwards delete-on-download behavior.",
"url": {
"raw": "{{baseUrl}}/api/v2/getnzb?api_token={{apiToken}}&id={{guid}}&del=1",
"host": [
"{{baseUrl}}"
],
"path": [
"api",
"v2",
"getnzb"
],
"query": [
{
"key": "api_token",
"value": "{{apiToken}}"
},
{
"key": "id",
"value": "{{guid}}"
},
{
"key": "del",
"value": "1"
}
]
}
},
"response": [
{
"name": "302 Found - Redirect to Download",
"originalRequest": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/v2/getnzb?api_token={{apiToken}}&id={{guid}}&del=1",
"host": [
"{{baseUrl}}"
],
"path": [
"api",
"v2",
"getnzb"
]
}
},
"status": "Found",
"code": 302,
"_postman_previewlanguage": "text",
"header": [
{
"key": "Location",
"value": "https://example.com/getnzb?r=replace-with-user-api-token&id=replace-with-release-guid&del=1"
}
],
"cookie": [],
"body": ""
},
{
"name": "404 Not Found - GUID Missing in Database",
"originalRequest": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/v2/getnzb?api_token={{apiToken}}&id=not-a-real-guid",
"host": [
"{{baseUrl}}"
],
"path": [
"api",
"v2",
"getnzb"
]
}
},
"status": "Not Found",
"code": 404,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"cookie": [],
"body": "{\n \"data\": \"No such item (the guid you provided has no release in our database)\"\n}"
},
{
"name": "403 Forbidden - Missing or Invalid API Key",
"originalRequest": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/v2/getnzb?id={{guid}}",
"host": [
"{{baseUrl}}"
],
"path": [
"api",
"v2",
"getnzb"
]
}
},
"status": "Bad Request",
"code": 400,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"cookie": [],
"body": "{\n \"error\": \"Missing parameter (api_token)\"\n}"
}
]
},
{
"name": "Add NZB",
"item": [
{
"name": "Stage NZB Only",
"request": {
"method": "POST",
"header": [],
"body": {
"mode": "formdata",
"formdata": [
{ "key": "api_token", "value": "{{apiToken}}", "type": "text" },
{ "key": "nzb", "type": "file", "src": "Release.nzb" }
]
},
"description": "Stages one NZB for deferred import. The authenticated user must have posting privileges.",
"url": {
"raw": "{{baseUrl}}/api/v2/nzbadd",
"host": ["{{baseUrl}}"],
"path": ["api", "v2", "nzbadd"]
}
},
"response": []
},
{
"name": "Stage Paired NZB and NFO",
"request": {
"method": "POST",
"header": [],
"body": {
"mode": "formdata",
"formdata": [
{ "key": "api_token", "value": "{{apiToken}}", "type": "text" },
{ "key": "cat", "value": "5040", "type": "text" },
{ "key": "nzb", "type": "file", "src": "Release.nzb" },
{ "key": "nfo", "type": "file", "src": "scene-info.nfo" }
]
},
"description": "Atomically stages an NZB and an optional NFO with any safe basename. Run nntmux:import-nzbs before nntmux:import-nfos. Category is echoed metadata only.",
"url": {
"raw": "{{baseUrl}}/api/v2/nzbadd",
"host": ["{{baseUrl}}"],
"path": ["api", "v2", "nzbadd"]
}
},
"response": [
{
"name": "Created",
"originalRequest": {
"method": "POST",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/v2/nzbadd",
"host": ["{{baseUrl}}"],
"path": ["api", "v2", "nzbadd"]
}
},
"status": "Created",
"code": 201,
"_postman_previewlanguage": "json",
"header": [{ "key": "Content-Type", "value": "application/json" }],
"cookie": [],
"body": "{\n \"success\": true,\n \"status\": \"staged\",\n \"name\": \"Release\",\n \"category\": \"5040\",\n \"files\": {\n \"nzb\": { \"filename\": \"Release.nzb\", \"type\": \"nzb\" },\n \"nfo\": { \"filename\": \"scene-info.nfo\", \"type\": \"nfo\" }\n }\n}"
}
]
}
]
}
]
}