@ironfang/n8n-nodes-ironfang 0.2.3 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/README.md +164 -100
  2. package/dist/credentials/IronfangApi.credentials.js +6 -1
  3. package/dist/credentials/IronfangS3.credentials.d.ts +8 -0
  4. package/dist/credentials/IronfangS3.credentials.js +15 -0
  5. package/dist/credentials/IronfangWebhookApi.credentials.d.ts +8 -0
  6. package/dist/credentials/IronfangWebhookApi.credentials.js +14 -0
  7. package/dist/nodes/Ironfang/Ironfang.node.d.ts +7 -10
  8. package/dist/nodes/Ironfang/Ironfang.node.js +36 -535
  9. package/dist/nodes/Ironfang/IronfangTrigger.node.d.ts +11 -0
  10. package/dist/nodes/Ironfang/IronfangTrigger.node.js +56 -0
  11. package/dist/nodes/Ironfang/catalog.d.ts +2 -0
  12. package/dist/nodes/Ironfang/catalog.js +1806 -0
  13. package/dist/nodes/Ironfang/credentialTest.js +24 -14
  14. package/dist/nodes/Ironfang/destinationCredentialTest.d.ts +2 -0
  15. package/dist/nodes/Ironfang/destinationCredentialTest.js +12 -0
  16. package/dist/nodes/Ironfang/execute.d.ts +2 -0
  17. package/dist/nodes/Ironfang/execute.js +205 -0
  18. package/dist/nodes/Ironfang/files.d.ts +10 -0
  19. package/dist/nodes/Ironfang/files.js +50 -0
  20. package/dist/nodes/Ironfang/parameters.d.ts +2 -0
  21. package/dist/nodes/Ironfang/parameters.js +50 -0
  22. package/dist/nodes/Ironfang/renderOptions.d.ts +2 -0
  23. package/dist/nodes/Ironfang/renderOptions.js +8 -0
  24. package/dist/nodes/Ironfang/renderwolf.d.ts +19 -0
  25. package/dist/nodes/Ironfang/renderwolf.js +556 -0
  26. package/dist/nodes/Ironfang/templates.d.ts +2 -0
  27. package/dist/nodes/Ironfang/templates.js +15 -0
  28. package/dist/nodes/Ironfang/transport.d.ts +3 -1
  29. package/dist/nodes/Ironfang/transport.js +20 -5
  30. package/dist/nodes/Ironfang/types.d.ts +31 -0
  31. package/dist/nodes/Ironfang/types.js +2 -0
  32. package/dist/nodes/Ironfang/webhook.d.ts +4 -0
  33. package/dist/nodes/Ironfang/webhook.js +39 -0
  34. package/docs/operations.md +1046 -0
  35. package/docs/validation.md +58 -0
  36. package/examples/audit-polling.json +223 -0
  37. package/examples/invoice-generation-storage.json +83 -0
  38. package/examples/invoice-validation.json +54 -0
  39. package/package.json +16 -7
@@ -0,0 +1,1046 @@
1
+ # Operation reference
2
+
3
+ Generated from Ironfang main `2230209`. Runtime endpoint selection is fixed by this catalogue.
4
+ Complex request bodies use JSON so all supported schema fields remain available. Replace placeholders with your own values.
5
+
6
+ ## auditwolf / Archive Monitor
7
+
8
+ `POST /auditwolf/v1/monitors/{monitorId}/archive`. Scope: `auditwolf:manage`.
9
+
10
+ Archive a monitor (one-way; its audits and evidence remain)
11
+
12
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
13
+
14
+ ## auditwolf / Bulk Update Findings
15
+
16
+ `POST /auditwolf/v1/findings/bulk`. Scope: `auditwolf:manage`.
17
+
18
+ Apply one decision to several findings
19
+
20
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
21
+
22
+ ```json
23
+ {
24
+ "ids": [
25
+ ""
26
+ ]
27
+ }
28
+ ```
29
+
30
+ ## auditwolf / Compare Page Observation
31
+
32
+ `GET /auditwolf/v1/page-observations/{observationId}/comparison`. Scope: `auditwolf:read`.
33
+
34
+ What changed against the observation before it
35
+
36
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
37
+
38
+ ## auditwolf / Create Export Destination
39
+
40
+ `POST /auditwolf/v1/export-destinations`. Scope: `auditwolf:integrations`.
41
+
42
+ Create an encrypted S3/S3-compatible destination
43
+
44
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
45
+
46
+ ```json
47
+ {
48
+ "region": "eu-west-2",
49
+ "bucket": "your-bucket",
50
+ "prefix": "auditwolf",
51
+ "export_mode": "manual_only"
52
+ }
53
+ ```
54
+
55
+ ## auditwolf / Create Monitor
56
+
57
+ `POST /auditwolf/v1/sites/{siteId}/monitors`. Scope: `auditwolf:manage`.
58
+
59
+ Create a monitor
60
+
61
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
62
+
63
+ ## auditwolf / Create Rule
64
+
65
+ `POST /auditwolf/v1/sites/{siteId}/rules`. Scope: `auditwolf:manage`.
66
+
67
+ Create a deterministic rule
68
+
69
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
70
+
71
+ ```json
72
+ {
73
+ "name": "",
74
+ "rule_type": "",
75
+ "configuration": {}
76
+ }
77
+ ```
78
+
79
+ ## auditwolf / Create Site
80
+
81
+ `POST /auditwolf/v1/sites`. Scope: `auditwolf:manage`.
82
+
83
+ Create a site
84
+
85
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
86
+
87
+ ```json
88
+ {
89
+ "name": "Example site",
90
+ "url": "https://example.com"
91
+ }
92
+ ```
93
+
94
+ ## auditwolf / Create Webhook
95
+
96
+ `POST /auditwolf/v1/webhooks`. Scope: `auditwolf:integrations`.
97
+
98
+ Create a signed webhook endpoint
99
+
100
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
101
+
102
+ ```json
103
+ {
104
+ "url": "https://example.com/webhook",
105
+ "events": [
106
+ "audit.completed"
107
+ ]
108
+ }
109
+ ```
110
+
111
+ ## auditwolf / Delete Webhook
112
+
113
+ `DELETE /auditwolf/v1/webhooks/{endpointId}`. Scope: `auditwolf:integrations`.
114
+
115
+ Retire an endpoint (soft; its delivery history is kept)
116
+
117
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
118
+
119
+ ## auditwolf / Disable Rule
120
+
121
+ `POST /auditwolf/v1/rules/{lineageId}/disable`. Scope: `auditwolf:manage`.
122
+
123
+ Disable a rule for future audits
124
+
125
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
126
+
127
+ ## auditwolf / Download Artifact
128
+
129
+ `GET /auditwolf/v1/artifacts/{artifactId}`. Scope: `auditwolf:evidence`.
130
+
131
+ Stream an authenticated raw artifact
132
+
133
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
134
+
135
+ ## auditwolf / Download Audit Evidence
136
+
137
+ `GET /auditwolf/v1/audits/{auditId}/evidence`. Scope: `auditwolf:evidence`.
138
+
139
+ Download the independently verifiable evidence ZIP
140
+
141
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
142
+
143
+ ## auditwolf / Enable Rule
144
+
145
+ `POST /auditwolf/v1/rules/{lineageId}/enable`. Scope: `auditwolf:manage`.
146
+
147
+ Enable a rule for future audits
148
+
149
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
150
+
151
+ ## auditwolf / Export Audit
152
+
153
+ `POST /auditwolf/v1/audits/{auditId}/exports`. Scope: `auditwolf:integrations`.
154
+
155
+ Queue a manual S3 export
156
+
157
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
158
+
159
+ ```json
160
+ {
161
+ "destination_id": ""
162
+ }
163
+ ```
164
+
165
+ ## auditwolf / Get Audit
166
+
167
+ `GET /auditwolf/v1/audits/{auditId}`. Scope: `auditwolf:read`.
168
+
169
+ Get audit lifecycle, compliance and integrity state
170
+
171
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
172
+
173
+ ## auditwolf / Get Finding
174
+
175
+ `GET /auditwolf/v1/findings/{findingId}`. Scope: `auditwolf:read`.
176
+
177
+ Get one finding
178
+
179
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
180
+
181
+ ## auditwolf / Get Findings Summary
182
+
183
+ `GET /auditwolf/v1/findings/summary`. Scope: `auditwolf:read`.
184
+
185
+ The numbers at the top of the finding inbox
186
+
187
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
188
+
189
+ ## auditwolf / Get Monitor
190
+
191
+ `GET /auditwolf/v1/monitors/{monitorId}`. Scope: `auditwolf:read`.
192
+
193
+ Get a monitor with its URL set
194
+
195
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
196
+
197
+ ## auditwolf / Get Page Observation
198
+
199
+ `GET /auditwolf/v1/page-observations/{observationId}`. Scope: `auditwolf:read`.
200
+
201
+ One observation with its artifacts and rule results
202
+
203
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
204
+
205
+ ## auditwolf / Get Rule
206
+
207
+ `GET /auditwolf/v1/rules/{lineageId}`. Scope: `auditwolf:read`.
208
+
209
+ Get the active revision of a rule
210
+
211
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
212
+
213
+ ## auditwolf / Get Site
214
+
215
+ `GET /auditwolf/v1/sites/{siteId}`. Scope: `auditwolf:read`.
216
+
217
+ Get a site
218
+
219
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
220
+
221
+ ## auditwolf / Home
222
+
223
+ `GET /auditwolf/v1/home`. Scope: `auditwolf:read`.
224
+
225
+ Tenant-scoped setup facts and recent activity for the portal
226
+
227
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
228
+
229
+ ## auditwolf / Install Rule Pack
230
+
231
+ `POST /auditwolf/v1/sites/{siteId}/rule-packs`. Scope: `auditwolf:manage`.
232
+
233
+ Install a rule pack
234
+
235
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
236
+
237
+ ```json
238
+ {
239
+ "pack_key": "",
240
+ "variables": {}
241
+ }
242
+ ```
243
+
244
+ ## auditwolf / List Audit Pages
245
+
246
+ `GET /auditwolf/v1/audits/{auditId}/pages`. Scope: `auditwolf:read`.
247
+
248
+ Page observations of an audit
249
+
250
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
251
+
252
+ Query fields: `change`, `compliance`, `capture`, `q`.
253
+
254
+ ## auditwolf / List Audits
255
+
256
+ `GET /auditwolf/v1/audits`. Scope: `auditwolf:read`.
257
+
258
+ List organisation audits
259
+
260
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
261
+
262
+ Query fields: `site_id`.
263
+
264
+ ## auditwolf / List Events
265
+
266
+ `GET /auditwolf/v1/events`. Scope: `auditwolf:read`.
267
+
268
+ The organisation's recent product events, newest first
269
+
270
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
271
+
272
+ ## auditwolf / List Export Destinations
273
+
274
+ `GET /auditwolf/v1/export-destinations`. Scope: `auditwolf:integrations`.
275
+
276
+ List S3 destinations
277
+
278
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
279
+
280
+ ## auditwolf / List Exports
281
+
282
+ `GET /auditwolf/v1/exports`. Scope: `auditwolf:integrations`.
283
+
284
+ List export jobs
285
+
286
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
287
+
288
+ ## auditwolf / List Finding Events
289
+
290
+ `GET /auditwolf/v1/findings/{findingId}/events`. Scope: `auditwolf:read`.
291
+
292
+ The append-only history of a finding
293
+
294
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
295
+
296
+ ## auditwolf / List Findings
297
+
298
+ `GET /auditwolf/v1/findings`. Scope: `auditwolf:read`.
299
+
300
+ The finding inbox
301
+
302
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
303
+
304
+ Query fields: `site_id`, `page_id`, `rule_id`, `state`, `severity`, `assignee`, `open_longer_than_days`, `limit`, `offset`.
305
+
306
+ ## auditwolf / List Installed Rule Packs
307
+
308
+ `GET /auditwolf/v1/sites/{siteId}/rule-packs`. Scope: `auditwolf:read`.
309
+
310
+ Packs installed on this site
311
+
312
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
313
+
314
+ ## auditwolf / List Monitor Runs
315
+
316
+ `GET /auditwolf/v1/monitors/{monitorId}/runs`. Scope: `auditwolf:read`.
317
+
318
+ The monitor's audits, newest first
319
+
320
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
321
+
322
+ ## auditwolf / List Page Observations
323
+
324
+ `GET /auditwolf/v1/pages/{pageId}/observations`. Scope: `auditwolf:read`.
325
+
326
+ A page's observation history, newest first
327
+
328
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
329
+
330
+ Query fields: `cursor`, `limit`.
331
+
332
+ ## auditwolf / List Rule Packs
333
+
334
+ `GET /auditwolf/v1/rule-packs`. Scope: `auditwolf:read`.
335
+
336
+ The rule pack catalogue
337
+
338
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
339
+
340
+ ## auditwolf / List Rule Revisions
341
+
342
+ `GET /auditwolf/v1/rules/{lineageId}/revisions`. Scope: `auditwolf:read`.
343
+
344
+ List every revision of a rule, newest first
345
+
346
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
347
+
348
+ ## auditwolf / List Site Audits
349
+
350
+ `GET /auditwolf/v1/sites/{siteId}/audits`. Scope: `auditwolf:read`.
351
+
352
+ List site audits
353
+
354
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
355
+
356
+ ## auditwolf / List Site Monitors
357
+
358
+ `GET /auditwolf/v1/sites/{siteId}/monitors`. Scope: `auditwolf:read`.
359
+
360
+ List the site's monitors
361
+
362
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
363
+
364
+ ## auditwolf / List Site Rules
365
+
366
+ `GET /auditwolf/v1/sites/{siteId}/rules`. Scope: `auditwolf:read`.
367
+
368
+ List the site's versioned deterministic rules
369
+
370
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
371
+
372
+ ## auditwolf / List Sites
373
+
374
+ `GET /auditwolf/v1/sites`. Scope: `auditwolf:read`.
375
+
376
+ List sites
377
+
378
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
379
+
380
+ ## auditwolf / List Webhook Deliveries
381
+
382
+ `GET /auditwolf/v1/webhooks/{endpointId}/deliveries`. Scope: `auditwolf:integrations`.
383
+
384
+ List delivery attempts
385
+
386
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
387
+
388
+ ## auditwolf / List Webhooks
389
+
390
+ `GET /auditwolf/v1/webhooks`. Scope: `auditwolf:integrations`.
391
+
392
+ List lifecycle webhook endpoints
393
+
394
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
395
+
396
+ ## auditwolf / Pause Monitor
397
+
398
+ `POST /auditwolf/v1/monitors/{monitorId}/pause`. Scope: `auditwolf:manage`.
399
+
400
+ Pause scheduling
401
+
402
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
403
+
404
+ ## auditwolf / Replace Monitor URLs
405
+
406
+ `PUT /auditwolf/v1/monitors/{monitorId}/urls`. Scope: `auditwolf:manage`.
407
+
408
+ Replace a url_set monitor's URL list
409
+
410
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
411
+
412
+ ## auditwolf / Resume Monitor
413
+
414
+ `POST /auditwolf/v1/monitors/{monitorId}/resume`. Scope: `auditwolf:manage`.
415
+
416
+ Resume scheduling
417
+
418
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
419
+
420
+ ## auditwolf / Retire Rule
421
+
422
+ `DELETE /auditwolf/v1/rules/{lineageId}`. Scope: `auditwolf:manage`.
423
+
424
+ Retire a rule
425
+
426
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
427
+
428
+ ## auditwolf / Retry Webhook Delivery
429
+
430
+ `POST /auditwolf/v1/webhooks/{endpointId}/deliveries/{deliveryId}/retry`. Scope: `auditwolf:integrations`.
431
+
432
+ Re-queue a failed delivery
433
+
434
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
435
+
436
+ ## auditwolf / Rotate Webhook Secret
437
+
438
+ `POST /auditwolf/v1/webhooks/{endpointId}/rotate-secret`. Scope: `auditwolf:integrations`.
439
+
440
+ Replace the endpoint's signing secret
441
+
442
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
443
+
444
+ ## auditwolf / Run Monitor
445
+
446
+ `POST /auditwolf/v1/monitors/{monitorId}/run`. Scope: `auditwolf:run`.
447
+
448
+ Queue an audit now with the monitor's scope frozen as the scheduler would freeze it
449
+
450
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
451
+
452
+ ## auditwolf / Run Site Audit
453
+
454
+ `POST /auditwolf/v1/sites/{siteId}/audits`. Scope: `auditwolf:run`.
455
+
456
+ Trigger an asynchronous audit
457
+
458
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
459
+
460
+ ```json
461
+ {
462
+ "reason": "Scheduled n8n check",
463
+ "trigger_type": "api"
464
+ }
465
+ ```
466
+
467
+ ## auditwolf / Test Export Destination
468
+
469
+ `POST /auditwolf/v1/export-destinations/{destinationId}/test`. Scope: `auditwolf:integrations`.
470
+
471
+ Upload and verify a connection-test object
472
+
473
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
474
+
475
+ ## auditwolf / Test Webhook
476
+
477
+ `POST /auditwolf/v1/webhooks/{endpointId}/test`. Scope: `auditwolf:integrations`.
478
+
479
+ Send a signed endpoint.test event
480
+
481
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
482
+
483
+ ## auditwolf / Uninstall Rule Pack
484
+
485
+ `DELETE /auditwolf/v1/rule-packs/installed/{installationId}`. Scope: `auditwolf:manage`.
486
+
487
+ Uninstall a pack
488
+
489
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
490
+
491
+ ## auditwolf / Update Finding
492
+
493
+ `PATCH /auditwolf/v1/findings/{findingId}`. Scope: `auditwolf:manage`.
494
+
495
+ Assign, schedule, acknowledge, accept the risk, or close a finding
496
+
497
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
498
+
499
+ ```json
500
+ {}
501
+ ```
502
+
503
+ ## auditwolf / Update Monitor
504
+
505
+ `PATCH /auditwolf/v1/monitors/{monitorId}`. Scope: `auditwolf:manage`.
506
+
507
+ Change a monitor's name, cadence, anchor, timezone, capture profile or change policy
508
+
509
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
510
+
511
+ ## auditwolf / Update Rule
512
+
513
+ `PATCH /auditwolf/v1/rules/{lineageId}`. Scope: `auditwolf:manage`.
514
+
515
+ Revise a rule
516
+
517
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
518
+
519
+ ```json
520
+ {}
521
+ ```
522
+
523
+ ## auditwolf / Update Webhook
524
+
525
+ `PATCH /auditwolf/v1/webhooks/{endpointId}`. Scope: `auditwolf:integrations`.
526
+
527
+ Enable or disable an endpoint, or change its subscribed events
528
+
529
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
530
+
531
+ ## auditwolf / Upgrade Rule Pack
532
+
533
+ `POST /auditwolf/v1/rule-packs/installed/{installationId}/upgrade`. Scope: `auditwolf:manage`.
534
+
535
+ Upgrade an installed pack, or change its values
536
+
537
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
538
+
539
+ ```json
540
+ {}
541
+ ```
542
+
543
+ ## auditwolf / Usage
544
+
545
+ `GET /auditwolf/v1/usage`. Scope: `auditwolf:read`.
546
+
547
+ Credits, quota position, projection and hosted evidence
548
+
549
+ Full request contract: https://api.ironfang.uk/auditwolf/openapi.yaml
550
+
551
+ ## financewolf / Delete Result
552
+
553
+ `DELETE /financewolf/v1/einvoices/results/{id}`. Scope: `financewolf:einvoices:write`.
554
+
555
+ Delete saved result bytes and findings
556
+
557
+ Full request contract: https://api.ironfang.uk/financewolf/openapi.yaml
558
+
559
+ ## financewolf / Generate E-Invoice
560
+
561
+ `POST /financewolf/v1/einvoices/generate`. Scope: `financewolf:einvoices:write`.
562
+
563
+ Generate and validate one UBL e-invoice
564
+
565
+ Full request contract: https://api.ironfang.uk/financewolf/openapi.yaml
566
+
567
+ ```json
568
+ {
569
+ "input_schema_version": "financewolf/einvoice/generation-input/v1",
570
+ "document_type": "invoice",
571
+ "id": "EXAMPLE-INV-001",
572
+ "issue_date": "2026-09-08",
573
+ "due_date": "2026-10-08",
574
+ "currency": "GBP",
575
+ "buyer_reference": "BUYER-REF-001",
576
+ "seller": {
577
+ "name": "Example Supplier Ltd",
578
+ "endpoint": {
579
+ "scheme": "0088",
580
+ "value": "7300010000001"
581
+ },
582
+ "legal_identifier": {
583
+ "value": "12345678"
584
+ },
585
+ "vat_identifier": "GB123456789",
586
+ "address": {
587
+ "street": "1 Example Street",
588
+ "city": "London",
589
+ "postal_code": "SW1A 1AA",
590
+ "country": "GB"
591
+ }
592
+ },
593
+ "buyer": {
594
+ "name": "Example Buyer Ltd",
595
+ "endpoint": {
596
+ "scheme": "0088",
597
+ "value": "7300010000001"
598
+ },
599
+ "legal_identifier": {
600
+ "value": "87654321"
601
+ },
602
+ "address": {
603
+ "street": "2 Example Street",
604
+ "city": "London",
605
+ "postal_code": "SW1A 2AA",
606
+ "country": "GB"
607
+ }
608
+ },
609
+ "lines": [
610
+ {
611
+ "id": "1",
612
+ "quantity": "2",
613
+ "unit": "C62",
614
+ "price_amount": "12.50",
615
+ "item": {
616
+ "name": "Example service"
617
+ },
618
+ "tax": {
619
+ "category": "S",
620
+ "rate": "20"
621
+ }
622
+ }
623
+ ]
624
+ }
625
+ ```
626
+
627
+ Query fields: `ruleset` (required), `profile` (required).
628
+
629
+ ## financewolf / Get Result
630
+
631
+ `GET /financewolf/v1/einvoices/results/{id}`. Scope: `financewolf:einvoices:read`.
632
+
633
+ Read a saved validation or generation result
634
+
635
+ Full request contract: https://api.ironfang.uk/financewolf/openapi.yaml
636
+
637
+ ## financewolf / Get Ruleset
638
+
639
+ `GET /financewolf/v1/einvoices/rulesets/{id}`. Scope: `financewolf:einvoices:rulesets:read`.
640
+
641
+ Fetch one ruleset by its immutable id
642
+
643
+ Full request contract: https://api.ironfang.uk/financewolf/openapi.yaml
644
+
645
+ ## financewolf / List Results
646
+
647
+ `GET /financewolf/v1/einvoices/results`. Scope: `financewolf:einvoices:read`.
648
+
649
+ List saved validation results
650
+
651
+ Full request contract: https://api.ironfang.uk/financewolf/openapi.yaml
652
+
653
+ Query fields: `before`.
654
+
655
+ ## financewolf / List Rulesets
656
+
657
+ `GET /financewolf/v1/einvoices/rulesets`. Scope: `financewolf:einvoices:rulesets:read`.
658
+
659
+ List rulesets available for selection and reproduction
660
+
661
+ Full request contract: https://api.ironfang.uk/financewolf/openapi.yaml
662
+
663
+ Query fields: `document_type`, `profile`, `state`.
664
+
665
+ ## financewolf / Validate E-Invoice
666
+
667
+ `POST /financewolf/v1/einvoices/validate`. Scope: `financewolf:einvoices:write`.
668
+
669
+ Validate one e-invoice XML document
670
+
671
+ Full request contract: https://api.ironfang.uk/financewolf/openapi.yaml
672
+
673
+ Query fields: `ruleset`, `profile`, `document_type`.
674
+
675
+ ## renderwolf / Cancel Job
676
+
677
+ `DELETE /renderwolf/v1/jobs/{id}`. Scope: `renderwolf:render`.
678
+
679
+ Cancel a job
680
+
681
+ Full request contract: https://api.ironfang.uk/renderwolf/openapi.yaml
682
+
683
+ ## renderwolf / Capabilities
684
+
685
+ `GET /renderwolf/v1/capabilities`. Scope: `none`.
686
+
687
+ What Renderwolf does, is building and does not offer
688
+
689
+ Full request contract: https://api.ironfang.uk/renderwolf/openapi.yaml
690
+
691
+ ## renderwolf / Create Destination
692
+
693
+ `POST /renderwolf/v1/destinations`. Scope: `renderwolf:destinations`.
694
+
695
+ Register a delivery destination
696
+
697
+ Full request contract: https://api.ironfang.uk/renderwolf/openapi.yaml
698
+
699
+ ```json
700
+ {
701
+ "name": "n8n delivery",
702
+ "url": "https://example.com/webhook"
703
+ }
704
+ ```
705
+
706
+ ## renderwolf / Create Template
707
+
708
+ `POST /renderwolf/v1/templates`. Scope: `renderwolf:templates:write`.
709
+
710
+ Create a template
711
+
712
+ Full request contract: https://api.ironfang.uk/renderwolf/openapi.yaml
713
+
714
+ ```json
715
+ {
716
+ "name": "example-card",
717
+ "html": "<h1>{{title}}</h1>",
718
+ "width": 1200,
719
+ "height": 630
720
+ }
721
+ ```
722
+
723
+ ## renderwolf / Delete Destination
724
+
725
+ `DELETE /renderwolf/v1/destinations/{id}`. Scope: `renderwolf:destinations`.
726
+
727
+ Remove a destination
728
+
729
+ Full request contract: https://api.ironfang.uk/renderwolf/openapi.yaml
730
+
731
+ ## renderwolf / Delete Template
732
+
733
+ `DELETE /renderwolf/v1/templates/{id}`. Scope: `renderwolf:templates:write`.
734
+
735
+ Delete a template
736
+
737
+ Full request contract: https://api.ironfang.uk/renderwolf/openapi.yaml
738
+
739
+ ## renderwolf / Download Job Result
740
+
741
+ `GET /renderwolf/v1/jobs/{id}/result`. Scope: `renderwolf:render`.
742
+
743
+ Collect a job's result
744
+
745
+ Full request contract: https://api.ironfang.uk/renderwolf/openapi.yaml
746
+
747
+ ## renderwolf / Get Batch
748
+
749
+ `GET /renderwolf/v1/batches/{id}`. Scope: `renderwolf:render`.
750
+
751
+ Poll a batch
752
+
753
+ Full request contract: https://api.ironfang.uk/renderwolf/openapi.yaml
754
+
755
+ ## renderwolf / Get Delivery
756
+
757
+ `GET /renderwolf/v1/deliveries/{id}`. Scope: `renderwolf:render`.
758
+
759
+ One delivery, with the body it posted
760
+
761
+ Full request contract: https://api.ironfang.uk/renderwolf/openapi.yaml
762
+
763
+ ## renderwolf / Get Destination
764
+
765
+ `GET /renderwolf/v1/destinations/{id}`. Scope: `renderwolf:destinations`.
766
+
767
+ Get a destination
768
+
769
+ Full request contract: https://api.ironfang.uk/renderwolf/openapi.yaml
770
+
771
+ ## renderwolf / Get Job
772
+
773
+ `GET /renderwolf/v1/jobs/{id}`. Scope: `renderwolf:render`.
774
+
775
+ Poll a job
776
+
777
+ Full request contract: https://api.ironfang.uk/renderwolf/openapi.yaml
778
+
779
+ ## renderwolf / Get Template
780
+
781
+ `GET /renderwolf/v1/templates/{id}`. Scope: `renderwolf:templates:read`.
782
+
783
+ Fetch a template
784
+
785
+ Full request contract: https://api.ironfang.uk/renderwolf/openapi.yaml
786
+
787
+ ## renderwolf / List Deliveries
788
+
789
+ `GET /renderwolf/v1/deliveries`. Scope: `renderwolf:render`.
790
+
791
+ List deliveries
792
+
793
+ Full request contract: https://api.ironfang.uk/renderwolf/openapi.yaml
794
+
795
+ Query fields: `destination`, `limit`, `cursor`.
796
+
797
+ ## renderwolf / List Destinations
798
+
799
+ `GET /renderwolf/v1/destinations`. Scope: `renderwolf:destinations`.
800
+
801
+ List destinations
802
+
803
+ Full request contract: https://api.ironfang.uk/renderwolf/openapi.yaml
804
+
805
+ ## renderwolf / List Jobs
806
+
807
+ `GET /renderwolf/v1/jobs`. Scope: `renderwolf:render`.
808
+
809
+ List jobs
810
+
811
+ Full request contract: https://api.ironfang.uk/renderwolf/openapi.yaml
812
+
813
+ Query fields: `status`, `limit`, `cursor`.
814
+
815
+ ## renderwolf / List Requests
816
+
817
+ `GET /renderwolf/v1/requests`. Scope: `renderwolf:usage:read`.
818
+
819
+ Request history
820
+
821
+ Full request contract: https://api.ironfang.uk/renderwolf/openapi.yaml
822
+
823
+ Query fields: `since`, `until`, `outcome`, `kind`, `cache`, `key`, `error`, `id`, `limit`, `offset`.
824
+
825
+ ## renderwolf / List Templates
826
+
827
+ `GET /renderwolf/v1/templates`. Scope: `renderwolf:templates:read`.
828
+
829
+ List templates
830
+
831
+ Full request contract: https://api.ironfang.uk/renderwolf/openapi.yaml
832
+
833
+ Query fields: `cursor`, `limit`, `summary`.
834
+
835
+ ## renderwolf / QR Code
836
+
837
+ `POST /renderwolf/v1/qr`. Scope: `renderwolf:render`.
838
+
839
+ Render a QR code
840
+
841
+ Full request contract: https://api.ironfang.uk/renderwolf/openapi.yaml
842
+
843
+ ```json
844
+ {
845
+ "data": "https://example.com/menu"
846
+ }
847
+ ```
848
+
849
+ ## renderwolf / Redeliver Delivery
850
+
851
+ `POST /renderwolf/v1/deliveries/{id}/redeliver`. Scope: `renderwolf:destinations`.
852
+
853
+ Send a delivery again
854
+
855
+ Full request contract: https://api.ironfang.uk/renderwolf/openapi.yaml
856
+
857
+ ## renderwolf / Site Preview
858
+
859
+ `POST /renderwolf/v1/site-preview`. Scope: `renderwolf:render`.
860
+
861
+ Render a scrolling website preview
862
+
863
+ Full request contract: https://api.ironfang.uk/renderwolf/openapi.yaml
864
+
865
+ ```json
866
+ {
867
+ "url": "https://example.com",
868
+ "width": 672,
869
+ "height": 494,
870
+ "motion": "per_page"
871
+ }
872
+ ```
873
+
874
+ ## renderwolf / Submit Batch
875
+
876
+ `POST /renderwolf/v1/batches`. Scope: `renderwolf:render`.
877
+
878
+ Submit up to 100 jobs together
879
+
880
+ Full request contract: https://api.ironfang.uk/renderwolf/openapi.yaml
881
+
882
+ ```json
883
+ {
884
+ "items": [
885
+ {
886
+ "kind": "screenshot",
887
+ "request": {
888
+ "url": "https://example.com"
889
+ }
890
+ }
891
+ ]
892
+ }
893
+ ```
894
+
895
+ ## renderwolf / Submit Job
896
+
897
+ `POST /renderwolf/v1/jobs`. Scope: `renderwolf:render`.
898
+
899
+ Submit a durable render job
900
+
901
+ Full request contract: https://api.ironfang.uk/renderwolf/openapi.yaml
902
+
903
+ ```json
904
+ {
905
+ "kind": "screenshot",
906
+ "request": {
907
+ "url": "https://example.com"
908
+ }
909
+ }
910
+ ```
911
+
912
+ ## renderwolf / Test Destination
913
+
914
+ `POST /renderwolf/v1/destinations/{id}/test`. Scope: `renderwolf:destinations`.
915
+
916
+ Test a destination now
917
+
918
+ Full request contract: https://api.ironfang.uk/renderwolf/openapi.yaml
919
+
920
+ ## renderwolf / Update Destination
921
+
922
+ `PATCH /renderwolf/v1/destinations/{id}`. Scope: `renderwolf:destinations`.
923
+
924
+ Rename or enable a destination
925
+
926
+ Full request contract: https://api.ironfang.uk/renderwolf/openapi.yaml
927
+
928
+ ```json
929
+ {}
930
+ ```
931
+
932
+ ## renderwolf / Update Template
933
+
934
+ `PUT /renderwolf/v1/templates/{id}`. Scope: `renderwolf:templates:write`.
935
+
936
+ Replace a template
937
+
938
+ Full request contract: https://api.ironfang.uk/renderwolf/openapi.yaml
939
+
940
+ ```json
941
+ {
942
+ "name": "example-card",
943
+ "html": "<h1>{{title}}</h1>",
944
+ "width": 1200,
945
+ "height": 630
946
+ }
947
+ ```
948
+
949
+ ## tools / Convert Image
950
+
951
+ `POST /tools/v1/convert`. Scope: `none`.
952
+
953
+ Convert Image
954
+
955
+ Public tool input: use the form options and binary image field, or the JSON example below.
956
+
957
+ ```json
958
+ {
959
+ "format": "png"
960
+ }
961
+ ```
962
+
963
+ ## tools / Create Favicon ZIP
964
+
965
+ `POST /tools/v1/favicon`. Scope: `none`.
966
+
967
+ Create Favicon ZIP
968
+
969
+ Public tool input: use the form options and binary image field, or the JSON example below.
970
+
971
+ ```json
972
+ {
973
+ "fit": "pad",
974
+ "bg": "transparent"
975
+ }
976
+ ```
977
+
978
+ ## tools / Free Screenshot
979
+
980
+ `POST /tools/v1/screenshot`. Scope: `none`.
981
+
982
+ Free Screenshot
983
+
984
+ Public tool input: use the form options and binary image field, or the JSON example below.
985
+
986
+ ```json
987
+ {
988
+ "url": "https://example.com",
989
+ "width": 1280
990
+ }
991
+ ```
992
+
993
+ ## tools / Generate QR Code
994
+
995
+ `POST /tools/v1/qr`. Scope: `none`.
996
+
997
+ Generate QR Code
998
+
999
+ Public tool input: use the form options and binary image field, or the JSON example below.
1000
+
1001
+ ```json
1002
+ {
1003
+ "data": "https://example.com"
1004
+ }
1005
+ ```
1006
+
1007
+ ## tools / Generate UUID
1008
+
1009
+ `POST /tools/v1/uuid`. Scope: `none`.
1010
+
1011
+ Generate UUID
1012
+
1013
+ Public tool input: use the form options and binary image field, or the JSON example below.
1014
+
1015
+ ```json
1016
+ {
1017
+ "version": "v7",
1018
+ "count": 1
1019
+ }
1020
+ ```
1021
+
1022
+ ## tools / Inspect UUID
1023
+
1024
+ `POST /tools/v1/uuid/inspect`. Scope: `none`.
1025
+
1026
+ Inspect UUID
1027
+
1028
+ Public tool input: use the form options and binary image field, or the JSON example below.
1029
+
1030
+ ```json
1031
+ {
1032
+ "value": "01900000-0000-7000-8000-000000000000"
1033
+ }
1034
+ ```
1035
+
1036
+ ## tools / Verify QR Code
1037
+
1038
+ `POST /tools/v1/qr/verify`. Scope: `none`.
1039
+
1040
+ Verify QR Code
1041
+
1042
+ Public tool input: use the form options and binary image field, or the JSON example below.
1043
+
1044
+ ```json
1045
+ {}
1046
+ ```