Acquisition and network safety¶
crosswalk fetch acquires bounded metadata or authorized media, parses it into
the Hub, reconciles existing-item evidence, and only then serializes accepted
records. Acquisition is separate from repository mutation: a fetch may write
local output or a Workbench artifact plan, but it never imports that plan into a
repository.
Supported acquisition commands¶
| Command | Source | Optional media or enrichment |
|---|---|---|
fetch doi |
DOI content negotiation | Publisher PDF discovery/download, bounded public-directory email discovery, SHERPA policy enrichment |
fetch arxiv |
arXiv API or OAI-PMH | arXiv PDF download |
fetch crossref |
Crossref REST API | Selected target serialization after crossref-rest parsing |
fetch wos |
Web of Science Starter API | None |
fetch scopus |
Scopus Search API | None |
fetch zenodo |
Zenodo published-record API | Remote file metadata |
fetch proquest |
ProQuest XML, ZIP delivery, or recursive delivery directory | Primary PDF and supplemental-file staging |
Source-specific page, record, response, and file limits are shown by each
command's --help. All acquisition commands default to existing-item mode
hold; see Existing-item reconciliation.
Protected HTTP client¶
Remote metadata and media are untrusted even when a caller supplied the URL. Protected requests use a common client with these invariants:
- only approved HTTP(S) destinations and source-specific origins are used;
- URL user information is rejected and credentials are redacted from errors;
- DNS results are checked and pinned before connection;
- private, loopback, link-local, multicast, unspecified, and other special destinations are rejected;
- redirects are bounded, revalidated, and do not forward authorization across origins;
- ambient proxy environment variables are not inherited by protected requests;
- status codes, response bodies, timeouts, and total work are bounded; and
- authorization is added only through the source client that owns the request.
These controls protect the process running Crosswalk. They do not turn an arbitrary user URL into an approved acquisition source. New fetch commands must define their origin and credential policy explicitly rather than accepting a generic HTTP client that can bypass destination checks.
Media and enrichment ordering¶
Crosswalk canonicalizes and validates records, then performs duplicate reconciliation before SHERPA requests, PDF downloads, or ProQuest media extraction. Held or skipped records therefore leave no acquisition files.
Downloads use bounded responses and explicit destination roots. A missing file is reported according to the selected command policy; it is not silently replaced by an unrelated URL or stale local file. Published output names the file that was actually staged.
Email discovery is intentionally narrow: it is bounded to approved public faculty/directory pages and is enrichment, not a general web crawler. SHERPA is integrated into DOI acquisition; Crosswalk does not reproduce Papercut's standalone licensing CLI.
ProQuest delivery bundles¶
fetch proquest accepts an XML document, a delivery ZIP, or a directory tree of
deliveries. ZIP handling validates entries without extracting an untrusted
archive directly into the destination. It rejects:
- absolute paths and traversal;
- links and unsupported entry types;
- duplicate or ambiguous members;
- oversized members, total expansion, and excessive entry counts; and
- metadata/media changes between review and extraction.
Crosswalk first builds an immutable delivery snapshot and digest, parses and reconciles its metadata, and verifies the same digest before media publication. Accepted files are staged privately and published atomically. A failed, held, or skipped item cannot leave a partially accepted media tree.
For embargoes, an explicit valid delayed-release date takes precedence over a derived code. See ProQuest embargo codes.
Credentials and provenance¶
Vendor tokens and repository credentials belong in the environment variables named by command help. Do not place credentials in a source URL, report, specification, or command argument. Dataset and record provenance retain a safe canonical source URI after credentials and fragments have been removed; see Hub records and datasets.
Not Google Sheets acquisition¶
Crosswalk does not fetch a Google Sheet, change its permissions, deploy Apps Script, or write node IDs back to it. A trusted caller must acquire and rectangularize the sheet, then submit JSON/CSV to the authenticated service. See the Google Sheets CSV workflow.