curl --request POST \
--url https://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/rpc/screen_dormant_funds \
--header 'Content-Type: application/json' \
--header 'apikey: <api-key>' \
--data '
{
"p_lookback_months": 3,
"p_dormancy": null,
"p_min_nav": null
}
'import requests
url = "https://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/rpc/screen_dormant_funds"
payload = {
"p_lookback_months": 3,
"p_dormancy": None,
"p_min_nav": None
}
headers = {
"apikey": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {apikey: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({p_lookback_months: 3, p_dormancy: null, p_min_nav: null})
};
fetch('https://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/rpc/screen_dormant_funds', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/rpc/screen_dormant_funds",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'p_lookback_months' => 3,
'p_dormancy' => null,
'p_min_nav' => null
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"apikey: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/rpc/screen_dormant_funds"
payload := strings.NewReader("{\n \"p_lookback_months\": 3,\n \"p_dormancy\": null,\n \"p_min_nav\": null\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("apikey", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/rpc/screen_dormant_funds")
.header("apikey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"p_lookback_months\": 3,\n \"p_dormancy\": null,\n \"p_min_nav\": null\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/rpc/screen_dormant_funds")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["apikey"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"p_lookback_months\": 3,\n \"p_dormancy\": null,\n \"p_min_nav\": null\n}"
response = http.request(request)
puts response.read_body[
{
"cnpj": "<string>",
"fund_name": "<string>",
"administrator": "<string>",
"window_from": "2023-12-25",
"window_to": "2023-12-25",
"months_observed": 123,
"max_quotaholders": 123,
"last_nav": 123,
"dormancy": "<string>",
"screen": "<string>",
"params": {}
}
]{
"code": "22023",
"message": "<string>",
"details": "<string>",
"hint": "<string>"
}{
"code": "22023",
"message": "<string>",
"details": "<string>",
"hint": "<string>"
}{
"code": "22023",
"message": "<string>",
"details": "<string>",
"hint": "<string>"
}screen_dormant_funds
SIGNAL, NOT A VERDICT. FI classes that filed EVERY month of the last p_lookback_months complete months (anchored on latest_complete_period(‘fi’), never today) with zero subscriptions and zero redemptions. dormancy: empty_shell = no quotaholder at all in the window (a registered, filing vehicle holding nobody’s money); parked_capital = quotaholders present but no money in or out — exclusive and closed structures look exactly like this. A month with unreported flows or quotaholders disqualifies the fund rather than counting as zero. FI only: the other families file no monthly flows. Default is the /dormant page’s (3 months). p_dormancy and p_min_nav narrow the output only and are echoed in params. More than 1000 rows RAISES 22023 (never trimmed) — parked_capital alone exceeds a page: pin p_dormancy and walk p_min_nav bands.
Row cap. A window producing more than 1000 rows raises SQLSTATE 22023 naming this function. Nothing is trimmed to fit — PostgREST would silently cut the response at 1000 and a cut-short series is indistinguishable from one that simply ends. This function does not page — narrow the window instead.
curl --request POST \
--url https://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/rpc/screen_dormant_funds \
--header 'Content-Type: application/json' \
--header 'apikey: <api-key>' \
--data '
{
"p_lookback_months": 3,
"p_dormancy": null,
"p_min_nav": null
}
'import requests
url = "https://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/rpc/screen_dormant_funds"
payload = {
"p_lookback_months": 3,
"p_dormancy": None,
"p_min_nav": None
}
headers = {
"apikey": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {apikey: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({p_lookback_months: 3, p_dormancy: null, p_min_nav: null})
};
fetch('https://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/rpc/screen_dormant_funds', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/rpc/screen_dormant_funds",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'p_lookback_months' => 3,
'p_dormancy' => null,
'p_min_nav' => null
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"apikey: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/rpc/screen_dormant_funds"
payload := strings.NewReader("{\n \"p_lookback_months\": 3,\n \"p_dormancy\": null,\n \"p_min_nav\": null\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("apikey", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/rpc/screen_dormant_funds")
.header("apikey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"p_lookback_months\": 3,\n \"p_dormancy\": null,\n \"p_min_nav\": null\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://zcjbtpxuhdekpwcxmepn.supabase.co/rest/v1/rpc/screen_dormant_funds")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["apikey"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"p_lookback_months\": 3,\n \"p_dormancy\": null,\n \"p_min_nav\": null\n}"
response = http.request(request)
puts response.read_body[
{
"cnpj": "<string>",
"fund_name": "<string>",
"administrator": "<string>",
"window_from": "2023-12-25",
"window_to": "2023-12-25",
"months_observed": 123,
"max_quotaholders": 123,
"last_nav": 123,
"dormancy": "<string>",
"screen": "<string>",
"params": {}
}
]{
"code": "22023",
"message": "<string>",
"details": "<string>",
"hint": "<string>"
}{
"code": "22023",
"message": "<string>",
"details": "<string>",
"hint": "<string>"
}{
"code": "22023",
"message": "<string>",
"details": "<string>",
"hint": "<string>"
}Authorizations
The publishable key (sb_publishable_…), on every request. It is NOT a JWT — sending it as Authorization: Bearer is rejected as an invalid JWT. It identifies the project, not you, and maps to the Postgres anon role.
Body
Response
The result set, oldest first. An unknown id is an empty array, not a 404 and never a guessed value.
Was this page helpful?