Skip to main content

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

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);