curl --request GET \
--url https://api.identity.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/custom-fieldsimport requests
url = "https://api.identity.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/custom-fields"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.identity.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/custom-fields', 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://api.identity.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/custom-fields",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.identity.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/custom-fields"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.identity.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/custom-fields")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.identity.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/custom-fields")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"items": [
{
"id": "9c4f0a2e-7b3d-4e8a-a1f5-2d6c8b0e4a71",
"status": "ACTIVE",
"realm": "6f1d2c3b-4a5e-4f60-9b7c-8d9e0f1a2b3c",
"organization": "0b8e7d6c-5a4f-4e3d-9c2b-1a0f9e8d7c6b",
"label": "Centro de custo",
"slug": "centro-de-custo",
"type": "SELECT",
"values": [
{
"value": "marketing",
"label": "Marketing",
"description": "Campanhas e eventos",
"status": "ACTIVE",
"_id": "68d3f1a2c4b5e6f7a8b9c0d1"
}
],
"location": [
"TRANSACTION"
],
"mask": "BRL",
"required": true,
"description": "Centro de custo responsável pela despesa",
"createdBy": "3e2d1c0b-9a8f-4e7d-8c6b-5a4f3e2d1c0b",
"updatedBy": "3e2d1c0b-9a8f-4e7d-8c6b-5a4f3e2d1c0b",
"createdAt": "2026-09-02T14:21:05.318Z",
"updatedAt": "2026-09-18T09:07:44.902Z"
}
],
"next": "NjhkM2YxYTJjNGI1ZTZmN2E4YjljMGQx"
}{
"traceId": "1-68ee2a1b-3c4d5e6f7a8b9c0d1e2f3a4b",
"code": "BAD_REQUEST",
"origin": "IDENTITY",
"message": "Bad Request: Your request is invalid or incomplete. Please make sure you are requesting with the right fields.",
"fields": [
{
"field": "ids",
"message": "Too big: expected array to have <=500 items",
"code": "IDS_MAX"
}
]
}List custom fields
Lists the organization’s custom-field definitions, newest first.
curl --request GET \
--url https://api.identity.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/custom-fieldsimport requests
url = "https://api.identity.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/custom-fields"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.identity.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/custom-fields', 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://api.identity.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/custom-fields",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.identity.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/custom-fields"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.identity.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/custom-fields")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.identity.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/custom-fields")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"items": [
{
"id": "9c4f0a2e-7b3d-4e8a-a1f5-2d6c8b0e4a71",
"status": "ACTIVE",
"realm": "6f1d2c3b-4a5e-4f60-9b7c-8d9e0f1a2b3c",
"organization": "0b8e7d6c-5a4f-4e3d-9c2b-1a0f9e8d7c6b",
"label": "Centro de custo",
"slug": "centro-de-custo",
"type": "SELECT",
"values": [
{
"value": "marketing",
"label": "Marketing",
"description": "Campanhas e eventos",
"status": "ACTIVE",
"_id": "68d3f1a2c4b5e6f7a8b9c0d1"
}
],
"location": [
"TRANSACTION"
],
"mask": "BRL",
"required": true,
"description": "Centro de custo responsável pela despesa",
"createdBy": "3e2d1c0b-9a8f-4e7d-8c6b-5a4f3e2d1c0b",
"updatedBy": "3e2d1c0b-9a8f-4e7d-8c6b-5a4f3e2d1c0b",
"createdAt": "2026-09-02T14:21:05.318Z",
"updatedAt": "2026-09-18T09:07:44.902Z"
}
],
"next": "NjhkM2YxYTJjNGI1ZTZmN2E4YjljMGQx"
}{
"traceId": "1-68ee2a1b-3c4d5e6f7a8b9c0d1e2f3a4b",
"code": "BAD_REQUEST",
"origin": "IDENTITY",
"message": "Bad Request: Your request is invalid or incomplete. Please make sure you are requesting with the right fields.",
"fields": [
{
"field": "ids",
"message": "Too big: expected array to have <=500 items",
"code": "IDS_MAX"
}
]
}status, type, location, slugs, ids, required or a case-insensitive label match. Deactivated definitions are included unless you filter on status. A list filter takes its values comma-separated (?type=SELECT,TEXT); repeating the parameter (?type=SELECT&type=TEXT) works too.Path Parameters
ID of your realm.
Format: UUID
ID of your organization.
Format: UUID
Query Parameters
Only the fields with these IDs.
Example (comma-separated list): ?ids=9c4f0a2e-7b3d-4e8a-a1f5-2d6c8b0e4a71,29bfc458-6d62-4e37-9a89-dc620926bae5
500Only the fields with these slugs (exact match).
Example (comma-separated list): ?slugs=centro-de-custo,projeto
500Only fields in this status. Omit to list active and deactivated fields alike.
ACTIVE, DEACTIVATED Only fields of these value types.
Example (comma-separated list): ?type=SELECT,TEXT
TEXT, NUMBER, DATE, BOOLEAN, SELECT, MULTI_SELECT, CUSTOMER, FILE, MULTI_FILE Only fields attached to at least one of these entities.
Example (comma-separated list): ?location=TRANSACTION,CARD
TRANSACTION, CARD, WALLET, CUSTOMER, TRIP, TRAVEL_PASSENGER, USER, VEHICLE Only fields whose label contains this text (case-insensitive).
200Only required (true) or optional (false) fields.
Page size, 1–100. Defaults to 15.
1 <= x <= 100Cursor returned as next by the previous page. Omit for the first page.
Sort direction (case-insensitive). Applied only together with orderBy.
ASC, DESC Field to sort by, applied only together with order. Omitted: newest first. Prefer slug (unique) over label for an alphabetical order: pages may repeat rows when several fields share the same label.
createdAt, updatedAt, label, slug Response
Successful response
One page of custom-field definitions.