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:
- Library Admin
- Library Staff
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:
- Library Admin
- Library Staff
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:
- Library Admin
- Library Staff
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:
- Library Admin
- Library Staff
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:
- Library Admin
- Library Staff