Bulk edit metadata for selected files
POST
/api/v1/bookdrop/files/bulk-edit
CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");curl_easy_setopt(hnd, CURLOPT_URL, "http://127.0.0.1:58259/api/v1/bookdrop/files/bulk-edit");
struct curl_slist *headers = NULL;headers = curl_slist_append(headers, "Content-Type: application/json");curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "{ \"fields\": { \"bookId\": 1, \"title\": \"example\", \"subtitle\": \"example\", \"publisher\": \"example\", \"publishedDate\": \"2026-04-15\", \"description\": \"example\", \"seriesName\": \"example\", \"seriesNumber\": 1, \"seriesTotal\": 1, \"isbn13\": \"example\", \"isbn10\": \"example\", \"pageCount\": 1, \"language\": \"example\", \"narrator\": \"example\", \"abridged\": true, \"audiobookMetadata\": { \"durationSeconds\": 1, \"bitrate\": 1, \"sampleRate\": 1, \"channels\": 1, \"codec\": \"example\", \"chapterCount\": 1, \"chapters\": [ { \"index\": 1, \"title\": \"example\", \"startTimeMs\": 1, \"endTimeMs\": 1, \"durationMs\": 1 } ] }, \"comicMetadata\": { \"issueNumber\": \"example\", \"volumeName\": \"example\", \"volumeNumber\": 1, \"storyArc\": \"example\", \"storyArcNumber\": 1, \"alternateSeries\": \"example\", \"alternateIssue\": \"example\", \"pencillers\": [ \"example\" ], \"inkers\": [ \"example\" ], \"colorists\": [ \"example\" ], \"letterers\": [ \"example\" ], \"coverArtists\": [ \"example\" ], \"editors\": [ \"example\" ], \"imprint\": \"example\", \"format\": \"example\", \"blackAndWhite\": true, \"manga\": true, \"readingDirection\": \"example\", \"characters\": [ \"example\" ], \"teams\": [ \"example\" ], \"locations\": [ \"example\" ], \"webLink\": \"example\", \"notes\": \"example\", \"issueNumberLocked\": true, \"volumeNameLocked\": true, \"volumeNumberLocked\": true, \"storyArcLocked\": true, \"storyArcNumberLocked\": true, \"alternateSeriesLocked\": true, \"alternateIssueLocked\": true, \"imprintLocked\": true, \"formatLocked\": true, \"blackAndWhiteLocked\": true, \"mangaLocked\": true, \"readingDirectionLocked\": true, \"webLinkLocked\": true, \"notesLocked\": true, \"creatorsLocked\": true, \"pencillersLocked\": true, \"inkersLocked\": true, \"coloristsLocked\": true, \"letterersLocked\": true, \"coverArtistsLocked\": true, \"editorsLocked\": true, \"charactersLocked\": true, \"teamsLocked\": true, \"locationsLocked\": true }, \"asin\": \"example\", \"amazonRating\": 1, \"amazonReviewCount\": 1, \"goodreadsId\": \"example\", \"comicvineId\": \"example\", \"goodreadsRating\": 1, \"goodreadsReviewCount\": 1, \"hardcoverId\": \"example\", \"hardcoverBookId\": \"example\", \"hardcoverRating\": 1, \"hardcoverReviewCount\": 1, \"doubanId\": \"example\", \"doubanRating\": 1, \"doubanReviewCount\": 1, \"lubimyczytacRating\": 1, \"googleId\": \"example\", \"lubimyczytacId\": \"example\", \"ranobedbId\": \"example\", \"ranobedbRating\": 1, \"audibleId\": \"example\", \"audibleRating\": 1, \"audibleReviewCount\": 1, \"externalUrl\": \"example\", \"coverUpdatedOn\": \"2026-04-15T12:00:00Z\", \"audiobookCoverUpdatedOn\": \"2026-04-15T12:00:00Z\", \"authors\": [ \"example\" ], \"categories\": [ \"example\" ], \"moods\": [ \"example\" ], \"tags\": [ \"example\" ], \"provider\": \"Amazon\", \"thumbnailUrl\": \"example\", \"bookReviews\": [ { \"id\": 1, \"metadataProvider\": \"Amazon\", \"reviewerName\": \"example\", \"title\": \"example\", \"rating\": 1, \"date\": \"2026-04-15T12:00:00Z\", \"body\": \"example\", \"country\": \"example\", \"spoiler\": true, \"followersCount\": 1, \"textReviewsCount\": 1 } ], \"rating\": 1, \"isFixedLayout\": true, \"allMetadataLocked\": true, \"titleLocked\": true, \"subtitleLocked\": true, \"publisherLocked\": true, \"publishedDateLocked\": true, \"descriptionLocked\": true, \"seriesNameLocked\": true, \"seriesNumberLocked\": true, \"seriesTotalLocked\": true, \"isbn13Locked\": true, \"isbn10Locked\": true, \"asinLocked\": true, \"goodreadsIdLocked\": true, \"comicvineIdLocked\": true, \"hardcoverIdLocked\": true, \"hardcoverBookIdLocked\": true, \"doubanIdLocked\": true, \"googleIdLocked\": true, \"pageCountLocked\": true, \"languageLocked\": true, \"amazonRatingLocked\": true, \"amazonReviewCountLocked\": true, \"goodreadsRatingLocked\": true, \"goodreadsReviewCountLocked\": true, \"hardcoverRatingLocked\": true, \"hardcoverReviewCountLocked\": true, \"doubanRatingLocked\": true, \"doubanReviewCountLocked\": true, \"lubimyczytacIdLocked\": true, \"lubimyczytacRatingLocked\": true, \"ranobedbIdLocked\": true, \"ranobedbRatingLocked\": true, \"audibleIdLocked\": true, \"audibleRatingLocked\": true, \"audibleReviewCountLocked\": true, \"externalUrlLocked\": true, \"coverLocked\": true, \"audiobookCoverLocked\": true, \"authorsLocked\": true, \"categoriesLocked\": true, \"moodsLocked\": true, \"tagsLocked\": true, \"reviewsLocked\": true, \"narratorLocked\": true, \"abridgedLocked\": true, \"ageRating\": 1, \"contentRating\": \"example\", \"ageRatingLocked\": true, \"contentRatingLocked\": true }, \"enabledFields\": [ \"example\" ], \"mergeArrays\": true, \"selectAll\": true, \"excludedIds\": [ 1 ], \"selectedIds\": [ 1 ] }");
CURLcode ret = curl_easy_perform(hnd);using System.Net.Http.Headers;var client = new HttpClient();var request = new HttpRequestMessage{ Method = HttpMethod.Post, RequestUri = new Uri("http://127.0.0.1:58259/api/v1/bookdrop/files/bulk-edit"), Content = new StringContent("{ \"fields\": { \"bookId\": 1, \"title\": \"example\", \"subtitle\": \"example\", \"publisher\": \"example\", \"publishedDate\": \"2026-04-15\", \"description\": \"example\", \"seriesName\": \"example\", \"seriesNumber\": 1, \"seriesTotal\": 1, \"isbn13\": \"example\", \"isbn10\": \"example\", \"pageCount\": 1, \"language\": \"example\", \"narrator\": \"example\", \"abridged\": true, \"audiobookMetadata\": { \"durationSeconds\": 1, \"bitrate\": 1, \"sampleRate\": 1, \"channels\": 1, \"codec\": \"example\", \"chapterCount\": 1, \"chapters\": [ { \"index\": 1, \"title\": \"example\", \"startTimeMs\": 1, \"endTimeMs\": 1, \"durationMs\": 1 } ] }, \"comicMetadata\": { \"issueNumber\": \"example\", \"volumeName\": \"example\", \"volumeNumber\": 1, \"storyArc\": \"example\", \"storyArcNumber\": 1, \"alternateSeries\": \"example\", \"alternateIssue\": \"example\", \"pencillers\": [ \"example\" ], \"inkers\": [ \"example\" ], \"colorists\": [ \"example\" ], \"letterers\": [ \"example\" ], \"coverArtists\": [ \"example\" ], \"editors\": [ \"example\" ], \"imprint\": \"example\", \"format\": \"example\", \"blackAndWhite\": true, \"manga\": true, \"readingDirection\": \"example\", \"characters\": [ \"example\" ], \"teams\": [ \"example\" ], \"locations\": [ \"example\" ], \"webLink\": \"example\", \"notes\": \"example\", \"issueNumberLocked\": true, \"volumeNameLocked\": true, \"volumeNumberLocked\": true, \"storyArcLocked\": true, \"storyArcNumberLocked\": true, \"alternateSeriesLocked\": true, \"alternateIssueLocked\": true, \"imprintLocked\": true, \"formatLocked\": true, \"blackAndWhiteLocked\": true, \"mangaLocked\": true, \"readingDirectionLocked\": true, \"webLinkLocked\": true, \"notesLocked\": true, \"creatorsLocked\": true, \"pencillersLocked\": true, \"inkersLocked\": true, \"coloristsLocked\": true, \"letterersLocked\": true, \"coverArtistsLocked\": true, \"editorsLocked\": true, \"charactersLocked\": true, \"teamsLocked\": true, \"locationsLocked\": true }, \"asin\": \"example\", \"amazonRating\": 1, \"amazonReviewCount\": 1, \"goodreadsId\": \"example\", \"comicvineId\": \"example\", \"goodreadsRating\": 1, \"goodreadsReviewCount\": 1, \"hardcoverId\": \"example\", \"hardcoverBookId\": \"example\", \"hardcoverRating\": 1, \"hardcoverReviewCount\": 1, \"doubanId\": \"example\", \"doubanRating\": 1, \"doubanReviewCount\": 1, \"lubimyczytacRating\": 1, \"googleId\": \"example\", \"lubimyczytacId\": \"example\", \"ranobedbId\": \"example\", \"ranobedbRating\": 1, \"audibleId\": \"example\", \"audibleRating\": 1, \"audibleReviewCount\": 1, \"externalUrl\": \"example\", \"coverUpdatedOn\": \"2026-04-15T12:00:00Z\", \"audiobookCoverUpdatedOn\": \"2026-04-15T12:00:00Z\", \"authors\": [ \"example\" ], \"categories\": [ \"example\" ], \"moods\": [ \"example\" ], \"tags\": [ \"example\" ], \"provider\": \"Amazon\", \"thumbnailUrl\": \"example\", \"bookReviews\": [ { \"id\": 1, \"metadataProvider\": \"Amazon\", \"reviewerName\": \"example\", \"title\": \"example\", \"rating\": 1, \"date\": \"2026-04-15T12:00:00Z\", \"body\": \"example\", \"country\": \"example\", \"spoiler\": true, \"followersCount\": 1, \"textReviewsCount\": 1 } ], \"rating\": 1, \"isFixedLayout\": true, \"allMetadataLocked\": true, \"titleLocked\": true, \"subtitleLocked\": true, \"publisherLocked\": true, \"publishedDateLocked\": true, \"descriptionLocked\": true, \"seriesNameLocked\": true, \"seriesNumberLocked\": true, \"seriesTotalLocked\": true, \"isbn13Locked\": true, \"isbn10Locked\": true, \"asinLocked\": true, \"goodreadsIdLocked\": true, \"comicvineIdLocked\": true, \"hardcoverIdLocked\": true, \"hardcoverBookIdLocked\": true, \"doubanIdLocked\": true, \"googleIdLocked\": true, \"pageCountLocked\": true, \"languageLocked\": true, \"amazonRatingLocked\": true, \"amazonReviewCountLocked\": true, \"goodreadsRatingLocked\": true, \"goodreadsReviewCountLocked\": true, \"hardcoverRatingLocked\": true, \"hardcoverReviewCountLocked\": true, \"doubanRatingLocked\": true, \"doubanReviewCountLocked\": true, \"lubimyczytacIdLocked\": true, \"lubimyczytacRatingLocked\": true, \"ranobedbIdLocked\": true, \"ranobedbRatingLocked\": true, \"audibleIdLocked\": true, \"audibleRatingLocked\": true, \"audibleReviewCountLocked\": true, \"externalUrlLocked\": true, \"coverLocked\": true, \"audiobookCoverLocked\": true, \"authorsLocked\": true, \"categoriesLocked\": true, \"moodsLocked\": true, \"tagsLocked\": true, \"reviewsLocked\": true, \"narratorLocked\": true, \"abridgedLocked\": true, \"ageRating\": 1, \"contentRating\": \"example\", \"ageRatingLocked\": true, \"contentRatingLocked\": true }, \"enabledFields\": [ \"example\" ], \"mergeArrays\": true, \"selectAll\": true, \"excludedIds\": [ 1 ], \"selectedIds\": [ 1 ] }") { Headers = { ContentType = new MediaTypeHeaderValue("application/json") } }};using (var response = await client.SendAsync(request)){ response.EnsureSuccessStatusCode(); var body = await response.Content.ReadAsStringAsync(); Console.WriteLine(body);}package main
import ( "fmt" "strings" "net/http" "io")
func main() {
url := "http://127.0.0.1:58259/api/v1/bookdrop/files/bulk-edit"
payload := strings.NewReader("{ \"fields\": { \"bookId\": 1, \"title\": \"example\", \"subtitle\": \"example\", \"publisher\": \"example\", \"publishedDate\": \"2026-04-15\", \"description\": \"example\", \"seriesName\": \"example\", \"seriesNumber\": 1, \"seriesTotal\": 1, \"isbn13\": \"example\", \"isbn10\": \"example\", \"pageCount\": 1, \"language\": \"example\", \"narrator\": \"example\", \"abridged\": true, \"audiobookMetadata\": { \"durationSeconds\": 1, \"bitrate\": 1, \"sampleRate\": 1, \"channels\": 1, \"codec\": \"example\", \"chapterCount\": 1, \"chapters\": [ { \"index\": 1, \"title\": \"example\", \"startTimeMs\": 1, \"endTimeMs\": 1, \"durationMs\": 1 } ] }, \"comicMetadata\": { \"issueNumber\": \"example\", \"volumeName\": \"example\", \"volumeNumber\": 1, \"storyArc\": \"example\", \"storyArcNumber\": 1, \"alternateSeries\": \"example\", \"alternateIssue\": \"example\", \"pencillers\": [ \"example\" ], \"inkers\": [ \"example\" ], \"colorists\": [ \"example\" ], \"letterers\": [ \"example\" ], \"coverArtists\": [ \"example\" ], \"editors\": [ \"example\" ], \"imprint\": \"example\", \"format\": \"example\", \"blackAndWhite\": true, \"manga\": true, \"readingDirection\": \"example\", \"characters\": [ \"example\" ], \"teams\": [ \"example\" ], \"locations\": [ \"example\" ], \"webLink\": \"example\", \"notes\": \"example\", \"issueNumberLocked\": true, \"volumeNameLocked\": true, \"volumeNumberLocked\": true, \"storyArcLocked\": true, \"storyArcNumberLocked\": true, \"alternateSeriesLocked\": true, \"alternateIssueLocked\": true, \"imprintLocked\": true, \"formatLocked\": true, \"blackAndWhiteLocked\": true, \"mangaLocked\": true, \"readingDirectionLocked\": true, \"webLinkLocked\": true, \"notesLocked\": true, \"creatorsLocked\": true, \"pencillersLocked\": true, \"inkersLocked\": true, \"coloristsLocked\": true, \"letterersLocked\": true, \"coverArtistsLocked\": true, \"editorsLocked\": true, \"charactersLocked\": true, \"teamsLocked\": true, \"locationsLocked\": true }, \"asin\": \"example\", \"amazonRating\": 1, \"amazonReviewCount\": 1, \"goodreadsId\": \"example\", \"comicvineId\": \"example\", \"goodreadsRating\": 1, \"goodreadsReviewCount\": 1, \"hardcoverId\": \"example\", \"hardcoverBookId\": \"example\", \"hardcoverRating\": 1, \"hardcoverReviewCount\": 1, \"doubanId\": \"example\", \"doubanRating\": 1, \"doubanReviewCount\": 1, \"lubimyczytacRating\": 1, \"googleId\": \"example\", \"lubimyczytacId\": \"example\", \"ranobedbId\": \"example\", \"ranobedbRating\": 1, \"audibleId\": \"example\", \"audibleRating\": 1, \"audibleReviewCount\": 1, \"externalUrl\": \"example\", \"coverUpdatedOn\": \"2026-04-15T12:00:00Z\", \"audiobookCoverUpdatedOn\": \"2026-04-15T12:00:00Z\", \"authors\": [ \"example\" ], \"categories\": [ \"example\" ], \"moods\": [ \"example\" ], \"tags\": [ \"example\" ], \"provider\": \"Amazon\", \"thumbnailUrl\": \"example\", \"bookReviews\": [ { \"id\": 1, \"metadataProvider\": \"Amazon\", \"reviewerName\": \"example\", \"title\": \"example\", \"rating\": 1, \"date\": \"2026-04-15T12:00:00Z\", \"body\": \"example\", \"country\": \"example\", \"spoiler\": true, \"followersCount\": 1, \"textReviewsCount\": 1 } ], \"rating\": 1, \"isFixedLayout\": true, \"allMetadataLocked\": true, \"titleLocked\": true, \"subtitleLocked\": true, \"publisherLocked\": true, \"publishedDateLocked\": true, \"descriptionLocked\": true, \"seriesNameLocked\": true, \"seriesNumberLocked\": true, \"seriesTotalLocked\": true, \"isbn13Locked\": true, \"isbn10Locked\": true, \"asinLocked\": true, \"goodreadsIdLocked\": true, \"comicvineIdLocked\": true, \"hardcoverIdLocked\": true, \"hardcoverBookIdLocked\": true, \"doubanIdLocked\": true, \"googleIdLocked\": true, \"pageCountLocked\": true, \"languageLocked\": true, \"amazonRatingLocked\": true, \"amazonReviewCountLocked\": true, \"goodreadsRatingLocked\": true, \"goodreadsReviewCountLocked\": true, \"hardcoverRatingLocked\": true, \"hardcoverReviewCountLocked\": true, \"doubanRatingLocked\": true, \"doubanReviewCountLocked\": true, \"lubimyczytacIdLocked\": true, \"lubimyczytacRatingLocked\": true, \"ranobedbIdLocked\": true, \"ranobedbRatingLocked\": true, \"audibleIdLocked\": true, \"audibleRatingLocked\": true, \"audibleReviewCountLocked\": true, \"externalUrlLocked\": true, \"coverLocked\": true, \"audiobookCoverLocked\": true, \"authorsLocked\": true, \"categoriesLocked\": true, \"moodsLocked\": true, \"tagsLocked\": true, \"reviewsLocked\": true, \"narratorLocked\": true, \"abridgedLocked\": true, \"ageRating\": 1, \"contentRating\": \"example\", \"ageRatingLocked\": true, \"contentRatingLocked\": true }, \"enabledFields\": [ \"example\" ], \"mergeArrays\": true, \"selectAll\": true, \"excludedIds\": [ 1 ], \"selectedIds\": [ 1 ] }")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close() body, _ := io.ReadAll(res.Body)
fmt.Println(res) fmt.Println(string(body))
}HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("http://127.0.0.1:58259/api/v1/bookdrop/files/bulk-edit")) .header("Content-Type", "application/json") .method("POST", HttpRequest.BodyPublishers.ofString("{ \"fields\": { \"bookId\": 1, \"title\": \"example\", \"subtitle\": \"example\", \"publisher\": \"example\", \"publishedDate\": \"2026-04-15\", \"description\": \"example\", \"seriesName\": \"example\", \"seriesNumber\": 1, \"seriesTotal\": 1, \"isbn13\": \"example\", \"isbn10\": \"example\", \"pageCount\": 1, \"language\": \"example\", \"narrator\": \"example\", \"abridged\": true, \"audiobookMetadata\": { \"durationSeconds\": 1, \"bitrate\": 1, \"sampleRate\": 1, \"channels\": 1, \"codec\": \"example\", \"chapterCount\": 1, \"chapters\": [ { \"index\": 1, \"title\": \"example\", \"startTimeMs\": 1, \"endTimeMs\": 1, \"durationMs\": 1 } ] }, \"comicMetadata\": { \"issueNumber\": \"example\", \"volumeName\": \"example\", \"volumeNumber\": 1, \"storyArc\": \"example\", \"storyArcNumber\": 1, \"alternateSeries\": \"example\", \"alternateIssue\": \"example\", \"pencillers\": [ \"example\" ], \"inkers\": [ \"example\" ], \"colorists\": [ \"example\" ], \"letterers\": [ \"example\" ], \"coverArtists\": [ \"example\" ], \"editors\": [ \"example\" ], \"imprint\": \"example\", \"format\": \"example\", \"blackAndWhite\": true, \"manga\": true, \"readingDirection\": \"example\", \"characters\": [ \"example\" ], \"teams\": [ \"example\" ], \"locations\": [ \"example\" ], \"webLink\": \"example\", \"notes\": \"example\", \"issueNumberLocked\": true, \"volumeNameLocked\": true, \"volumeNumberLocked\": true, \"storyArcLocked\": true, \"storyArcNumberLocked\": true, \"alternateSeriesLocked\": true, \"alternateIssueLocked\": true, \"imprintLocked\": true, \"formatLocked\": true, \"blackAndWhiteLocked\": true, \"mangaLocked\": true, \"readingDirectionLocked\": true, \"webLinkLocked\": true, \"notesLocked\": true, \"creatorsLocked\": true, \"pencillersLocked\": true, \"inkersLocked\": true, \"coloristsLocked\": true, \"letterersLocked\": true, \"coverArtistsLocked\": true, \"editorsLocked\": true, \"charactersLocked\": true, \"teamsLocked\": true, \"locationsLocked\": true }, \"asin\": \"example\", \"amazonRating\": 1, \"amazonReviewCount\": 1, \"goodreadsId\": \"example\", \"comicvineId\": \"example\", \"goodreadsRating\": 1, \"goodreadsReviewCount\": 1, \"hardcoverId\": \"example\", \"hardcoverBookId\": \"example\", \"hardcoverRating\": 1, \"hardcoverReviewCount\": 1, \"doubanId\": \"example\", \"doubanRating\": 1, \"doubanReviewCount\": 1, \"lubimyczytacRating\": 1, \"googleId\": \"example\", \"lubimyczytacId\": \"example\", \"ranobedbId\": \"example\", \"ranobedbRating\": 1, \"audibleId\": \"example\", \"audibleRating\": 1, \"audibleReviewCount\": 1, \"externalUrl\": \"example\", \"coverUpdatedOn\": \"2026-04-15T12:00:00Z\", \"audiobookCoverUpdatedOn\": \"2026-04-15T12:00:00Z\", \"authors\": [ \"example\" ], \"categories\": [ \"example\" ], \"moods\": [ \"example\" ], \"tags\": [ \"example\" ], \"provider\": \"Amazon\", \"thumbnailUrl\": \"example\", \"bookReviews\": [ { \"id\": 1, \"metadataProvider\": \"Amazon\", \"reviewerName\": \"example\", \"title\": \"example\", \"rating\": 1, \"date\": \"2026-04-15T12:00:00Z\", \"body\": \"example\", \"country\": \"example\", \"spoiler\": true, \"followersCount\": 1, \"textReviewsCount\": 1 } ], \"rating\": 1, \"isFixedLayout\": true, \"allMetadataLocked\": true, \"titleLocked\": true, \"subtitleLocked\": true, \"publisherLocked\": true, \"publishedDateLocked\": true, \"descriptionLocked\": true, \"seriesNameLocked\": true, \"seriesNumberLocked\": true, \"seriesTotalLocked\": true, \"isbn13Locked\": true, \"isbn10Locked\": true, \"asinLocked\": true, \"goodreadsIdLocked\": true, \"comicvineIdLocked\": true, \"hardcoverIdLocked\": true, \"hardcoverBookIdLocked\": true, \"doubanIdLocked\": true, \"googleIdLocked\": true, \"pageCountLocked\": true, \"languageLocked\": true, \"amazonRatingLocked\": true, \"amazonReviewCountLocked\": true, \"goodreadsRatingLocked\": true, \"goodreadsReviewCountLocked\": true, \"hardcoverRatingLocked\": true, \"hardcoverReviewCountLocked\": true, \"doubanRatingLocked\": true, \"doubanReviewCountLocked\": true, \"lubimyczytacIdLocked\": true, \"lubimyczytacRatingLocked\": true, \"ranobedbIdLocked\": true, \"ranobedbRatingLocked\": true, \"audibleIdLocked\": true, \"audibleRatingLocked\": true, \"audibleReviewCountLocked\": true, \"externalUrlLocked\": true, \"coverLocked\": true, \"audiobookCoverLocked\": true, \"authorsLocked\": true, \"categoriesLocked\": true, \"moodsLocked\": true, \"tagsLocked\": true, \"reviewsLocked\": true, \"narratorLocked\": true, \"abridgedLocked\": true, \"ageRating\": 1, \"contentRating\": \"example\", \"ageRatingLocked\": true, \"contentRatingLocked\": true }, \"enabledFields\": [ \"example\" ], \"mergeArrays\": true, \"selectAll\": true, \"excludedIds\": [ 1 ], \"selectedIds\": [ 1 ] }")) .build();HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());System.out.println(response.body());OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");RequestBody body = RequestBody.create(mediaType, "{ \"fields\": { \"bookId\": 1, \"title\": \"example\", \"subtitle\": \"example\", \"publisher\": \"example\", \"publishedDate\": \"2026-04-15\", \"description\": \"example\", \"seriesName\": \"example\", \"seriesNumber\": 1, \"seriesTotal\": 1, \"isbn13\": \"example\", \"isbn10\": \"example\", \"pageCount\": 1, \"language\": \"example\", \"narrator\": \"example\", \"abridged\": true, \"audiobookMetadata\": { \"durationSeconds\": 1, \"bitrate\": 1, \"sampleRate\": 1, \"channels\": 1, \"codec\": \"example\", \"chapterCount\": 1, \"chapters\": [ { \"index\": 1, \"title\": \"example\", \"startTimeMs\": 1, \"endTimeMs\": 1, \"durationMs\": 1 } ] }, \"comicMetadata\": { \"issueNumber\": \"example\", \"volumeName\": \"example\", \"volumeNumber\": 1, \"storyArc\": \"example\", \"storyArcNumber\": 1, \"alternateSeries\": \"example\", \"alternateIssue\": \"example\", \"pencillers\": [ \"example\" ], \"inkers\": [ \"example\" ], \"colorists\": [ \"example\" ], \"letterers\": [ \"example\" ], \"coverArtists\": [ \"example\" ], \"editors\": [ \"example\" ], \"imprint\": \"example\", \"format\": \"example\", \"blackAndWhite\": true, \"manga\": true, \"readingDirection\": \"example\", \"characters\": [ \"example\" ], \"teams\": [ \"example\" ], \"locations\": [ \"example\" ], \"webLink\": \"example\", \"notes\": \"example\", \"issueNumberLocked\": true, \"volumeNameLocked\": true, \"volumeNumberLocked\": true, \"storyArcLocked\": true, \"storyArcNumberLocked\": true, \"alternateSeriesLocked\": true, \"alternateIssueLocked\": true, \"imprintLocked\": true, \"formatLocked\": true, \"blackAndWhiteLocked\": true, \"mangaLocked\": true, \"readingDirectionLocked\": true, \"webLinkLocked\": true, \"notesLocked\": true, \"creatorsLocked\": true, \"pencillersLocked\": true, \"inkersLocked\": true, \"coloristsLocked\": true, \"letterersLocked\": true, \"coverArtistsLocked\": true, \"editorsLocked\": true, \"charactersLocked\": true, \"teamsLocked\": true, \"locationsLocked\": true }, \"asin\": \"example\", \"amazonRating\": 1, \"amazonReviewCount\": 1, \"goodreadsId\": \"example\", \"comicvineId\": \"example\", \"goodreadsRating\": 1, \"goodreadsReviewCount\": 1, \"hardcoverId\": \"example\", \"hardcoverBookId\": \"example\", \"hardcoverRating\": 1, \"hardcoverReviewCount\": 1, \"doubanId\": \"example\", \"doubanRating\": 1, \"doubanReviewCount\": 1, \"lubimyczytacRating\": 1, \"googleId\": \"example\", \"lubimyczytacId\": \"example\", \"ranobedbId\": \"example\", \"ranobedbRating\": 1, \"audibleId\": \"example\", \"audibleRating\": 1, \"audibleReviewCount\": 1, \"externalUrl\": \"example\", \"coverUpdatedOn\": \"2026-04-15T12:00:00Z\", \"audiobookCoverUpdatedOn\": \"2026-04-15T12:00:00Z\", \"authors\": [ \"example\" ], \"categories\": [ \"example\" ], \"moods\": [ \"example\" ], \"tags\": [ \"example\" ], \"provider\": \"Amazon\", \"thumbnailUrl\": \"example\", \"bookReviews\": [ { \"id\": 1, \"metadataProvider\": \"Amazon\", \"reviewerName\": \"example\", \"title\": \"example\", \"rating\": 1, \"date\": \"2026-04-15T12:00:00Z\", \"body\": \"example\", \"country\": \"example\", \"spoiler\": true, \"followersCount\": 1, \"textReviewsCount\": 1 } ], \"rating\": 1, \"isFixedLayout\": true, \"allMetadataLocked\": true, \"titleLocked\": true, \"subtitleLocked\": true, \"publisherLocked\": true, \"publishedDateLocked\": true, \"descriptionLocked\": true, \"seriesNameLocked\": true, \"seriesNumberLocked\": true, \"seriesTotalLocked\": true, \"isbn13Locked\": true, \"isbn10Locked\": true, \"asinLocked\": true, \"goodreadsIdLocked\": true, \"comicvineIdLocked\": true, \"hardcoverIdLocked\": true, \"hardcoverBookIdLocked\": true, \"doubanIdLocked\": true, \"googleIdLocked\": true, \"pageCountLocked\": true, \"languageLocked\": true, \"amazonRatingLocked\": true, \"amazonReviewCountLocked\": true, \"goodreadsRatingLocked\": true, \"goodreadsReviewCountLocked\": true, \"hardcoverRatingLocked\": true, \"hardcoverReviewCountLocked\": true, \"doubanRatingLocked\": true, \"doubanReviewCountLocked\": true, \"lubimyczytacIdLocked\": true, \"lubimyczytacRatingLocked\": true, \"ranobedbIdLocked\": true, \"ranobedbRatingLocked\": true, \"audibleIdLocked\": true, \"audibleRatingLocked\": true, \"audibleReviewCountLocked\": true, \"externalUrlLocked\": true, \"coverLocked\": true, \"audiobookCoverLocked\": true, \"authorsLocked\": true, \"categoriesLocked\": true, \"moodsLocked\": true, \"tagsLocked\": true, \"reviewsLocked\": true, \"narratorLocked\": true, \"abridgedLocked\": true, \"ageRating\": 1, \"contentRating\": \"example\", \"ageRatingLocked\": true, \"contentRatingLocked\": true }, \"enabledFields\": [ \"example\" ], \"mergeArrays\": true, \"selectAll\": true, \"excludedIds\": [ 1 ], \"selectedIds\": [ 1 ] }");Request request = new Request.Builder() .url("http://127.0.0.1:58259/api/v1/bookdrop/files/bulk-edit") .post(body) .addHeader("Content-Type", "application/json") .build();
Response response = client.newCall(request).execute();import axios from 'axios';
const options = { method: 'POST', url: 'http://127.0.0.1:58259/api/v1/bookdrop/files/bulk-edit', headers: {'Content-Type': 'application/json'}, data: { fields: { bookId: 1, title: 'example', subtitle: 'example', publisher: 'example', publishedDate: '2026-04-15', description: 'example', seriesName: 'example', seriesNumber: 1, seriesTotal: 1, isbn13: 'example', isbn10: 'example', pageCount: 1, language: 'example', narrator: 'example', abridged: true, audiobookMetadata: { durationSeconds: 1, bitrate: 1, sampleRate: 1, channels: 1, codec: 'example', chapterCount: 1, chapters: [{index: 1, title: 'example', startTimeMs: 1, endTimeMs: 1, durationMs: 1}] }, comicMetadata: { issueNumber: 'example', volumeName: 'example', volumeNumber: 1, storyArc: 'example', storyArcNumber: 1, alternateSeries: 'example', alternateIssue: 'example', pencillers: ['example'], inkers: ['example'], colorists: ['example'], letterers: ['example'], coverArtists: ['example'], editors: ['example'], imprint: 'example', format: 'example', blackAndWhite: true, manga: true, readingDirection: 'example', characters: ['example'], teams: ['example'], locations: ['example'], webLink: 'example', notes: 'example', issueNumberLocked: true, volumeNameLocked: true, volumeNumberLocked: true, storyArcLocked: true, storyArcNumberLocked: true, alternateSeriesLocked: true, alternateIssueLocked: true, imprintLocked: true, formatLocked: true, blackAndWhiteLocked: true, mangaLocked: true, readingDirectionLocked: true, webLinkLocked: true, notesLocked: true, creatorsLocked: true, pencillersLocked: true, inkersLocked: true, coloristsLocked: true, letterersLocked: true, coverArtistsLocked: true, editorsLocked: true, charactersLocked: true, teamsLocked: true, locationsLocked: true }, asin: 'example', amazonRating: 1, amazonReviewCount: 1, goodreadsId: 'example', comicvineId: 'example', goodreadsRating: 1, goodreadsReviewCount: 1, hardcoverId: 'example', hardcoverBookId: 'example', hardcoverRating: 1, hardcoverReviewCount: 1, doubanId: 'example', doubanRating: 1, doubanReviewCount: 1, lubimyczytacRating: 1, googleId: 'example', lubimyczytacId: 'example', ranobedbId: 'example', ranobedbRating: 1, audibleId: 'example', audibleRating: 1, audibleReviewCount: 1, externalUrl: 'example', coverUpdatedOn: '2026-04-15T12:00:00Z', audiobookCoverUpdatedOn: '2026-04-15T12:00:00Z', authors: ['example'], categories: ['example'], moods: ['example'], tags: ['example'], provider: 'Amazon', thumbnailUrl: 'example', bookReviews: [ { id: 1, metadataProvider: 'Amazon', reviewerName: 'example', title: 'example', rating: 1, date: '2026-04-15T12:00:00Z', body: 'example', country: 'example', spoiler: true, followersCount: 1, textReviewsCount: 1 } ], rating: 1, isFixedLayout: true, allMetadataLocked: true, titleLocked: true, subtitleLocked: true, publisherLocked: true, publishedDateLocked: true, descriptionLocked: true, seriesNameLocked: true, seriesNumberLocked: true, seriesTotalLocked: true, isbn13Locked: true, isbn10Locked: true, asinLocked: true, goodreadsIdLocked: true, comicvineIdLocked: true, hardcoverIdLocked: true, hardcoverBookIdLocked: true, doubanIdLocked: true, googleIdLocked: true, pageCountLocked: true, languageLocked: true, amazonRatingLocked: true, amazonReviewCountLocked: true, goodreadsRatingLocked: true, goodreadsReviewCountLocked: true, hardcoverRatingLocked: true, hardcoverReviewCountLocked: true, doubanRatingLocked: true, doubanReviewCountLocked: true, lubimyczytacIdLocked: true, lubimyczytacRatingLocked: true, ranobedbIdLocked: true, ranobedbRatingLocked: true, audibleIdLocked: true, audibleRatingLocked: true, audibleReviewCountLocked: true, externalUrlLocked: true, coverLocked: true, audiobookCoverLocked: true, authorsLocked: true, categoriesLocked: true, moodsLocked: true, tagsLocked: true, reviewsLocked: true, narratorLocked: true, abridgedLocked: true, ageRating: 1, contentRating: 'example', ageRatingLocked: true, contentRatingLocked: true }, enabledFields: ['example'], mergeArrays: true, selectAll: true, excludedIds: [1], selectedIds: [1] }};
try { const { data } = await axios.request(options); console.log(data);} catch (error) { console.error(error);}const url = 'http://127.0.0.1:58259/api/v1/bookdrop/files/bulk-edit';const options = { method: 'POST', headers: {'Content-Type': 'application/json'}, body: '{"fields":{"bookId":1,"title":"example","subtitle":"example","publisher":"example","publishedDate":"2026-04-15","description":"example","seriesName":"example","seriesNumber":1,"seriesTotal":1,"isbn13":"example","isbn10":"example","pageCount":1,"language":"example","narrator":"example","abridged":true,"audiobookMetadata":{"durationSeconds":1,"bitrate":1,"sampleRate":1,"channels":1,"codec":"example","chapterCount":1,"chapters":[{"index":1,"title":"example","startTimeMs":1,"endTimeMs":1,"durationMs":1}]},"comicMetadata":{"issueNumber":"example","volumeName":"example","volumeNumber":1,"storyArc":"example","storyArcNumber":1,"alternateSeries":"example","alternateIssue":"example","pencillers":["example"],"inkers":["example"],"colorists":["example"],"letterers":["example"],"coverArtists":["example"],"editors":["example"],"imprint":"example","format":"example","blackAndWhite":true,"manga":true,"readingDirection":"example","characters":["example"],"teams":["example"],"locations":["example"],"webLink":"example","notes":"example","issueNumberLocked":true,"volumeNameLocked":true,"volumeNumberLocked":true,"storyArcLocked":true,"storyArcNumberLocked":true,"alternateSeriesLocked":true,"alternateIssueLocked":true,"imprintLocked":true,"formatLocked":true,"blackAndWhiteLocked":true,"mangaLocked":true,"readingDirectionLocked":true,"webLinkLocked":true,"notesLocked":true,"creatorsLocked":true,"pencillersLocked":true,"inkersLocked":true,"coloristsLocked":true,"letterersLocked":true,"coverArtistsLocked":true,"editorsLocked":true,"charactersLocked":true,"teamsLocked":true,"locationsLocked":true},"asin":"example","amazonRating":1,"amazonReviewCount":1,"goodreadsId":"example","comicvineId":"example","goodreadsRating":1,"goodreadsReviewCount":1,"hardcoverId":"example","hardcoverBookId":"example","hardcoverRating":1,"hardcoverReviewCount":1,"doubanId":"example","doubanRating":1,"doubanReviewCount":1,"lubimyczytacRating":1,"googleId":"example","lubimyczytacId":"example","ranobedbId":"example","ranobedbRating":1,"audibleId":"example","audibleRating":1,"audibleReviewCount":1,"externalUrl":"example","coverUpdatedOn":"2026-04-15T12:00:00Z","audiobookCoverUpdatedOn":"2026-04-15T12:00:00Z","authors":["example"],"categories":["example"],"moods":["example"],"tags":["example"],"provider":"Amazon","thumbnailUrl":"example","bookReviews":[{"id":1,"metadataProvider":"Amazon","reviewerName":"example","title":"example","rating":1,"date":"2026-04-15T12:00:00Z","body":"example","country":"example","spoiler":true,"followersCount":1,"textReviewsCount":1}],"rating":1,"isFixedLayout":true,"allMetadataLocked":true,"titleLocked":true,"subtitleLocked":true,"publisherLocked":true,"publishedDateLocked":true,"descriptionLocked":true,"seriesNameLocked":true,"seriesNumberLocked":true,"seriesTotalLocked":true,"isbn13Locked":true,"isbn10Locked":true,"asinLocked":true,"goodreadsIdLocked":true,"comicvineIdLocked":true,"hardcoverIdLocked":true,"hardcoverBookIdLocked":true,"doubanIdLocked":true,"googleIdLocked":true,"pageCountLocked":true,"languageLocked":true,"amazonRatingLocked":true,"amazonReviewCountLocked":true,"goodreadsRatingLocked":true,"goodreadsReviewCountLocked":true,"hardcoverRatingLocked":true,"hardcoverReviewCountLocked":true,"doubanRatingLocked":true,"doubanReviewCountLocked":true,"lubimyczytacIdLocked":true,"lubimyczytacRatingLocked":true,"ranobedbIdLocked":true,"ranobedbRatingLocked":true,"audibleIdLocked":true,"audibleRatingLocked":true,"audibleReviewCountLocked":true,"externalUrlLocked":true,"coverLocked":true,"audiobookCoverLocked":true,"authorsLocked":true,"categoriesLocked":true,"moodsLocked":true,"tagsLocked":true,"reviewsLocked":true,"narratorLocked":true,"abridgedLocked":true,"ageRating":1,"contentRating":"example","ageRatingLocked":true,"contentRatingLocked":true},"enabledFields":["example"],"mergeArrays":true,"selectAll":true,"excludedIds":[1],"selectedIds":[1]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}val client = OkHttpClient()
val mediaType = MediaType.parse("application/json")val body = RequestBody.create(mediaType, "{ \"fields\": { \"bookId\": 1, \"title\": \"example\", \"subtitle\": \"example\", \"publisher\": \"example\", \"publishedDate\": \"2026-04-15\", \"description\": \"example\", \"seriesName\": \"example\", \"seriesNumber\": 1, \"seriesTotal\": 1, \"isbn13\": \"example\", \"isbn10\": \"example\", \"pageCount\": 1, \"language\": \"example\", \"narrator\": \"example\", \"abridged\": true, \"audiobookMetadata\": { \"durationSeconds\": 1, \"bitrate\": 1, \"sampleRate\": 1, \"channels\": 1, \"codec\": \"example\", \"chapterCount\": 1, \"chapters\": [ { \"index\": 1, \"title\": \"example\", \"startTimeMs\": 1, \"endTimeMs\": 1, \"durationMs\": 1 } ] }, \"comicMetadata\": { \"issueNumber\": \"example\", \"volumeName\": \"example\", \"volumeNumber\": 1, \"storyArc\": \"example\", \"storyArcNumber\": 1, \"alternateSeries\": \"example\", \"alternateIssue\": \"example\", \"pencillers\": [ \"example\" ], \"inkers\": [ \"example\" ], \"colorists\": [ \"example\" ], \"letterers\": [ \"example\" ], \"coverArtists\": [ \"example\" ], \"editors\": [ \"example\" ], \"imprint\": \"example\", \"format\": \"example\", \"blackAndWhite\": true, \"manga\": true, \"readingDirection\": \"example\", \"characters\": [ \"example\" ], \"teams\": [ \"example\" ], \"locations\": [ \"example\" ], \"webLink\": \"example\", \"notes\": \"example\", \"issueNumberLocked\": true, \"volumeNameLocked\": true, \"volumeNumberLocked\": true, \"storyArcLocked\": true, \"storyArcNumberLocked\": true, \"alternateSeriesLocked\": true, \"alternateIssueLocked\": true, \"imprintLocked\": true, \"formatLocked\": true, \"blackAndWhiteLocked\": true, \"mangaLocked\": true, \"readingDirectionLocked\": true, \"webLinkLocked\": true, \"notesLocked\": true, \"creatorsLocked\": true, \"pencillersLocked\": true, \"inkersLocked\": true, \"coloristsLocked\": true, \"letterersLocked\": true, \"coverArtistsLocked\": true, \"editorsLocked\": true, \"charactersLocked\": true, \"teamsLocked\": true, \"locationsLocked\": true }, \"asin\": \"example\", \"amazonRating\": 1, \"amazonReviewCount\": 1, \"goodreadsId\": \"example\", \"comicvineId\": \"example\", \"goodreadsRating\": 1, \"goodreadsReviewCount\": 1, \"hardcoverId\": \"example\", \"hardcoverBookId\": \"example\", \"hardcoverRating\": 1, \"hardcoverReviewCount\": 1, \"doubanId\": \"example\", \"doubanRating\": 1, \"doubanReviewCount\": 1, \"lubimyczytacRating\": 1, \"googleId\": \"example\", \"lubimyczytacId\": \"example\", \"ranobedbId\": \"example\", \"ranobedbRating\": 1, \"audibleId\": \"example\", \"audibleRating\": 1, \"audibleReviewCount\": 1, \"externalUrl\": \"example\", \"coverUpdatedOn\": \"2026-04-15T12:00:00Z\", \"audiobookCoverUpdatedOn\": \"2026-04-15T12:00:00Z\", \"authors\": [ \"example\" ], \"categories\": [ \"example\" ], \"moods\": [ \"example\" ], \"tags\": [ \"example\" ], \"provider\": \"Amazon\", \"thumbnailUrl\": \"example\", \"bookReviews\": [ { \"id\": 1, \"metadataProvider\": \"Amazon\", \"reviewerName\": \"example\", \"title\": \"example\", \"rating\": 1, \"date\": \"2026-04-15T12:00:00Z\", \"body\": \"example\", \"country\": \"example\", \"spoiler\": true, \"followersCount\": 1, \"textReviewsCount\": 1 } ], \"rating\": 1, \"isFixedLayout\": true, \"allMetadataLocked\": true, \"titleLocked\": true, \"subtitleLocked\": true, \"publisherLocked\": true, \"publishedDateLocked\": true, \"descriptionLocked\": true, \"seriesNameLocked\": true, \"seriesNumberLocked\": true, \"seriesTotalLocked\": true, \"isbn13Locked\": true, \"isbn10Locked\": true, \"asinLocked\": true, \"goodreadsIdLocked\": true, \"comicvineIdLocked\": true, \"hardcoverIdLocked\": true, \"hardcoverBookIdLocked\": true, \"doubanIdLocked\": true, \"googleIdLocked\": true, \"pageCountLocked\": true, \"languageLocked\": true, \"amazonRatingLocked\": true, \"amazonReviewCountLocked\": true, \"goodreadsRatingLocked\": true, \"goodreadsReviewCountLocked\": true, \"hardcoverRatingLocked\": true, \"hardcoverReviewCountLocked\": true, \"doubanRatingLocked\": true, \"doubanReviewCountLocked\": true, \"lubimyczytacIdLocked\": true, \"lubimyczytacRatingLocked\": true, \"ranobedbIdLocked\": true, \"ranobedbRatingLocked\": true, \"audibleIdLocked\": true, \"audibleRatingLocked\": true, \"audibleReviewCountLocked\": true, \"externalUrlLocked\": true, \"coverLocked\": true, \"audiobookCoverLocked\": true, \"authorsLocked\": true, \"categoriesLocked\": true, \"moodsLocked\": true, \"tagsLocked\": true, \"reviewsLocked\": true, \"narratorLocked\": true, \"abridgedLocked\": true, \"ageRating\": 1, \"contentRating\": \"example\", \"ageRatingLocked\": true, \"contentRatingLocked\": true }, \"enabledFields\": [ \"example\" ], \"mergeArrays\": true, \"selectAll\": true, \"excludedIds\": [ 1 ], \"selectedIds\": [ 1 ] }")val request = Request.Builder() .url("http://127.0.0.1:58259/api/v1/bookdrop/files/bulk-edit") .post(body) .addHeader("Content-Type", "application/json") .build()
val response = client.newCall(request).execute()use serde_json::json;use reqwest;
#[tokio::main]pub async fn main() { let url = "http://127.0.0.1:58259/api/v1/bookdrop/files/bulk-edit";
let payload = json!({ "fields": json!({ "bookId": 1, "title": "example", "subtitle": "example", "publisher": "example", "publishedDate": "2026-04-15", "description": "example", "seriesName": "example", "seriesNumber": 1, "seriesTotal": 1, "isbn13": "example", "isbn10": "example", "pageCount": 1, "language": "example", "narrator": "example", "abridged": true, "audiobookMetadata": json!({ "durationSeconds": 1, "bitrate": 1, "sampleRate": 1, "channels": 1, "codec": "example", "chapterCount": 1, "chapters": ( json!({ "index": 1, "title": "example", "startTimeMs": 1, "endTimeMs": 1, "durationMs": 1 }) ) }), "comicMetadata": json!({ "issueNumber": "example", "volumeName": "example", "volumeNumber": 1, "storyArc": "example", "storyArcNumber": 1, "alternateSeries": "example", "alternateIssue": "example", "pencillers": ("example"), "inkers": ("example"), "colorists": ("example"), "letterers": ("example"), "coverArtists": ("example"), "editors": ("example"), "imprint": "example", "format": "example", "blackAndWhite": true, "manga": true, "readingDirection": "example", "characters": ("example"), "teams": ("example"), "locations": ("example"), "webLink": "example", "notes": "example", "issueNumberLocked": true, "volumeNameLocked": true, "volumeNumberLocked": true, "storyArcLocked": true, "storyArcNumberLocked": true, "alternateSeriesLocked": true, "alternateIssueLocked": true, "imprintLocked": true, "formatLocked": true, "blackAndWhiteLocked": true, "mangaLocked": true, "readingDirectionLocked": true, "webLinkLocked": true, "notesLocked": true, "creatorsLocked": true, "pencillersLocked": true, "inkersLocked": true, "coloristsLocked": true, "letterersLocked": true, "coverArtistsLocked": true, "editorsLocked": true, "charactersLocked": true, "teamsLocked": true, "locationsLocked": true }), "asin": "example", "amazonRating": 1, "amazonReviewCount": 1, "goodreadsId": "example", "comicvineId": "example", "goodreadsRating": 1, "goodreadsReviewCount": 1, "hardcoverId": "example", "hardcoverBookId": "example", "hardcoverRating": 1, "hardcoverReviewCount": 1, "doubanId": "example", "doubanRating": 1, "doubanReviewCount": 1, "lubimyczytacRating": 1, "googleId": "example", "lubimyczytacId": "example", "ranobedbId": "example", "ranobedbRating": 1, "audibleId": "example", "audibleRating": 1, "audibleReviewCount": 1, "externalUrl": "example", "coverUpdatedOn": "2026-04-15T12:00:00Z", "audiobookCoverUpdatedOn": "2026-04-15T12:00:00Z", "authors": ("example"), "categories": ("example"), "moods": ("example"), "tags": ("example"), "provider": "Amazon", "thumbnailUrl": "example", "bookReviews": ( json!({ "id": 1, "metadataProvider": "Amazon", "reviewerName": "example", "title": "example", "rating": 1, "date": "2026-04-15T12:00:00Z", "body": "example", "country": "example", "spoiler": true, "followersCount": 1, "textReviewsCount": 1 }) ), "rating": 1, "isFixedLayout": true, "allMetadataLocked": true, "titleLocked": true, "subtitleLocked": true, "publisherLocked": true, "publishedDateLocked": true, "descriptionLocked": true, "seriesNameLocked": true, "seriesNumberLocked": true, "seriesTotalLocked": true, "isbn13Locked": true, "isbn10Locked": true, "asinLocked": true, "goodreadsIdLocked": true, "comicvineIdLocked": true, "hardcoverIdLocked": true, "hardcoverBookIdLocked": true, "doubanIdLocked": true, "googleIdLocked": true, "pageCountLocked": true, "languageLocked": true, "amazonRatingLocked": true, "amazonReviewCountLocked": true, "goodreadsRatingLocked": true, "goodreadsReviewCountLocked": true, "hardcoverRatingLocked": true, "hardcoverReviewCountLocked": true, "doubanRatingLocked": true, "doubanReviewCountLocked": true, "lubimyczytacIdLocked": true, "lubimyczytacRatingLocked": true, "ranobedbIdLocked": true, "ranobedbRatingLocked": true, "audibleIdLocked": true, "audibleRatingLocked": true, "audibleReviewCountLocked": true, "externalUrlLocked": true, "coverLocked": true, "audiobookCoverLocked": true, "authorsLocked": true, "categoriesLocked": true, "moodsLocked": true, "tagsLocked": true, "reviewsLocked": true, "narratorLocked": true, "abridgedLocked": true, "ageRating": 1, "contentRating": "example", "ageRatingLocked": true, "contentRatingLocked": true }), "enabledFields": ("example"), "mergeArrays": true, "selectAll": true, "excludedIds": (1), "selectedIds": (1) });
let mut headers = reqwest::header::HeaderMap::new(); headers.insert("Content-Type", "application/json".parse().unwrap());
let client = reqwest::Client::new(); let response = client.post(url) .headers(headers) .json(&payload) .send() .await;
let results = response.unwrap() .json::<serde_json::Value>() .await .unwrap();
dbg!(results);}curl --request POST \ --url http://127.0.0.1:58259/api/v1/bookdrop/files/bulk-edit \ --header 'Content-Type: application/json' \ --data '{ "fields": { "bookId": 1, "title": "example", "subtitle": "example", "publisher": "example", "publishedDate": "2026-04-15", "description": "example", "seriesName": "example", "seriesNumber": 1, "seriesTotal": 1, "isbn13": "example", "isbn10": "example", "pageCount": 1, "language": "example", "narrator": "example", "abridged": true, "audiobookMetadata": { "durationSeconds": 1, "bitrate": 1, "sampleRate": 1, "channels": 1, "codec": "example", "chapterCount": 1, "chapters": [ { "index": 1, "title": "example", "startTimeMs": 1, "endTimeMs": 1, "durationMs": 1 } ] }, "comicMetadata": { "issueNumber": "example", "volumeName": "example", "volumeNumber": 1, "storyArc": "example", "storyArcNumber": 1, "alternateSeries": "example", "alternateIssue": "example", "pencillers": [ "example" ], "inkers": [ "example" ], "colorists": [ "example" ], "letterers": [ "example" ], "coverArtists": [ "example" ], "editors": [ "example" ], "imprint": "example", "format": "example", "blackAndWhite": true, "manga": true, "readingDirection": "example", "characters": [ "example" ], "teams": [ "example" ], "locations": [ "example" ], "webLink": "example", "notes": "example", "issueNumberLocked": true, "volumeNameLocked": true, "volumeNumberLocked": true, "storyArcLocked": true, "storyArcNumberLocked": true, "alternateSeriesLocked": true, "alternateIssueLocked": true, "imprintLocked": true, "formatLocked": true, "blackAndWhiteLocked": true, "mangaLocked": true, "readingDirectionLocked": true, "webLinkLocked": true, "notesLocked": true, "creatorsLocked": true, "pencillersLocked": true, "inkersLocked": true, "coloristsLocked": true, "letterersLocked": true, "coverArtistsLocked": true, "editorsLocked": true, "charactersLocked": true, "teamsLocked": true, "locationsLocked": true }, "asin": "example", "amazonRating": 1, "amazonReviewCount": 1, "goodreadsId": "example", "comicvineId": "example", "goodreadsRating": 1, "goodreadsReviewCount": 1, "hardcoverId": "example", "hardcoverBookId": "example", "hardcoverRating": 1, "hardcoverReviewCount": 1, "doubanId": "example", "doubanRating": 1, "doubanReviewCount": 1, "lubimyczytacRating": 1, "googleId": "example", "lubimyczytacId": "example", "ranobedbId": "example", "ranobedbRating": 1, "audibleId": "example", "audibleRating": 1, "audibleReviewCount": 1, "externalUrl": "example", "coverUpdatedOn": "2026-04-15T12:00:00Z", "audiobookCoverUpdatedOn": "2026-04-15T12:00:00Z", "authors": [ "example" ], "categories": [ "example" ], "moods": [ "example" ], "tags": [ "example" ], "provider": "Amazon", "thumbnailUrl": "example", "bookReviews": [ { "id": 1, "metadataProvider": "Amazon", "reviewerName": "example", "title": "example", "rating": 1, "date": "2026-04-15T12:00:00Z", "body": "example", "country": "example", "spoiler": true, "followersCount": 1, "textReviewsCount": 1 } ], "rating": 1, "isFixedLayout": true, "allMetadataLocked": true, "titleLocked": true, "subtitleLocked": true, "publisherLocked": true, "publishedDateLocked": true, "descriptionLocked": true, "seriesNameLocked": true, "seriesNumberLocked": true, "seriesTotalLocked": true, "isbn13Locked": true, "isbn10Locked": true, "asinLocked": true, "goodreadsIdLocked": true, "comicvineIdLocked": true, "hardcoverIdLocked": true, "hardcoverBookIdLocked": true, "doubanIdLocked": true, "googleIdLocked": true, "pageCountLocked": true, "languageLocked": true, "amazonRatingLocked": true, "amazonReviewCountLocked": true, "goodreadsRatingLocked": true, "goodreadsReviewCountLocked": true, "hardcoverRatingLocked": true, "hardcoverReviewCountLocked": true, "doubanRatingLocked": true, "doubanReviewCountLocked": true, "lubimyczytacIdLocked": true, "lubimyczytacRatingLocked": true, "ranobedbIdLocked": true, "ranobedbRatingLocked": true, "audibleIdLocked": true, "audibleRatingLocked": true, "audibleReviewCountLocked": true, "externalUrlLocked": true, "coverLocked": true, "audiobookCoverLocked": true, "authorsLocked": true, "categoriesLocked": true, "moodsLocked": true, "tagsLocked": true, "reviewsLocked": true, "narratorLocked": true, "abridgedLocked": true, "ageRating": 1, "contentRating": "example", "ageRatingLocked": true, "contentRatingLocked": true }, "enabledFields": [ "example" ], "mergeArrays": true, "selectAll": true, "excludedIds": [ 1 ], "selectedIds": [ 1 ] }'wget --quiet \ --method POST \ --header 'Content-Type: application/json' \ --body-data '{ "fields": { "bookId": 1, "title": "example", "subtitle": "example", "publisher": "example", "publishedDate": "2026-04-15", "description": "example", "seriesName": "example", "seriesNumber": 1, "seriesTotal": 1, "isbn13": "example", "isbn10": "example", "pageCount": 1, "language": "example", "narrator": "example", "abridged": true, "audiobookMetadata": { "durationSeconds": 1, "bitrate": 1, "sampleRate": 1, "channels": 1, "codec": "example", "chapterCount": 1, "chapters": [ { "index": 1, "title": "example", "startTimeMs": 1, "endTimeMs": 1, "durationMs": 1 } ] }, "comicMetadata": { "issueNumber": "example", "volumeName": "example", "volumeNumber": 1, "storyArc": "example", "storyArcNumber": 1, "alternateSeries": "example", "alternateIssue": "example", "pencillers": [ "example" ], "inkers": [ "example" ], "colorists": [ "example" ], "letterers": [ "example" ], "coverArtists": [ "example" ], "editors": [ "example" ], "imprint": "example", "format": "example", "blackAndWhite": true, "manga": true, "readingDirection": "example", "characters": [ "example" ], "teams": [ "example" ], "locations": [ "example" ], "webLink": "example", "notes": "example", "issueNumberLocked": true, "volumeNameLocked": true, "volumeNumberLocked": true, "storyArcLocked": true, "storyArcNumberLocked": true, "alternateSeriesLocked": true, "alternateIssueLocked": true, "imprintLocked": true, "formatLocked": true, "blackAndWhiteLocked": true, "mangaLocked": true, "readingDirectionLocked": true, "webLinkLocked": true, "notesLocked": true, "creatorsLocked": true, "pencillersLocked": true, "inkersLocked": true, "coloristsLocked": true, "letterersLocked": true, "coverArtistsLocked": true, "editorsLocked": true, "charactersLocked": true, "teamsLocked": true, "locationsLocked": true }, "asin": "example", "amazonRating": 1, "amazonReviewCount": 1, "goodreadsId": "example", "comicvineId": "example", "goodreadsRating": 1, "goodreadsReviewCount": 1, "hardcoverId": "example", "hardcoverBookId": "example", "hardcoverRating": 1, "hardcoverReviewCount": 1, "doubanId": "example", "doubanRating": 1, "doubanReviewCount": 1, "lubimyczytacRating": 1, "googleId": "example", "lubimyczytacId": "example", "ranobedbId": "example", "ranobedbRating": 1, "audibleId": "example", "audibleRating": 1, "audibleReviewCount": 1, "externalUrl": "example", "coverUpdatedOn": "2026-04-15T12:00:00Z", "audiobookCoverUpdatedOn": "2026-04-15T12:00:00Z", "authors": [ "example" ], "categories": [ "example" ], "moods": [ "example" ], "tags": [ "example" ], "provider": "Amazon", "thumbnailUrl": "example", "bookReviews": [ { "id": 1, "metadataProvider": "Amazon", "reviewerName": "example", "title": "example", "rating": 1, "date": "2026-04-15T12:00:00Z", "body": "example", "country": "example", "spoiler": true, "followersCount": 1, "textReviewsCount": 1 } ], "rating": 1, "isFixedLayout": true, "allMetadataLocked": true, "titleLocked": true, "subtitleLocked": true, "publisherLocked": true, "publishedDateLocked": true, "descriptionLocked": true, "seriesNameLocked": true, "seriesNumberLocked": true, "seriesTotalLocked": true, "isbn13Locked": true, "isbn10Locked": true, "asinLocked": true, "goodreadsIdLocked": true, "comicvineIdLocked": true, "hardcoverIdLocked": true, "hardcoverBookIdLocked": true, "doubanIdLocked": true, "googleIdLocked": true, "pageCountLocked": true, "languageLocked": true, "amazonRatingLocked": true, "amazonReviewCountLocked": true, "goodreadsRatingLocked": true, "goodreadsReviewCountLocked": true, "hardcoverRatingLocked": true, "hardcoverReviewCountLocked": true, "doubanRatingLocked": true, "doubanReviewCountLocked": true, "lubimyczytacIdLocked": true, "lubimyczytacRatingLocked": true, "ranobedbIdLocked": true, "ranobedbRatingLocked": true, "audibleIdLocked": true, "audibleRatingLocked": true, "audibleReviewCountLocked": true, "externalUrlLocked": true, "coverLocked": true, "audiobookCoverLocked": true, "authorsLocked": true, "categoriesLocked": true, "moodsLocked": true, "tagsLocked": true, "reviewsLocked": true, "narratorLocked": true, "abridgedLocked": true, "ageRating": 1, "contentRating": "example", "ageRatingLocked": true, "contentRatingLocked": true }, "enabledFields": [ "example" ], "mergeArrays": true, "selectAll": true, "excludedIds": [ 1 ], "selectedIds": [ 1 ] }' \ --output-document \ - http://127.0.0.1:58259/api/v1/bookdrop/files/bulk-editApply metadata changes to multiple selected files at once.
Request Body required
Section titled “Request Body required ” Media type application/json
Bulk edit request
object
fields
required
object
bookId
integer format: int64
title
string
subtitle
string
publisher
string
publishedDate
string format: date
description
string
seriesName
string
seriesNumber
number format: float
seriesTotal
integer format: int32
isbn13
string
isbn10
string
pageCount
integer format: int32
language
string
narrator
string
abridged
boolean
audiobookMetadata
object
durationSeconds
integer format: int64
bitrate
integer format: int32
sampleRate
integer format: int32
channels
integer format: int32
codec
string
chapterCount
integer format: int32
chapters
Array<object>
object
index
integer format: int32
title
string
startTimeMs
integer format: int64
endTimeMs
integer format: int64
durationMs
integer format: int64
comicMetadata
object
issueNumber
string
volumeName
string
volumeNumber
integer format: int32
storyArc
string
storyArcNumber
integer format: int32
alternateSeries
string
alternateIssue
string
pencillers
Array<string>
inkers
Array<string>
colorists
Array<string>
letterers
Array<string>
coverArtists
Array<string>
editors
Array<string>
imprint
string
format
string
blackAndWhite
boolean
manga
boolean
readingDirection
string
characters
Array<string>
teams
Array<string>
locations
Array<string>
webLink
string
notes
string
issueNumberLocked
boolean
volumeNameLocked
boolean
volumeNumberLocked
boolean
storyArcLocked
boolean
storyArcNumberLocked
boolean
alternateSeriesLocked
boolean
alternateIssueLocked
boolean
imprintLocked
boolean
formatLocked
boolean
blackAndWhiteLocked
boolean
mangaLocked
boolean
readingDirectionLocked
boolean
webLinkLocked
boolean
notesLocked
boolean
creatorsLocked
boolean
pencillersLocked
boolean
inkersLocked
boolean
coloristsLocked
boolean
letterersLocked
boolean
coverArtistsLocked
boolean
editorsLocked
boolean
charactersLocked
boolean
teamsLocked
boolean
locationsLocked
boolean
asin
string
amazonRating
number format: double
amazonReviewCount
integer format: int32
goodreadsId
string
comicvineId
string
goodreadsRating
number format: double
goodreadsReviewCount
integer format: int32
hardcoverId
string
hardcoverBookId
string
hardcoverRating
number format: double
hardcoverReviewCount
integer format: int32
doubanId
string
doubanRating
number format: double
doubanReviewCount
integer format: int32
lubimyczytacRating
number format: double
googleId
string
lubimyczytacId
string
ranobedbId
string
ranobedbRating
number format: double
audibleId
string
audibleRating
number format: double
audibleReviewCount
integer format: int32
externalUrl
string
coverUpdatedOn
string format: date-time
audiobookCoverUpdatedOn
string format: date-time
authors
Array<string>
categories
Array<string>
moods
Array<string>
tags
Array<string>
provider
string
thumbnailUrl
string
bookReviews
Array<object>
object
id
integer format: int64
metadataProvider
string
reviewerName
string
title
string
rating
number format: float
date
string format: date-time
body
string
country
string
spoiler
boolean
followersCount
integer format: int32
textReviewsCount
integer format: int32
rating
number format: double
isFixedLayout
boolean
allMetadataLocked
boolean
titleLocked
boolean
subtitleLocked
boolean
publisherLocked
boolean
publishedDateLocked
boolean
descriptionLocked
boolean
seriesNameLocked
boolean
seriesNumberLocked
boolean
seriesTotalLocked
boolean
isbn13Locked
boolean
isbn10Locked
boolean
asinLocked
boolean
goodreadsIdLocked
boolean
comicvineIdLocked
boolean
hardcoverIdLocked
boolean
hardcoverBookIdLocked
boolean
doubanIdLocked
boolean
googleIdLocked
boolean
pageCountLocked
boolean
languageLocked
boolean
amazonRatingLocked
boolean
amazonReviewCountLocked
boolean
goodreadsRatingLocked
boolean
goodreadsReviewCountLocked
boolean
hardcoverRatingLocked
boolean
hardcoverReviewCountLocked
boolean
doubanRatingLocked
boolean
doubanReviewCountLocked
boolean
lubimyczytacIdLocked
boolean
lubimyczytacRatingLocked
boolean
ranobedbIdLocked
boolean
ranobedbRatingLocked
boolean
audibleIdLocked
boolean
audibleRatingLocked
boolean
audibleReviewCountLocked
boolean
externalUrlLocked
boolean
coverLocked
boolean
audiobookCoverLocked
boolean
authorsLocked
boolean
categoriesLocked
boolean
moodsLocked
boolean
tagsLocked
boolean
reviewsLocked
boolean
narratorLocked
boolean
abridgedLocked
boolean
ageRating
integer format: int32
contentRating
string
ageRatingLocked
boolean
contentRatingLocked
boolean
enabledFields
required
Array<string>
mergeArrays
boolean
selectAll
boolean
excludedIds
Array<integer>
selectedIds
Array<integer>
Responses
Section titled “ Responses ”Bulk edit completed
Media type */*
object
totalFiles
integer format: int32
successfullyUpdated
integer format: int32
failed
integer format: int32