The property chapters is not defined and the definition does not allow additional properties
Closed this issue · 2 comments
When using chapters
or add_chapter
, such as the below
let mut chapters_res = client
.search()
.chapter()
.add_chapter(String::from("1"))
.manga_id(&manga_id)
.limit(limit)
.build()?
.send()
.await?;
Sending it yields an error like so
Error: an error occurred with the MangaDex API request: MangaDexErrorResponse { errors: [MangaDexError { id: 9c346772-7b14-5982-b4b6-7b5888522762, status: 400, title: Some("validation_exception"), detail: Some("Error validating : The property chapters is not defined and the definition does not allow additional properties"), context: None }] }
Upon serializing it, I see this output
{"limit":10,"offset":null,"ids":[],"title":null,"groups":[],"uploader":[],"manga":"4e7a4a0f-8391-4069-839b-de2352297dab","volume":[],"chapters":["1"],"translatedLanguage":["en"],"originalLanguage":[],"excludedOriginalLanguage":[],"contentRating":[],"excludedGroups":[],"excludedUploaders":[],"includeFutureUpdates":null,"createdAtSince":null,"updatedAtSince":null,"publishAtSince":null,"includeEmptyPages":null,"includeExternalUrl":null,"includeFuturePublishAt":null,"order":null,"includes":[]}
Notice chapters
. From the mangadex api I see a parameter named chapter
but not chapters
Indeed, using a query like this results in the same error
https://api.mangadex.org/chapter?limit=10&manga=4e7a4a0f-8391-4069-839b-de2352297dab&chapters[0]=1&translatedLanguage[0]=en
Whereas this one works
https://api.mangadex.org/chapter?limit=10&manga=4e7a4a0f-8391-4069-839b-de2352297dab&chapter[0]=1&translatedLanguage[0]=en
Patching ListChapter
with a serde rename is good enough for now to get the api to work again. I have had to add a local cargo patch for this (temporarily until it's fixed in master / gets a new release). (Also, a u16
seems to be a better choice to me considering these are numbers anyways)
#[serde(rename = "chapter")]
#[builder(setter(each = "add_chapter"))]
pub chapters: Vec<u16>,
Well, the
#[serde(rename = "chapter")]
fixed the problem for now
but for the u16
,
Some chapter can have floating points. (because the uploaders split it in parts)
Examples :
https://api.mangadex.org/chapter?manga=631f996b-3541-470c-9f18-ed02a447c64f&chapter[]=56.1`
{
"result": "ok",
"response": "collection",
"data": [
{
"id": "48ce08b9-1609-4a52-8a54-f5cb06357345",
"type": "chapter",
"attributes": {
"volume": null,
"chapter": "56.1",
"title": null,
"translatedLanguage": "en",
"externalUrl": null,
"publishAt": "2023-07-27T19:45:47+00:00",
"readableAt": "2023-07-27T19:45:47+00:00",
"createdAt": "2023-07-27T19:45:47+00:00",
"updatedAt": "2023-07-27T19:45:58+00:00",
"pages": 16,
"version": 3
},
"relationships": [
{
"id": "24adf288-d0e3-4d34-b342-bf8c189aacaa",
"type": "scanlation_group"
},
{
"id": "631f996b-3541-470c-9f18-ed02a447c64f",
"type": "manga"
},
{
"id": "28c85242-2605-4abf-9fd7-2879dc58f7e6",
"type": "user"
}
]
}
],
"limit": 10,
"offset": 0,
"total": 1
}
https://api.mangadex.org/chapter?chapter[]=123.2&translatedLanguage[0]=en
{
"result": "ok",
"response": "collection",
"data": [
{
"id": "e26400db-df36-4de4-abf5-d9f065d7796a",
"type": "chapter",
"attributes": {
"volume": "13",
"chapter": "123.2",
"title": "Guide (2)",
"translatedLanguage": "en",
"externalUrl": null,
"publishAt": "2020-06-09T07:12:47+00:00",
"readableAt": "2020-06-09T07:12:47+00:00",
"createdAt": "2020-06-09T07:12:47+00:00",
"updatedAt": "2020-06-09T07:12:47+00:00",
"pages": 14,
"version": 1
},
"relationships": [
{
"id": "1071e71d-cc55-4fa6-81d1-4b5913a2fde5",
"type": "scanlation_group"
},
{
"id": "34e45b02-b5c8-4a4b-a21a-7b5059391dc8",
"type": "manga"
},
{
"id": "416fcfbb-0f5c-40e2-9a4f-5dca25a33514",
"type": "user"
}
]
},
{
"id": "92ca09ac-78b8-433a-8b9a-43778c388fc5",
"type": "chapter",
"attributes": {
"volume": null,
"chapter": "123.2",
"title": "The Massacre",
"translatedLanguage": "en",
"externalUrl": null,
"publishAt": "2020-10-15T12:56:04+00:00",
"readableAt": "2020-10-15T12:56:04+00:00",
"createdAt": "2020-10-15T12:56:04+00:00",
"updatedAt": "2020-10-15T12:56:04+00:00",
"pages": 28,
"version": 1
},
"relationships": [
{
"id": "461047ab-d7a7-4bf2-a24a-94e77b923c9d",
"type": "scanlation_group"
},
{
"id": "931fd4fd-6c22-485e-b717-2dce335500b1",
"type": "manga"
},
{
"id": "1f8e10b6-f246-4fa9-be37-a2f9f4e1f65c",
"type": "user"
}
]
}
],
"limit": 10,
"offset": 0,
"total": 2
}
I was thinking to put it as f32
but
after some testing, i found that some chapters can have a null
value in the chapter
property in their chapter attribute (it's often for oneshot titles)
Example :
https://api.mangadex.org/chapter?chapter[]=none&translatedLanguage[0]=en
{
"result": "ok",
"response": "collection",
"data": [
{
"id": "d186aaeb-3968-4d9f-b6f9-d49b40bda193",
"type": "chapter",
"attributes": {
"volume": null,
"chapter": null,
"title": "Oneshot",
"translatedLanguage": "en",
"externalUrl": null,
"publishAt": "2018-01-15T16:59:50+00:00",
"readableAt": "2018-01-15T16:59:50+00:00",
"createdAt": "2018-01-15T16:59:50+00:00",
"updatedAt": "2018-01-15T16:59:50+00:00",
"pages": 22,
"version": 1
},
"relationships": [
{
"id": "caf0d1da-a790-49d0-833c-ce74d651c8a1",
"type": "scanlation_group"
},
{
"id": "ed7bcfac-fc7e-4c63-9809-f551cbeca429",
"type": "manga"
},
{
"id": "16cf9cc6-78a4-4037-abdc-abf9145d74c8",
"type": "user"
}
]
},
{
"id": "0c018f43-9abd-47f2-8cdd-648254247907",
"type": "chapter",
"attributes": {
"volume": null,
"chapter": null,
"title": "Oneshot",
"translatedLanguage": "en",
"externalUrl": null,
"publishAt": "2018-01-15T17:04:37+00:00",
"readableAt": "2018-01-15T17:04:37+00:00",
"createdAt": "2018-01-15T17:04:37+00:00",
"updatedAt": "2018-01-15T17:04:37+00:00",
"pages": 18,
"version": 1
},
"relationships": [
{
"id": "caf0d1da-a790-49d0-833c-ce74d651c8a1",
"type": "scanlation_group"
},
{
"id": "758cf009-962e-4209-86f0-881dc4d907c9",
"type": "manga"
},
{
"id": "16cf9cc6-78a4-4037-abdc-abf9145d74c8",
"type": "user"
}
]
},
{
"id": "a9a39c95-4f04-43d7-95f4-4973f1b7fdc4",
"type": "chapter",
"attributes": {
"volume": null,
"chapter": null,
"title": "Oneshot",
"translatedLanguage": "en",
"externalUrl": null,
"publishAt": "2018-01-15T18:39:14+00:00",
"readableAt": "2018-01-15T18:39:14+00:00",
"createdAt": "2018-01-15T18:39:14+00:00",
"updatedAt": "2018-01-15T18:39:14+00:00",
"pages": 34,
"version": 1
},
"relationships": [
{
"id": "caf0d1da-a790-49d0-833c-ce74d651c8a1",
"type": "scanlation_group"
},
{
"id": "c0ffc3e0-4c80-4cf7-9c2f-befb427e8cb1",
"type": "manga"
},
{
"id": "16cf9cc6-78a4-4037-abdc-abf9145d74c8",
"type": "user"
}
]
},
{
"id": "04366fab-644c-4af2-9985-4abcb7301bbd",
"type": "chapter",
"attributes": {
"volume": null,
"chapter": null,
"title": "Oneshot",
"translatedLanguage": "en",
"externalUrl": null,
"publishAt": "2018-01-15T21:03:44+00:00",
"readableAt": "2018-01-15T21:03:44+00:00",
"createdAt": "2018-01-15T21:03:44+00:00",
"updatedAt": "2018-01-15T21:03:44+00:00",
"pages": 22,
"version": 1
},
"relationships": [
{
"id": "caf0d1da-a790-49d0-833c-ce74d651c8a1",
"type": "scanlation_group"
},
{
"id": "c13e0d14-dc23-452f-88d6-1024128e8735",
"type": "manga"
},
{
"id": "16cf9cc6-78a4-4037-abdc-abf9145d74c8",
"type": "user"
}
]
},
{
"id": "037e9fbf-b442-414c-bc0d-58e4237adbaf",
"type": "chapter",
"attributes": {
"volume": null,
"chapter": null,
"title": "Oneshot",
"translatedLanguage": "en",
"externalUrl": null,
"publishAt": "2018-01-15T21:25:55+00:00",
"readableAt": "2018-01-15T21:25:55+00:00",
"createdAt": "2018-01-15T21:25:55+00:00",
"updatedAt": "2018-01-15T21:25:55+00:00",
"pages": 14,
"version": 1
},
"relationships": [
{
"id": "caf0d1da-a790-49d0-833c-ce74d651c8a1",
"type": "scanlation_group"
},
{
"id": "f567872b-48f6-4ba3-a698-f4c79049a2ef",
"type": "manga"
},
{
"id": "16cf9cc6-78a4-4037-abdc-abf9145d74c8",
"type": "user"
}
]
},
{
"id": "381deb72-170b-4258-9243-3655d8ab6eec",
"type": "chapter",
"attributes": {
"volume": null,
"chapter": null,
"title": "Oneshot",
"translatedLanguage": "en",
"externalUrl": null,
"publishAt": "2018-01-15T21:34:20+00:00",
"readableAt": "2018-01-15T21:34:20+00:00",
"createdAt": "2018-01-15T21:34:20+00:00",
"updatedAt": "2018-01-15T21:34:20+00:00",
"pages": 58,
"version": 1
},
"relationships": [
{
"id": "caf0d1da-a790-49d0-833c-ce74d651c8a1",
"type": "scanlation_group"
},
{
"id": "bbfe9259-e78e-4f28-bf0d-066e9378f393",
"type": "manga"
},
{
"id": "16cf9cc6-78a4-4037-abdc-abf9145d74c8",
"type": "user"
}
]
},
{
"id": "e2e8ebff-0fd7-4ee4-b2e2-4cec60229e33",
"type": "chapter",
"attributes": {
"volume": "0",
"chapter": null,
"title": "Oneshot",
"translatedLanguage": "en",
"externalUrl": null,
"publishAt": "2018-01-18T08:19:15+00:00",
"readableAt": "2018-01-18T08:19:15+00:00",
"createdAt": "2018-01-18T08:19:15+00:00",
"updatedAt": "2018-01-18T08:19:15+00:00",
"pages": 8,
"version": 1
},
"relationships": [
{
"id": "2ad2fa1f-5303-494b-939e-9bbf20fd0e69",
"type": "scanlation_group"
},
{
"id": "94f4603b-4547-46cd-b1aa-f953b48084eb",
"type": "manga"
},
{
"id": "e6772ebc-c40d-4d3d-ad37-262bcc10381d",
"type": "user"
}
]
},
{
"id": "0fcfa7a7-480b-4b7a-9a36-697232cace52",
"type": "chapter",
"attributes": {
"volume": null,
"chapter": null,
"title": null,
"translatedLanguage": "en",
"externalUrl": null,
"publishAt": "2018-01-18T08:47:03+00:00",
"readableAt": "2018-01-18T08:47:03+00:00",
"createdAt": "2018-01-18T08:47:03+00:00",
"updatedAt": "2023-01-10T18:25:05+00:00",
"pages": 28,
"version": 2
},
"relationships": [
{
"id": "81d866d5-e900-494d-a6dc-8a00283b5c16",
"type": "scanlation_group"
},
{
"id": "5ebe4265-da26-4a3f-a2e4-5634af489ce5",
"type": "manga"
},
{
"id": "e6772ebc-c40d-4d3d-ad37-262bcc10381d",
"type": "user"
}
]
},
{
"id": "8d04cfba-c7e0-4725-9174-7817a8a38f4a",
"type": "chapter",
"attributes": {
"volume": "0",
"chapter": null,
"title": "Oneshot",
"translatedLanguage": "en",
"externalUrl": null,
"publishAt": "2018-01-18T09:19:13+00:00",
"readableAt": "2018-01-18T09:19:13+00:00",
"createdAt": "2018-01-18T09:19:13+00:00",
"updatedAt": "2018-01-18T09:19:13+00:00",
"pages": 35,
"version": 1
},
"relationships": [
{
"id": "2bbabd33-d09a-43f5-a100-69afa5fb12d2",
"type": "scanlation_group"
},
{
"id": "1b7a841f-6268-4d19-b926-de6cce8fc82d",
"type": "manga"
},
{
"id": "e6772ebc-c40d-4d3d-ad37-262bcc10381d",
"type": "user"
}
]
},
{
"id": "7b8d6c6d-3fd1-4fb3-bdc7-f3d2d9e2f922",
"type": "chapter",
"attributes": {
"volume": null,
"chapter": null,
"title": "Oneshot",
"translatedLanguage": "en",
"externalUrl": null,
"publishAt": "2018-01-18T11:31:43+00:00",
"readableAt": "2018-01-18T11:31:43+00:00",
"createdAt": "2018-01-18T11:31:43+00:00",
"updatedAt": "2022-07-24T12:30:40+00:00",
"pages": 33,
"version": 2
},
"relationships": [
{
"id": "81d866d5-e900-494d-a6dc-8a00283b5c16",
"type": "scanlation_group"
},
{
"id": "5867f104-8574-4dd8-a4f8-91bc0e420e36",
"type": "manga"
},
{
"id": "e6772ebc-c40d-4d3d-ad37-262bcc10381d",
"type": "user"
}
]
}
],
"limit": 10,
"offset": 0,
"total": 10875
}
So i will put it as String
for now.
I wanted to put it as an enum but i don't have any clue of how should i do it.
Note :
Yes, none
is null
in the Mangadex Url query.
I don't even know why it's none
.