Aprovação de Cotas ✅
Este grupo de endpoints foi desenvolvido para permitir que nossos clientes – administradores de fundos – realizem a aprovação das cotas liberadas pelo time de controladoria da área de serviços qualificados, após a
disponibilização das informações diárias.
A aprovação das cotas deve ser realizada em ordem cronológica, desde o início das atividades do fundo, considerando o início da prestação de nossos serviços. Caso uma cota não seja aprovada, deverá ser solicitada a sua revisão
por meio de um reprocessamento, o qual pode ser efetuado por outro grupo de endpoints, também disponível em nossa documentação no Swagger.
Aprovar uma cota:
Este endpoint é responsável pelo registro dos dados de aprovação de cotas. Em outras palavras, é por meio dele que você, na qualidade de administrador de fundos, fornecerá o ‘aceite’, confirmando que o portfólio de investimentos processado por nosso time foi validado
e está devidamente aprovado.
https://www.otdx-api.com.br/nav/approval
payload = {
"codigoCarteira": "11111",
"dataTargetAprovacao": "2025-01-16",
"tipoCota": "F",
"valorCotaAprovada": "168.66093150",
"plAprovado": "607179353.40",
"quantidadeAprovada": "3600000.00000000",
}
Description:
codigoCarteira: 'Código de referência da carteira em nossos sistemas internos',
dataTargetAprovacao: 'Data de referência para a aprovação',
tipoCota: 'Classificação do tipo de cota da carteira de investimentos',
valorCotaAprovada: 'Valor líquido da cota aprovada',
plAprovado: 'Valor do patrimônio líquido aprovado',
quantidadeAprovada: 'Número total de cotas aprovadas',
É importante ressaltar que cada tipo de fundo possui diferentes obrigações legais. No caso dos fundos líquidos, é necessário o envio do informe diário e, possivelmente, a submissão das informações nos sistemas Galgos. Ambos os envios estão sujeitos a janelas de
horário definidas pelos órgãos reguladores. Caso o administrador não realize a aprovação das cotas disponíveis até 60 minutos antes do prazo estipulado pelos reguladores, a aprovação tácita das informações disponibilizadas será realizada automaticamente.
Code Sample 💻
A seguir, apresentamos exemplos de uso deste endpoint em diferentes linguagens de programação. Clique no botão correspondente para visualizar cada um deles.
Python
Java
PHP
C#
Node.js
import requests
# API Endpoint and Credentials
api_url = 'https://www.otdx-api.com.br/nav/approval'
username = 'your_username'
password = 'your_password'
# Authenticate and obtain token
auth_url = 'https://www.otdx-api.com.br/api-token-auth/'
response = requests.post(auth_url, data={'username': username, 'password': password})
token = response.json().get('token')
# Define request payload
data = {
"codigoCarteira": "43421",
"dataTargetAprovacao": "2025-01-16",
"tipoCota": "F",
"valorCotaAprovada": "168.66093150",
"plAprovado": "607179353.40",
"quantidadeAprovada": "3600000.00000000",
}
# Set request headers with authentication token
headers = {'Authorization': f'Token {token}'}
# Make API request
response = requests.post(api_url, json=data, headers=headers)
# Print response details
print("Status Code:", response.status_code)
print("Response Text:", response.text)
# Handle errors
if response.status_code != 200:
print("Error Response:", response.json())
else:
print("Approval request submitted successfully.")
Lista todas as aprovações relacionadas ao meu grupo de Chinese Wall:
Por meio deste endpoint, você poderá obter a lista completa de todas as aprovações de cotas já realizadas nos fundos que fazem parte da sua política de Chinese Wall. Em outras palavras, ele permite o acesso ao seu histórico de aprovações. Devido ao potencial volume de
dados disponível, as informações são paginadas para garantir melhor desempenho e experiência de uso.
https://www.otdx-api.com.br/nav/approval/all
Description:
total_pages: 'Número de Páginas disponíveis',
total_items: 'Total de itens disponíveis',
current_page: 'Página Atual',
requestHash: 'Identificador Único',
logDataHora: 'Log de Execução: Data e Hora',
logAnalista: 'Nome do analista',
codigoPorfolio: 'Código de referência da carteira em nossos sistemas internos',
nomePortfolio: 'Nome de referência da carteira',
cnpj: 'CNPJ da carteira',
quoteType: 'Classificação do tipo de cota da carteira de investimentos',
targetDataAprovacao: 'Data de referência para a aprovação',
valorCotaAprovado: 'Valor líquido da cota aprovada',
plAprovado: 'Valor do patrimônio líquido aprovado',
qtdAprovada: 'Número total de cotas aprovadas',
triggerReprocessamento: 'Indicação de que existe um pedido de reprocessamento',
statusHash: 'Status da aprovação',
Neste contexto, é necessário fornecer uma explicação complementar sobre o campo “triggerReprocessamento”. Esse campo é utilizado para sinalizar que, em uma determinada data, pode haver uma solicitação de reprocessamento que ainda não foi aceita. Em
outras palavras, o pedido de reprocessamento já foi realizado pelo administrador do fundo, porém a solicitação ainda está em análise pelo time de controladoria. Essa indicação é feita quando o valor do campo é igual a 1.
Code Sample 💻
A seguir, apresentamos exemplos de uso deste endpoint em diferentes linguagens de programação. Clique no botão correspondente para visualizar cada um deles.
Python
Java
PHP
C#
Node.js
import requests
import pandas as pd
# API URLs
AUTH_URL = 'https://www.otdx-api.com.br/api-token-auth/' # Authentication endpoint
REPROCESSAMENTO_URL = 'https://www.otdx-api.com.br/nav/approval/all' # Data retrieval endpoint
# User credentials (replace with your credentials)
USERNAME = 'your_username'
PASSWORD = 'your_password'
# Step 1: Authenticate and get the token
try:
# Send POST request to authenticate and retrieve the token
auth_response = requests.post(AUTH_URL, data={'username': USERNAME, 'password': PASSWORD})
auth_response.raise_for_status() # Raise an error for bad responses
token = auth_response.json().get('token') # Extract the token from the response
print("Authentication successful! Token retrieved.")
except requests.RequestException as e:
print(f"Authentication failed: {e}")
exit()
# Step 2: Fetch paginated data
headers = {'Authorization': f'Token {token}'} # Add token to headers for authentication
page = 1 # Start with the first page
page_size = 50 # Number of items per page (adjust as needed)
all_data = [] # List to store all retrieved data
try:
while True:
# Request data for the current page
response = requests.get(f"{REPROCESSAMENTO_URL}?page={page}&page_size={page_size}", headers=headers)
response.raise_for_status() # Raise an error for bad responses
data = response.json() # Parse the JSON response
print(f"Fetching page {page} of {data['total_pages']}...") # Print progress
all_data.extend(data['results']) # Add current page's data to the list
# Check if we are on the last page
if page >= data['total_pages']:
break
page += 1 # Move to the next page
# Step 3: Convert the data to a DataFrame
df = pd.DataFrame(all_data)
# Display the results
print(f"\nTotal records fetched: {len(df)}")
print("\nData preview:")
print(df.head())
except requests.RequestException as e:
print(f"Failed to fetch data: {e}")
except Exception as e:
print(f"An unexpected error occurred: {e}")
Deletar a aprovação de uma cota:
Sabemos que erros acontecem no mundo real. Este endpoint foi criado para alinhar nossa esteira de aprovação de carteiras a essa realidade. Por isso, sua utilização é limitada ao tempo decorrido desde a aprovação. Em outras palavras, caso identifique um erro dentro de
30 minutos após a aprovação, você poderá usar este endpoint para excluí-la.
https://www.otdx-api.com.br/nav/approval/delete/{hashtask}
hashtask: Ao criar uma aprovação, você receberá um identificador único chamado hashtask. Esse identificador deve ser utilizado no lugar do placeholder indicado acima.
Code Sample 💻
A seguir, apresentamos exemplos de uso deste endpoint em diferentes linguagens de programação. Clique no botão correspondente para visualizar cada um deles.
Python
Java
PHP
C#
Node.js
import requests
# User credentials
username = 'your_username'
password = 'your_password'
hashtask = 'b333b93b13d1cb720a395be462793d94'
# Authenticate and obtain the token
auth_url = 'https://www.otdx-api.com.br/api-token-auth/'
auth_response = requests.post(auth_url, data={'username': username, 'password': password})
if auth_response.status_code == 200:
token = auth_response.json().get('token')
if token:
# API endpoint
api_url = f'https://www.otdx-api.com.br/nav/approval/delete/{hashtask}'
headers = {'Authorization': f'Token {token}'}
# Send DELETE request
response = requests.delete(api_url, headers=headers)
print(response.json())
else:
print("Error: Failed to retrieve authentication token.")
else:
print("Error: Authentication failed. Check your credentials.")
Editar a aprovação de uma cota:
Assim como estabelecemos uma janela de tempo para excluir uma aprovação feita por engano, criamos também um endpoint que permite a edição de uma aprovação dentro dos primeiros 30 minutos após sua criação. Esse recurso é essencial, pois você será responsável por enviar
algumas informações no payload da aprovação.
https://www.otdx-api.com.br/nav/approval/edit
payload = {
"hashtask": "649bb3830c107e1fc8c129ea7bef99dc",
"codigoCarteira": "43421",
"tipoCota": "F",
"dataTargetAprovacao": "2025-08-18",
"valorCotaAprovada": "170.66093150",
"plAprovado": "707179353.40",
"quantidadeAprovada": "55600000",
}
No que diz respeito ao payload, é importante destacar que implementamos verificações para garantir a integridade das informações. Dessa forma, a edição terá efeito prático apenas nos campos valorCotaAprovada, plAprovado e quantidadeAprovada, enquanto os demais campos
- apesar de obrigatorios - serão utilizados exclusivamente para validação dos dados.
Code Sample 💻
A seguir, apresentamos exemplos de uso deste endpoint em diferentes linguagens de programação. Clique no botão correspondente para visualizar cada um deles.
Python
Java
PHP
C#
Node.js
import requests
# Define the authentication URL (where we send login credentials)
auth_url = 'https://www.otdx-api.com.br/api-token-auth/'
# Define the API endpoint URL to update approval details
api_url = 'https://www.otdx-api.com.br/nav/approval/edit'
# Define user credentials for authentication
username = 'your_username'
password = 'your_password'
# Step 1: Authenticate the user by sending a POST request with login credentials
auth_response = requests.post(auth_url, data={
'username': username,
'password': password
})
# Step 2: Check if authentication was successful (HTTP status 200 means success)
if auth_response.status_code == 200:
# Extract the authentication token from the response JSON
token = auth_response.json().get('token')
# Define the request payload (data to be sent in the PUT request)
payload = {
'hashtask': '649bb3830c107e1fc8c129ea7bef99dc', # Unique task identifier
'codigoCarteira': '43421', # Portfolio code
'tipoCota': 'F', # Quota type (e.g., 'F' for fixed-income)
'dataTargetAprovacao': '2025-08-18', # Approval target date
'valorCotaAprovada': '170.66093150', # Approved quota value
'plAprovado': '707179353.40', # Approved Net Asset Value (NAV)
'quantidadeAprovada': '55600000.00000000', # Approved quantity of shares/units
}
# Define the request headers, including the authentication token for API access
headers = {
'Authorization': f'Token {token}', # Add the authentication token to the request header
'Content-Type': 'application/json' # Specify that the request body is in JSON format
}
# Step 3: Send the PUT request to update approval details in the API
api_response = requests.put(api_url, json=payload, headers=headers)
# Step 4: Handle the API response
if api_response.status_code == 200:
# If the request was successful, print the response JSON
print("Success:", api_response.json())
else:
# If the request failed, print the status code and the error message
print(f"Request failed with status code {api_response.status_code}")
print("Error:", api_response.text)
else:
# If authentication failed, print the error status code
print(f"Authentication failed with status code {auth_response.status_code}")
Listar aprovação específica relacionada ao meu grupo de Chinese Wall
Para facilitar o acesso aos detalhes da sua solicitação de aprovação, este endpoint permite realizar uma consulta específica, semelhante ao endpoint 'Lista todas as aprovações relacionadas ao meu grupo de Chinese Wall. O uso deste endpoint pode proporcionar melhor
desempenho e maior velocidade na entrega dos dados, pois a busca será delimitada dentro da nossa base de dados.
https://www.otdx-api.com.br/nav/approval/{hashtask}
hashtask: Ao criar uma aprovação, você receberá um identificador único chamado hashtask. Esse identificador deve ser utilizado no lugar do placeholder indicado acima.
Code Sample 💻
A seguir, apresentamos exemplos de uso deste endpoint em diferentes linguagens de programação. Clique no botão correspondente para visualizar cada um deles.
Python
Java
PHP
C#
Node.js
import requests
# Define the username and password for authentication
username = 'your_username' # Replace with actual username
password = 'your_password' # Replace with actual password
# Define the hash of the specific task that needs approval
hashtask = '40f02db9496525a119703af428b549cc'
# Construct the API URL for the approval endpoint using the task hash
api_url = f'https://www.otdx-api.com.br/nav/approval/{hashtask}'
# Step 1: Authenticate and obtain an API Token
# Send a POST request to the authentication endpoint with login credentials
auth_response = requests.post(
'https://www.otdx-api.com.br/api-token-auth/',
data={'username': username, 'password': password}
)
# Check if authentication was successful (status code 200 indicates success)
if auth_response.status_code == 200:
# Extract the token from the authentication response JSON
token = auth_response.json().get('token')
# Define headers for subsequent requests to include the authentication token
headers = {'Authorization': f'Token {token}'}
# Step 2: Send a GET request to fetch task approval details
response = requests.get(api_url, headers=headers)
# Convert the response to JSON format
api_response = response.json()
# Print the API response (this will display the fetched data)
print(api_response)
else:
# Print an error message if authentication fails
print(f"Authentication failed! Status Code: {auth_response.status_code}, Response: {auth_response.text}")