Skip to main content

Mint NOIDs using a CLI or API

Project description

noid Python Package

PyPI version PyPI - Python Version example workflow codecov


Install from PyPI with

pip install noid

or from source with

pip install     # SSH
pip install git+ # HTTPS

CLI Usage

Generating a noid

Use the noid command with no arguments:


There are various options available using -h/--help:

noid -h
usage: noid [-h] [-c CONFIG_FILE] [-V | -d] [-s SCHEME] [-N NAA] [-t TEMPLATE] [-n INDEX] [-v] [noid]

generate nice and opaque identifiers

positional arguments:
  noid                  a noid

optional arguments:
  -h, --help            show this help message and exit
  -c CONFIG_FILE, --config-file CONFIG_FILE
                        path to a config file with a noid section
  -V, --validate        validate the given noid [default: False]
  -d, --check-digit     compute and print the corresponding check digit for the given noid [default: False]
  -s SCHEME, --scheme SCHEME
                        the noid scheme [default: 'ark:/']
  -N NAA, --naa NAA     the name assigning authority (NAA) number [default: ]
  -t TEMPLATE, --template TEMPLATE
                        the template by which to generate noids [default: 'zeeddk']
  -n INDEX, --index INDEX
                        a number for which to generate a valid noid [default: random positive integer]
  -v, --verbose         turn on verbose text [default: False]

Validating a noid

Validate a noid using the -v/--validate flag and pass a noid.

noid -v $(noid) # self-validation

Compute the check digit for a noid

Compute the check digit using -d/--check-digit flag and pass a noid.

noid -d $(noid -t zeee -n 1234) && noid -t zeee -n 1234 && noid -t zeeek -n 1234

The example above prints out the check digit, the full noid without a check digit and the full noid with a check digit.


Specify the NAA

Use the -N/--naa option.

noid --naa 1234

Specify the scheme

Use the -s/--scheme option.

noid --scheme darpa::

Specify a template

Use the -t/--template option.

noid -t zeeddeedeedk

Compute a noid for a value

Use the -n/--index option.

noid -n 42

Using a config file

A simple config file can be defined with the following structure:

# path/to/noid.cnf
# start with 'z'; follow with as many 'e' or 'd' as needed; terminate with 'k' for a checkdigit 
template = zeededdek 
scheme = ark:/
naa = 92729
# the above configs will produce noids like so: ark:/92729/fn7Z344v

then use it as follows:

noid -c path/to/noid.cnf

API Usage

You can also use this package's API in your code.

import random

from noid import mint, validate, calculate_check_digit, generate_noid

# with default arguments
noid = mint()

# arguments: template, n, scheme, naa
noid = mint(template='zeedeeedk', n=37, scheme='https://', naa='802938')

# validating a noid
validate(noid) # True/False

# calculate the check digit

# low-level generate a noid from a mask and number; no check digit is appended
noid = generate_noid('eeddeed', random.randint(100, 1000))


pip install -r requirements.txt


See also the list of contributors who participated in this project.


This tool was heavily influenced from noid-mint


Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

noid-1.1.2.tar.gz (10.5 kB view hashes)

Uploaded source

Built Distribution

noid-1.1.2-py3-none-any.whl (8.7 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page