NAV
shell ruby python csharp php

LibraryResourceCopy

The LibraryResourceCopy object

The LibraryResourceCopy object looks like this in JSON:

{
    "object": "library_resource_copy",
    "id": 6,
    "resource_id": 6,
    "home_library_id": 1,
    "location_id": null,
    "current_library_id": 1,
    "destination_library_id": null,
    "departed_at": null,
    "call_number": "808.8 DAN",
    "status": "available",
    "status_link_id": null,
    "status_date": null,
    "barcode": "9555788334599223",
    "purchase_price": null,
    "replacement_price": null,
    "total_loans": null,
    "last_inventoried_at": null,
    "last_inventory_location_id": null,
    "last_inventoried_by_id": null,
    "import_id": null,
    "sort_a": null,
    "sort_b": null,
    "sort_c": null,
    "sort_all": null,
    "acquisition_date": null,
    "acquisition_source_id": null,
    "added_at": null,
    "added_by_id": null,
    "sandbox": true,
    "api_version": null
}
Attribute Required Data Type
id Yes int
resource_id Yes int
home_library_id Yes int
location_id No int
current_library_id Yes int
destination_library_id No int
departed_at No datetime
call_number No text (100)
status Yes enum (available, checked_out, lost, deleted, damaged, on_reserve, not_available, on_hold, not_owned)
status_link_id No int
status_date No date
barcode No text (100)
purchase_price No decimal
replacement_price No decimal
total_loans Yes int
last_inventoried_at No datetime
last_inventory_location_id No int
last_inventoried_by_id No int
import_id No int
sort_a No text (100)
sort_b No decimal
sort_c No text (50)
sort_all No text (200)
acquisition_date No date
acquisition_source_id No int
added_at No datetime
added_by_id No int
sandbox No bool
api_version No --

index (copies)

Example code to call this method:

curl "https://yourschool.populiweb.com/api2/libraryresources/(libraryresource)/copies" \
-H "Content-Type: application/json" \ 
-H "Authorization: Bearer YOUR_POPULI_API_KEY" \ 
-X GET
require 'httparty'
response = HTTParty.get(
 'https://yourschool.populiweb.com/api2/libraryresources/(libraryresource)/copies',
 headers: {
  'Authorization' => 'Bearer YOUR_POPULI_API_KEY'
 },
)
puts response.body
import requests
response = requests.get(
 'https://yourschool.populiweb.com/api2/libraryresources/(libraryresource)/copies',
 headers={
  'Authorization': 'Bearer YOUR_POPULI_API_KEY'
 },
)
print(response.json())
using Newtonsoft.Json;
using RestSharp;
var client = new RestClient();
var request = new RestRequest(new Uri("https://yourschool.populiweb.com/api2/libraryresources/(libraryresource)/copies"), Method.Get);
request.AddHeader("Authorization", "Bearer YOUR_POPULI_API_KEY");
var response = client.Execute(request);
var response_object = JsonConvert.DeserializeObject(response.Content);
Console.Write(response_object);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://yourschool.populiweb.com/api2/libraryresources/(libraryresource)/copies');
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Authorization: Bearer YOUR_POPULI_API_KEY']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
$response = curl_exec($curl);
$response_decoded = json_decode($response);
var_dump($response_decoded);

Example response:

{
    "object": "list",
    "count": 2,
    "results": 2,
    "results_per_page": null,
    "pages": 1,
    "page": 1,
    "offset": 0,
    "has_more": false,
    "data": [
        {
            "object": "library_resource_copy",
            "id": 6,
            "resource_id": 6,
            "home_library_id": 1,
            "location_id": null,
            "current_library_id": 1,
            "destination_library_id": null,
            "departed_at": null,
            "call_number": "808.8 DAN",
            "status": "available",
            "status_link_id": null,
            "status_date": null,
            "barcode": "9555788334599223",
            "purchase_price": null,
            "replacement_price": null,
            "total_loans": null,
            "last_inventoried_at": null,
            "last_inventory_location_id": null,
            "last_inventoried_by_id": null,
            "import_id": null,
            "sort_a": null,
            "sort_b": null,
            "sort_c": null,
            "sort_all": null,
            "acquisition_date": null,
            "acquisition_source_id": null,
            "added_at": null,
            "added_by_id": null
        }
    ],
    "sandbox": true,
    "api_version": "2026-07-13"
}

Retrieves all LibraryResourceCopy objects tied to a specific Libraryresource.

HTTP Request

GET /libraryresources/(libraryresource)/copies

Parameters

None

Permissions

One of the following roles is required to call this method:

create_copy

Example code to call this method:

curl "https://yourschool.populiweb.com/api2/libraryresources/(libraryresource)/copies/create" \
-H "Content-Type: application/json" \ 
-H "Authorization: Bearer YOUR_POPULI_API_KEY" \ 
-X POST
-d '{
    "call_number": "808.8 DAN",
    "barcode": "111222333444555",
    "home_library_id": 1,
    "purchase_price": "8.50",
    "acquisition_date": "2024-01-15"
}' \ 
require 'httparty'
response = HTTParty.post(
 'https://yourschool.populiweb.com/api2/libraryresources/(libraryresource)/copies/create',
 headers: {
  'Authorization' => 'Bearer YOUR_POPULI_API_KEY'
 },
 body: {
  :call_number => '808.8 DAN',
  :barcode => '111222333444555',
  :home_library_id => 1
 }.to_json
)
puts response.body
import requests
response = requests.post(
 'https://yourschool.populiweb.com/api2/libraryresources/(libraryresource)/copies/create',
 headers={
  'Authorization': 'Bearer YOUR_POPULI_API_KEY'
 },
 json={
  'call_number': '808.8 DAN',
  'barcode': '111222333444555',
  'home_library_id': 1
 }
)
print(response.json())
using Newtonsoft.Json;
using RestSharp;
var client = new RestClient();
var request = new RestRequest(new Uri("https://yourschool.populiweb.com/api2/libraryresources/(libraryresource)/copies/create"), Method.Post);
request.AddHeader("Authorization", "Bearer YOUR_POPULI_API_KEY");
request.AddJsonBody(new {
  call_number = "808.8 DAN",
  barcode = "111222333444555",
  home_library_id = 1
});
var response = client.Execute(request);
var response_object = JsonConvert.DeserializeObject(response.Content);
Console.Write(response_object);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://yourschool.populiweb.com/api2/libraryresources/(libraryresource)/copies/create');
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Authorization: Bearer YOUR_POPULI_API_KEY']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode([
  'call_number' => '808.8 DAN',
  'barcode' => '111222333444555',
  'home_library_id' => 1
]));
$response = curl_exec($curl);
$response_decoded = json_decode($response);
var_dump($response_decoded);

Example response:

{
    "object": "library_resource_copy",
    "id": 491305,
    "resource_id": 6,
    "home_library_id": 1,
    "location_id": 0,
    "current_library_id": 1,
    "destination_library_id": null,
    "departed_at": null,
    "call_number": "808.8 DAN",
    "status": "available",
    "status_link_id": null,
    "status_date": null,
    "barcode": "111222333444555",
    "purchase_price": 8.5,
    "replacement_price": null,
    "total_loans": null,
    "last_inventoried_at": null,
    "last_inventory_location_id": null,
    "last_inventoried_by_id": null,
    "import_id": null,
    "sort_a": "808.8 DAN",
    "sort_b": null,
    "sort_c": null,
    "sort_all": "808.8 DAN",
    "acquisition_date": "2024-01-15",
    "acquisition_source_id": null,
    "added_at": "2026-10-20T00:04:14+00:00",
    "added_by_id": 22,
    "sandbox": true,
    "api_version": "2026-07-13"
}

HTTP Request

POST /libraryresources/(libraryresource)/copies/create

Parameters

Name Required Data Type Description
call_number Yes text (100)
barcode Yes text (100) Must be unique across your library. A duplicate barcode is an error (the call does not fall back to an auto-generated one).
home_library_id Yes int The id of the library the copy belongs to.
location_id No int The id of the location within the home library.
status No enum (available, checked_out, lost, deleted, damaged, on_reserve, not_available, on_hold, not_owned) New copies can be AVAILABLE or NOT_AVAILABLE.. Default is AVAILABLE
purchase_price No decimal
replacement_price No decimal
acquisition_date No date Use YYYY-MM-DD.
acquisition_source_id No int The id of the agent the copy was acquired from. A name works too - a new agent is created if none match (numeric values are always treated as agent ids).

Permissions

One of the following roles is required to call this method:

show (copy)

Example code to call this method:

curl "https://yourschool.populiweb.com/api2/libraryresources/(libraryresource)/copies/(libraryresourcecopy)" \
-H "Content-Type: application/json" \ 
-H "Authorization: Bearer YOUR_POPULI_API_KEY" \ 
-X GET
require 'httparty'
response = HTTParty.get(
 'https://yourschool.populiweb.com/api2/libraryresources/(libraryresource)/copies/(libraryresourcecopy)',
 headers: {
  'Authorization' => 'Bearer YOUR_POPULI_API_KEY'
 },
)
puts response.body
import requests
response = requests.get(
 'https://yourschool.populiweb.com/api2/libraryresources/(libraryresource)/copies/(libraryresourcecopy)',
 headers={
  'Authorization': 'Bearer YOUR_POPULI_API_KEY'
 },
)
print(response.json())
using Newtonsoft.Json;
using RestSharp;
var client = new RestClient();
var request = new RestRequest(new Uri("https://yourschool.populiweb.com/api2/libraryresources/(libraryresource)/copies/(libraryresourcecopy)"), Method.Get);
request.AddHeader("Authorization", "Bearer YOUR_POPULI_API_KEY");
var response = client.Execute(request);
var response_object = JsonConvert.DeserializeObject(response.Content);
Console.Write(response_object);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://yourschool.populiweb.com/api2/libraryresources/(libraryresource)/copies/(libraryresourcecopy)');
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Authorization: Bearer YOUR_POPULI_API_KEY']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
$response = curl_exec($curl);
$response_decoded = json_decode($response);
var_dump($response_decoded);

Example response:

{
    "object": "library_resource_copy",
    "id": 6,
    "resource_id": 6,
    "home_library_id": 1,
    "location_id": null,
    "current_library_id": 1,
    "destination_library_id": null,
    "departed_at": null,
    "call_number": "808.8 DAN",
    "status": "available",
    "status_link_id": null,
    "status_date": null,
    "barcode": "9555788334599223",
    "purchase_price": null,
    "replacement_price": null,
    "total_loans": null,
    "last_inventoried_at": null,
    "last_inventory_location_id": null,
    "last_inventoried_by_id": null,
    "import_id": null,
    "sort_a": null,
    "sort_b": null,
    "sort_c": null,
    "sort_all": null,
    "acquisition_date": null,
    "acquisition_source_id": null,
    "added_at": null,
    "added_by_id": null,
    "sandbox": true,
    "api_version": "2026-07-13"
}

Retrieves a specific LibraryResourceCopy object.

HTTP Request

GET /libraryresources/(libraryresource)/copies/(libraryresourcecopy)

Parameters

No additional parameters are needed beyond the ID of the object being requested that appears in the URL.

Permissions

One of the following roles is required to call this method:

update_copy

Example code to call this method:

curl "https://yourschool.populiweb.com/api2/libraryresources/(libraryresource)/copies/(libraryresourcecopy)/update" \
-H "Content-Type: application/json" \ 
-H "Authorization: Bearer YOUR_POPULI_API_KEY" \ 
-X PUT
-d '{
    "call_number": "808.9 DAN"
}' \ 
require 'httparty'
response = HTTParty.put(
 'https://yourschool.populiweb.com/api2/libraryresources/(libraryresource)/copies/(libraryresourcecopy)/update',
 headers: {
  'Authorization' => 'Bearer YOUR_POPULI_API_KEY'
 },
)
puts response.body
import requests
response = requests.put(
 'https://yourschool.populiweb.com/api2/libraryresources/(libraryresource)/copies/(libraryresourcecopy)/update',
 headers={
  'Authorization': 'Bearer YOUR_POPULI_API_KEY'
 },
)
print(response.json())
using Newtonsoft.Json;
using RestSharp;
var client = new RestClient();
var request = new RestRequest(new Uri("https://yourschool.populiweb.com/api2/libraryresources/(libraryresource)/copies/(libraryresourcecopy)/update"), Method.Put);
request.AddHeader("Authorization", "Bearer YOUR_POPULI_API_KEY");
var response = client.Execute(request);
var response_object = JsonConvert.DeserializeObject(response.Content);
Console.Write(response_object);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://yourschool.populiweb.com/api2/libraryresources/(libraryresource)/copies/(libraryresourcecopy)/update');
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Authorization: Bearer YOUR_POPULI_API_KEY']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'PUT');
$response = curl_exec($curl);
$response_decoded = json_decode($response);
var_dump($response_decoded);

Example response:

{
    "object": "library_resource_copy",
    "id": 6,
    "resource_id": 6,
    "home_library_id": 1,
    "location_id": null,
    "current_library_id": 1,
    "destination_library_id": null,
    "departed_at": null,
    "call_number": "808.9 DAN",
    "status": "available",
    "status_link_id": null,
    "status_date": null,
    "barcode": "9555788334599223",
    "purchase_price": null,
    "replacement_price": null,
    "total_loans": null,
    "last_inventoried_at": null,
    "last_inventory_location_id": null,
    "last_inventoried_by_id": null,
    "import_id": null,
    "sort_a": "808.9 DAN",
    "sort_b": null,
    "sort_c": null,
    "sort_all": "808.9 DAN",
    "acquisition_date": null,
    "acquisition_source_id": null,
    "added_at": null,
    "added_by_id": null,
    "sandbox": true,
    "api_version": "2026-07-13"
}

Updates the copy attribute of an existing LibraryResourceCopy object.

HTTP Request

PUT /libraryresources/(libraryresource)/copies/(libraryresourcecopy)/update

Parameters

Name Required Data Type Description
call_number No text (100)
barcode No text (100) Must be unique across your library.
home_library_id No int
location_id No int Must belong to the copy's home library.
status No enum (available, checked_out, lost, deleted, damaged, on_reserve, not_available, on_hold, not_owned) You can set a copy's status to AVAILABLE, NOT_AVAILABLE, LOST, or DAMAGED. Other statuses are managed by circulation (checkouts, holds, transits).
purchase_price No decimal
replacement_price No decimal
acquisition_date No date Use YYYY-MM-DD.
acquisition_source_id No int The id of the agent the copy was acquired from. A name works too - a new agent is created if none match (numeric values are always treated as agent ids).

Permissions

One of the following roles is required to call this method:

delete_copy

Example code to call this method:

curl "https://yourschool.populiweb.com/api2/libraryresources/(libraryresource)/copies/(libraryresourcecopy)/delete" \
-H "Content-Type: application/json" \ 
-H "Authorization: Bearer YOUR_POPULI_API_KEY" \ 
-X DELETE
require 'httparty'
response = HTTParty.delete(
 'https://yourschool.populiweb.com/api2/libraryresources/(libraryresource)/copies/(libraryresourcecopy)/delete',
 headers: {
  'Authorization' => 'Bearer YOUR_POPULI_API_KEY'
 },
)
puts response.body
import requests
response = requests.delete(
 'https://yourschool.populiweb.com/api2/libraryresources/(libraryresource)/copies/(libraryresourcecopy)/delete',
 headers={
  'Authorization': 'Bearer YOUR_POPULI_API_KEY'
 },
)
print(response.json())
using Newtonsoft.Json;
using RestSharp;
var client = new RestClient();
var request = new RestRequest(new Uri("https://yourschool.populiweb.com/api2/libraryresources/(libraryresource)/copies/(libraryresourcecopy)/delete"), Method.Delete);
request.AddHeader("Authorization", "Bearer YOUR_POPULI_API_KEY");
var response = client.Execute(request);
var response_object = JsonConvert.DeserializeObject(response.Content);
Console.Write(response_object);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://yourschool.populiweb.com/api2/libraryresources/(libraryresource)/copies/(libraryresourcecopy)/delete');
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Authorization: Bearer YOUR_POPULI_API_KEY']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'DELETE');
$response = curl_exec($curl);
$response_decoded = json_decode($response);
var_dump($response_decoded);

Example response:

{
    "object": "library_resource_copy",
    "id": 7,
    "deleted": true
}

HTTP Request

DELETE /libraryresources/(libraryresource)/copies/(libraryresourcecopy)/delete

Parameters

None

Permissions

One of the following roles is required to call this method: