Tutorials

Recording Holdings

Using HoldingCore2 and RepoCore2 to track physical zine collections

This tutorial explains how to use HoldingCore2 to track physical zine holdings (copies you own) and RepoCore2 to document your repository (library, archive, distro, or personal collection).

What You'll Learn

  • The difference between a zine (the work) and a holding (a copy)
  • How to create RepoCore2 records for repositories
  • How to create HoldingCore2 records for individual copies
  • How to track condition, access, and location

Understanding the Concepts

Zine vs Holding

  • ZineCore2 = The intellectual work ("Riot Grrrl Zine")
  • HoldingCore2 = A specific physical copy you own

Think of it like books:

  • Many libraries own copies of "Moby Dick" (the work)
  • Each library's copy is a separate holding (this copy, with this call number, in this condition)

Why Track Holdings Separately?

  • Inventory management: Know what you physically have
  • Condition tracking: Document damage, missing pages, etc.
  • Access control: Is it loanable? Reference only?
  • Location: Where is it stored?
  • Circulation: Can it be photocopied or digitized?

Step 1: Create a Repository Record

Before tracking holdings, describe your repository (collection).

Example: Personal Collection

Your home zine collection

{
  "repo_id": "my-zine-collection",
  "repository_name": "Pat's Personal Zine Collection",
  "repository_kind": "Personal Collection",
  "description": "Personal collection of punk, feminist, and DIY zines collected since 2015.",
  "location": {
    "city": "Seattle",
    "region": "Washington",
    "country": "United States"
  }
}

Example: Library

A library zine collection

{
  "repo_id": "oaktown-library-zines",
  "repository_name": "Oakland Public Library Zine Collection",
  "repository_kind": "Library",
  "description": "Public lending library with a circulating zine collection focused on local zine culture and community voices.",
  "location": {
    "city": "Oakland",
    "region": "California",
    "country": "United States"
  },
  "marc_org_code": "CaOK",
  "website": ["https://oaklandlibrary.org"],
  "email": "[email protected]"
}

Example: Zine Distro

An independent distro

{
  "repo_id": "queer-zine-collective",
  "repository_name": "Queer Zine Collective Distro",
  "repository_kind": "Distro",
  "description": "Worker-run distro specializing in queer and trans zines. All zines available for trade or sliding scale purchase.",
  "location": {
    "city": "Portland",
    "region": "Oregon",
    "country": "United States"
  },
  "website": ["https://queerzinecollective.example.org"],
  "specializations": ["LGBTQ+ zines", "Trans voices", "Queer history"]
}

Repository Kinds

Choose from the vocabulary:

  • Library - Public or academic library
  • Archive - Archival institution
  • Distro - Independent distributor
  • Personal Collection - Individual's collection
  • Museum - Museum or cultural institution
  • Infoshop - Radical bookstore/infoshop
  • Community Center - Community space library

Step 2: Create a Holding Record

Now let's document a specific copy you own.

Basic Holding

You own a copy of "Riot Grrrl Zine" in your collection:

{
  "holding_id": "holding-001",
  "zine_id": "riot-grrrl-zine",
  "repository_id": "my-zine-collection"
}

Three required fields:

  • holding_id - Unique ID for this copy
  • zine_id - Links to the ZineCore2 record
  • repository_id - Links to the RepoCore2 record

Adding Copy Information

Track copy-specific details:

{
  "holding_id": "holding-001",
  "zine_id": "riot-grrrl-zine",
  "repository_id": "my-zine-collection",
  "copy_number": "Copy 1",
  "condition_note": "Good condition. Small tear on back cover (1 inch). All pages intact.",
  "location_details": "Shelf B, Box 3"
}

Library Holdings with Call Numbers

For libraries using call numbers:

{
  "holding_id": "opl-zine-1234",
  "zine_id": "not-your-moms-meatloaf",
  "repository_id": "oaktown-library-zines",
  "call_number": "ZINE-COOKZINE-2023-01",
  "barcode": "31234567890123",
  "location_details": "Zine Collection, First Floor",
  "access_status": "Loanable"
}

Access Statuses

Control how the zine can be used:

Common Access Status Values

Loanable - Can be checked out

{
  "access_status": "Loanable"
}

Reference - In-library use only

{
  "access_status": "Reference"
}

Reading room only - Supervised access

{
  "access_status": "Reading room only"
}

Restricted - Permission required

{
  "access_status": "Restricted",
  "restrictions": "Creator requested restricted access. Contact archivist for viewing."
}

Distro Statuses

For distros and collections that allow duplication:

Distro Status Values

Can duplicate - Photocopying permitted

{
  "distro_status": "Can duplicate"
}

Can digitize - Scanning/digital copies OK

{
  "distro_status": "Can digitize"
}

For trade - Available for zine trades

{
  "distro_status": "For trade"
}

For sale - Available for purchase

{
  "distro_status": "For sale"
}

Complete Examples

Personal Collection Holding

{
  "holding_id": "pat-001",
  "zine_id": "bike-punx",
  "repository_id": "my-zine-collection",
  "copy_number": "1",
  "condition_note": "Excellent condition. Original from 2022 zine fest.",
  "location_details": "Red box, top shelf",
  "distro_status": "Can duplicate",
  "public_notes": "Got this from the creator at Portland Zine Symposium 2022"
}

Library Holdings

{
  "holding_id": "lib-zine-456",
  "zine_id": "riot-grrrl-zine",
  "repository_id": "oaktown-library-zines",
  "call_number": "ZINE-FEMINIST-1991-01",
  "barcode": "31234567890456",
  "accession_number": "2024.03.001",
  "copy_number": "1 of 2",
  "condition_note": "Fair condition. Some wear on covers. Pages in good condition. This is a photocopy of the original.",
  "location_details": "Zine Collection, Drawer F",
  "access_status": "Loanable",
  "distro_status": "Can duplicate"
}

Archive Holdings

{
  "holding_id": "archive-riot-01",
  "zine_id": "riot-grrrl-zine",
  "repository_id": "feminist-zine-archive",
  "accession_number": "RG-1991-001",
  "condition_note": "Original issue in excellent condition. Archival storage in acid-free folder.",
  "location_details": "Box 12, Folder 3, Climate-controlled storage",
  "access_status": "Reading room only",
  "distro_status": "Can digitize",
  "restrictions": "Handling requires archivist supervision. White gloves required.",
  "public_notes": "Donated by creator in 2020. Part of the Riot Grrrl Collection."
}

Multiple Copies

If you own multiple copies of the same zine:

Copy 1 (mint condition)

{
  "holding_id": "hold-123-copy-1",
  "zine_id": "popular-zine",
  "repository_id": "my-collection",
  "copy_number": "1 of 3",
  "condition_note": "Mint condition, unread",
  "location_details": "Archive box",
  "access_status": "Reference"
}

Copy 2 (reading copy)

{
  "holding_id": "hold-123-copy-2",
  "zine_id": "popular-zine",
  "repository_id": "my-collection",
  "copy_number": "2 of 3",
  "condition_note": "Good condition, shows handling",
  "location_details": "Lending shelf",
  "access_status": "Loanable"
}

Copy 3 (damaged)

{
  "holding_id": "hold-123-copy-3",
  "zine_id": "popular-zine",
  "repository_id": "my-collection",
  "copy_number": "3 of 3",
  "condition_note": "Poor condition. Water damage on first 3 pages. Last 2 pages missing.",
  "location_details": "Damaged items box",
  "access_status": "Restricted",
  "restrictions": "Damaged copy for reference only"
}

Tracking Donations and Acquisition

Use public_notes to document provenance:

{
  "holding_id": "hold-789",
  "zine_id": "rare-zine",
  "repository_id": "library-special-collections",
  "accession_number": "2024.01.042",
  "condition_note": "Excellent",
  "public_notes": "Donated by creator Jane Doe, March 2024. Part of the Jane Doe collection donation (2024.01.001-050).",
  "access_status": "Reading room only"
}

Validation

Validate your records:

HoldingCore2

curl -o holdingcore2.schema.json \
  https://zinecore.org/v2/schema/holdingcore2.schema.json

ajv validate -s holdingcore2.schema.json -d holding.json

RepoCore2

curl -o repocore2.schema.json \
  https://zinecore.org/v2/schema/repocore2.schema.json

ajv validate -s repocore2.schema.json -d repository.json

Complete Workflow

To catalog a zine in your collection:

  1. Create Repository record (once) - Describes your collection
  2. Create ZineCore2 record - The intellectual work
  3. Create AgentCore2 record (optional) - The creator
  4. Create HoldingCore2 record - Your specific copy

Practice Exercise

You run a zine library. Document this holding:

  • Library: "Community Zine Library" in Austin, TX
  • Zine: "Mental Health Matters" by Riley Chen
  • Your copy: Call number ZINE-MH-2023-05, barcode 400123456
  • Condition: Good, slight wear on spine
  • Status: Loanable, can duplicate
  • Location: Third floor, Zine cabinet
Click to see answer

Repository:

{
  "repo_id": "community-zine-library-austin",
  "repository_name": "Community Zine Library",
  "repository_kind": "Library",
  "location": {
    "city": "Austin",
    "region": "Texas",
    "country": "United States"
  }
}

Holding:

{
  "holding_id": "czl-400123456",
  "zine_id": "mental-health-matters",
  "repository_id": "community-zine-library-austin",
  "call_number": "ZINE-MH-2023-05",
  "barcode": "400123456",
  "condition_note": "Good condition. Slight wear on spine.",
  "location_details": "Third floor, Zine cabinet",
  "access_status": "Loanable",
  "distro_status": "Can duplicate"
}

Next Steps

Copyright ©2026 ZineCore2 Contributors,