TimestampDPP
Before you begin
As a brand or service provider, you want to timestamp an Arianee Event on a Digital Product Passport (DPP).
The timestampDPP
API provides a single entry point for timestamping, without worrying if the DPP is already minted or needs to be created.
Use case examples:
- A repair service is completed, you want to timestamp the intervention.
- A warranty extension is granted, you want to attach it as an event to the product.
- A product is inspected or transferred, and you want to keep a trace in its passport history.
🎯 Objective
Simplify timestamping by exposing one unique API that:
- Identifies the right DPP from:
- a QR code (Smart Link, Arianee Link, or other data carrier),
- one or multtiple photos of the product’s data plate (nameplate),
- or manual identifiers.
- Associates an Arianee Event with the DPP.
- Creates missing parent DPPs if necessary.
📡 API Request
Example curl
curl
curl --location 'https://url.nmp.arianee.com/certificate/timestamp' \
--header 'x-api-key: ••••••' \
--form 'photo=@"/Users/nameofuser/Downloads/plaquesignalétique.pdf"' \
--form 'arianeeEventTemplate="{ \"id\": \"67bee46014f957ee9baa0f33\", \"data\": {\"duration\":\"14 jours\"} }"' \
--form 'qrcode="https://app.arianee.com/33996814,soi29jo1mwlj,testnet"'
📝 Fields
photo
DEPRECATED
photo
DEPRECATED-
Use "photos" instead. Still working for retro-compatibility.
-
Type: image file
-
Required: No (exclusive with
identifiers
) -
Description: A photo of the data plate.
- Processed by AI to extract identifiers like
serialNumber
orrefTech
.
- Processed by AI to extract identifiers like
photos
photos
-
Type: images file
-
Required: No (exclusive with
identifiers
) -
Description: Multiple photos of the data plate.
- Processed by AI to extract identifiers like
serialNumber
orrefTech
.
- Processed by AI to extract identifiers like
qrcode
qrcode
-
Type:
string
-
Required: No
-
Description: A link scanned from a QR code. Can be:
- Direct Arianee Link (
https://wallet.arianee.org/passport/...
) - Smart Link (
https://q.arianee.net/...
) - Third-party redirect
- Direct Arianee Link (
Behavior:
- If the link points to an existing DPP → used directly.
- If not, but a DPP is created from
photo
oridentifiers
and the link is a Smart Link → the Smart Link is paired automatically with the new DPP.
arianeeEventTemplate
arianeeEventTemplate
-
Type: JSON string
-
Required: ✅ Yes
-
Description: Event template to create.
id
: template ID in Arianee NMPdata
: dynamic fields (e.g.,duration
,description
)
Example:
{
"id": "67bee46014f957ee9baa0f33",
"data": {
"duration": "14 jours",
"description": "Révision complète du produit"
}
}
identifiers
identifiers
- Type: JSON string
- Required: No (exclusive with
photo
) - Description: Data extracted manually from the data plate.
Possible fields:
serialNumber
(required if no photo)commercialReference
productGroupId
(codic, etc.)gtin
manufacturer
(only for parent creation)
🛑 API Error Codes
All processes run in a background job.
The API always returns 200, except for the following errors:
Code | Error | Message | Trigger |
---|---|---|---|
400 | multiple.photos | Only one photo is allowed | More than one photo uploaded |
400 | invalid.photo.type | Photo must be an image file | File is not image/* |
400 | photo.too.large | Photo must not exceed 5MB | File > 5MB |
400 | missing.photo.or.qrcode.or.identifiers | photo or qrcode or identifiers is required | None of the three fields present |
400 | missing.arianeeEventTemplate | arianeeEventTemplate.id is required | Event template missing/invalid |
400 | missing.identifiers | identifiers required | No identifiers provided when no photo |
400 | missing.serialNumber | serialNumber required | Missing serialNumber with no photo |
400 | invalid.qrcode | qrcode must be valid URL | Invalid or non-URL string |
400 | arianeeEventTemplate.notfound | Event template not found | Template ID not in DB |
400 | arianeeEventTemplate.invalidId | Invalid MongoDB ObjectId | Wrong template ID format |
500 | upload.error | Upload error | Failure uploading to GCS |
500 | Error processing timestampDPP | Unexpected error | Main try/catch failed |
⚙️ Use Cases
Case 1: QR Code only
{
"qrcode": "https://q.arianee.net/...",
"arianeeEventTemplate": { ... }
}
- Follows redirect to find DPP.
- ✅ If found → Event applied.
- ❌ If not → Error.
Case 2: Photo or Identifiers only
{
"photo": fichier,
"arianeeEventTemplate": { ... }
}
{
"identifiers": {
"serialNumber": "12345",
"refCom": "ABC-123"
},
"arianeeEventTemplate": { ... }
}
-
Identifiers extracted or provided manually.
-
✅ If unit DPP exists → Event applied.
-
❌ If not:
- Looks for parent DPP.
- If none → creates minimal parent.
- Creates unit DPP.
- Applies Event.
Case 3: Photo + QR Code
-
If QR code = Arianee Link → prioritized.
-
If QR code = Smart Link but unpaired:
- Falls back to identifiers/photo.
- Creates DPP if needed.
- Pairs Smart Link ↔ DPP.
- Applies Event.
Summary of Cases
Case | Inputs | DPP Found? | Action |
---|---|---|---|
1 | qrcode (Arianee Link) | ✅ yes | Event applied |
❌ no | Error | ||
2 | photo or identifiers | ✅ yes | Event applied |
❌ no + parent exists | Create unit DPP + Event | ||
❌ no + no parent | Create parent + unit + Event | ||
3 | photo + qrcode (Smart Link) | ❌ via QR | Create unit DPP from photo + pair Smart Link + Event |
3b | photo + qrcode (Arianee Link) | ✅ yes | Event applied (photo ignored) |
🔍 Examples
Example 1: QR code random + identifiers match a DPP
{
"qrcode": "https://google.com/random-link",
"identifiers": {
"serialNumber": "123456",
"technicalReference": "ABC-987"
}
}
Behavior:
- QR code not Arianee → no DPP found.
- Fallback to identifiers.
- ✅ Unit DPP exists → Event applied.
- ❌ No Smart Link association (since QR is not Arianee).
Example 2: Arianee Link + conflicting identifiers
{
"qrcode": "https://wallet.arianee.org/passport/brand/12345,abc",
"identifiers": {
"serialNumber": "999999"
}
}
Behavior:
- QR code → identifies an existing DPP.
- Identifiers point to a different one.
- ✅ QR code takes priority. Event applied to QR code DPP.
- Optional: log mismatch warning.
Example 3: Smart Link unpaired + identifiers not found
{
"qrcode": "https://q.arianee.net/abc-uuid-smartlink",
"identifiers": {
"serialNumber": "000000"
}
}
Behavior:
- Smart Link not paired → no DPP found.
- Identifiers don’t match any DPP.
- ❌ No parent → create minimal parent.
- ✅ Create new unit DPP.
- Pair Smart Link ↔ DPP.
- Apply Event.
Updated 19 days ago