Function: createEprintRecord()
createEprintRecord(
userAgent,data,targetAgent?):Promise<CreateRecordResult>
Defined in: web/lib/atproto/record-creator.ts:445
Create an eprint submission record in a PDS.
Parameters
userAgent
Agent
Authenticated ATProto Agent for the submitting user
data
Form data with files and metadata
abstract
string = ...
authors
object[] = ...
codeRepositories
object[] = ...
Code repositories
conferencePresentation
{ conferenceAcronym: string; conferenceIteration: string; conferenceLocation: string; conferenceName: string; conferenceUri: string; conferenceUrl: string; presentationDate: string; presentationTypeSlug: string; presentationTypeUri: string; proceedingsDoi: string; } = ...
Conference presentation metadata
conferencePresentation.conferenceAcronym
string = ...
conferencePresentation.conferenceIteration
string = ...
conferencePresentation.conferenceLocation
string = ...
conferencePresentation.conferenceName
string = ...
conferencePresentation.conferenceUri
string = ...
conferencePresentation.conferenceUrl
string = ...
conferencePresentation.presentationDate
string = ...
conferencePresentation.presentationTypeSlug
string = ...
conferencePresentation.presentationTypeUri
string = ...
conferencePresentation.proceedingsDoi
string = ...
conflictOfInterest
string = ...
dataRepositories
object[] = ...
Data repositories
documentFile
File = ...
Document file (File object before upload)
documentFormat
"pdf" | "html" | "docx" | "markdown" | "latex" | "jupyter" | "odt" | "rtf" | "epub" | "txt" = ...
Detected document format
doi
string = ...
externalIds
{ arxivId: string; coreSid: string; magId: string; openAlexId: string; osf: string; pmcid: string; pmid: string; semanticScholarId: string; ssrnId: string; zenodoDoi: string; } = ...
External identifiers (arXiv, PubMed, SSRN, etc.)
externalIds.arxivId
string = ...
externalIds.coreSid
string = ...
externalIds.magId
string = ...
externalIds.openAlexId
string = ...
externalIds.osf
string = ...
externalIds.pmcid
string = ...
externalIds.pmid
string = ...
externalIds.semanticScholarId
string = ...
externalIds.ssrnId
string = ...
externalIds.zenodoDoi
string = ...
externalLinks
object[] = ...
facets
object[] = ...
fieldNodes
object[] = ...
funding
object[] = ...
Funding sources
fundingInfo
object[] = ...
keywords
string[] = ...
licenseSlug
string = ...
licenseUri
string = ...
paperDid
string = ...
Paper's DID (required if usePaperPds is true)
preregistration
string = ...
preregistrationInfo
{ platformName: string; platformUri: string; registrationDate: string; url: string; } = ...
Preregistration link
preregistrationInfo.platformName
string = ...
preregistrationInfo.platformUri
string = ...
preregistrationInfo.registrationDate
string = ...
preregistrationInfo.url
string = ...
publicationStatus
string = ...
Publication status (e.g., 'eprint', 'submitted', 'published')
publishedVersion
{ accessType: string; articleNumber: string; doi: string; eLocationId: string; issue: string; journal: string; journalAbbreviation: string; journalIssn: string; licenseUrl: string; pages: string; publishedAt: string; publisher: string; url: string; volume: string; } = ...
Published version metadata (journal, DOI, etc.)
publishedVersion.accessType
string = ...
publishedVersion.articleNumber
string = ...
publishedVersion.doi
string = ...
publishedVersion.eLocationId
string = ...
publishedVersion.issue
string = ...
publishedVersion.journal
string = ...
publishedVersion.journalAbbreviation
string = ...
publishedVersion.journalIssn
string = ...
publishedVersion.licenseUrl
string = ...
publishedVersion.pages
string = ...
publishedVersion.publishedAt
string = ...
publishedVersion.publisher
string = ...
publishedVersion.url
string = ...
publishedVersion.volume
string = ...
repositories
{ code: object[]; data: object[]; materials: object[]; preregistration: { platformSlug: string; platformUri: string; registrationDate: string; url: string; }; protocols: object[]; } = ...
Pre-built nested repositories object (assembled from flat form fields by the wizard)
repositories.code
object[] = ...
repositories.data
object[] = ...
repositories.materials
object[] = ...
repositories.preregistration
{ platformSlug: string; platformUri: string; registrationDate: string; url: string; } = ...
repositories.preregistration.platformSlug
string = ...
repositories.preregistration.platformUri
string = ...
repositories.preregistration.registrationDate
string = ...
repositories.preregistration.url
string = ...
repositories.protocols
object[] = ...
supplementaryMaterials
object[] = ...
Supplementary materials with full metadata
title
string = ...
usePaperPds
boolean = ...
Whether to submit to a paper's PDS instead of user's PDS (defaults to false)
targetAgent?
Agent
Optional agent for paper PDS (if different from userAgent)
Returns
Promise<CreateRecordResult>
Created record result
Remarks
This is the primary function for submitting eprints. It:
- Uploads the document to the target PDS (PDF, DOCX, HTML, etc.)
- Uploads any supplementary materials
- Creates the eprint record with blob references
The record is created in the target PDS (user's or paper's), NOT in Chive's storage. Chive will index this record when it appears on the firehose.
When submitting to a paper's PDS:
- The
targetAgentparameter specifies the paper's authenticated agent - The
submittedByfield in the record records who submitted (userAgent's DID) - Blobs are uploaded to the paper's PDS
- The record is created in the paper's repository
Throws
Error if agents are not authenticated
Throws
Error if document upload fails
Throws
Error if record creation fails
Example
// Submit to user's own PDS
const agent = useAgent();
const result = await createEprintRecord(agent, formData);
// Submit to paper's PDS
const paperAgent = getPaperAgent();
const result = await createEprintRecord(agent, formData, paperAgent);