curl --request GET 'https://gyra-core.gyramais.com.br/v1/collection-templates' \
--header 'Authorization: Bearer <token>'
const resposta = await fetch("https://gyra-core.gyramais.com.br/v1/collection-templates", {
method: "GET",
headers: { Authorization: `Bearer ${token}` },
});
const dados = await resposta.json();
import requests
resposta = requests.get(
"https://gyra-core.gyramais.com.br/v1/collection-templates",
headers={"Authorization": f"Bearer {token}"},
)
dados = resposta.json()
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gyra-core.gyramais.com.br/v1/collection-templates",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://gyra-core.gyramais.com.br/v1/collection-templates"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://gyra-core.gyramais.com.br/v1/collection-templates")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://gyra-core.gyramais.com.br/v1/collection-templates")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"items": [
{
"id": "6612a7f30000000000000041",
"scope": "ORGANIZATION",
"name": "Onboarding PJ",
"slug": "onboarding-pj",
"description": "Documentos mínimos para abrir limite de PJ.",
"items": [
{
"key": "constitutivo",
"kind": "DOCUMENT",
"requirement": "CONSTITUTIVO_VIGENTE",
"label": "Documento constitutivo vigente",
"required": true
},
{
"key": "identidade",
"kind": "IDENTITY",
"label": "Verificação de identidade",
"required": true
}
],
"dueInDays": 10,
"reminders": [
2,
5,
8
],
"channel": "BOTH",
"responseMode": "REVIEW",
"behavior": {
"acceptPartial": false,
"skipItemsAlreadyOnFile": true
},
"onCompleted": {
"kind": "NONE",
"id": null,
"byEntityType": {
"COMPANY": {
"kind": "POLICY",
"id": "6612a7f300000000000000c1"
}
}
},
"version": 3,
"isCurrent": true,
"enabled": true,
"metrics": {
"collections": 42,
"completedCollections": 33,
"completionRate": 0.7857,
"averageCompletionHours": 31.5
},
"createdAt": "2026-07-02T09:00:00.000Z",
"updatedAt": "2026-08-28T17:41:00.000Z"
}
],
"total": 1
}{
"code": 400,
"message": "scope must be one of the following values: ORGANIZATION, SYSTEM"
}{
"code": 401,
"message": "Token de acesso inválido."
}{
"code": 403,
"message": "Você não tem permissão para acessar este recurso."
}{
"code": 404,
"message": "Recurso não encontrado."
}{
"code": 500,
"message": "Internal server error"
}Listar Modelos de Coleta
Sempre antes de criar uma solicitação: o slug daqui é o que entra em template.
curl --request GET 'https://gyra-core.gyramais.com.br/v1/collection-templates' \
--header 'Authorization: Bearer <token>'
const resposta = await fetch("https://gyra-core.gyramais.com.br/v1/collection-templates", {
method: "GET",
headers: { Authorization: `Bearer ${token}` },
});
const dados = await resposta.json();
import requests
resposta = requests.get(
"https://gyra-core.gyramais.com.br/v1/collection-templates",
headers={"Authorization": f"Bearer {token}"},
)
dados = resposta.json()
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gyra-core.gyramais.com.br/v1/collection-templates",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://gyra-core.gyramais.com.br/v1/collection-templates"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://gyra-core.gyramais.com.br/v1/collection-templates")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://gyra-core.gyramais.com.br/v1/collection-templates")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"items": [
{
"id": "6612a7f30000000000000041",
"scope": "ORGANIZATION",
"name": "Onboarding PJ",
"slug": "onboarding-pj",
"description": "Documentos mínimos para abrir limite de PJ.",
"items": [
{
"key": "constitutivo",
"kind": "DOCUMENT",
"requirement": "CONSTITUTIVO_VIGENTE",
"label": "Documento constitutivo vigente",
"required": true
},
{
"key": "identidade",
"kind": "IDENTITY",
"label": "Verificação de identidade",
"required": true
}
],
"dueInDays": 10,
"reminders": [
2,
5,
8
],
"channel": "BOTH",
"responseMode": "REVIEW",
"behavior": {
"acceptPartial": false,
"skipItemsAlreadyOnFile": true
},
"onCompleted": {
"kind": "NONE",
"id": null,
"byEntityType": {
"COMPANY": {
"kind": "POLICY",
"id": "6612a7f300000000000000c1"
}
}
},
"version": 3,
"isCurrent": true,
"enabled": true,
"metrics": {
"collections": 42,
"completedCollections": 33,
"completionRate": 0.7857,
"averageCompletionHours": 31.5
},
"createdAt": "2026-07-02T09:00:00.000Z",
"updatedAt": "2026-08-28T17:41:00.000Z"
}
],
"total": 1
}{
"code": 400,
"message": "scope must be one of the following values: ORGANIZATION, SYSTEM"
}{
"code": 401,
"message": "Token de acesso inválido."
}{
"code": 403,
"message": "Você não tem permissão para acessar este recurso."
}{
"code": 404,
"message": "Recurso não encontrado."
}{
"code": 500,
"message": "Internal server error"
}Quando usar
Sempre antes de criar uma solicitação: oslug daqui é o que entra em template.
slug, não o id. Ele é o endereço estável entre versões: publicar uma versão nova do modelo não quebra a sua integração.enabled=true: modelo desligado continua na listagem sem o filtro. scope separa os modelos da sua organização (ORGANIZATION) dos modelos GYRA+ (SYSTEM). Para ligar ou desligar um modelo, veja a Visão geral da API.
Os modelos são montados no toolbox. Ver Solicitações de coleta.
Authorizations
Enter JWT token
Query Parameters
Casa por nome ou pela chave, sem acento e sem caixa.
120ORGANIZATION (modelos da sua organizacao) ou SYSTEM (modelos GYRA+). Sem o parametro, os dois.
ORGANIZATION, SYSTEM true devolve so os modelos ligados. Sem o parametro (ou com false), ligados e desligados.
So modelos que pedem itens destes tipos (DOCUMENT, FORM, SIGNATURE, CONSENT, IDENTITY, CUSTOM). Repita para varios.
x <= 100Response
Modelos com slug, nome, descricao, itens e uso.
Hide child attributes
Hide child attributes
SYSTEM e modelo da GYRA+: a organizacao usa e duplica, mas nao edita.
SYSTEM, ORGANIZATION, null O ENDERECO ESTAVEL. E ele que entra em template ao criar solicitacao.
WHATSAPP, EMAIL, BOTH, NONE AUTOMATIC, REVIEW Comportamento do modelo.
false quando o modelo foi desligado para escolha. Num modelo GYRA+, vale so para a sua organizacao.
O que o modelo faz ao concluir. kind NONE, POLICY ou OPERATION; id e a politica ou a esteira. byEntityType, quando existe, traz um destino por tipo de cadastro (COMPANY e PERSON), cada um com kind e id.
Hide child attributes
Hide child attributes
NONE, POLICY, OPERATION Endereco do formulario publico, quando o modelo tem um.
Uso do modelo na sua organizacao.

