Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Status
colourYellow
titlePAGE IN PROGRESS

...

Class

UI field

JSON Field

Relationship / Dependency

Type of reference

Example

Journals (works)

API: oa/works/citation

Instance / Namespace

/"instances"/"ids"/"ns"

UI: Settings/Pick list: PublicationIdentifier.Type

API: /oa/refdata

string

issn



/"instances"/"subType"




/"indexedInDOAJ"/




/"oaStatus"/


People (party)

API: oa/party

Institution level 1/"institutionLevel1"/"id"

UI: Settings/Pick list: Party.InstitutionLevel1

API: /oa/refdata

UUID

Requests

API: /oa/publicationRequest

Publisher/"publisher"/"id"

UI: Settings/Pick list: PublicationRequest.Publisher

API: /oa/refdata

UUID

Corresponding author/"correspondingAuthor"/"partyOwner"/"id"

UI: People / person

API: /oa/party

JSON: /"id"/

UUID

Institution level 1/"correspondingAuthor"/"partyOwner"/"institutionLevel1"/"id"

UI: Settings/Pick list: Party.InstitutionLevel1

API: /oa/refdata

UUID


/"correspondingInstitutionLevel1"/"id"

UI: Settings/Pick list: Party.InstitutionLevel1

API: /oa/refdata

UUID

Corresponding author

(implicit)

/"correspondingAuthor"/"role"

UI: Settings/Pick list: RequestParty.Role

API: /oa/refdata

string

corresponding_author

request_contact

(not customizable)


Request contact/"requestContact"/"partyOwner"/"id"

UI: People / person

API: /oa/party

JSON: /"id"/

UUID


/"requestContact"/"role"

UI: Settings/Pick list: RequestParty.Role

API: /oa/refdata

string

corresponding_author

request_contact

(not customizable)


Status/"requestStatus"/UI: Settings/Pick list: PublicationRequest.RequestStatusstring

open, closed

(not customizable)


Publication status

(repeatable)

/"publicationStatuses"[n]/"publicationStatus"/"id"


UI: Settings/Pick list: PublicationStatus.PublicationStatus

API: /oa/refdata

UUID

License/"license"/"id"

UI: Settings/Pick list: PublicationRequest.License

API: /oa/refdata

UUID

Publication type/"publicationType"/"id"

UI: Settings/Pick list: PublicationRequest.Subtype

API: /oa/refdata

UUID

Journal/"work"/"id"

UI: Journal

API: oa/works/citation

JSON: /"id"/

UUID

Journal in DOAJ/"workIndexedInDOAJ"/"id"

UI: -

API: /oa/refdata

UUID(not customizable)

Journal OA status/"workOAStatus"/"id"UI: Settings/Pick list: Work.OaStatusUUID
Charges

Status
titleto do











Checklist

Status
titleto do





...

Tip
iconfalse
titleLeipzig example

more data ...

{
        "id""8aaa80fe859fe8ee0185a0ea5d980023",
        "desc""Work.OaStatus",
        "internal"false,
        "values": [
            {
                "id""8aaa80fe859fe8ee0185a0ea5d9b0024",    ← UUID for OA status "Gold"
                "value""gold",
                "label""Gold"
            },
            {
                "id""8aaa80fe859fe8ee0185a0ea5da00025",    ← UUID for OA status "Hybrid"
                "value""hybrid",
                "label""Hybrid"
            },
            {
                "id""8aaa80fe859fe8ee0185bac6b6c9004f",    ← UUID for OA status "Subscribe to Open"
                "value""subscribe_to_open",
                "label""Subscribe to Open (S2O)"
            }
        ]
    },

... more data

...

Tip
iconfalse
titleLeipzig example: Request JSON mapping
{
    "publicationStatuses": [
        {
            "publicationStatus": {
                "id": "Y:publicationStatus1Id" 
            },
            "statusDate": "Z:statusDate1",
            "statusNote": "AA:statusNote1" 
        },
        {
            "publicationStatus": {
                "id": "AB:publicationStatus2Id" 
            },
            "statusDate": "AC:statusDate2",
            "statusNote": "AD:statusNote2" 
        },
        {
            "publicationStatus": {
                "id": "AE:publicationStatus3Id" 
            },
            "statusDate": "AF:statusDate3",
            "statusNote": "AG:statusNote3" 
        },
        {
            "publicationStatus": {
                "id": "AH:publicationStatus4Id" 
            },
            "statusDate": "AI:statusDate4" 
        }
    ],
    "fundings": [],
    "requestStatus": "A:requestStatus",
    "closureReason": null,
    "requestDate": "B:requestDate",
    "externalRequestIds": [
        {
            "externalId": "C:externalId1" 
        },
        {
            "externalId": "D:externalId2" 
        }
    ],
    "correspondingAuthor": {
        "partyOwner": {
            "id": "F:correspondingAuthorPartyOwnerId",
            "alternateEmails": [],
            "institutionLevel1": {
                "id": "L:correspondingInstitutionLevel1Id" 
            }
        },
        "role": "G:correspondingAuthorRole" 
    },
    "correspondingInstitutionLevel1": {
        "id": "L:correspondingInstitutionLevel1Id" 
    },
    "useCorrespondingAuthor": false,
    "requestContact": {
        "partyOwner": {
            "id": "I:requestContactPartyOwnerId",
            "alternateEmails": []
        },
        "role": "J:requestContactRole" 
    },
    "correspondingInstitutionLevel2": "M:correspondingInstitutionLevel2",
    "doi": "N:doi",
    "license": {
        "id": "O:licenseId" 
    },
    "publicationTitle": "P:publicationTitle",
    "publicationType": {
        "id": "Q:publicationTypeId" 
    },
    "publisher": {
        "id": "S:publisherId" 
    },
    "work": {
        "id": "U:workId" 
    },
    "workIndexedInDOAJ": {
        "id": "X:workIndexedInDOAJId" 
    },
    "workOAStatus": {
        "id": "V:workOAStatusId" 
    },
    "requestNumber": "BH:requestNumber",
    "subtype": null,
    "bookDateOfPublication": null,
    "bookPlaceOfPublication": null,
    "agreement": null
}


Tip
iconfalse
titleCharge1 JSON mapping
{
    "tax": "AR:charge1Tax",
    "discountType": {
        "id": "8aaa80fe859fe8ee0185a0ea5d5e0017" 
    },
    "exchangeRate": {
        "coefficient": 1,                               --->>> type:number
        "toCurrency": "EUR" 
    },
    "amount": {
        "baseCurrency": "AQ:charge1AmountBaseCurrency",
        "value": "AP:charge1AmountValue" 
    },
    "category": {
        "id": "AN:charge1CategoryId" 
    },
    "chargeStatus": {
        "id": "AO:charge1StatusId" 
    },
    "description": "OA-Migration",
    "discount": 0,                                     --->>> type:number
    "discountNote": "",
    "paymentPeriod": "2023",
    "payers": [{
        "payerAmount": AT:charge1PayersPayer1Amount,   --->>> type:number
        "payer": {
            "id": "AS:charge1PayersPayer1Id" 
        },
        "payerNote": "AU:charge1PayersPayer1Note" 
    }, {
        "payerAmount": AW:charge1PayersPayer2Amount,   --->>> type:number
        "payer": {
            "id": "AV:charge1PayersPayer2Id" 
        },
        "payerNote": "AX:charge1PayersPayer2Note" 
    }],
    "owner": {
        "id": "BI:chargeOwnerId" 
    }
}


Tip
iconfalse
titleChecklist item JSON mapping
{
    "id": "BI:chargeOwnerId",
    "checklist": [
        {
            "outcome": {
                "value": "AK:checklist1OutcomeValue" 
            },
            "notes": [],
            "definition": {
                "id": "AJ:checklist1DefinitionId" 
            }
        },
        {
            "outcome": {
                "value": "AM:checklist2OutcomeValue" 
            },
            "notes": [],
            "definition": {
                "id": "AL:checklist2DefinitionId" 
            }
        }
    ]
}

All we need is JSON conversion

...

Mainly these might be of interest:

APIUse
GET {{OKAPI}}/oa/refdata?max=100to get all reference data values and UUIDs
POST {{OKAPI}}/oa/works/citationto post journal data
GET {{OKAPI}}/oa/worksto get journal data
GET {{OKAPI}}/oa/works/{{UUID}}to get journal data based on a specific journal UUID
POST {{OKAPI}}/oa/partyto post people data
GET {{OKAPI}}/oa/partyto get people data
GET {{OKAPI}}/oa/party/{{UUID}}to get people data based on a specific person UUID
POST {{OKAPI}}/oa/publicationRequestto post publication requests
GET {{OKAPI}}/oa/publicationRequestto get publication requests
PUT {{OKAPI}}/oa/publicationRequestto update requests, i.e. to import checklist items
GET {{OKAPI}}/oa/publicationRequest/{{UUID}}to get a publication request based on a specific request UUID
POST {{OKAPI}}/oa/chargesto post charges

The actual import can be done e.g. with Postman (Runner function) or ask your local IT, systems librarian or library network.

How to know and learn what the API needs?

The Folio frontend also uses the API (OKAPI) to create, update, and delete records. Using the Firefox Developer Tools / Network Analysis, the corresponding API calls from the frontend to OKAPI can be viewed, i.e. API method, endpoint and the actual payload (JSON). This can help to understand how to prepare corresponding imports for migration.

Image Added