survos / ark-bundle
Symfony bundle for ARK identifier minting and resolution
Fund package maintenance!
2.0.126
2026-03-10 19:33 UTC
Requires
- php: ^8.2
- daniel-km/noid: ^1.4
- doctrine/doctrine-bundle: ^2.13
- doctrine/orm: ^3.0
- symfony/config: ^7.0
- symfony/console: ^7.0
- symfony/dependency-injection: ^7.0
- symfony/http-foundation: ^7.0
- symfony/http-kernel: ^7.0
- symfony/routing: ^7.0
Requires (Dev)
- phpstan/phpstan: ^2.1
README
Symfony bundle for ARK (Archival Resource Key) minting, binding, and resolution.
This bundle lets any Doctrine entity become ARK-enabled by implementing a small interface, then handles:
- minting identifiers,
- storing bindings,
- resolving ARKs,
- and redirecting
/ark/{naan}/{name}requests.
Why ARK
- ARK Standard: https://arks.org
- ARK Spec (IETF draft): https://www.ietf.org/archive/id/draft-kunze-ark-34.html
- ARK Alliance: https://arks.org/about/
- N2T Global Resolver: https://n2t.net
Apply For A NAAN
To run ARKs in production, request your own NAAN:
- NAAN application form: https://n2t.net/e/naan_request
- Registry listing: https://n2t.net/e/pub/naan_registry.txt
For memory organizations applying for a NAAN, include your collection and scan workflows in the application narrative. A practical policy is to ensure scans and related metadata carry your assigned number consistently in ARK URLs and institutional records.
Install
composer require survos/ark-bundle
Configuration
Create config/packages/survos_ark.yaml:
survos_ark: naan: '12345' shoulder: 'fk' template: 'fk.reedeeedk' resolver_base_url: 'https://example.org' local_path: '/ark' db_type: 'lmdb' db_path: '%kernel.var_dir%/ark' auto_mint: true n2t_resolve: false
Entity Contracts
Survos\ArkBundle\Contract\ArkableInterfaceSurvos\ArkBundle\Contract\ArkQualifiableInterfaceSurvos\ArkBundle\Contract\ErcMetadataInterface
Commands
ark:mintark:bindark:resolveark:validateark:bulk-mintark:reportark:reindex
Route
The bundle exposes:
GET /ark/{naan}/{name}GET /ark/{naan}/_probe(NAAN probe endpoint)
It also supports inflections like ?info and policy lookup (??).
Storage Engine
Minting and binding are backed by daniel-km/noid.