From 1b17e828ed6a1b468df9f19766d7ca03655ccaf8 Mon Sep 17 00:00:00 2001 From: danielporterda Date: Tue, 25 Aug 2026 18:22:41 -0400 Subject: [PATCH 1/4] Harden manual OpenAPI reference rendering Signed-off-by: danielporterda --- .../delete-v2idps:idp-id.mdx | 67 +++------ .../delete-v2users:user-id.mdx | 71 ++++------ .../json-api-reference/get-livez.mdx | 62 +++------ .../json-api-reference/get-readyz.mdx | 66 +++------ .../get-v2authenticated-user.mdx | 67 +++------ .../json-api-reference/get-v2idps.mdx | 62 +++------ .../json-api-reference/get-v2idps:idp-id.mdx | 71 ++++------ ...ve-submissionpreferred-package-version.mdx | 83 ++++-------- .../get-v2package-vetting.mdx | 62 +++------ .../json-api-reference/get-v2packages.mdx | 62 +++------ .../get-v2packages:package-id.mdx | 71 ++++------ .../get-v2packages:package-idstatus.mdx | 67 +++------ .../json-api-reference/get-v2parties.mdx | 72 ++++------ .../get-v2parties:party.mdx | 77 ++++------- .../get-v2partiesparticipant-id.mdx | 62 +++------ .../get-v2stateactive-contracts-page.mdx | 62 +++------ .../get-v2stateconnected-synchronizers.mdx | 77 ++++------- .../get-v2statelatest-pruned-offsets.mdx | 62 +++------ .../get-v2stateledger-end.mdx | 62 +++------ ...pdatestransaction-tree-by-id:update-id.mdx | 72 ++++------ ...datestransaction-tree-by-offset:offset.mdx | 69 ++++------ .../json-api-reference/get-v2users.mdx | 62 +++------ .../get-v2users:user-id.mdx | 72 ++++------ .../get-v2users:user-idrights.mdx | 67 +++------ .../json-api-reference/get-v2version.mdx | 66 +++------ .../patch-v2idps:idp-id.mdx | 75 ++++------ .../patch-v2parties:party.mdx | 75 ++++------ .../patch-v2users:user-id.mdx | 69 ++++------ ...ch-v2users:user-ididentity-provider-id.mdx | 71 ++++------ .../patch-v2users:user-idrights.mdx | 67 +++------ ...ost-v2commandsasyncsubmit-reassignment.mdx | 68 ++++------ .../post-v2commandsasyncsubmit.mdx | 68 ++++------ .../post-v2commandscommand-completions.mdx | 68 ++++------ .../post-v2commandscompletions.mdx | 68 ++++------ ...mmandssubmit-and-wait-for-reassignment.mdx | 64 +++------ ...dssubmit-and-wait-for-transaction-tree.mdx | 64 +++------ ...ommandssubmit-and-wait-for-transaction.mdx | 62 +++------ .../post-v2commandssubmit-and-wait.mdx | 64 +++------ .../post-v2contractscontract-by-id.mdx | 62 +++------ .../json-api-reference/post-v2dars.mdx | 74 ++++------ .../post-v2darsvalidate.mdx | 69 ++++------ .../post-v2eventsevents-by-contract-id.mdx | 70 ++++------ .../json-api-reference/post-v2idps.mdx | 68 ++++------ .../post-v2interactive-submissionexecute.mdx | 70 ++++------ ...v2interactive-submissionexecuteandwait.mdx | 66 ++++----- ...submissionexecuteandwaitfortransaction.mdx | 66 ++++----- ...teractive-submissionpreferred-packages.mdx | 64 +++------ .../post-v2interactive-submissionprepare.mdx | 64 +++------ .../post-v2package-vetting.mdx | 62 +++------ .../post-v2package-vettinglist.mdx | 62 +++------ .../post-v2package-vettingupdate.mdx | 62 +++------ .../json-api-reference/post-v2packages.mdx | 74 ++++------ .../json-api-reference/post-v2parties.mdx | 68 ++++------ .../post-v2partiesexternalallocate.mdx | 64 +++------ ...ost-v2partiesexternalgenerate-topology.mdx | 64 +++------ .../post-v2stateactive-contracts-page.mdx | 62 +++------ .../post-v2stateactive-contracts.mdx | 68 ++++------ .../json-api-reference/post-v2updates.mdx | 68 ++++------ .../post-v2updatesflats.mdx | 68 ++++------ .../post-v2updatesget-updates-page.mdx | 62 +++------ .../post-v2updatestransaction-by-id.mdx | 62 +++------ .../post-v2updatestransaction-by-offset.mdx | 62 +++------ .../post-v2updatestrees.mdx | 68 ++++------ .../post-v2updatesupdate-by-id.mdx | 66 +++------ .../post-v2updatesupdate-by-offset.mdx | 66 +++------ .../json-api-reference/post-v2users.mdx | 62 +++------ .../post-v2users:user-idrights.mdx | 67 +++------ docs-main/styles.css | 15 +- src/x2mdx/openapi/render.py | 122 ++++++++++++++--- src/x2mdx/templates/reference/operation.md.j2 | 3 + .../templates/shared/reference_macros.md.j2 | 29 +++- tests/test_openapi_manual_render.py | 128 +++++++++++++++++- 72 files changed, 1765 insertions(+), 3018 deletions(-) diff --git a/docs-main/reference/json-api-reference/delete-v2idps:idp-id.mdx b/docs-main/reference/json-api-reference/delete-v2idps:idp-id.mdx index af3042490..1ee29b07b 100644 --- a/docs-main/reference/json-api-reference/delete-v2idps:idp-id.mdx +++ b/docs-main/reference/json-api-reference/delete-v2idps:idp-id.mdx @@ -36,24 +36,26 @@ Delete an existing identity provider configuration. ## Protocol Details -
+ +
-
Operation ID
-
deleteV2IdpsIdp-id
+ Operation ID + deleteV2IdpsIdp-id
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -68,10 +70,7 @@ Delete an existing identity provider configuration. - - -- - + @@ -125,9 +124,7 @@ Does not (yet) contain any data. - -- - + @@ -151,63 +148,43 @@ Does not (yet) contain any data. - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/delete-v2users:user-id.mdx b/docs-main/reference/json-api-reference/delete-v2users:user-id.mdx index 6c2c6f114..d0fe8bb6f 100644 --- a/docs-main/reference/json-api-reference/delete-v2users:user-id.mdx +++ b/docs-main/reference/json-api-reference/delete-v2users:user-id.mdx @@ -36,24 +36,26 @@ Delete an existing user and all its rights. ## Protocol Details -
+ +
-
Operation ID
-
deleteV2UsersUser-id
+ Operation ID + deleteV2UsersUser-id
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -68,10 +70,7 @@ Delete an existing user and all its rights. - - -- - + @@ -99,9 +98,7 @@ Delete an existing user and all its rights. - -- - + @@ -125,9 +122,7 @@ Delete an existing user and all its rights. - -- - + @@ -151,63 +146,43 @@ Delete an existing user and all its rights. - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/get-livez.mdx b/docs-main/reference/json-api-reference/get-livez.mdx index 86a34b7ca..bfb3362e5 100644 --- a/docs-main/reference/json-api-reference/get-livez.mdx +++ b/docs-main/reference/json-api-reference/get-livez.mdx @@ -34,24 +34,26 @@ Checks if the service is alive ## Protocol Details -
+ +
-
Operation ID
-
getLivez
+ Operation ID + getLivez
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -84,9 +86,7 @@ Checks if the service is alive - -- - + @@ -110,63 +110,43 @@ Checks if the service is alive - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/get-readyz.mdx b/docs-main/reference/json-api-reference/get-readyz.mdx index c5751daa6..0f2b881b2 100644 --- a/docs-main/reference/json-api-reference/get-readyz.mdx +++ b/docs-main/reference/json-api-reference/get-readyz.mdx @@ -34,24 +34,26 @@ Checks if the service is ready to serve requests ## Protocol Details -
+ +
-
Operation ID
-
getReadyz
+ Operation ID + getReadyz
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -76,9 +78,7 @@ Checks if the service is ready to serve requests - -- - + @@ -102,9 +102,7 @@ Checks if the service is ready to serve requests - -- - + @@ -128,63 +126,43 @@ Checks if the service is ready to serve requests - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/get-v2authenticated-user.mdx b/docs-main/reference/json-api-reference/get-v2authenticated-user.mdx index 9cdd5d5c6..d6fefc1df 100644 --- a/docs-main/reference/json-api-reference/get-v2authenticated-user.mdx +++ b/docs-main/reference/json-api-reference/get-v2authenticated-user.mdx @@ -36,24 +36,26 @@ Get the user data of the current authenticated user. ## Protocol Details -
+ +
-
Operation ID
-
getV2Authenticated-user
+ Operation ID + getV2Authenticated-user
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -68,10 +70,7 @@ Get the user data of the current authenticated user. - - -- - + @@ -125,9 +124,7 @@ Users and rights ///////////////// Users are used to dynamically manage the righ - -- - + @@ -151,63 +148,43 @@ Users and rights ///////////////// Users are used to dynamically manage the righ - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/get-v2idps.mdx b/docs-main/reference/json-api-reference/get-v2idps.mdx index ade49cc3e..a2f9429b1 100644 --- a/docs-main/reference/json-api-reference/get-v2idps.mdx +++ b/docs-main/reference/json-api-reference/get-v2idps.mdx @@ -36,24 +36,26 @@ List all existing identity provider configurations. ## Protocol Details -
+ +
-
Operation ID
-
getV2Idps
+ Operation ID + getV2Idps
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -104,9 +106,7 @@ The list of identity provider configs Required: must be non-empty - -- - + @@ -130,63 +130,43 @@ The list of identity provider configs Required: must be non-empty - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/get-v2idps:idp-id.mdx b/docs-main/reference/json-api-reference/get-v2idps:idp-id.mdx index 777e366af..6b99e59c1 100644 --- a/docs-main/reference/json-api-reference/get-v2idps:idp-id.mdx +++ b/docs-main/reference/json-api-reference/get-v2idps:idp-id.mdx @@ -36,24 +36,26 @@ Get the identity provider configuration data by id. ## Protocol Details -
+ +
-
Operation ID
-
getV2IdpsIdp-id
+ Operation ID + getV2IdpsIdp-id
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -68,10 +70,7 @@ Get the identity provider configuration data by id. - - -- - + @@ -99,9 +98,7 @@ Get the identity provider configuration data by id. - -- - + @@ -125,9 +122,7 @@ Get the identity provider configuration data by id. - -- - + @@ -151,63 +146,43 @@ Get the identity provider configuration data by id. - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/get-v2interactive-submissionpreferred-package-version.mdx b/docs-main/reference/json-api-reference/get-v2interactive-submissionpreferred-package-version.mdx index 5c6c018a5..e3d50228f 100644 --- a/docs-main/reference/json-api-reference/get-v2interactive-submissionpreferred-package-version.mdx +++ b/docs-main/reference/json-api-reference/get-v2interactive-submissionpreferred-package-version.mdx @@ -36,24 +36,26 @@ Get the preferred package version for constructing a command submission. This en ## Protocol Details -
+ +
-
Operation ID
-
getV2Interactive-submissionPreferred-package-version
+ Operation ID + getV2Interactive-submissionPreferred-package-version
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -68,17 +70,11 @@ Get the preferred package version for constructing a command submission. This en - - -- - - + - -- - + @@ -86,15 +82,12 @@ Get the preferred package version for constructing a command submission. This en OpenAPI type: `string (date-time)`. -- - + - -- - + @@ -122,9 +115,7 @@ OpenAPI type: `string (date-time)`. - -- - + @@ -148,9 +139,7 @@ OpenAPI type: `string (date-time)`. - -- - + @@ -174,63 +163,43 @@ OpenAPI type: `string (date-time)`. - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/get-v2package-vetting.mdx b/docs-main/reference/json-api-reference/get-v2package-vetting.mdx index 313f2ff46..c9d01d3eb 100644 --- a/docs-main/reference/json-api-reference/get-v2package-vetting.mdx +++ b/docs-main/reference/json-api-reference/get-v2package-vetting.mdx @@ -36,24 +36,26 @@ Lists which participant node vetted what packages on which synchronizer. This en ## Protocol Details -
+ +
-
Operation ID
-
getV2Package-vetting
+ Operation ID + getV2Package-vetting
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -164,9 +166,7 @@ Pagination token to retrieve the next page. Empty string if there are no further - -- - + @@ -190,63 +190,43 @@ Pagination token to retrieve the next page. Empty string if there are no further - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/get-v2packages.mdx b/docs-main/reference/json-api-reference/get-v2packages.mdx index 6e9e201c0..8bffef001 100644 --- a/docs-main/reference/json-api-reference/get-v2packages.mdx +++ b/docs-main/reference/json-api-reference/get-v2packages.mdx @@ -36,24 +36,26 @@ Returns the identifiers of all supported packages. ## Protocol Details -
+ +
-
Operation ID
-
getV2Packages
+ Operation ID + getV2Packages
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -104,9 +106,7 @@ The IDs of all Daml-LF packages supported by the server. Each element must be a - -- - + @@ -130,63 +130,43 @@ The IDs of all Daml-LF packages supported by the server. Each element must be a - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/get-v2packages:package-id.mdx b/docs-main/reference/json-api-reference/get-v2packages:package-id.mdx index 97ffa9ce4..8c02b7d7c 100644 --- a/docs-main/reference/json-api-reference/get-v2packages:package-id.mdx +++ b/docs-main/reference/json-api-reference/get-v2packages:package-id.mdx @@ -36,24 +36,26 @@ Returns the contents of a single package. ## Protocol Details -
+ +
-
Operation ID
-
getV2PackagesPackage-id
+ Operation ID + getV2PackagesPackage-id
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -68,10 +70,7 @@ Returns the contents of a single package. - - -- - + @@ -99,9 +98,7 @@ Returns the contents of a single package. - -- - + @@ -125,9 +122,7 @@ Returns the contents of a single package. - -- - + @@ -151,63 +146,43 @@ Returns the contents of a single package. - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/get-v2packages:package-idstatus.mdx b/docs-main/reference/json-api-reference/get-v2packages:package-idstatus.mdx index b2de72476..4b187d10c 100644 --- a/docs-main/reference/json-api-reference/get-v2packages:package-idstatus.mdx +++ b/docs-main/reference/json-api-reference/get-v2packages:package-idstatus.mdx @@ -36,24 +36,26 @@ Returns the status of a single package. ## Protocol Details -
+ +
-
Operation ID
-
getV2PackagesPackage-idStatus
+ Operation ID + getV2PackagesPackage-idStatus
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -68,10 +70,7 @@ Returns the status of a single package. - - -- - + @@ -125,9 +124,7 @@ The status of the package. Required - -- - + @@ -151,63 +148,43 @@ The status of the package. Required - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/get-v2parties.mdx b/docs-main/reference/json-api-reference/get-v2parties.mdx index 385363b70..86e5b2e86 100644 --- a/docs-main/reference/json-api-reference/get-v2parties.mdx +++ b/docs-main/reference/json-api-reference/get-v2parties.mdx @@ -36,24 +36,26 @@ List the parties known by the participant. The list returned contains parties wh ## Protocol Details -
+ +
-
Operation ID
-
getV2Parties
+ Operation ID + getV2Parties
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -68,17 +70,11 @@ List the parties known by the participant. The list returned contains parties wh - + -- - - - - -- - + @@ -154,9 +150,7 @@ Pagination token to retrieve the next page. Empty, if there are no further resul - -- - + @@ -180,63 +174,43 @@ Pagination token to retrieve the next page. Empty, if there are no further resul - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/get-v2parties:party.mdx b/docs-main/reference/json-api-reference/get-v2parties:party.mdx index 4deabb103..9b1cbd547 100644 --- a/docs-main/reference/json-api-reference/get-v2parties:party.mdx +++ b/docs-main/reference/json-api-reference/get-v2parties:party.mdx @@ -36,24 +36,26 @@ Get the party details of the given parties. Only known parties will be returned ## Protocol Details -
+ +
-
Operation ID
-
getV2PartiesParty
+ Operation ID + getV2PartiesParty
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -68,10 +70,7 @@ Get the party details of the given parties. Only known parties will be returned - - -- - + @@ -89,17 +88,11 @@ Get the party details of the given parties. Only known parties will be returned - - -- - + - - -- - + @@ -153,9 +146,7 @@ The details of the requested Daml parties by the participant, if known. The part - -- - + @@ -179,63 +170,43 @@ The details of the requested Daml parties by the participant, if known. The part - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/get-v2partiesparticipant-id.mdx b/docs-main/reference/json-api-reference/get-v2partiesparticipant-id.mdx index b964ae222..a5b9c1a45 100644 --- a/docs-main/reference/json-api-reference/get-v2partiesparticipant-id.mdx +++ b/docs-main/reference/json-api-reference/get-v2partiesparticipant-id.mdx @@ -36,24 +36,26 @@ Return the identifier of the participant. All horizontally scaled replicas shoul ## Protocol Details -
+ +
-
Operation ID
-
getV2PartiesParticipant-id
+ Operation ID + getV2PartiesParticipant-id
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -104,9 +106,7 @@ Identifier of the participant, which SHOULD be globally unique. Must be a valid - -- - + @@ -130,63 +130,43 @@ Identifier of the participant, which SHOULD be globally unique. Must be a valid - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/get-v2stateactive-contracts-page.mdx b/docs-main/reference/json-api-reference/get-v2stateactive-contracts-page.mdx index d4e2ad235..c8780f477 100644 --- a/docs-main/reference/json-api-reference/get-v2stateactive-contracts-page.mdx +++ b/docs-main/reference/json-api-reference/get-v2stateactive-contracts-page.mdx @@ -34,24 +34,26 @@ Deprecated Use POST version of this endpoint ## Protocol Details -
+ +
-
Operation ID
-
getV2StateActive-contracts-page
+ Operation ID + getV2StateActive-contracts-page
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -168,9 +170,7 @@ If not present this is the last page. If present, this token must be used to get - -- - + @@ -194,63 +194,43 @@ If not present this is the last page. If present, this token must be used to get - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/get-v2stateconnected-synchronizers.mdx b/docs-main/reference/json-api-reference/get-v2stateconnected-synchronizers.mdx index 571ce6f1a..fc6ea4e1d 100644 --- a/docs-main/reference/json-api-reference/get-v2stateconnected-synchronizers.mdx +++ b/docs-main/reference/json-api-reference/get-v2stateconnected-synchronizers.mdx @@ -36,24 +36,26 @@ Get the list of connected synchronizers at the time of the query. ## Protocol Details -
+ +
-
Operation ID
-
getV2StateConnected-synchronizers
+ Operation ID + getV2StateConnected-synchronizers
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -68,24 +70,15 @@ Get the list of connected synchronizers at the time of the query. - - -- - - + - -- - + - - -- - + @@ -139,9 +132,7 @@ Optional: can be empty - -- - + @@ -165,63 +156,43 @@ Optional: can be empty - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/get-v2statelatest-pruned-offsets.mdx b/docs-main/reference/json-api-reference/get-v2statelatest-pruned-offsets.mdx index 176b7dea9..5cf58b04e 100644 --- a/docs-main/reference/json-api-reference/get-v2statelatest-pruned-offsets.mdx +++ b/docs-main/reference/json-api-reference/get-v2statelatest-pruned-offsets.mdx @@ -36,24 +36,26 @@ Get the latest successfully pruned ledger offsets ## Protocol Details -
+ +
-
Operation ID
-
getV2StateLatest-pruned-offsets
+ Operation ID + getV2StateLatest-pruned-offsets
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -110,9 +112,7 @@ It will always be a non-negative integer. If positive, the absolute offset up to - -- - + @@ -136,63 +136,43 @@ It will always be a non-negative integer. If positive, the absolute offset up to - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/get-v2stateledger-end.mdx b/docs-main/reference/json-api-reference/get-v2stateledger-end.mdx index ec4053602..191a0b1f7 100644 --- a/docs-main/reference/json-api-reference/get-v2stateledger-end.mdx +++ b/docs-main/reference/json-api-reference/get-v2stateledger-end.mdx @@ -36,24 +36,26 @@ Get the current ledger end. Subscriptions started with the returned offset will ## Protocol Details -
+ +
-
Operation ID
-
getV2StateLedger-end
+ Operation ID + getV2StateLedger-end
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -104,9 +106,7 @@ It will always be a non-negative integer. If zero, the participant view of the l - -- - + @@ -130,63 +130,43 @@ It will always be a non-negative integer. If zero, the participant view of the l - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/get-v2updatestransaction-tree-by-id:update-id.mdx b/docs-main/reference/json-api-reference/get-v2updatestransaction-tree-by-id:update-id.mdx index 890057d9f..2a5355d90 100644 --- a/docs-main/reference/json-api-reference/get-v2updatestransaction-tree-by-id:update-id.mdx +++ b/docs-main/reference/json-api-reference/get-v2updatestransaction-tree-by-id:update-id.mdx @@ -38,24 +38,26 @@ Get transaction tree by id. Provided for backwards compatibility, it will be rem ## Protocol Details -
+ +
-
Operation ID
-
getV2UpdatesTransaction-tree-by-idUpdate-id
+ Operation ID + getV2UpdatesTransaction-tree-by-idUpdate-id
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -70,10 +72,7 @@ Get transaction tree by id. Provided for backwards compatibility, it will be rem - - -- - + @@ -91,10 +90,7 @@ Get transaction tree by id. Provided for backwards compatibility, it will be rem - - -- - + @@ -148,9 +144,7 @@ Provided for backwards compatibility, it will be removed in the Canton version 3 - -- - + @@ -174,63 +168,43 @@ Provided for backwards compatibility, it will be removed in the Canton version 3 - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/get-v2updatestransaction-tree-by-offset:offset.mdx b/docs-main/reference/json-api-reference/get-v2updatestransaction-tree-by-offset:offset.mdx index 85eb4be31..35140b03c 100644 --- a/docs-main/reference/json-api-reference/get-v2updatestransaction-tree-by-offset:offset.mdx +++ b/docs-main/reference/json-api-reference/get-v2updatestransaction-tree-by-offset:offset.mdx @@ -38,24 +38,26 @@ Get transaction tree by offset. Provided for backwards compatibility, it will be ## Protocol Details -
+ +
-
Operation ID
-
getV2UpdatesTransaction-tree-by-offsetOffset
+ Operation ID + getV2UpdatesTransaction-tree-by-offsetOffset
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -74,7 +76,7 @@ Get transaction tree by offset. Provided for backwards compatibility, it will be OpenAPI type: `integer (int64)`. -- +
@@ -93,10 +95,7 @@ OpenAPI type: `integer (int64)`. - - -- - + @@ -150,9 +149,7 @@ Provided for backwards compatibility, it will be removed in the Canton version 3 - -- - + @@ -176,63 +173,43 @@ Provided for backwards compatibility, it will be removed in the Canton version 3 - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/get-v2users.mdx b/docs-main/reference/json-api-reference/get-v2users.mdx index 2d82c1735..3eb50fafb 100644 --- a/docs-main/reference/json-api-reference/get-v2users.mdx +++ b/docs-main/reference/json-api-reference/get-v2users.mdx @@ -36,24 +36,26 @@ List all existing users. ## Protocol Details -
+ +
-
Operation ID
-
getV2Users
+ Operation ID + getV2Users
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -140,9 +142,7 @@ Pagination token to retrieve the next page. Empty, if there are no further resul - -- - + @@ -166,63 +166,43 @@ Pagination token to retrieve the next page. Empty, if there are no further resul - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/get-v2users:user-id.mdx b/docs-main/reference/json-api-reference/get-v2users:user-id.mdx index 1895bafdc..e770abc25 100644 --- a/docs-main/reference/json-api-reference/get-v2users:user-id.mdx +++ b/docs-main/reference/json-api-reference/get-v2users:user-id.mdx @@ -36,24 +36,26 @@ Get the user data of a specific user or the authenticated user. ## Protocol Details -
+ +
-
Operation ID
-
getV2UsersUser-id
+ Operation ID + getV2UsersUser-id
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -68,10 +70,7 @@ Get the user data of a specific user or the authenticated user. - - -- - + @@ -89,10 +88,7 @@ Get the user data of a specific user or the authenticated user. - - -- - + @@ -146,9 +142,7 @@ Users and rights ///////////////// Users are used to dynamically manage the righ - -- - + @@ -172,63 +166,43 @@ Users and rights ///////////////// Users are used to dynamically manage the righ - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/get-v2users:user-idrights.mdx b/docs-main/reference/json-api-reference/get-v2users:user-idrights.mdx index 81ed9ec9e..df2b3d83e 100644 --- a/docs-main/reference/json-api-reference/get-v2users:user-idrights.mdx +++ b/docs-main/reference/json-api-reference/get-v2users:user-idrights.mdx @@ -36,24 +36,26 @@ List the set of all rights granted to a user. ## Protocol Details -
+ +
-
Operation ID
-
getV2UsersUser-idRights
+ Operation ID + getV2UsersUser-idRights
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -68,10 +70,7 @@ List the set of all rights granted to a user. - - -- - + @@ -125,9 +124,7 @@ All rights of the user. Optional: can be empty - -- - + @@ -151,63 +148,43 @@ All rights of the user. Optional: can be empty - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/get-v2version.mdx b/docs-main/reference/json-api-reference/get-v2version.mdx index 9a117e9ad..340412fc7 100644 --- a/docs-main/reference/json-api-reference/get-v2version.mdx +++ b/docs-main/reference/json-api-reference/get-v2version.mdx @@ -36,24 +36,26 @@ Read the Ledger API version ## Protocol Details -
+ +
-
Operation ID
-
getV2Version
+ Operation ID + getV2Version
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -84,9 +86,7 @@ The version of the ledger API. Required - -- - + @@ -110,9 +110,7 @@ The version of the ledger API. Required - -- - + @@ -136,63 +134,43 @@ The version of the ledger API. Required - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/patch-v2idps:idp-id.mdx b/docs-main/reference/json-api-reference/patch-v2idps:idp-id.mdx index 3aa82be5e..5970b00e9 100644 --- a/docs-main/reference/json-api-reference/patch-v2idps:idp-id.mdx +++ b/docs-main/reference/json-api-reference/patch-v2idps:idp-id.mdx @@ -36,24 +36,26 @@ Update selected modifiable attribute of an identity provider config resource des ## Protocol Details -
+ +
-
Operation ID
-
patchV2IdpsIdp-id
+ Operation ID + patchV2IdpsIdp-id
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -68,10 +70,7 @@ Update selected modifiable attribute of an identity provider config resource des - - -- - + @@ -99,7 +98,7 @@ Update selected modifiable attribute of an identity provider config resource des OpenAPI type: `IdentityProviderConfig`. -- + @@ -108,7 +107,7 @@ OpenAPI type: `IdentityProviderConfig`. OpenAPI type: `FieldMask`. -- +
@@ -137,9 +136,7 @@ OpenAPI type: `FieldMask`. - -- - + @@ -163,9 +160,7 @@ OpenAPI type: `FieldMask`. - -- - + @@ -189,63 +184,43 @@ OpenAPI type: `FieldMask`. - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/patch-v2parties:party.mdx b/docs-main/reference/json-api-reference/patch-v2parties:party.mdx index 0c37ced1a..81c07094a 100644 --- a/docs-main/reference/json-api-reference/patch-v2parties:party.mdx +++ b/docs-main/reference/json-api-reference/patch-v2parties:party.mdx @@ -36,24 +36,26 @@ Update selected modifiable participant-local attributes of a party details resou ## Protocol Details -
+ +
-
Operation ID
-
patchV2PartiesParty
+ Operation ID + patchV2PartiesParty
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -68,10 +70,7 @@ Update selected modifiable participant-local attributes of a party details resou - - -- - + @@ -99,7 +98,7 @@ Update selected modifiable participant-local attributes of a party details resou OpenAPI type: `PartyDetails`. -- + @@ -108,7 +107,7 @@ OpenAPI type: `PartyDetails`. OpenAPI type: `FieldMask`. -- +
@@ -137,9 +136,7 @@ OpenAPI type: `FieldMask`. - -- - + @@ -163,9 +160,7 @@ OpenAPI type: `FieldMask`. - -- - + @@ -189,63 +184,43 @@ OpenAPI type: `FieldMask`. - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/patch-v2users:user-id.mdx b/docs-main/reference/json-api-reference/patch-v2users:user-id.mdx index b27e80a96..1c3223e47 100644 --- a/docs-main/reference/json-api-reference/patch-v2users:user-id.mdx +++ b/docs-main/reference/json-api-reference/patch-v2users:user-id.mdx @@ -36,24 +36,26 @@ Update selected modifiable attribute of a user resource described by the ``User` ## Protocol Details -
+ +
-
Operation ID
-
patchV2UsersUser-id
+ Operation ID + patchV2UsersUser-id
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -68,10 +70,7 @@ Update selected modifiable attribute of a user resource described by the ``User` - - -- - + @@ -108,7 +107,7 @@ Users and rights ///////////////// Users are used to dynamically manage the righ OpenAPI type: `FieldMask`. -- + @@ -163,9 +162,7 @@ Users and rights ///////////////// Users are used to dynamically manage the righ - -- - + @@ -189,63 +186,43 @@ Users and rights ///////////////// Users are used to dynamically manage the righ - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/patch-v2users:user-ididentity-provider-id.mdx b/docs-main/reference/json-api-reference/patch-v2users:user-ididentity-provider-id.mdx index 223919000..929af2a0a 100644 --- a/docs-main/reference/json-api-reference/patch-v2users:user-ididentity-provider-id.mdx +++ b/docs-main/reference/json-api-reference/patch-v2users:user-ididentity-provider-id.mdx @@ -36,24 +36,26 @@ Update the assignment of a user from one IDP to another. ## Protocol Details -
+ +
-
Operation ID
-
patchV2UsersUser-idIdentity-provider-id
+ Operation ID + patchV2UsersUser-idIdentity-provider-id
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -68,10 +70,7 @@ Update the assignment of a user from one IDP to another. - - -- - + @@ -140,9 +139,7 @@ Target identity provider ID of the user If omitted, the default IDP is assumed O - -- - + @@ -166,9 +163,7 @@ Target identity provider ID of the user If omitted, the default IDP is assumed O - -- - + @@ -192,63 +187,43 @@ Target identity provider ID of the user If omitted, the default IDP is assumed O - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/patch-v2users:user-idrights.mdx b/docs-main/reference/json-api-reference/patch-v2users:user-idrights.mdx index 72e964e4e..51f7df75f 100644 --- a/docs-main/reference/json-api-reference/patch-v2users:user-idrights.mdx +++ b/docs-main/reference/json-api-reference/patch-v2users:user-idrights.mdx @@ -36,24 +36,26 @@ Revoke rights from a user. Revoking rights does not affect the resource version ## Protocol Details -
+ +
-
Operation ID
-
patchV2UsersUser-idRights
+ Operation ID + patchV2UsersUser-idRights
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -68,10 +70,7 @@ Revoke rights from a user. Revoking rights does not affect the resource version - - -- - + @@ -168,9 +167,7 @@ The rights that were actually revoked by the request. Optional: can be empty - -- - + @@ -194,63 +191,43 @@ The rights that were actually revoked by the request. Optional: can be empty - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/post-v2commandsasyncsubmit-reassignment.mdx b/docs-main/reference/json-api-reference/post-v2commandsasyncsubmit-reassignment.mdx index fcb958e55..15f09162d 100644 --- a/docs-main/reference/json-api-reference/post-v2commandsasyncsubmit-reassignment.mdx +++ b/docs-main/reference/json-api-reference/post-v2commandsasyncsubmit-reassignment.mdx @@ -36,24 +36,26 @@ Submit a single reassignment. ## Protocol Details -
+ +
-
Operation ID
-
postV2CommandsAsyncSubmit-reassignment
+ Operation ID + postV2CommandsAsyncSubmit-reassignment
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -78,7 +80,7 @@ Submit a single reassignment. OpenAPI type: `ReassignmentCommands`. -- +
@@ -107,9 +109,7 @@ OpenAPI type: `ReassignmentCommands`. - -- - + @@ -133,9 +133,7 @@ OpenAPI type: `ReassignmentCommands`. - -- - + @@ -159,63 +157,43 @@ OpenAPI type: `ReassignmentCommands`. - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/post-v2commandsasyncsubmit.mdx b/docs-main/reference/json-api-reference/post-v2commandsasyncsubmit.mdx index 0890336c6..b31db2d54 100644 --- a/docs-main/reference/json-api-reference/post-v2commandsasyncsubmit.mdx +++ b/docs-main/reference/json-api-reference/post-v2commandsasyncsubmit.mdx @@ -36,24 +36,26 @@ Submit a single composite command. ## Protocol Details -
+ +
-
Operation ID
-
postV2CommandsAsyncSubmit
+ Operation ID + postV2CommandsAsyncSubmit
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -138,7 +140,7 @@ Lower bound for the ledger time assigned to the resulting transaction. Note: The OpenAPI type: `Duration`. -- +
@@ -215,9 +217,7 @@ The maximum number of passes for the Topology-Aware Package Selection (TAPS). Hi - -- - + @@ -241,9 +241,7 @@ The maximum number of passes for the Topology-Aware Package Selection (TAPS). Hi - -- - + @@ -267,63 +265,43 @@ The maximum number of passes for the Topology-Aware Package Selection (TAPS). Hi - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/post-v2commandscommand-completions.mdx b/docs-main/reference/json-api-reference/post-v2commandscommand-completions.mdx index de8ddd444..e82636dff 100644 --- a/docs-main/reference/json-api-reference/post-v2commandscommand-completions.mdx +++ b/docs-main/reference/json-api-reference/post-v2commandscommand-completions.mdx @@ -29,29 +29,31 @@ playground: "interactive" -Query completions list (blocking call) Subscribe to command completion events. This streaming endpoint provides more flexibility in filtering than the predecessor ``CompletionStream``. Notice: This endpoint should be used for small results set. When number of results exceeded node configuration limit (`http-list-max-elements-limit`) there will be an error (`413 Content Too Large`) returned. Increasing this limit may lead to performance issues and high m... +Query completions list (blocking call) Subscribe to command completion events. This streaming endpoint provides more flexibility in filtering than the predecessor ``CompletionStream``. Notice: This endpoint should be used for small results set. When number of results exceeded node configuration limit (`http-list-max-elements-limit`) there will be an error (`413 Content Too Large`) returned. ## Protocol Details -
+ +
-
Operation ID
-
postV2CommandsCommand-completions
+ Operation ID + postV2CommandsCommand-completions
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -144,9 +146,7 @@ This optional field indicates the minimum offset for completions. This can be us - -- - + @@ -170,9 +170,7 @@ This optional field indicates the minimum offset for completions. This can be us - -- - + @@ -196,63 +194,43 @@ This optional field indicates the minimum offset for completions. This can be us - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/post-v2commandscompletions.mdx b/docs-main/reference/json-api-reference/post-v2commandscompletions.mdx index 1dcf1686a..9fba3b26e 100644 --- a/docs-main/reference/json-api-reference/post-v2commandscompletions.mdx +++ b/docs-main/reference/json-api-reference/post-v2commandscompletions.mdx @@ -31,29 +31,31 @@ playground: "interactive" -Query completions list (blocking call) Deprecated: please use ``GetCompletions`` instead. Subscribe to command completion events. Notice: This endpoint should be used for small results set. When number of results exceeded node configuration limit (`http-list-max-elements-limit`) there will be an error (`413 Content Too Large`) returned. Increasing this limit may lead to performance issues and high memory consumption. Consider using websockets (asyncapi)... +Query completions list (blocking call) Deprecated: please use ``GetCompletions`` instead. Subscribe to command completion events. Notice: This endpoint should be used for small results set. When number of results exceeded node configuration limit (`http-list-max-elements-limit`) there will be an error (`413 Content Too Large`) returned. Increasing this limit may lead to performance issues and high memory consumption. ## Protocol Details -
+ +
-
Operation ID
-
postV2CommandsCompletions
+ Operation ID + postV2CommandsCompletions
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -153,9 +155,7 @@ This optional field indicates the minimum offset for completions. This can be us - -- - + @@ -179,9 +179,7 @@ This optional field indicates the minimum offset for completions. This can be us - -- - + @@ -205,63 +203,43 @@ This optional field indicates the minimum offset for completions. This can be us - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/post-v2commandssubmit-and-wait-for-reassignment.mdx b/docs-main/reference/json-api-reference/post-v2commandssubmit-and-wait-for-reassignment.mdx index 1539bc500..08d7ea889 100644 --- a/docs-main/reference/json-api-reference/post-v2commandssubmit-and-wait-for-reassignment.mdx +++ b/docs-main/reference/json-api-reference/post-v2commandssubmit-and-wait-for-reassignment.mdx @@ -36,24 +36,26 @@ Submits a single composite reassignment command, waits for its result, and retur ## Protocol Details -
+ +
-
Operation ID
-
postV2CommandsSubmit-and-wait-for-reassignment
+ Operation ID + postV2CommandsSubmit-and-wait-for-reassignment
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -78,7 +80,7 @@ Submits a single composite reassignment command, waits for its result, and retur OpenAPI type: `ReassignmentCommands`. -- +
@@ -142,9 +144,7 @@ Complete view of an on-ledger reassignment. - -- - + @@ -168,63 +168,43 @@ Complete view of an on-ledger reassignment. - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/post-v2commandssubmit-and-wait-for-transaction-tree.mdx b/docs-main/reference/json-api-reference/post-v2commandssubmit-and-wait-for-transaction-tree.mdx index 50c0eda3f..8d02d8f32 100644 --- a/docs-main/reference/json-api-reference/post-v2commandssubmit-and-wait-for-transaction-tree.mdx +++ b/docs-main/reference/json-api-reference/post-v2commandssubmit-and-wait-for-transaction-tree.mdx @@ -38,24 +38,26 @@ Submit a batch of commands and wait for the transaction trees response. Provided ## Protocol Details -
+ +
-
Operation ID
-
postV2CommandsSubmit-and-wait-for-transaction-tree
+ Operation ID + postV2CommandsSubmit-and-wait-for-transaction-tree
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -140,7 +142,7 @@ Lower bound for the ledger time assigned to the resulting transaction. Note: The OpenAPI type: `Duration`. -- +
@@ -243,9 +245,7 @@ Provided for backwards compatibility, it will be removed in the Canton version 3 - -- - + @@ -269,63 +269,43 @@ Provided for backwards compatibility, it will be removed in the Canton version 3 - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/post-v2commandssubmit-and-wait-for-transaction.mdx b/docs-main/reference/json-api-reference/post-v2commandssubmit-and-wait-for-transaction.mdx index a9b89ebf4..78714caca 100644 --- a/docs-main/reference/json-api-reference/post-v2commandssubmit-and-wait-for-transaction.mdx +++ b/docs-main/reference/json-api-reference/post-v2commandssubmit-and-wait-for-transaction.mdx @@ -36,24 +36,26 @@ Submits a single composite command, waits for its result, and returns the transa ## Protocol Details -
+ +
-
Operation ID
-
postV2CommandsSubmit-and-wait-for-transaction
+ Operation ID + postV2CommandsSubmit-and-wait-for-transaction
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -142,9 +144,7 @@ Filtered view of an on-ledger transaction's create and archive events. - -- - + @@ -168,63 +168,43 @@ Filtered view of an on-ledger transaction's create and archive events. - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/post-v2commandssubmit-and-wait.mdx b/docs-main/reference/json-api-reference/post-v2commandssubmit-and-wait.mdx index 9aed6b021..1d7218ed5 100644 --- a/docs-main/reference/json-api-reference/post-v2commandssubmit-and-wait.mdx +++ b/docs-main/reference/json-api-reference/post-v2commandssubmit-and-wait.mdx @@ -36,24 +36,26 @@ Submits a single composite command and waits for its result. Propagates the gRPC ## Protocol Details -
+ +
-
Operation ID
-
postV2CommandsSubmit-and-wait
+ Operation ID + postV2CommandsSubmit-and-wait
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -138,7 +140,7 @@ Lower bound for the ledger time assigned to the resulting transaction. Note: The OpenAPI type: `Duration`. -- +
@@ -247,9 +249,7 @@ The details of the offset field are described in ``community/ledger-api/README.m - -- - + @@ -273,63 +273,43 @@ The details of the offset field are described in ``community/ledger-api/README.m - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/post-v2contractscontract-by-id.mdx b/docs-main/reference/json-api-reference/post-v2contractscontract-by-id.mdx index b5aa22e8a..cffe1fbda 100644 --- a/docs-main/reference/json-api-reference/post-v2contractscontract-by-id.mdx +++ b/docs-main/reference/json-api-reference/post-v2contractscontract-by-id.mdx @@ -36,24 +36,26 @@ Looking up contract data by contract ID. This endpoint is experimental / alpha, ## Protocol Details -
+ +
-
Operation ID
-
postV2ContractsContract-by-id
+ Operation ID + postV2ContractsContract-by-id
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -138,9 +140,7 @@ Records that a contract has been created, and choices may now be exercised on it - -- - + @@ -164,63 +164,43 @@ Records that a contract has been created, and choices may now be exercised on it - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/post-v2dars.mdx b/docs-main/reference/json-api-reference/post-v2dars.mdx index 14024abd5..ab3be3b4d 100644 --- a/docs-main/reference/json-api-reference/post-v2dars.mdx +++ b/docs-main/reference/json-api-reference/post-v2dars.mdx @@ -36,24 +36,26 @@ Upload a DAR to the participant node ## Protocol Details -
+ +
-
Operation ID
-
postV2Dars
+ Operation ID + postV2Dars
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -68,17 +70,11 @@ Upload a DAR to the participant node - - -- - - + - -- - + @@ -106,7 +102,7 @@ Upload a DAR to the participant node OpenAPI type: `string (binary)`. -- + @@ -161,9 +157,7 @@ A message that is received when the upload operation succeeded. - -- - + @@ -187,63 +181,43 @@ A message that is received when the upload operation succeeded. - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/post-v2darsvalidate.mdx b/docs-main/reference/json-api-reference/post-v2darsvalidate.mdx index cc7248044..de02a2af6 100644 --- a/docs-main/reference/json-api-reference/post-v2darsvalidate.mdx +++ b/docs-main/reference/json-api-reference/post-v2darsvalidate.mdx @@ -36,24 +36,26 @@ Validates the DAR and checks the upgrade compatibility of the DAR's packages wit ## Protocol Details -
+ +
-
Operation ID
-
postV2DarsValidate
+ Operation ID + postV2DarsValidate
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -68,10 +70,7 @@ Validates the DAR and checks the upgrade compatibility of the DAR's packages wit - - -- - + @@ -99,7 +98,7 @@ Validates the DAR and checks the upgrade compatibility of the DAR's packages wit OpenAPI type: `string (binary)`. -- + @@ -136,9 +135,7 @@ OpenAPI type: `string (binary)`. - -- - + @@ -162,63 +159,43 @@ OpenAPI type: `string (binary)`. - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/post-v2eventsevents-by-contract-id.mdx b/docs-main/reference/json-api-reference/post-v2eventsevents-by-contract-id.mdx index b2d852ae5..6b9cef995 100644 --- a/docs-main/reference/json-api-reference/post-v2eventsevents-by-contract-id.mdx +++ b/docs-main/reference/json-api-reference/post-v2eventsevents-by-contract-id.mdx @@ -36,24 +36,26 @@ Get the create and the consuming exercise event for the contract with the provid ## Protocol Details -
+ +
-
Operation ID
-
postV2EventsEvents-by-contract-id
+ Operation ID + postV2EventsEvents-by-contract-id
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -114,15 +116,11 @@ A format for events which defines both which events should be included and what - -- - + - -- - + @@ -146,9 +144,7 @@ A format for events which defines both which events should be included and what - -- - + @@ -172,63 +168,43 @@ A format for events which defines both which events should be included and what - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/post-v2idps.mdx b/docs-main/reference/json-api-reference/post-v2idps.mdx index 75ac6083e..fe8ce2637 100644 --- a/docs-main/reference/json-api-reference/post-v2idps.mdx +++ b/docs-main/reference/json-api-reference/post-v2idps.mdx @@ -36,24 +36,26 @@ Create a new identity provider configuration. The request will fail if the maxim ## Protocol Details -
+ +
-
Operation ID
-
postV2Idps
+ Operation ID + postV2Idps
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -78,7 +80,7 @@ Create a new identity provider configuration. The request will fail if the maxim OpenAPI type: `IdentityProviderConfig`. -- +
@@ -107,9 +109,7 @@ OpenAPI type: `IdentityProviderConfig`. - -- - + @@ -133,9 +133,7 @@ OpenAPI type: `IdentityProviderConfig`. - -- - + @@ -159,63 +157,43 @@ OpenAPI type: `IdentityProviderConfig`. - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/post-v2interactive-submissionexecute.mdx b/docs-main/reference/json-api-reference/post-v2interactive-submissionexecute.mdx index a0c540554..de2c27c6a 100644 --- a/docs-main/reference/json-api-reference/post-v2interactive-submissionexecute.mdx +++ b/docs-main/reference/json-api-reference/post-v2interactive-submissionexecute.mdx @@ -36,24 +36,26 @@ Execute a prepared submission _asynchronously_ on the ledger. Requires `actAs` o ## Protocol Details -
+ +
-
Operation ID
-
postV2Interactive-submissionExecute
+ Operation ID + postV2Interactive-submissionExecute
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -94,7 +96,7 @@ Additional signatures provided by the submitting parties OpenAPI type: `DeduplicationPeriod2`. -- +
@@ -124,7 +126,7 @@ The hashing scheme version used when building the hash Required OpenAPI type: `MinLedgerTime`. -- +
@@ -153,9 +155,7 @@ OpenAPI type: `MinLedgerTime`. - -- - + @@ -179,9 +179,7 @@ OpenAPI type: `MinLedgerTime`. - -- - + @@ -205,63 +203,43 @@ OpenAPI type: `MinLedgerTime`. - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/post-v2interactive-submissionexecuteandwait.mdx b/docs-main/reference/json-api-reference/post-v2interactive-submissionexecuteandwait.mdx index 705c912e8..5fb856a80 100644 --- a/docs-main/reference/json-api-reference/post-v2interactive-submissionexecuteandwait.mdx +++ b/docs-main/reference/json-api-reference/post-v2interactive-submissionexecuteandwait.mdx @@ -36,24 +36,26 @@ Similar to ExecuteSubmission but _synchronously_ wait for the completion of the ## Protocol Details -
+ +
-
Operation ID
-
postV2Interactive-submissionExecuteandwait
+ Operation ID + postV2Interactive-submissionExecuteandwait
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -94,7 +96,7 @@ Additional signatures provided by the submitting parties OpenAPI type: `DeduplicationPeriod2`. -- +
@@ -124,7 +126,7 @@ The hashing scheme version used when building the hash Required OpenAPI type: `MinLedgerTime`. -- +
@@ -185,9 +187,7 @@ The details of the offset field are described in ``community/ledger-api/README.m - -- - + @@ -211,63 +211,43 @@ The details of the offset field are described in ``community/ledger-api/README.m - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/post-v2interactive-submissionexecuteandwaitfortransaction.mdx b/docs-main/reference/json-api-reference/post-v2interactive-submissionexecuteandwaitfortransaction.mdx index 5084f1992..038f74b23 100644 --- a/docs-main/reference/json-api-reference/post-v2interactive-submissionexecuteandwaitfortransaction.mdx +++ b/docs-main/reference/json-api-reference/post-v2interactive-submissionexecuteandwaitfortransaction.mdx @@ -36,24 +36,26 @@ Similar to ExecuteSubmissionAndWait but additionally returns the transaction ## Protocol Details -
+ +
-
Operation ID
-
postV2Interactive-submissionExecuteandwaitfortransaction
+ Operation ID + postV2Interactive-submissionExecuteandwaitfortransaction
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -94,7 +96,7 @@ Additional signatures provided by the submitting parties OpenAPI type: `DeduplicationPeriod2`. -- +
@@ -124,7 +126,7 @@ The hashing scheme version used when building the hash Required OpenAPI type: `MinLedgerTime`. -- +
@@ -188,9 +190,7 @@ Filtered view of an on-ledger transaction's create and archive events. - -- - + @@ -214,63 +214,43 @@ Filtered view of an on-ledger transaction's create and archive events. - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/post-v2interactive-submissionpreferred-packages.mdx b/docs-main/reference/json-api-reference/post-v2interactive-submissionpreferred-packages.mdx index ab9878467..6399d7373 100644 --- a/docs-main/reference/json-api-reference/post-v2interactive-submissionpreferred-packages.mdx +++ b/docs-main/reference/json-api-reference/post-v2interactive-submissionpreferred-packages.mdx @@ -31,29 +31,31 @@ playground: "interactive" -Compute the preferred packages for the vetting requirements in the request. A preferred package is the highest-versioned package for a provided package-name that is vetted by all the participants hosting the provided parties. Ledger API clients should use this endpoint for constructing command submissions that are compatible with the provided preferred packages, by making informed decisions on: - which are the compatible packages that can be used to cre... +Compute the preferred packages for the vetting requirements in the request. A preferred package is the highest-versioned package for a provided package-name that is vetted by all the participants hosting the provided parties. ## Protocol Details -
+ +
-
Operation ID
-
postV2Interactive-submissionPreferred-packages
+ Operation ID + postV2Interactive-submissionPreferred-packages
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -153,9 +155,7 @@ The synchronizer for which the package preferences are computed. If the synchron - -- - + @@ -179,63 +179,43 @@ The synchronizer for which the package preferences are computed. If the synchron - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/post-v2interactive-submissionprepare.mdx b/docs-main/reference/json-api-reference/post-v2interactive-submissionprepare.mdx index 66a1250de..f901ab177 100644 --- a/docs-main/reference/json-api-reference/post-v2interactive-submissionprepare.mdx +++ b/docs-main/reference/json-api-reference/post-v2interactive-submissionprepare.mdx @@ -36,24 +36,26 @@ Requires `readAs` scope for the submitting party when LAPI User authorization is ## Protocol Details -
+ +
-
Operation ID
-
postV2Interactive-submissionPrepare
+ Operation ID + postV2Interactive-submissionPrepare
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -101,7 +103,7 @@ Individual elements of this atomic command. Must be non-empty. Limitation: Only OpenAPI type: `MinLedgerTime`. -- +
@@ -265,9 +267,7 @@ Estimation of the cost of submitting the prepared transaction The estimation is - -- - + @@ -291,63 +291,43 @@ Estimation of the cost of submitting the prepared transaction The estimation is - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/post-v2package-vetting.mdx b/docs-main/reference/json-api-reference/post-v2package-vetting.mdx index 5ab5feaa7..9ec5878d2 100644 --- a/docs-main/reference/json-api-reference/post-v2package-vetting.mdx +++ b/docs-main/reference/json-api-reference/post-v2package-vetting.mdx @@ -36,24 +36,26 @@ Update the vetted packages of this participant This endpoint (POST /package-vett ## Protocol Details -
+ +
-
Operation ID
-
postV2Package-vetting
+ Operation ID + postV2Package-vetting
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -169,9 +171,7 @@ The list of packages vetted on a given participant and synchronizer, modelled af - -- - + @@ -195,63 +195,43 @@ The list of packages vetted on a given participant and synchronizer, modelled af - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/post-v2package-vettinglist.mdx b/docs-main/reference/json-api-reference/post-v2package-vettinglist.mdx index 55839eb16..3774cae85 100644 --- a/docs-main/reference/json-api-reference/post-v2package-vettinglist.mdx +++ b/docs-main/reference/json-api-reference/post-v2package-vettinglist.mdx @@ -36,24 +36,26 @@ Lists which participant node vetted what packages on which synchronizer. Can be ## Protocol Details -
+ +
-
Operation ID
-
postV2Package-vettingList
+ Operation ID + postV2Package-vettingList
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -164,9 +166,7 @@ Pagination token to retrieve the next page. Empty string if there are no further - -- - + @@ -190,63 +190,43 @@ Pagination token to retrieve the next page. Empty string if there are no further - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/post-v2package-vettingupdate.mdx b/docs-main/reference/json-api-reference/post-v2package-vettingupdate.mdx index 48f9bcc4b..ceb189bef 100644 --- a/docs-main/reference/json-api-reference/post-v2package-vettingupdate.mdx +++ b/docs-main/reference/json-api-reference/post-v2package-vettingupdate.mdx @@ -36,24 +36,26 @@ Update the vetted packages of this participant ## Protocol Details -
+ +
-
Operation ID
-
postV2Package-vettingUpdate
+ Operation ID + postV2Package-vettingUpdate
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -169,9 +171,7 @@ The list of packages vetted on a given participant and synchronizer, modelled af - -- - + @@ -195,63 +195,43 @@ The list of packages vetted on a given participant and synchronizer, modelled af - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/post-v2packages.mdx b/docs-main/reference/json-api-reference/post-v2packages.mdx index d2dbb0418..055ddd785 100644 --- a/docs-main/reference/json-api-reference/post-v2packages.mdx +++ b/docs-main/reference/json-api-reference/post-v2packages.mdx @@ -36,24 +36,26 @@ Behaves the same as /dars. This endpoint will be deprecated and removed in a fut ## Protocol Details -
+ +
-
Operation ID
-
postV2Packages
+ Operation ID + postV2Packages
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -68,17 +70,11 @@ Behaves the same as /dars. This endpoint will be deprecated and removed in a fut - - -- - - + - -- - + @@ -106,7 +102,7 @@ Behaves the same as /dars. This endpoint will be deprecated and removed in a fut OpenAPI type: `string (binary)`. -- + @@ -161,9 +157,7 @@ A message that is received when the upload operation succeeded. - -- - + @@ -187,63 +181,43 @@ A message that is received when the upload operation succeeded. - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/post-v2parties.mdx b/docs-main/reference/json-api-reference/post-v2parties.mdx index ee06fbc33..1d6b177fd 100644 --- a/docs-main/reference/json-api-reference/post-v2parties.mdx +++ b/docs-main/reference/json-api-reference/post-v2parties.mdx @@ -31,29 +31,31 @@ playground: "interactive" -Allocates a new party on a ledger and adds it to the set managed by the participant. Caller specifies a party identifier suggestion, the actual identifier allocated might be different and is implementation specific. Caller can specify party metadata that is stored locally on the participant. This call may: - Succeed, in which case the actual allocated identifier is visible in the response. - Respond with a gRPC error daml-on-kv-ledger: suggestion's uniq... +Allocates a new party on a ledger and adds it to the set managed by the participant. Caller specifies a party identifier suggestion, the actual identifier allocated might be different and is implementation specific. Caller can specify party metadata that is stored locally on the participant. This call may: - Succeed, in which case the actual allocated identifier is visible in the response. ## Protocol Details -
+ +
-
Operation ID
-
postV2Parties
+ Operation ID + postV2Parties
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -135,9 +137,7 @@ The user who will get the act_as rights to the newly allocated party. If set to - -- - + @@ -161,9 +161,7 @@ The user who will get the act_as rights to the newly allocated party. If set to - -- - + @@ -187,63 +185,43 @@ The user who will get the act_as rights to the newly allocated party. If set to - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/post-v2partiesexternalallocate.mdx b/docs-main/reference/json-api-reference/post-v2partiesexternalallocate.mdx index eb379d9a7..3d3ca6eb3 100644 --- a/docs-main/reference/json-api-reference/post-v2partiesexternalallocate.mdx +++ b/docs-main/reference/json-api-reference/post-v2partiesexternalallocate.mdx @@ -31,29 +31,31 @@ playground: "interactive" -The external party must be hosted (at least) on this node with either confirmation or observation permissions It can optionally be hosted on other nodes (then called a multi-hosted party). If hosted on additional nodes, explicit authorization of the hosting relationship must be performed on those nodes before the party can be used. Decentralized namespaces are supported but must be provided fully authorized by their owners. The individual owner namespac... +The external party must be hosted (at least) on this node with either confirmation or observation permissions It can optionally be hosted on other nodes (then called a multi-hosted party). If hosted on additional nodes, explicit authorization of the hosting relationship must be performed on those nodes before the party can be used. Decentralized namespaces are supported but must be provided fully authorized by their owners. ## Protocol Details -
+ +
-
Operation ID
-
postV2PartiesExternalAllocate
+ Operation ID + postV2PartiesExternalAllocate
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -170,9 +172,7 @@ The allocated party id Required - -- - + @@ -196,63 +196,43 @@ The allocated party id Required - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/post-v2partiesexternalgenerate-topology.mdx b/docs-main/reference/json-api-reference/post-v2partiesexternalgenerate-topology.mdx index cf3fecede..354b5b277 100644 --- a/docs-main/reference/json-api-reference/post-v2partiesexternalgenerate-topology.mdx +++ b/docs-main/reference/json-api-reference/post-v2partiesexternalgenerate-topology.mdx @@ -36,24 +36,26 @@ You may use this endpoint to generate the common external topology transactions ## Protocol Details -
+ +
-
Operation ID
-
postV2PartiesExternalGenerate-topology
+ Operation ID + postV2PartiesExternalGenerate-topology
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -92,7 +94,7 @@ The actual party id will be constructed from this hint and a fingerprint of the OpenAPI type: `SigningPublicKey`. -- +
@@ -195,9 +197,7 @@ the multi-hash which may be signed instead of each individual transaction Requir - -- - + @@ -221,63 +221,43 @@ the multi-hash which may be signed instead of each individual transaction Requir - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/post-v2stateactive-contracts-page.mdx b/docs-main/reference/json-api-reference/post-v2stateactive-contracts-page.mdx index 94af60672..35042b83f 100644 --- a/docs-main/reference/json-api-reference/post-v2stateactive-contracts-page.mdx +++ b/docs-main/reference/json-api-reference/post-v2stateactive-contracts-page.mdx @@ -34,24 +34,26 @@ Returns a page of the snapshot of the active contracts and incomplete (un)assign ## Protocol Details -
+ +
-
Operation ID
-
postV2StateActive-contracts-page
+ Operation ID + postV2StateActive-contracts-page
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -168,9 +170,7 @@ If not present this is the last page. If present, this token must be used to get - -- - + @@ -194,63 +194,43 @@ If not present this is the last page. If present, this token must be used to get - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/post-v2stateactive-contracts.mdx b/docs-main/reference/json-api-reference/post-v2stateactive-contracts.mdx index b110c0925..f39e35ff3 100644 --- a/docs-main/reference/json-api-reference/post-v2stateactive-contracts.mdx +++ b/docs-main/reference/json-api-reference/post-v2stateactive-contracts.mdx @@ -31,29 +31,31 @@ playground: "interactive" -Query active contracts list (blocking call). Querying active contracts is an expensive operation and if possible should not be repeated often. Consider querying active contracts initially (for a given offset) and then repeatedly call one of `/v2/updates/...`endpoints to get subsequent modifications. You can also use websockets to get updates with better performance. Returns a stream of the snapshot of the active contracts and incomplete (un)assignments... +Query active contracts list (blocking call). Querying active contracts is an expensive operation and if possible should not be repeated often. Consider querying active contracts initially (for a given offset) and then repeatedly call one of `/v2/updates/...`endpoints to get subsequent modifications. You can also use websockets to get updates with better performance. ## Protocol Details -
+ +
-
Operation ID
-
postV2StateActive-contracts
+ Operation ID + postV2StateActive-contracts
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -171,9 +173,7 @@ Opaque representation of a continuation token defining a position in the active - -- - + @@ -197,9 +197,7 @@ Opaque representation of a continuation token defining a position in the active - -- - + @@ -223,63 +221,43 @@ Opaque representation of a continuation token defining a position in the active - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/post-v2updates.mdx b/docs-main/reference/json-api-reference/post-v2updates.mdx index 7e6d6d081..3d109a835 100644 --- a/docs-main/reference/json-api-reference/post-v2updates.mdx +++ b/docs-main/reference/json-api-reference/post-v2updates.mdx @@ -31,29 +31,31 @@ playground: "interactive" -Read the ledger's filtered update stream for the specified contents and filters. It returns the event types in accordance with the stream contents selected. Also the selection criteria for individual events depends on the transaction shape chosen. - ACS delta: a requesting party must be a stakeholder of an event for it to be included. - ledger effects: a requesting party must be a witness of an event for it to be included. Notice: This endpoint should b... +Read the ledger's filtered update stream for the specified contents and filters. It returns the event types in accordance with the stream contents selected. Also the selection criteria for individual events depends on the transaction shape chosen. - ACS delta: a requesting party must be a stakeholder of an event for it to be included. - ledger effects: a requesting party must be a witness of an event for it to be included. ## Protocol Details -
+ +
-
Operation ID
-
postV2Updates
+ Operation ID + postV2Updates
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -180,9 +182,7 @@ If set, the stream will populate the elements in descending order. Optional - -- - + @@ -206,9 +206,7 @@ If set, the stream will populate the elements in descending order. Optional - -- - + @@ -232,63 +230,43 @@ If set, the stream will populate the elements in descending order. Optional - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/post-v2updatesflats.mdx b/docs-main/reference/json-api-reference/post-v2updatesflats.mdx index 7cc7f2c0c..0e2097450 100644 --- a/docs-main/reference/json-api-reference/post-v2updatesflats.mdx +++ b/docs-main/reference/json-api-reference/post-v2updatesflats.mdx @@ -33,29 +33,31 @@ playground: "interactive" -Query flat transactions update list (blocking call). Provided for backwards compatibility, it will be removed in the Canton version 3.5.0, use v2/updates instead. Notice: This endpoint should be used for small results set. When number of results exceeded node configuration limit (`http-list-max-elements-limit`) there will be an error (`413 Content Too Large`) returned. Increasing this limit may lead to performance issues and high memory consumption. Con... +Query flat transactions update list (blocking call). Provided for backwards compatibility, it will be removed in the Canton version 3.5.0, use v2/updates instead. Notice: This endpoint should be used for small results set. When number of results exceeded node configuration limit (`http-list-max-elements-limit`) there will be an error (`413 Content Too Large`) returned. Increasing this limit may lead to performance issues and high memory consumption. ## Protocol Details -
+ +
-
Operation ID
-
postV2UpdatesFlats
+ Operation ID + postV2UpdatesFlats
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -182,9 +184,7 @@ If set, the stream will populate the elements in descending order. Optional - -- - + @@ -208,9 +208,7 @@ If set, the stream will populate the elements in descending order. Optional - -- - + @@ -234,63 +232,43 @@ If set, the stream will populate the elements in descending order. Optional - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/post-v2updatesget-updates-page.mdx b/docs-main/reference/json-api-reference/post-v2updatesget-updates-page.mdx index af19362e7..a111a1ef4 100644 --- a/docs-main/reference/json-api-reference/post-v2updatesget-updates-page.mdx +++ b/docs-main/reference/json-api-reference/post-v2updatesget-updates-page.mdx @@ -34,24 +34,26 @@ Read a page of ledger's filtered updates. It returns the event types in accordan ## Protocol Details -
+ +
-
Operation ID
-
postV2UpdatesGet-updates-page
+ Operation ID + postV2UpdatesGet-updates-page
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -190,9 +192,7 @@ If the value is not populated, this is the last page. If the value is populated, - -- - + @@ -216,63 +216,43 @@ If the value is not populated, this is the last page. If the value is populated, - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/post-v2updatestransaction-by-id.mdx b/docs-main/reference/json-api-reference/post-v2updatestransaction-by-id.mdx index 7d2bcc660..a738f4abd 100644 --- a/docs-main/reference/json-api-reference/post-v2updatestransaction-by-id.mdx +++ b/docs-main/reference/json-api-reference/post-v2updatestransaction-by-id.mdx @@ -38,24 +38,26 @@ Get transaction by id. Provided for backwards compatibility, it will be removed ## Protocol Details -
+ +
-
Operation ID
-
postV2UpdatesTransaction-by-id
+ Operation ID + postV2UpdatesTransaction-by-id
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -149,9 +151,7 @@ Filtered view of an on-ledger transaction's create and archive events. - -- - + @@ -175,63 +175,43 @@ Filtered view of an on-ledger transaction's create and archive events. - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/post-v2updatestransaction-by-offset.mdx b/docs-main/reference/json-api-reference/post-v2updatestransaction-by-offset.mdx index c5a00e3b0..c8ef07216 100644 --- a/docs-main/reference/json-api-reference/post-v2updatestransaction-by-offset.mdx +++ b/docs-main/reference/json-api-reference/post-v2updatestransaction-by-offset.mdx @@ -38,24 +38,26 @@ Get transaction by offset. Provided for backwards compatibility, it will be remo ## Protocol Details -
+ +
-
Operation ID
-
postV2UpdatesTransaction-by-offset
+ Operation ID + postV2UpdatesTransaction-by-offset
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -151,9 +153,7 @@ Filtered view of an on-ledger transaction's create and archive events. - -- - + @@ -177,63 +177,43 @@ Filtered view of an on-ledger transaction's create and archive events. - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/post-v2updatestrees.mdx b/docs-main/reference/json-api-reference/post-v2updatestrees.mdx index f734ca079..417447284 100644 --- a/docs-main/reference/json-api-reference/post-v2updatestrees.mdx +++ b/docs-main/reference/json-api-reference/post-v2updatestrees.mdx @@ -33,29 +33,31 @@ playground: "interactive" -Query update transactions tree list (blocking call). Provided for backwards compatibility, it will be removed in the Canton version 3.5.0, use v2/updates instead. Notice: This endpoint should be used for small results set. When number of results exceeded node configuration limit (`http-list-max-elements-limit`) there will be an error (`413 Content Too Large`) returned. Increasing this limit may lead to performance issues and high memory consumption. Con... +Query update transactions tree list (blocking call). Provided for backwards compatibility, it will be removed in the Canton version 3.5.0, use v2/updates instead. Notice: This endpoint should be used for small results set. When number of results exceeded node configuration limit (`http-list-max-elements-limit`) there will be an error (`413 Content Too Large`) returned. Increasing this limit may lead to performance issues and high memory consumption. ## Protocol Details -
+ +
-
Operation ID
-
postV2UpdatesTrees
+ Operation ID + postV2UpdatesTrees
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -182,9 +184,7 @@ If set, the stream will populate the elements in descending order. Optional - -- - + @@ -208,9 +208,7 @@ If set, the stream will populate the elements in descending order. Optional - -- - + @@ -234,63 +232,43 @@ If set, the stream will populate the elements in descending order. Optional - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/post-v2updatesupdate-by-id.mdx b/docs-main/reference/json-api-reference/post-v2updatesupdate-by-id.mdx index 0765228c3..d9918a991 100644 --- a/docs-main/reference/json-api-reference/post-v2updatesupdate-by-id.mdx +++ b/docs-main/reference/json-api-reference/post-v2updatesupdate-by-id.mdx @@ -36,24 +36,26 @@ Lookup an update by its ID. If there is no update with this ID, or all the event ## Protocol Details -
+ +
-
Operation ID
-
postV2UpdatesUpdate-by-id
+ Operation ID + postV2UpdatesUpdate-by-id
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -114,9 +116,7 @@ A format specifying what updates to include and how to render them. - -- - + @@ -140,9 +140,7 @@ A format specifying what updates to include and how to render them. - -- - + @@ -166,63 +164,43 @@ A format specifying what updates to include and how to render them. - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/post-v2updatesupdate-by-offset.mdx b/docs-main/reference/json-api-reference/post-v2updatesupdate-by-offset.mdx index 2c4717382..97ae17937 100644 --- a/docs-main/reference/json-api-reference/post-v2updatesupdate-by-offset.mdx +++ b/docs-main/reference/json-api-reference/post-v2updatesupdate-by-offset.mdx @@ -36,24 +36,26 @@ Lookup an update by its offset. If there is no update with this offset, or all t ## Protocol Details -
+ +
-
Operation ID
-
postV2UpdatesUpdate-by-offset
+ Operation ID + postV2UpdatesUpdate-by-offset
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -116,9 +118,7 @@ A format specifying what updates to include and how to render them. - -- - + @@ -142,9 +142,7 @@ A format specifying what updates to include and how to render them. - -- - + @@ -168,63 +166,43 @@ A format specifying what updates to include and how to render them. - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/post-v2users.mdx b/docs-main/reference/json-api-reference/post-v2users.mdx index dcfd809c0..45828b137 100644 --- a/docs-main/reference/json-api-reference/post-v2users.mdx +++ b/docs-main/reference/json-api-reference/post-v2users.mdx @@ -36,24 +36,26 @@ Create a new user. ## Protocol Details -
+ +
-
Operation ID
-
postV2Users
+ Operation ID + postV2Users
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -142,9 +144,7 @@ Users and rights ///////////////// Users are used to dynamically manage the righ - -- - + @@ -168,63 +168,43 @@ Users and rights ///////////////// Users are used to dynamically manage the righ - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/reference/json-api-reference/post-v2users:user-idrights.mdx b/docs-main/reference/json-api-reference/post-v2users:user-idrights.mdx index 151176d6e..d6790a4c9 100644 --- a/docs-main/reference/json-api-reference/post-v2users:user-idrights.mdx +++ b/docs-main/reference/json-api-reference/post-v2users:user-idrights.mdx @@ -36,24 +36,26 @@ Grant rights to a user. Granting rights does not affect the resource version of ## Protocol Details -
+ +
-
Operation ID
-
postV2UsersUser-idRights
+ Operation ID + postV2UsersUser-idRights
-
Authentication
-
Bearer token
+ Authentication + Bearer token
-
Published
-
3.5
+ Published + 3.5
-
+ + ## Inputs @@ -68,10 +70,7 @@ Grant rights to a user. Granting rights does not affect the resource version of - - -- - + @@ -168,9 +167,7 @@ The rights that were newly granted by the request. Optional: can be empty - -- - + @@ -194,63 +191,43 @@ The rights that were newly granted by the request. Optional: can be empty - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + - -- - + diff --git a/docs-main/styles.css b/docs-main/styles.css index 3e44597e6..a07599469 100644 --- a/docs-main/styles.css +++ b/docs-main/styles.css @@ -827,7 +827,8 @@ body:has(.x2mdx-ref-page--operation):not(:has(.x2mdx-ref-page--manual-api)) [ari background: rgba(17, 24, 39, 0.7); } -.x2mdx-ref-meta-item dt { +.x2mdx-ref-meta-item dt, +.x2mdx-ref-meta-label { margin: 0 0 0.3rem; font-size: 0.77rem; font-weight: 600; @@ -835,7 +836,8 @@ body:has(.x2mdx-ref-page--operation):not(:has(.x2mdx-ref-page--manual-api)) [ari color: rgb(107, 114, 128); } -.x2mdx-ref-meta-item dd { +.x2mdx-ref-meta-item dd, +.x2mdx-ref-meta-value { margin: 0; overflow-wrap: anywhere; font-size: 0.96rem; @@ -1041,18 +1043,21 @@ body:has(.x2mdx-ref-page--operation):not(:has(.x2mdx-ref-page--manual-api)) [ari background: transparent; } -#content-container:has(.x2mdx-ref-page--operation) .x2mdx-ref-meta-item dt { +#content-container:has(.x2mdx-ref-page--operation) .x2mdx-ref-meta-item dt, +#content-container:has(.x2mdx-ref-page--operation) .x2mdx-ref-meta-label { margin: 0; font-size: 0.72rem; letter-spacing: 0; text-transform: none; } -#content-container:has(.x2mdx-ref-page--operation) .x2mdx-ref-meta-item dt::after { +#content-container:has(.x2mdx-ref-page--operation) .x2mdx-ref-meta-item dt::after, +#content-container:has(.x2mdx-ref-page--operation) .x2mdx-ref-meta-label::after { content: ":"; } -#content-container:has(.x2mdx-ref-page--operation) .x2mdx-ref-meta-item dd { +#content-container:has(.x2mdx-ref-page--operation) .x2mdx-ref-meta-item dd, +#content-container:has(.x2mdx-ref-page--operation) .x2mdx-ref-meta-value { max-width: 32rem; font-size: 0.86rem; font-weight: 500; diff --git a/src/x2mdx/openapi/render.py b/src/x2mdx/openapi/render.py index bb4d8f6e6..1343d7c2e 100644 --- a/src/x2mdx/openapi/render.py +++ b/src/x2mdx/openapi/render.py @@ -15,7 +15,6 @@ ReferenceOperationPage, ReferencePanel, ReferenceSchema, - compact_text, json_body, render_operation_page, ) @@ -35,7 +34,10 @@ class ManualOpenAPIRenderOptions: output_path: str server: str = "http://localhost:7575" surface_label: str = "JSON Ledger API" - auth_method: str = "bearer" + breadcrumbs: tuple[ReferenceBreadcrumb, ...] = () + auth_method: str | None = "bearer" + authentication_label: str | None = "Bearer token" + raw_spec_href: str | None = None playground: str = "interactive" @@ -378,9 +380,53 @@ def _response_panels( return panels, examples -def _operation_fingerprint(operation: dict[str, Any]) -> str: +def _expand_local_refs( + spec: dict[str, Any], + value: Any, + *, + seen_refs: frozenset[str] = frozenset(), +) -> Any: + if isinstance(value, list): + return [_expand_local_refs(spec, item, seen_refs=seen_refs) for item in value] + if not isinstance(value, dict): + return value + reference = value.get("$ref") + if isinstance(reference, str) and reference.startswith("#/"): + if reference in seen_refs: + return {"$ref": reference} + resolved = _resolve_local_ref(spec, value) + return { + "$ref": reference, + "$resolved": _expand_local_refs( + spec, + resolved, + seen_refs=seen_refs | {reference}, + ), + } + return { + str(key): _expand_local_refs(spec, child, seen_refs=seen_refs) + for key, child in value.items() + } + + +def _operation_fingerprint( + spec: dict[str, Any], + operation: dict[str, Any], + *, + method: str, + path: str, +) -> str: + path_parameters = _path_item(spec, path).get("parameters") or [] + contract = { + "method": method.lower(), + "operation": operation, + "path_parameters": path_parameters, + } return json.dumps( - operation, sort_keys=True, separators=(",", ":"), ensure_ascii=False + _expand_local_refs(spec, contract), + sort_keys=True, + separators=(",", ":"), + ensure_ascii=False, ) @@ -465,6 +511,16 @@ def _operation_title(operation: dict[str, Any], *, method: str, path: str) -> st return f"{method.upper()} {path}" +def _operation_overview(operation: dict[str, Any], *, limit: int = 460) -> str: + description = " ".join(str(operation.get("description") or "").split()) + if len(description) <= limit: + return description + sentence_end = description.rfind(". ", 0, limit) + if sentence_end >= 0: + return description[: sentence_end + 1] + return description + + def operation_history_events( *, specs_by_version: dict[str, dict[str, Any]], @@ -487,6 +543,18 @@ def operation_history_events( observed.append( (version, observed_method, observed_path, observed_operation) ) + continue + try: + observed.append( + ( + version, + method.lower(), + path, + _operation(specs_by_version[version], method, path), + ) + ) + except ValueError: + continue else: try: observed.append( @@ -553,7 +621,12 @@ def operation_history_events( previous_fingerprint: str | None = None previous_location: tuple[str, str] | None = None for version, observed_method, observed_path, operation in observed: - fingerprint = _operation_fingerprint(operation) + fingerprint = _operation_fingerprint( + specs_by_version[version], + operation, + method=observed_method, + path=observed_path, + ) location = (observed_method, observed_path) if previous_fingerprint is not None and ( fingerprint != previous_fingerprint or location != previous_location @@ -645,12 +718,18 @@ def _request_example( path: str, media_type: str | None, sample: Any, + auth_method: str | None, ) -> ReferenceExample: lines = [ f"curl --request {method.upper()} \\", f" --url '{server.rstrip('/')}{path}' \\", ] - lines.append(" --header 'Authorization: Bearer $TOKEN' \\") + if auth_method == "bearer": + lines.append(" --header 'Authorization: Bearer $TOKEN' \\") + elif auth_method is not None: + raise ValueError( + f"Unsupported manual OpenAPI authentication method: {auth_method}" + ) if sample is not None: lines.append( f" --header 'Content-Type: {media_type or 'application/json'}' \\" @@ -680,7 +759,7 @@ def render_manual_openapi_operation( operation = _operation(spec, method, options.path) path_item = _path_item(spec, options.path) summary = _operation_title(operation, method=method, path=options.path) - description = compact_text(str(operation.get("description") or ""), limit=460) + description = _operation_overview(operation) inputs = _parameter_panels(spec, path_item, operation) request_panel, request_sample, request_media_type = _request_panel(spec, operation) @@ -694,6 +773,7 @@ def render_manual_openapi_operation( path=options.path, media_type=request_media_type, sample=request_sample, + auth_method=options.auth_method, ), *response_examples, ] @@ -729,26 +809,32 @@ def render_manual_openapi_operation( badges.append(ReferenceBadge(f"Remove as of {remove_as_of}", "removed")) api_path = f"{method} {options.server.rstrip('/')}{options.path}" + protocol_items = [ + ReferenceMetaItem("Operation ID", str(operation.get("operationId") or "-")), + ] + if options.authentication_label is not None: + protocol_items.append( + ReferenceMetaItem("Authentication", options.authentication_label) + ) + protocol_items.append(ReferenceMetaItem("Published", publish_version)) + if options.raw_spec_href is not None: + protocol_items.append( + ReferenceMetaItem( + "Specification", "Download OpenAPI", href=options.raw_spec_href + ) + ) + return render_operation_page( ReferenceOperationPage( path=options.output_path, title=summary, eyebrow=options.surface_label, - breadcrumbs=[ - ReferenceBreadcrumb("Ledger API", "/api-reference"), - ReferenceBreadcrumb("OpenAPI"), - ], + breadcrumbs=list(options.breadcrumbs), badges=badges, operation_method=method, operation_target=options.path, overview_markdown=description, - protocol_items=[ - ReferenceMetaItem( - "Operation ID", str(operation.get("operationId") or "-") - ), - ReferenceMetaItem("Authentication", "Bearer token"), - ReferenceMetaItem("Published", publish_version), - ], + protocol_items=protocol_items, inputs=inputs, outputs=outputs, examples=examples, diff --git a/src/x2mdx/templates/reference/operation.md.j2 b/src/x2mdx/templates/reference/operation.md.j2 index 7a5f012d5..95a2da575 100644 --- a/src/x2mdx/templates/reference/operation.md.j2 +++ b/src/x2mdx/templates/reference/operation.md.j2 @@ -2,6 +2,9 @@
{% if page.api_frontmatter %} +{% if page.breadcrumbs %} +{{ ref.breadcrumbs(page.breadcrumbs) }} +{% endif -%} {{ ref.header(page.eyebrow, page.title, page.summary, None, None, page.badges, [], render_title=True, render_summary=False) }} {% if page.overview_markdown %} {{ page.overview_markdown }} diff --git a/src/x2mdx/templates/shared/reference_macros.md.j2 b/src/x2mdx/templates/shared/reference_macros.md.j2 index 11151ef80..ea539b647 100644 --- a/src/x2mdx/templates/shared/reference_macros.md.j2 +++ b/src/x2mdx/templates/shared/reference_macros.md.j2 @@ -57,6 +57,19 @@ {% endif %} {%- endmacro %} +{% macro api_meta_grid(meta_items) -%} +{% if meta_items %} +
+ {% for item in meta_items %} +
+ {{ escape_mdx_html_text(inline_text(item.label)) }} + {% if item.href %}{{ escape_mdx_html_text(inline_text(item.value)) }}{% else %}{{ escape_mdx_html_text(inline_text(item.value)) }}{% endif %} +
+ {% endfor %} +
+{% endif %} +{%- endmacro %} + {% macro card_grid(cards) -%} {% if cards %}
@@ -89,16 +102,16 @@ {% if use_api_components %} {% for field in fields %} {% if field_kind == "response" %} - -{{ escape_mdx_html_text(inline_text(field.description or "-")) }} - +{% if field.description %} +{{ escape_mdx_html_text(inline_text(field.description)) }} +{% endif %} {% elif field.location %} - +{% if field.description or (field.api_type_label and field.api_type_label != field.type_label) %} {% if field.api_type_label and field.api_type_label != field.type_label %}OpenAPI type: `{{ escape_mdx_html_text(inline_text(field.type_label)) }}`. {% endif %} -{{ escape_mdx_html_text(inline_text(field.description or "-")) }} - +{% if field.description %}{{ escape_mdx_html_text(inline_text(field.description)) }}{% endif %} +{% endif %} {% endif %} {% endfor %} {% else %} @@ -277,7 +290,11 @@ {% macro operation_sections(operation, heading_prefix="##", include_examples=True, use_api_components=False) -%} {{ heading_prefix }} Protocol Details +{% if use_api_components %} +{{ api_meta_grid(operation.protocol_items) }} +{% else %} {{ meta_grid(operation.protocol_items) }} +{% endif %} {{ heading_prefix }} Inputs diff --git a/tests/test_openapi_manual_render.py b/tests/test_openapi_manual_render.py index 3713bbc9c..87dab2bc3 100644 --- a/tests/test_openapi_manual_render.py +++ b/tests/test_openapi_manual_render.py @@ -6,6 +6,7 @@ operation_history_events, render_manual_openapi_operation, ) +from x2mdx.reference_pages import ReferenceBreadcrumb from x2mdx.render import render_page @@ -148,6 +149,50 @@ def test_operation_history_tracks_operation_id_across_route_move() -> None: assert "moved from POST /v2/updates/flats" in events[0].details[0] +def test_operation_history_falls_back_to_method_and_path_when_older_id_is_missing() -> ( + None +): + original = operation_spec(changed=False) + del original["paths"]["/v2/updates/flats"]["post"]["operationId"] + current = operation_spec(changed=False) + + events = operation_history_events( + specs_by_version={"3.4": original, "3.5": current}, + versions=["3.4", "3.5"], + publish_version="3.5", + method="post", + path="/v2/updates/flats", + source_name="release fixtures", + ) + + assert [(event.kind, event.version) for event in events] == [ + (HistoryEventKind.CHANGED, "3.5"), + (HistoryEventKind.INTRODUCED, "3.4"), + ] + + +def test_operation_history_detects_changes_in_referenced_schemas() -> None: + original = operation_spec(changed=False) + current = operation_spec(changed=False) + current["components"]["schemas"]["GetUpdatesRequest"]["properties"]["newField"] = { + "type": "string" + } + + events = operation_history_events( + specs_by_version={"3.4": original, "3.5": current}, + versions=["3.4", "3.5"], + publish_version="3.5", + method="post", + path="/v2/updates/flats", + source_name="release fixtures", + ) + + assert [(event.kind, event.version) for event in events] == [ + (HistoryEventKind.CHANGED, "3.5"), + (HistoryEventKind.INTRODUCED, "3.4"), + ] + + def test_operation_history_rejects_duplicate_operation_ids() -> None: duplicate = operation_spec(changed=False) duplicate["paths"]["/duplicate"] = { @@ -227,7 +272,7 @@ def test_manual_openapi_page_preserves_playground_and_standard_history_layout() assert '' in rendered assert "OpenAPI type: `integer (int64)`." in rendered assert '' in rendered - assert '' in rendered + assert '' in rendered assert "" in rendered assert "" in rendered assert "x2mdx-ref-operation-shell" not in rendered @@ -237,6 +282,53 @@ def test_manual_openapi_page_preserves_playground_and_standard_history_layout() assert "details and history" not in rendered.lower() +def test_manual_openapi_page_supports_public_operation_without_authentication() -> None: + spec = operation_spec(changed=False) + operation = spec["paths"]["/v2/updates/flats"]["post"] + operation.pop("security") + history = operation_history_events( + specs_by_version={"0.7.4": spec}, + versions=["0.7.4"], + publish_version="0.7.4", + method="post", + path="/v2/updates/flats", + source_name="Splice release fixtures", + ) + + rendered = render_page( + render_manual_openapi_operation( + spec=spec, + options=ManualOpenAPIRenderOptions( + method="post", + path="/v2/updates/flats", + output_path="reference/splice-scan-api/post-v2updatesflats.mdx", + server="https://scan.example.com/api/scan", + surface_label="Scan API", + breadcrumbs=( + ReferenceBreadcrumb("Splice APIs", "/api-reference"), + ReferenceBreadcrumb("Scan APIs"), + ReferenceBreadcrumb("Scan API"), + ), + auth_method=None, + authentication_label=None, + raw_spec_href="/openapi/splice/scan/scan.yaml", + ), + history_events=history, + publish_version="0.7.4", + ) + ) + + assert "authMethod:" not in rendered + assert "Authorization: Bearer" not in rendered + assert "Splice APIs" in rendered + assert "Scan APIs" in rendered + assert '
' in rendered + assert 'Operation ID' in rendered + assert "Download OpenAPI" in rendered + assert "/openapi/splice/scan/scan.yaml" in rendered + assert "\n-\n" not in rendered + + def test_binary_request_example_uses_file_upload_curl() -> None: spec = operation_spec(changed=False) operation = spec["paths"]["/v2/updates/flats"]["post"] @@ -304,3 +396,37 @@ def test_long_generated_title_falls_back_to_humanized_operation_id() -> None: ) assert 'title: "Updates flats"' in rendered + + +def test_long_operation_overview_does_not_truncate_inside_mdx_path_token() -> None: + spec = operation_spec(changed=False) + operation = spec["paths"]["/v2/updates/flats"]["post"] + operation["description"] = ( + "Returns the matching update. " + + "This explanation is deliberately long. " * 20 + + "Compare `v2/updates/{update_id}` for exact lookup behavior." + ) + history = operation_history_events( + specs_by_version={"3.5": spec}, + versions=["3.5"], + publish_version="3.5", + method="post", + path="/v2/updates/flats", + source_name="release fixtures", + ) + + rendered = render_page( + render_manual_openapi_operation( + spec=spec, + options=ManualOpenAPIRenderOptions( + method="post", + path="/v2/updates/flats", + output_path="reference/json-api-reference/post-v2updatesflats.mdx", + ), + history_events=history, + publish_version="3.5", + ) + ) + + assert "Returns the matching update." in rendered + assert "`v2/updates/{..." not in rendered From 83501f836177fc4aa04015aeb90df5740d9f3330 Mon Sep 17 00:00:00 2001 From: danielporterda Date: Tue, 25 Aug 2026 18:22:51 -0400 Subject: [PATCH 2/4] Replace native Splice OpenAPI reference pages Signed-off-by: danielporterda --- .../splice-openapi/source-artifacts.json | 15 + docs-main/docs.json | 290 ++++------ ...nsv1:allocationidchoice-contextscancel.mdx | 247 ++++++++ ...ationidchoice-contextsexecute-transfer.mdx | 247 ++++++++ ...v1:allocationidchoice-contextswithdraw.mdx | 247 ++++++++ ...cation-instructionv1allocation-factory.mdx | 229 ++++++++ ...tioninstructionidchoice-contextsaccept.mdx | 271 +++++++++ ...oninstructionidchoice-contextswithdraw.mdx | 271 +++++++++ ...cation-instructionv2allocation-factory.mdx | 253 +++++++++ ...nsv2:allocationidchoice-contextscancel.mdx | 271 +++++++++ ...v2:allocationidchoice-contextswithdraw.mdx | 271 +++++++++ ...registryallocationv2settlement-factory.mdx | 253 +++++++++ .../splice-ans-api/get-v0entryall.mdx | 188 +++++++ .../splice-ans-api/post-v0entrycreate.mdx | 255 +++++++++ .../reference/splice-scan-api/get-livez.mdx | 110 ++++ .../reference/splice-scan-api/get-readyz.mdx | 110 ++++ .../reference/splice-scan-api/get-status.mdx | 129 +++++ .../splice-scan-api/get-v0acs:party.mdx | 177 ++++++ .../get-v0active-synchronizer-serial.mdx | 181 ++++++ .../get-v0adminsvvoterequests.mdx | 133 +++++ .../get-v0adminvalidatorlicenses.mdx | 174 ++++++ .../get-v0amulet-config-for-round.mdx | 206 +++++++ .../get-v0amulet-pricevotes.mdx | 133 +++++ .../splice-scan-api/get-v0ans-entries.mdx | 163 ++++++ .../get-v0ans-entriesby-name:name.mdx | 180 ++++++ .../get-v0ans-entriesby-party:party.mdx | 183 ++++++ .../get-v0backfillingstatus.mdx | 133 +++++ .../splice-scan-api/get-v0closed-rounds.mdx | 135 +++++ ...main_idmembers:member_idtraffic-status.mdx | 234 ++++++++ ...omain_idparties:party_idparticipant-id.mdx | 209 +++++++ .../splice-scan-api/get-v0dso-party-id.mdx | 131 +++++ .../splice-scan-api/get-v0dso-sequencers.mdx | 145 +++++ .../reference/splice-scan-api/get-v0dso.mdx | 192 +++++++ .../get-v0events:update_id.mdx | 330 +++++++++++ .../splice-scan-api/get-v0feature-support.mdx | 165 ++++++ .../splice-scan-api/get-v0featured-apps.mdx | 133 +++++ .../get-v0featured-apps:provider_party_id.mdx | 155 ++++++ ...eatured-appsby-contract-id:contract_id.mdx | 155 ++++++ ...ured-appsby-provider:provider_party_id.mdx | 151 +++++ .../splice-scan-api/get-v0historybulkacs.mdx | 213 +++++++ ...cessrounds:round_numberactivity-totals.mdx | 184 ++++++ ...srounds:round_numberbatches:batch_hash.mdx | 192 +++++++ ...ng-processrounds:round_numberroot-hash.mdx | 168 ++++++ ...unting-processroundsearliest-available.mdx | 167 ++++++ .../reference/splice-scan-api/get-v0lsu.mdx | 135 +++++ .../splice-scan-api/get-v0migrationslast.mdx | 131 +++++ .../get-v0migrationsschedule.mdx | 144 +++++ .../get-v0roll-forward-lsu.mdx | 135 +++++ .../reference/splice-scan-api/get-v0scans.mdx | 133 +++++ .../get-v0splice-instance-names.mdx | 192 +++++++ ...get-v0stateacssnapshot-timestamp-after.mdx | 237 ++++++++ .../get-v0stateacssnapshot-timestamp.mdx | 237 ++++++++ .../get-v0sv-bft-sequencers.mdx | 145 +++++ ...trapping-transactions:domain_id_prefix.mdx | 181 ++++++ ...nchronizer-identities:domain_id_prefix.mdx | 190 +++++++ .../get-v0transfer-command-counter:party.mdx | 176 ++++++ .../get-v0transfer-commandstatus.mdx | 182 ++++++ ...-v0transfer-preapprovalsby-party:party.mdx | 176 ++++++ ...t-v0unclaimed-development-fund-coupons.mdx | 159 ++++++ .../get-v0updates:update_id.mdx | 285 ++++++++++ .../get-v0validatorsvalidator-faucets.mdx | 204 +++++++ ...0voterequests:vote_request_contract_id.mdx | 179 ++++++ ...omain_idparties:party_idparticipant-id.mdx | 211 +++++++ .../get-v1updates:update_id.mdx | 287 ++++++++++ .../get-v2updates:update_id.mdx | 266 +++++++++ .../get-v2updateshash:hash.mdx | 244 ++++++++ .../reference/splice-scan-api/get-version.mdx | 134 +++++ ...ost-v0adminsvprevious-sv-reward-weight.mdx | 164 ++++++ .../post-v0adminsvvoteresults.mdx | 240 ++++++++ .../post-v0adminsvvoteresultscount.mdx | 175 ++++++ .../splice-scan-api/post-v0amulet-rules.mdx | 167 ++++++ .../splice-scan-api/post-v0ans-rules.mdx | 167 ++++++ .../post-v0backfillingimport-updates.mdx | 224 ++++++++ .../post-v0backfillingmigration-info.mdx | 218 ++++++++ .../post-v0backfillingupdates-before.mdx | 241 ++++++++ .../splice-scan-api/post-v0events.mdx | 272 +++++++++ .../post-v0external-party-amulet-rules.mdx | 167 ++++++ .../post-v0historybulkchecksums.mdx | 190 +++++++ .../post-v0historybulkupdates.mdx | 270 +++++++++ .../splice-scan-api/post-v0holdingsstate.mdx | 312 +++++++++++ .../post-v0holdingssummary.mdx | 309 ++++++++++ .../post-v0open-and-issuing-mining-rounds.mdx | 187 +++++++ .../splice-scan-api/post-v0stateacs.mdx | 327 +++++++++++ .../splice-scan-api/post-v0stateacsforce.mdx | 188 +++++++ .../splice-scan-api/post-v0updates.mdx | 258 +++++++++ .../splice-scan-api/post-v0voterequest.mdx | 164 ++++++ .../splice-scan-api/post-v1holdingsstate.mdx | 300 ++++++++++ .../post-v1holdingssummary.mdx | 273 +++++++++ .../splice-scan-api/post-v1stateacs.mdx | 307 ++++++++++ .../splice-scan-api/post-v1updates.mdx | 260 +++++++++ .../splice-scan-api/post-v2updates.mdx | 252 +++++++++ .../get-v0scan-proxyamulet-rules.mdx | 132 +++++ .../get-v0scan-proxyans-entries.mdx | 158 ++++++ ...et-v0scan-proxyans-entriesby-name:name.mdx | 178 ++++++ ...-v0scan-proxyans-entriesby-party:party.mdx | 178 ++++++ .../get-v0scan-proxydso-party-id.mdx | 129 +++++ .../get-v0scan-proxydso.mdx | 192 +++++++ ...n-proxyfeatured-apps:provider_party_id.mdx | 153 +++++ ...an-proxyopen-and-issuing-mining-rounds.mdx | 138 +++++ ...an-proxytransfer-command-counter:party.mdx | 174 ++++++ ...get-v0scan-proxytransfer-commandstatus.mdx | 182 ++++++ ...oxytransfer-preapprovalsby-party:party.mdx | 174 ++++++ ...roxyunclaimed-development-fund-coupons.mdx | 135 +++++ .../post-v0scan-proxyans-rules.mdx | 167 ++++++ .../post-v0scan-proxyholdingssummary.mdx | 309 ++++++++++ .../post-v1scan-proxyholdingssummary.mdx | 273 +++++++++ .../get-v0historybulkdownload:object_key.mdx | 183 ++++++ .../get-registrymetadatav1info.mdx | 188 +++++++ .../get-registrymetadatav1instruments.mdx | 240 ++++++++ ...strymetadatav1instruments:instrumentid.mdx | 296 ++++++++++ ...sferinstructionidchoice-contextsaccept.mdx | 247 ++++++++ ...sferinstructionidchoice-contextsreject.mdx | 247 ++++++++ ...erinstructionidchoice-contextswithdraw.mdx | 247 ++++++++ ...transfer-instructionv1transfer-factory.mdx | 236 ++++++++ ...sferinstructionidchoice-contextsaccept.mdx | 271 +++++++++ ...sferinstructionidchoice-contextsreject.mdx | 271 +++++++++ ...erinstructionidchoice-contextswithdraw.mdx | 271 +++++++++ ...transfer-instructionv2transfer-factory.mdx | 260 +++++++++ .../get-v0wallettransfer-offers.mdx | 188 +++++++ .../post-v0walletbuy-traffic-requests.mdx | 295 ++++++++++ ...buy-traffic-requests:tracking_idstatus.mdx | 178 ++++++ .../post-v0wallettransfer-offers.mdx | 317 +++++++++++ ...allettransfer-offers:tracking_idstatus.mdx | 178 ++++++ scripts/generate_splice_mintlify_openapi.py | 526 ++++++++++++++++-- .../validate_splice_mintlify_openapi_nav.py | 151 ++++- tests/test_splice_mintlify_openapi.py | 170 +++++- 126 files changed, 25753 insertions(+), 253 deletions(-) create mode 100644 docs-main/reference/splice-allocation-api/post-registryallocationsv1:allocationidchoice-contextscancel.mdx create mode 100644 docs-main/reference/splice-allocation-api/post-registryallocationsv1:allocationidchoice-contextsexecute-transfer.mdx create mode 100644 docs-main/reference/splice-allocation-api/post-registryallocationsv1:allocationidchoice-contextswithdraw.mdx create mode 100644 docs-main/reference/splice-allocation-instruction-api/post-registryallocation-instructionv1allocation-factory.mdx create mode 100644 docs-main/reference/splice-allocation-instruction-v2-api/post-registryallocation-instructionv2:allocationinstructionidchoice-contextsaccept.mdx create mode 100644 docs-main/reference/splice-allocation-instruction-v2-api/post-registryallocation-instructionv2:allocationinstructionidchoice-contextswithdraw.mdx create mode 100644 docs-main/reference/splice-allocation-instruction-v2-api/post-registryallocation-instructionv2allocation-factory.mdx create mode 100644 docs-main/reference/splice-allocation-v2-api/post-registryallocationsv2:allocationidchoice-contextscancel.mdx create mode 100644 docs-main/reference/splice-allocation-v2-api/post-registryallocationsv2:allocationidchoice-contextswithdraw.mdx create mode 100644 docs-main/reference/splice-allocation-v2-api/post-registryallocationv2settlement-factory.mdx create mode 100644 docs-main/reference/splice-ans-api/get-v0entryall.mdx create mode 100644 docs-main/reference/splice-ans-api/post-v0entrycreate.mdx create mode 100644 docs-main/reference/splice-scan-api/get-livez.mdx create mode 100644 docs-main/reference/splice-scan-api/get-readyz.mdx create mode 100644 docs-main/reference/splice-scan-api/get-status.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0acs:party.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0active-synchronizer-serial.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0adminsvvoterequests.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0adminvalidatorlicenses.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0amulet-config-for-round.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0amulet-pricevotes.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0ans-entries.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0ans-entriesby-name:name.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0ans-entriesby-party:party.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0backfillingstatus.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0closed-rounds.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0domains:domain_idmembers:member_idtraffic-status.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0domains:domain_idparties:party_idparticipant-id.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0dso-party-id.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0dso-sequencers.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0dso.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0events:update_id.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0feature-support.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0featured-apps.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0featured-apps:provider_party_id.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0featured-appsby-contract-id:contract_id.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0featured-appsby-provider:provider_party_id.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0historybulkacs.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0internalreward-accounting-processrounds:round_numberactivity-totals.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0internalreward-accounting-processrounds:round_numberbatches:batch_hash.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0internalreward-accounting-processrounds:round_numberroot-hash.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0internalreward-accounting-processroundsearliest-available.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0lsu.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0migrationslast.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0migrationsschedule.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0roll-forward-lsu.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0scans.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0splice-instance-names.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0stateacssnapshot-timestamp-after.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0stateacssnapshot-timestamp.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0sv-bft-sequencers.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0synchronizer-bootstrapping-transactions:domain_id_prefix.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0synchronizer-identities:domain_id_prefix.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0transfer-command-counter:party.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0transfer-commandstatus.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0transfer-preapprovalsby-party:party.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0unclaimed-development-fund-coupons.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0updates:update_id.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0validatorsvalidator-faucets.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v0voterequests:vote_request_contract_id.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v1domains:domain_idparties:party_idparticipant-id.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v1updates:update_id.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v2updates:update_id.mdx create mode 100644 docs-main/reference/splice-scan-api/get-v2updateshash:hash.mdx create mode 100644 docs-main/reference/splice-scan-api/get-version.mdx create mode 100644 docs-main/reference/splice-scan-api/post-v0adminsvprevious-sv-reward-weight.mdx create mode 100644 docs-main/reference/splice-scan-api/post-v0adminsvvoteresults.mdx create mode 100644 docs-main/reference/splice-scan-api/post-v0adminsvvoteresultscount.mdx create mode 100644 docs-main/reference/splice-scan-api/post-v0amulet-rules.mdx create mode 100644 docs-main/reference/splice-scan-api/post-v0ans-rules.mdx create mode 100644 docs-main/reference/splice-scan-api/post-v0backfillingimport-updates.mdx create mode 100644 docs-main/reference/splice-scan-api/post-v0backfillingmigration-info.mdx create mode 100644 docs-main/reference/splice-scan-api/post-v0backfillingupdates-before.mdx create mode 100644 docs-main/reference/splice-scan-api/post-v0events.mdx create mode 100644 docs-main/reference/splice-scan-api/post-v0external-party-amulet-rules.mdx create mode 100644 docs-main/reference/splice-scan-api/post-v0historybulkchecksums.mdx create mode 100644 docs-main/reference/splice-scan-api/post-v0historybulkupdates.mdx create mode 100644 docs-main/reference/splice-scan-api/post-v0holdingsstate.mdx create mode 100644 docs-main/reference/splice-scan-api/post-v0holdingssummary.mdx create mode 100644 docs-main/reference/splice-scan-api/post-v0open-and-issuing-mining-rounds.mdx create mode 100644 docs-main/reference/splice-scan-api/post-v0stateacs.mdx create mode 100644 docs-main/reference/splice-scan-api/post-v0stateacsforce.mdx create mode 100644 docs-main/reference/splice-scan-api/post-v0updates.mdx create mode 100644 docs-main/reference/splice-scan-api/post-v0voterequest.mdx create mode 100644 docs-main/reference/splice-scan-api/post-v1holdingsstate.mdx create mode 100644 docs-main/reference/splice-scan-api/post-v1holdingssummary.mdx create mode 100644 docs-main/reference/splice-scan-api/post-v1stateacs.mdx create mode 100644 docs-main/reference/splice-scan-api/post-v1updates.mdx create mode 100644 docs-main/reference/splice-scan-api/post-v2updates.mdx create mode 100644 docs-main/reference/splice-scan-proxy-api/get-v0scan-proxyamulet-rules.mdx create mode 100644 docs-main/reference/splice-scan-proxy-api/get-v0scan-proxyans-entries.mdx create mode 100644 docs-main/reference/splice-scan-proxy-api/get-v0scan-proxyans-entriesby-name:name.mdx create mode 100644 docs-main/reference/splice-scan-proxy-api/get-v0scan-proxyans-entriesby-party:party.mdx create mode 100644 docs-main/reference/splice-scan-proxy-api/get-v0scan-proxydso-party-id.mdx create mode 100644 docs-main/reference/splice-scan-proxy-api/get-v0scan-proxydso.mdx create mode 100644 docs-main/reference/splice-scan-proxy-api/get-v0scan-proxyfeatured-apps:provider_party_id.mdx create mode 100644 docs-main/reference/splice-scan-proxy-api/get-v0scan-proxyopen-and-issuing-mining-rounds.mdx create mode 100644 docs-main/reference/splice-scan-proxy-api/get-v0scan-proxytransfer-command-counter:party.mdx create mode 100644 docs-main/reference/splice-scan-proxy-api/get-v0scan-proxytransfer-commandstatus.mdx create mode 100644 docs-main/reference/splice-scan-proxy-api/get-v0scan-proxytransfer-preapprovalsby-party:party.mdx create mode 100644 docs-main/reference/splice-scan-proxy-api/get-v0scan-proxyunclaimed-development-fund-coupons.mdx create mode 100644 docs-main/reference/splice-scan-proxy-api/post-v0scan-proxyans-rules.mdx create mode 100644 docs-main/reference/splice-scan-proxy-api/post-v0scan-proxyholdingssummary.mdx create mode 100644 docs-main/reference/splice-scan-proxy-api/post-v1scan-proxyholdingssummary.mdx create mode 100644 docs-main/reference/splice-scan-streaming-api/get-v0historybulkdownload:object_key.mdx create mode 100644 docs-main/reference/splice-token-metadata-service/get-registrymetadatav1info.mdx create mode 100644 docs-main/reference/splice-token-metadata-service/get-registrymetadatav1instruments.mdx create mode 100644 docs-main/reference/splice-token-metadata-service/get-registrymetadatav1instruments:instrumentid.mdx create mode 100644 docs-main/reference/splice-transfer-instruction-api/post-registrytransfer-instructionv1:transferinstructionidchoice-contextsaccept.mdx create mode 100644 docs-main/reference/splice-transfer-instruction-api/post-registrytransfer-instructionv1:transferinstructionidchoice-contextsreject.mdx create mode 100644 docs-main/reference/splice-transfer-instruction-api/post-registrytransfer-instructionv1:transferinstructionidchoice-contextswithdraw.mdx create mode 100644 docs-main/reference/splice-transfer-instruction-api/post-registrytransfer-instructionv1transfer-factory.mdx create mode 100644 docs-main/reference/splice-transfer-instruction-v2-api/post-registrytransfer-instructionv2:transferinstructionidchoice-contextsaccept.mdx create mode 100644 docs-main/reference/splice-transfer-instruction-v2-api/post-registrytransfer-instructionv2:transferinstructionidchoice-contextsreject.mdx create mode 100644 docs-main/reference/splice-transfer-instruction-v2-api/post-registrytransfer-instructionv2:transferinstructionidchoice-contextswithdraw.mdx create mode 100644 docs-main/reference/splice-transfer-instruction-v2-api/post-registrytransfer-instructionv2transfer-factory.mdx create mode 100644 docs-main/reference/splice-wallet-api-external/get-v0wallettransfer-offers.mdx create mode 100644 docs-main/reference/splice-wallet-api-external/post-v0walletbuy-traffic-requests.mdx create mode 100644 docs-main/reference/splice-wallet-api-external/post-v0walletbuy-traffic-requests:tracking_idstatus.mdx create mode 100644 docs-main/reference/splice-wallet-api-external/post-v0wallettransfer-offers.mdx create mode 100644 docs-main/reference/splice-wallet-api-external/post-v0wallettransfer-offers:tracking_idstatus.mdx diff --git a/config/mintlify-openapi/splice-openapi/source-artifacts.json b/config/mintlify-openapi/splice-openapi/source-artifacts.json index da129b129..7c4036990 100644 --- a/config/mintlify-openapi/splice-openapi/source-artifacts.json +++ b/config/mintlify-openapi/splice-openapi/source-artifacts.json @@ -23,6 +23,21 @@ "allocation-instruction-v1.yaml", "allocation-instruction-v2.yaml" ], + "excluded_specs": [ + { + "filename": "wallet-internal.yaml", + "reason": "Internal validator API; excluded from the reader-facing Splice API reference." + }, + { + "filename": "validator-internal.yaml", + "reason": "Internal validator API; excluded from the reader-facing Splice API reference." + } + ], + "legacy_manual_route_baseline": { + "operation_count": 121, + "sha256": "e6b65e1f5e63a55574f95226c7a717c70dfdbe4af524cbad679986c4bff59cc5", + "source": "Mintlify native Splice OpenAPI routes captured before manual-page migration on 2026-08-25" + }, "legacy_cleanup_paths": [ "reference/splice-scan-openapi" ], diff --git a/docs-main/docs.json b/docs-main/docs.json index d751aa5bc..9bdb10093 100644 --- a/docs-main/docs.json +++ b/docs-main/docs.json @@ -2094,98 +2094,90 @@ "pages": [ { "group": "Scan API", - "openapi": { - "source": "openapi/splice/scan/scan.yaml", - "directory": "reference/splice-scan-api" - }, "pages": [ - "GET /readyz", - "GET /livez", - "GET /status", - "GET /version", - "GET /v0/dso", - "GET /v0/validators/validator-faucets", - "GET /v0/scans", - "GET /v0/admin/validator/licenses", - "GET /v0/dso-sequencers", - "GET /v0/sv-bft-sequencers", - "GET /v0/roll-forward-lsu", - "GET /v0/lsu", - "GET /v0/active-synchronizer-serial", - "GET /v0/domains/{domain_id}/parties/{party_id}/participant-id", - "GET /v1/domains/{domain_id}/parties/{party_id}/participant-id", - "GET /v0/domains/{domain_id}/members/{member_id}/traffic-status", - "GET /v0/closed-rounds", - "POST /v0/open-and-issuing-mining-rounds", - "POST /v2/updates", - "GET /v2/updates/{update_id}", - "POST /v1/updates", - "GET /v1/updates/{update_id}", - "GET /v2/updates/hash/{hash}", - "GET /v0/state/acs/snapshot-timestamp", - "GET /v0/state/acs/snapshot-timestamp-after", - "POST /v0/state/acs", - "POST /v1/state/acs", - "POST /v0/state/acs/force", - "POST /v0/holdings/state", - "POST /v1/holdings/state", - "POST /v0/holdings/summary", - "POST /v1/holdings/summary", - "GET /v0/ans-entries", - "GET /v0/ans-entries/by-party/{party}", - "GET /v0/ans-entries/by-name/{name}", - "GET /v0/dso-party-id", - "POST /v0/amulet-rules", - "POST /v0/external-party-amulet-rules", - "POST /v0/ans-rules", - "GET /v0/featured-apps", - "GET /v0/featured-apps/{provider_party_id}", - "GET /v0/featured-apps/by-provider/{provider_party_id}", - "GET /v0/featured-apps/by-contract-id/{contract_id}", - "GET /v0/transfer-preapprovals/by-party/{party}", - "GET /v0/transfer-command-counter/{party}", - "GET /v0/transfer-command/status", - "GET /v0/migrations/schedule", - "GET /v0/migrations/last", - "GET /v0/synchronizer-identities/{domain_id_prefix}", - "GET /v0/synchronizer-bootstrapping-transactions/{domain_id_prefix}", - "GET /v0/splice-instance-names", - "GET /v0/amulet-price/votes", - "POST /v0/voterequest", - "GET /v0/voterequests/{vote_request_contract_id}", - "GET /v0/admin/sv/voterequests", - "POST /v0/admin/sv/voteresults", - "POST /v0/admin/sv/voteresults/count", - "POST /v0/admin/sv/previous-sv-reward-weight", - "POST /v0/backfilling/migration-info", - "POST /v0/backfilling/updates-before", - "GET /v0/backfilling/status", - "GET /v0/acs/{party}", - "GET /v0/amulet-config-for-round", - "POST /v0/updates", - "GET /v0/updates/{update_id}", - "GET /v0/feature-support", - "POST /v0/backfilling/import-updates", - "POST /v0/events", - "GET /v0/events/{update_id}", - "GET /v0/unclaimed-development-fund-coupons", - "GET /v0/internal/reward-accounting-process/rounds/earliest-available", - "GET /v0/internal/reward-accounting-process/rounds/{round_number}/activity-totals", - "GET /v0/internal/reward-accounting-process/rounds/{round_number}/root-hash", - "GET /v0/internal/reward-accounting-process/rounds/{round_number}/batches/{batch_hash}", - "GET /v0/history/bulk/acs", - "POST /v0/history/bulk/updates", - "POST /v0/history/bulk/checksums" + "reference/splice-scan-api/get-readyz", + "reference/splice-scan-api/get-livez", + "reference/splice-scan-api/get-status", + "reference/splice-scan-api/get-version", + "reference/splice-scan-api/get-v0dso", + "reference/splice-scan-api/get-v0validatorsvalidator-faucets", + "reference/splice-scan-api/get-v0scans", + "reference/splice-scan-api/get-v0adminvalidatorlicenses", + "reference/splice-scan-api/get-v0dso-sequencers", + "reference/splice-scan-api/get-v0sv-bft-sequencers", + "reference/splice-scan-api/get-v0roll-forward-lsu", + "reference/splice-scan-api/get-v0lsu", + "reference/splice-scan-api/get-v0active-synchronizer-serial", + "reference/splice-scan-api/get-v0domains:domain_idparties:party_idparticipant-id", + "reference/splice-scan-api/get-v1domains:domain_idparties:party_idparticipant-id", + "reference/splice-scan-api/get-v0domains:domain_idmembers:member_idtraffic-status", + "reference/splice-scan-api/get-v0closed-rounds", + "reference/splice-scan-api/post-v0open-and-issuing-mining-rounds", + "reference/splice-scan-api/post-v2updates", + "reference/splice-scan-api/get-v2updates:update_id", + "reference/splice-scan-api/post-v1updates", + "reference/splice-scan-api/get-v1updates:update_id", + "reference/splice-scan-api/get-v2updateshash:hash", + "reference/splice-scan-api/get-v0stateacssnapshot-timestamp", + "reference/splice-scan-api/get-v0stateacssnapshot-timestamp-after", + "reference/splice-scan-api/post-v0stateacs", + "reference/splice-scan-api/post-v1stateacs", + "reference/splice-scan-api/post-v0stateacsforce", + "reference/splice-scan-api/post-v0holdingsstate", + "reference/splice-scan-api/post-v1holdingsstate", + "reference/splice-scan-api/post-v0holdingssummary", + "reference/splice-scan-api/post-v1holdingssummary", + "reference/splice-scan-api/get-v0ans-entries", + "reference/splice-scan-api/get-v0ans-entriesby-party:party", + "reference/splice-scan-api/get-v0ans-entriesby-name:name", + "reference/splice-scan-api/get-v0dso-party-id", + "reference/splice-scan-api/post-v0amulet-rules", + "reference/splice-scan-api/post-v0external-party-amulet-rules", + "reference/splice-scan-api/post-v0ans-rules", + "reference/splice-scan-api/get-v0featured-apps", + "reference/splice-scan-api/get-v0featured-apps:provider_party_id", + "reference/splice-scan-api/get-v0featured-appsby-provider:provider_party_id", + "reference/splice-scan-api/get-v0featured-appsby-contract-id:contract_id", + "reference/splice-scan-api/get-v0transfer-preapprovalsby-party:party", + "reference/splice-scan-api/get-v0transfer-command-counter:party", + "reference/splice-scan-api/get-v0transfer-commandstatus", + "reference/splice-scan-api/get-v0migrationsschedule", + "reference/splice-scan-api/get-v0migrationslast", + "reference/splice-scan-api/get-v0synchronizer-identities:domain_id_prefix", + "reference/splice-scan-api/get-v0synchronizer-bootstrapping-transactions:domain_id_prefix", + "reference/splice-scan-api/get-v0splice-instance-names", + "reference/splice-scan-api/get-v0amulet-pricevotes", + "reference/splice-scan-api/post-v0voterequest", + "reference/splice-scan-api/get-v0voterequests:vote_request_contract_id", + "reference/splice-scan-api/get-v0adminsvvoterequests", + "reference/splice-scan-api/post-v0adminsvvoteresults", + "reference/splice-scan-api/post-v0adminsvvoteresultscount", + "reference/splice-scan-api/post-v0adminsvprevious-sv-reward-weight", + "reference/splice-scan-api/post-v0backfillingmigration-info", + "reference/splice-scan-api/post-v0backfillingupdates-before", + "reference/splice-scan-api/get-v0backfillingstatus", + "reference/splice-scan-api/get-v0acs:party", + "reference/splice-scan-api/get-v0amulet-config-for-round", + "reference/splice-scan-api/post-v0updates", + "reference/splice-scan-api/get-v0updates:update_id", + "reference/splice-scan-api/get-v0feature-support", + "reference/splice-scan-api/post-v0backfillingimport-updates", + "reference/splice-scan-api/post-v0events", + "reference/splice-scan-api/get-v0events:update_id", + "reference/splice-scan-api/get-v0unclaimed-development-fund-coupons", + "reference/splice-scan-api/get-v0internalreward-accounting-processroundsearliest-available", + "reference/splice-scan-api/get-v0internalreward-accounting-processrounds:round_numberactivity-totals", + "reference/splice-scan-api/get-v0internalreward-accounting-processrounds:round_numberroot-hash", + "reference/splice-scan-api/get-v0internalreward-accounting-processrounds:round_numberbatches:batch_hash", + "reference/splice-scan-api/get-v0historybulkacs", + "reference/splice-scan-api/post-v0historybulkupdates", + "reference/splice-scan-api/post-v0historybulkchecksums" ] }, { "group": "Scan Streaming API", - "openapi": { - "source": "openapi/splice/scan/scan-stream-server.yaml", - "directory": "reference/splice-scan-streaming-api" - }, "pages": [ - "GET /v0/history/bulk/download/{object_key}" + "reference/splice-scan-streaming-api/get-v0historybulkdownload:object_key" ] } ] @@ -2195,51 +2187,39 @@ "pages": [ { "group": "Wallet API (External)", - "openapi": { - "source": "openapi/splice/validator/wallet-external.yaml", - "directory": "reference/splice-wallet-api-external" - }, "pages": [ - "POST /v0/wallet/transfer-offers", - "GET /v0/wallet/transfer-offers", - "POST /v0/wallet/transfer-offers/{tracking_id}/status", - "POST /v0/wallet/buy-traffic-requests", - "POST /v0/wallet/buy-traffic-requests/{tracking_id}/status" + "reference/splice-wallet-api-external/post-v0wallettransfer-offers", + "reference/splice-wallet-api-external/get-v0wallettransfer-offers", + "reference/splice-wallet-api-external/post-v0wallettransfer-offers:tracking_idstatus", + "reference/splice-wallet-api-external/post-v0walletbuy-traffic-requests", + "reference/splice-wallet-api-external/post-v0walletbuy-traffic-requests:tracking_idstatus" ] }, { "group": "ANS API", - "openapi": { - "source": "openapi/splice/validator/ans-external.yaml", - "directory": "reference/splice-ans-api" - }, "pages": [ - "POST /v0/entry/create", - "GET /v0/entry/all" + "reference/splice-ans-api/post-v0entrycreate", + "reference/splice-ans-api/get-v0entryall" ] }, { "group": "Scan Proxy API", - "openapi": { - "source": "openapi/splice/validator/scan-proxy.yaml", - "directory": "reference/splice-scan-proxy-api" - }, "pages": [ - "GET /v0/scan-proxy/dso-party-id", - "GET /v0/scan-proxy/dso", - "GET /v0/scan-proxy/featured-apps/{provider_party_id}", - "GET /v0/scan-proxy/open-and-issuing-mining-rounds", - "GET /v0/scan-proxy/amulet-rules", - "GET /v0/scan-proxy/ans-entries/by-party/{party}", - "GET /v0/scan-proxy/ans-entries", - "GET /v0/scan-proxy/ans-entries/by-name/{name}", - "POST /v0/scan-proxy/ans-rules", - "GET /v0/scan-proxy/transfer-preapprovals/by-party/{party}", - "GET /v0/scan-proxy/transfer-command-counter/{party}", - "GET /v0/scan-proxy/transfer-command/status", - "POST /v0/scan-proxy/holdings/summary", - "POST /v1/scan-proxy/holdings/summary", - "GET /v0/scan-proxy/unclaimed-development-fund-coupons" + "reference/splice-scan-proxy-api/get-v0scan-proxydso-party-id", + "reference/splice-scan-proxy-api/get-v0scan-proxydso", + "reference/splice-scan-proxy-api/get-v0scan-proxyfeatured-apps:provider_party_id", + "reference/splice-scan-proxy-api/get-v0scan-proxyopen-and-issuing-mining-rounds", + "reference/splice-scan-proxy-api/get-v0scan-proxyamulet-rules", + "reference/splice-scan-proxy-api/get-v0scan-proxyans-entriesby-party:party", + "reference/splice-scan-proxy-api/get-v0scan-proxyans-entries", + "reference/splice-scan-proxy-api/get-v0scan-proxyans-entriesby-name:name", + "reference/splice-scan-proxy-api/post-v0scan-proxyans-rules", + "reference/splice-scan-proxy-api/get-v0scan-proxytransfer-preapprovalsby-party:party", + "reference/splice-scan-proxy-api/get-v0scan-proxytransfer-command-counter:party", + "reference/splice-scan-proxy-api/get-v0scan-proxytransfer-commandstatus", + "reference/splice-scan-proxy-api/post-v0scan-proxyholdingssummary", + "reference/splice-scan-proxy-api/post-v1scan-proxyholdingssummary", + "reference/splice-scan-proxy-api/get-v0scan-proxyunclaimed-development-fund-coupons" ] } ] @@ -2249,86 +2229,58 @@ "pages": [ { "group": "Token Metadata Service", - "openapi": { - "source": "openapi/splice/token-standard/token-metadata-v1.yaml", - "directory": "reference/splice-token-metadata-service" - }, "pages": [ - "GET /registry/metadata/v1/info", - "GET /registry/metadata/v1/instruments", - "GET /registry/metadata/v1/instruments/{instrumentId}" + "reference/splice-token-metadata-service/get-registrymetadatav1info", + "reference/splice-token-metadata-service/get-registrymetadatav1instruments", + "reference/splice-token-metadata-service/get-registrymetadatav1instruments:instrumentid" ] }, { "group": "Transfer Instruction API", - "openapi": { - "source": "openapi/splice/token-standard/transfer-instruction-v1.yaml", - "directory": "reference/splice-transfer-instruction-api" - }, "pages": [ - "POST /registry/transfer-instruction/v1/transfer-factory", - "POST /registry/transfer-instruction/v1/{transferInstructionId}/choice-contexts/accept", - "POST /registry/transfer-instruction/v1/{transferInstructionId}/choice-contexts/reject", - "POST /registry/transfer-instruction/v1/{transferInstructionId}/choice-contexts/withdraw" + "reference/splice-transfer-instruction-api/post-registrytransfer-instructionv1transfer-factory", + "reference/splice-transfer-instruction-api/post-registrytransfer-instructionv1:transferinstructionidchoice-contextsaccept", + "reference/splice-transfer-instruction-api/post-registrytransfer-instructionv1:transferinstructionidchoice-contextsreject", + "reference/splice-transfer-instruction-api/post-registrytransfer-instructionv1:transferinstructionidchoice-contextswithdraw" ] }, { "group": "Transfer Instruction V2 API", - "openapi": { - "source": "openapi/splice/token-standard/transfer-instruction-v2.yaml", - "directory": "reference/splice-transfer-instruction-v2-api" - }, "pages": [ - "POST /registry/transfer-instruction/v2/transfer-factory", - "POST /registry/transfer-instruction/v2/{transferInstructionId}/choice-contexts/accept", - "POST /registry/transfer-instruction/v2/{transferInstructionId}/choice-contexts/reject", - "POST /registry/transfer-instruction/v2/{transferInstructionId}/choice-contexts/withdraw" + "reference/splice-transfer-instruction-v2-api/post-registrytransfer-instructionv2transfer-factory", + "reference/splice-transfer-instruction-v2-api/post-registrytransfer-instructionv2:transferinstructionidchoice-contextsaccept", + "reference/splice-transfer-instruction-v2-api/post-registrytransfer-instructionv2:transferinstructionidchoice-contextsreject", + "reference/splice-transfer-instruction-v2-api/post-registrytransfer-instructionv2:transferinstructionidchoice-contextswithdraw" ] }, { "group": "Allocation API", - "openapi": { - "source": "openapi/splice/token-standard/allocation-v1.yaml", - "directory": "reference/splice-allocation-api" - }, "pages": [ - "POST /registry/allocations/v1/{allocationId}/choice-contexts/execute-transfer", - "POST /registry/allocations/v1/{allocationId}/choice-contexts/withdraw", - "POST /registry/allocations/v1/{allocationId}/choice-contexts/cancel" + "reference/splice-allocation-api/post-registryallocationsv1:allocationidchoice-contextsexecute-transfer", + "reference/splice-allocation-api/post-registryallocationsv1:allocationidchoice-contextswithdraw", + "reference/splice-allocation-api/post-registryallocationsv1:allocationidchoice-contextscancel" ] }, { "group": "Allocation V2 API", - "openapi": { - "source": "openapi/splice/token-standard/allocation-v2.yaml", - "directory": "reference/splice-allocation-v2-api" - }, "pages": [ - "POST /registry/allocation/v2/settlement-factory", - "POST /registry/allocations/v2/{allocationId}/choice-contexts/withdraw", - "POST /registry/allocations/v2/{allocationId}/choice-contexts/cancel" + "reference/splice-allocation-v2-api/post-registryallocationv2settlement-factory", + "reference/splice-allocation-v2-api/post-registryallocationsv2:allocationidchoice-contextswithdraw", + "reference/splice-allocation-v2-api/post-registryallocationsv2:allocationidchoice-contextscancel" ] }, { "group": "Allocation Instruction API", - "openapi": { - "source": "openapi/splice/token-standard/allocation-instruction-v1.yaml", - "directory": "reference/splice-allocation-instruction-api" - }, "pages": [ - "POST /registry/allocation-instruction/v1/allocation-factory" + "reference/splice-allocation-instruction-api/post-registryallocation-instructionv1allocation-factory" ] }, { "group": "Allocation Instruction V2 API", - "openapi": { - "source": "openapi/splice/token-standard/allocation-instruction-v2.yaml", - "directory": "reference/splice-allocation-instruction-v2-api" - }, "pages": [ - "POST /registry/allocation-instruction/v2/allocation-factory", - "POST /registry/allocation-instruction/v2/{allocationInstructionId}/choice-contexts/accept", - "POST /registry/allocation-instruction/v2/{allocationInstructionId}/choice-contexts/withdraw" + "reference/splice-allocation-instruction-v2-api/post-registryallocation-instructionv2allocation-factory", + "reference/splice-allocation-instruction-v2-api/post-registryallocation-instructionv2:allocationinstructionidchoice-contextsaccept", + "reference/splice-allocation-instruction-v2-api/post-registryallocation-instructionv2:allocationinstructionidchoice-contextswithdraw" ] } ] diff --git a/docs-main/reference/splice-allocation-api/post-registryallocationsv1:allocationidchoice-contextscancel.mdx b/docs-main/reference/splice-allocation-api/post-registryallocationsv1:allocationidchoice-contextscancel.mdx new file mode 100644 index 000000000..2f61db3b3 --- /dev/null +++ b/docs-main/reference/splice-allocation-api/post-registryallocationsv1:allocationidchoice-contextscancel.mdx @@ -0,0 +1,247 @@ +--- +title: "Get the choice context to cancel an allocation" +api: "POST https://example.com/registry/allocations/v1/{allocationId}/choice-contexts/cancel" +playground: "interactive" +--- + +
+ + + +
+ +

Allocation API

+ + +

Get the choice context to cancel an allocation

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +Get the choice context to cancel an allocation. + +## Protocol Details + + + +
+ +
+ Operation ID + getAllocationCancelContext +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + +The contract ID of the allocation to cancel. + + + + + + + + + + +### Request body + + +
+ + application/json + +
+ + + + + + + + +Metadata that will be passed to the choice, and should be incorporated into the choice context. Provided for extensibility. + + + + + + +If set to true, the response will not include fields prefixed with 'debug'. Useful to save bandwidth. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +The additional data to use when exercising the choice. + + + + + +The contracts that are required to be disclosed to the participant node for exercising the choice. + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://example.com/registry/allocations/v1/{allocationId}/choice-contexts/cancel' \ + --header 'Content-Type: application/json' \ + --data '{"meta":{},"excludeDebugFields":false}' +``` + + + + + + +```json 200 response +{ + "choiceContextData": {}, + "disclosedContracts": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-allocation-api/post-registryallocationsv1:allocationidchoice-contextsexecute-transfer.mdx b/docs-main/reference/splice-allocation-api/post-registryallocationsv1:allocationidchoice-contextsexecute-transfer.mdx new file mode 100644 index 000000000..64736d56c --- /dev/null +++ b/docs-main/reference/splice-allocation-api/post-registryallocationsv1:allocationidchoice-contextsexecute-transfer.mdx @@ -0,0 +1,247 @@ +--- +title: "Get the choice context to execute a transfer on an allocation" +api: "POST https://example.com/registry/allocations/v1/{allocationId}/choice-contexts/execute-transfer" +playground: "interactive" +--- + +
+ + + +
+ +

Allocation API

+ + +

Get the choice context to execute a transfer on an allocation

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +Get the choice context to execute a transfer on an allocation. + +## Protocol Details + + + +
+ +
+ Operation ID + getAllocationTransferContext +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + +The contract ID of the allocation whose transfer the caller wants to execute. + + + + + + + + + + +### Request body + + +
+ + application/json + +
+ + + + + + + + +Metadata that will be passed to the choice, and should be incorporated into the choice context. Provided for extensibility. + + + + + + +If set to true, the response will not include fields prefixed with 'debug'. Useful to save bandwidth. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +The additional data to use when exercising the choice. + + + + + +The contracts that are required to be disclosed to the participant node for exercising the choice. + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://example.com/registry/allocations/v1/{allocationId}/choice-contexts/execute-transfer' \ + --header 'Content-Type: application/json' \ + --data '{"meta":{},"excludeDebugFields":false}' +``` + + + + + + +```json 200 response +{ + "choiceContextData": {}, + "disclosedContracts": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-allocation-api/post-registryallocationsv1:allocationidchoice-contextswithdraw.mdx b/docs-main/reference/splice-allocation-api/post-registryallocationsv1:allocationidchoice-contextswithdraw.mdx new file mode 100644 index 000000000..4a05436f2 --- /dev/null +++ b/docs-main/reference/splice-allocation-api/post-registryallocationsv1:allocationidchoice-contextswithdraw.mdx @@ -0,0 +1,247 @@ +--- +title: "Get the choice context to withdraw an allocation" +api: "POST https://example.com/registry/allocations/v1/{allocationId}/choice-contexts/withdraw" +playground: "interactive" +--- + +
+ + + +
+ +

Allocation API

+ + +

Get the choice context to withdraw an allocation

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +Get the choice context to withdraw an allocation. + +## Protocol Details + + + +
+ +
+ Operation ID + getAllocationWithdrawContext +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + +The contract ID of the allocation to withdraw. + + + + + + + + + + +### Request body + + +
+ + application/json + +
+ + + + + + + + +Metadata that will be passed to the choice, and should be incorporated into the choice context. Provided for extensibility. + + + + + + +If set to true, the response will not include fields prefixed with 'debug'. Useful to save bandwidth. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +The additional data to use when exercising the choice. + + + + + +The contracts that are required to be disclosed to the participant node for exercising the choice. + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://example.com/registry/allocations/v1/{allocationId}/choice-contexts/withdraw' \ + --header 'Content-Type: application/json' \ + --data '{"meta":{},"excludeDebugFields":false}' +``` + + + + + + +```json 200 response +{ + "choiceContextData": {}, + "disclosedContracts": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-allocation-instruction-api/post-registryallocation-instructionv1allocation-factory.mdx b/docs-main/reference/splice-allocation-instruction-api/post-registryallocation-instructionv1allocation-factory.mdx new file mode 100644 index 000000000..a26e1f261 --- /dev/null +++ b/docs-main/reference/splice-allocation-instruction-api/post-registryallocation-instructionv1allocation-factory.mdx @@ -0,0 +1,229 @@ +--- +title: "Allocation factory" +api: "POST https://example.com/registry/allocation-instruction/v1/allocation-factory" +playground: "interactive" +--- + +
+ + + +
+ +

Allocation Instruction API

+ + +

Allocation factory

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +Get the factory and choice context for creating allocations using the `AllocationFactory_Allocate` choice. + +## Protocol Details + + + +
+ +
+ Operation ID + getAllocationFactory +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Request body + + +
+ + application/json + +
+ + + + + + + + +The arguments that are intended to be passed to the choice provided by the factory. To avoid repeating the Daml type definitions, they are specified as JSON objects. However the concrete format is given by how the choice arguments are encoded using the Daml JSON API (with the `extraArgs.context` and `extraArgs.meta` fields set to the empty object). The choice arguments are provided so that the registry can also provide choice-argument specific contracts, e.g., the configuration for a specific instrument-id. + + + + + + +If set to true, the response will not include fields prefixed with 'debug'. Useful to save bandwidth. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +The contract ID of the contract implementing the factory interface. + + + + + +The context required to exercise a choice on a contract via an interface. Used to retrieve additional reference date that is passed in via disclosed contracts, which are in turn referred to via their contract ID in the `choiceContextData`. + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://example.com/registry/allocation-instruction/v1/allocation-factory' \ + --header 'Content-Type: application/json' \ + --data '{"choiceArguments":{},"excludeDebugFields":false}' +``` + + + + + + +```json 200 response +{ + "factoryId": "string", + "choiceContext": { + "choiceContextData": {}, + "disclosedContracts": [ + {} + ] + } +} +``` + + diff --git a/docs-main/reference/splice-allocation-instruction-v2-api/post-registryallocation-instructionv2:allocationinstructionidchoice-contextsaccept.mdx b/docs-main/reference/splice-allocation-instruction-v2-api/post-registryallocation-instructionv2:allocationinstructionidchoice-contextsaccept.mdx new file mode 100644 index 000000000..b420f4d69 --- /dev/null +++ b/docs-main/reference/splice-allocation-instruction-v2-api/post-registryallocation-instructionv2:allocationinstructionidchoice-contextsaccept.mdx @@ -0,0 +1,271 @@ +--- +title: "Get the choice context to accept an allocation instruction" +api: "POST https://example.com/registry/allocation-instruction/v2/{allocationInstructionId}/choice-contexts/accept" +playground: "interactive" +--- + +
+ + + +
+ +

Allocation Instruction V2 API

+ + +

Get the choice context to accept an allocation instruction

+ + + +
+ + OpenAPI + + Since 0.6.11 + +
+ + +
+ +Get the choice context to accept an allocation instruction. + +## Protocol Details + + + +
+ +
+ Operation ID + getAllocationInstructionAcceptContext +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + +The contract ID of the allocation instruction to accept. + + + + + + + + + + +### Request body + + +
+ + application/json + +
+ + + + + + + + +Metadata that will be passed to the choice, and should be incorporated into the choice context. Provided for extensibility. + + + + + + +If set to true, the response will not include fields prefixed with 'debug'. Useful to save bandwidth. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +The additional data to use when exercising the choice. + + + + + +The contracts that are required to be disclosed to the participant node for exercising the choice. + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 409 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.6.11 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://example.com/registry/allocation-instruction/v2/{allocationInstructionId}/choice-contexts/accept' \ + --header 'Content-Type: application/json' \ + --data '{"meta":{},"excludeDebugFields":false}' +``` + + + + + + +```json 200 response +{ + "choiceContextData": {}, + "disclosedContracts": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-allocation-instruction-v2-api/post-registryallocation-instructionv2:allocationinstructionidchoice-contextswithdraw.mdx b/docs-main/reference/splice-allocation-instruction-v2-api/post-registryallocation-instructionv2:allocationinstructionidchoice-contextswithdraw.mdx new file mode 100644 index 000000000..b30ba8a6c --- /dev/null +++ b/docs-main/reference/splice-allocation-instruction-v2-api/post-registryallocation-instructionv2:allocationinstructionidchoice-contextswithdraw.mdx @@ -0,0 +1,271 @@ +--- +title: "Get the choice context to withdraw an allocation instruction" +api: "POST https://example.com/registry/allocation-instruction/v2/{allocationInstructionId}/choice-contexts/withdraw" +playground: "interactive" +--- + +
+ + + +
+ +

Allocation Instruction V2 API

+ + +

Get the choice context to withdraw an allocation instruction

+ + + +
+ + OpenAPI + + Since 0.6.11 + +
+ + +
+ +Get the choice context to withdraw an allocation instruction. + +## Protocol Details + + + +
+ +
+ Operation ID + getAllocationInstructionWithdrawContext +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + +The contract ID of the allocation instruction to withdraw. + + + + + + + + + + +### Request body + + +
+ + application/json + +
+ + + + + + + + +Metadata that will be passed to the choice, and should be incorporated into the choice context. Provided for extensibility. + + + + + + +If set to true, the response will not include fields prefixed with 'debug'. Useful to save bandwidth. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +The additional data to use when exercising the choice. + + + + + +The contracts that are required to be disclosed to the participant node for exercising the choice. + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 409 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.6.11 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://example.com/registry/allocation-instruction/v2/{allocationInstructionId}/choice-contexts/withdraw' \ + --header 'Content-Type: application/json' \ + --data '{"meta":{},"excludeDebugFields":false}' +``` + + + + + + +```json 200 response +{ + "choiceContextData": {}, + "disclosedContracts": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-allocation-instruction-v2-api/post-registryallocation-instructionv2allocation-factory.mdx b/docs-main/reference/splice-allocation-instruction-v2-api/post-registryallocation-instructionv2allocation-factory.mdx new file mode 100644 index 000000000..0dadb4b38 --- /dev/null +++ b/docs-main/reference/splice-allocation-instruction-v2-api/post-registryallocation-instructionv2allocation-factory.mdx @@ -0,0 +1,253 @@ +--- +title: "Allocation factory" +api: "POST https://example.com/registry/allocation-instruction/v2/allocation-factory" +playground: "interactive" +--- + +
+ + + +
+ +

Allocation Instruction V2 API

+ + +

Allocation factory

+ + + +
+ + OpenAPI + + Since 0.6.11 + +
+ + +
+ +Get the factory and choice context for creating allocations using the `AllocationFactory_Allocate` choice. Registries MAY limit the size of the allocations that they support. To ensure wide compatibility with apps, registries MUST support creating allocations that involve at most 25 transfer legs. + +## Protocol Details + + + +
+ +
+ Operation ID + getAllocationFactory +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Request body + + +
+ + application/json + +
+ + + + + + + + +The arguments that are intended to be passed to the choice provided by the factory. To avoid repeating the Daml type definitions, they are specified as JSON objects. However the concrete format is given by how the choice arguments are encoded using the Daml JSON API (with the `extraArgs.context` and `extraArgs.meta` fields set to the empty object). The choice arguments are provided so that the registry can also provide choice-argument specific contracts, e.g., the configuration for a specific instrument-id. + + + + + + +If set to true, the response will not include fields prefixed with 'debug'. Useful to save bandwidth. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +The contract ID of the contract implementing the factory interface. + + + + + +The context required to exercise a choice on a contract via an interface. Used to retrieve additional reference data that is passed in via disclosed contracts, which are in turn referred to via their contract ID in the `choiceContextData`. Asset implementations SHOULD avoid that this value depends on contract-ids passed in the choice arguments, so that clients can prefetch choice contexts when chaining multiple token standard actions together in a single Daml transaction. + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 409 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.6.11 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://example.com/registry/allocation-instruction/v2/allocation-factory' \ + --header 'Content-Type: application/json' \ + --data '{"choiceArguments":{},"excludeDebugFields":false}' +``` + + + + + + +```json 200 response +{ + "factoryId": "string", + "choiceContext": { + "choiceContextData": {}, + "disclosedContracts": [ + {} + ] + } +} +``` + + diff --git a/docs-main/reference/splice-allocation-v2-api/post-registryallocationsv2:allocationidchoice-contextscancel.mdx b/docs-main/reference/splice-allocation-v2-api/post-registryallocationsv2:allocationidchoice-contextscancel.mdx new file mode 100644 index 000000000..05256faa3 --- /dev/null +++ b/docs-main/reference/splice-allocation-v2-api/post-registryallocationsv2:allocationidchoice-contextscancel.mdx @@ -0,0 +1,271 @@ +--- +title: "Get the choice context to cancel an allocation" +api: "POST https://example.com/registry/allocations/v2/{allocationId}/choice-contexts/cancel" +playground: "interactive" +--- + +
+ + + +
+ +

Allocation V2 API

+ + +

Get the choice context to cancel an allocation

+ + + +
+ + OpenAPI + + Since 0.6.11 + +
+ + +
+ +Get the choice context to cancel an allocation. + +## Protocol Details + + + +
+ +
+ Operation ID + getAllocationCancelContext +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + +The contract ID of the allocation to cancel. + + + + + + + + + + +### Request body + + +
+ + application/json + +
+ + + + + + + + +Metadata that will be passed to the choice, and should be incorporated into the choice context. Provided for extensibility. + + + + + + +If set to true, the response will not include fields prefixed with 'debug'. Useful to save bandwidth. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +The additional data to use when exercising the choice. + + + + + +The contracts that are required to be disclosed to the participant node for exercising the choice. + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 409 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.6.11 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://example.com/registry/allocations/v2/{allocationId}/choice-contexts/cancel' \ + --header 'Content-Type: application/json' \ + --data '{"meta":{},"excludeDebugFields":false}' +``` + + + + + + +```json 200 response +{ + "choiceContextData": {}, + "disclosedContracts": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-allocation-v2-api/post-registryallocationsv2:allocationidchoice-contextswithdraw.mdx b/docs-main/reference/splice-allocation-v2-api/post-registryallocationsv2:allocationidchoice-contextswithdraw.mdx new file mode 100644 index 000000000..6b72771cd --- /dev/null +++ b/docs-main/reference/splice-allocation-v2-api/post-registryallocationsv2:allocationidchoice-contextswithdraw.mdx @@ -0,0 +1,271 @@ +--- +title: "Get the choice context to withdraw an allocation" +api: "POST https://example.com/registry/allocations/v2/{allocationId}/choice-contexts/withdraw" +playground: "interactive" +--- + +
+ + + +
+ +

Allocation V2 API

+ + +

Get the choice context to withdraw an allocation

+ + + +
+ + OpenAPI + + Since 0.6.11 + +
+ + +
+ +Get the choice context to withdraw an allocation. + +## Protocol Details + + + +
+ +
+ Operation ID + getAllocationWithdrawContext +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + +The contract ID of the allocation to withdraw. + + + + + + + + + + +### Request body + + +
+ + application/json + +
+ + + + + + + + +Metadata that will be passed to the choice, and should be incorporated into the choice context. Provided for extensibility. + + + + + + +If set to true, the response will not include fields prefixed with 'debug'. Useful to save bandwidth. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +The additional data to use when exercising the choice. + + + + + +The contracts that are required to be disclosed to the participant node for exercising the choice. + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 409 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.6.11 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://example.com/registry/allocations/v2/{allocationId}/choice-contexts/withdraw' \ + --header 'Content-Type: application/json' \ + --data '{"meta":{},"excludeDebugFields":false}' +``` + + + + + + +```json 200 response +{ + "choiceContextData": {}, + "disclosedContracts": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-allocation-v2-api/post-registryallocationv2settlement-factory.mdx b/docs-main/reference/splice-allocation-v2-api/post-registryallocationv2settlement-factory.mdx new file mode 100644 index 000000000..220cf3198 --- /dev/null +++ b/docs-main/reference/splice-allocation-v2-api/post-registryallocationv2settlement-factory.mdx @@ -0,0 +1,253 @@ +--- +title: "Settlement factory" +api: "POST https://example.com/registry/allocation/v2/settlement-factory" +playground: "interactive" +--- + +
+ + + +
+ +

Allocation V2 API

+ + +

Settlement factory

+ + + +
+ + OpenAPI + + Since 0.6.11 + +
+ + +
+ +Get the factory and choice context for settling allocations using the `SettlementFactory_SettleBatch` choice. Registries MAY limit the size of the settlement requests that they support. To ensure wide compatibility with apps, registries MUST support all settlement requests that involve at most 25 transfer legs. + +## Protocol Details + + + +
+ +
+ Operation ID + getSettlementFactory +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Request body + + +
+ + application/json + +
+ + + + + + + + +The arguments that are intended to be passed to the choice provided by the factory. To avoid repeating the Daml type definitions, they are specified as JSON objects. However the concrete format is given by how the choice arguments are encoded using the Daml JSON API (with the `extraArgs.context` and `extraArgs.meta` fields set to the empty object). The choice arguments are provided so that the registry can also provide choice-argument specific contracts, e.g., the configuration for a specific instrument-id. + + + + + + +If set to true, the response will not include fields prefixed with 'debug'. Useful to save bandwidth. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +The contract ID of the contract implementing the factory interface. + + + + + +The context required to exercise a choice on a contract via an interface. Used to retrieve additional reference data that is passed in via disclosed contracts, which are in turn referred to via their contract ID in the `choiceContextData`. Asset implementations SHOULD avoid that this value depends on contract-ids passed in the choice arguments, so that clients can prefetch choice contexts when chaining multiple token standard actions together in a single Daml transaction. + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 409 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.6.11 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://example.com/registry/allocation/v2/settlement-factory' \ + --header 'Content-Type: application/json' \ + --data '{"choiceArguments":{},"excludeDebugFields":false}' +``` + + + + + + +```json 200 response +{ + "factoryId": "string", + "choiceContext": { + "choiceContextData": {}, + "disclosedContracts": [ + {} + ] + } +} +``` + + diff --git a/docs-main/reference/splice-ans-api/get-v0entryall.mdx b/docs-main/reference/splice-ans-api/get-v0entryall.mdx new file mode 100644 index 000000000..58263b7cf --- /dev/null +++ b/docs-main/reference/splice-ans-api/get-v0entryall.mdx @@ -0,0 +1,188 @@ +--- +title: "Lists all ANS entries owned by the user" +api: "GET https://example.com/api/validator/v0/entry/all" +authMethod: "bearer" +playground: "interactive" +--- + +
+ + + +
+ +

ANS API

+ + +

Lists all ANS entries owned by the user

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +Lists all ANS entries owned by the user. Expired entries are not included in the response, even if the corresponding contracts are still active on the ledger. + +## Protocol Details + + + +
+ +
+ Operation ID + listAnsEntries +
+ +
+ Authentication + Bearer token +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 500 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://example.com/api/validator/v0/entry/all' \ + --header 'Authorization: Bearer $TOKEN' +``` + + + + + + +```json 200 response +{ + "entries": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-ans-api/post-v0entrycreate.mdx b/docs-main/reference/splice-ans-api/post-v0entrycreate.mdx new file mode 100644 index 000000000..c384a14ac --- /dev/null +++ b/docs-main/reference/splice-ans-api/post-v0entrycreate.mdx @@ -0,0 +1,255 @@ +--- +title: "Requests the creation of a new ANS entry" +api: "POST https://example.com/api/validator/v0/entry/create" +authMethod: "bearer" +playground: "interactive" +--- + +
+ + + +
+ +

ANS API

+ + +

Requests the creation of a new ANS entry

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +Requests the creation of a new ANS entry. ANS entries need to be paid and renewed via subscription payments. Upon requesting the creation of the ANS entry, a subscription request is created. The user may accept the subscription request via their wallet by offering the initial payment. Once the subscription request is accepted, the DSO automation burns the payment and creates the ANS entry. + +## Protocol Details + + + +
+ +
+ Operation ID + createAnsEntry +
+ +
+ Authentication + Bearer token +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Request body + + +
+ + application/json + +
+ + + + + + + + +The name of the ANS entry. It must end with `.unverified.<ans>` where `<ans>` is the ANS acronym chosen by the DSO. + + + + + + +A valid URL or an empty string. Use this to link to a website, such as the homepage of an application provided by the owner of this entry. Must not be longer than 255 characters. + + + + + + +A human readable description of the ANS entry. May be empty. Must not be longer than 140 characters. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + +The name of the ANS entry, as specified in the request. + + + + + +The URL of the ANS entry, as specified in the request. + + + + + +The description of the ANS entry, as specified in the request. + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 500 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://example.com/api/validator/v0/entry/create' \ + --header 'Authorization: Bearer $TOKEN' \ + --header 'Content-Type: application/json' \ + --data '{"name":"string","url":"string","description":"string"}' +``` + + + + + + +```json 200 response +{ + "entryContextCid": "string", + "subscriptionRequestCid": "string", + "name": "string", + "url": "string", + "description": "string" +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-livez.mdx b/docs-main/reference/splice-scan-api/get-livez.mdx new file mode 100644 index 000000000..de74bd417 --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-livez.mdx @@ -0,0 +1,110 @@ +--- +title: "Is live" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/livez" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Is live

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +## Protocol Details + + + +
+ +
+ Operation ID + isLive +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +## Outputs + + + +### 200 + + + + + + + +### 503 + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/livez' +``` + + diff --git a/docs-main/reference/splice-scan-api/get-readyz.mdx b/docs-main/reference/splice-scan-api/get-readyz.mdx new file mode 100644 index 000000000..d35fd48fc --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-readyz.mdx @@ -0,0 +1,110 @@ +--- +title: "Is ready" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/readyz" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Is ready

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +## Protocol Details + + + +
+ +
+ Operation ID + isReady +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +## Outputs + + + +### 200 + + + + + + + +### 503 + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/readyz' +``` + + diff --git a/docs-main/reference/splice-scan-api/get-status.mdx b/docs-main/reference/splice-scan-api/get-status.mdx new file mode 100644 index 000000000..71506cae7 --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-status.mdx @@ -0,0 +1,129 @@ +--- +title: "Health status" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/status" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Health status

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +## Protocol Details + + + +
+ +
+ Operation ID + getHealthStatus +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/status' +``` + + + + + + +```json 200 response +{ + "success": {} +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0acs:party.mdx b/docs-main/reference/splice-scan-api/get-v0acs:party.mdx new file mode 100644 index 000000000..7d3ffd963 --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0acs:party.mdx @@ -0,0 +1,177 @@ +--- +title: "**Deprecated**" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/acs/{party}" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

**Deprecated**

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +**Deprecated**. Fetch the current SV participant ACS snapshot for the DSO and `party`. + +## Protocol Details + + + +
+ +
+ Operation ID + getAcsSnapshot +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + + + + + + + + + +### Query parameters + + + + + + + + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +base64-encoded ACS snapshot for the intersection of the DSO party and the requested party’s ACS + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Deprecated + 0.5.10 +
+ +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/acs/{party}' +``` + + + + + + +```json 200 response +{ + "acs_snapshot": "string" +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0active-synchronizer-serial.mdx b/docs-main/reference/splice-scan-api/get-v0active-synchronizer-serial.mdx new file mode 100644 index 000000000..0b183feea --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0active-synchronizer-serial.mdx @@ -0,0 +1,181 @@ +--- +title: "Get the current physical synchronizer serial as reported by the SV participant" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/active-synchronizer-serial" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Get the current physical synchronizer serial as reported by the SV participant

+ + + +
+ + OpenAPI + + Since 0.6.0 + +
+ + +
+ +Get the current physical synchronizer serial as reported by the SV participant. + +## Protocol Details + + + +
+ +
+ Operation ID + getActivePhysicalSynchronizerSerial +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +The current physical synchronizer serial as reported by the SV participant. + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 500 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.6.0 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/active-synchronizer-serial' +``` + + + + + + +```json 200 response +{ + "serial": 0 +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0adminsvvoterequests.mdx b/docs-main/reference/splice-scan-api/get-v0adminsvvoterequests.mdx new file mode 100644 index 000000000..8ecad6d84 --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0adminsvvoterequests.mdx @@ -0,0 +1,133 @@ +--- +title: "List all active `VoteRequest`\\ s" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/admin/sv/voterequests" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

List all active `VoteRequest`\ s

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +List all active `VoteRequest`\ s. + +## Protocol Details + + + +
+ +
+ Operation ID + listDsoRulesVoteRequests +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/admin/sv/voterequests' +``` + + + + + + +```json 200 response +{ + "dso_rules_vote_requests": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0adminvalidatorlicenses.mdx b/docs-main/reference/splice-scan-api/get-v0adminvalidatorlicenses.mdx new file mode 100644 index 000000000..843af8e4e --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0adminvalidatorlicenses.mdx @@ -0,0 +1,174 @@ +--- +title: "List all validators currently approved by members of the DSO, paginated, sorted newest-first" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/admin/validator/licenses" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

List all validators currently approved by members of the DSO, paginated, sorted newest-first

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +List all validators currently approved by members of the DSO, paginated, sorted newest-first. + +## Protocol Details + + + +
+ +
+ Operation ID + listValidatorLicenses +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Query parameters + + + + + + + + +OpenAPI type: `integer (int64)`. + + +A `next_page_token` from a prior response; if absent, return the first page. + + + + + +OpenAPI type: `integer (int32)`. + + +Maximum number of elements to return, 1000 by default. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +Contracts of Daml template `Splice.ValidatorLicense:ValidatorLicense`. + + + + + +When requesting the next page of results, pass this as URL query parameter `after`. If absent or `null`, there are no more pages. + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/admin/validator/licenses' +``` + + + + + + +```json 200 response +{ + "validator_licenses": [ + {} + ], + "next_page_token": 0 +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0amulet-config-for-round.mdx b/docs-main/reference/splice-scan-api/get-v0amulet-config-for-round.mdx new file mode 100644 index 000000000..82a994120 --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0amulet-config-for-round.mdx @@ -0,0 +1,206 @@ +--- +title: "**Deprecated**" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/amulet-config-for-round" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

**Deprecated**

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +**Deprecated**. Retrieve some information from the `AmuletRules` selected for the given round + +## Protocol Details + + + +
+ +
+ Operation ID + getAmuletConfigForRound +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Query parameters + + + + + + + + +OpenAPI type: `integer (int64)`. + + + + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Deprecated + 0.5.10 +
+ +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/amulet-config-for-round' +``` + + + + + + +```json 200 response +{ + "amulet_create_fee": "string", + "holding_fee": "string", + "lock_holder_fee": "string", + "transfer_fee": { + "initial": "string", + "steps": [ + {} + ] + } +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0amulet-pricevotes.mdx b/docs-main/reference/splice-scan-api/get-v0amulet-pricevotes.mdx new file mode 100644 index 000000000..437369e12 --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0amulet-pricevotes.mdx @@ -0,0 +1,133 @@ +--- +title: "Retrieve a list of the latest amulet price votes" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/amulet-price/votes" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Retrieve a list of the latest amulet price votes

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +Retrieve a list of the latest amulet price votes + +## Protocol Details + + + +
+ +
+ Operation ID + listAmuletPriceVotes +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/amulet-price/votes' +``` + + + + + + +```json 200 response +{ + "amulet_price_votes": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0ans-entries.mdx b/docs-main/reference/splice-scan-api/get-v0ans-entries.mdx new file mode 100644 index 000000000..d0d4547de --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0ans-entries.mdx @@ -0,0 +1,163 @@ +--- +title: "List ans entries" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/ans-entries" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

List ans entries

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +Lists all non-expired ANS entries whose names are prefixed with the `name_prefix`, up to `page_size` entries. + +## Protocol Details + + + +
+ +
+ Operation ID + listAnsEntries +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Query parameters + + + + + + + + + +Every result's name will start with this substring; if empty or absent, all entries will be listed. Does not have to be a whole word or segment; any substring will be accepted. + + + + + +OpenAPI type: `integer (int32)`. + + +The maximum number of results returned. Older (but still non-expired) results are listed first. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/ans-entries' +``` + + + + + + +```json 200 response +{ + "entries": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0ans-entriesby-name:name.mdx b/docs-main/reference/splice-scan-api/get-v0ans-entriesby-name:name.mdx new file mode 100644 index 000000000..4e2ee3603 --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0ans-entriesby-name:name.mdx @@ -0,0 +1,180 @@ +--- +title: "If present, the ANS entry named exactly `name`" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/ans-entries/by-name/{name}" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

If present, the ANS entry named exactly `name`

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +If present, the ANS entry named exactly `name`. + +## Protocol Details + + + +
+ +
+ Operation ID + lookupAnsEntryByName +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/ans-entries/by-name/{name}' +``` + + + + + + +```json 200 response +{ + "entry": { + "contract_id": "string", + "user": "string", + "name": "string", + "url": "string", + "description": "string", + "expires_at": "2026-01-01T00:00:00Z" + } +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0ans-entriesby-party:party.mdx b/docs-main/reference/splice-scan-api/get-v0ans-entriesby-party:party.mdx new file mode 100644 index 000000000..f3ef15504 --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0ans-entriesby-party:party.mdx @@ -0,0 +1,183 @@ +--- +title: "If present, the first ANS entry for user `party` according to `name` lexicographic order" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/ans-entries/by-party/{party}" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

If present, the first ANS entry for user `party` according to `name` lexicographic order

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +If present, the first ANS entry for user `party` according to `name` lexicographic order. + +## Protocol Details + + + +
+ +
+ Operation ID + lookupAnsEntryByParty +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + +The user party ID that holds the ANS entry. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/ans-entries/by-party/{party}' +``` + + + + + + +```json 200 response +{ + "entry": { + "contract_id": "string", + "user": "string", + "name": "string", + "url": "string", + "description": "string", + "expires_at": "2026-01-01T00:00:00Z" + } +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0backfillingstatus.mdx b/docs-main/reference/splice-scan-api/get-v0backfillingstatus.mdx new file mode 100644 index 000000000..ce7dd15f0 --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0backfillingstatus.mdx @@ -0,0 +1,133 @@ +--- +title: "Retrieve the status of the backfilling process" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/backfilling/status" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Retrieve the status of the backfilling process

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +Retrieve the status of the backfilling process. + +## Protocol Details + + + +
+ +
+ Operation ID + getBackfillingStatus +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +True if ALL backfilling processes are complete, false otherwise. Some scan endpoints return error responses if backfilling is not complete (e.g., `/v1/updates`), others return partial results (e.g., `/v0/transactions`). This endpoint is a simple indicator for whether historical information may be incomplete. To determine the progress of individual backfilling processes, inspect the corresponding metrics. + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/backfilling/status' +``` + + + + + + +```json 200 response +{ + "complete": false +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0closed-rounds.mdx b/docs-main/reference/splice-scan-api/get-v0closed-rounds.mdx new file mode 100644 index 000000000..f983d65e4 --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0closed-rounds.mdx @@ -0,0 +1,135 @@ +--- +title: "Closed rounds" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/closed-rounds" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Closed rounds

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +Every closed mining round on the ledger still in post-close process for the connected Splice network, in round number order, earliest-first. + +## Protocol Details + + + +
+ +
+ Operation ID + getClosedRounds +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +Contracts of the Daml template `Splice.Round:ClosedMiningRound`, one for every closed round that is still in process, i.e. it either has unprocessed rewards or a missing `Splice.DsoRules:Confirmation`. + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/closed-rounds' +``` + + + + + + +```json 200 response +{ + "rounds": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0domains:domain_idmembers:member_idtraffic-status.mdx b/docs-main/reference/splice-scan-api/get-v0domains:domain_idmembers:member_idtraffic-status.mdx new file mode 100644 index 000000000..4caf6a2b6 --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0domains:domain_idmembers:member_idtraffic-status.mdx @@ -0,0 +1,234 @@ +--- +title: "Member traffic status" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/domains/{domain_id}/members/{member_id}/traffic-status" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Member traffic status

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +Get a member's traffic status as reported by the sequencer, according to ledger state at the time of the request. + +## Protocol Details + + + +
+ +
+ Operation ID + getMemberTrafficStatus +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + +The synchronizer ID to look up traffic for. + + + + + + +The participant or mediator whose traffic to look up, in the format `code::id::fingerprint` where `code` is `PAR` or `MED`. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 500 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/domains/{domain_id}/members/{member_id}/traffic-status' +``` + + + + + + +```json 200 response +{ + "traffic_status": { + "actual": {}, + "target": {} + } +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0domains:domain_idparties:party_idparticipant-id.mdx b/docs-main/reference/splice-scan-api/get-v0domains:domain_idparties:party_idparticipant-id.mdx new file mode 100644 index 000000000..61804d8fb --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0domains:domain_idparties:party_idparticipant-id.mdx @@ -0,0 +1,209 @@ +--- +title: "Get the ID of the participant hosting a given party" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/domains/{domain_id}/parties/{party_id}/participant-id" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Get the ID of the participant hosting a given party

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +Get the ID of the participant hosting a given party. This will fail if there are multiple party-to-participant mappings for the given synchronizer and party, which is not currently supported. + +## Protocol Details + + + +
+ +
+ Operation ID + getPartyToParticipant +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + +The synchronizer ID to look up a mapping for. + + + + + + +The party ID to lookup a participant ID for. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +ID of the participant hosting the provided party, in the form `PAR::id::fingerprint` + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 500 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/domains/{domain_id}/parties/{party_id}/participant-id' +``` + + + + + + +```json 200 response +{ + "participant_id": "string" +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0dso-party-id.mdx b/docs-main/reference/splice-scan-api/get-v0dso-party-id.mdx new file mode 100644 index 000000000..8732f432c --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0dso-party-id.mdx @@ -0,0 +1,131 @@ +--- +title: "The party ID of the DSO for the Splice network connected by this Scan app" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/dso-party-id" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

The party ID of the DSO for the Splice network connected by this Scan app

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +The party ID of the DSO for the Splice network connected by this Scan app. + +## Protocol Details + + + +
+ +
+ Operation ID + getDsoPartyId +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/dso-party-id' +``` + + + + + + +```json 200 response +{ + "dso_party_id": "string" +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0dso-sequencers.mdx b/docs-main/reference/splice-scan-api/get-v0dso-sequencers.mdx new file mode 100644 index 000000000..5df6aee12 --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0dso-sequencers.mdx @@ -0,0 +1,145 @@ +--- +title: "Retrieve Canton sequencer configuration for all SVs, grouped by connected synchronizer ID" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/dso-sequencers" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Retrieve Canton sequencer configuration for all SVs, grouped by connected synchronizer ID

+ + + +
+ + OpenAPI + + Since 0.5.10 + + Changed 0.6.0 + +
+ + +
+ +Retrieve Canton sequencer configuration for all SVs, grouped by connected synchronizer ID + +## Protocol Details + + + +
+ +
+ Operation ID + listDsoSequencers +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Changed + 0.6.0 +
+ +

The GET /v0/dso-sequencers operation changed in this snapshot.

+ +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/dso-sequencers' +``` + + + + + + +```json 200 response +{ + "domainSequencers": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0dso.mdx b/docs-main/reference/splice-scan-api/get-v0dso.mdx new file mode 100644 index 000000000..25fe6a2c9 --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0dso.mdx @@ -0,0 +1,192 @@ +--- +title: "Dso info" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/dso" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Dso info

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +## Protocol Details + + + +
+ +
+ Operation ID + getDsoInfo +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +User ID representing the SV + + + + + +Party representing the SV + + + + + +Party representing the whole DSO; for Scan only, also returned by `/v0/dso-party-id` + + + + + +Threshold required to pass vote requests; also known as the "governance threshold", it is always derived from the number of `svs` in `dso_rules` + + + + + + + + + + + + + + + + + +For every one of `svs` listed in `dso_rules`, a contract of the Daml template `Splice.DSO.SvState.SvNodeState`. This does not include states for offboarded SVs, though they may still have an on-ledger state contract + + + + + +Initial round from which the network bootstraps + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/dso' +``` + + + + + + +```json 200 response +{ + "sv_user": "string", + "sv_party_id": "string", + "dso_party_id": "string", + "voting_threshold": 0, + "latest_mining_round": { + "contract": {}, + "domain_id": "string" + }, + "amulet_rules": { + "contract": {}, + "domain_id": "string" + }, + "dso_rules": { + "contract": {}, + "domain_id": "string" + }, + "sv_node_states": [ + {} + ], + "initial_round": "string" +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0events:update_id.mdx b/docs-main/reference/splice-scan-api/get-v0events:update_id.mdx new file mode 100644 index 000000000..8f2bdfc14 --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0events:update_id.mdx @@ -0,0 +1,330 @@ +--- +title: "Returns the event with the given update_id" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/events/{update_id}" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Returns the event with the given update_id

+ + + +
+ + OpenAPI + + Since 0.5.10 + + Changed 0.6.10 + +
+ + +
+ +Returns the event with the given update_id. An event bears some combination of a transaction, a contract reassignment, and a verdict. + +## Protocol Details + + + +
+ +
+ Operation ID + getEventById +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + + + + + + + + + +### Query parameters + + + + + + + + +OpenAPI type: `DamlValueEncoding`. + + + + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +An individual item in the update history. May be a transaction or a contract reassignment. + + + + + + + + + +Traffic summary data from the sequencer for the confirmation request corresponding to an event. + + + + + +App activity record computed from verdicts and traffic summaries as per [CIP-104](https://github.com/canton-foundation/cips/blob/main/cip-0104/cip-0104.md). + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 500 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Changed + 0.6.10 +
+ +

The GET /v0/events/{update_id} operation changed in this snapshot.

+ +
+ +
+
+ Changed + 0.6.0 +
+ +

The GET /v0/events/{update_id} operation changed in this snapshot.

+ +
+ +
+
+ Changed + 0.5.17 +
+ +

The GET /v0/events/{update_id} operation changed in this snapshot.

+ +
+ +
+
+ Changed + 0.5.15 +
+ +

The GET /v0/events/{update_id} operation changed in this snapshot.

+ +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/events/{update_id}' +``` + + + + + + +```json 200 response +{ + "update": {}, + "verdict": { + "update_id": "string", + "migration_id": 0, + "domain_id": "string", + "record_time": "string", + "finalization_time": "string", + "submitting_parties": [ + "string" + ], + "submitting_participant_uid": "string", + "verdict_result": {}, + "mediator_group": 0, + "transaction_views": {} + }, + "traffic_summary": { + "total_traffic_cost": 0, + "envelope_traffic_summaries": [ + {} + ] + }, + "app_activity_records": { + "round_number": 0, + "records": [ + {} + ] + } +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0feature-support.mdx b/docs-main/reference/splice-scan-api/get-v0feature-support.mdx new file mode 100644 index 000000000..a3a6f6fd5 --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0feature-support.mdx @@ -0,0 +1,165 @@ +--- +title: "Feature support" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/feature-support" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Feature support

+ + + +
+ + OpenAPI + + Since 0.5.10 + + Changed 0.5.16 + +
+ + +
+ +## Protocol Details + + + +
+ +
+ Operation ID + featureSupport +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 500 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Changed + 0.5.16 +
+ +

The GET /v0/feature-support operation changed in this snapshot.

+ +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/feature-support' +``` + + + + + + +```json 200 response +{ + "dummy": false +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0featured-apps.mdx b/docs-main/reference/splice-scan-api/get-v0featured-apps.mdx new file mode 100644 index 000000000..96837b25b --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0featured-apps.mdx @@ -0,0 +1,133 @@ +--- +title: "List every `FeaturedAppRight` registered with the DSO on the ledger" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/featured-apps" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

List every `FeaturedAppRight` registered with the DSO on the ledger

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +List every `FeaturedAppRight` registered with the DSO on the ledger. + +## Protocol Details + + + +
+ +
+ Operation ID + listFeaturedAppRights +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/featured-apps' +``` + + + + + + +```json 200 response +{ + "featured_apps": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0featured-apps:provider_party_id.mdx b/docs-main/reference/splice-scan-api/get-v0featured-apps:provider_party_id.mdx new file mode 100644 index 000000000..2ead1a697 --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0featured-apps:provider_party_id.mdx @@ -0,0 +1,155 @@ +--- +title: "Lookup featured app right" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/featured-apps/{provider_party_id}" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Lookup featured app right

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +If `provider_party_id` has a `FeaturedAppRight` registered with the DSO, return it; `featured_app_right` will be empty otherwise. + +## Protocol Details + + + +
+ +
+ Operation ID + lookupFeaturedAppRight +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/featured-apps/{provider_party_id}' +``` + + + + + + +```json 200 response +{ + "featured_app_right": { + "template_id": "string", + "contract_id": "string", + "payload": {}, + "created_event_blob": "string", + "created_at": "string" + } +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0featured-appsby-contract-id:contract_id.mdx b/docs-main/reference/splice-scan-api/get-v0featured-appsby-contract-id:contract_id.mdx new file mode 100644 index 000000000..5567665ba --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0featured-appsby-contract-id:contract_id.mdx @@ -0,0 +1,155 @@ +--- +title: "Look up a `FeaturedAppRight` contract by its contract ID" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/featured-apps/by-contract-id/{contract_id}" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Look up a `FeaturedAppRight` contract by its contract ID

+ + + +
+ + OpenAPI + + Since 0.6.0 + +
+ + +
+ +Look up a `FeaturedAppRight` contract by its contract ID. Returns `featured_app_right` if found, empty otherwise. + +## Protocol Details + + + +
+ +
+ Operation ID + lookupFeaturedAppRightByContractId +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.6.0 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/featured-apps/by-contract-id/{contract_id}' +``` + + + + + + +```json 200 response +{ + "featured_app_right": { + "template_id": "string", + "contract_id": "string", + "payload": {}, + "created_event_blob": "string", + "created_at": "string" + } +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0featured-appsby-provider:provider_party_id.mdx b/docs-main/reference/splice-scan-api/get-v0featured-appsby-provider:provider_party_id.mdx new file mode 100644 index 000000000..4128cd1b6 --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0featured-appsby-provider:provider_party_id.mdx @@ -0,0 +1,151 @@ +--- +title: "List all `FeaturedAppRight` contracts for the given provider" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/featured-apps/by-provider/{provider_party_id}" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

List all `FeaturedAppRight` contracts for the given provider

+ + + +
+ + OpenAPI + + Since 0.6.0 + +
+ + +
+ +List all `FeaturedAppRight` contracts for the given provider. + +## Protocol Details + + + +
+ +
+ Operation ID + listFeaturedAppRightsByProvider +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.6.0 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/featured-apps/by-provider/{provider_party_id}' +``` + + + + + + +```json 200 response +{ + "featured_apps": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0historybulkacs.mdx b/docs-main/reference/splice-scan-api/get-v0historybulkacs.mdx new file mode 100644 index 000000000..9dfb38f1d --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0historybulkacs.mdx @@ -0,0 +1,213 @@ +--- +title: "List bulk acs snapshot objects" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/history/bulk/acs" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

List bulk acs snapshot objects

+ + + +
+ + OpenAPI + + Since 0.5.17 + +
+ + +
+ +**Under Development, do not use in production yet** Get download URLs and metadata for an ACS snapshot available for bulk download, at or before a certain record time. + +## Protocol Details + + + +
+ +
+ Operation ID + listBulkAcsSnapshotObjects +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Query parameters + + + + + + + + +OpenAPI type: `string (date-time)`. + + + + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +The record time for which the ACS snapshot was taken. + + + + + +The list of references to the bulk storage objects containing the ACS snapshot data. + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 501 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.17 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/history/bulk/acs' +``` + + + + + + +```json 200 response +{ + "record_time": "2026-01-01T00:00:00Z", + "object_refs": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0internalreward-accounting-processrounds:round_numberactivity-totals.mdx b/docs-main/reference/splice-scan-api/get-v0internalreward-accounting-processrounds:round_numberactivity-totals.mdx new file mode 100644 index 000000000..a8a6a1260 --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0internalreward-accounting-processrounds:round_numberactivity-totals.mdx @@ -0,0 +1,184 @@ +--- +title: "SV node internal API (CIP-0104, subject to change)" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/internal/reward-accounting-process/rounds/{round_number}/activity-totals" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

SV node internal API (CIP-0104, subject to change)

+ + + +
+ + OpenAPI + + Since 0.6.0 + + Changed 0.6.9 + +
+ + +
+ +SV node internal API (CIP-0104, subject to change). Return the CIP-0104 per-round activity totals for the specified round number. + +## Protocol Details + + + +
+ +
+ Operation ID + getRewardAccountingActivityTotals +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + +OpenAPI type: `integer (int64)`. + + + + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Changed + 0.6.9 +
+ +

The GET /v0/internal/reward-accounting-process/rounds/{round_number}/activity-totals operation changed in this snapshot.

+ +
+ +
+
+ Changed + 0.6.5 +
+ +

The operation moved from GET /v0/reward-accounting-process/rounds/{round_number}/activity-totals to GET /v0/internal/reward-accounting-process/rounds/{round_number}/activity-totals.

+ +
+ +
+
+ Introduced + 0.6.0 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/internal/reward-accounting-process/rounds/{round_number}/activity-totals' +``` + + + + + + +```json 200 response +{ + "status": "string", + "round_number": 0, + "total_app_activity_weight": 0, + "active_parties_count": 0, + "activity_records_count": 0, + "total_app_reward_minting_allowance": "string", + "total_app_reward_thresholded": "string", + "total_app_reward_unclaimed": "string", + "rewarded_app_provider_parties_count": 0 +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0internalreward-accounting-processrounds:round_numberbatches:batch_hash.mdx b/docs-main/reference/splice-scan-api/get-v0internalreward-accounting-processrounds:round_numberbatches:batch_hash.mdx new file mode 100644 index 000000000..94ffa3323 --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0internalreward-accounting-processrounds:round_numberbatches:batch_hash.mdx @@ -0,0 +1,192 @@ +--- +title: "SV node internal API (CIP-0104, subject to change)" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/internal/reward-accounting-process/rounds/{round_number}/batches/{batch_hash}" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

SV node internal API (CIP-0104, subject to change)

+ + + +
+ + OpenAPI + + Since 0.6.0 + + Changed 0.6.5 + +
+ + +
+ +SV node internal API (CIP-0104, subject to change). Returns the contents of a reward batch identified by its hash. The response is either a list of child batch hashes (for internal nodes) or a list of minting allowances (for leaf nodes). + +## Protocol Details + + + +
+ +
+ Operation ID + getRewardAccountingBatch +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + +OpenAPI type: `integer (int64)`. + + + + + + + + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Changed + 0.6.5 +
+ +

The operation moved from GET /v0/reward-accounting-process/rounds/{round_number}/batches/{batch_hash} to GET /v0/internal/reward-accounting-process/rounds/{round_number}/batches/{batch_hash}.

+ +
+ +
+
+ Introduced + 0.6.0 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/internal/reward-accounting-process/rounds/{round_number}/batches/{batch_hash}' +``` + + + + + + +```json 200 response +{} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0internalreward-accounting-processrounds:round_numberroot-hash.mdx b/docs-main/reference/splice-scan-api/get-v0internalreward-accounting-processrounds:round_numberroot-hash.mdx new file mode 100644 index 000000000..a866e36eb --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0internalreward-accounting-processrounds:round_numberroot-hash.mdx @@ -0,0 +1,168 @@ +--- +title: "SV node internal API (CIP-0104, subject to change)" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/internal/reward-accounting-process/rounds/{round_number}/root-hash" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

SV node internal API (CIP-0104, subject to change)

+ + + +
+ + OpenAPI + + Since 0.6.0 + + Changed 0.6.5 + +
+ + +
+ +SV node internal API (CIP-0104, subject to change). Returns the root hash computed for the specified round. + +## Protocol Details + + + +
+ +
+ Operation ID + getRewardAccountingRootHash +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + +OpenAPI type: `integer (int64)`. + + + + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Changed + 0.6.5 +
+ +

The operation moved from GET /v0/reward-accounting-process/rounds/{round_number}/root-hash to GET /v0/internal/reward-accounting-process/rounds/{round_number}/root-hash.

+ +
+ +
+
+ Introduced + 0.6.0 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/internal/reward-accounting-process/rounds/{round_number}/root-hash' +``` + + + + + + +```json 200 response +{ + "status": "string", + "round_number": 0, + "root_hash": "string" +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0internalreward-accounting-processroundsearliest-available.mdx b/docs-main/reference/splice-scan-api/get-v0internalreward-accounting-processroundsearliest-available.mdx new file mode 100644 index 000000000..b0ba5d66a --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0internalreward-accounting-processroundsearliest-available.mdx @@ -0,0 +1,167 @@ +--- +title: "SV node internal API (CIP-0104, subject to change)" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/internal/reward-accounting-process/rounds/earliest-available" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

SV node internal API (CIP-0104, subject to change)

+ + + +
+ + OpenAPI + + Since 0.6.0 + + Changed 0.6.5 + +
+ + +
+ +SV node internal API (CIP-0104, subject to change). Returns the earliest round for which CIP-0104 reward accounting activity records are complete. + +## Protocol Details + + + +
+ +
+ Operation ID + getRewardAccountingEarliestAvailableRound +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Changed + 0.6.5 +
+ +

The operation moved from GET /v0/reward-accounting-process/rounds/earliest-available to GET /v0/internal/reward-accounting-process/rounds/earliest-available.

+ +
+ +
+
+ Introduced + 0.6.0 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/internal/reward-accounting-process/rounds/earliest-available' +``` + + + + + + +```json 200 response +{ + "earliest_round": 0 +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0lsu.mdx b/docs-main/reference/splice-scan-api/get-v0lsu.mdx new file mode 100644 index 000000000..a6a20650e --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0lsu.mdx @@ -0,0 +1,135 @@ +--- +title: "Retrieve information on the next logical synchronizer upgrade (LSU)" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/lsu" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Retrieve information on the next logical synchronizer upgrade (LSU)

+ + + +
+ + OpenAPI + + Since 0.6.11 + +
+ + +
+ +Retrieve information on the next logical synchronizer upgrade (LSU) + +## Protocol Details + + + +
+ +
+ Operation ID + getLsu +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.6.11 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/lsu' +``` + + + + + + +```json 200 response +{ + "lsu": { + "topologyFreezeTime": "2026-01-01T00:00:00Z", + "upgradeTime": "2026-01-01T00:00:00Z", + "successorPhysicalSynchronizerId": "string" + } +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0migrationslast.mdx b/docs-main/reference/splice-scan-api/get-v0migrationslast.mdx new file mode 100644 index 000000000..0ac2c37ba --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0migrationslast.mdx @@ -0,0 +1,131 @@ +--- +title: "Returns the last migration id that was configured for the synchronizer upgrades" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/migrations/last" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Returns the last migration id that was configured for the synchronizer upgrades

+ + + +
+ + OpenAPI + + Since 0.6.8 + +
+ + +
+ +Returns the last migration id that was configured for the synchronizer upgrades. + +## Protocol Details + + + +
+ +
+ Operation ID + getMigrationId +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.6.8 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/migrations/last' +``` + + + + + + +```json 200 response +{ + "migration_id": 0 +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0migrationsschedule.mdx b/docs-main/reference/splice-scan-api/get-v0migrationsschedule.mdx new file mode 100644 index 000000000..be8049d32 --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0migrationsschedule.mdx @@ -0,0 +1,144 @@ +--- +title: "Migration schedule" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/migrations/schedule" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Migration schedule

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +If the DSO has scheduled a synchronizer upgrade, return its planned time and the new migration ID. + +## Protocol Details + + + +
+ +
+ Operation ID + getMigrationSchedule +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + +### 404 + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/migrations/schedule' +``` + + + + + + +```json 200 response +{ + "time": "2026-01-01T00:00:00Z", + "migration_id": 0 +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0roll-forward-lsu.mdx b/docs-main/reference/splice-scan-api/get-v0roll-forward-lsu.mdx new file mode 100644 index 000000000..4934b7344 --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0roll-forward-lsu.mdx @@ -0,0 +1,135 @@ +--- +title: "Retrieve information on a roll-forward LSU" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/roll-forward-lsu" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Retrieve information on a roll-forward LSU

+ + + +
+ + OpenAPI + + Since 0.6.0 + +
+ + +
+ +Retrieve information on a roll-forward LSU + +## Protocol Details + + + +
+ +
+ Operation ID + getRollForwardLsu +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.6.0 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/roll-forward-lsu' +``` + + + + + + +```json 200 response +{ + "rollForwardLsu": { + "upgradeTime": "2026-01-01T00:00:00Z", + "currentPhysicalSynchronizerId": "string", + "successorPhysicalSynchronizerId": "string" + } +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0scans.mdx b/docs-main/reference/splice-scan-api/get-v0scans.mdx new file mode 100644 index 000000000..9afcce337 --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0scans.mdx @@ -0,0 +1,133 @@ +--- +title: "Retrieve Canton scan configuration for all SVs, grouped by connected synchronizer ID" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/scans" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Retrieve Canton scan configuration for all SVs, grouped by connected synchronizer ID

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +Retrieve Canton scan configuration for all SVs, grouped by connected synchronizer ID + +## Protocol Details + + + +
+ +
+ Operation ID + listDsoScans +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/scans' +``` + + + + + + +```json 200 response +{ + "scans": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0splice-instance-names.mdx b/docs-main/reference/splice-scan-api/get-v0splice-instance-names.mdx new file mode 100644 index 000000000..1d5583610 --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0splice-instance-names.mdx @@ -0,0 +1,192 @@ +--- +title: "Retrieve the UI names of various elements of this Splice network" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/splice-instance-names" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Retrieve the UI names of various elements of this Splice network

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +Retrieve the UI names of various elements of this Splice network. + +## Protocol Details + + + +
+ +
+ Operation ID + getSpliceInstanceNames +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +What to call this Splice network. + + + + + +URL of an HTML favicon for this Splice network. + + + + + +What this Splice network calls Amulet. + + + + + +The three-letter acronym for Amulet. + + + + + +What this Splice network calls the Amulet Name Service. + + + + + +The acronym for `name_service_name`. + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/splice-instance-names' +``` + + + + + + +```json 200 response +{ + "network_name": "string", + "network_favicon_url": "string", + "amulet_name": "string", + "amulet_name_acronym": "string", + "name_service_name": "string", + "name_service_name_acronym": "string" +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0stateacssnapshot-timestamp-after.mdx b/docs-main/reference/splice-scan-api/get-v0stateacssnapshot-timestamp-after.mdx new file mode 100644 index 000000000..818b00779 --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0stateacssnapshot-timestamp-after.mdx @@ -0,0 +1,237 @@ +--- +title: "Date of first snapshot after" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/state/acs/snapshot-timestamp-after" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Date of first snapshot after

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +Returns the timestamp of the first snapshot after the given date, for the given migration_id or larger. + +## Protocol Details + + + +
+ +
+ Operation ID + getDateOfFirstSnapshotAfter +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Query parameters + + + + + + + + +OpenAPI type: `string (date-time)`. + + + + + + + + +OpenAPI type: `integer (int64)`. + + + + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +The record time of the last transaction in the snapshot. + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 500 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/state/acs/snapshot-timestamp-after' +``` + + + + + + +```json 200 response +{ + "record_time": "2026-01-01T00:00:00Z" +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0stateacssnapshot-timestamp.mdx b/docs-main/reference/splice-scan-api/get-v0stateacssnapshot-timestamp.mdx new file mode 100644 index 000000000..84ab53a59 --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0stateacssnapshot-timestamp.mdx @@ -0,0 +1,237 @@ +--- +title: "Date of most recent snapshot before" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/state/acs/snapshot-timestamp" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Date of most recent snapshot before

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +Returns the timestamp of the most recent snapshot before the given date, for the given migration_id. This corresponds to the record time of the last transaction in the snapshot. + +## Protocol Details + + + +
+ +
+ Operation ID + getDateOfMostRecentSnapshotBefore +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Query parameters + + + + + + + + +OpenAPI type: `string (date-time)`. + + + + + + + + +OpenAPI type: `integer (int64)`. + + + + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +The record time of the last transaction in the snapshot. + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 500 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/state/acs/snapshot-timestamp' +``` + + + + + + +```json 200 response +{ + "record_time": "2026-01-01T00:00:00Z" +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0sv-bft-sequencers.mdx b/docs-main/reference/splice-scan-api/get-v0sv-bft-sequencers.mdx new file mode 100644 index 000000000..d457b938f --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0sv-bft-sequencers.mdx @@ -0,0 +1,145 @@ +--- +title: "Retrieve Canton BFT sequencer configuration for this SV, for each configured Synchronizer" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/sv-bft-sequencers" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Retrieve Canton BFT sequencer configuration for this SV, for each configured Synchronizer

+ + + +
+ + OpenAPI + + Since 0.5.10 + + Changed 0.6.0 + +
+ + +
+ +Retrieve Canton BFT sequencer configuration for this SV, for each configured Synchronizer + +## Protocol Details + + + +
+ +
+ Operation ID + listSvBftSequencers +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Changed + 0.6.0 +
+ +

The GET /v0/sv-bft-sequencers operation changed in this snapshot.

+ +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/sv-bft-sequencers' +``` + + + + + + +```json 200 response +{ + "bftSequencers": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0synchronizer-bootstrapping-transactions:domain_id_prefix.mdx b/docs-main/reference/splice-scan-api/get-v0synchronizer-bootstrapping-transactions:domain_id_prefix.mdx new file mode 100644 index 000000000..ab0785914 --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0synchronizer-bootstrapping-transactions:domain_id_prefix.mdx @@ -0,0 +1,181 @@ +--- +title: "Synchronizer bootstrapping transactions" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/synchronizer-bootstrapping-transactions/{domain_id_prefix}" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Synchronizer bootstrapping transactions

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +## Protocol Details + + + +
+ +
+ Operation ID + getSynchronizerBootstrappingTransactions +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/synchronizer-bootstrapping-transactions/{domain_id_prefix}' +``` + + + + + + +```json 200 response +{ + "domain_parameters": "string", + "sequencer_domain_state": "string", + "mediator_domain_state": "string" +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0synchronizer-identities:domain_id_prefix.mdx b/docs-main/reference/splice-scan-api/get-v0synchronizer-identities:domain_id_prefix.mdx new file mode 100644 index 000000000..7468cbbc8 --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0synchronizer-identities:domain_id_prefix.mdx @@ -0,0 +1,190 @@ +--- +title: "Synchronizer identities" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/synchronizer-identities/{domain_id_prefix}" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Synchronizer identities

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +## Protocol Details + + + +
+ +
+ Operation ID + getSynchronizerIdentities +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/synchronizer-identities/{domain_id_prefix}' +``` + + + + + + +```json 200 response +{ + "sequencer_id": "string", + "sequencer_identity_transactions": [ + "string" + ], + "mediator_id": "string", + "mediator_identity_transactions": [ + "string" + ] +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0transfer-command-counter:party.mdx b/docs-main/reference/splice-scan-api/get-v0transfer-command-counter:party.mdx new file mode 100644 index 000000000..b9fc1e238 --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0transfer-command-counter:party.mdx @@ -0,0 +1,176 @@ +--- +title: "Lookup a TransferCommandCounter by the receiver party" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/transfer-command-counter/{party}" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Lookup a TransferCommandCounter by the receiver party

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +Lookup a TransferCommandCounter by the receiver party. + +## Protocol Details + + + +
+ +
+ Operation ID + lookupTransferCommandCounterByParty +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/transfer-command-counter/{party}' +``` + + + + + + +```json 200 response +{ + "transfer_command_counter": { + "contract": {}, + "domain_id": "string" + } +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0transfer-commandstatus.mdx b/docs-main/reference/splice-scan-api/get-v0transfer-commandstatus.mdx new file mode 100644 index 000000000..6451246db --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0transfer-commandstatus.mdx @@ -0,0 +1,182 @@ +--- +title: "Lookup transfer command status" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/transfer-command/status" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Lookup transfer command status

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +Retrieve the status of all transfer commands (up to a limit of 100) of the given sender for the specified nonce. + +## Protocol Details + + + +
+ +
+ Operation ID + lookupTransferCommandStatus +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Query parameters + + + + + + + + + + + + +OpenAPI type: `integer (int64)`. + + + + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/transfer-command/status' +``` + + + + + + +```json 200 response +{ + "transfer_commands_by_contract_id": {} +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0transfer-preapprovalsby-party:party.mdx b/docs-main/reference/splice-scan-api/get-v0transfer-preapprovalsby-party:party.mdx new file mode 100644 index 000000000..351923204 --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0transfer-preapprovalsby-party:party.mdx @@ -0,0 +1,176 @@ +--- +title: "Lookup a TransferPreapproval by the receiver party" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/transfer-preapprovals/by-party/{party}" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Lookup a TransferPreapproval by the receiver party

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +Lookup a TransferPreapproval by the receiver party. + +## Protocol Details + + + +
+ +
+ Operation ID + lookupTransferPreapprovalByParty +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/transfer-preapprovals/by-party/{party}' +``` + + + + + + +```json 200 response +{ + "transfer_preapproval": { + "contract": {}, + "domain_id": "string" + } +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0unclaimed-development-fund-coupons.mdx b/docs-main/reference/splice-scan-api/get-v0unclaimed-development-fund-coupons.mdx new file mode 100644 index 000000000..808279a8f --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0unclaimed-development-fund-coupons.mdx @@ -0,0 +1,159 @@ +--- +title: "List all unclaimed development fund coupons" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/unclaimed-development-fund-coupons" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

List all unclaimed development fund coupons

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +List all unclaimed development fund coupons. + +## Protocol Details + + + +
+ +
+ Operation ID + listUnclaimedDevelopmentFundCoupons +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +Contracts of the Daml template `Splice.Amulet:UnclaimedDevelopmentFundCoupon`. + + + + + + + + + + +### 500 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/unclaimed-development-fund-coupons' +``` + + + + + + +```json 200 response +{ + "unclaimed-development-fund-coupons": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0updates:update_id.mdx b/docs-main/reference/splice-scan-api/get-v0updates:update_id.mdx new file mode 100644 index 000000000..1036050d8 --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0updates:update_id.mdx @@ -0,0 +1,285 @@ +--- +title: "**Deprecated**, use /v2/updates/{update_id} instead" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/updates/{update_id}" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

**Deprecated**, use /v2/updates/{update_id} instead

+ + + +
+ + OpenAPI + + Since 0.5.10 + + Changed 0.6.0 + +
+ + +
+ +**Deprecated**, use /v2/updates/{update_id} instead. + +## Protocol Details + + + +
+ +
+ Operation ID + getUpdateById +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + + + + + + + + + +### Query parameters + + + + + + + + + +Whether contract payload should be encoded into json using a lossless, but much harder to process, encoding. This is mostly used for backend calls, and is not recommended for external users. Optional and defaults to false. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +An individual item in the update history. May be a transaction or a contract reassignment. + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 500 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Changed + 0.6.0 +
+ +

The GET /v0/updates/{update_id} operation changed in this snapshot.

+ +
+ +
+
+ Changed + 0.5.17 +
+ +

The GET /v0/updates/{update_id} operation changed in this snapshot.

+ +
+ +
+
+ Deprecated + 0.5.10 +
+ +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/updates/{update_id}' +``` + + + + + + +```json 200 response +{ + "update_id": "string", + "migration_id": 0, + "workflow_id": "string", + "record_time": "string", + "synchronizer_id": "string", + "effective_at": "string", + "offset": "string", + "root_event_ids": [ + "string" + ], + "events_by_id": {}, + "external_transaction_hash": "string" +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0validatorsvalidator-faucets.mdx b/docs-main/reference/splice-scan-api/get-v0validatorsvalidator-faucets.mdx new file mode 100644 index 000000000..2a27707a6 --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0validatorsvalidator-faucets.mdx @@ -0,0 +1,204 @@ +--- +title: "Validator faucets by validator" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/validators/validator-faucets" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Validator faucets by validator

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +For every argument that is a valid onboarded validator, return statistics on its liveness activity, according to on-ledger state at the time of the request. + +## Protocol Details + + + +
+ +
+ Operation ID + getValidatorFaucetsByValidator +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Query parameters + + + + + + + + + +A list of validator party IDs, one per specification of the parameter. Any party IDs not matching onboarded validators will be ignored + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +Statistics for any party ID arguments found to have valid onboarding licenses; the order in the response is unrelated to argument order. + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/validators/validator-faucets' +``` + + + + + + +```json 200 response +{ + "validatorsReceivedFaucets": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v0voterequests:vote_request_contract_id.mdx b/docs-main/reference/splice-scan-api/get-v0voterequests:vote_request_contract_id.mdx new file mode 100644 index 000000000..d021f0217 --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v0voterequests:vote_request_contract_id.mdx @@ -0,0 +1,179 @@ +--- +title: "Look up a `VoteRequest` by contract ID" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/voterequests/{vote_request_contract_id}" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Look up a `VoteRequest` by contract ID

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +Look up a `VoteRequest` by contract ID. + +## Protocol Details + + + +
+ +
+ Operation ID + lookupDsoRulesVoteRequest +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/voterequests/{vote_request_contract_id}' +``` + + + + + + +```json 200 response +{ + "dso_rules_vote_request": { + "template_id": "string", + "contract_id": "string", + "payload": {}, + "created_event_blob": "string", + "created_at": "string" + } +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v1domains:domain_idparties:party_idparticipant-id.mdx b/docs-main/reference/splice-scan-api/get-v1domains:domain_idparties:party_idparticipant-id.mdx new file mode 100644 index 000000000..4373c1c68 --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v1domains:domain_idparties:party_idparticipant-id.mdx @@ -0,0 +1,211 @@ +--- +title: "Get the IDs of the participants hosting a given party" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v1/domains/{domain_id}/parties/{party_id}/participant-id" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Get the IDs of the participants hosting a given party

+ + + +
+ + OpenAPI + + Since 0.5.17 + +
+ + +
+ +Get the IDs of the participants hosting a given party. Unlike /v0, this endpoint supports parties hosted on multiple participants. + +## Protocol Details + + + +
+ +
+ Operation ID + getPartyToParticipantV1 +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + +The synchronizer ID to look up a mapping for. + + + + + + +The party ID to lookup a participant ID for. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +IDs of the participants hosting the provided party, each in the form `PAR::id::fingerprint` + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 500 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.17 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v1/domains/{domain_id}/parties/{party_id}/participant-id' +``` + + + + + + +```json 200 response +{ + "participant_ids": [ + "string" + ] +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v1updates:update_id.mdx b/docs-main/reference/splice-scan-api/get-v1updates:update_id.mdx new file mode 100644 index 000000000..23714786d --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v1updates:update_id.mdx @@ -0,0 +1,287 @@ +--- +title: "Returns the update with the given update_id" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v1/updates/{update_id}" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Returns the update with the given update_id

+ + + +
+ + OpenAPI + + Since 0.5.10 + + Changed 0.6.0 + +
+ + +
+ +Returns the update with the given update_id. Unlike /v0/updates/{update_id}, this endpoint returns responses that are consistent across different scan instances. Event ids returned by this endpoint are not comparable to event ids returned by /v0/updates. The order of items in events_by_id is not defined. + +## Protocol Details + + + +
+ +
+ Operation ID + getUpdateByIdV1 +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + + + + + + + + + +### Query parameters + + + + + + + + +OpenAPI type: `DamlValueEncoding`. + + + + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +An individual item in the update history. May be a transaction or a contract reassignment. + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 500 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Changed + 0.6.0 +
+ +

The GET /v1/updates/{update_id} operation changed in this snapshot.

+ +
+ +
+
+ Changed + 0.5.17 +
+ +

The GET /v1/updates/{update_id} operation changed in this snapshot.

+ +
+ +
+
+ Deprecated + 0.5.10 +
+ +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v1/updates/{update_id}' +``` + + + + + + +```json 200 response +{ + "update_id": "string", + "migration_id": 0, + "workflow_id": "string", + "record_time": "string", + "synchronizer_id": "string", + "effective_at": "string", + "offset": "string", + "root_event_ids": [ + "string" + ], + "events_by_id": {}, + "external_transaction_hash": "string" +} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v2updates:update_id.mdx b/docs-main/reference/splice-scan-api/get-v2updates:update_id.mdx new file mode 100644 index 000000000..ace19370f --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v2updates:update_id.mdx @@ -0,0 +1,266 @@ +--- +title: "Returns the update with the given update_id" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v2/updates/{update_id}" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Returns the update with the given update_id

+ + + +
+ + OpenAPI + + Since 0.5.10 + + Changed 0.6.0 + +
+ + +
+ +Returns the update with the given update_id. Compared to `/v1/updates/{update_id}`, the `/v2/updates/{update_id}` removes the `offset` field in responses, which was hardcoded to 1 in `/v1/updates/{update_id}` for compatibility, and is now removed. + +## Protocol Details + + + +
+ +
+ Operation ID + getUpdateByIdV2 +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + + + + + + + + + +### Query parameters + + + + + + + + +OpenAPI type: `DamlValueEncoding`. + + + + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +An individual item in the update history. May be a transaction or a contract reassignment. + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 500 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Changed + 0.6.0 +
+ +

The GET /v2/updates/{update_id} operation changed in this snapshot.

+ +
+ +
+
+ Changed + 0.5.17 +
+ +

The GET /v2/updates/{update_id} operation changed in this snapshot.

+ +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v2/updates/{update_id}' +``` + + + + + + +```json 200 response +{} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-v2updateshash:hash.mdx b/docs-main/reference/splice-scan-api/get-v2updateshash:hash.mdx new file mode 100644 index 000000000..893a37862 --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-v2updateshash:hash.mdx @@ -0,0 +1,244 @@ +--- +title: "Returns the update associated with the given hash of the prepared transaction" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v2/updates/hash/{hash}" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Returns the update associated with the given hash of the prepared transaction

+ + + +
+ + OpenAPI + + Since 0.6.0 + +
+ + +
+ +Returns the update associated with the given hash of the prepared transaction. This endpoint is not always BFT safe. For transactions committed before a scan instance started indexing hashes, the instance will return a 404 error. For transactions committed around the time different scans started indexing hashes, some scan instances might return a 404 error while others return the matching update. + +## Protocol Details + + + +
+ +
+ Operation ID + getUpdateByHash +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + + + + + + + + + +### Query parameters + + + + + + + + +OpenAPI type: `DamlValueEncoding`. + + + + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +An individual item in the update history. May be a transaction or a contract reassignment. + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 500 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.6.0 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v2/updates/hash/{hash}' +``` + + + + + + +```json 200 response +{} +``` + + diff --git a/docs-main/reference/splice-scan-api/get-version.mdx b/docs-main/reference/splice-scan-api/get-version.mdx new file mode 100644 index 000000000..8f745f62d --- /dev/null +++ b/docs-main/reference/splice-scan-api/get-version.mdx @@ -0,0 +1,134 @@ +--- +title: "Version" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/version" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Version

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +## Protocol Details + + + +
+ +
+ Operation ID + getVersion +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/version' +``` + + + + + + +```json 200 response +{ + "version": "string", + "commit_ts": "2026-01-01T00:00:00Z" +} +``` + + diff --git a/docs-main/reference/splice-scan-api/post-v0adminsvprevious-sv-reward-weight.mdx b/docs-main/reference/splice-scan-api/post-v0adminsvprevious-sv-reward-weight.mdx new file mode 100644 index 000000000..dad205b5c --- /dev/null +++ b/docs-main/reference/splice-scan-api/post-v0adminsvprevious-sv-reward-weight.mdx @@ -0,0 +1,164 @@ +--- +title: "Previous sv reward weight" +api: "POST https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/admin/sv/previous-sv-reward-weight" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Previous sv reward weight

+ + + +
+ + OpenAPI + + Since 0.6.9 + +
+ + +
+ +## Protocol Details + + + +
+ +
+ Operation ID + getPreviousSvRewardWeight +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Request body + + +
+ + application/json + +
+ + + + + + + + + + + + +Only consider reward weight changes that took effect strictly before this time. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +The SV's reward weight set by the most recent accepted `UpdateSvRewardWeight` proposal before `effectiveBefore`, or absent if there is no such proposal. + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.6.9 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/admin/sv/previous-sv-reward-weight' \ + --header 'Content-Type: application/json' \ + --data '{"svParty":"string","effectiveBefore":"string"}' +``` + + + + + + +```json 200 response +{ + "rewardWeight": "string" +} +``` + + diff --git a/docs-main/reference/splice-scan-api/post-v0adminsvvoteresults.mdx b/docs-main/reference/splice-scan-api/post-v0adminsvvoteresults.mdx new file mode 100644 index 000000000..f13fad001 --- /dev/null +++ b/docs-main/reference/splice-scan-api/post-v0adminsvvoteresults.mdx @@ -0,0 +1,240 @@ +--- +title: "List vote request results" +api: "POST https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/admin/sv/voteresults" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

List vote request results

+ + + +
+ + OpenAPI + + Since 0.5.10 + + Changed 0.6.10 + +
+ + +
+ +## Protocol Details + + + +
+ +
+ Operation ID + listVoteRequestResults +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Request body + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +OpenAPI type: `integer`. + + + + + + + + +OpenAPI type: `integer`. + + +Cursor for pagination. When requesting the next page of results, pass the `next_page_token` from the previous response. Results are ordered by effective date (the accepted vote's effectiveAt, or the result's completedAt otherwise), descending. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + +Cursor for the next page of results. Pass this as `pageToken` in the request. If absent or `null`, there are no more pages. + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Changed + 0.6.10 +
+ +

The POST /v0/admin/sv/voteresults operation changed in this snapshot.

+ +
+ +
+
+ Changed + 0.6.4 +
+ +

The POST /v0/admin/sv/voteresults operation changed in this snapshot.

+ +
+ +
+
+ Changed + 0.6.1 +
+ +

The POST /v0/admin/sv/voteresults operation changed in this snapshot.

+ +
+ +
+
+ Changed + 0.6.0 +
+ +

The POST /v0/admin/sv/voteresults operation changed in this snapshot.

+ +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/admin/sv/voteresults' \ + --header 'Content-Type: application/json' \ + --data '{"actionName":"string","accepted":false,"requester":"string","effectiveFrom":"string","effectiveTo":"string","limit":0,"pageToken":0}' +``` + + + + + + +```json 200 response +{ + "dso_rules_vote_results": [ + {} + ], + "next_page_token": 0 +} +``` + + diff --git a/docs-main/reference/splice-scan-api/post-v0adminsvvoteresultscount.mdx b/docs-main/reference/splice-scan-api/post-v0adminsvvoteresultscount.mdx new file mode 100644 index 000000000..ce9199ea8 --- /dev/null +++ b/docs-main/reference/splice-scan-api/post-v0adminsvvoteresultscount.mdx @@ -0,0 +1,175 @@ +--- +title: "Count all vote results matching the request filters" +api: "POST https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/admin/sv/voteresults/count" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Count all vote results matching the request filters

+ + + +
+ + OpenAPI + + Since 0.6.13 + +
+ + +
+ +Count all vote results matching the request filters. + +## Protocol Details + + + +
+ +
+ Operation ID + countVoteRequestResults +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Request body + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +Total number of vote results matching the request filters. + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.6.13 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/admin/sv/voteresults/count' \ + --header 'Content-Type: application/json' \ + --data '{"actionName":"string","accepted":false,"requester":"string","effectiveFrom":"string","effectiveTo":"string"}' +``` + + + + + + +```json 200 response +{ + "count": 0 +} +``` + + diff --git a/docs-main/reference/splice-scan-api/post-v0amulet-rules.mdx b/docs-main/reference/splice-scan-api/post-v0amulet-rules.mdx new file mode 100644 index 000000000..b445903dc --- /dev/null +++ b/docs-main/reference/splice-scan-api/post-v0amulet-rules.mdx @@ -0,0 +1,167 @@ +--- +title: "Amulet rules" +api: "POST https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/amulet-rules" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Amulet rules

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +## Protocol Details + + + +
+ +
+ Operation ID + getAmuletRules +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Request body + + +
+ + application/json + +
+ + + + + + + +OpenAPI type: `ContractId`. + + + + + + + + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/amulet-rules' \ + --header 'Content-Type: application/json' \ + --data '{"cached_amulet_rules_contract_id":"string","cached_amulet_rules_domain_id":"string"}' +``` + + + + + + +```json 200 response +{ + "amulet_rules_update": { + "contract": {}, + "domain_id": "string" + } +} +``` + + diff --git a/docs-main/reference/splice-scan-api/post-v0ans-rules.mdx b/docs-main/reference/splice-scan-api/post-v0ans-rules.mdx new file mode 100644 index 000000000..e7190e5c2 --- /dev/null +++ b/docs-main/reference/splice-scan-api/post-v0ans-rules.mdx @@ -0,0 +1,167 @@ +--- +title: "Ans rules" +api: "POST https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/ans-rules" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Ans rules

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +## Protocol Details + + + +
+ +
+ Operation ID + getAnsRules +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Request body + + +
+ + application/json + +
+ + + + + + + +OpenAPI type: `ContractId`. + + + + + + + + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/ans-rules' \ + --header 'Content-Type: application/json' \ + --data '{"cached_ans_rules_contract_id":"string","cached_ans_rules_domain_id":"string"}' +``` + + + + + + +```json 200 response +{ + "ans_rules_update": { + "contract": {}, + "domain_id": "string" + } +} +``` + + diff --git a/docs-main/reference/splice-scan-api/post-v0backfillingimport-updates.mdx b/docs-main/reference/splice-scan-api/post-v0backfillingimport-updates.mdx new file mode 100644 index 000000000..9654f0f78 --- /dev/null +++ b/docs-main/reference/splice-scan-api/post-v0backfillingimport-updates.mdx @@ -0,0 +1,224 @@ +--- +title: "Import updates" +api: "POST https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/backfilling/import-updates" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Import updates

+ + + +
+ + OpenAPI + + Since 0.5.10 + + Changed 0.6.0 + +
+ + +
+ +## Protocol Details + + + +
+ +
+ Operation ID + getImportUpdates +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Request body + + +
+ + application/json + +
+ + + + + + + +OpenAPI type: `integer (int64)`. + + + + + + + + + +Only return updates with an update id strictly greater than this. + + + + + +OpenAPI type: `integer (int32)`. + + +Return at most this many updates. The actual number of updates returned may be smaller. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Changed + 0.6.0 +
+ +

The POST /v0/backfilling/import-updates operation changed in this snapshot.

+ +
+ +
+
+ Changed + 0.5.17 +
+ +

The POST /v0/backfilling/import-updates operation changed in this snapshot.

+ +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/backfilling/import-updates' \ + --header 'Content-Type: application/json' \ + --data '{"migration_id":0,"after_update_id":"string","limit":0}' +``` + + + + + + +```json 200 response +{ + "transactions": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-scan-api/post-v0backfillingmigration-info.mdx b/docs-main/reference/splice-scan-api/post-v0backfillingmigration-info.mdx new file mode 100644 index 000000000..2c80306cb --- /dev/null +++ b/docs-main/reference/splice-scan-api/post-v0backfillingmigration-info.mdx @@ -0,0 +1,218 @@ +--- +title: "List all previous synchronizer migrations in this Splice network's history" +api: "POST https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/backfilling/migration-info" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

List all previous synchronizer migrations in this Splice network's history

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +List all previous synchronizer migrations in this Splice network's history. + +## Protocol Details + + + +
+ +
+ Operation ID + getMigrationInfo +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Request body + + +
+ + application/json + +
+ + + + + + + +OpenAPI type: `integer (int64)`. + + + + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +The migration id that was active before the given migration id, if any. + + + + + +All domains for which there are updates in the given migration id, along with the record time of the newest and oldest update associated with each domain + + + + + +The update id of the last import update (where import updates are sorted by update id, ascending) for the given migration id, if any + + + + + +True if this scan has all non-import updates for given migration id + + + + + +True if this scan has all import updates for the given migration id + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/backfilling/migration-info' \ + --header 'Content-Type: application/json' \ + --data '{"migration_id":0}' +``` + + + + + + +```json 200 response +{ + "previous_migration_id": 0, + "record_time_range": [ + {} + ], + "last_import_update_id": "string", + "complete": false, + "import_updates_complete": false +} +``` + + diff --git a/docs-main/reference/splice-scan-api/post-v0backfillingupdates-before.mdx b/docs-main/reference/splice-scan-api/post-v0backfillingupdates-before.mdx new file mode 100644 index 000000000..e379c1d03 --- /dev/null +++ b/docs-main/reference/splice-scan-api/post-v0backfillingupdates-before.mdx @@ -0,0 +1,241 @@ +--- +title: "Retrieve transactions and synchronizer reassignments prior to the request's specification" +api: "POST https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/backfilling/updates-before" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Retrieve transactions and synchronizer reassignments prior to the request's specification

+ + + +
+ + OpenAPI + + Since 0.5.10 + + Changed 0.6.0 + +
+ + +
+ +Retrieve transactions and synchronizer reassignments prior to the request's specification. + +## Protocol Details + + + +
+ +
+ Operation ID + getUpdatesBefore +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Request body + + +
+ + application/json + +
+ + + + + + + +OpenAPI type: `integer (int64)`. + + + + + + + + + + + + +OpenAPI type: `string (date-time)`. + + +Only return updates with a record time strictly smaller than this time. + + + + + +OpenAPI type: `string (date-time)`. + + +Only return updates with a record time equal to or greater than this time. + + + + + +OpenAPI type: `integer (int32)`. + + +Return at most this many updates. The actual number of updates returned may be smaller. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Changed + 0.6.0 +
+ +

The POST /v0/backfilling/updates-before operation changed in this snapshot.

+ +
+ +
+
+ Changed + 0.5.17 +
+ +

The POST /v0/backfilling/updates-before operation changed in this snapshot.

+ +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/backfilling/updates-before' \ + --header 'Content-Type: application/json' \ + --data '{"migration_id":0,"synchronizer_id":"string","before":"2026-01-01T00:00:00Z","at_or_after":"2026-01-01T00:00:00Z","count":0}' +``` + + + + + + +```json 200 response +{ + "transactions": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-scan-api/post-v0events.mdx b/docs-main/reference/splice-scan-api/post-v0events.mdx new file mode 100644 index 000000000..226075381 --- /dev/null +++ b/docs-main/reference/splice-scan-api/post-v0events.mdx @@ -0,0 +1,272 @@ +--- +title: "Event history" +api: "POST https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/events" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Event history

+ + + +
+ + OpenAPI + + Since 0.5.10 + + Changed 0.6.10 + +
+ + +
+ +Returns the event history in ascending order, paged, from ledger begin or optionally starting after a record time. An event bears some combination of a transaction, a contract reassignment, and a verdict. Events are ordered lexicographically by `(migration id, record time)`. For a given migration id, each event has a unique record time. + +## Protocol Details + + + +
+ +
+ Operation ID + getEventHistory +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Request body + + +
+ + application/json + +
+ + + + + + + +OpenAPI type: `UpdateHistoryRequestAfter`. + + + + + + + + +OpenAPI type: `integer (int32)`. + + +The maximum number of events returned for this request. + + + + + +OpenAPI type: `DamlValueEncoding`. + + +How daml values should be encoded in the response. "compact_json" is a compact, human-readable JSON encoding. It is the same encoding as the one used in the HTTP JSON API or the JavaScript codegen. "protobuf_json" is a verbose JSON encoding that is more difficult to parse, but contains type information, i.e., the values can be parsed losslessly without having access to the Daml source code. Optional and defaults to "compact_json". + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 500 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Changed + 0.6.10 +
+ +

The POST /v0/events operation changed in this snapshot.

+ +
+ +
+
+ Changed + 0.6.0 +
+ +

The POST /v0/events operation changed in this snapshot.

+ +
+ +
+
+ Changed + 0.5.17 +
+ +

The POST /v0/events operation changed in this snapshot.

+ +
+ +
+
+ Changed + 0.5.15 +
+ +

The POST /v0/events operation changed in this snapshot.

+ +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/events' \ + --header 'Content-Type: application/json' \ + --data '{"after":{"after_migration_id":0,"after_record_time":"string"},"page_size":0,"daml_value_encoding":"compact_json"}' +``` + + + + + + +```json 200 response +{ + "events": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-scan-api/post-v0external-party-amulet-rules.mdx b/docs-main/reference/splice-scan-api/post-v0external-party-amulet-rules.mdx new file mode 100644 index 000000000..85a4b6e64 --- /dev/null +++ b/docs-main/reference/splice-scan-api/post-v0external-party-amulet-rules.mdx @@ -0,0 +1,167 @@ +--- +title: "External party amulet rules" +api: "POST https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/external-party-amulet-rules" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

External party amulet rules

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +## Protocol Details + + + +
+ +
+ Operation ID + getExternalPartyAmuletRules +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Request body + + +
+ + application/json + +
+ + + + + + + +OpenAPI type: `ContractId`. + + + + + + + + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/external-party-amulet-rules' \ + --header 'Content-Type: application/json' \ + --data '{"cached_external_party_amulet_rules_contract_id":"string","cached_external_party_amulet_rules_domain_id":"string"}' +``` + + + + + + +```json 200 response +{ + "external_party_amulet_rules_update": { + "contract": {}, + "domain_id": "string" + } +} +``` + + diff --git a/docs-main/reference/splice-scan-api/post-v0historybulkchecksums.mdx b/docs-main/reference/splice-scan-api/post-v0historybulkchecksums.mdx new file mode 100644 index 000000000..d14913aaf --- /dev/null +++ b/docs-main/reference/splice-scan-api/post-v0historybulkchecksums.mdx @@ -0,0 +1,190 @@ +--- +title: "**Under Development, do not use in production yet** Get checksums for bulk history objects" +api: "POST https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/history/bulk/checksums" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

**Under Development, do not use in production yet** Get checksums for bulk history objects

+ + + +
+ + OpenAPI + + Since 0.7.4 + +
+ + +
+ +**Under Development, do not use in production yet** Get checksums for bulk history objects. Searches for object_keys in both staging and committed objects. Meant for internal use only, as part of the processing pipeline of bulk history objects. + +## Protocol Details + + + +
+ +
+ Operation ID + getBulkObjectChecksums +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Request body + + +
+ + application/json + +
+ + + + + + + + +The list of keys of the bulk storage objects for which checksums are requested. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +The list of checksums for the requested bulk storage objects (in the same order as the object_keys). + + + + + + + + + + +### 501 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.7.4 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/history/bulk/checksums' \ + --header 'Content-Type: application/json' \ + --data '{"object_keys":["string"]}' +``` + + + + + + +```json 200 response +{ + "checksums": [ + { + "value": "string" + } + ] +} +``` + + diff --git a/docs-main/reference/splice-scan-api/post-v0historybulkupdates.mdx b/docs-main/reference/splice-scan-api/post-v0historybulkupdates.mdx new file mode 100644 index 000000000..2da9ff077 --- /dev/null +++ b/docs-main/reference/splice-scan-api/post-v0historybulkupdates.mdx @@ -0,0 +1,270 @@ +--- +title: "List bulk update history objects" +api: "POST https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/history/bulk/updates" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

List bulk update history objects

+ + + +
+ + OpenAPI + + Since 0.5.18 + +
+ + +
+ +**Under Development, do not use in production yet** Get download URLs and metadata for update history objects available for bulk download, between two record times. Note that the returned objects may include also updates outside of the requested record time range (since only full objects are served from storage), but guaranteed to include all updates in the requested range. + +## Protocol Details + + + +
+ +
+ Operation ID + listBulkUpdateHistoryObjects +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Request body + + +
+ + application/json + +
+ + + + + + + +OpenAPI type: `string (date-time)`. + + +The returned objects must include all updates with record time greater than start_record_time (but may also include updates before it). + + + + + +OpenAPI type: `string (date-time)`. + + +The returned objects must include all updates with record time at most end_record_time (but may also include updates after it). + + + + + + +The pagination token returned from a previous call to this endpoint with the same arguments. + + + + + +OpenAPI type: `integer (int32)`. + + +The maximum number of objects returned for this request. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +The list of references to the bulk storage objects containing the updates. + + + + + +When requesting the next page of results, pass this as `after` to the next `ListBulkUpdateHistoryObjectsRequest` invocation. Will be absent when there are no more pages. + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 501 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.18 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/history/bulk/updates' \ + --header 'Content-Type: application/json' \ + --data '{"start_record_time":"2026-01-01T00:00:00Z","end_record_time":"2026-01-01T00:00:00Z","next_page_token":"string","page_size":0}' +``` + + + + + + +```json 200 response +{ + "object_refs": [ + {} + ], + "next_page_token": "string" +} +``` + + diff --git a/docs-main/reference/splice-scan-api/post-v0holdingsstate.mdx b/docs-main/reference/splice-scan-api/post-v0holdingsstate.mdx new file mode 100644 index 000000000..48d0454b9 --- /dev/null +++ b/docs-main/reference/splice-scan-api/post-v0holdingsstate.mdx @@ -0,0 +1,312 @@ +--- +title: "Deprecated" +api: "POST https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/holdings/state" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Deprecated

+ + + +
+ + OpenAPI + + Since 0.5.10 + + Changed 0.6.0 + +
+ + +
+ +Deprecated. Please use /v1/holdings/state instead. Returns the active amulet contracts for a given migration id and record time, in creation date ascending order, paged. + +## Protocol Details + + + +
+ +
+ Operation ID + getHoldingsStateAt +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Request body + + +
+ + application/json + +
+ + + + + + + +OpenAPI type: `integer (int64)`. + + +The migration id for which to return the ACS. + + + + + +OpenAPI type: `string (date-time)`. + + +The timestamp at which the contract set was active. This needs to be an exact timestamp, i.e., needs to correspond to a timestamp reported by `/v0/state/acs/snapshot-timestamp` if `record_time_match` is set to `exact` (which is the default). If `record_time_match` is set to `at_or_before`, this can be any timestamp, and the most recent snapshot at or before the given `record_time` will be returned. + + + + + + +How to match the record_time. "exact" requires the record_time to match exactly. "at_or_before" finds the most recent snapshot at or before the given record_time. + + + + + +OpenAPI type: `integer (int64)`. + + +Pagination token for the next page of results. + + + + + +OpenAPI type: `integer (int32)`. + + +The maximum number of created events returned for this request. + + + + + + +Filters by contracts in which these party_ids are the owners of the amulets. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +The same `record_time` as in the request. + + + + + +The same `migration_id` as in the request. + + + + + +Up to `page_size` contracts in the ACS. `create_arguments` are always encoded as `compact_json`. + + + + + +When requesting the next page of results, pass this as `after` to the `AcsRequest` or `HoldingsStateRequest`. Will be absent when there are no more pages. + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 500 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Changed + 0.6.0 +
+ +

The POST /v0/holdings/state operation changed in this snapshot.

+ +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/holdings/state' \ + --header 'Content-Type: application/json' \ + --data '{"migration_id":0,"record_time":"2026-01-01T00:00:00Z","record_time_match":"exact","after":0,"page_size":0,"owner_party_ids":["string"]}' +``` + + + + + + +```json 200 response +{ + "record_time": "2026-01-01T00:00:00Z", + "migration_id": 0, + "created_events": [ + {} + ], + "next_page_token": 0 +} +``` + + diff --git a/docs-main/reference/splice-scan-api/post-v0holdingssummary.mdx b/docs-main/reference/splice-scan-api/post-v0holdingssummary.mdx new file mode 100644 index 000000000..109222ffc --- /dev/null +++ b/docs-main/reference/splice-scan-api/post-v0holdingssummary.mdx @@ -0,0 +1,309 @@ +--- +title: "Deprecated" +api: "POST https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/holdings/summary" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Deprecated

+ + + +
+ + OpenAPI + + Since 0.5.10 + + Changed 0.6.3 + +
+ + +
+ +Deprecated. Please use /v1/holdings/summary instead. Returns the summary of active amulet contracts for a given migration id and record time, for the given parties. This is an aggregate of `/v0/holdings/state` by owner party ID with better performance than client-side computation. + +## Protocol Details + + + +
+ +
+ Operation ID + getHoldingsSummaryAt +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Request body + + +
+ + application/json + +
+ + + + + + + +OpenAPI type: `integer (int64)`. + + +The migration id for which to return the summary. + + + + + +OpenAPI type: `string (date-time)`. + + +The timestamp at which the contract set was active. This needs to be an exact timestamp, i.e., needs to correspond to a timestamp reported by `/v0/state/acs/snapshot-timestamp` if `record_time_match` is set to `exact` (which is the default). If `record_time_match` is set to `at_or_before`, this can be any timestamp, and the most recent snapshot at or before the given `record_time` will be returned. + + + + + + +How to match the record_time. "exact" requires the record_time to match exactly. "at_or_before" finds the most recent snapshot at or before the given record_time. + + + + + + +The owners for which to compute the summary. + + + + + +OpenAPI type: `integer (int64)`. + + +Compute holding fees as of this round. Defaults to the earliest open mining round. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +The same `record_time` as in the request. + + + + + +The same `migration_id` as in the request. + + + + + +The same `as_of_round` as in the request, with the same default. + + + + + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 500 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Deprecated + 0.6.3 +
+ +
+ +
+
+ Changed + 0.6.3 +
+ +

The POST /v0/holdings/summary operation changed in this snapshot.

+ +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/holdings/summary' \ + --header 'Content-Type: application/json' \ + --data '{"migration_id":0,"record_time":"2026-01-01T00:00:00Z","record_time_match":"exact","owner_party_ids":["string"],"as_of_round":0}' +``` + + + + + + +```json 200 response +{ + "record_time": "2026-01-01T00:00:00Z", + "migration_id": 0, + "computed_as_of_round": 0, + "summaries": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-scan-api/post-v0open-and-issuing-mining-rounds.mdx b/docs-main/reference/splice-scan-api/post-v0open-and-issuing-mining-rounds.mdx new file mode 100644 index 000000000..cacabc8cb --- /dev/null +++ b/docs-main/reference/splice-scan-api/post-v0open-and-issuing-mining-rounds.mdx @@ -0,0 +1,187 @@ +--- +title: "Open and issuing mining rounds" +api: "POST https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/open-and-issuing-mining-rounds" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Open and issuing mining rounds

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +All current open and issuing mining rounds, if the request is empty; passing contract IDs in the request can reduce the response data for polling/client-cache-update efficiency. + +## Protocol Details + + + +
+ +
+ Operation ID + getOpenAndIssuingMiningRounds +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Request body + + +
+ + application/json + +
+ + + + + + + +OpenAPI type: `ContractId[]`. + + +The contract IDs for `open_mining_rounds` in the response the caller knows about. If unsure, an empty array is fine; only a performance penalty is incurred. + + + + + +OpenAPI type: `ContractId[]`. + + +The contract IDs for `issuing_mining_rounds` in the response the caller knows about. If unsure, an empty array is fine; only a performance penalty is incurred. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +Suggested cache TTL for the response; this should expire before the `opensAt` of any open rounds that may not be in this response yet. + + + + + +Always created with respect to an input set of contract IDs. If an input contract ID is absent from the keys of this map, that contract should be considered removed by the caller; if present, `contract` may be empty, reflecting that the caller should already have the full contract data for that contract ID. Contracts not present in the input set will have full contract data. `domain_id` is always up-to-date; if undefined the contract is currently unassigned to a synchronizer, i.e. "in-flight". + + + + + +Always created with respect to an input set of contract IDs. If an input contract ID is absent from the keys of this map, that contract should be considered removed by the caller; if present, `contract` may be empty, reflecting that the caller should already have the full contract data for that contract ID. Contracts not present in the input set will have full contract data. `domain_id` is always up-to-date; if undefined the contract is currently unassigned to a synchronizer, i.e. "in-flight". + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/open-and-issuing-mining-rounds' \ + --header 'Content-Type: application/json' \ + --data '{"cached_open_mining_round_contract_ids":["string"],"cached_issuing_round_contract_ids":["string"]}' +``` + + + + + + +```json 200 response +{ + "time_to_live_in_microseconds": 0, + "open_mining_rounds": {}, + "issuing_mining_rounds": {} +} +``` + + diff --git a/docs-main/reference/splice-scan-api/post-v0stateacs.mdx b/docs-main/reference/splice-scan-api/post-v0stateacs.mdx new file mode 100644 index 000000000..597c58f0e --- /dev/null +++ b/docs-main/reference/splice-scan-api/post-v0stateacs.mdx @@ -0,0 +1,327 @@ +--- +title: "Deprecated" +api: "POST https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/state/acs" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Deprecated

+ + + +
+ + OpenAPI + + Since 0.5.10 + + Changed 0.6.0 + +
+ + +
+ +Deprecated. Please use /v1/state/acs instead. Returns the ACS in creation date ascending order, paged, for a given migration id and record time. + +## Protocol Details + + + +
+ +
+ Operation ID + getAcsSnapshotAt +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Request body + + +
+ + application/json + +
+ + + + + + + +OpenAPI type: `integer (int64)`. + + +The migration id for which to return the ACS. + + + + + +OpenAPI type: `string (date-time)`. + + +The timestamp at which the contract set was active. This needs to be an exact timestamp, i.e., needs to correspond to a timestamp reported by `/v0/state/acs/snapshot-timestamp` if `record_time_match` is set to `exact` (which is the default). If `record_time_match` is set to `at_or_before`, this can be any timestamp, and the most recent snapshot at or before the given `record_time` will be returned. + + + + + + +How to match the record_time. "exact" requires the record_time to match exactly. "at_or_before" finds the most recent snapshot at or before the given record_time. + + + + + +OpenAPI type: `integer (int64)`. + + +Pagination token for the next page of results. For this to be valid, this must be the `next_page_token` from a prior request with identical parameters aside from `after` and `page_size`; the response may be invalid otherwise. + + + + + +OpenAPI type: `integer (int32)`. + + +The maximum number of created events returned for this request. + + + + + + +Filters the ACS by contracts in which these party IDs are stakeholders. + + + + + + +Filters the ACS by contracts with these template IDs, specified as "PACKAGE_NAME:MODULE_NAME:ENTITY_NAME". + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +The same `record_time` as in the request. + + + + + +The same `migration_id` as in the request. + + + + + +Up to `page_size` contracts in the ACS. `create_arguments` are always encoded as `compact_json`. + + + + + +When requesting the next page of results, pass this as `after` to the `AcsRequest` or `HoldingsStateRequest`. Will be absent when there are no more pages. + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 500 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Deprecated + 0.6.0 +
+ +
+ +
+
+ Changed + 0.6.0 +
+ +

The POST /v0/state/acs operation changed in this snapshot.

+ +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/state/acs' \ + --header 'Content-Type: application/json' \ + --data '{"migration_id":0,"record_time":"2026-01-01T00:00:00Z","record_time_match":"exact","after":0,"page_size":0,"party_ids":["string"],"templates":["string"]}' +``` + + + + + + +```json 200 response +{ + "record_time": "2026-01-01T00:00:00Z", + "migration_id": 0, + "created_events": [ + {} + ], + "next_page_token": 0 +} +``` + + diff --git a/docs-main/reference/splice-scan-api/post-v0stateacsforce.mdx b/docs-main/reference/splice-scan-api/post-v0stateacsforce.mdx new file mode 100644 index 000000000..72c196e98 --- /dev/null +++ b/docs-main/reference/splice-scan-api/post-v0stateacsforce.mdx @@ -0,0 +1,188 @@ +--- +title: "Takes a snapshot of the ACS at the current time" +api: "POST https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/state/acs/force" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Takes a snapshot of the ACS at the current time

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +Takes a snapshot of the ACS at the current time. The responses can be used as parameters to `/v0/state/acs` to retrieve the snapshot. Disabled in production environments due to its persistent alteration of the behavior of future invocations of `/v0/state/acs`, as it causes an immediate internal snapshot and delay in the next automatic snapshot. + +## Protocol Details + + + +
+ +
+ Operation ID + forceAcsSnapshotNow +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +The [recent] time for which this ACS snapshot was persisted. + + + + + +The current migration ID of the Scan. + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 500 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/state/acs/force' +``` + + + + + + +```json 200 response +{ + "record_time": "2026-01-01T00:00:00Z", + "migration_id": 0 +} +``` + + diff --git a/docs-main/reference/splice-scan-api/post-v0updates.mdx b/docs-main/reference/splice-scan-api/post-v0updates.mdx new file mode 100644 index 000000000..6779e3850 --- /dev/null +++ b/docs-main/reference/splice-scan-api/post-v0updates.mdx @@ -0,0 +1,258 @@ +--- +title: "**Deprecated**, use /v2/updates instead" +api: "POST https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/updates" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

**Deprecated**, use /v2/updates instead

+ + + +
+ + OpenAPI + + Since 0.5.10 + + Changed 0.6.0 + +
+ + +
+ +**Deprecated**, use /v2/updates instead. Returns the update history in ascending order, paged, from ledger begin or optionally starting after a record time. + +## Protocol Details + + + +
+ +
+ Operation ID + getUpdateHistory +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Request body + + +
+ + application/json + +
+ + + + + + + +OpenAPI type: `UpdateHistoryRequestAfter`. + + + + + + + + +OpenAPI type: `integer (int32)`. + + +The maximum number of transactions returned for this request. + + + + + + +Whether contract payload should be encoded into json using a lossless, but much harder to process, encoding. This is mostly used for backend calls, and is not recommended for external users. Optional and defaults to false. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 500 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Changed + 0.6.0 +
+ +

The POST /v0/updates operation changed in this snapshot.

+ +
+ +
+
+ Changed + 0.5.17 +
+ +

The POST /v0/updates operation changed in this snapshot.

+ +
+ +
+
+ Deprecated + 0.5.10 +
+ +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/updates' \ + --header 'Content-Type: application/json' \ + --data '{"after":{"after_migration_id":0,"after_record_time":"string"},"page_size":0,"lossless":false}' +``` + + + + + + +```json 200 response +{ + "transactions": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-scan-api/post-v0voterequest.mdx b/docs-main/reference/splice-scan-api/post-v0voterequest.mdx new file mode 100644 index 000000000..5bac3e953 --- /dev/null +++ b/docs-main/reference/splice-scan-api/post-v0voterequest.mdx @@ -0,0 +1,164 @@ +--- +title: "Look up several `VoteRequest`\\ s at once by their contract IDs" +api: "POST https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/voterequest" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Look up several `VoteRequest`\ s at once by their contract IDs

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +Look up several `VoteRequest`\ s at once by their contract IDs. + +## Protocol Details + + + +
+ +
+ Operation ID + listVoteRequestsByTrackingCid +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Request body + + +
+ + application/json + +
+ + + + + + + + +Contract IDs of Daml template `Splice.DsoRules:VoteRequest`. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +Contracts of Daml template `Splice.DsoRules:VoteRequest` that match `vote_request_contract_ids` in the request. + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/voterequest' \ + --header 'Content-Type: application/json' \ + --data '{"vote_request_contract_ids":["string"]}' +``` + + + + + + +```json 200 response +{ + "vote_requests": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-scan-api/post-v1holdingsstate.mdx b/docs-main/reference/splice-scan-api/post-v1holdingsstate.mdx new file mode 100644 index 000000000..9b841ea1a --- /dev/null +++ b/docs-main/reference/splice-scan-api/post-v1holdingsstate.mdx @@ -0,0 +1,300 @@ +--- +title: "Holdings state at v1" +api: "POST https://scan.sv-1.global.canton.network.sync.global/api/scan/v1/holdings/state" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Holdings state at v1

+ + + +
+ + OpenAPI + + Since 0.6.0 + +
+ + +
+ +Returns the active amulet contracts for a given migration id and record time, in creation date ascending order, paged. + +## Protocol Details + + + +
+ +
+ Operation ID + getHoldingsStateAtV1 +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Request body + + +
+ + application/json + +
+ + + + + + + +OpenAPI type: `integer (int64)`. + + +The migration id for which to return the ACS. + + + + + +OpenAPI type: `string (date-time)`. + + +The timestamp at which the contract set was active. This needs to be an exact timestamp, i.e., needs to correspond to a timestamp reported by `/v0/state/acs/snapshot-timestamp` if `record_time_match` is set to `exact` (which is the default). If `record_time_match` is set to `at_or_before`, this can be any timestamp, and the most recent snapshot at or before the given `record_time` will be returned. + + + + + + +How to match the record_time. "exact" requires the record_time to match exactly. "at_or_before" finds the most recent snapshot at or before the given record_time. + + + + + +OpenAPI type: `integer (int64)`. + + +Pagination token for the next page of results. + + + + + +OpenAPI type: `integer (int32)`. + + +The maximum number of created events returned for this request. + + + + + + +Filters by contracts in which these party_ids are the owners of the amulets. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +The same `record_time` as in the request. + + + + + +The same `migration_id` as in the request. + + + + + +Up to `page_size` contracts in the ACS. `create_arguments` are always encoded as `compact_json`. + + + + + +When requesting the next page of results, pass this as `after` to the `AcsRequest` or `HoldingsStateRequest`. Will be absent when there are no more pages. + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 500 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.6.0 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v1/holdings/state' \ + --header 'Content-Type: application/json' \ + --data '{"migration_id":0,"record_time":"2026-01-01T00:00:00Z","record_time_match":"exact","after":0,"page_size":0,"owner_party_ids":["string"]}' +``` + + + + + + +```json 200 response +{ + "record_time": "2026-01-01T00:00:00Z", + "migration_id": 0, + "created_events": [ + {} + ], + "next_page_token": 0 +} +``` + + diff --git a/docs-main/reference/splice-scan-api/post-v1holdingssummary.mdx b/docs-main/reference/splice-scan-api/post-v1holdingssummary.mdx new file mode 100644 index 000000000..ba5f526f5 --- /dev/null +++ b/docs-main/reference/splice-scan-api/post-v1holdingssummary.mdx @@ -0,0 +1,273 @@ +--- +title: "Holdings summary at v1" +api: "POST https://scan.sv-1.global.canton.network.sync.global/api/scan/v1/holdings/summary" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Holdings summary at v1

+ + + +
+ + OpenAPI + + Since 0.6.3 + +
+ + +
+ +Returns the summary of active amulet contracts for a given migration id and record time, for the given parties. This is an aggregate of `/v0/holdings/state` by owner party ID with better performance than client-side computation. Unlike /v0/holdings/summary, this version does not include holding fee fields as they do not express a meaningful aggregate value. + +## Protocol Details + + + +
+ +
+ Operation ID + getHoldingsSummaryAtV1 +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Request body + + +
+ + application/json + +
+ + + + + + + +OpenAPI type: `integer (int64)`. + + +The migration id for which to return the summary. + + + + + +OpenAPI type: `string (date-time)`. + + +The timestamp at which the contract set was active. This needs to be an exact timestamp, i.e., needs to correspond to a timestamp reported by `/v0/state/acs/snapshot-timestamp` if `record_time_match` is set to `exact` (which is the default). If `record_time_match` is set to `at_or_before`, this can be any timestamp, and the most recent snapshot at or before the given `record_time` will be returned. + + + + + + +How to match the record_time. "exact" requires the record_time to match exactly. "at_or_before" finds the most recent snapshot at or before the given record_time. + + + + + + +The owners for which to compute the summary. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +The same `record_time` as in the request. + + + + + +The same `migration_id` as in the request. + + + + + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 500 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.6.3 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v1/holdings/summary' \ + --header 'Content-Type: application/json' \ + --data '{"migration_id":0,"record_time":"2026-01-01T00:00:00Z","record_time_match":"exact","owner_party_ids":["string"]}' +``` + + + + + + +```json 200 response +{ + "record_time": "2026-01-01T00:00:00Z", + "migration_id": 0, + "summaries": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-scan-api/post-v1stateacs.mdx b/docs-main/reference/splice-scan-api/post-v1stateacs.mdx new file mode 100644 index 000000000..398c05d59 --- /dev/null +++ b/docs-main/reference/splice-scan-api/post-v1stateacs.mdx @@ -0,0 +1,307 @@ +--- +title: "Acs snapshot at v1" +api: "POST https://scan.sv-1.global.canton.network.sync.global/api/scan/v1/state/acs" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Acs snapshot at v1

+ + + +
+ + OpenAPI + + Since 0.6.0 + +
+ + +
+ +Returns the ACS in creation date ascending order, paged, for a given migration id and record time. Unlike /v0/state/acs, every contract is identified by an (optional) update_id (as opposed to the event ID in /v0/state/acs, which was not BFT-safe). The update_id is the ID of the update in which the contract was created, and can be used to correlate with updates returned by /v2/updates. + +## Protocol Details + + + +
+ +
+ Operation ID + getAcsSnapshotAtV1 +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Request body + + +
+ + application/json + +
+ + + + + + + +OpenAPI type: `integer (int64)`. + + +The migration id for which to return the ACS. + + + + + +OpenAPI type: `string (date-time)`. + + +The timestamp at which the contract set was active. This needs to be an exact timestamp, i.e., needs to correspond to a timestamp reported by `/v0/state/acs/snapshot-timestamp` if `record_time_match` is set to `exact` (which is the default). If `record_time_match` is set to `at_or_before`, this can be any timestamp, and the most recent snapshot at or before the given `record_time` will be returned. + + + + + + +How to match the record_time. "exact" requires the record_time to match exactly. "at_or_before" finds the most recent snapshot at or before the given record_time. + + + + + +OpenAPI type: `integer (int64)`. + + +Pagination token for the next page of results. For this to be valid, this must be the `next_page_token` from a prior request with identical parameters aside from `after` and `page_size`; the response may be invalid otherwise. + + + + + +OpenAPI type: `integer (int32)`. + + +The maximum number of created events returned for this request. + + + + + + +Filters the ACS by contracts in which these party IDs are stakeholders. + + + + + + +Filters the ACS by contracts with these template IDs, specified as "PACKAGE_NAME:MODULE_NAME:ENTITY_NAME". + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +The same `record_time` as in the request. + + + + + +The same `migration_id` as in the request. + + + + + +Up to `page_size` contracts in the ACS. `create_arguments` are always encoded as `compact_json`. + + + + + +When requesting the next page of results, pass this as `after` to the `AcsRequest` or `HoldingsStateRequest`. Will be absent when there are no more pages. + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 500 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.6.0 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v1/state/acs' \ + --header 'Content-Type: application/json' \ + --data '{"migration_id":0,"record_time":"2026-01-01T00:00:00Z","record_time_match":"exact","after":0,"page_size":0,"party_ids":["string"],"templates":["string"]}' +``` + + + + + + +```json 200 response +{ + "record_time": "2026-01-01T00:00:00Z", + "migration_id": 0, + "created_events": [ + {} + ], + "next_page_token": 0 +} +``` + + diff --git a/docs-main/reference/splice-scan-api/post-v1updates.mdx b/docs-main/reference/splice-scan-api/post-v1updates.mdx new file mode 100644 index 000000000..a53325cb5 --- /dev/null +++ b/docs-main/reference/splice-scan-api/post-v1updates.mdx @@ -0,0 +1,260 @@ +--- +title: "Update history v1" +api: "POST https://scan.sv-1.global.canton.network.sync.global/api/scan/v1/updates" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Update history v1

+ + + +
+ + OpenAPI + + Since 0.5.10 + + Changed 0.6.0 + +
+ + +
+ +Returns the update history in ascending order, paged, from ledger begin or optionally starting after a record time. Unlike /v0/updates, this endpoint returns responses that are consistent across different scan instances. Event ids returned by this endpoint are not comparable to event ids returned by /v0/updates. Updates are ordered lexicographically by `(migration id, record time)`. For a given migration id, each update has a unique record time. + +## Protocol Details + + + +
+ +
+ Operation ID + getUpdateHistoryV1 +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Request body + + +
+ + application/json + +
+ + + + + + + +OpenAPI type: `UpdateHistoryRequestAfter`. + + + + + + + + +OpenAPI type: `integer (int32)`. + + +The maximum number of transactions returned for this request. + + + + + +OpenAPI type: `DamlValueEncoding`. + + +How daml values should be encoded in the response. "compact_json" is a compact, human-readable JSON encoding. It is the same encoding as the one used in the HTTP JSON API or the JavaScript codegen. "protobuf_json" is a verbose JSON encoding that is more difficult to parse, but contains type information, i.e., the values can be parsed losslessly without having access to the Daml source code. Optional and defaults to "compact_json". + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 500 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Changed + 0.6.0 +
+ +

The POST /v1/updates operation changed in this snapshot.

+ +
+ +
+
+ Changed + 0.5.17 +
+ +

The POST /v1/updates operation changed in this snapshot.

+ +
+ +
+
+ Deprecated + 0.5.10 +
+ +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v1/updates' \ + --header 'Content-Type: application/json' \ + --data '{"after":{"after_migration_id":0,"after_record_time":"string"},"page_size":0,"daml_value_encoding":"compact_json"}' +``` + + + + + + +```json 200 response +{ + "transactions": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-scan-api/post-v2updates.mdx b/docs-main/reference/splice-scan-api/post-v2updates.mdx new file mode 100644 index 000000000..aba1728ea --- /dev/null +++ b/docs-main/reference/splice-scan-api/post-v2updates.mdx @@ -0,0 +1,252 @@ +--- +title: "Update history v2" +api: "POST https://scan.sv-1.global.canton.network.sync.global/api/scan/v2/updates" +playground: "interactive" +--- + +
+ + + +
+ +

Scan API

+ + +

Update history v2

+ + + +
+ + OpenAPI + + Since 0.5.10 + + Changed 0.6.0 + +
+ + +
+ +Returns the update history in ascending order, paged, from ledger begin or optionally starting after a record time. Compared to `/v1/updates`, the `/v2/updates` removes the `offset` field in responses, which was hardcoded to 1 in `/v1/updates` for compatibility, and is now removed. + +## Protocol Details + + + +
+ +
+ Operation ID + getUpdateHistoryV2 +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Request body + + +
+ + application/json + +
+ + + + + + + +OpenAPI type: `UpdateHistoryRequestAfter`. + + + + + + + + +OpenAPI type: `integer (int32)`. + + +The maximum number of transactions returned for this request. + + + + + +OpenAPI type: `DamlValueEncoding`. + + +How daml values should be encoded in the response. "compact_json" is a compact, human-readable JSON encoding. It is the same encoding as the one used in the HTTP JSON API or the JavaScript codegen. "protobuf_json" is a verbose JSON encoding that is more difficult to parse, but contains type information, i.e., the values can be parsed losslessly without having access to the Daml source code. Optional and defaults to "compact_json". + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 500 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Changed + 0.6.0 +
+ +

The POST /v2/updates operation changed in this snapshot.

+ +
+ +
+
+ Changed + 0.5.17 +
+ +

The POST /v2/updates operation changed in this snapshot.

+ +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v2/updates' \ + --header 'Content-Type: application/json' \ + --data '{"after":{"after_migration_id":0,"after_record_time":"string"},"page_size":0,"daml_value_encoding":"compact_json"}' +``` + + + + + + +```json 200 response +{ + "transactions": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-scan-proxy-api/get-v0scan-proxyamulet-rules.mdx b/docs-main/reference/splice-scan-proxy-api/get-v0scan-proxyamulet-rules.mdx new file mode 100644 index 000000000..567ebc4f5 --- /dev/null +++ b/docs-main/reference/splice-scan-proxy-api/get-v0scan-proxyamulet-rules.mdx @@ -0,0 +1,132 @@ +--- +title: "Amulet rules" +api: "GET https://example.com/api/validator/v0/scan-proxy/amulet-rules" +playground: "interactive" +--- + +
+ + + +
+ +

Scan Proxy API

+ + +

Amulet rules

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +## Protocol Details + + + +
+ +
+ Operation ID + getAmuletRules +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://example.com/api/validator/v0/scan-proxy/amulet-rules' +``` + + + + + + +```json 200 response +{ + "amulet_rules": { + "contract": {}, + "domain_id": "string" + } +} +``` + + diff --git a/docs-main/reference/splice-scan-proxy-api/get-v0scan-proxyans-entries.mdx b/docs-main/reference/splice-scan-proxy-api/get-v0scan-proxyans-entries.mdx new file mode 100644 index 000000000..bf74446d0 --- /dev/null +++ b/docs-main/reference/splice-scan-proxy-api/get-v0scan-proxyans-entries.mdx @@ -0,0 +1,158 @@ +--- +title: "List ans entries" +api: "GET https://example.com/api/validator/v0/scan-proxy/ans-entries" +playground: "interactive" +--- + +
+ + + +
+ +

Scan Proxy API

+ + +

List ans entries

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +## Protocol Details + + + +
+ +
+ Operation ID + listAnsEntries +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Query parameters + + + + + + + + + + + + +OpenAPI type: `integer (int32)`. + + + + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://example.com/api/validator/v0/scan-proxy/ans-entries' +``` + + + + + + +```json 200 response +{ + "entries": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-scan-proxy-api/get-v0scan-proxyans-entriesby-name:name.mdx b/docs-main/reference/splice-scan-proxy-api/get-v0scan-proxyans-entriesby-name:name.mdx new file mode 100644 index 000000000..ba1c1d6b4 --- /dev/null +++ b/docs-main/reference/splice-scan-proxy-api/get-v0scan-proxyans-entriesby-name:name.mdx @@ -0,0 +1,178 @@ +--- +title: "Lookup ans entry by name" +api: "GET https://example.com/api/validator/v0/scan-proxy/ans-entries/by-name/{name}" +playground: "interactive" +--- + +
+ + + +
+ +

Scan Proxy API

+ + +

Lookup ans entry by name

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +## Protocol Details + + + +
+ +
+ Operation ID + lookupAnsEntryByName +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://example.com/api/validator/v0/scan-proxy/ans-entries/by-name/{name}' +``` + + + + + + +```json 200 response +{ + "entry": { + "contract_id": "string", + "user": "string", + "name": "string", + "url": "string", + "description": "string", + "expires_at": "2026-01-01T00:00:00Z" + } +} +``` + + diff --git a/docs-main/reference/splice-scan-proxy-api/get-v0scan-proxyans-entriesby-party:party.mdx b/docs-main/reference/splice-scan-proxy-api/get-v0scan-proxyans-entriesby-party:party.mdx new file mode 100644 index 000000000..c745c6453 --- /dev/null +++ b/docs-main/reference/splice-scan-proxy-api/get-v0scan-proxyans-entriesby-party:party.mdx @@ -0,0 +1,178 @@ +--- +title: "Lookup ans entry by party" +api: "GET https://example.com/api/validator/v0/scan-proxy/ans-entries/by-party/{party}" +playground: "interactive" +--- + +
+ + + +
+ +

Scan Proxy API

+ + +

Lookup ans entry by party

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +## Protocol Details + + + +
+ +
+ Operation ID + lookupAnsEntryByParty +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://example.com/api/validator/v0/scan-proxy/ans-entries/by-party/{party}' +``` + + + + + + +```json 200 response +{ + "entry": { + "contract_id": "string", + "user": "string", + "name": "string", + "url": "string", + "description": "string", + "expires_at": "2026-01-01T00:00:00Z" + } +} +``` + + diff --git a/docs-main/reference/splice-scan-proxy-api/get-v0scan-proxydso-party-id.mdx b/docs-main/reference/splice-scan-proxy-api/get-v0scan-proxydso-party-id.mdx new file mode 100644 index 000000000..1fc46778f --- /dev/null +++ b/docs-main/reference/splice-scan-proxy-api/get-v0scan-proxydso-party-id.mdx @@ -0,0 +1,129 @@ +--- +title: "Dso party id" +api: "GET https://example.com/api/validator/v0/scan-proxy/dso-party-id" +playground: "interactive" +--- + +
+ + + +
+ +

Scan Proxy API

+ + +

Dso party id

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +## Protocol Details + + + +
+ +
+ Operation ID + getDsoPartyId +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://example.com/api/validator/v0/scan-proxy/dso-party-id' +``` + + + + + + +```json 200 response +{ + "dso_party_id": "string" +} +``` + + diff --git a/docs-main/reference/splice-scan-proxy-api/get-v0scan-proxydso.mdx b/docs-main/reference/splice-scan-proxy-api/get-v0scan-proxydso.mdx new file mode 100644 index 000000000..61b8ab8d4 --- /dev/null +++ b/docs-main/reference/splice-scan-proxy-api/get-v0scan-proxydso.mdx @@ -0,0 +1,192 @@ +--- +title: "Dso info" +api: "GET https://example.com/api/validator/v0/scan-proxy/dso" +playground: "interactive" +--- + +
+ + + +
+ +

Scan Proxy API

+ + +

Dso info

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +## Protocol Details + + + +
+ +
+ Operation ID + getDsoInfo +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +User ID representing the SV + + + + + +Party representing the SV + + + + + +Party representing the whole DSO; for Scan only, also returned by `/v0/dso-party-id` + + + + + +Threshold required to pass vote requests; also known as the "governance threshold", it is always derived from the number of `svs` in `dso_rules` + + + + + + + + + + + + + + + + + +For every one of `svs` listed in `dso_rules`, a contract of the Daml template `Splice.DSO.SvState.SvNodeState`. This does not include states for offboarded SVs, though they may still have an on-ledger state contract + + + + + +Initial round from which the network bootstraps + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://example.com/api/validator/v0/scan-proxy/dso' +``` + + + + + + +```json 200 response +{ + "sv_user": "string", + "sv_party_id": "string", + "dso_party_id": "string", + "voting_threshold": 0, + "latest_mining_round": { + "contract": {}, + "domain_id": "string" + }, + "amulet_rules": { + "contract": {}, + "domain_id": "string" + }, + "dso_rules": { + "contract": {}, + "domain_id": "string" + }, + "sv_node_states": [ + {} + ], + "initial_round": "string" +} +``` + + diff --git a/docs-main/reference/splice-scan-proxy-api/get-v0scan-proxyfeatured-apps:provider_party_id.mdx b/docs-main/reference/splice-scan-proxy-api/get-v0scan-proxyfeatured-apps:provider_party_id.mdx new file mode 100644 index 000000000..3ff3a69ef --- /dev/null +++ b/docs-main/reference/splice-scan-proxy-api/get-v0scan-proxyfeatured-apps:provider_party_id.mdx @@ -0,0 +1,153 @@ +--- +title: "Lookup featured app right" +api: "GET https://example.com/api/validator/v0/scan-proxy/featured-apps/{provider_party_id}" +playground: "interactive" +--- + +
+ + + +
+ +

Scan Proxy API

+ + +

Lookup featured app right

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +## Protocol Details + + + +
+ +
+ Operation ID + lookupFeaturedAppRight +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://example.com/api/validator/v0/scan-proxy/featured-apps/{provider_party_id}' +``` + + + + + + +```json 200 response +{ + "featured_app_right": { + "template_id": "string", + "contract_id": "string", + "payload": {}, + "created_event_blob": "string", + "created_at": "string" + } +} +``` + + diff --git a/docs-main/reference/splice-scan-proxy-api/get-v0scan-proxyopen-and-issuing-mining-rounds.mdx b/docs-main/reference/splice-scan-proxy-api/get-v0scan-proxyopen-and-issuing-mining-rounds.mdx new file mode 100644 index 000000000..bf3081d06 --- /dev/null +++ b/docs-main/reference/splice-scan-proxy-api/get-v0scan-proxyopen-and-issuing-mining-rounds.mdx @@ -0,0 +1,138 @@ +--- +title: "Open and issuing mining rounds" +api: "GET https://example.com/api/validator/v0/scan-proxy/open-and-issuing-mining-rounds" +playground: "interactive" +--- + +
+ + + +
+ +

Scan Proxy API

+ + +

Open and issuing mining rounds

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +## Protocol Details + + + +
+ +
+ Operation ID + getOpenAndIssuingMiningRounds +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://example.com/api/validator/v0/scan-proxy/open-and-issuing-mining-rounds' +``` + + + + + + +```json 200 response +{ + "open_mining_rounds": [ + {} + ], + "issuing_mining_rounds": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-scan-proxy-api/get-v0scan-proxytransfer-command-counter:party.mdx b/docs-main/reference/splice-scan-proxy-api/get-v0scan-proxytransfer-command-counter:party.mdx new file mode 100644 index 000000000..e7e6fb20a --- /dev/null +++ b/docs-main/reference/splice-scan-proxy-api/get-v0scan-proxytransfer-command-counter:party.mdx @@ -0,0 +1,174 @@ +--- +title: "Lookup transfer command counter by party" +api: "GET https://example.com/api/validator/v0/scan-proxy/transfer-command-counter/{party}" +playground: "interactive" +--- + +
+ + + +
+ +

Scan Proxy API

+ + +

Lookup transfer command counter by party

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +## Protocol Details + + + +
+ +
+ Operation ID + lookupTransferCommandCounterByParty +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://example.com/api/validator/v0/scan-proxy/transfer-command-counter/{party}' +``` + + + + + + +```json 200 response +{ + "transfer_command_counter": { + "contract": {}, + "domain_id": "string" + } +} +``` + + diff --git a/docs-main/reference/splice-scan-proxy-api/get-v0scan-proxytransfer-commandstatus.mdx b/docs-main/reference/splice-scan-proxy-api/get-v0scan-proxytransfer-commandstatus.mdx new file mode 100644 index 000000000..2fd8f9558 --- /dev/null +++ b/docs-main/reference/splice-scan-proxy-api/get-v0scan-proxytransfer-commandstatus.mdx @@ -0,0 +1,182 @@ +--- +title: "Retrieve the status of all transfer commands of the given sender for the specified nonce" +api: "GET https://example.com/api/validator/v0/scan-proxy/transfer-command/status" +playground: "interactive" +--- + +
+ + + +
+ +

Scan Proxy API

+ + +

Retrieve the status of all transfer commands of the given sender for the specified nonce

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +Retrieve the status of all transfer commands of the given sender for the specified nonce. + +## Protocol Details + + + +
+ +
+ Operation ID + lookupTransferCommandStatus +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Query parameters + + + + + + + + + + + + +OpenAPI type: `integer (int64)`. + + + + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://example.com/api/validator/v0/scan-proxy/transfer-command/status' +``` + + + + + + +```json 200 response +{ + "transfer_commands_by_contract_id": {} +} +``` + + diff --git a/docs-main/reference/splice-scan-proxy-api/get-v0scan-proxytransfer-preapprovalsby-party:party.mdx b/docs-main/reference/splice-scan-proxy-api/get-v0scan-proxytransfer-preapprovalsby-party:party.mdx new file mode 100644 index 000000000..a64375d36 --- /dev/null +++ b/docs-main/reference/splice-scan-proxy-api/get-v0scan-proxytransfer-preapprovalsby-party:party.mdx @@ -0,0 +1,174 @@ +--- +title: "Lookup transfer preapproval by party" +api: "GET https://example.com/api/validator/v0/scan-proxy/transfer-preapprovals/by-party/{party}" +playground: "interactive" +--- + +
+ + + +
+ +

Scan Proxy API

+ + +

Lookup transfer preapproval by party

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +## Protocol Details + + + +
+ +
+ Operation ID + lookupTransferPreapprovalByParty +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://example.com/api/validator/v0/scan-proxy/transfer-preapprovals/by-party/{party}' +``` + + + + + + +```json 200 response +{ + "transfer_preapproval": { + "contract": {}, + "domain_id": "string" + } +} +``` + + diff --git a/docs-main/reference/splice-scan-proxy-api/get-v0scan-proxyunclaimed-development-fund-coupons.mdx b/docs-main/reference/splice-scan-proxy-api/get-v0scan-proxyunclaimed-development-fund-coupons.mdx new file mode 100644 index 000000000..10e338c95 --- /dev/null +++ b/docs-main/reference/splice-scan-proxy-api/get-v0scan-proxyunclaimed-development-fund-coupons.mdx @@ -0,0 +1,135 @@ +--- +title: "List all unclaimed development fund coupons" +api: "GET https://example.com/api/validator/v0/scan-proxy/unclaimed-development-fund-coupons" +playground: "interactive" +--- + +
+ + + +
+ +

Scan Proxy API

+ + +

List all unclaimed development fund coupons

+ + + +
+ + OpenAPI + + Since 0.5.11 + +
+ + +
+ +List all unclaimed development fund coupons. + +## Protocol Details + + + +
+ +
+ Operation ID + listUnclaimedDevelopmentFundCoupons +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +Contracts of the Daml template `Splice.Amulet:UnclaimedDevelopmentFundCoupon`. + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.11 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://example.com/api/validator/v0/scan-proxy/unclaimed-development-fund-coupons' +``` + + + + + + +```json 200 response +{ + "unclaimed-development-fund-coupons": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-scan-proxy-api/post-v0scan-proxyans-rules.mdx b/docs-main/reference/splice-scan-proxy-api/post-v0scan-proxyans-rules.mdx new file mode 100644 index 000000000..508bfd82b --- /dev/null +++ b/docs-main/reference/splice-scan-proxy-api/post-v0scan-proxyans-rules.mdx @@ -0,0 +1,167 @@ +--- +title: "Ans rules" +api: "POST https://example.com/api/validator/v0/scan-proxy/ans-rules" +playground: "interactive" +--- + +
+ + + +
+ +

Scan Proxy API

+ + +

Ans rules

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +## Protocol Details + + + +
+ +
+ Operation ID + getAnsRules +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Request body + + +
+ + application/json + +
+ + + + + + + +OpenAPI type: `ContractId`. + + + + + + + + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://example.com/api/validator/v0/scan-proxy/ans-rules' \ + --header 'Content-Type: application/json' \ + --data '{"cached_ans_rules_contract_id":"string","cached_ans_rules_domain_id":"string"}' +``` + + + + + + +```json 200 response +{ + "ans_rules_update": { + "contract": {}, + "domain_id": "string" + } +} +``` + + diff --git a/docs-main/reference/splice-scan-proxy-api/post-v0scan-proxyholdingssummary.mdx b/docs-main/reference/splice-scan-proxy-api/post-v0scan-proxyholdingssummary.mdx new file mode 100644 index 000000000..11d0fc0f0 --- /dev/null +++ b/docs-main/reference/splice-scan-proxy-api/post-v0scan-proxyholdingssummary.mdx @@ -0,0 +1,309 @@ +--- +title: "Deprecated" +api: "POST https://example.com/api/validator/v0/scan-proxy/holdings/summary" +playground: "interactive" +--- + +
+ + + +
+ +

Scan Proxy API

+ + +

Deprecated

+ + + +
+ + OpenAPI + + Since 0.5.10 + + Changed 0.6.3 + +
+ + +
+ +Deprecated. Please use /v1/scan-proxy/holdings/summary instead. Returns the summary of active amulet contracts for a given migration id and record time, for the given parties. This is an aggregate of `/v0/holdings/state` by owner party ID with better performance than client-side computation. + +## Protocol Details + + + +
+ +
+ Operation ID + getHoldingsSummaryAt +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Request body + + +
+ + application/json + +
+ + + + + + + +OpenAPI type: `integer (int64)`. + + +The migration id for which to return the summary. + + + + + +OpenAPI type: `string (date-time)`. + + +The timestamp at which the contract set was active. This needs to be an exact timestamp, i.e., needs to correspond to a timestamp reported by `/v0/state/acs/snapshot-timestamp` if `record_time_match` is set to `exact` (which is the default). If `record_time_match` is set to `at_or_before`, this can be any timestamp, and the most recent snapshot at or before the given `record_time` will be returned. + + + + + + +How to match the record_time. "exact" requires the record_time to match exactly. "at_or_before" finds the most recent snapshot at or before the given record_time. + + + + + + +The owners for which to compute the summary. + + + + + +OpenAPI type: `integer (int64)`. + + +Compute holding fees as of this round. Defaults to the earliest open mining round. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +The same `record_time` as in the request. + + + + + +The same `migration_id` as in the request. + + + + + +The same `as_of_round` as in the request, with the same default. + + + + + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 500 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Deprecated + 0.6.3 +
+ +
+ +
+
+ Changed + 0.6.3 +
+ +

The POST /v0/scan-proxy/holdings/summary operation changed in this snapshot.

+ +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://example.com/api/validator/v0/scan-proxy/holdings/summary' \ + --header 'Content-Type: application/json' \ + --data '{"migration_id":0,"record_time":"2026-01-01T00:00:00Z","record_time_match":"exact","owner_party_ids":["string"],"as_of_round":0}' +``` + + + + + + +```json 200 response +{ + "record_time": "2026-01-01T00:00:00Z", + "migration_id": 0, + "computed_as_of_round": 0, + "summaries": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-scan-proxy-api/post-v1scan-proxyholdingssummary.mdx b/docs-main/reference/splice-scan-proxy-api/post-v1scan-proxyholdingssummary.mdx new file mode 100644 index 000000000..2903ce2c8 --- /dev/null +++ b/docs-main/reference/splice-scan-proxy-api/post-v1scan-proxyholdingssummary.mdx @@ -0,0 +1,273 @@ +--- +title: "Holdings summary at v1" +api: "POST https://example.com/api/validator/v1/scan-proxy/holdings/summary" +playground: "interactive" +--- + +
+ + + +
+ +

Scan Proxy API

+ + +

Holdings summary at v1

+ + + +
+ + OpenAPI + + Since 0.6.3 + +
+ + +
+ +Returns the summary of active amulet contracts for a given migration id and record time, for the given parties. This is an aggregate of `/v0/holdings/state` by owner party ID with better performance than client-side computation. Unlike /v0/scan-proxy/holdings/summary, this version does not include holding fee fields as they do not express a meaningful aggregate value. + +## Protocol Details + + + +
+ +
+ Operation ID + getHoldingsSummaryAtV1 +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Request body + + +
+ + application/json + +
+ + + + + + + +OpenAPI type: `integer (int64)`. + + +The migration id for which to return the summary. + + + + + +OpenAPI type: `string (date-time)`. + + +The timestamp at which the contract set was active. This needs to be an exact timestamp, i.e., needs to correspond to a timestamp reported by `/v0/state/acs/snapshot-timestamp` if `record_time_match` is set to `exact` (which is the default). If `record_time_match` is set to `at_or_before`, this can be any timestamp, and the most recent snapshot at or before the given `record_time` will be returned. + + + + + + +How to match the record_time. "exact" requires the record_time to match exactly. "at_or_before" finds the most recent snapshot at or before the given record_time. + + + + + + +The owners for which to compute the summary. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +The same `record_time` as in the request. + + + + + +The same `migration_id` as in the request. + + + + + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 500 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.6.3 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://example.com/api/validator/v1/scan-proxy/holdings/summary' \ + --header 'Content-Type: application/json' \ + --data '{"migration_id":0,"record_time":"2026-01-01T00:00:00Z","record_time_match":"exact","owner_party_ids":["string"]}' +``` + + + + + + +```json 200 response +{ + "record_time": "2026-01-01T00:00:00Z", + "migration_id": 0, + "summaries": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-scan-streaming-api/get-v0historybulkdownload:object_key.mdx b/docs-main/reference/splice-scan-streaming-api/get-v0historybulkdownload:object_key.mdx new file mode 100644 index 000000000..117fee966 --- /dev/null +++ b/docs-main/reference/splice-scan-streaming-api/get-v0historybulkdownload:object_key.mdx @@ -0,0 +1,183 @@ +--- +title: "Download a bulk storage object" +api: "GET https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/history/bulk/download/{object_key}" +playground: "interactive" +--- + +
+ + + +
+ +

Scan Streaming API

+ + +

Download a bulk storage object

+ + + +
+ + OpenAPI + + Since 0.5.16 + + Changed 0.5.17 + +
+ + +
+ +Download a bulk storage object + +## Protocol Details + + + +
+ +
+ Operation ID + bulkStorageDownload +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/octet-stream + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Changed + 0.5.17 +
+ +

The GET /v0/history/bulk/download/{object_key} operation changed in this snapshot.

+ +
+ +
+
+ Introduced + 0.5.16 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/history/bulk/download/{object_key}' +``` + + + + + + +```json 200 response +"string" +``` + + diff --git a/docs-main/reference/splice-token-metadata-service/get-registrymetadatav1info.mdx b/docs-main/reference/splice-token-metadata-service/get-registrymetadatav1info.mdx new file mode 100644 index 000000000..0a771d795 --- /dev/null +++ b/docs-main/reference/splice-token-metadata-service/get-registrymetadatav1info.mdx @@ -0,0 +1,188 @@ +--- +title: "Get information about the registry" +api: "GET https://example.com/registry/metadata/v1/info" +playground: "interactive" +--- + +
+ + + +
+ +

Token Metadata Service

+ + +

Get information about the registry

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +Get information about the registry. The response includes the standards supported by the registry. + +## Protocol Details + + + +
+ +
+ Operation ID + getRegistryInfo +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +The Daml party representing the registry app + + + + + +Map from token standard API name to the minor version of the API supported, e.g., splice-api-token-metadata-v1 -> 1 where the `1` corresponds to the minor version. + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 500 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://example.com/registry/metadata/v1/info' +``` + + + + + + +```json 200 response +{ + "adminId": "string", + "supportedApis": {} +} +``` + + diff --git a/docs-main/reference/splice-token-metadata-service/get-registrymetadatav1instruments.mdx b/docs-main/reference/splice-token-metadata-service/get-registrymetadatav1instruments.mdx new file mode 100644 index 000000000..ce4910b5d --- /dev/null +++ b/docs-main/reference/splice-token-metadata-service/get-registrymetadatav1instruments.mdx @@ -0,0 +1,240 @@ +--- +title: "List all instruments managed by this instrument admin" +api: "GET https://example.com/registry/metadata/v1/instruments" +playground: "interactive" +--- + +
+ + + +
+ +

Token Metadata Service

+ + +

List all instruments managed by this instrument admin

+ + + +
+ + OpenAPI + + Since 0.5.10 + + Changed 0.6.12 + +
+ + +
+ +List all instruments managed by this instrument admin. + +## Protocol Details + + + +
+ +
+ Operation ID + listInstruments +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Query parameters + + + + + + + + +OpenAPI type: `integer (int32)`. + + +Number of instruments per page. + + + + + + +The `nextPageToken` received from the response for the previous page. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + +The token for the next page of results, to be used as the lastInstrumentId for the next page. + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 500 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Changed + 0.6.12 +
+ +

The GET /registry/metadata/v1/instruments operation changed in this snapshot.

+ +
+ +
+
+ Changed + 0.6.11 +
+ +

The GET /registry/metadata/v1/instruments operation changed in this snapshot.

+ +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://example.com/registry/metadata/v1/instruments' +``` + + + + + + +```json 200 response +{ + "instruments": [ + {} + ], + "nextPageToken": "string" +} +``` + + diff --git a/docs-main/reference/splice-token-metadata-service/get-registrymetadatav1instruments:instrumentid.mdx b/docs-main/reference/splice-token-metadata-service/get-registrymetadatav1instruments:instrumentid.mdx new file mode 100644 index 000000000..d2fee5d22 --- /dev/null +++ b/docs-main/reference/splice-token-metadata-service/get-registrymetadatav1instruments:instrumentid.mdx @@ -0,0 +1,296 @@ +--- +title: "Retrieve an instrument's metadata" +api: "GET https://example.com/registry/metadata/v1/instruments/{instrumentId}" +playground: "interactive" +--- + +
+ + + +
+ +

Token Metadata Service

+ + +

Retrieve an instrument's metadata

+ + + +
+ + OpenAPI + + Since 0.5.10 + + Changed 0.6.12 + +
+ + +
+ +Retrieve an instrument's metadata. + +## Protocol Details + + + +
+ +
+ Operation ID + getInstrument +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +The unique identifier assigned by the admin to the instrument. + + + + + +The display name for the instrument recommended by the instrument admin. This is not necessarily unique. + + + + + +The symbol for the instrument recommended by the instrument admin. This is not necessarily unique. + + + + + +Decimal encoded current total supply of the instrument. + + + + + +The timestamp when the total supply was last computed. + + + + + +The number of decimal places used by the instrument. Must be a number between 0 and 10, as the Daml interfaces represent holding amounts as `Decimal` values, which use 10 decimal places and are precise for 38 digits. Setting this to 0 means that the instrument can only be held in whole units. This number SHOULD be used for display purposes in a wallet to decide how many decimal places to show and accept when displaying or entering amounts. + + + + + +Indicates whether the instrument is currently paused. A paused instrument cannot be transferred or allocated. + + + + + +Additional information about the instrument pause state. + + + + + +Map from token standard API name to the minor version of the API supported, e.g., splice-api-token-metadata-v1 -> 1 where the `1` corresponds to the minor version. + + + + + +Informs wallets whether the instrument supports non-basic accounts and the wallet should thus show input fields for both the account provider and the account id in input forms for transfers and allocations. Note that wallets should always show non-null account providers and account ids when displaying transfers and allocations. This property is deprecated in favor of the more fine-grained `accountInputFieldsToShow` property. + + + + + +Which account input field(s) wallets should show in forms. + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 500 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Changed + 0.6.12 +
+ +

The GET /registry/metadata/v1/instruments/{instrumentId} operation changed in this snapshot.

+ +
+ +
+
+ Changed + 0.6.11 +
+ +

The GET /registry/metadata/v1/instruments/{instrumentId} operation changed in this snapshot.

+ +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://example.com/registry/metadata/v1/instruments/{instrumentId}' +``` + + + + + + +```json 200 response +{ + "id": "string", + "name": "string", + "symbol": "string", + "totalSupply": "string", + "totalSupplyAsOf": "2026-01-01T00:00:00Z", + "decimals": 10, + "paused": false, + "pauseInfo": { + "reason": "string", + "until": "2026-01-01T00:00:00Z" + }, + "supportedApis": {}, + "showAccountInputFields": false, + "accountInputFieldsToShow": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-transfer-instruction-api/post-registrytransfer-instructionv1:transferinstructionidchoice-contextsaccept.mdx b/docs-main/reference/splice-transfer-instruction-api/post-registrytransfer-instructionv1:transferinstructionidchoice-contextsaccept.mdx new file mode 100644 index 000000000..a7d1e9dab --- /dev/null +++ b/docs-main/reference/splice-transfer-instruction-api/post-registrytransfer-instructionv1:transferinstructionidchoice-contextsaccept.mdx @@ -0,0 +1,247 @@ +--- +title: "Get the choice context to accept a transfer instruction" +api: "POST https://example.com/registry/transfer-instruction/v1/{transferInstructionId}/choice-contexts/accept" +playground: "interactive" +--- + +
+ + + +
+ +

Transfer Instruction API

+ + +

Get the choice context to accept a transfer instruction

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +Get the choice context to accept a transfer instruction. + +## Protocol Details + + + +
+ +
+ Operation ID + getTransferInstructionAcceptContext +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + +The contract ID of the transfer instruction to accept. + + + + + + + + + + +### Request body + + +
+ + application/json + +
+ + + + + + + + +Metadata that will be passed to the choice, and should be incorporated into the choice context. Provided for extensibility. + + + + + + +If set to true, the response will not include fields prefixed with 'debug'. Useful to save bandwidth. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +The additional data to use when exercising the choice. + + + + + +The contracts that are required to be disclosed to the participant node for exercising the choice. + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://example.com/registry/transfer-instruction/v1/{transferInstructionId}/choice-contexts/accept' \ + --header 'Content-Type: application/json' \ + --data '{"meta":{},"excludeDebugFields":false}' +``` + + + + + + +```json 200 response +{ + "choiceContextData": {}, + "disclosedContracts": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-transfer-instruction-api/post-registrytransfer-instructionv1:transferinstructionidchoice-contextsreject.mdx b/docs-main/reference/splice-transfer-instruction-api/post-registrytransfer-instructionv1:transferinstructionidchoice-contextsreject.mdx new file mode 100644 index 000000000..d3bcfb9a8 --- /dev/null +++ b/docs-main/reference/splice-transfer-instruction-api/post-registrytransfer-instructionv1:transferinstructionidchoice-contextsreject.mdx @@ -0,0 +1,247 @@ +--- +title: "Get the choice context to reject a transfer instruction" +api: "POST https://example.com/registry/transfer-instruction/v1/{transferInstructionId}/choice-contexts/reject" +playground: "interactive" +--- + +
+ + + +
+ +

Transfer Instruction API

+ + +

Get the choice context to reject a transfer instruction

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +Get the choice context to reject a transfer instruction. + +## Protocol Details + + + +
+ +
+ Operation ID + getTransferInstructionRejectContext +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + +The contract ID of the transfer instruction to reject. + + + + + + + + + + +### Request body + + +
+ + application/json + +
+ + + + + + + + +Metadata that will be passed to the choice, and should be incorporated into the choice context. Provided for extensibility. + + + + + + +If set to true, the response will not include fields prefixed with 'debug'. Useful to save bandwidth. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +The additional data to use when exercising the choice. + + + + + +The contracts that are required to be disclosed to the participant node for exercising the choice. + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://example.com/registry/transfer-instruction/v1/{transferInstructionId}/choice-contexts/reject' \ + --header 'Content-Type: application/json' \ + --data '{"meta":{},"excludeDebugFields":false}' +``` + + + + + + +```json 200 response +{ + "choiceContextData": {}, + "disclosedContracts": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-transfer-instruction-api/post-registrytransfer-instructionv1:transferinstructionidchoice-contextswithdraw.mdx b/docs-main/reference/splice-transfer-instruction-api/post-registrytransfer-instructionv1:transferinstructionidchoice-contextswithdraw.mdx new file mode 100644 index 000000000..5bb622b7b --- /dev/null +++ b/docs-main/reference/splice-transfer-instruction-api/post-registrytransfer-instructionv1:transferinstructionidchoice-contextswithdraw.mdx @@ -0,0 +1,247 @@ +--- +title: "Get the choice context to withdraw a transfer instruction" +api: "POST https://example.com/registry/transfer-instruction/v1/{transferInstructionId}/choice-contexts/withdraw" +playground: "interactive" +--- + +
+ + + +
+ +

Transfer Instruction API

+ + +

Get the choice context to withdraw a transfer instruction

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +Get the choice context to withdraw a transfer instruction. + +## Protocol Details + + + +
+ +
+ Operation ID + getTransferInstructionWithdrawContext +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + +The contract ID of the transfer instruction to withdraw. + + + + + + + + + + +### Request body + + +
+ + application/json + +
+ + + + + + + + +Metadata that will be passed to the choice, and should be incorporated into the choice context. Provided for extensibility. + + + + + + +If set to true, the response will not include fields prefixed with 'debug'. Useful to save bandwidth. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +The additional data to use when exercising the choice. + + + + + +The contracts that are required to be disclosed to the participant node for exercising the choice. + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://example.com/registry/transfer-instruction/v1/{transferInstructionId}/choice-contexts/withdraw' \ + --header 'Content-Type: application/json' \ + --data '{"meta":{},"excludeDebugFields":false}' +``` + + + + + + +```json 200 response +{ + "choiceContextData": {}, + "disclosedContracts": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-transfer-instruction-api/post-registrytransfer-instructionv1transfer-factory.mdx b/docs-main/reference/splice-transfer-instruction-api/post-registrytransfer-instructionv1transfer-factory.mdx new file mode 100644 index 000000000..c49fa4036 --- /dev/null +++ b/docs-main/reference/splice-transfer-instruction-api/post-registrytransfer-instructionv1transfer-factory.mdx @@ -0,0 +1,236 @@ +--- +title: "Get the factory and choice context for executing a direct transfer" +api: "POST https://example.com/registry/transfer-instruction/v1/transfer-factory" +playground: "interactive" +--- + +
+ + + +
+ +

Transfer Instruction API

+ + +

Get the factory and choice context for executing a direct transfer

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +Get the factory and choice context for executing a direct transfer. + +## Protocol Details + + + +
+ +
+ Operation ID + getTransferFactory +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Request body + + +
+ + application/json + +
+ + + + + + + + +The arguments that are intended to be passed to the choice provided by the factory. To avoid repeating the Daml type definitions, they are specified as JSON objects. However the concrete format is given by how the choice arguments are encoded using the Daml JSON API (with the `extraArgs.context` and `extraArgs.meta` fields set to the empty object). The choice arguments are provided so that the registry can also provide choice-argument specific contracts, e.g., the configuration for a specific instrument-id. + + + + + + +If set to true, the response will not include fields prefixed with 'debug'. Useful to save bandwidth. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +The contract ID of the contract implementing the factory interface. + + + + + +The kind of transfer workflow that will be used: * `offer`: offer a transfer to the receiver and only transfer if they accept * `direct`: transfer directly to the receiver without asking them for approval. Only chosen if the receiver has pre-approved direct transfers. * `self`: a self-transfer where the sender and receiver are the same party. No approval is required, and the transfer is typically immediate. + + + + + +The context required to exercise a choice on a contract via an interface. Used to retrieve additional reference data that is passed in via disclosed contracts, which are in turn referred to via their contract ID in the `choiceContextData`. + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://example.com/registry/transfer-instruction/v1/transfer-factory' \ + --header 'Content-Type: application/json' \ + --data '{"choiceArguments":{},"excludeDebugFields":false}' +``` + + + + + + +```json 200 response +{ + "factoryId": "string", + "transferKind": "self", + "choiceContext": { + "choiceContextData": {}, + "disclosedContracts": [ + {} + ] + } +} +``` + + diff --git a/docs-main/reference/splice-transfer-instruction-v2-api/post-registrytransfer-instructionv2:transferinstructionidchoice-contextsaccept.mdx b/docs-main/reference/splice-transfer-instruction-v2-api/post-registrytransfer-instructionv2:transferinstructionidchoice-contextsaccept.mdx new file mode 100644 index 000000000..9c678bfae --- /dev/null +++ b/docs-main/reference/splice-transfer-instruction-v2-api/post-registrytransfer-instructionv2:transferinstructionidchoice-contextsaccept.mdx @@ -0,0 +1,271 @@ +--- +title: "Get the choice context to accept a transfer instruction" +api: "POST https://example.com/registry/transfer-instruction/v2/{transferInstructionId}/choice-contexts/accept" +playground: "interactive" +--- + +
+ + + +
+ +

Transfer Instruction V2 API

+ + +

Get the choice context to accept a transfer instruction

+ + + +
+ + OpenAPI + + Since 0.6.11 + +
+ + +
+ +Get the choice context to accept a transfer instruction. + +## Protocol Details + + + +
+ +
+ Operation ID + getTransferInstructionAcceptContext +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + +The contract ID of the transfer instruction to accept. + + + + + + + + + + +### Request body + + +
+ + application/json + +
+ + + + + + + + +Metadata that will be passed to the choice, and should be incorporated into the choice context. Provided for extensibility. + + + + + + +If set to true, the response will not include fields prefixed with 'debug'. Useful to save bandwidth. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +The additional data to use when exercising the choice. + + + + + +The contracts that are required to be disclosed to the participant node for exercising the choice. + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 409 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.6.11 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://example.com/registry/transfer-instruction/v2/{transferInstructionId}/choice-contexts/accept' \ + --header 'Content-Type: application/json' \ + --data '{"meta":{},"excludeDebugFields":false}' +``` + + + + + + +```json 200 response +{ + "choiceContextData": {}, + "disclosedContracts": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-transfer-instruction-v2-api/post-registrytransfer-instructionv2:transferinstructionidchoice-contextsreject.mdx b/docs-main/reference/splice-transfer-instruction-v2-api/post-registrytransfer-instructionv2:transferinstructionidchoice-contextsreject.mdx new file mode 100644 index 000000000..4054ca090 --- /dev/null +++ b/docs-main/reference/splice-transfer-instruction-v2-api/post-registrytransfer-instructionv2:transferinstructionidchoice-contextsreject.mdx @@ -0,0 +1,271 @@ +--- +title: "Get the choice context to reject a transfer instruction" +api: "POST https://example.com/registry/transfer-instruction/v2/{transferInstructionId}/choice-contexts/reject" +playground: "interactive" +--- + +
+ + + +
+ +

Transfer Instruction V2 API

+ + +

Get the choice context to reject a transfer instruction

+ + + +
+ + OpenAPI + + Since 0.6.11 + +
+ + +
+ +Get the choice context to reject a transfer instruction. + +## Protocol Details + + + +
+ +
+ Operation ID + getTransferInstructionRejectContext +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + +The contract ID of the transfer instruction to reject. + + + + + + + + + + +### Request body + + +
+ + application/json + +
+ + + + + + + + +Metadata that will be passed to the choice, and should be incorporated into the choice context. Provided for extensibility. + + + + + + +If set to true, the response will not include fields prefixed with 'debug'. Useful to save bandwidth. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +The additional data to use when exercising the choice. + + + + + +The contracts that are required to be disclosed to the participant node for exercising the choice. + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 409 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.6.11 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://example.com/registry/transfer-instruction/v2/{transferInstructionId}/choice-contexts/reject' \ + --header 'Content-Type: application/json' \ + --data '{"meta":{},"excludeDebugFields":false}' +``` + + + + + + +```json 200 response +{ + "choiceContextData": {}, + "disclosedContracts": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-transfer-instruction-v2-api/post-registrytransfer-instructionv2:transferinstructionidchoice-contextswithdraw.mdx b/docs-main/reference/splice-transfer-instruction-v2-api/post-registrytransfer-instructionv2:transferinstructionidchoice-contextswithdraw.mdx new file mode 100644 index 000000000..662d19830 --- /dev/null +++ b/docs-main/reference/splice-transfer-instruction-v2-api/post-registrytransfer-instructionv2:transferinstructionidchoice-contextswithdraw.mdx @@ -0,0 +1,271 @@ +--- +title: "Get the choice context to withdraw a transfer instruction" +api: "POST https://example.com/registry/transfer-instruction/v2/{transferInstructionId}/choice-contexts/withdraw" +playground: "interactive" +--- + +
+ + + +
+ +

Transfer Instruction V2 API

+ + +

Get the choice context to withdraw a transfer instruction

+ + + +
+ + OpenAPI + + Since 0.6.11 + +
+ + +
+ +Get the choice context to withdraw a transfer instruction. + +## Protocol Details + + + +
+ +
+ Operation ID + getTransferInstructionWithdrawContext +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + +The contract ID of the transfer instruction to withdraw. + + + + + + + + + + +### Request body + + +
+ + application/json + +
+ + + + + + + + +Metadata that will be passed to the choice, and should be incorporated into the choice context. Provided for extensibility. + + + + + + +If set to true, the response will not include fields prefixed with 'debug'. Useful to save bandwidth. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +The additional data to use when exercising the choice. + + + + + +The contracts that are required to be disclosed to the participant node for exercising the choice. + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 409 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.6.11 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://example.com/registry/transfer-instruction/v2/{transferInstructionId}/choice-contexts/withdraw' \ + --header 'Content-Type: application/json' \ + --data '{"meta":{},"excludeDebugFields":false}' +``` + + + + + + +```json 200 response +{ + "choiceContextData": {}, + "disclosedContracts": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-transfer-instruction-v2-api/post-registrytransfer-instructionv2transfer-factory.mdx b/docs-main/reference/splice-transfer-instruction-v2-api/post-registrytransfer-instructionv2transfer-factory.mdx new file mode 100644 index 000000000..850933236 --- /dev/null +++ b/docs-main/reference/splice-transfer-instruction-v2-api/post-registrytransfer-instructionv2transfer-factory.mdx @@ -0,0 +1,260 @@ +--- +title: "Get the factory and choice context for initiating a transfer workflow" +api: "POST https://example.com/registry/transfer-instruction/v2/transfer-factory" +playground: "interactive" +--- + +
+ + + +
+ +

Transfer Instruction V2 API

+ + +

Get the factory and choice context for initiating a transfer workflow

+ + + +
+ + OpenAPI + + Since 0.6.11 + +
+ + +
+ +Get the factory and choice context for initiating a transfer workflow. + +## Protocol Details + + + +
+ +
+ Operation ID + getTransferFactory +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Request body + + +
+ + application/json + +
+ + + + + + + + +The arguments that are intended to be passed to the choice provided by the factory. To avoid repeating the Daml type definitions, they are specified as JSON objects. However the concrete format is given by how the choice arguments are encoded using the Daml JSON API (with the `extraArgs.context` and `extraArgs.meta` fields set to the empty object). The choice arguments are provided so that the registry can also provide choice-argument specific contracts, e.g., the configuration for a specific instrument-id. + + + + + + +If set to true, the response will not include fields prefixed with 'debug'. Useful to save bandwidth. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + +The contract ID of the contract implementing the factory interface. + + + + + +The kind of transfer workflow that will be used: * `offer`: offer a transfer to the receiver and only transfer if they accept * `direct`: transfer directly to the receiver without asking them for approval. Only chosen if the receiver has pre-approved direct transfers. * `self`: a self-transfer where the sender and receiver are the same party. No approval is required, and the transfer is typically immediate. + + + + + +The context required to exercise a choice on a contract via an interface. Used to retrieve additional reference data that is passed in via disclosed contracts, which are in turn referred to via their contract ID in the `choiceContextData`. Asset implementations SHOULD avoid that this value depends on contract-ids passed in the choice arguments, so that clients can prefetch choice contexts when chaining multiple token standard actions together in a single Daml transaction. + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 409 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.6.11 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://example.com/registry/transfer-instruction/v2/transfer-factory' \ + --header 'Content-Type: application/json' \ + --data '{"choiceArguments":{},"excludeDebugFields":false}' +``` + + + + + + +```json 200 response +{ + "factoryId": "string", + "transferKind": "self", + "choiceContext": { + "choiceContextData": {}, + "disclosedContracts": [ + {} + ] + } +} +``` + + diff --git a/docs-main/reference/splice-wallet-api-external/get-v0wallettransfer-offers.mdx b/docs-main/reference/splice-wallet-api-external/get-v0wallettransfer-offers.mdx new file mode 100644 index 000000000..b770ace06 --- /dev/null +++ b/docs-main/reference/splice-wallet-api-external/get-v0wallettransfer-offers.mdx @@ -0,0 +1,188 @@ +--- +title: "List all open transfer offers where the user is either sender or receiver" +api: "GET https://example.com/api/validator/v0/wallet/transfer-offers" +authMethod: "bearer" +playground: "interactive" +--- + +
+ + + +
+ +

Wallet API (External)

+ + +

List all open transfer offers where the user is either sender or receiver

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +List all open transfer offers where the user is either sender or receiver. + +## Protocol Details + + + +
+ +
+ Operation ID + listTransferOffers +
+ +
+ Authentication + Bearer token +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 500 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request GET \ + --url 'https://example.com/api/validator/v0/wallet/transfer-offers' \ + --header 'Authorization: Bearer $TOKEN' +``` + + + + + + +```json 200 response +{ + "offers": [ + {} + ] +} +``` + + diff --git a/docs-main/reference/splice-wallet-api-external/post-v0walletbuy-traffic-requests.mdx b/docs-main/reference/splice-wallet-api-external/post-v0walletbuy-traffic-requests.mdx new file mode 100644 index 000000000..56224f332 --- /dev/null +++ b/docs-main/reference/splice-wallet-api-external/post-v0walletbuy-traffic-requests.mdx @@ -0,0 +1,295 @@ +--- +title: "Create a request to buy traffic" +api: "POST https://example.com/api/validator/v0/wallet/buy-traffic-requests" +authMethod: "bearer" +playground: "interactive" +--- + +
+ + + +
+ +

Wallet API (External)

+ + +

Create a request to buy traffic

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +Create a request to buy traffic. Note that this only creates the request to do so. Refer to the status endpoint to check if the request succeeded. + +## Protocol Details + + + +
+ +
+ Operation ID + createBuyTrafficRequest +
+ +
+ Authentication + Bearer token +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Request body + + +
+ + application/json + +
+ + + + + + + + +Traffic will be purchased for the validator hosting this party. If the party is hosted on multiple participants, the request will fail with 400 Bad Request. + + + + + + +The domain to purchase traffic for. + + + + + +OpenAPI type: `integer (int64)`. + + +traffic to purchase in bytes. + + + + + + +Tracking id to support exactly once submission. Once submitted, all succeessive calls with the same tracking id will get rejected with a 409 or 429 status code unless the command fails and the traffic did not get purchased. Clients should create a fresh tracking id when they try to send a new request to buy traffic. If that command submission fails with a retryable error or the application crashed and got restarted, successive command submissions must reuse the same tracking id to ensure they don't purchase traffic multiple times. + + + + + +OpenAPI type: `integer (int64)`. + + +Expiry time of the request to buy traffic as unix timestamp in microseconds. If the request does not succeed before this time, the wallet automation will reject and expire it. Note that this time is compared against the ledger effective time of the Daml transaction accepting or expiring an offer, and can skew from the wall clock time measured on the caller's machine. See https://docs.daml.com/concepts/time.html for how ledger effective time is bound to the record time of a transaction on a domain. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 409 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 429 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 500 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://example.com/api/validator/v0/wallet/buy-traffic-requests' \ + --header 'Authorization: Bearer $TOKEN' \ + --header 'Content-Type: application/json' \ + --data '{"receiving_validator_party_id":"string","domain_id":"string","traffic_amount":0,"tracking_id":"string","expires_at":0}' +``` + + + + + + +```json 200 response +{ + "request_contract_id": "string" +} +``` + + diff --git a/docs-main/reference/splice-wallet-api-external/post-v0walletbuy-traffic-requests:tracking_idstatus.mdx b/docs-main/reference/splice-wallet-api-external/post-v0walletbuy-traffic-requests:tracking_idstatus.mdx new file mode 100644 index 000000000..8ae340d72 --- /dev/null +++ b/docs-main/reference/splice-wallet-api-external/post-v0walletbuy-traffic-requests:tracking_idstatus.mdx @@ -0,0 +1,178 @@ +--- +title: "Check the status of a buy traffic request with a given tracking id" +api: "POST https://example.com/api/validator/v0/wallet/buy-traffic-requests/{tracking_id}/status" +authMethod: "bearer" +playground: "interactive" +--- + +
+ + + +
+ +

Wallet API (External)

+ + +

Check the status of a buy traffic request with a given tracking id

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +Check the status of a buy traffic request with a given tracking id. + +## Protocol Details + + + +
+ +
+ Operation ID + getBuyTrafficRequestStatus +
+ +
+ Authentication + Bearer token +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://example.com/api/validator/v0/wallet/buy-traffic-requests/{tracking_id}/status' \ + --header 'Authorization: Bearer $TOKEN' +``` + + + + + + +```json 200 response +{} +``` + + diff --git a/docs-main/reference/splice-wallet-api-external/post-v0wallettransfer-offers.mdx b/docs-main/reference/splice-wallet-api-external/post-v0wallettransfer-offers.mdx new file mode 100644 index 000000000..19fea1411 --- /dev/null +++ b/docs-main/reference/splice-wallet-api-external/post-v0wallettransfer-offers.mdx @@ -0,0 +1,317 @@ +--- +title: "Create an offer to directly transfer a given amount of Amulet to another party" +api: "POST https://example.com/api/validator/v0/wallet/transfer-offers" +authMethod: "bearer" +playground: "interactive" +--- + +
+ + + +
+ +

Wallet API (External)

+ + +

Create an offer to directly transfer a given amount of Amulet to another party

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +Create an offer to directly transfer a given amount of Amulet to another party. Direct transfers are a three-step process: 1. The sender creates a transfer offer 2. The receiver accepts the offer 3. The sender's wallet automation consumes the accepted offer and transfers the amount. Amulets are not locked for direct transfers. If the sender's wallet does not have enough Amulet to fulfill the offer at this point, the transfer will fail. + +## Protocol Details + + + +
+ +
+ Operation ID + createTransferOffer +
+ +
+ Authentication + Bearer token +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Request body + + +
+ + application/json + +
+ + + + + + + + +The party id of the receiver. + + + + + + +The amount of Amulet to transfer. + + + + + + +An arbitrary, user chosen text. This should be a human readable string that describes the purpose of the transfer. It will be shown to the receiver when they decide whether to accept the offer. + + + + + +OpenAPI type: `integer (int64)`. + + +Expiry time of the transfer offer as unix timestamp in microseconds. After this time, the offer can no longer be accepted and automation in the wallet will eventually expire the transfer offer. Note that this time is compared against the ledger effective time of the Daml transaction accepting or expiring an offer, and can skew from the wall clock time measured on the caller's machine. See https://docs.daml.com/concepts/time.html for how ledger effective time is bound to the record time of a transaction on a domain. + + + + + + +Tracking id to support exactly once submission. Once submitted, all successive calls with the same tracking id will get rejected with a 409 or 429 status code unless the command fails and the offer did not get created. Clients should create a fresh tracking id when they try to create a new transfer offer. If that command submission fails with a retryable error or the application crashed and got restarted, successive command submissions must reuse the same tracking id to ensure they don't create the same offer multiple times. + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 400 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 409 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 429 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 500 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://example.com/api/validator/v0/wallet/transfer-offers' \ + --header 'Authorization: Bearer $TOKEN' \ + --header 'Content-Type: application/json' \ + --data '{"receiver_party_id":"string","amount":"string","description":"string","expires_at":0,"tracking_id":"string"}' +``` + + + + + + +```json 200 response +{ + "offer_contract_id": "string" +} +``` + + diff --git a/docs-main/reference/splice-wallet-api-external/post-v0wallettransfer-offers:tracking_idstatus.mdx b/docs-main/reference/splice-wallet-api-external/post-v0wallettransfer-offers:tracking_idstatus.mdx new file mode 100644 index 000000000..851b4cf2f --- /dev/null +++ b/docs-main/reference/splice-wallet-api-external/post-v0wallettransfer-offers:tracking_idstatus.mdx @@ -0,0 +1,178 @@ +--- +title: "Check the status of a transfer offer with a given tracking id" +api: "POST https://example.com/api/validator/v0/wallet/transfer-offers/{tracking_id}/status" +authMethod: "bearer" +playground: "interactive" +--- + +
+ + + +
+ +

Wallet API (External)

+ + +

Check the status of a transfer offer with a given tracking id

+ + + +
+ + OpenAPI + + Since 0.5.10 + +
+ + +
+ +Check the status of a transfer offer with a given tracking id. + +## Protocol Details + + + +
+ +
+ Operation ID + getTransferOfferStatus +
+ +
+ Authentication + Bearer token +
+ +
+ Published + 0.7.4 +
+ +
+ Specification + Download OpenAPI +
+ +
+ + + +## Inputs + + + +### Path parameters + + + + + + + + + + + + + + + + + +## Outputs + + + +### 200 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + +### 404 + + +
+ + application/json + +
+ + + + + + + + + + + + + + + + + + + + + + +## History + +
+ +
+
+ Introduced + 0.5.10 +
+ +
+ +
+ + + + + + +```bash Request +curl --request POST \ + --url 'https://example.com/api/validator/v0/wallet/transfer-offers/{tracking_id}/status' \ + --header 'Authorization: Bearer $TOKEN' +``` + + + + + + +```json 200 response +{} +``` + + diff --git a/scripts/generate_splice_mintlify_openapi.py b/scripts/generate_splice_mintlify_openapi.py index c7b381ffb..a950e0095 100644 --- a/scripts/generate_splice_mintlify_openapi.py +++ b/scripts/generate_splice_mintlify_openapi.py @@ -3,6 +3,7 @@ from __future__ import annotations import argparse +import hashlib import json import os import re @@ -16,15 +17,31 @@ import yaml from validate_splice_mintlify_openapi_nav import validate_splice_nav +from x2mdx.openapi import ( + ManualOpenAPIRenderOptions, + operation_history_events, + render_manual_openapi_operation, +) +from x2mdx.render import write_page REPO_ROOT = Path(__file__).resolve().parents[1] USER_AGENT = "digital-asset-docs-mintlify-openapi/1.0" -DEFAULT_SOURCE_CONFIG = REPO_ROOT / "config" / "mintlify-openapi" / "splice-openapi" / "source-artifacts.json" -DEFAULT_CACHE_DIR = REPO_ROOT / ".internal" / "cache" / "mintlify-openapi" / "splice-openapi" +DEFAULT_SOURCE_CONFIG = ( + REPO_ROOT + / "config" + / "mintlify-openapi" + / "splice-openapi" + / "source-artifacts.json" +) +DEFAULT_CACHE_DIR = ( + REPO_ROOT / ".internal" / "cache" / "mintlify-openapi" / "splice-openapi" +) DEFAULT_DOCS_JSON = REPO_ROOT / "docs-main" / "docs.json" HTTP_METHODS = {"get", "put", "post", "delete", "options", "head", "patch", "trace"} SCAN_OPENAPI_PLACEHOLDER_SERVER = "https://example.com/api/scan" -SCAN_OPENAPI_PUBLIC_SERVER = "https://scan.sv-1.global.canton.network.sync.global/api/scan" +SCAN_OPENAPI_PUBLIC_SERVER = ( + "https://scan.sv-1.global.canton.network.sync.global/api/scan" +) SCAN_OPENAPI_SERVER_REPLACEMENT_SPECS = {"scan.yaml", "scan-stream-server.yaml"} UNPUBLISHED_SECURITY_SCHEME_LINK_RE = re.compile( r"as described in \[spliceAppBearerAuth\]\(\"?(?:\.\./)+common/src/main/openapi/" @@ -91,7 +108,9 @@ def selected_releases( f"https://api.github.com/repos/{release_repo}/releases?per_page=100&page={page}" ) if not isinstance(payload, list): - raise ValueError(f"Expected list payload from GitHub releases API for {release_repo}") + raise ValueError( + f"Expected list payload from GitHub releases API for {release_repo}" + ) if not payload: break for release in payload: @@ -141,7 +160,9 @@ def selected_releases( releases.sort(key=lambda entry: version_key(entry["version"])) if not releases: - raise ValueError(f"No published releases matched the configured Splice OpenAPI selection for {release_repo}") + raise ValueError( + f"No published releases matched the configured Splice OpenAPI selection for {release_repo}" + ) return releases @@ -160,10 +181,14 @@ def resolve_publish_release( if publish_version is None: return releases[-1] - selected = next((entry for entry in releases if entry["version"] == publish_version), None) + selected = next( + (entry for entry in releases if entry["version"] == publish_version), None + ) if selected is None: available = ", ".join(entry["version"] for entry in releases) - raise ValueError(f"Publish version '{publish_version}' not found in selected releases: {available}") + raise ValueError( + f"Publish version '{publish_version}' not found in selected releases: {available}" + ) return selected @@ -187,7 +212,10 @@ def ensure_archive( release["download_url"], headers={"User-Agent": USER_AGENT}, ) - with urllib.request.urlopen(request, timeout=180) as response, temp_path.open("wb") as handle: + with ( + urllib.request.urlopen(request, timeout=180) as response, + temp_path.open("wb") as handle, + ): shutil.copyfileobj(response, handle) temp_path.replace(output_path) return output_path @@ -216,7 +244,10 @@ def normalized_families(source_config: dict[str, Any]) -> list[dict[str, Any]]: nav_label = spec.get("nav_label") source_ref = spec.get("source") directory = spec.get("directory") - if not all(isinstance(item, str) and item for item in (filename, nav_label, source_ref, directory)): + if not all( + isinstance(item, str) and item + for item in (filename, nav_label, source_ref, directory) + ): raise ValueError( f"Specs for family '{group}' must define non-empty filename, nav_label, source, and directory" ) @@ -247,17 +278,49 @@ def extract_spec_bytes( continue raw_handle = handle.extractfile(member) if raw_handle is None: - raise FileNotFoundError(f"Failed to extract '{member.name}' from {archive}") + raise FileNotFoundError( + f"Failed to extract '{member.name}' from {archive}" + ) extracted[filename] = raw_handle.read() missing = sorted(spec_filenames - extracted.keys()) if missing: joined = ", ".join(missing) - raise FileNotFoundError(f"Archive {archive} did not contain expected OpenAPI specs: {joined}") + raise FileNotFoundError( + f"Archive {archive} did not contain expected OpenAPI specs: {joined}" + ) + return extracted + + +def extract_available_spec_bytes( + *, + archive: Path, + spec_filenames: set[str], +) -> dict[str, bytes]: + extracted: dict[str, bytes] = {} + with tarfile.open(archive, "r:gz") as handle: + for member in handle.getmembers(): + if not member.isfile(): + continue + filename = Path(member.name).name + if filename not in spec_filenames: + continue + if filename in extracted: + raise ValueError( + f"Duplicate OpenAPI spec '{filename}' found in {archive}" + ) + raw_handle = handle.extractfile(member) + if raw_handle is None: + raise FileNotFoundError( + f"Failed to extract '{member.name}' from {archive}" + ) + extracted[filename] = raw_handle.read() return extracted -def render_output_bytes(*, spec_filename: str, spec_bytes: bytes, output_path: Path) -> bytes: +def render_output_bytes( + *, spec_filename: str, spec_bytes: bytes, output_path: Path +) -> bytes: if output_path.suffix not in {".yaml", ".yml"}: return spec_bytes @@ -329,9 +392,13 @@ def operation_summary_rewrites(spec: dict[str, Any]) -> dict[tuple[str, str], st continue summary = operation.get("summary") if not isinstance(summary, str) or not summary.strip(): - rewrites[(path, method.lower())] = generated_operation_summary(path, method) + rewrites[(path, method.lower())] = generated_operation_summary( + path, method + ) elif path_only_operation_summary(path, method, summary): - rewrites[(path, method.lower())] = generated_operation_summary(path, method) + rewrites[(path, method.lower())] = generated_operation_summary( + path, method + ) return rewrites @@ -355,7 +422,9 @@ def add_missing_operation_summaries(text: str) -> str: if current_path is not None and current_method is not None: summary_match = re.fullmatch(r" summary:\s*.*", line) if summary_match and (current_path, current_method) in rewrites: - output_lines.append(f' summary: "{rewrites[(current_path, current_method)]}"') + output_lines.append( + f' summary: "{rewrites[(current_path, current_method)]}"' + ) current_method = None continue @@ -382,7 +451,9 @@ def add_missing_operation_summaries(text: str) -> str: current_method = None continue - method_match = re.fullmatch(r" (?Pget|put|post|delete|options|head|patch|trace):\s*", line) + method_match = re.fullmatch( + r" (?Pget|put|post|delete|options|head|patch|trace):\s*", line + ) if current_path is None or method_match is None: continue @@ -395,14 +466,90 @@ def add_missing_operation_summaries(text: str) -> str: rendered = "\n".join(output_lines).rstrip() + "\n" parsed = yaml.safe_load(rendered) if not isinstance(parsed, dict): - raise ValueError("Generated OpenAPI YAML stopped parsing after summary insertion") + raise ValueError( + "Generated OpenAPI YAML stopped parsing after summary insertion" + ) remaining = operation_summary_rewrites(parsed) if remaining: - details = ", ".join(f"{method.upper()} {path}" for path, method in sorted(remaining)) - raise ValueError(f"Failed to normalize generated summaries for OpenAPI operations: {details}") + details = ", ".join( + f"{method.upper()} {path}" for path, method in sorted(remaining) + ) + raise ValueError( + f"Failed to normalize generated summaries for OpenAPI operations: {details}" + ) return rendered +def materialize_release_specs( + *, + cache_dir: Path, + release: dict[str, str], + spec_filenames: set[str], + force_refresh: bool, +) -> dict[str, dict[str, Any]]: + archive = ensure_archive( + cache_dir=cache_dir, + release=release, + force_refresh=force_refresh, + ) + extracted = extract_available_spec_bytes( + archive=archive, + spec_filenames=spec_filenames, + ) + fixture_dir = cache_dir / "fixtures" / release["version"] + if fixture_dir.exists(): + shutil.rmtree(fixture_dir) + fixture_dir.mkdir(parents=True, exist_ok=True) + + parsed: dict[str, dict[str, Any]] = {} + for filename, raw_bytes in sorted(extracted.items()): + normalized = render_output_bytes( + spec_filename=filename, + spec_bytes=raw_bytes, + output_path=Path(filename), + ) + fixture_path = fixture_dir / filename + fixture_path.write_bytes(normalized) + payload = yaml.safe_load(normalized.decode("utf-8")) + if not isinstance(payload, dict): + raise ValueError( + f"Expected {filename} from Splice {release['version']} to parse as an object" + ) + parsed[filename] = payload + return parsed + + +def versioned_enabled_specs( + *, + cache_dir: Path, + releases: list[dict[str, str]], + spec_filenames: set[str], + force_refresh: bool, +) -> dict[str, dict[str, dict[str, Any]]]: + snapshots: dict[str, dict[str, dict[str, Any]]] = { + filename: {} for filename in spec_filenames + } + for release in releases: + release_specs = materialize_release_specs( + cache_dir=cache_dir, + release=release, + spec_filenames=spec_filenames, + force_refresh=force_refresh, + ) + for filename, payload in release_specs.items(): + snapshots[filename][release["version"]] = payload + + missing = sorted( + filename for filename, versions in snapshots.items() if not versions + ) + if missing: + raise ValueError( + "Enabled Splice OpenAPI specs were absent from every selected release: " + + ", ".join(missing) + ) + return snapshots + + def write_managed_specs( *, docs_root: Path, @@ -481,6 +628,119 @@ def filtered_families_for_navigation( return filtered +def validate_excluded_specs( + *, + source_config: dict[str, Any], + families: list[dict[str, Any]], + enabled_specs: set[str] | None, +) -> None: + if enabled_specs is None: + return + all_specs = {spec["filename"] for family in families for spec in family["specs"]} + disabled_specs = all_specs - enabled_specs + excluded = source_config.get("excluded_specs") + if not isinstance(excluded, list): + raise ValueError( + "source config must record every disabled family spec in excluded_specs" + ) + recorded: set[str] = set() + for index, item in enumerate(excluded): + if not isinstance(item, dict): + raise ValueError(f"excluded_specs[{index}] must be an object") + filename = item.get("filename") + reason = item.get("reason") + if not isinstance(filename, str) or not filename: + raise ValueError( + f"excluded_specs[{index}].filename must be a non-empty string" + ) + if not isinstance(reason, str) or not reason.strip(): + raise ValueError( + f"excluded_specs[{index}].reason must be a non-empty string" + ) + recorded.add(filename) + if recorded != disabled_specs: + raise ValueError( + "excluded_specs must exactly match disabled family specs: " + f"expected={sorted(disabled_specs)} recorded={sorted(recorded)}" + ) + + +def operation_items(spec: dict[str, Any]) -> list[tuple[str, str, dict[str, Any]]]: + paths = spec.get("paths") + if not isinstance(paths, dict): + raise ValueError("OpenAPI specification must define paths") + operations: list[tuple[str, str, dict[str, Any]]] = [] + for path, path_item in paths.items(): + if not isinstance(path, str) or not isinstance(path_item, dict): + continue + for method, operation in path_item.items(): + if method.lower() in HTTP_METHODS and isinstance(operation, dict): + operations.append((method.upper(), path, operation)) + return operations + + +def manual_operation_page_ref(*, directory: str, method: str, path: str) -> str: + mintlify_path = mintlify_operation_path(path) + slug = mintlify_path.removeprefix("/").replace("/", "").lower() + return f"{directory.rstrip('/')}/{method.lower()}-{slug}" + + +def manual_operation_page_refs(*, spec: dict[str, Any], directory: str) -> list[str]: + return [ + manual_operation_page_ref(directory=directory, method=method, path=path) + for method, path, _operation in operation_items(spec) + ] + + +def validate_manual_route_baseline( + source_config: dict[str, Any], + *, + families: list[dict[str, Any]], + snapshots: dict[str, dict[str, dict[str, Any]]], + publish_version: str, +) -> None: + baseline = source_config.get("legacy_manual_route_baseline") + if not isinstance(baseline, dict): + raise ValueError("legacy_manual_route_baseline must be an object") + expected_count = baseline.get("operation_count") + expected_sha256 = baseline.get("sha256") + if not isinstance(expected_count, int) or expected_count < 0: + raise ValueError( + "legacy_manual_route_baseline.operation_count must be a non-negative integer" + ) + if not isinstance(expected_sha256, str) or not re.fullmatch( + r"[0-9a-f]{64}", expected_sha256 + ): + raise ValueError( + "legacy_manual_route_baseline.sha256 must be a lowercase SHA-256 digest" + ) + + routes: list[str] = [] + for family in families: + for spec_config in family["specs"]: + published = snapshots[spec_config["filename"]].get(publish_version) + if published is None: + raise ValueError( + f"Enabled spec {spec_config['filename']} is absent from publish version {publish_version}" + ) + routes.extend( + f"/{page_ref}" + for page_ref in manual_operation_page_refs( + spec=published, + directory=spec_config["directory"], + ) + ) + actual_sha256 = hashlib.sha256( + ("\n".join(sorted(routes)) + "\n").encode("utf-8") + ).hexdigest() + if len(routes) != expected_count or actual_sha256 != expected_sha256: + raise ValueError( + "Manual Splice OpenAPI routes do not match the captured native-route baseline: " + f"expected {expected_count} routes/{expected_sha256}, got " + f"{len(routes)} routes/{actual_sha256}" + ) + + def openapi_operation_page_refs(spec: dict[str, Any]) -> list[str]: paths = spec.get("paths") if not isinstance(paths, dict): @@ -497,33 +757,164 @@ def openapi_operation_page_refs(spec: dict[str, Any]) -> list[str]: return refs -def build_splice_openapi_nav_entry(*, docs_root: Path, spec: dict[str, Any]) -> dict[str, Any]: +def manual_api_server(spec: dict[str, Any]) -> str: + servers = spec.get("servers") + if isinstance(servers, list): + for server in servers: + if isinstance(server, dict): + url = server.get("url") + if isinstance(url, str) and url.strip(): + return url.strip() + return "https://example.com" + + +def operation_authentication( + *, + spec: dict[str, Any], + operation: dict[str, Any], +) -> tuple[str | None, str | None]: + security = operation.get("security", spec.get("security")) + if security is None or security == []: + return None, None + if not isinstance(security, list): + raise ValueError("OpenAPI operation security must be a list") + if any(requirement == {} for requirement in security): + return None, None + + components = spec.get("components") + schemes = ( + components.get("securitySchemes") if isinstance(components, dict) else None + ) + if not isinstance(schemes, dict): + raise ValueError("Secured OpenAPI operation does not define securitySchemes") + for requirement in security: + if not isinstance(requirement, dict): + continue + for scheme_name in requirement: + scheme = schemes.get(scheme_name) + if not isinstance(scheme, dict): + continue + if ( + scheme.get("type") == "http" + and str(scheme.get("scheme")).lower() == "bearer" + ): + return "bearer", "Bearer token" + raise ValueError( + "Manual Splice OpenAPI rendering currently supports public or HTTP bearer operations" + ) + + +def prepare_manual_output_directories( + *, docs_root: Path, families: list[dict[str, Any]] +) -> None: + for family in families: + for spec_config in family["specs"]: + output_dir = docs_root / spec_config["directory"] + if output_dir.exists(): + shutil.rmtree(output_dir) + output_dir.mkdir(parents=True, exist_ok=True) + + +def write_manual_operation_pages( + *, + docs_json_path: Path, + families: list[dict[str, Any]], + snapshots: dict[str, dict[str, dict[str, Any]]], + release_versions: list[str], + publish_version: str, + source_name: str, +) -> set[Path]: + docs_root = docs_json_path.parent + prepare_manual_output_directories(docs_root=docs_root, families=families) + written: set[Path] = set() + for family in families: + for spec_config in family["specs"]: + filename = spec_config["filename"] + specs_by_version = snapshots[filename] + versions = [ + version for version in release_versions if version in specs_by_version + ] + if publish_version not in specs_by_version: + raise ValueError( + f"Enabled spec {filename} is absent from publish version {publish_version}" + ) + published = specs_by_version[publish_version] + server = manual_api_server(published) + raw_spec_href = f"/{spec_config['source']}" + for method, path, operation in operation_items(published): + page_ref = manual_operation_page_ref( + directory=spec_config["directory"], + method=method, + path=path, + ) + auth_method, authentication_label = operation_authentication( + spec=published, + operation=operation, + ) + history_events = operation_history_events( + specs_by_version=specs_by_version, + versions=versions, + publish_version=publish_version, + method=method, + path=path, + source_name=f"{source_name}: {filename}", + ) + page = render_manual_openapi_operation( + spec=published, + options=ManualOpenAPIRenderOptions( + method=method, + path=path, + output_path=f"{page_ref}.mdx", + server=server, + surface_label=spec_config["nav_label"], + auth_method=auth_method, + authentication_label=authentication_label, + raw_spec_href=raw_spec_href, + ), + history_events=history_events, + publish_version=publish_version, + ) + output_path = docs_root / f"{page_ref}.mdx" + write_page(page, output_path) + written.add(output_path.resolve()) + print(f"Generated manual Splice OpenAPI page: {output_path}") + return written + + +def build_splice_openapi_nav_entry( + *, docs_root: Path, spec: dict[str, Any] +) -> dict[str, Any]: openapi_path = docs_root / spec["source"] payload = yaml.safe_load(openapi_path.read_text(encoding="utf-8")) if not isinstance(payload, dict): raise ValueError(f"Expected OpenAPI spec to parse as an object: {openapi_path}") entry: dict[str, Any] = { "group": spec["nav_label"], - "openapi": { - "source": spec["source"], - "directory": spec["directory"], - }, - "pages": openapi_operation_page_refs(payload), + "pages": manual_operation_page_refs( + spec=payload, + directory=spec["directory"], + ), } return entry -def build_splice_group_pages(*, docs_root: Path, families: list[dict[str, Any]]) -> list[Any]: +def build_splice_group_pages( + *, docs_root: Path, families: list[dict[str, Any]] +) -> list[Any]: pages: list[Any] = [] for family in families: family_pages: list[dict[str, Any]] = [] for spec in family["specs"]: - family_pages.append(build_splice_openapi_nav_entry(docs_root=docs_root, spec=spec)) + family_pages.append( + build_splice_openapi_nav_entry(docs_root=docs_root, spec=spec) + ) pages.append({"group": family["group"], "pages": family_pages}) return pages -def navigation_pages(payload: dict[str, Any], dropdown_label: str, docs_json_path: Path) -> list[Any]: +def navigation_pages( + payload: dict[str, Any], dropdown_label: str, docs_json_path: Path +) -> list[Any]: navigation = payload.get("navigation") if not isinstance(navigation, dict): raise ValueError(f"docs.json missing navigation object: {docs_json_path}") @@ -531,7 +922,11 @@ def navigation_pages(payload: dict[str, Any], dropdown_label: str, docs_json_pat dropdowns = navigation.get("dropdowns") if isinstance(dropdowns, list): dropdown = next( - (item for item in dropdowns if isinstance(item, dict) and item.get("dropdown") == dropdown_label), + ( + item + for item in dropdowns + if isinstance(item, dict) and item.get("dropdown") == dropdown_label + ), None, ) if dropdown is None: @@ -544,7 +939,11 @@ def navigation_pages(payload: dict[str, Any], dropdown_label: str, docs_json_pat products = navigation.get("products") if isinstance(products, list): product = next( - (item for item in products if isinstance(item, dict) and item.get("product") == dropdown_label), + ( + item + for item in products + if isinstance(item, dict) and item.get("product") == dropdown_label + ), None, ) if product is None: @@ -554,10 +953,14 @@ def navigation_pages(payload: dict[str, Any], dropdown_label: str, docs_json_pat raise ValueError(f"Product does not expose a pages list: {dropdown_label}") return pages - raise ValueError(f"docs.json navigation must define dropdowns or products: {docs_json_path}") + raise ValueError( + f"docs.json navigation must define dropdowns or products: {docs_json_path}" + ) -def merge_splice_group_pages(*, existing_pages: list[Any], generated_pages: list[Any]) -> list[Any]: +def merge_splice_group_pages( + *, existing_pages: list[Any], generated_pages: list[Any] +) -> list[Any]: generated_group_labels = { item["group"] for item in generated_pages @@ -588,7 +991,9 @@ def update_docs_navigation( if insert_after_group is not None and not isinstance(insert_after_group, str): raise ValueError("insert_after_group must be a string when set") enabled_specs = enabled_nav_specs(source_config) - navigation_families = filtered_families_for_navigation(families=families, enabled_specs=enabled_specs) + navigation_families = filtered_families_for_navigation( + families=families, enabled_specs=enabled_specs + ) pages = navigation_pages(payload, dropdown_label, docs_json_path) @@ -612,7 +1017,9 @@ def update_docs_navigation( insert_at = index + 1 break - generated_pages = build_splice_group_pages(docs_root=docs_json_path.parent, families=navigation_families) + generated_pages = build_splice_group_pages( + docs_root=docs_json_path.parent, families=navigation_families + ) if existing_top_group_pages is not None: generated_pages = merge_splice_group_pages( existing_pages=existing_top_group_pages, @@ -630,8 +1037,9 @@ def update_docs_navigation( def parse_args() -> argparse.Namespace: parser = argparse.ArgumentParser( description=( - "Publish the latest configured Splice OpenAPI specs into docs-main/openapi so Mintlify can " - "render them natively, and wire any enabled spec groups into docs.json." + "Publish configured Splice OpenAPI specs into docs-main/openapi, generate " + "checked-in manual operation pages with release history, and wire enabled " + "spec groups into docs.json." ) ) parser.add_argument("--source-config", default=str(DEFAULT_SOURCE_CONFIG)) @@ -658,19 +1066,34 @@ def main() -> int: args = parse_args() source_config = load_json(Path(args.source_config).resolve()) include_versions = set(args.version) if args.version else None - releases = selected_releases(source_config=source_config, include_versions=include_versions) + releases = selected_releases( + source_config=source_config, include_versions=include_versions + ) publish_release = resolve_publish_release( source_config=source_config, releases=releases, requested_version=args.publish_version, ) + cache_dir = Path(args.cache_dir).resolve() archive = ensure_archive( - cache_dir=Path(args.cache_dir).resolve(), + cache_dir=cache_dir, release=publish_release, force_refresh=args.force_refresh, ) families = normalized_families(source_config) - spec_filenames = {spec["filename"] for family in families for spec in family["specs"]} + enabled_specs = enabled_nav_specs(source_config) + validate_excluded_specs( + source_config=source_config, + families=families, + enabled_specs=enabled_specs, + ) + navigation_families = filtered_families_for_navigation( + families=families, + enabled_specs=enabled_specs, + ) + spec_filenames = { + spec["filename"] for family in families for spec in family["specs"] + } spec_bytes = extract_spec_bytes(archive=archive, spec_filenames=spec_filenames) docs_json_path = Path(args.docs_json).resolve() @@ -681,6 +1104,31 @@ def main() -> int: families=families, spec_bytes=spec_bytes, ) + enabled_filenames = { + spec["filename"] for family in navigation_families for spec in family["specs"] + } + snapshots = versioned_enabled_specs( + cache_dir=cache_dir, + releases=releases, + spec_filenames=enabled_filenames, + force_refresh=args.force_refresh, + ) + validate_manual_route_baseline( + source_config, + families=navigation_families, + snapshots=snapshots, + publish_version=publish_release["version"], + ) + write_manual_operation_pages( + docs_json_path=docs_json_path, + families=navigation_families, + snapshots=snapshots, + release_versions=[release["version"] for release in releases], + publish_version=publish_release["version"], + source_name=str( + source_config.get("source") or "Splice OpenAPI release bundle snapshots" + ), + ) cleanup_legacy_outputs(docs_root=docs_root, source_config=source_config) update_docs_navigation( docs_json_path=docs_json_path, diff --git a/scripts/validate_splice_mintlify_openapi_nav.py b/scripts/validate_splice_mintlify_openapi_nav.py index 81fc10e86..f3091f638 100644 --- a/scripts/validate_splice_mintlify_openapi_nav.py +++ b/scripts/validate_splice_mintlify_openapi_nav.py @@ -12,7 +12,13 @@ REPO_ROOT = Path(__file__).resolve().parents[1] -DEFAULT_SOURCE_CONFIG = REPO_ROOT / "config" / "mintlify-openapi" / "splice-openapi" / "source-artifacts.json" +DEFAULT_SOURCE_CONFIG = ( + REPO_ROOT + / "config" + / "mintlify-openapi" + / "splice-openapi" + / "source-artifacts.json" +) DEFAULT_DOCS_JSON = REPO_ROOT / "docs-main" / "docs.json" HTTP_METHODS = {"get", "put", "post", "delete", "options", "head", "patch", "trace"} @@ -24,14 +30,20 @@ def load_json(path: Path) -> dict[str, Any]: return payload -def navigation_dropdown_pages(docs: dict[str, Any], dropdown_label: str, docs_json_path: Path) -> list[Any]: +def navigation_dropdown_pages( + docs: dict[str, Any], dropdown_label: str, docs_json_path: Path +) -> list[Any]: navigation = docs.get("navigation") if not isinstance(navigation, dict): raise ValueError(f"docs.json missing navigation object: {docs_json_path}") dropdowns = navigation.get("dropdowns") if isinstance(dropdowns, list): dropdown = next( - (item for item in dropdowns if isinstance(item, dict) and item.get("dropdown") == dropdown_label), + ( + item + for item in dropdowns + if isinstance(item, dict) and item.get("dropdown") == dropdown_label + ), None, ) if dropdown is None: @@ -44,7 +56,11 @@ def navigation_dropdown_pages(docs: dict[str, Any], dropdown_label: str, docs_js products = navigation.get("products") if isinstance(products, list): product = next( - (item for item in products if isinstance(item, dict) and item.get("product") == dropdown_label), + ( + item + for item in products + if isinstance(item, dict) and item.get("product") == dropdown_label + ), None, ) if product is None: @@ -54,7 +70,9 @@ def navigation_dropdown_pages(docs: dict[str, Any], dropdown_label: str, docs_js raise ValueError(f"Product does not expose a pages list: {dropdown_label}") return pages - raise ValueError(f"docs.json navigation must define dropdowns or products: {docs_json_path}") + raise ValueError( + f"docs.json navigation must define dropdowns or products: {docs_json_path}" + ) def find_group(items: list[Any], label: str) -> dict[str, Any] | None: @@ -100,8 +118,13 @@ def expected_openapi_specs(source_config: dict[str, Any]) -> list[dict[str, Any] nav_label = spec.get("nav_label") source = spec.get("source") directory = spec.get("directory") - if not all(isinstance(item, str) and item for item in (filename, nav_label, source, directory)): - raise ValueError("Each source config spec must define filename, nav_label, source, and directory") + if not all( + isinstance(item, str) and item + for item in (filename, nav_label, source, directory) + ): + raise ValueError( + "Each source config spec must define filename, nav_label, source, and directory" + ) if selected is None or filename in selected: entries.append( { @@ -116,7 +139,10 @@ def expected_openapi_specs(source_config: dict[str, Any]) -> list[dict[str, Any] def expected_openapi_entries(source_config: dict[str, Any]) -> list[tuple[str, str]]: - return [(spec["source"], spec["directory"]) for spec in expected_openapi_specs(source_config)] + return [ + (spec["source"], spec["directory"]) + for spec in expected_openapi_specs(source_config) + ] def collect_openapi_entries(node: Any, entries: set[tuple[str, str]]) -> None: @@ -177,6 +203,30 @@ def openapi_operation_page_refs(openapi_path: Path) -> list[str]: return refs +def mintlify_operation_path(path: str) -> str: + return re.sub(r"\{([^{}]+)\}", r":\1", path) + + +def manual_operation_page_ref(*, directory: str, method: str, path: str) -> str: + mintlify_path = mintlify_operation_path(path) + slug = mintlify_path.removeprefix("/").replace("/", "").lower() + return f"{directory.rstrip('/')}/{method.lower()}-{slug}" + + +def manual_operation_page_refs(openapi_path: Path, *, directory: str) -> list[str]: + return [ + manual_operation_page_ref( + directory=directory, + method=method, + path=path, + ) + for method, path in ( + page_ref.split(" ", 1) + for page_ref in openapi_operation_page_refs(openapi_path) + ) + ] + + def mintlify_operation_slug(summary: str) -> str: without_braced_params = re.sub(r"\{[^}]+}", "", summary) return re.sub(r"[^A-Za-z0-9]+", "", without_braced_params).lower() @@ -193,7 +243,9 @@ def validate_openapi_operation_slug_uniqueness( openapi_path = docs_root / source spec = yaml.safe_load(openapi_path.read_text(encoding="utf-8")) if not isinstance(spec, dict): - raise ValueError(f"Expected OpenAPI spec to parse as an object: {openapi_path}") + raise ValueError( + f"Expected OpenAPI spec to parse as an object: {openapi_path}" + ) paths = spec.get("paths") if not isinstance(paths, dict): continue @@ -203,7 +255,9 @@ def validate_openapi_operation_slug_uniqueness( if not isinstance(path, str) or not isinstance(path_item, dict): continue for method, operation in path_item.items(): - if method.lower() not in HTTP_METHODS or not isinstance(operation, dict): + if method.lower() not in HTTP_METHODS or not isinstance( + operation, dict + ): continue summary = operation.get("summary") if not isinstance(summary, str) or not summary.strip(): @@ -242,7 +296,7 @@ def validate_openapi_operation_summaries( ) -def validate_explicit_openapi_nav_pages( +def validate_explicit_manual_nav_pages( *, docs_json_path: Path, top_group: dict[str, Any], @@ -256,25 +310,55 @@ def validate_explicit_openapi_nav_pages( for spec in expected_specs: family_group = find_group(top_group_pages, spec["family_group"]) if family_group is None: - raise ValueError(f"Splice OpenAPI family is missing from nav: {spec['family_group']}") + raise ValueError( + f"Splice OpenAPI family is missing from nav: {spec['family_group']}" + ) family_pages = family_group.get("pages") if not isinstance(family_pages, list): - raise ValueError(f"Splice OpenAPI family must expose pages: {spec['family_group']}") + raise ValueError( + f"Splice OpenAPI family must expose pages: {spec['family_group']}" + ) spec_group = find_group(family_pages, spec["nav_label"]) if spec_group is None: - raise ValueError(f"Splice OpenAPI spec is missing from nav: {spec['nav_label']}") + raise ValueError( + f"Splice OpenAPI spec is missing from nav: {spec['nav_label']}" + ) actual_pages = spec_group.get("pages") if not isinstance(actual_pages, list): - raise ValueError(f"Splice OpenAPI spec must expose explicit pages: {spec['nav_label']}") - expected_pages = openapi_operation_page_refs(docs_root / spec["source"]) + raise ValueError( + f"Splice OpenAPI spec must expose explicit pages: {spec['nav_label']}" + ) + expected_pages = manual_operation_page_refs( + docs_root / spec["source"], + directory=spec["directory"], + ) if actual_pages != expected_pages: raise ValueError( - f"Splice OpenAPI nav pages differ for {spec['nav_label']}:\n" + f"Splice manual OpenAPI nav pages differ for {spec['nav_label']}:\n" f"expected={expected_pages}\nactual={actual_pages}" ) + for page_ref in expected_pages: + page_path = docs_root / f"{page_ref}.mdx" + if not page_path.is_file(): + raise ValueError(f"Splice manual OpenAPI page is missing: {page_path}") + text = page_path.read_text(encoding="utf-8") + headings = re.findall(r"(?m)^## .+$", text) + if not headings or headings[-1] != "## History": + raise ValueError( + f"Splice manual OpenAPI page must end with History: {page_path}" + ) + if "details and history" in text.lower(): + raise ValueError( + f"Splice manual OpenAPI page contains retired history wording: {page_path}" + ) -def validate_splice_nav(*, source_config_path: Path = DEFAULT_SOURCE_CONFIG, docs_json_path: Path = DEFAULT_DOCS_JSON) -> None: + +def validate_splice_nav( + *, + source_config_path: Path = DEFAULT_SOURCE_CONFIG, + docs_json_path: Path = DEFAULT_DOCS_JSON, +) -> None: source_config = load_json(source_config_path) docs = load_json(docs_json_path) dropdown_label = source_config.get("nav_dropdown") or "API Reference" @@ -287,19 +371,30 @@ def validate_splice_nav(*, source_config_path: Path = DEFAULT_SOURCE_CONFIG, doc pages = navigation_dropdown_pages(docs, dropdown_label, docs_json_path) top_group = find_group(pages, top_level_group_label) if top_group is None: - raise ValueError(f"Configured Splice OpenAPI nav group is missing: {top_level_group_label}") + raise ValueError( + f"Configured Splice OpenAPI nav group is missing: {top_level_group_label}" + ) actual_entries: set[tuple[str, str]] = set() collect_openapi_entries(top_group, actual_entries) + if actual_entries: + details = "\n".join( + f"- source={source} directory={directory}" + for source, directory in sorted(actual_entries) + ) + raise ValueError( + "Splice APIs still contain native Mintlify OpenAPI navigation entries:\n" + f"{details}" + ) expected_specs = expected_openapi_specs(source_config) expected_entries = [(spec["source"], spec["directory"]) for spec in expected_specs] - missing = [entry for entry in expected_entries if entry not in actual_entries] - if missing: - details = "\n".join(f"- source={source} directory={directory}" for source, directory in missing) - raise ValueError(f"Splice OpenAPI nav is missing configured entries:\n{details}") - validate_openapi_operation_summaries(docs_json_path=docs_json_path, entries=expected_entries) - validate_openapi_operation_slug_uniqueness(docs_json_path=docs_json_path, entries=expected_entries) - validate_explicit_openapi_nav_pages( + validate_openapi_operation_summaries( + docs_json_path=docs_json_path, entries=expected_entries + ) + validate_openapi_operation_slug_uniqueness( + docs_json_path=docs_json_path, entries=expected_entries + ) + validate_explicit_manual_nav_pages( docs_json_path=docs_json_path, top_group=top_group, expected_specs=expected_specs, @@ -307,7 +402,9 @@ def validate_splice_nav(*, source_config_path: Path = DEFAULT_SOURCE_CONFIG, doc def parse_args() -> argparse.Namespace: - parser = argparse.ArgumentParser(description="Validate configured Splice OpenAPI specs are wired into docs.json.") + parser = argparse.ArgumentParser( + description="Validate configured Splice OpenAPI specs are wired into docs.json." + ) parser.add_argument("--source-config", default=str(DEFAULT_SOURCE_CONFIG)) parser.add_argument("--docs-json", default=str(DEFAULT_DOCS_JSON)) return parser.parse_args() diff --git a/tests/test_splice_mintlify_openapi.py b/tests/test_splice_mintlify_openapi.py index fe96e0e03..e326c6ee8 100644 --- a/tests/test_splice_mintlify_openapi.py +++ b/tests/test_splice_mintlify_openapi.py @@ -1,6 +1,7 @@ from __future__ import annotations import importlib.util +import hashlib import json import sys from pathlib import Path @@ -32,7 +33,9 @@ def test_splice_openapi_release_requests_use_github_token(monkeypatch) -> None: module = load_script_module("generate_splice_mintlify_openapi.py") monkeypatch.setenv("GITHUB_TOKEN", "test-token") - assert module.request_headers("https://api.github.com/repos/example/project/releases") == { + assert module.request_headers( + "https://api.github.com/repos/example/project/releases" + ) == { "Accept": "application/vnd.github+json", "User-Agent": module.USER_AGENT, "Authorization": "Bearer test-token", @@ -64,14 +67,21 @@ def test_splice_openapi_rewrites_scan_server_examples(tmp_path: Path) -> None: output_path=tmp_path / "wallet-external.yaml", ).decode("utf-8") - assert "https://scan.sv-1.global.canton.network.sync.global/api/scan" in rendered_scan - assert "https://scan.sv-1.global.canton.network.sync.global/api/scan" in rendered_stream + assert ( + "https://scan.sv-1.global.canton.network.sync.global/api/scan" in rendered_scan + ) + assert ( + "https://scan.sv-1.global.canton.network.sync.global/api/scan" + in rendered_stream + ) assert "https://example.com/api/scan" not in rendered_scan assert "https://example.com/api/scan" not in rendered_stream assert "https://example.com/api/scan" in rendered_wallet -def test_splice_openapi_nav_emits_explicit_pages_for_every_spec(tmp_path: Path) -> None: +def test_splice_openapi_nav_emits_explicit_manual_pages_for_every_spec( + tmp_path: Path, +) -> None: module = load_script_module("generate_splice_mintlify_openapi.py") docs_json = tmp_path / "docs-main" / "docs.json" write_json( @@ -81,13 +91,17 @@ def test_splice_openapi_nav_emits_explicit_pages_for_every_spec(tmp_path: Path) "dropdowns": [ { "dropdown": "API Reference", - "pages": [{"group": "Wallet Kernel", "pages": ["reference/wallet"]}], + "pages": [ + {"group": "Wallet Kernel", "pages": ["reference/wallet"]} + ], } ] } }, ) - openapi_path = tmp_path / "docs-main" / "openapi" / "splice" / "token-standard" / "token.yaml" + openapi_path = ( + tmp_path / "docs-main" / "openapi" / "splice" / "token-standard" / "token.yaml" + ) openapi_path.parent.mkdir(parents=True, exist_ok=True) openapi_path.write_text( """openapi: 3.0.3 @@ -136,18 +150,62 @@ def test_splice_openapi_nav_emits_explicit_pages_for_every_spec(tmp_path: Path) scan_api = scan_group["pages"][0] assert scan_api == { "group": "Scan API", - "openapi": { - "source": "openapi/splice/token-standard/token.yaml", - "directory": "reference/splice-scan-api", - }, "pages": [ - "GET /registry/metadata", - "POST /registry/metadata/{token-id}", + "reference/splice-scan-api/get-registrymetadata", + "reference/splice-scan-api/post-registrymetadata:token-id", ], } -def test_splice_openapi_normalizes_path_summaries_for_mintlify_operation_slugs(tmp_path: Path) -> None: +def test_splice_manual_pages_rely_on_mintlify_navigation_breadcrumbs( + tmp_path: Path, +) -> None: + module = load_script_module("generate_splice_mintlify_openapi.py") + spec = { + "openapi": "3.0.3", + "servers": [{"url": "https://scan.example.com/api/scan"}], + "paths": { + "/v0/scans": { + "get": { + "summary": "List scans", + "operationId": "listScans", + "responses": {"200": {"description": "Success"}}, + } + } + }, + } + docs_json = tmp_path / "docs-main" / "docs.json" + + written = module.write_manual_operation_pages( + docs_json_path=docs_json, + families=[ + { + "group": "Scan APIs", + "specs": [ + { + "filename": "scan.yaml", + "nav_label": "Scan API", + "source": "openapi/splice/scan/scan.yaml", + "directory": "reference/splice-scan-api", + } + ], + } + ], + snapshots={"scan.yaml": {"0.7.4": spec}}, + release_versions=["0.7.4"], + publish_version="0.7.4", + source_name="test fixtures", + ) + + assert len(written) == 1 + rendered = next(iter(written)).read_text(encoding="utf-8") + assert "x2mdx-ref-breadcrumbs" not in rendered + assert 'Operation ID' in rendered + + +def test_splice_openapi_normalizes_path_summaries_for_mintlify_operation_slugs( + tmp_path: Path, +) -> None: module = load_script_module("generate_splice_mintlify_openapi.py") source = b"""openapi: 3.0.3 paths: @@ -178,9 +236,13 @@ def test_splice_openapi_normalizes_path_summaries_for_mintlify_operation_slugs(t assert ' summary: "GET /registry/missing/:token-id"' in rendered -def test_splice_openapi_validator_rejects_mintlify_operation_slug_collisions(tmp_path: Path) -> None: +def test_splice_openapi_validator_rejects_mintlify_operation_slug_collisions( + tmp_path: Path, +) -> None: module = load_script_module("validate_splice_mintlify_openapi_nav.py") - openapi_path = tmp_path / "docs-main" / "openapi" / "splice" / "token-standard" / "token.yaml" + openapi_path = ( + tmp_path / "docs-main" / "openapi" / "splice" / "token-standard" / "token.yaml" + ) openapi_path.parent.mkdir(parents=True, exist_ok=True) openapi_path.write_text( """openapi: 3.0.3 @@ -199,7 +261,9 @@ def test_splice_openapi_validator_rejects_mintlify_operation_slug_collisions(tmp try: module.validate_openapi_operation_slug_uniqueness( docs_json_path=tmp_path / "docs-main" / "docs.json", - entries=[("openapi/splice/token-standard/token.yaml", "reference/splice-token")], + entries=[ + ("openapi/splice/token-standard/token.yaml", "reference/splice-token") + ], ) except ValueError as error: assert "collide under Mintlify operation slugging" in str(error) @@ -228,7 +292,10 @@ def test_splice_openapi_nav_updates_product_navigation_and_preserves_existing_pa "group": "Splice APIs", "pages": [ "sdks-tools/api-reference/splice-daml-apis", - {"group": "Scan APIs", "pages": ["stale-scan-entry"]}, + { + "group": "Scan APIs", + "pages": ["stale-scan-entry"], + }, ], }, ], @@ -281,4 +348,71 @@ def test_splice_openapi_nav_updates_product_navigation_and_preserves_existing_pa assert splice_group["group"] == "Splice APIs" assert splice_group["pages"][0] == "sdks-tools/api-reference/splice-daml-apis" assert splice_group["pages"][1]["group"] == "Scan APIs" - assert splice_group["pages"][1]["pages"][0]["pages"] == ["GET /v0/scans"] + assert splice_group["pages"][1]["pages"][0]["pages"] == [ + "reference/splice-scan-api/get-v0scans" + ] + + +def test_splice_openapi_exclusions_must_cover_disabled_specs() -> None: + module = load_script_module("generate_splice_mintlify_openapi.py") + source_config = { + "enabled_nav_specs": ["public.yaml"], + "excluded_specs": [{"filename": "internal.yaml", "reason": "Internal API."}], + "families": [ + { + "group": "APIs", + "specs": [ + { + "filename": "public.yaml", + "nav_label": "Public", + "source": "openapi/public.yaml", + "directory": "reference/public", + }, + { + "filename": "internal.yaml", + "nav_label": "Internal", + "source": "openapi/internal.yaml", + "directory": "reference/internal", + }, + ], + } + ], + } + + module.validate_excluded_specs( + source_config=source_config, + families=module.normalized_families(source_config), + enabled_specs=module.enabled_nav_specs(source_config), + ) + + +def test_splice_openapi_route_baseline_covers_manual_reader_routes() -> None: + module = load_script_module("generate_splice_mintlify_openapi.py") + spec = { + "openapi": "3.0.3", + "paths": { + "/v0/items/{item_id}": {"get": {"operationId": "getItem", "responses": {}}} + }, + } + route = "/reference/splice-items/get-v0items:item_id\n" + module.validate_manual_route_baseline( + { + "legacy_manual_route_baseline": { + "operation_count": 1, + "sha256": hashlib.sha256(route.encode("utf-8")).hexdigest(), + } + }, + families=[ + { + "group": "APIs", + "specs": [ + { + "filename": "items.yaml", + "directory": "reference/splice-items", + } + ], + } + ], + snapshots={"items.yaml": {"0.7.4": spec}}, + publish_version="0.7.4", + ) From 9ffd0ed4baef29310c8c3feb351465b5c66a4975 Mon Sep 17 00:00:00 2001 From: danielporterda Date: Wed, 26 Aug 2026 15:06:13 -0400 Subject: [PATCH 3/4] Match generated reference colors to the design Signed-off-by: danielporterda --- docs-main/styles.css | 136 ++++++++++++++++++++------- tests/test_reference_page_history.py | 30 ++++++ 2 files changed, 130 insertions(+), 36 deletions(-) diff --git a/docs-main/styles.css b/docs-main/styles.css index a07599469..19a9a995b 100644 --- a/docs-main/styles.css +++ b/docs-main/styles.css @@ -24,6 +24,25 @@ --canton-product-selector-line-active: #734BE2; --canton-product-selector-divider: rgba(75, 85, 99, 0.16); + /* Generated-reference visual system, sourced from the approved Figma frame. */ + --x2mdx-ref-canvas: #F6F8FB; + --x2mdx-ref-sidebar: #FBFCFD; + --x2mdx-ref-surface: #FFFFFF; + --x2mdx-ref-text-strong: #11131A; + --x2mdx-ref-text: #252937; + --x2mdx-ref-text-muted: #6B7280; + --x2mdx-ref-border: rgba(17, 19, 26, 0.08); + --x2mdx-ref-accent-soft: #F3EEFF; + --x2mdx-ref-neutral-soft: #F4F5F7; + --x2mdx-ref-info: #1D4ED8; + --x2mdx-ref-info-soft: #EDF5FF; + --x2mdx-ref-success: #15803D; + --x2mdx-ref-success-soft: #ECFBF0; + --x2mdx-ref-danger: #B91C1C; + --x2mdx-ref-danger-soft: #FFF1F1; + --x2mdx-ref-warning: #B16305; + --x2mdx-ref-warning-soft: #FFF8E4; + /* Typography */ --canton-font-family: 'Inter', system-ui, -apple-system, sans-serif; } @@ -40,6 +59,24 @@ --canton-product-selector-line: rgba(169, 133, 255, 0.70); --canton-product-selector-line-active: #A985FF; --canton-product-selector-divider: rgba(255, 255, 255, 0.10); + + --x2mdx-ref-canvas: #111115; + --x2mdx-ref-sidebar: #111115; + --x2mdx-ref-surface: rgba(17, 24, 39, 0.78); + --x2mdx-ref-text-strong: #F3F4F6; + --x2mdx-ref-text: #E5E7EB; + --x2mdx-ref-text-muted: #D1D5DB; + --x2mdx-ref-border: rgba(255, 255, 255, 0.08); + --x2mdx-ref-accent-soft: rgba(169, 133, 255, 0.16); + --x2mdx-ref-neutral-soft: rgba(156, 163, 175, 0.12); + --x2mdx-ref-info: #93C5FD; + --x2mdx-ref-info-soft: rgba(29, 78, 216, 0.22); + --x2mdx-ref-success: #86EFAC; + --x2mdx-ref-success-soft: rgba(21, 128, 61, 0.22); + --x2mdx-ref-danger: #FCA5A5; + --x2mdx-ref-danger-soft: rgba(185, 28, 28, 0.22); + --x2mdx-ref-warning: #FCD34D; + --x2mdx-ref-warning-soft: rgba(177, 99, 5, 0.22); } /* ============================================ @@ -448,6 +485,29 @@ div.todo { x2mdx Reference Renderer ============================================ */ +/* Mintlify supplies the chrome and interactive API playground. The shared + reference renderer owns the page canvas and content surfaces. */ +body:has(.x2mdx-ref-page) #background-color { + background-color: var(--x2mdx-ref-canvas) !important; +} + +body:has(.x2mdx-ref-page) #navbar { + border-bottom: 1px solid var(--x2mdx-ref-border); + background-color: var(--x2mdx-ref-surface); +} + +body:has(.x2mdx-ref-page) #sidebar { + background-color: var(--x2mdx-ref-sidebar); +} + +body:has(.x2mdx-ref-page) #content-container { + color: var(--x2mdx-ref-text-muted); +} + +body:has(.x2mdx-ref-page) #content-container :is(h1, h2, h3, h4, h5, h6) { + color: var(--x2mdx-ref-text-strong); +} + .x2mdx-ref-back { margin: 0 0 0.75rem; font-size: 0.9rem; @@ -474,7 +534,7 @@ div.todo { align-items: center; gap: 0.5rem; margin: 0 0 0.75rem; - color: rgb(107, 114, 128); + color: var(--x2mdx-ref-text-muted); font-size: 0.9rem; line-height: 1.35; } @@ -498,7 +558,7 @@ div.todo { font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; - color: rgb(107, 114, 128); + color: var(--x2mdx-ref-text-muted); } :root.dark .x2mdx-ref-eyebrow, @@ -508,6 +568,7 @@ div.todo { .x2mdx-ref-title { margin: 0; + color: var(--x2mdx-ref-text-strong); font-size: clamp(2rem, 3vw, 2.7rem); line-height: 1.05; } @@ -540,7 +601,7 @@ div.todo { .x2mdx-ref-summary { margin: 0; max-width: 58rem; - color: rgb(75, 85, 99); + color: var(--x2mdx-ref-text-muted); font-size: 1.02rem; } @@ -657,9 +718,9 @@ body:has(.x2mdx-ref-page--operation):not(:has(.x2mdx-ref-page--manual-api)) [ari margin: 0 0 3.25rem; padding: 0.55rem 0.75rem; overflow: hidden; - border: 1px solid rgba(13, 12, 17, 0.1); + border: 1px solid var(--x2mdx-ref-border); border-radius: 1rem; - background: rgba(255, 255, 255, 0.64); + background: var(--x2mdx-ref-surface); box-shadow: 0 1px 2px rgba(13, 12, 17, 0.04); } @@ -768,7 +829,7 @@ body:has(.x2mdx-ref-page--operation):not(:has(.x2mdx-ref-page--manual-api)) [ari padding: 0.14rem 0.52rem; border: 1px solid rgba(var(--canton-highlight-rgb), 0.16); border-radius: 999px; - background: rgba(var(--canton-highlight-rgb), 0.06); + background: var(--x2mdx-ref-accent-soft); color: var(--canton-highlight); font-size: 0.76rem; font-weight: 600; @@ -776,9 +837,9 @@ body:has(.x2mdx-ref-page--operation):not(:has(.x2mdx-ref-page--manual-api)) [ari } .x2mdx-ref-badge--neutral { - background: rgba(107, 114, 128, 0.08); - border-color: rgba(107, 114, 128, 0.14); - color: rgb(75, 85, 99); + background: var(--x2mdx-ref-neutral-soft); + border-color: rgba(107, 114, 128, 0.18); + color: var(--x2mdx-ref-text-muted); } :root.dark .x2mdx-ref-badge--neutral, @@ -789,21 +850,21 @@ body:has(.x2mdx-ref-page--operation):not(:has(.x2mdx-ref-page--manual-api)) [ari } .x2mdx-ref-badge--added { - background: rgba(22, 163, 74, 0.08); - border-color: rgba(22, 163, 74, 0.18); - color: rgb(21, 128, 61); + background: var(--x2mdx-ref-success-soft); + border-color: rgba(21, 128, 61, 0.18); + color: var(--x2mdx-ref-success); } .x2mdx-ref-badge--changed { - background: rgba(37, 99, 235, 0.08); - border-color: rgba(37, 99, 235, 0.18); - color: rgb(29, 78, 216); + background: var(--x2mdx-ref-info-soft); + border-color: rgba(29, 78, 216, 0.18); + color: var(--x2mdx-ref-info); } .x2mdx-ref-badge--removed { - background: rgba(220, 38, 38, 0.08); - border-color: rgba(220, 38, 38, 0.18); - color: rgb(185, 28, 28); + background: var(--x2mdx-ref-danger-soft); + border-color: rgba(185, 28, 28, 0.18); + color: var(--x2mdx-ref-danger); } .x2mdx-ref-meta-grid { @@ -816,9 +877,9 @@ body:has(.x2mdx-ref-page--operation):not(:has(.x2mdx-ref-page--manual-api)) [ari .x2mdx-ref-meta-item { min-width: 0; padding: 0.85rem 0.95rem; - border: 1px solid rgba(15, 23, 42, 0.08); + border: 1px solid var(--x2mdx-ref-border); border-radius: 0.7rem; - background: rgba(255, 255, 255, 0.74); + background: var(--x2mdx-ref-surface); } :root.dark .x2mdx-ref-meta-item, @@ -833,7 +894,7 @@ body:has(.x2mdx-ref-page--operation):not(:has(.x2mdx-ref-page--manual-api)) [ari font-size: 0.77rem; font-weight: 600; text-transform: uppercase; - color: rgb(107, 114, 128); + color: var(--x2mdx-ref-text-muted); } .x2mdx-ref-meta-item dd, @@ -842,6 +903,7 @@ body:has(.x2mdx-ref-page--operation):not(:has(.x2mdx-ref-page--manual-api)) [ari overflow-wrap: anywhere; font-size: 0.96rem; font-weight: 500; + color: var(--x2mdx-ref-text); } .x2mdx-ref-card-grid { @@ -856,9 +918,9 @@ body:has(.x2mdx-ref-page--operation):not(:has(.x2mdx-ref-page--manual-api)) [ari min-height: 100%; min-width: 0; padding: 1rem; - border: 1px solid rgba(15, 23, 42, 0.08); + border: 1px solid var(--x2mdx-ref-border); border-radius: 0.7rem; - background: rgba(255, 255, 255, 0.82); + background: var(--x2mdx-ref-surface); color: inherit; text-decoration: none; transition: border-color 160ms ease, transform 160ms ease, background-color 160ms ease; @@ -889,7 +951,7 @@ body:has(.x2mdx-ref-page--operation):not(:has(.x2mdx-ref-page--manual-api)) [ari font-size: 1rem; font-weight: 700; line-height: 1.3; - color: inherit; + color: var(--x2mdx-ref-text-strong); text-decoration: none; overflow-wrap: anywhere; } @@ -905,7 +967,7 @@ body:has(.x2mdx-ref-page--operation):not(:has(.x2mdx-ref-page--manual-api)) [ari .x2mdx-ref-card-summary { order: 1; margin: 0; - color: rgb(75, 85, 99); + color: var(--x2mdx-ref-text-muted); overflow-wrap: anywhere; } @@ -923,31 +985,32 @@ body:has(.x2mdx-ref-page--operation):not(:has(.x2mdx-ref-page--manual-api)) [ari display: grid; gap: 0.5rem; padding: 0.9rem 1rem; - border: 1px solid rgba(15, 23, 42, 0.08); - border-left: 3px solid rgba(107, 114, 128, 0.55); + border: 0; + border-left: 3px solid var(--x2mdx-ref-text-muted); border-radius: 0.7rem; - background: rgba(255, 255, 255, 0.82); + background: var(--x2mdx-ref-neutral-soft); } :root.dark .x2mdx-ref-history-event, [data-theme="dark"] .x2mdx-ref-history-event { - border-color: rgba(255, 255, 255, 0.08); - border-left-color: rgba(156, 163, 175, 0.65); - background: rgba(17, 24, 39, 0.78); + color: var(--x2mdx-ref-text); } .x2mdx-ref-history-event--introduced { - border-left-color: rgba(22, 163, 74, 0.75); + border-left-color: var(--x2mdx-ref-success); + background: var(--x2mdx-ref-success-soft); } .x2mdx-ref-history-event--changed, .x2mdx-ref-history-event--replacement { - border-left-color: rgba(37, 99, 235, 0.75); + border-left-color: var(--x2mdx-ref-info); + background: var(--x2mdx-ref-info-soft); } .x2mdx-ref-history-event--deprecated, .x2mdx-ref-history-event--remove-as-of { - border-left-color: rgba(220, 38, 38, 0.72); + border-left-color: var(--x2mdx-ref-danger); + background: var(--x2mdx-ref-danger-soft); } .x2mdx-ref-history-event-head { @@ -958,6 +1021,7 @@ body:has(.x2mdx-ref-page--operation):not(:has(.x2mdx-ref-page--manual-api)) [ari } .x2mdx-ref-history-event-label { + color: var(--x2mdx-ref-text-strong); font-size: 0.92rem; font-weight: 700; line-height: 1.3; @@ -966,7 +1030,7 @@ body:has(.x2mdx-ref-page--operation):not(:has(.x2mdx-ref-page--manual-api)) [ari .x2mdx-ref-history-event-version { flex: 0 0 auto; background: transparent; - color: rgb(75, 85, 99); + color: var(--x2mdx-ref-text-muted); font-size: 0.82rem; } @@ -977,7 +1041,7 @@ body:has(.x2mdx-ref-page--operation):not(:has(.x2mdx-ref-page--manual-api)) [ari .x2mdx-ref-history-event-detail { margin: 0; - color: rgb(75, 85, 99); + color: var(--x2mdx-ref-text-muted); font-size: 0.92rem; line-height: 1.5; } diff --git a/tests/test_reference_page_history.py b/tests/test_reference_page_history.py index cb27bd4fa..987476263 100644 --- a/tests/test_reference_page_history.py +++ b/tests/test_reference_page_history.py @@ -138,3 +138,33 @@ def test_history_styles_cover_desktop_dark_mode_and_narrow_layouts() -> None: assert ".x2mdx-ref-history-event" in styles assert '[data-theme="dark"] .x2mdx-ref-history-event' in styles assert "@media (max-width: 640px)" in styles + + +def test_shared_reference_colors_match_the_approved_design_tokens() -> None: + styles = (Path(__file__).parents[1] / "docs-main" / "styles.css").read_text( + encoding="utf-8" + ) + + expected_tokens = { + "--x2mdx-ref-canvas: #F6F8FB;", + "--x2mdx-ref-sidebar: #FBFCFD;", + "--x2mdx-ref-surface: #FFFFFF;", + "--x2mdx-ref-text-strong: #11131A;", + "--x2mdx-ref-text: #252937;", + "--x2mdx-ref-text-muted: #6B7280;", + "--x2mdx-ref-accent-soft: #F3EEFF;", + "--x2mdx-ref-info: #1D4ED8;", + "--x2mdx-ref-info-soft: #EDF5FF;", + "--x2mdx-ref-success: #15803D;", + "--x2mdx-ref-success-soft: #ECFBF0;", + "--x2mdx-ref-danger: #B91C1C;", + "--x2mdx-ref-danger-soft: #FFF1F1;", + "--x2mdx-ref-warning-soft: #FFF8E4;", + } + + assert expected_tokens <= {line.strip() for line in styles.splitlines()} + assert "body:has(.x2mdx-ref-page) #background-color" in styles + assert "body:has(.x2mdx-ref-page) #navbar" in styles + assert "background: var(--x2mdx-ref-success-soft);" in styles + assert "background: var(--x2mdx-ref-info-soft);" in styles + assert "background: var(--x2mdx-ref-danger-soft);" in styles From c9957c21227bdcbb50d704ca40c8769de25f1839 Mon Sep 17 00:00:00 2001 From: danielporterda Date: Wed, 26 Aug 2026 16:39:00 -0400 Subject: [PATCH 4/4] Make Splice history follow latest release Signed-off-by: danielporterda --- .../splice-openapi/source-artifacts.json | 1 - config/x2mdx/reference-targets.json | 2 +- .../splice_openapi.py | 82 ++----------------- scripts/update_generated_reference_prs.py | 30 ++++--- tests/test_splice_mintlify_openapi.py | 30 +++++++ tests/test_update_generated_reference_prs.py | 15 ++++ ...test_update_generated_reference_sources.py | 57 ++----------- 7 files changed, 76 insertions(+), 141 deletions(-) diff --git a/config/mintlify-openapi/splice-openapi/source-artifacts.json b/config/mintlify-openapi/splice-openapi/source-artifacts.json index 7c4036990..216e44010 100644 --- a/config/mintlify-openapi/splice-openapi/source-artifacts.json +++ b/config/mintlify-openapi/splice-openapi/source-artifacts.json @@ -3,7 +3,6 @@ "release_repo": "digital-asset/decentralized-canton-sync", "tag_regex": "^v(?P0\\.[0-9]+\\.[0-9]+)$", "min_version": "0.5.10", - "publish_version": "0.7.4", "asset_template": "{version}_openapi.tar.gz", "nav_dropdown": "API Reference", "top_level_group_label": "Splice APIs", diff --git a/config/x2mdx/reference-targets.json b/config/x2mdx/reference-targets.json index 927a5e403..9f64c7eb4 100644 --- a/config/x2mdx/reference-targets.json +++ b/config/x2mdx/reference-targets.json @@ -184,7 +184,7 @@ "item_boundary": "operation", "identity_policy": "openapi.operation_id", "history_mode": "snapshots", - "version_policy": "configured_publish_version", + "version_policy": "latest_selected_release", "source_config": "config/mintlify-openapi/splice-openapi/source-artifacts.json", "reader_output_roots": [ "docs-main/reference/splice-ans-api", diff --git a/scripts/generated_reference_sources/splice_openapi.py b/scripts/generated_reference_sources/splice_openapi.py index 17899a573..e84e5b1cc 100644 --- a/scripts/generated_reference_sources/splice_openapi.py +++ b/scripts/generated_reference_sources/splice_openapi.py @@ -1,93 +1,25 @@ from __future__ import annotations -from dataclasses import dataclass from pathlib import Path -from typing import Required, TypedDict -import generate_splice_mintlify_openapi as splice_openapi_generator - -from generated_reference_sources.common import SourceUpdate, load_json, write_json +from generated_reference_sources.common import SourceUpdate, load_json REPO_ROOT = Path(__file__).resolve().parents[2] SOURCE_KEY = "splice-openapi" -SOURCE_LABEL = "Splice OpenAPI" DEFAULT_SOURCE_CONFIG = ( REPO_ROOT / "config" / "mintlify-openapi" / "splice-openapi" / "source-artifacts.json" ) -class SpliceOpenApiSpecConfig(TypedDict, total=False): - filename: str - nav_label: str - source: str - directory: str - - -class SpliceOpenApiFamilyConfig(TypedDict, total=False): - group: str - specs: list[SpliceOpenApiSpecConfig] - - -class SpliceOpenApiSourceConfigPayload(TypedDict, total=False): - source: str - release_repo: str - tag_regex: str - min_version: str - publish_version: Required[str] - asset_template: str - nav_dropdown: str - top_level_group_label: str - insert_after_group: str - managed_openapi_root: str - enabled_nav_specs: list[str] - legacy_cleanup_paths: list[str] - families: list[SpliceOpenApiFamilyConfig] - - -@dataclass(frozen=True) -class SpliceOpenApiSourceConfig: - raw: SpliceOpenApiSourceConfigPayload - publish_version: str - - -def parse_source_config(path: Path) -> SpliceOpenApiSourceConfig: - raw_json = load_json(path) - publish_version = raw_json.get("publish_version") - if not isinstance(publish_version, str) or not publish_version: - raise ValueError(f"{path} must define non-empty publish_version") - raw: SpliceOpenApiSourceConfigPayload = {} - raw.update(raw_json) - return SpliceOpenApiSourceConfig(raw=raw, publish_version=publish_version) - - -def latest_version(source_config: SpliceOpenApiSourceConfig) -> str: - releases = splice_openapi_generator.selected_releases( - source_config=source_config.raw, - include_versions=None, - ) - return releases[-1]["version"] - - def update_source( *, source_config_path: Path, dry_run: bool, ) -> SourceUpdate | None: - source_config = parse_source_config(source_config_path) - current_version = latest_version(source_config) - if source_config.publish_version == current_version: - return None - - update = SourceUpdate( - source=SOURCE_LABEL, - path=source_config_path, - field="publish_version", - previous=source_config.publish_version, - current=current_version, - ) - if not dry_run: - updated_config = dict(source_config.raw) - updated_config["publish_version"] = current_version - write_json(source_config_path, updated_config) - return update + # Splice is intentionally unpinned: the generator resolves every eligible stable + # release and publishes the latest selection on each run. Keep this compatibility + # entry point as a no-op for callers that still include every source updater. + _ = dry_run + load_json(source_config_path) + return None diff --git a/scripts/update_generated_reference_prs.py b/scripts/update_generated_reference_prs.py index 624f224c2..9544acff2 100644 --- a/scripts/update_generated_reference_prs.py +++ b/scripts/update_generated_reference_prs.py @@ -90,30 +90,36 @@ class UpdateTarget: title="Update Splice OpenAPI reference", branch="generated-references/splice-openapi/update", description=( - "Updates the Splice OpenAPI source pin to the latest stable " - "decentralized-canton-sync release and regenerates the checked-in " - "Splice OpenAPI specifications and navigation." + "Discovers every eligible stable decentralized-canton-sync release, " + "publishes the latest Splice OpenAPI bundle, and regenerates the checked-in " + "specifications, operation pages, history, and navigation." ), generate_commands=( ("nix-shell", "--run", "npm run generate:splice-mintlify-openapi"), ), paths=( - "config/mintlify-openapi/splice-openapi/source-artifacts.json", "docs-main/docs.json", "docs-main/openapi/splice", + "docs-main/reference/splice-allocation-api", + "docs-main/reference/splice-allocation-instruction-api", + "docs-main/reference/splice-allocation-instruction-v2-api", + "docs-main/reference/splice-allocation-v2-api", + "docs-main/reference/splice-ans-api", + "docs-main/reference/splice-scan-api", + "docs-main/reference/splice-scan-proxy-api", + "docs-main/reference/splice-scan-streaming-api", + "docs-main/reference/splice-token-metadata-service", + "docs-main/reference/splice-transfer-instruction-api", + "docs-main/reference/splice-transfer-instruction-v2-api", + "docs-main/reference/splice-wallet-api-external", ), - summary_kind="source-config", - summary_path="config/mintlify-openapi/splice-openapi/source-artifacts.json", - summary_label="Splice OpenAPI", + summary_kind="static", + summary_path=None, + summary_label=None, validation=( - "npm run update:generated-reference-sources -- --source splice-openapi", "npm run generate:splice-mintlify-openapi", "git diff --check", ), - source_update_commands=( - ("nix-shell", "--run", "npm run update:generated-reference-sources -- --source splice-openapi"), - ), - source_update_paths=("config/mintlify-openapi/splice-openapi/source-artifacts.json",), ), UpdateTarget( key="splice-token-standard-v2", diff --git a/tests/test_splice_mintlify_openapi.py b/tests/test_splice_mintlify_openapi.py index e326c6ee8..3316684f4 100644 --- a/tests/test_splice_mintlify_openapi.py +++ b/tests/test_splice_mintlify_openapi.py @@ -43,6 +43,36 @@ def test_splice_openapi_release_requests_use_github_token(monkeypatch) -> None: } +def test_splice_openapi_publish_defaults_to_latest_selected_release() -> None: + module = load_script_module("generate_splice_mintlify_openapi.py") + releases = [ + {"version": "0.5.10"}, + {"version": "0.6.14"}, + {"version": "0.7.4"}, + ] + + assert module.resolve_publish_release( + source_config={}, + releases=releases, + requested_version=None, + ) == {"version": "0.7.4"} + + +def test_splice_openapi_publish_allows_explicit_historical_override() -> None: + module = load_script_module("generate_splice_mintlify_openapi.py") + releases = [ + {"version": "0.5.10"}, + {"version": "0.6.14"}, + {"version": "0.7.4"}, + ] + + assert module.resolve_publish_release( + source_config={}, + releases=releases, + requested_version="0.6.14", + ) == {"version": "0.6.14"} + + def test_splice_openapi_rewrites_scan_server_examples(tmp_path: Path) -> None: module = load_script_module("generate_splice_mintlify_openapi.py") spec_bytes = b"""openapi: 3.0.0 diff --git a/tests/test_update_generated_reference_prs.py b/tests/test_update_generated_reference_prs.py index 00fd96479..32b4e9c64 100644 --- a/tests/test_update_generated_reference_prs.py +++ b/tests/test_update_generated_reference_prs.py @@ -94,6 +94,21 @@ def test_java_ledger_bindings_target_does_not_auto_merge() -> None: assert target.auto_merge is False +def test_splice_openapi_target_regenerates_without_a_source_pin() -> None: + module = load_script_module() + target = next(target for target in module.UPDATE_TARGETS if target.key == "splice-openapi") + + assert target.source_update_commands == () + assert target.source_update_paths == () + assert target.summary_kind == "static" + assert target.summary_path is None + assert target.generate_commands == ( + ("nix-shell", "--run", "npm run generate:splice-mintlify-openapi"), + ) + assert "config/mintlify-openapi/splice-openapi/source-artifacts.json" not in target.paths + assert "docs-main/reference/splice-scan-api" in target.paths + + def test_generated_docs_workflow_uses_merger_app_for_pr_mutations() -> None: workflow = (REPO_ROOT / ".github" / "workflows" / "update-version-dashboard.yml").read_text( encoding="utf-8" diff --git a/tests/test_update_generated_reference_sources.py b/tests/test_update_generated_reference_sources.py index b461579a9..b62baaffd 100644 --- a/tests/test_update_generated_reference_sources.py +++ b/tests/test_update_generated_reference_sources.py @@ -24,7 +24,7 @@ def load_script_module() -> ModuleType: return module -def write_source_config(path: Path, *, publish_version: str) -> None: +def write_source_config(path: Path) -> None: path.write_text( json.dumps( { @@ -32,7 +32,6 @@ def write_source_config(path: Path, *, publish_version: str) -> None: "release_repo": "digital-asset/decentralized-canton-sync", "tag_regex": "^v(?P0\\.[0-9]+\\.[0-9]+)$", "min_version": "0.5.10", - "publish_version": publish_version, "asset_template": "{version}_openapi.tar.gz", }, indent=2, @@ -170,38 +169,10 @@ def write_daml_script_source_config(path: Path, *, publish_version: str) -> None ) -def test_update_splice_openapi_source_updates_stale_publish_version(tmp_path: Path) -> None: - module = load_script_module() - source_config_path = tmp_path / "source-artifacts.json" - write_source_config(source_config_path, publish_version="0.5.18") - module.splice_openapi.splice_openapi_generator.selected_releases = lambda **_kwargs: [ - {"version": "0.5.18"}, - {"version": "0.6.7"}, - ] - - update = module.splice_openapi.update_source( - source_config_path=source_config_path, - dry_run=False, - ) - - assert update == module.SourceUpdate( - source="Splice OpenAPI", - path=source_config_path, - field="publish_version", - previous="0.5.18", - current="0.6.7", - ) - assert json.loads(source_config_path.read_text(encoding="utf-8"))["publish_version"] == "0.6.7" - - -def test_update_splice_openapi_source_noops_when_current(tmp_path: Path) -> None: +def test_update_splice_openapi_source_is_dynamic_and_unpinned(tmp_path: Path) -> None: module = load_script_module() source_config_path = tmp_path / "source-artifacts.json" - write_source_config(source_config_path, publish_version="0.6.7") - module.splice_openapi.splice_openapi_generator.selected_releases = lambda **_kwargs: [ - {"version": "0.5.18"}, - {"version": "0.6.7"}, - ] + write_source_config(source_config_path) assert ( module.splice_openapi.update_source( @@ -210,28 +181,10 @@ def test_update_splice_openapi_source_noops_when_current(tmp_path: Path) -> None ) is None ) - assert json.loads(source_config_path.read_text(encoding="utf-8"))["publish_version"] == "0.6.7" - - -def test_update_splice_openapi_source_dry_run_does_not_write(tmp_path: Path) -> None: - module = load_script_module() - source_config_path = tmp_path / "source-artifacts.json" - write_source_config(source_config_path, publish_version="0.5.18") - module.splice_openapi.splice_openapi_generator.selected_releases = lambda **_kwargs: [ - {"version": "0.5.18"}, - {"version": "0.6.7"}, - ] - - update = module.splice_openapi.update_source( - source_config_path=source_config_path, - dry_run=True, + assert "publish_version" not in json.loads( + source_config_path.read_text(encoding="utf-8") ) - assert update is not None - assert update.previous == "0.5.18" - assert update.current == "0.6.7" - assert json.loads(source_config_path.read_text(encoding="utf-8"))["publish_version"] == "0.5.18" - def test_update_wallet_gateway_openrpc_source_updates_stale_publish_version(tmp_path: Path) -> None: module = load_script_module()