Criar Owner Detail
Descrição: Cria um novo registro de owner detail com segredo HMAC para autenticação de webhooks.
Endpoint
Regras
| Atributos | Descrição | Tipo | Obrigatório | Validações |
|---|---|---|---|---|
| hmac_secret | Segredo usado para assinar as entregas de webhook (header Content-Hmac). Não serve para o parceiro validar a entrega: a assinatura é calculada sobre a mensagem interna, e o corpo entregue é reserializado depois disso, então os bytes assinados não são os bytes recebidos. Autentique a origem pela autenticação básica do webhook. Detalhes no Guia: Webhooks. | String | Sim | Não pode ser vazio. Máximo de 120 caracteres — a coluna é varchar(120) e não há validação de tamanho na entrada: um valor maior faz a requisição falhar com 500. |
Exemplo de Requisição
- cURL
- Java
- JavaScript
- Python
- SDK Java
curl -X POST \
-H "Authorization: {SUA_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"hmac_secret": "seu-segredo-hmac-aqui"
}' \
"https://api.merx.tech/api/v1/integration/owner-details"
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
String body = "{\"hmac_secret\": \"seu-segredo-hmac-aqui\"}";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.merx.tech/api/v1/integration/owner-details"))
.header("Authorization", "{SUA_API_KEY}")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(body))
.build();
HttpClient client = HttpClient.newHttpClient();
try {
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());
} catch (Exception e) {
e.printStackTrace();
}
const response = await fetch(
'https://api.merx.tech/api/v1/integration/owner-details',
{
method: 'POST',
headers: {
'Authorization': '{SUA_API_KEY}',
'Content-Type': 'application/json',
},
body: JSON.stringify({
hmac_secret: 'seu-segredo-hmac-aqui',
}),
}
);
console.log(response.status);
console.log(response.headers.get("Location"));
import requests
url = "https://api.merx.tech/api/v1/integration/owner-details"
headers = {
"Authorization": "{SUA_API_KEY}",
"Content-Type": "application/json"
}
payload = {
"hmac_secret": "seu-segredo-hmac-aqui"
}
response = requests.post(url, json=payload, headers=headers)
print(response.status_code)
print(response.headers.get("Location"))
import com.merx.sdk.api.MerxClient;
import com.merx.sdk.core.Environment;
import com.merx.sdk.model.ownerdetail.CreateOwnerDetailRequest;
MerxClient merx = MerxClient.builder()
.apiKey("{SUA_API_KEY}")
.environment(Environment.SANDBOX)
.build();
merx.ownerDetails().create(CreateOwnerDetailRequest.builder()
.hmacSecret("seu-segredo-hmac")
.build());
Parâmetros
Parâmetros de Cabeçalho
| Nome | Descrição | Tipo | Obrigatório |
|---|---|---|---|
| Authorization | Chave de API obtida via support-api@merx.tech | String | Sim |
| Content-Type | application/json | String | Sim |
Parâmetros do Corpo
| Nome | Descrição | Tipo | Obrigatório |
|---|---|---|---|
| hmac_secret | Segredo de assinatura das entregas de webhook, máx. 120 caracteres. Não serve para o parceiro validar a entrega — ver a nota acima | String | Sim |
Existe apenas um owner detail por cooperativa. O cadastro é único: um segundo POST para a mesma cooperativa é recusado com
400emessage.duplicate.key. Para trocar o segredo de um cadastro existente, use o PUT.
Respostas
- 201 - Created
A resposta vem sem corpo. O cadastro não devolve o id do owner detail.
Atenção: a resposta traz um header
Location: /api/v1/address/{id}. Esse caminho não existe na API e não deve ser seguido. Para obter oiddo registro recém-criado, faça em seguidaGET /api/v1/integration/owner-details— a consulta retorna o owner detail da cooperativa, comid,owner_idehmac_secret. É esseidque deve ser usado noPUT /api/v1/integration/owner-details/{id}.
- 400 - Bad Request
hmac_secret ausente, nulo ou em branco:
{
"messages": ["message.hmac-secret.mandatory"]
}
Já existe um owner detail ativo para esta cooperativa (só é permitido um por cooperativa):
{
"messages": ["message.duplicate.key"]
}
- 401 - Unauthorized
Devolvido pelo gateway quando o Authorization está ausente ou inválido — nesse caso a resposta traz corpo, no formato {"data": [], "error": {...}}. A mensagem dentro de error varia conforme o plugin de autenticação da rota, então não programe em cima do texto.