@twin.org/node 0.0.3-next.31 → 0.0.3-next.32

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.
@@ -418,6 +418,7 @@
418
418
  "namespaceMismatch": "The namespace in the urn \"{id}\" does not match the namespace of the Auditable Item Stream service \"{namespace}\"",
419
419
  "createFailed": "Creating the Auditable Item Stream failed",
420
420
  "getFailed": "Getting the Auditable Item Stream failed",
421
+ "closeFailed": "Closing the Auditable Item Stream failed",
421
422
  "updatingFailed": "Updating the Auditable Item Stream failed",
422
423
  "removingFailed": "Removing Auditable Item Stream failed",
423
424
  "queryingFailed": "Querying the Auditable Item Stream failed",
@@ -429,6 +430,10 @@
429
430
  "gettingEntriesFailed": "Getting entries from the Auditable Item Stream failed",
430
431
  "gettingEntryObjectsFailed": "Getting entry objects from the Auditable Item Stream failed",
431
432
  "removeVerifiableFailed": "Removing verifiable storage from the Auditable Item Stream failed",
433
+ "closedRequiresEntries": "A stream can only be created as closed when entries are provided",
434
+ "streamClosed": "The stream with the Id \"{id}\" is closed and does not allow entry updates",
435
+ "appendOnlyNoEntryUpdates": "Entries in append-only mode cannot be updated for stream \"{id}\"",
436
+ "appendOnlyNoEntryRemovals": "Entries in append-only mode cannot be removed for stream \"{id}\"",
432
437
  "streamNotFound": "The stream with the Id \"{notFoundId}\" was not found",
433
438
  "streamEntryNotFound": "The stream entry with the Id \"{notFoundId}\" was not found"
434
439
  },
@@ -948,6 +953,47 @@
948
953
  "transferFailed": "The transfer of the NFT failed",
949
954
  "updateFailed": "The update of the NFT failed"
950
955
  },
956
+ "entityStorageNotarizationConnector": {
957
+ "creationFailed": "Creating the notarization failed",
958
+ "getFailed": "Getting the notarization failed",
959
+ "removeFailed": "Removing the notarization failed",
960
+ "updateFailed": "Updating the notarization failed",
961
+ "transferFailed": "Transferring the notarization failed",
962
+ "namespaceMismatch": "The notarization id namespace is invalid for this connector",
963
+ "notarizationNotFound": "The requested notarization could not be found",
964
+ "notControllerRemove": "Only the controller can remove this notarization",
965
+ "notControllerUpdate": "Only the controller can update this notarization",
966
+ "deleteLockActive": "The notarization cannot be removed until the delete lock expires",
967
+ "updateLockActive": "The notarization is locked and cannot be updated",
968
+ "transferLockActive": "The notarization is locked and cannot be transferred",
969
+ "immutableFieldModification": "Cannot modify immutable notarization field",
970
+ "lockedNotarizationDeleteLockMustHaveDate": "Locked notarization delete locks must specify an UnlockAt date",
971
+ "lockedNotarizationCannotHaveTransferLock": "Locked notarizations are non-transferable and cannot have a transfer lock",
972
+ "dynamicNotarizationCannotHaveDeleteLock": "Dynamic notarizations cannot have a delete lock",
973
+ "dynamicNotarizationTransferLockMustHaveDate": "Dynamic notarization transfer locks must specify a valid UnlockAt date"
974
+ },
975
+ "iotaNotarizationConnector": {
976
+ "creationFailed": "Failed to create the notarization.",
977
+ "creationFailedOutput": "Failed to parse the created notarization from transaction output.",
978
+ "deleteLockActive": "Deletion is currently locked for this notarization.",
979
+ "getFailed": "Failed to get the notarization.",
980
+ "invalidDate": "The value \"{{value}}\" is not a valid ISO date-time.",
981
+ "namespaceMismatch": "The notarization id \"{{id}}\" is not in the expected namespace \"{{namespace}}\".",
982
+ "removeFailed": "Failed to remove the notarization.",
983
+ "transferFailed": "Failed to transfer the notarization.",
984
+ "transferLockActive": "Transfer is currently locked for this notarization.",
985
+ "updateFailed": "Failed to update the notarization.",
986
+ "updateLockActive": "Updates are currently locked for this notarization."
987
+ },
988
+ "notarizationService": {
989
+ "namespaceMismatch": "The namespace in the urn \"{id}\" does not match the namespace of the notarization service \"{namespace}\"",
990
+ "noConnectors": "There are no connectors registered with the notarization factory",
991
+ "createFailed": "The creation of the notarization failed",
992
+ "getFailed": "The retrieval of the notarization failed",
993
+ "removeFailed": "The removal of the notarization failed",
994
+ "updateFailed": "The update of the notarization failed",
995
+ "transferFailed": "The transfer of the notarization failed"
996
+ },
951
997
  "dataAccessPointService": {
952
998
  "noHandlerForAssetType": "No handler registered for asset type \"{assetType}\"",
953
999
  "notAuthorizedToQuery": "Not authorized to query asset type \"{assetType}\"",
@@ -2034,6 +2080,7 @@
2034
2080
  "iotaNftConnector": {
2035
2081
  "contractReady": "Contract ready for use"
2036
2082
  },
2083
+ "iotaNotarizationConnector": {},
2037
2084
  "policyEnforcementPointService": {
2038
2085
  "processing": "Processing information using processor with id: \"{processorId}\", policy id: \"{policyId}\"",
2039
2086
  "intercepting": "Intercepting information for policy id: \"{policyId}\""
package/docs/changelog.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.0.3-next.32](https://github.com/twinfoundation/node/compare/node-v0.0.3-next.31...node-v0.0.3-next.32) (2026-04-16)
4
+
5
+
6
+ ### Features
7
+
8
+ * add notarization ([#121](https://github.com/twinfoundation/node/issues/121)) ([b2a11df](https://github.com/twinfoundation/node/commit/b2a11df92c7b5026f73f08a018c0586ebe008e92))
9
+
10
+
11
+ ### Dependencies
12
+
13
+ * The following workspace dependencies were updated
14
+ * dependencies
15
+ * @twin.org/node-core bumped from 0.0.3-next.31 to 0.0.3-next.32
16
+
3
17
  ## [0.0.3-next.31](https://github.com/twinfoundation/node/compare/node-v0.0.3-next.30...node-v0.0.3-next.31) (2026-04-14)
4
18
 
5
19
 
@@ -55,6 +55,10 @@
55
55
  "name": "NFT",
56
56
  "description": "Endpoints which are modelled to access an NFT contract."
57
57
  },
58
+ {
59
+ "name": "Notarization",
60
+ "description": "Endpoints which are modelled to access a notarization service."
61
+ },
58
62
  {
59
63
  "name": "Attestation",
60
64
  "description": "Endpoints which are modelled to access an attestation contract."
@@ -6437,12 +6441,540 @@
6437
6441
  }
6438
6442
  }
6439
6443
  },
6440
- "/nft": {
6444
+ "/nft": {
6445
+ "post": {
6446
+ "operationId": "nftMint",
6447
+ "summary": "Mint an NFT",
6448
+ "tags": [
6449
+ "NFT"
6450
+ ],
6451
+ "security": [
6452
+ {
6453
+ "jwtBearerAuthScheme": []
6454
+ }
6455
+ ],
6456
+ "requestBody": {
6457
+ "description": "Mint the data and return the NFT id.",
6458
+ "required": true,
6459
+ "content": {
6460
+ "application/json": {
6461
+ "schema": {
6462
+ "$ref": "#/components/schemas/NftMintRequest"
6463
+ },
6464
+ "examples": {
6465
+ "nftMintExample": {
6466
+ "value": {
6467
+ "tag": "MY-NFT",
6468
+ "immutableMetadata": {
6469
+ "docName": "bill-of-lading",
6470
+ "mimeType": "application/pdf",
6471
+ "fingerprint": "0xf0b95a98b3dbc5ce1c9ce59d70af95a97599f100a7296ecdd1eb108bebfa047f"
6472
+ },
6473
+ "metadata": {
6474
+ "data": "tst1prctjk5ck0dutnsunnje6u90jk5htx03qznjjmkd6843pzltlgz87srjzzv"
6475
+ }
6476
+ }
6477
+ }
6478
+ }
6479
+ }
6480
+ }
6481
+ },
6482
+ "responses": {
6483
+ "201": {
6484
+ "description": "The rest request ended in created response.",
6485
+ "headers": {
6486
+ "location": {
6487
+ "schema": {
6488
+ "type": "string"
6489
+ },
6490
+ "description": "e.g. nft:iota:aW90YS1uZnQ6dHN0OjB4NzYyYjljNDllYTg2OWUwZWJkYTliYmZhNzY5Mzk0NDdhNDI4ZGNmMTc4YzVkMTVhYjQ0N2UyZDRmYmJiNGViMg=="
6491
+ }
6492
+ }
6493
+ },
6494
+ "400": {
6495
+ "description": "The server cannot process the request, see the content for more details.",
6496
+ "content": {
6497
+ "application/json": {
6498
+ "schema": {
6499
+ "$ref": "#/components/schemas/Error"
6500
+ },
6501
+ "examples": {
6502
+ "exampleResponse": {
6503
+ "value": {
6504
+ "name": "GeneralError",
6505
+ "message": "errorMessage",
6506
+ "properties": {
6507
+ "foo": "bar"
6508
+ }
6509
+ }
6510
+ }
6511
+ }
6512
+ }
6513
+ }
6514
+ },
6515
+ "401": {
6516
+ "description": "You are not authorized to use the API or no credentials were supplied, see the content for more details.",
6517
+ "content": {
6518
+ "application/json": {
6519
+ "schema": {
6520
+ "$ref": "#/components/schemas/Error"
6521
+ },
6522
+ "examples": {
6523
+ "exampleResponse": {
6524
+ "value": {
6525
+ "name": "UnauthorizedError",
6526
+ "message": "errorMessage"
6527
+ }
6528
+ }
6529
+ }
6530
+ }
6531
+ }
6532
+ },
6533
+ "500": {
6534
+ "description": "The server has encountered a situation it does not know how to handle, see the content for more details.",
6535
+ "content": {
6536
+ "application/json": {
6537
+ "schema": {
6538
+ "$ref": "#/components/schemas/Error"
6539
+ },
6540
+ "examples": {
6541
+ "exampleResponse": {
6542
+ "value": {
6543
+ "name": "InternalServerError",
6544
+ "message": "errorMessage"
6545
+ }
6546
+ }
6547
+ }
6548
+ }
6549
+ }
6550
+ }
6551
+ }
6552
+ }
6553
+ },
6554
+ "/nft/{id}": {
6555
+ "get": {
6556
+ "operationId": "nftResolve",
6557
+ "summary": "Resolve an NFT",
6558
+ "tags": [
6559
+ "NFT"
6560
+ ],
6561
+ "parameters": [
6562
+ {
6563
+ "name": "id",
6564
+ "description": "The id of the NFT to resolve.",
6565
+ "in": "path",
6566
+ "required": true,
6567
+ "schema": {
6568
+ "type": "string"
6569
+ },
6570
+ "style": "simple",
6571
+ "example": "nft:iota:aW90YS1uZnQ6dHN0OjB4NzYyYjljNDllYTg2OWUwZWJkYTliYmZhNzY5Mzk0NDdhNDI4ZGNmMTc4YzVkMTVhYjQ0N2UyZDRmYmJiNGViMg=="
6572
+ }
6573
+ ],
6574
+ "security": [
6575
+ {
6576
+ "jwtBearerAuthScheme": []
6577
+ }
6578
+ ],
6579
+ "responses": {
6580
+ "200": {
6581
+ "description": "Response to resolving the NFT.",
6582
+ "content": {
6583
+ "application/json": {
6584
+ "schema": {
6585
+ "$ref": "#/components/schemas/NftResolveResponse"
6586
+ },
6587
+ "examples": {
6588
+ "nftResolveResponseExample": {
6589
+ "value": {
6590
+ "issuer": "did:iota:tst:0x85ef62ea94fc4eeeeeddf6acc3b566e988e613081d0b93cc54ed831ed4c18d44",
6591
+ "owner": "did:iota:tst:0x85ef62ea94fc4eeeeeddf6acc3b566e988e613081d0b93cc54ed831ed4c18d44",
6592
+ "tag": "MY-NFT",
6593
+ "immutableMetadata": {
6594
+ "docName": "bill-of-lading",
6595
+ "mimeType": "application/pdf",
6596
+ "fingerprint": "0xf0b95a98b3dbc5ce1c9ce59d70af95a97599f100a7296ecdd1eb108bebfa047f"
6597
+ },
6598
+ "metadata": {
6599
+ "data": "AAAAA"
6600
+ }
6601
+ }
6602
+ }
6603
+ }
6604
+ }
6605
+ }
6606
+ },
6607
+ "400": {
6608
+ "description": "The server cannot process the request, see the content for more details.",
6609
+ "content": {
6610
+ "application/json": {
6611
+ "schema": {
6612
+ "$ref": "#/components/schemas/Error"
6613
+ },
6614
+ "examples": {
6615
+ "exampleResponse": {
6616
+ "value": {
6617
+ "name": "GeneralError",
6618
+ "message": "errorMessage",
6619
+ "properties": {
6620
+ "foo": "bar"
6621
+ }
6622
+ }
6623
+ }
6624
+ }
6625
+ }
6626
+ }
6627
+ },
6628
+ "401": {
6629
+ "description": "You are not authorized to use the API or no credentials were supplied, see the content for more details.",
6630
+ "content": {
6631
+ "application/json": {
6632
+ "schema": {
6633
+ "$ref": "#/components/schemas/Error"
6634
+ },
6635
+ "examples": {
6636
+ "exampleResponse": {
6637
+ "value": {
6638
+ "name": "UnauthorizedError",
6639
+ "message": "errorMessage"
6640
+ }
6641
+ }
6642
+ }
6643
+ }
6644
+ }
6645
+ },
6646
+ "500": {
6647
+ "description": "The server has encountered a situation it does not know how to handle, see the content for more details.",
6648
+ "content": {
6649
+ "application/json": {
6650
+ "schema": {
6651
+ "$ref": "#/components/schemas/Error"
6652
+ },
6653
+ "examples": {
6654
+ "exampleResponse": {
6655
+ "value": {
6656
+ "name": "InternalServerError",
6657
+ "message": "errorMessage"
6658
+ }
6659
+ }
6660
+ }
6661
+ }
6662
+ }
6663
+ }
6664
+ }
6665
+ },
6666
+ "delete": {
6667
+ "operationId": "nftBurn",
6668
+ "summary": "Burn an NFT",
6669
+ "tags": [
6670
+ "NFT"
6671
+ ],
6672
+ "parameters": [
6673
+ {
6674
+ "name": "id",
6675
+ "description": "The id of the NFT to burn.",
6676
+ "in": "path",
6677
+ "required": true,
6678
+ "schema": {
6679
+ "type": "string"
6680
+ },
6681
+ "style": "simple",
6682
+ "example": "nft:iota:aW90YS1uZnQ6dHN0OjB4NzYyYjljNDllYTg2OWUwZWJkYTliYmZhNzY5Mzk0NDdhNDI4ZGNmMTc4YzVkMTVhYjQ0N2UyZDRmYmJiNGViMg=="
6683
+ }
6684
+ ],
6685
+ "security": [
6686
+ {
6687
+ "jwtBearerAuthScheme": []
6688
+ }
6689
+ ],
6690
+ "responses": {
6691
+ "204": {
6692
+ "description": "The rest request ended in success with no data."
6693
+ },
6694
+ "400": {
6695
+ "description": "The server cannot process the request, see the content for more details.",
6696
+ "content": {
6697
+ "application/json": {
6698
+ "schema": {
6699
+ "$ref": "#/components/schemas/Error"
6700
+ },
6701
+ "examples": {
6702
+ "exampleResponse": {
6703
+ "value": {
6704
+ "name": "GeneralError",
6705
+ "message": "errorMessage",
6706
+ "properties": {
6707
+ "foo": "bar"
6708
+ }
6709
+ }
6710
+ }
6711
+ }
6712
+ }
6713
+ }
6714
+ },
6715
+ "401": {
6716
+ "description": "You are not authorized to use the API or no credentials were supplied, see the content for more details.",
6717
+ "content": {
6718
+ "application/json": {
6719
+ "schema": {
6720
+ "$ref": "#/components/schemas/Error"
6721
+ },
6722
+ "examples": {
6723
+ "exampleResponse": {
6724
+ "value": {
6725
+ "name": "UnauthorizedError",
6726
+ "message": "errorMessage"
6727
+ }
6728
+ }
6729
+ }
6730
+ }
6731
+ }
6732
+ },
6733
+ "500": {
6734
+ "description": "The server has encountered a situation it does not know how to handle, see the content for more details.",
6735
+ "content": {
6736
+ "application/json": {
6737
+ "schema": {
6738
+ "$ref": "#/components/schemas/Error"
6739
+ },
6740
+ "examples": {
6741
+ "exampleResponse": {
6742
+ "value": {
6743
+ "name": "InternalServerError",
6744
+ "message": "errorMessage"
6745
+ }
6746
+ }
6747
+ }
6748
+ }
6749
+ }
6750
+ }
6751
+ }
6752
+ },
6753
+ "put": {
6754
+ "operationId": "nftUpdate",
6755
+ "summary": "Update an NFT",
6756
+ "tags": [
6757
+ "NFT"
6758
+ ],
6759
+ "parameters": [
6760
+ {
6761
+ "name": "id",
6762
+ "description": "The id of the NFT to transfer in urn format.",
6763
+ "in": "path",
6764
+ "required": true,
6765
+ "schema": {
6766
+ "type": "string"
6767
+ },
6768
+ "style": "simple",
6769
+ "example": "nft:iota:aW90YS1uZnQ6dHN0OjB4NzYyYjljNDllYTg2OWUwZWJkYTliYmZhNzY5Mzk0NDdhNDI4ZGNmMTc4YzVkMTVhYjQ0N2UyZDRmYmJiNGViMg=="
6770
+ }
6771
+ ],
6772
+ "security": [
6773
+ {
6774
+ "jwtBearerAuthScheme": []
6775
+ }
6776
+ ],
6777
+ "requestBody": {
6778
+ "description": "Update the mutable data for the NFT.",
6779
+ "required": true,
6780
+ "content": {
6781
+ "application/json": {
6782
+ "schema": {
6783
+ "$ref": "#/components/schemas/NftUpdateRequest"
6784
+ },
6785
+ "examples": {
6786
+ "nftUpdateExample": {
6787
+ "value": {
6788
+ "metadata": {
6789
+ "data": "AAAAA"
6790
+ }
6791
+ }
6792
+ }
6793
+ }
6794
+ }
6795
+ }
6796
+ },
6797
+ "responses": {
6798
+ "204": {
6799
+ "description": "The rest request ended in success with no data."
6800
+ },
6801
+ "400": {
6802
+ "description": "The server cannot process the request, see the content for more details.",
6803
+ "content": {
6804
+ "application/json": {
6805
+ "schema": {
6806
+ "$ref": "#/components/schemas/Error"
6807
+ },
6808
+ "examples": {
6809
+ "exampleResponse": {
6810
+ "value": {
6811
+ "name": "GeneralError",
6812
+ "message": "errorMessage",
6813
+ "properties": {
6814
+ "foo": "bar"
6815
+ }
6816
+ }
6817
+ }
6818
+ }
6819
+ }
6820
+ }
6821
+ },
6822
+ "401": {
6823
+ "description": "You are not authorized to use the API or no credentials were supplied, see the content for more details.",
6824
+ "content": {
6825
+ "application/json": {
6826
+ "schema": {
6827
+ "$ref": "#/components/schemas/Error"
6828
+ },
6829
+ "examples": {
6830
+ "exampleResponse": {
6831
+ "value": {
6832
+ "name": "UnauthorizedError",
6833
+ "message": "errorMessage"
6834
+ }
6835
+ }
6836
+ }
6837
+ }
6838
+ }
6839
+ },
6840
+ "500": {
6841
+ "description": "The server has encountered a situation it does not know how to handle, see the content for more details.",
6842
+ "content": {
6843
+ "application/json": {
6844
+ "schema": {
6845
+ "$ref": "#/components/schemas/Error"
6846
+ },
6847
+ "examples": {
6848
+ "exampleResponse": {
6849
+ "value": {
6850
+ "name": "InternalServerError",
6851
+ "message": "errorMessage"
6852
+ }
6853
+ }
6854
+ }
6855
+ }
6856
+ }
6857
+ }
6858
+ }
6859
+ }
6860
+ },
6861
+ "/nft/{id}/transfer": {
6862
+ "post": {
6863
+ "operationId": "nftTransfer",
6864
+ "summary": "Transfer an NFT",
6865
+ "tags": [
6866
+ "NFT"
6867
+ ],
6868
+ "parameters": [
6869
+ {
6870
+ "name": "id",
6871
+ "description": "The id of the NFT to transfer in urn format.",
6872
+ "in": "path",
6873
+ "required": true,
6874
+ "schema": {
6875
+ "type": "string"
6876
+ },
6877
+ "style": "simple",
6878
+ "example": "nft:iota:aW90YS1uZnQ6dHN0OjB4NzYyYjljNDllYTg2OWUwZWJkYTliYmZhNzY5Mzk0NDdhNDI4ZGNmMTc4YzVkMTVhYjQ0N2UyZDRmYmJiNGViMg=="
6879
+ }
6880
+ ],
6881
+ "security": [
6882
+ {
6883
+ "jwtBearerAuthScheme": []
6884
+ }
6885
+ ],
6886
+ "requestBody": {
6887
+ "description": "Transfer the NFT and update the metadata.",
6888
+ "required": true,
6889
+ "content": {
6890
+ "application/json": {
6891
+ "schema": {
6892
+ "$ref": "#/components/schemas/NftTransferRequest"
6893
+ },
6894
+ "examples": {
6895
+ "nftTransferExample": {
6896
+ "value": {
6897
+ "recipientIdentity": "did:iota:tst:0x85ef62ea94fc4eeeeeddf6acc3b566e988e613081d0b93cc54ed831ed4c18d44",
6898
+ "recipientAddress": "tst1prctjk5ck0dutnsunnje6u90jk5htx03qznjjmkd6843pzltlgz87srjzzv",
6899
+ "metadata": {
6900
+ "data": "AAAAA"
6901
+ }
6902
+ }
6903
+ }
6904
+ }
6905
+ }
6906
+ }
6907
+ },
6908
+ "responses": {
6909
+ "204": {
6910
+ "description": "The rest request ended in success with no data."
6911
+ },
6912
+ "400": {
6913
+ "description": "The server cannot process the request, see the content for more details.",
6914
+ "content": {
6915
+ "application/json": {
6916
+ "schema": {
6917
+ "$ref": "#/components/schemas/Error"
6918
+ },
6919
+ "examples": {
6920
+ "exampleResponse": {
6921
+ "value": {
6922
+ "name": "GeneralError",
6923
+ "message": "errorMessage",
6924
+ "properties": {
6925
+ "foo": "bar"
6926
+ }
6927
+ }
6928
+ }
6929
+ }
6930
+ }
6931
+ }
6932
+ },
6933
+ "401": {
6934
+ "description": "You are not authorized to use the API or no credentials were supplied, see the content for more details.",
6935
+ "content": {
6936
+ "application/json": {
6937
+ "schema": {
6938
+ "$ref": "#/components/schemas/Error"
6939
+ },
6940
+ "examples": {
6941
+ "exampleResponse": {
6942
+ "value": {
6943
+ "name": "UnauthorizedError",
6944
+ "message": "errorMessage"
6945
+ }
6946
+ }
6947
+ }
6948
+ }
6949
+ }
6950
+ },
6951
+ "500": {
6952
+ "description": "The server has encountered a situation it does not know how to handle, see the content for more details.",
6953
+ "content": {
6954
+ "application/json": {
6955
+ "schema": {
6956
+ "$ref": "#/components/schemas/Error"
6957
+ },
6958
+ "examples": {
6959
+ "exampleResponse": {
6960
+ "value": {
6961
+ "name": "InternalServerError",
6962
+ "message": "errorMessage"
6963
+ }
6964
+ }
6965
+ }
6966
+ }
6967
+ }
6968
+ }
6969
+ }
6970
+ }
6971
+ },
6972
+ "/notarization": {
6441
6973
  "post": {
6442
- "operationId": "nftMint",
6443
- "summary": "Mint an NFT",
6974
+ "operationId": "notarizationCreate",
6975
+ "summary": "Create a notarization",
6444
6976
  "tags": [
6445
- "NFT"
6977
+ "Notarization"
6446
6978
  ],
6447
6979
  "security": [
6448
6980
  {
@@ -6450,25 +6982,19 @@
6450
6982
  }
6451
6983
  ],
6452
6984
  "requestBody": {
6453
- "description": "Mint the data and return the NFT id.",
6985
+ "description": "Request to create a notarization.",
6454
6986
  "required": true,
6455
6987
  "content": {
6456
6988
  "application/json": {
6457
6989
  "schema": {
6458
- "$ref": "#/components/schemas/NftMintRequest"
6990
+ "$ref": "#/components/schemas/NotarizationCreateRequest"
6459
6991
  },
6460
6992
  "examples": {
6461
- "nftMintExample": {
6993
+ "notarizationCreateExample": {
6462
6994
  "value": {
6463
- "tag": "MY-NFT",
6464
- "immutableMetadata": {
6465
- "docName": "bill-of-lading",
6466
- "mimeType": "application/pdf",
6467
- "fingerprint": "0xf0b95a98b3dbc5ce1c9ce59d70af95a97599f100a7296ecdd1eb108bebfa047f"
6468
- },
6469
- "metadata": {
6470
- "data": "tst1prctjk5ck0dutnsunnje6u90jk5htx03qznjjmkd6843pzltlgz87srjzzv"
6471
- }
6995
+ "mode": "dynamic",
6996
+ "data": {},
6997
+ "description": "My first notarization"
6472
6998
  }
6473
6999
  }
6474
7000
  }
@@ -6483,7 +7009,7 @@
6483
7009
  "schema": {
6484
7010
  "type": "string"
6485
7011
  },
6486
- "description": "e.g. nft:iota:aW90YS1uZnQ6dHN0OjB4NzYyYjljNDllYTg2OWUwZWJkYTliYmZhNzY5Mzk0NDdhNDI4ZGNmMTc4YzVkMTVhYjQ0N2UyZDRmYmJiNGViMg=="
7012
+ "description": "e.g. 123"
6487
7013
  }
6488
7014
  }
6489
7015
  },
@@ -6547,24 +7073,24 @@
6547
7073
  }
6548
7074
  }
6549
7075
  },
6550
- "/nft/{id}": {
7076
+ "/notarization/{id}": {
6551
7077
  "get": {
6552
- "operationId": "nftResolve",
6553
- "summary": "Resolve an NFT",
7078
+ "operationId": "notarizationGet",
7079
+ "summary": "Get a notarization",
6554
7080
  "tags": [
6555
- "NFT"
7081
+ "Notarization"
6556
7082
  ],
6557
7083
  "parameters": [
6558
7084
  {
6559
7085
  "name": "id",
6560
- "description": "The id of the NFT to resolve.",
7086
+ "description": "The id of the notarization to get.",
6561
7087
  "in": "path",
6562
7088
  "required": true,
6563
7089
  "schema": {
6564
7090
  "type": "string"
6565
7091
  },
6566
7092
  "style": "simple",
6567
- "example": "nft:iota:aW90YS1uZnQ6dHN0OjB4NzYyYjljNDllYTg2OWUwZWJkYTliYmZhNzY5Mzk0NDdhNDI4ZGNmMTc4YzVkMTVhYjQ0N2UyZDRmYmJiNGViMg=="
7093
+ "example": "123"
6568
7094
  }
6569
7095
  ],
6570
7096
  "security": [
@@ -6574,26 +7100,20 @@
6574
7100
  ],
6575
7101
  "responses": {
6576
7102
  "200": {
6577
- "description": "Response to resolving the NFT.",
7103
+ "description": "Response for getting a notarization.",
6578
7104
  "content": {
6579
7105
  "application/json": {
6580
7106
  "schema": {
6581
- "$ref": "#/components/schemas/NftResolveResponse"
7107
+ "$ref": "#/components/schemas/Notarization"
6582
7108
  },
6583
7109
  "examples": {
6584
- "nftResolveResponseExample": {
7110
+ "notarizationGetResponseExample": {
6585
7111
  "value": {
6586
- "issuer": "did:iota:tst:0x85ef62ea94fc4eeeeeddf6acc3b566e988e613081d0b93cc54ed831ed4c18d44",
6587
- "owner": "did:iota:tst:0x85ef62ea94fc4eeeeeddf6acc3b566e988e613081d0b93cc54ed831ed4c18d44",
6588
- "tag": "MY-NFT",
6589
- "immutableMetadata": {
6590
- "docName": "bill-of-lading",
6591
- "mimeType": "application/pdf",
6592
- "fingerprint": "0xf0b95a98b3dbc5ce1c9ce59d70af95a97599f100a7296ecdd1eb108bebfa047f"
6593
- },
6594
- "metadata": {
6595
- "data": "AAAAA"
6596
- }
7112
+ "id": "123",
7113
+ "mode": "dynamic",
7114
+ "dateCreated": "2026-01-01T00:00:00.000Z",
7115
+ "data": {},
7116
+ "description": "A notarization"
6597
7117
  }
6598
7118
  }
6599
7119
  }
@@ -6660,22 +7180,22 @@
6660
7180
  }
6661
7181
  },
6662
7182
  "delete": {
6663
- "operationId": "nftBurn",
6664
- "summary": "Burn an NFT",
7183
+ "operationId": "notarizationRemove",
7184
+ "summary": "Remove a notarization",
6665
7185
  "tags": [
6666
- "NFT"
7186
+ "Notarization"
6667
7187
  ],
6668
7188
  "parameters": [
6669
7189
  {
6670
7190
  "name": "id",
6671
- "description": "The id of the NFT to burn.",
7191
+ "description": "The id of the notarization to remove.",
6672
7192
  "in": "path",
6673
7193
  "required": true,
6674
7194
  "schema": {
6675
7195
  "type": "string"
6676
7196
  },
6677
7197
  "style": "simple",
6678
- "example": "nft:iota:aW90YS1uZnQ6dHN0OjB4NzYyYjljNDllYTg2OWUwZWJkYTliYmZhNzY5Mzk0NDdhNDI4ZGNmMTc4YzVkMTVhYjQ0N2UyZDRmYmJiNGViMg=="
7198
+ "example": "123"
6679
7199
  }
6680
7200
  ],
6681
7201
  "security": [
@@ -6747,22 +7267,22 @@
6747
7267
  }
6748
7268
  },
6749
7269
  "put": {
6750
- "operationId": "nftUpdate",
6751
- "summary": "Update an NFT",
7270
+ "operationId": "notarizationUpdate",
7271
+ "summary": "Update a notarization",
6752
7272
  "tags": [
6753
- "NFT"
7273
+ "Notarization"
6754
7274
  ],
6755
7275
  "parameters": [
6756
7276
  {
6757
7277
  "name": "id",
6758
- "description": "The id of the NFT to transfer in urn format.",
7278
+ "description": "The id of the notarization to update.",
6759
7279
  "in": "path",
6760
7280
  "required": true,
6761
7281
  "schema": {
6762
7282
  "type": "string"
6763
7283
  },
6764
7284
  "style": "simple",
6765
- "example": "nft:iota:aW90YS1uZnQ6dHN0OjB4NzYyYjljNDllYTg2OWUwZWJkYTliYmZhNzY5Mzk0NDdhNDI4ZGNmMTc4YzVkMTVhYjQ0N2UyZDRmYmJiNGViMg=="
7285
+ "example": "123"
6766
7286
  }
6767
7287
  ],
6768
7288
  "security": [
@@ -6771,19 +7291,21 @@
6771
7291
  }
6772
7292
  ],
6773
7293
  "requestBody": {
6774
- "description": "Update the mutable data for the NFT.",
7294
+ "description": "Request to update a notarization.",
6775
7295
  "required": true,
6776
7296
  "content": {
6777
7297
  "application/json": {
6778
7298
  "schema": {
6779
- "$ref": "#/components/schemas/NftUpdateRequest"
7299
+ "$ref": "#/components/schemas/Notarization"
6780
7300
  },
6781
7301
  "examples": {
6782
- "nftUpdateExample": {
7302
+ "notarizationUpdateExample": {
6783
7303
  "value": {
6784
- "metadata": {
6785
- "data": "AAAAA"
6786
- }
7304
+ "id": "123",
7305
+ "mode": "dynamic",
7306
+ "dateCreated": "2026-01-01T00:00:00.000Z",
7307
+ "data": {},
7308
+ "description": "Updated notarization"
6787
7309
  }
6788
7310
  }
6789
7311
  }
@@ -6854,24 +7376,24 @@
6854
7376
  }
6855
7377
  }
6856
7378
  },
6857
- "/nft/{id}/transfer": {
7379
+ "/notarization/{id}/transfer": {
6858
7380
  "post": {
6859
- "operationId": "nftTransfer",
6860
- "summary": "Transfer an NFT",
7381
+ "operationId": "notarizationTransfer",
7382
+ "summary": "Transfer a notarization",
6861
7383
  "tags": [
6862
- "NFT"
7384
+ "Notarization"
6863
7385
  ],
6864
7386
  "parameters": [
6865
7387
  {
6866
7388
  "name": "id",
6867
- "description": "The id of the NFT to transfer in urn format.",
7389
+ "description": "The id of the notarization to transfer.",
6868
7390
  "in": "path",
6869
7391
  "required": true,
6870
7392
  "schema": {
6871
7393
  "type": "string"
6872
7394
  },
6873
7395
  "style": "simple",
6874
- "example": "nft:iota:aW90YS1uZnQ6dHN0OjB4NzYyYjljNDllYTg2OWUwZWJkYTliYmZhNzY5Mzk0NDdhNDI4ZGNmMTc4YzVkMTVhYjQ0N2UyZDRmYmJiNGViMg=="
7396
+ "example": "123"
6875
7397
  }
6876
7398
  ],
6877
7399
  "security": [
@@ -6880,21 +7402,17 @@
6880
7402
  }
6881
7403
  ],
6882
7404
  "requestBody": {
6883
- "description": "Transfer the NFT and update the metadata.",
7405
+ "description": "Request to transfer a notarization.",
6884
7406
  "required": true,
6885
7407
  "content": {
6886
7408
  "application/json": {
6887
7409
  "schema": {
6888
- "$ref": "#/components/schemas/NftTransferRequest"
7410
+ "$ref": "#/components/schemas/NotarizationTransferRequest"
6889
7411
  },
6890
7412
  "examples": {
6891
- "nftTransferExample": {
7413
+ "notarizationTransferExample": {
6892
7414
  "value": {
6893
- "recipientIdentity": "did:iota:tst:0x85ef62ea94fc4eeeeeddf6acc3b566e988e613081d0b93cc54ed831ed4c18d44",
6894
- "recipientAddress": "tst1prctjk5ck0dutnsunnje6u90jk5htx03qznjjmkd6843pzltlgz87srjzzv",
6895
- "metadata": {
6896
- "data": "AAAAA"
6897
- }
7415
+ "recipientAddress": "recipient-address-1"
6898
7416
  }
6899
7417
  }
6900
7418
  }
@@ -12166,6 +12684,116 @@
12166
12684
  }
12167
12685
  }
12168
12686
  },
12687
+ "/ais/{id}/close": {
12688
+ "put": {
12689
+ "operationId": "auditableItemStreamClose",
12690
+ "summary": "Close a stream",
12691
+ "tags": [
12692
+ "Auditable Item Stream"
12693
+ ],
12694
+ "parameters": [
12695
+ {
12696
+ "name": "id",
12697
+ "description": "The id of the stream to close.",
12698
+ "in": "path",
12699
+ "required": true,
12700
+ "schema": {
12701
+ "type": "string"
12702
+ },
12703
+ "style": "simple",
12704
+ "example": "ais:1234567890"
12705
+ }
12706
+ ],
12707
+ "security": [
12708
+ {
12709
+ "jwtBearerAuthScheme": []
12710
+ }
12711
+ ],
12712
+ "responses": {
12713
+ "204": {
12714
+ "description": "The rest request ended in success with no data."
12715
+ },
12716
+ "400": {
12717
+ "description": "The server cannot process the request, see the content for more details.",
12718
+ "content": {
12719
+ "application/json": {
12720
+ "schema": {
12721
+ "$ref": "#/components/schemas/Error"
12722
+ },
12723
+ "examples": {
12724
+ "exampleResponse": {
12725
+ "value": {
12726
+ "name": "GeneralError",
12727
+ "message": "errorMessage",
12728
+ "properties": {
12729
+ "foo": "bar"
12730
+ }
12731
+ }
12732
+ }
12733
+ }
12734
+ }
12735
+ }
12736
+ },
12737
+ "401": {
12738
+ "description": "You are not authorized to use the API or no credentials were supplied, see the content for more details.",
12739
+ "content": {
12740
+ "application/json": {
12741
+ "schema": {
12742
+ "$ref": "#/components/schemas/Error"
12743
+ },
12744
+ "examples": {
12745
+ "exampleResponse": {
12746
+ "value": {
12747
+ "name": "UnauthorizedError",
12748
+ "message": "errorMessage"
12749
+ }
12750
+ }
12751
+ }
12752
+ }
12753
+ }
12754
+ },
12755
+ "404": {
12756
+ "description": "The resource you tried to access does not exist, see the content for more details.",
12757
+ "content": {
12758
+ "application/json": {
12759
+ "schema": {
12760
+ "$ref": "#/components/schemas/NotFoundResponse"
12761
+ },
12762
+ "examples": {
12763
+ "exampleResponse": {
12764
+ "value": {
12765
+ "name": "NotFoundError",
12766
+ "message": "errorMessage",
12767
+ "properties": {
12768
+ "notFoundId": "1"
12769
+ }
12770
+ }
12771
+ }
12772
+ }
12773
+ }
12774
+ }
12775
+ },
12776
+ "500": {
12777
+ "description": "The server has encountered a situation it does not know how to handle, see the content for more details.",
12778
+ "content": {
12779
+ "application/json": {
12780
+ "schema": {
12781
+ "$ref": "#/components/schemas/Error"
12782
+ },
12783
+ "examples": {
12784
+ "exampleResponse": {
12785
+ "value": {
12786
+ "name": "InternalServerError",
12787
+ "message": "errorMessage"
12788
+ }
12789
+ }
12790
+ }
12791
+ }
12792
+ }
12793
+ }
12794
+ }
12795
+ }
12796
+ },
12169
12797
  "/ais/{id}/entries": {
12170
12798
  "post": {
12171
12799
  "operationId": "auditableItemStreamCreateEntry",
@@ -19614,6 +20242,134 @@
19614
20242
  ],
19615
20243
  "description": "The body which contains the error."
19616
20244
  },
20245
+ "Notarization": {
20246
+ "description": "Interface describing a notarization.",
20247
+ "type": "object",
20248
+ "properties": {
20249
+ "id": {
20250
+ "type": "string",
20251
+ "description": "The unique identifier of the notarization."
20252
+ },
20253
+ "mode": {
20254
+ "$ref": "#/components/schemas/NotarizationMode"
20255
+ },
20256
+ "dateCreated": {
20257
+ "type": "string",
20258
+ "description": "The date and time when the notarization was created, in ISO 8601 format."
20259
+ },
20260
+ "dateModified": {
20261
+ "type": "string",
20262
+ "description": "The date and time when the notarization was last modified, in ISO 8601 format."
20263
+ },
20264
+ "data": {
20265
+ "type": "array",
20266
+ "items": {
20267
+ "type": "number"
20268
+ },
20269
+ "description": "The notarization data as a byte array."
20270
+ },
20271
+ "immutableDescription": {
20272
+ "type": "string",
20273
+ "description": "An optional description of the notarization that cannot be changed after creation."
20274
+ },
20275
+ "description": {
20276
+ "type": "string",
20277
+ "description": "An optional description of the notarization that can be modified until the notarization is locked."
20278
+ },
20279
+ "deleteLockDateTime": {
20280
+ "type": "string",
20281
+ "description": "An optional lock date, in ISO 8601 format, that prevents deletion until the date is reached.\nUsed only in Locked Notarization, it prevents the object from being deleted until the lock expires."
20282
+ },
20283
+ "transferLockUntilDestroyed": {
20284
+ "type": "boolean",
20285
+ "description": "An optional flag indicating transfer lock is active until the notarization is destroyed.\nUsed only in Dynamic Notarization."
20286
+ },
20287
+ "transferLockDateTime": {
20288
+ "type": "string",
20289
+ "description": "An optional transfer lock date-time, in ISO 8601 format.\nUsed only in Dynamic Notarization."
20290
+ }
20291
+ },
20292
+ "required": [
20293
+ "id",
20294
+ "mode",
20295
+ "dateCreated",
20296
+ "data"
20297
+ ]
20298
+ },
20299
+ "NotarizationCreateRequest": {
20300
+ "type": "object",
20301
+ "properties": {
20302
+ "mode": {
20303
+ "$ref": "#/components/schemas/NotarizationMode"
20304
+ },
20305
+ "dateModified": {
20306
+ "type": "string",
20307
+ "description": "The date and time when the notarization was last modified, in ISO 8601 format."
20308
+ },
20309
+ "data": {
20310
+ "type": "array",
20311
+ "items": {
20312
+ "type": "number"
20313
+ },
20314
+ "description": "The notarization data as a byte array."
20315
+ },
20316
+ "immutableDescription": {
20317
+ "type": "string",
20318
+ "description": "An optional description of the notarization that cannot be changed after creation."
20319
+ },
20320
+ "description": {
20321
+ "type": "string",
20322
+ "description": "An optional description of the notarization that can be modified until the notarization is locked."
20323
+ },
20324
+ "deleteLockDateTime": {
20325
+ "type": "string",
20326
+ "description": "An optional lock date, in ISO 8601 format, that prevents deletion until the date is reached.\nUsed only in Locked Notarization, it prevents the object from being deleted until the lock expires."
20327
+ },
20328
+ "transferLockUntilDestroyed": {
20329
+ "type": "boolean",
20330
+ "description": "An optional flag indicating transfer lock is active until the notarization is destroyed.\nUsed only in Dynamic Notarization."
20331
+ },
20332
+ "transferLockDateTime": {
20333
+ "type": "string",
20334
+ "description": "An optional transfer lock date-time, in ISO 8601 format.\nUsed only in Dynamic Notarization."
20335
+ },
20336
+ "namespace": {
20337
+ "type": "string",
20338
+ "description": "The namespace of the connector to use for the notarization, defaults to component configured namespace."
20339
+ }
20340
+ },
20341
+ "required": [
20342
+ "mode",
20343
+ "data"
20344
+ ],
20345
+ "description": "The request data."
20346
+ },
20347
+ "NotarizationMode": {
20348
+ "description": "Supported notarization mode values.",
20349
+ "anyOf": [
20350
+ {
20351
+ "const": "dynamic",
20352
+ "description": "Dynamic notarization mode."
20353
+ },
20354
+ {
20355
+ "const": "locked",
20356
+ "description": "Locked notarization mode."
20357
+ }
20358
+ ]
20359
+ },
20360
+ "NotarizationTransferRequest": {
20361
+ "type": "object",
20362
+ "properties": {
20363
+ "recipientAddress": {
20364
+ "type": "string",
20365
+ "description": "The recipient address."
20366
+ }
20367
+ },
20368
+ "required": [
20369
+ "recipientAddress"
20370
+ ],
20371
+ "description": "The request data."
20372
+ },
19617
20373
  "PapCreateRequest": {
19618
20374
  "description": "The body of the request - the policy to create (id will be auto-generated if not provided).",
19619
20375
  "type": "object",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@twin.org/node",
3
- "version": "0.0.3-next.31",
3
+ "version": "0.0.3-next.32",
4
4
  "description": "TWIN Node serving APIs using the specified configuration",
5
5
  "repository": {
6
6
  "type": "git",
@@ -14,7 +14,7 @@
14
14
  "node": ">=20.0.0"
15
15
  },
16
16
  "dependencies": {
17
- "@twin.org/node-core": "0.0.3-next.31"
17
+ "@twin.org/node-core": "0.0.3-next.32"
18
18
  },
19
19
  "bugs": {
20
20
  "url": "git+https://github.com/twinfoundation/node/issues"