Skip to main content

Function: createEprintRecord()

createEprintRecord(userAgent, data, targetAgent?): Promise<CreateRecordResult>

Defined in: web/lib/atproto/record-creator.ts:452

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 = ...

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:

  1. Uploads the document to the target PDS (PDF, DOCX, HTML, etc.)
  2. Uploads any supplementary materials
  3. 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 targetAgent parameter specifies the paper's authenticated agent
  • The submittedBy field 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);