Identifier Minting and Administration¶
How does identifier minting and administration work in NMDC?
Minting¶
A minting request has these attributes:
service: a reference to a minter service, e.g. the central minter servicerequester: a reference to a requesting agent, e.g. a personschema_class: a reference to a NMDC Schema class, e.g. nmdc:Biosample.how_many: how many newschema_classidentifiers therequesterwantsserviceto mint
Assuming the requester is authenticated and is authorized by the service to mint identifiers,
one or more draft identifiers are minted. Each minted identifier has these attributes:
name: a literal string value that adheres to the scheme of nmdc:id, e.g. "nmdc: bsm-11-abc123".typecode: a reference to the ID's typecode component, e.g. withname"bsm" andschema_classnmdc:Biosample.shoulder: a reference to the ID's shoulder component, e.g. withname"11" andassigned_totheservicethat minted the ID.status: a reference to the ID's status, e.g. "draft".
flowchart LR
%% o1[/"(input/output) object"/]
%% s1["(process) step"]
%% t1(["terminator (process start/end)"])
%% d1{decision}
%% b1[("(data)base")]
%% m1[\manual step/]
%% p1[[predefined step]]
classDef literal stroke-dasharray:1 4;
classDef user stroke-dasharray:8 8;
%% request-handler user-story model-diagram
o_typecodename[/""bsm""/]:::literal
o_idname[/""nmdc:bsm-11-abc123""/]:::literal
o_shouldername[/""11""/]:::literal
o_howmany[/"1"/]:::literal
o_request[/"minting request"/]:::user
o_shoulder[/"11"/]
o_typecode[/"bsm"/]
o_schemaclass[/"nmdc:Biosample"/]
o_service[/"Central Minting Service"/]
o_requester[/Alicia/]
o_id_draft1[/draft 1 of ID/]
o_draft[/draft/]
s_minting[minting]
o_typecode-. name .->o_typecodename
o_typecode-. schema_class .->o_schemaclass
click o_schemaclass href "https://microbiomedata.github.io/nmdc-schema/Biosample"
o_request-. service .->o_service
o_request-. requester .->o_requester
o_request-. schema_class .->o_schemaclass
o_request-. how_many .->o_howmany
o_request-->|starts|s_minting[minting]
o_shoulder-. assigned_to .-> o_service
o_shoulder-. name .->o_shouldername
s_minting-- draft_identifier -->o_id_draft1
o_id_draft1-. name .->o_idname
o_id_draft1-. shoulder .->o_shoulder
o_id_draft1-. typecode .-> o_typecode
o_id_draft1-. status .-> o_draft
All typecodes and shoulders are sourced from the database.
All minted identifiers are persisted to the database.