survos / ark-bundle
Symfony bundle for ARK identifier minting and resolution
Fund package maintenance!
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
- dev-main
- 2.0.175
- 2.0.174
- 2.0.173
- 2.0.172
- 2.0.171
- 2.0.170
- 2.0.169
- 2.0.168
- 2.0.167
- 2.0.166
- 2.0.165
- 2.0.164
- 2.0.163
- 2.0.162
- 2.0.161
- 2.0.160
- 2.0.159
- 2.0.158
- 2.0.156
- 2.0.155
- 2.0.154
- 2.0.146
- 2.0.145
- 2.0.144
- 2.0.143
- 2.0.142
- 2.0.141
- 2.0.140
- 2.0.139
- 2.0.138
- 2.0.137
- 2.0.136
- 2.0.135
- 2.0.134
- 2.0.133
- 2.0.132
- 2.0.131
- 2.0.130
- 2.0.129
- 2.0.128
- 2.0.127
- 2.0.126
- 1.0.0
This package is auto-updated.
Last update: 2026-03-24 17:28:40 UTC
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.