Skip to content
CCPEDIAby Unity Nodes
Documentation/Canton Network Docs/Ledger APIOpenAPIView on Canton Network Docs

GET /v2/package-vetting

GET
/
v2
/
package-vetting
Try it
cURL
Python
JavaScript
PHP
Go
Java
Ruby
curl --request GET \
  --url 'http://localhost:7575/v2/package-vetting' \
  --header 'Authorization: Bearer $TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
  "packageMetadataFilter": {
    "packageIds": [
      "<string>"
    ],
    "packageNamePrefixes": [
      "<string>"
    ]
  },
  "topologyStateFilter": {
    "participantIds": [
      "<string>"
    ],
    "synchronizerIds": [
      "<string>"
    ]
  },
  "pageToken": "<string>",
  "pageSize": 123
}'
import json
import requests

url = "http://localhost:7575/v2/package-vetting"
headers = {'Authorization': 'Bearer <token>', 'Content-Type': 'application/json'}
payload = json.loads(r'''{
  "packageMetadataFilter": {
    "packageIds": [
      "<string>"
    ],
    "packageNamePrefixes": [
      "<string>"
    ]
  },
  "topologyStateFilter": {
    "participantIds": [
      "<string>"
    ],
    "synchronizerIds": [
      "<string>"
    ]
  },
  "pageToken": "<string>",
  "pageSize": 123
}''')
response = requests.request(
    "GET", url, headers=headers, json=payload
)

print(response.text)
const response = await fetch('http://localhost:7575/v2/package-vetting', {
  method: 'GET',
  headers: {
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
},
  body: JSON.stringify({
  "packageMetadataFilter": {
    "packageIds": [
      "<string>"
    ],
    "packageNamePrefixes": [
      "<string>"
    ]
  },
  "topologyStateFilter": {
    "participantIds": [
      "<string>"
    ],
    "synchronizerIds": [
      "<string>"
    ]
  },
  "pageToken": "<string>",
  "pageSize": 123
}),
});

console.log(await response.text());
<?php
$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => 'http://localhost:7575/v2/package-vetting',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_POSTFIELDS => <<<'JSON'
{
  "packageMetadataFilter": {
    "packageIds": [
      "<string>"
    ],
    "packageNamePrefixes": [
      "<string>"
    ]
  },
  "topologyStateFilter": {
    "participantIds": [
      "<string>"
    ],
    "synchronizerIds": [
      "<string>"
    ]
  },
  "pageToken": "<string>",
  "pageSize": 123
}
JSON,
    CURLOPT_HTTPHEADER => [
        "Authorization: Bearer <token>",
        "Content-Type: application/json"
    ],
]);

$response = curl_exec($curl);
echo $response;
package main

import (
  "bytes"
  "fmt"
  "io"
  "net/http"
)

func main() {
  req, _ := http.NewRequest("GET", "http://localhost:7575/v2/package-vetting", bytes.NewBufferString(`{
  "packageMetadataFilter": {
    "packageIds": [
      "<string>"
    ],
    "packageNamePrefixes": [
      "<string>"
    ]
  },
  "topologyStateFilter": {
    "participantIds": [
      "<string>"
    ],
    "synchronizerIds": [
      "<string>"
    ]
  },
  "pageToken": "<string>",
  "pageSize": 123
}`))
  req.Header.Set("Authorization", "Bearer <token>")
  req.Header.Set("Content-Type", "application/json")
  response, _ := http.DefaultClient.Do(req)
  defer response.Body.Close()
  body, _ := io.ReadAll(response.Body)
  fmt.Println(string(body))
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

var request = HttpRequest.newBuilder()
    .uri(URI.create("http://localhost:7575/v2/package-vetting"))
    .header("Authorization", "Bearer <token>")
    .header("Content-Type", "application/json")
    .method("GET", HttpRequest.BodyPublishers.ofString("""
{
  "packageMetadataFilter": {
    "packageIds": [
      "<string>"
    ],
    "packageNamePrefixes": [
      "<string>"
    ]
  },
  "topologyStateFilter": {
    "participantIds": [
      "<string>"
    ],
    "synchronizerIds": [
      "<string>"
    ]
  },
  "pageToken": "<string>",
  "pageSize": 123
}
"""))
    .build();
var response = HttpClient.newHttpClient().send(
    request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
require 'net/http'
require 'uri'

uri = URI('http://localhost:7575/v2/package-vetting')
request = Net::HTTP::Get.new(uri)
request['Authorization'] = 'Bearer <token>'
request['Content-Type'] = 'application/json'
request.body = <<~JSON
{
  "packageMetadataFilter": {
    "packageIds": [
      "<string>"
    ],
    "packageNamePrefixes": [
      "<string>"
    ]
  },
  "topologyStateFilter": {
    "participantIds": [
      "<string>"
    ],
    "synchronizerIds": [
      "<string>"
    ]
  },
  "pageToken": "<string>",
  "pageSize": 123
}
JSON
response = Net::HTTP.start(uri.hostname, uri.port) do |http|
  http.request(request)
end
puts response.body
200
400
default
{
  "vettedPackages": [
    {
      "packages": [
        {
          "packageId": "<string>",
          "validFromInclusive": "<string>",
          "validUntilExclusive": "<string>",
          "packageName": "<string>",
          "packageVersion": "<string>"
        }
      ],
      "participantId": "<string>",
      "synchronizerId": "<string>",
      "topologySerial": 123
    }
  ],
  "nextPageToken": "<string>"
}
<string>
{
  "code": "<string>",
  "cause": "<string>",
  "correlationId": "<string>",
  "traceId": "<string>",
  "context": {},
  "resources": [
    [
      "<string>"
    ]
  ],
  "errorCategory": 123,
  "grpcCodeValue": 123,
  "retryInfo": "<string>",
  "definiteAnswer": false
}

Lists which participant node vetted what packages on which synchronizer. This endpoint (GET /package-vetting) is deprecated and will be removed in a future release. Please use POST /package-vetting/list instead.

cURL
Python
JavaScript
PHP
Go
Java
Ruby
curl --request GET \
  --url 'http://localhost:7575/v2/package-vetting' \
  --header 'Authorization: Bearer $TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
  "packageMetadataFilter": {
    "packageIds": [
      "<string>"
    ],
    "packageNamePrefixes": [
      "<string>"
    ]
  },
  "topologyStateFilter": {
    "participantIds": [
      "<string>"
    ],
    "synchronizerIds": [
      "<string>"
    ]
  },
  "pageToken": "<string>",
  "pageSize": 123
}'
import json
import requests

url = "http://localhost:7575/v2/package-vetting"
headers = {'Authorization': 'Bearer <token>', 'Content-Type': 'application/json'}
payload = json.loads(r'''{
  "packageMetadataFilter": {
    "packageIds": [
      "<string>"
    ],
    "packageNamePrefixes": [
      "<string>"
    ]
  },
  "topologyStateFilter": {
    "participantIds": [
      "<string>"
    ],
    "synchronizerIds": [
      "<string>"
    ]
  },
  "pageToken": "<string>",
  "pageSize": 123
}''')
response = requests.request(
    "GET", url, headers=headers, json=payload
)

print(response.text)
const response = await fetch('http://localhost:7575/v2/package-vetting', {
  method: 'GET',
  headers: {
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
},
  body: JSON.stringify({
  "packageMetadataFilter": {
    "packageIds": [
      "<string>"
    ],
    "packageNamePrefixes": [
      "<string>"
    ]
  },
  "topologyStateFilter": {
    "participantIds": [
      "<string>"
    ],
    "synchronizerIds": [
      "<string>"
    ]
  },
  "pageToken": "<string>",
  "pageSize": 123
}),
});

console.log(await response.text());
<?php
$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => 'http://localhost:7575/v2/package-vetting',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_POSTFIELDS => <<<'JSON'
{
  "packageMetadataFilter": {
    "packageIds": [
      "<string>"
    ],
    "packageNamePrefixes": [
      "<string>"
    ]
  },
  "topologyStateFilter": {
    "participantIds": [
      "<string>"
    ],
    "synchronizerIds": [
      "<string>"
    ]
  },
  "pageToken": "<string>",
  "pageSize": 123
}
JSON,
    CURLOPT_HTTPHEADER => [
        "Authorization: Bearer <token>",
        "Content-Type: application/json"
    ],
]);

$response = curl_exec($curl);
echo $response;
package main

import (
  "bytes"
  "fmt"
  "io"
  "net/http"
)

func main() {
  req, _ := http.NewRequest("GET", "http://localhost:7575/v2/package-vetting", bytes.NewBufferString(`{
  "packageMetadataFilter": {
    "packageIds": [
      "<string>"
    ],
    "packageNamePrefixes": [
      "<string>"
    ]
  },
  "topologyStateFilter": {
    "participantIds": [
      "<string>"
    ],
    "synchronizerIds": [
      "<string>"
    ]
  },
  "pageToken": "<string>",
  "pageSize": 123
}`))
  req.Header.Set("Authorization", "Bearer <token>")
  req.Header.Set("Content-Type", "application/json")
  response, _ := http.DefaultClient.Do(req)
  defer response.Body.Close()
  body, _ := io.ReadAll(response.Body)
  fmt.Println(string(body))
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

var request = HttpRequest.newBuilder()
    .uri(URI.create("http://localhost:7575/v2/package-vetting"))
    .header("Authorization", "Bearer <token>")
    .header("Content-Type", "application/json")
    .method("GET", HttpRequest.BodyPublishers.ofString("""
{
  "packageMetadataFilter": {
    "packageIds": [
      "<string>"
    ],
    "packageNamePrefixes": [
      "<string>"
    ]
  },
  "topologyStateFilter": {
    "participantIds": [
      "<string>"
    ],
    "synchronizerIds": [
      "<string>"
    ]
  },
  "pageToken": "<string>",
  "pageSize": 123
}
"""))
    .build();
var response = HttpClient.newHttpClient().send(
    request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
require 'net/http'
require 'uri'

uri = URI('http://localhost:7575/v2/package-vetting')
request = Net::HTTP::Get.new(uri)
request['Authorization'] = 'Bearer <token>'
request['Content-Type'] = 'application/json'
request.body = <<~JSON
{
  "packageMetadataFilter": {
    "packageIds": [
      "<string>"
    ],
    "packageNamePrefixes": [
      "<string>"
    ]
  },
  "topologyStateFilter": {
    "participantIds": [
      "<string>"
    ],
    "synchronizerIds": [
      "<string>"
    ]
  },
  "pageToken": "<string>",
  "pageSize": 123
}
JSON
response = Net::HTTP.start(uri.hostname, uri.port) do |http|
  http.request(request)
end
puts response.body
200
400
default
{
  "vettedPackages": [
    {
      "packages": [
        {
          "packageId": "<string>",
          "validFromInclusive": "<string>",
          "validUntilExclusive": "<string>",
          "packageName": "<string>",
          "packageVersion": "<string>"
        }
      ],
      "participantId": "<string>",
      "synchronizerId": "<string>",
      "topologySerial": 123
    }
  ],
  "nextPageToken": "<string>"
}
<string>
{
  "code": "<string>",
  "cause": "<string>",
  "correlationId": "<string>",
  "traceId": "<string>",
  "context": {},
  "resources": [
    [
      "<string>"
    ]
  ],
  "errorCategory": 123,
  "grpcCodeValue": 123,
  "retryInfo": "<string>",
  "definiteAnswer": false
}

Authorizations

httpAuth

Authorization
string
required
HTTP bearer authentication. Send the token as Authorization: Bearer &lt;token&gt;. Ledger API standard JWT token

apiKeyAuth

Sec-WebSocket-Protocol
string
required
API key authentication in the header. Ledger API standard JWT token (websocket)

Body

application/json
packageMetadataFilter
object
OpenAPI type: PackageMetadataFilter.Filter the VettedPackages by package metadata. A PackageMetadataFilter without package_ids and without package_name_prefixes matches any vetted package. Non-empty fields specify candidate values of which at least one must match. If both fields are set, then a candidate is returned if it matches one of the fields.

Show child attributes

packageIds
string[]
If this list is non-empty, any vetted package with a package ID in this list will match the filter. Optional: can be empty
packageNamePrefixes
string[]
If this list is non-empty, any vetted package with a name matching at least one prefix in this list will match the filter. Optional: can be empty
topologyStateFilter
object
OpenAPI type: TopologyStateFilter.Filter the vetted packages by the participant and synchronizer that they are hosted on. Empty fields are ignored, such that a TopologyStateFilter without participant_ids and without synchronizer_ids matches a vetted package hosted on any participant and synchronizer. Non-empty fields specify candidate values of which at least one must match. If both fields are set then at least one candidate value must match from each field.

Show child attributes

participantIds
string[]
If this list is non-empty, only vetted packages hosted on participants listed in this field match the filter. Query the current Ledger API’s participant’s ID via the public GetParticipantId command in PartyManagementService. Optional: can be empty
synchronizerIds
string[]
If this list is non-empty, only vetted packages from the topology state of the synchronizers in this list match the filter. Optional: can be empty
pageToken
string
Pagination token to determine the specific page to fetch. Using the token guarantees that VettedPackages on a subsequent page are all greater (VettedPackages are sorted by synchronizer ID then participant ID) than the last VettedPackages on a previous page. The server does not store intermediate results between calls chained by a series of page tokens. As a consequence, if new vetted packages are being added and a page is requested twice using the same token, more packages can be returned on the second call. Leave unspecified (i.e. as empty string) to fetch the first page. Optional
pageSize
number
OpenAPI type: integer (int32).Maximum number of VettedPackages results to return in a single page. If the page_size is unspecified (i.e. left as 0), the server will decide the number of results to be returned. If the page_size exceeds the maximum supported by the server, an error will be returned. To obtain the server’s maximum consult the PackageService descriptor available in the VersionService. Optional

Responses

200

application/json
vettedPackages
VettedPackages[]
All VettedPackages that contain at least one VettedPackage matching both a PackageMetadataFilter and a TopologyStateFilter. Sorted by synchronizer_id then participant_id. Optional: can be empty

Show child attributes

packages
VettedPackage[]
required
Sorted by package_name and package_version where known, and package_id as a last resort. Required: must be non-empty

Show child attributes

packageId
string
required
Package ID of this package Required
validFromInclusive
string
The time from which this package is vetted. Empty if vetting time has no lower bound. Optional
validUntilExclusive
string
The time until which this package is vetted. Empty if vetting time has no upper bound. Optional
packageName
string
Name of this package. Only available if the package has been uploaded to the current participant. Optional
packageVersion
string
Version of this package. Only available if the package has been uploaded to the current participant. Optional
participantId
string
required
Participant on which these packages are vetted. Required
synchronizerId
string
required
Synchronizer on which these packages are vetted. Required
topologySerial
integer (int32)
required
Serial of last VettedPackages topology transaction of this participant and on this synchronizer. Required
nextPageToken
string
Pagination token to retrieve the next page. Empty string if there are no further results. Optional

400

Invalid value, Invalid value for: body
text/plain
value
string
required

default

application/json
code
string
required
cause
string
required
correlationId
string
traceId
string
context
Map_String
required
resources
Tuple2_String_String[]
errorCategory
integer (int32)
required
grpcCodeValue
integer (int32)
retryInfo
string
definiteAnswer
boolean

History

Updated3.5

The GET /v2/package-vetting operation changed in this snapshot.

Deprecated3.4