Introdução
Seja bem vindo a documentação da API do Clube Convenia! Você pode utilizar esta API para controlar os diversos fluxos de utilização do nosso clube
Temos exemplos de implementação em: Shell, Ruby, Python, JavaScript e PHP! Veja os exemplos de implementação na area a direita e troque para a linguagem de programação que desejar
Chave de acesso
Uma chave de acesso será concedida para a utilização do nosso ambiente de sandbox ou produção.
Para utilizar o ambiente de sandbox garanta que as suas requisições estejam indo para o endereço: https://clubecore-staging.convenia.com.br além de utilizar a chave correspondente ao ambiente de sandbox
Para utilizar o ambiente de produção garanta que as suas requisições estejam indo para o endereço: https://clubecore.convenia.com.br além de utilizar a chave correspondente ao ambiente de produção
Será necessário utilizar a sua chave de acesso em todas as requisições
Clube
Criar e autenticar usuários - Authenticate
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "{{base_url}}/clube/v1/authenticate/(sua-chave-de-api)",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => array('document' => '123.456.789-01'),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
require "uri"
require "net/http"
url = URI("{{base_url}}/clube/v1/authenticate/(sua-chave-de-api)")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Post.new(url)
form_data = [['document', '123.456.789-01']]
request.set_form form_data, 'multipart/form-data'
response = http.request(request)
puts response.read_body
import http.client
import mimetypes
conn = http.client.HTTPSConnection("{{base_url}}")
dataList = []
boundary = 'wL36Yn8afVp8Ag7AmP8qZ0SA4n1v9T'
dataList.append('--' + boundary)
dataList.append('Content-Disposition: form-data; name=document;')
dataList.append('Content-Type: {}'.format('multipart/form-data'))
dataList.append('')
dataList.append("123.456.789-01")
dataList.append('--'+boundary+'--')
dataList.append('')
body = '\r\n'.join(dataList)
payload = body
headers = {
'Content-type': 'multipart/form-data; boundary={}'.format(boundary)
}
conn.request("POST", "/clube/v1/authenticate/(sua-chave-de-api)", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
curl --location --request POST '{{base_url}}/clube/v1/authenticate/(sua-chave-de-api)' \
--form 'document=123.456.789-01'
var request = require('request');
var options = {
'method': 'POST',
'url': '{{base_url}}/clube/v1/authenticate/(sua-chave-de-api)',
'headers': {
},
formData: {
'document': '123.456.789-01'
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
As chamadas acima terão um retorno como este:
{
"message": "",
"data": "https://seu-dominio.com.br/login?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjb21wYW55X2xvZjs82751bGwsImRvY3VtZW50IjoiNDMxLjQzMC44OTgtMjIiLCJuYW1lIjoiVmljdG9yIEdhem90dGkiLCJjb21wYW55X2lkIjoiNmI4MTRjNDAtODFjMC00MGY5LTg2MTAtMjhhZDY4MmJmODgxIiwiY29tcGFueV9uYW1lIjoiQ29udmVuaWEgTG9jYWwiLCJjb21wYW55X3NsdWciOm51bGwsImZyb20iOiJjbHViIiwic3ViIjoiNzA0MmY3YTAtZGM0Yy0xMWU3LWFlOWEtMDMyNjVjOGEwMWZiIiwiaXNzIjoiaHR0cDovL2NvcmUubG8vY2x1YmUvdjEvYXV0aGVudGljYXRlLzZiODE0YzQwLTgxYzAtNDBmOS04NjEwLTI4YWQ2ODJiZjg4MSIsImlhdCI6MTU1ODU0MzA5OSwiZXhwIjoxNTU5ODM5MDk5LCJuYmYiOjE1NTg1NDMwOTksImp0aSI6IlJMQXc0cUVZQVNEcWVLanQifQ.BeXvOWPfBYUheisSnn1UZjD32RKGBpKUncys34GlNqQ",
"redirect": null,
"success": true
}
Este endpoint é responsável por criar e autenticar o usuário. Caso o usuário não exista na nossa base ele será cadastrado neste momento. Caso o mesmo já exista, apenas a autenticação será realizada. O retorno deste endpoint será uma url de acesso ao seu clube. Basta redirecionar o usuário para essa url e ele entrará logado no clube
HTTP Request
POST https://clubecore-staging.convenia.com.br/clube/v1/authenticate/(sua-chave-de-api)
Query Parameters
Parameter | Required | Description |
---|---|---|
document | true | CPF do usuário. Pode ser enviado formatado ou não. |
name | false | Primeiro nome do usuário. |
last_name | false | Sobrenome do usuário. |
false | Email do usuário. | |
birthday | false | Data de nascimento do usuário no formato YYYY-MM-DD (1970-12-30). |
phone | false | Celular do usuário. Formato: XXXXXXXXXXX. |
gender | false | Gênero do usuário, envie uma string com o gênero do mesmo. |
Vitrine - Listagem de categorias
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://clubecore-staging.convenia.com.br/clube/v1/categories/(sua-chave-de-api)?limit=3&page=1",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
require "uri"
require "net/http"
url = URI("https://clubecore-staging.convenia.com.br/clube/v1/categories/(sua-chave-de-api)?limit=3&page=1")
https = Net::HTTP.new(url.host, url.port);
https.use_ssl = true
request = Net::HTTP::Get.new(url)
response = https.request(request)
puts response.read_body
import http.client
import mimetypes
conn = http.client.HTTPSConnection("https://clubecore-staging.convenia.com.br")
payload = ''
headers = {}
conn.request("GET", "/clube/v1/categories/(sua-chave-de-api)?limit=3&page=1", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
wget --no-check-certificate --quiet \
--method GET \
--timeout=0 \
--header '' \
'https://clubecore-staging.convenia.com.br/clube/v1/categories/(sua-chave-de-api)?limit=3&page=1'
var request = require('request');
var options = {
'method': 'GET',
'url': 'https://clubecore-staging.convenia.com.br/clube/v1/categories/(sua-chave-de-api)?limit=3&page=1',
'headers': {
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
As chamadas acima terão um retorno como este:
{
"message": "",
"data": [
{
"id": "706f3380-dc4c-11e7-9541-53abaf05200b",
"name": "Produtos e Serviços",
"slug": "produtos-e-servicos"
},
{
"id": "7071a4c0-dc4c-11e7-a3ba-f1d5eacf9e7e",
"name": "Lazer",
"slug": "lazer"
},
{
"id": "70769a80-dc4c-11e7-1825-8185065dokpl",
"name": "Bem-estar e saúde",
"slug": "bem-estar-e-saude"
},
{
"id": "70769a80-dc4c-11e7-8925-8185065d28de",
"name": "Alimentos e Bebidas",
"slug": "alimentos-e-bebidas"
},
{
"id": "70769a80-dc4c-11e7-8925-8185065d2fet",
"name": "Educação",
"slug": "educacao"
}
],
"redirect": null,
"success": true
}
Este endpoint permite fazer uma listagem das categorias que possuimos no clube, permitindo combinar as informações retornadas nas filtragens dos demais.
HTTP Request
GET https://clubecore-staging.convenia.com.br/clube/v1/categories/(sua-chave-de-api)
URL Parameters
Parameter | Description |
---|---|
limit | Limite de recursos a serem retornados pelo endpoint |
page | Os recursos serão retornados de forma paginada. Utilize este parâmetro para controlar a página do recurso |
Vitrine - Listagem de parceiros
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://clubecore-staging.convenia.com.br/clube/v1/perks/(sua-chave-de-api)?limit=3&page=1",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;;
require "uri"
require "net/http"
url = URI("https://clubecore-staging.convenia.com.br/clube/v1/perks/(sua-chave-de-api)?limit=3&page=1")
https = Net::HTTP.new(url.host, url.port);
https.use_ssl = true
request = Net::HTTP::Get.new(url)
response = https.request(request)
puts response.read_body
import http.client
import mimetypes
conn = http.client.HTTPSConnection("https://clubecore-staging.convenia.com.br")
payload = ''
headers = {}
conn.request("GET", "/clube/v1/perks/(sua-chave-de-api)?limit=3&page=1", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
wget --no-check-certificate --quiet \
--method GET \
--timeout=0 \
--header '' \
'https://clubecore-staging.convenia.com.br/clube/v1/perks/(sua-chave-de-api)?limit=3&page=1'
var request = require('request');
var options = {
'method': 'GET',
'url': 'https://clubecore-staging.convenia.com.br/clube/v1/perks/(sua-chave-de-api)?limit=3&page=1',
'headers': {
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
As chamadas acima terão um retorno como este:
{
"message": null,
"data": {
"results": [
{
"slug": "convenia-75U",
"name": "Parceiro Convenia",
"description": "Convenia Parceiro",
"logo": "https://www.example.com",
"categories": [
{
"id": "706f3380-dc4c-11e7-9541-53abaf05200b",
"name": "Produtos e Serviços",
"slug": "produtos-e-servicos"
}
]
},
{
"slug": "convenia-r55",
"name": "Parceiro Convenia - 2",
"description": "Convenia Parceiro - 2",
"logo": "https://www.example2.com",
"categories": [
{
"id": "706f3380-dc4c-11e7-9541-53abaf05200b",
"name": "Produtos e Serviços",
"slug": "produtos-e-servicos"
}
]
},
{
"slug": "convenia-gs3",
"name": "Parceiro Convenia - 3",
"description": "Convenia Parceiro - 3",
"logo": "https://www.example3.com",
"categories": [
{
"id": "706f3380-dc4c-11e7-9541-53abaf05200b",
"name": "Produtos e Serviços",
"slug": "produtos-e-servicos"
}
]
},
],
"pagination": {
"total": 6,
"count": 3,
"per_page": 3,
"current_page": 1,
"total_pages": 2
}
},
"redirect": null,
"success": true
}
Este endpoint permite fazer uma listagem de parceiros de forma limitada.
Este endpoint não exibe nenhuma informação que possibilite ao usuário fazer o resgate de algum benefício, para fazer a efetiva utilização do benefício utilize o endpoint Authenticate
Este endpoint retorna os resultados de forma paginada, para controlar a quantidade de recursos retornados utilize o parâmetro limit
HTTP Request
GET https://clubecore-staging.convenia.com.br/clube/v1/perks/(sua-chave-de-api)
URL Parameters
Parameter | Description |
---|---|
limit | Limite de recursos a serem retornados pelo endpoint |
page | Os recursos serão retornados de forma paginada. Utilize este parâmetro para controlar a página do recurso |
Vitrine - Listagem de ofertas
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://clubecore-staging.convenia.com.br/clube/v1/campaigns/(sua-chave-de-api)",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
require "uri"
require "net/http"
url = URI("https://clubecore-staging.convenia.com.br/clube/v1/campaigns/(sua-chave-de-api)?limit=3&page=1")
https = Net::HTTP.new(url.host, url.port);
https.use_ssl = true
request = Net::HTTP::Get.new(url)
response = https.request(request)
puts response.read_body
import http.client
import mimetypes
conn = http.client.HTTPSConnection("https://clubecore-staging.convenia.com.br")
payload = ''
headers = {}
conn.request("GET", "/clube/v1/campaigns/(sua-chave-de-api)?limit=3&page=1", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
wget --no-check-certificate --quiet \
--method GET \
--timeout=0 \
--header '' \
'https://clubecore-staging.convenia.com.br/clube/v1/campaigns/(sua-chave-de-api)?limit=3'
var request = require('request');
var options = {
'method': 'GET',
'url': 'https://clubecore-staging.convenia.com.br/clube/v1/campaigns/(sua-chave-de-api)',
'headers': {
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
As chamadas acima terão um retorno como este:
{
"message": null,
"data": {
"results": [
{
"id": "5f0306c0-mf87-7yhf-s901-alsmvuw92b34",
"name": "Convenia Parceiro - 1",
"title": "Título da oferta",
"description": "Descrição do benefício",
"slug": "convenia-parceiro-e0E",
"symbol": "%",
"value": 0,
"event": "online",
"perk_name": "Convenia Parceiro",
"perk_logo": "https://www.example.com",
"perk_slug": "convenia-perk-75U"
},
{
"id": "5f0306c0-mf87-7yhf-s901-fkmiwhfybt6",
"name": "Convenia Parceiro - 2",
"title": "Título da oferta",
"description": "Descrição do benefício",
"slug": "convenia-parceiro-fwe",
"symbol": "%",
"value": 0,
"event": "online",
"perk_name": "Convenia Parceiro",
"perk_logo": "https://www.example.com",
"perk_slug": "convenia-perk-8uf"
},
{
"id": "5f0306c0-mf87-7yhf-s901-fhsu128374hsv",
"name": "Convenia Parceiro - 3",
"title": "Título da oferta",
"description": "Descrição do benefício",
"slug": "convenia-parceiro-f8u",
"symbol": "%",
"value": 0,
"event": "online",
"perk_name": "Convenia Parceiro",
"perk_logo": "https://www.example.com",
"perk_slug": "convenia-perk-f23"
}
],
"pagination": {
"total": 6,
"count": 3,
"per_page": 3,
"current_page": 1,
"total_pages": 2
}
},
"redirect": null,
"success": true
}
Este endpoint permite fazer uma listagem de ofertas de forma limitada. Este endpoint não exibe nenhuma informação que possibilite ao usuário fazer o resgate do benefício, para fazer a efetiva utilização do benefício utilize o endpoint Authenticate
Este endpoint retorna os resultados de forma paginada, para controlar a quantidade de recursos retornados utilize o parâmetro limit
O endpoint possui uma série de filtros, utilize-os como parâmetros na url, por exemplo: name=cinemark
Algumas opções de filtros disponíveis:
- type
- title
- name
- slug
- event
- categorySlug
- perk
HTTP Request
GET https://clubecore-staging.convenia.com.br/clube/v1/campaigns/(sua-chave-de-api)
URL Parameters
Parameter | Description |
---|---|
limit | Limite de recursos a serem retornados pelo endpoint |
page | Os recursos serão retornados de forma paginada. Utilize este parâmetro para controlar a página do recurso |
Gestor
Aqui estão os endpoints de acesso da nossa area administrativa (gestor.convenia.com.br)
OBS: importante lembrar que para ter acesso a estes endpoints é necessário ter uma conta ativa e que tenha acesso ao painel do gestor
Login gestor
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "{{base_url}}/painel/v1/authenticate/(sua-chave-de-api)",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => array('document' => '12345678901','password' => 'swordfish'),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
require "uri"
require "net/http"
url = URI("{{base_url}}/painel/v1/authenticate/(sua-chave-de-api)")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Post.new(url)
form_data = [['document', '12345678901'],['password', 'swordfish']]
request.set_form form_data, 'multipart/form-data'
response = http.request(request)
puts response.read_body
import http.client
import mimetypes
conn = http.client.HTTPSConnection("{{base_url}}")
dataList = []
boundary = 'wL36Yn8afVp8Ag7AmP8qZ0SA4n1v9T'
dataList.append('--' + boundary)
dataList.append('Content-Disposition: form-data; name=document;')
dataList.append('Content-Type: {}'.format('multipart/form-data'))
dataList.append('')
dataList.append("12345678901")
dataList.append('--' + boundary)
dataList.append('Content-Disposition: form-data; name=password;')
dataList.append('Content-Type: {}'.format('multipart/form-data'))
dataList.append('')
dataList.append("swordfish")
dataList.append('--'+boundary+'--')
dataList.append('')
body = '\r\n'.join(dataList)
payload = body
headers = {
'Content-type': 'multipart/form-data; boundary={}'.format(boundary)
}
conn.request("POST", "/painel/v1/authenticate/(sua-chave-de-api)", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
wget --no-check-certificate --quiet \
--method POST \
--timeout=0 \
--header '' \
--body-data 'document=12345678901&password=swordfish' \
'{{base_url}}/painel/v1/authenticate/(sua-chave-de-api)'
var request = require('request');
var options = {
'method': 'POST',
'url': '{{base_url}}/painel/v1/authenticate/(sua-chave-de-api)',
'headers': {
},
formData: {
'document': '12345678901',
'password': 'swordfish'
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
As chamadas acima terão um retorno como este:
{
"message": null,
"data": [
{
"id": "7042f7a0-abcd-11e7-ae9a-07sh17abvk72",
"name": "Usuário Convenia",
"email": "clubeconvenia@example.com",
"document": "123.456.789-10",
"birthday": "1970-01-01",
"gender": "masculino",
"civil_state": "1",
"state": null,
"city": null,
"extra": null,
"avatar": null,
"created_at": 1512767851,
"updated_at": "2019-02-12 17:21:05",
"deleted_at": null,
"phone": "(99) 99999-9999",
"last_name": "Connvenia"
},
{
"token": "eyjW8XAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjb21wYW55X2xvZ28iOm51bGwsImRvY3VtZWs8jnxiNDMxLjQzMC44OTgtMjIiLCJuYW1lIjoiVmljdG9yIEdhem90dGkiLCJjb21wYW55X2lkIjoiNmI4MTRjNDAtODFjMC00MGY5LTg2MTAtMjhhZDY4MmJmODgxIiwiY29tcGFueV9uYW1lIjoiQ29udmVuaWEgTG9jYWwiLCJjb21wYW55X3NsdWciOm51bGwsImZyb20iOiJwYW5lbCIsInN1YiI6IjcwNDJmN2EwLWRjNGMtMTFlNy1hZTlhLTAzMjY1YzhhMDFmYiIsImlzcyI6Imh0dHA6Ly9jb3JlLmxvL3BhaW5lbC92MS9hdXRoZW50aWNhdGUvNmI4MTRjNDAtODFjMC00MGY5LTg2MTAtMjhhZDY4MmJmODgxIiwiaWF0IjoxNTU4NTQ0MTYzLCJleHAiOjE1NTk4NDAxNjMsIm5iZiI6MTU1ODU0NDE2MywianRpIjoiWEZXcmlxZXVQcHZ3azUweiJ9.r_ObId3OE_h5ZMecfUzCKMdUAGwdzn69zA_JSR-H4eA"
}
],
"redirect": null,
"success": true
}
Utilize esse endpoint para fazer login no gestor e receber o token que será necessário para as próximas requisições.
Este token tem validade de 15 dias, após a expiração é necessário realizar um novo processo de login
HTTP Request
POST https://clubecore-staging.convenia.com.br/painel/v1/authenticate/(sua-chave-de-api)
Query Parameters
Parameter | Required | Description |
---|---|---|
document | true | CPF do usuário. Pode ser enviado formatado ou não. |
password | true | Senha do usuário. |
Habilitar usuários
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://clubecore-staging.convenia.com.br/painel/v1/company/(sua-chave-de-api)/user/invite",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => array('users[0]' => '123456778912','users[1]' => '987765543210'),
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer token-no-formato-jwt-gerado-no-login"
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
require "uri"
require "net/http"
url = URI("https://clubecore-staging.convenia.com.br/painel/v1/company/(sua-chave-de-api)/user/invite")
https = Net::HTTP.new(url.host, url.port);
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer token-no-formato-jwt-gerado-no-login"
form_data = [['users[0]', '123456778912'],['users[1]', '987765543210']]
request.set_form form_data, 'multipart/form-data'
response = https.request(request)
puts response.read_body
import http.client
import mimetypes
conn = http.client.HTTPSConnection("clubecore-staging.convenia.com.br")
dataList = []
boundary = 'wL36Yn8afVp8Ag7AmP8qZ0SA4n1v9T'
dataList.append('--' + boundary)
dataList.append('Content-Disposition: form-data; name=users[0];')
dataList.append('Content-Type: {}'.format('multipart/form-data'))
dataList.append('')
dataList.append("123456778912")
dataList.append('--' + boundary)
dataList.append('Content-Disposition: form-data; name=users[1];')
dataList.append('Content-Type: {}'.format('multipart/form-data'))
dataList.append('')
dataList.append("987765543210")
dataList.append('--'+boundary+'--')
dataList.append('')
body = '\r\n'.join(dataList)
payload = body
headers = {
'Authorization': 'Bearer token-no-formato-jwt-gerado-no-login',
'Content-type': 'multipart/form-data; boundary={}'.format(boundary)
}
conn.request("POST", "/painel/v1/company/(sua-chave-de-api)/user/invite", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
wget --no-check-certificate --quiet \
--method POST \
--timeout=0 \
--header 'Authorization: Bearer token-no-formato-jwt-gerado-no-login' \
--body-data 'users[0]=123456778912&users[1]=987765543210' \
'https://clubecore-staging.convenia.com.br/painel/v1/company/(sua-chave-de-api)/user/invite'
var request = require('request');
var options = {
'method': 'POST',
'url': 'https://clubecore-staging.convenia.com.br/painel/v1/company/(sua-chave-de-api)/user/invite',
'headers': {
'Authorization': 'Bearer token-no-formato-jwt-gerado-no-login'
},
formData: {
'users[0]': '123456778912',
'users[1]': '987765543210'
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
As chamadas acima terão um retorno como este:
{
"message": "",
"data": {
"invited": [],
"existent": [],
"invalid": [
"123456778912",
"987765543210"
],
"type": null
},
"redirect": null,
"success": true
}
Utilize esse endpoint para habilitar usuários e permitir que os mesmos acessem o seu clube.
Neste endpoint é necessário ustilizar o token gerado no passo Login do painel do gestor
Envie um array com os CPF's dos usuários que deseja habilitar
HTTP Request
POST https://clubecore-staging.convenia.com.br/painel/v1/company/(sua-chave-de-api)/user/invite
Headers
Parameter | Required | Description |
---|---|---|
Authorization | true | Bearer token-no-formato-jwt-gerado-no-login |
Query Parameters
Parameter | Required | Description |
---|---|---|
users[0] | true | CPF do usuário. Pode ser enviado formatado ou não: 123456778912 |
users[1] | true | CPF do usuário. Pode ser enviado formatado ou não: 987765543210 |
Bloquear usuários
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://clubecore-staging.convenia.com.br/painel/v1/company/(sua-chave-de-api)/user/block",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => array('users[0]' => '123456778912','users[1]' => '987765543210'),
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer token-no-formato-jwt-gerado-no-login"
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
require "uri"
require "net/http"
url = URI("https://clubecore-staging.convenia.com.br/painel/v1/company/(sua-chave-de-api)/user/block")
https = Net::HTTP.new(url.host, url.port);
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer token-no-formato-jwt-gerado-no-login"
form_data = [['users[0]', '123456778912'],['users[1]', '987765543210']]
request.set_form form_data, 'multipart/form-data'
response = https.request(request)
puts response.read_body
import http.client
import mimetypes
conn = http.client.HTTPSConnection("clubecore-staging.convenia.com.br")
dataList = []
boundary = 'wL36Yn8afVp8Ag7AmP8qZ0SA4n1v9T'
dataList.append('--' + boundary)
dataList.append('Content-Disposition: form-data; name=users[0];')
dataList.append('Content-Type: {}'.format('multipart/form-data'))
dataList.append('')
dataList.append("123456778912")
dataList.append('--' + boundary)
dataList.append('Content-Disposition: form-data; name=users[1];')
dataList.append('Content-Type: {}'.format('multipart/form-data'))
dataList.append('')
dataList.append("987765543210")
dataList.append('--'+boundary+'--')
dataList.append('')
body = '\r\n'.join(dataList)
payload = body
headers = {
'Authorization': 'Bearer token-no-formato-jwt-gerado-no-login',
'Content-type': 'multipart/form-data; boundary={}'.format(boundary)
}
conn.request("POST", "/painel/v1/company/(sua-chave-de-api)/user/block", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
wget --no-check-certificate --quiet \
--method POST \
--timeout=0 \
--header 'Authorization: Bearer token-no-formato-jwt-gerado-no-login' \
--body-data 'users[0]=123456778912&users[1]=987765543210' \
'https://clubecore-staging.convenia.com.br/painel/v1/company/(sua-chave-de-api)/user/block'
var request = require('request');
var options = {
'method': 'POST',
'url': 'https://clubecore-staging.convenia.com.br/painel/v1/company/(sua-chave-de-api)/user/block',
'headers': {
'Authorization': 'Bearer token-no-formato-jwt-gerado-no-login'
},
formData: {
'users[0]': '123456778912',
'users[1]': '987765543210'
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
As chamadas acima terão um retorno como este:
{
"message": null,
"data": {
"errors": [],
"blocked": [
"12345678901",
"09876543209",
"09876543212"
],
"errors_count": 0,
"blocked_count": 3
},
"redirect": null,
"success": true
}
Utilize este endpoint para bloquear os usuários em batch. Envie um array com os CPF's dos usuários que deseja bloquear
Neste endpoint é necessário ustilizar o token gerado no passo Login do painel do gestor
HTTP Request
POST https://clubecore-staging.convenia.com.br/painel/v1/company/(sua-chave-de-api)/user/block
Headers
Parameter | Required | Description |
---|---|---|
Authorization | true | Bearer token-no-formato-jwt-gerado-no-login |
Query Parameters
Parameter | Required | Description |
---|---|---|
users[0] | true | CPF do usuário. Pode ser enviado formatado ou não: 123456778912 |
users[1] | true | CPF do usuário. Pode ser enviado formatado ou não: 987765543210 |
Desbloquear usuários
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://clubecore-staging.convenia.com.br/painel/v1/company/(sua-chave-de-api)/user/unblock",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => array('users[0]' => '123456778912','users[1]' => '987765543210'),
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer token-no-formato-jwt-gerado-no-login"
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
require "uri"
require "net/http"
url = URI("https://clubecore-staging.convenia.com.br/painel/v1/company/(sua-chave-de-api)/user/unblock")
https = Net::HTTP.new(url.host, url.port);
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer token-no-formato-jwt-gerado-no-login"
form_data = [['users[0]', '123456778912'],['users[1]', '987765543210']]
request.set_form form_data, 'multipart/form-data'
response = https.request(request)
puts response.read_body
import http.client
import mimetypes
conn = http.client.HTTPSConnection("clubecore-staging.convenia.com.br")
dataList = []
boundary = 'wL36Yn8afVp8Ag7AmP8qZ0SA4n1v9T'
dataList.append('--' + boundary)
dataList.append('Content-Disposition: form-data; name=users[0];')
dataList.append('Content-Type: {}'.format('multipart/form-data'))
dataList.append('')
dataList.append("123456778912")
dataList.append('--' + boundary)
dataList.append('Content-Disposition: form-data; name=users[1];')
dataList.append('Content-Type: {}'.format('multipart/form-data'))
dataList.append('')
dataList.append("987765543210")
dataList.append('--'+boundary+'--')
dataList.append('')
body = '\r\n'.join(dataList)
payload = body
headers = {
'Authorization': 'Bearer token-no-formato-jwt-gerado-no-login',
'Content-type': 'multipart/form-data; boundary={}'.format(boundary)
}
conn.request("POST", "/painel/v1/company/(sua-chave-de-api)/user/unblock", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
wget --no-check-certificate --quiet \
--method POST \
--timeout=0 \
--header 'Authorization: Bearer token-no-formato-jwt-gerado-no-login' \
--body-data 'users[0]=123456778912&users[1]=987765543210' \
'https://clubecore-staging.convenia.com.br/painel/v1/company/(sua-chave-de-api)/user/unblock'
var request = require('request');
var options = {
'method': 'POST',
'url': 'https://clubecore-staging.convenia.com.br/painel/v1/company/(sua-chave-de-api)/user/unblock',
'headers': {
'Authorization': 'Bearer token-no-formato-jwt-gerado-no-login'
},
formData: {
'users[0]': '123456778912',
'users[1]': '987765543210'
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
As chamadas acima terão um retorno como este:
{
"message": null,
"data": {
"errors": [],
"unblocked": [
"12345678901",
"09876543209",
"09876543212"
],
"errors_count": 0,
"unblocked_count": 3
},
"redirect": null,
"success": true
}
Utilize este endpoint para desbloquear os usuários em batch. Envie um array com os CPF's dos usuários que deseja desbloquear
Neste endpoint é necessário ustilizar o token gerado no passo Login do painel do gestor
HTTP Request
POST https://clubecore-staging.convenia.com.br/painel/v1/company/(sua-chave-de-api)/user/unblock
Headers
Parameter | Required | Description |
---|---|---|
Authorization | true | Bearer token-no-formato-jwt-gerado-no-login |
Query Parameters
Parameter | Required | Description |
---|---|---|
users[0] | true | CPF do usuário. Pode ser enviado formatado ou não: 123456778912 |
users[1] | true | CPF do usuário. Pode ser enviado formatado ou não: 987765543210 |
Atualizar dados de usuário
<?php
$curl = curl_init();
$cpf = '123.456.789-01';
curl_setopt_array($curl, array(
CURLOPT_URL => "https://clubecore-staging.convenia.com.br/painel/v1/company/(sua-chave-de-api)/user/$cpf",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => "name=Usuario&last_name=Convenia",
CURLOPT_HTTPHEADER => array(
"Content-Type: application/x-www-form-urlencoded"
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
require "uri"
require "net/http"
url = URI("https://clubecore-staging.convenia.com.br/painel/v1/company/(sua-chave-de-api)/user/{cpf}")
https = Net::HTTP.new(url.host, url.port);
https.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Content-Type"] = "application/x-www-form-urlencoded"
request.body = "name=Usuario&last_name=Convenia"
response = https.request(request)
puts response.read_body
import http.client
import mimetypes
conn = http.client.HTTPSConnection("clubecore-staging.convenia.com.br")
payload = 'name=Usuario&last_name=Convenia'
headers = {
'Content-Type': 'application/x-www-form-urlencoded'
}
conn.request("PATCH", "/painel/v1/company/(sua-chave-de-api)/user/{cpf}", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
wget --no-check-certificate --quiet \
--method PATCH \
--timeout=0 \
--header 'Content-Type: application/x-www-form-urlencoded' \
--body-data 'name=Usuario&last_name=Convenia' \
'https://clubecore-staging.convenia.com.br/painel/v1/company/(sua-chave-de-api)/user/{cpf}'
var request = require('request');
var options = {
'method': 'PATCH',
'url': 'https://clubecore-staging.convenia.com.br/painel/v1/company/(sua-chave-de-api)/user/{cpf}',
'headers': {
'Content-Type': 'application/x-www-form-urlencoded'
},
form: {
'name': 'Usuario',
'last_name': 'Convenia'
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
As chamadas acima terão um retorno como este:
{
"data": {
"name": "Usuario",
"last_name": "Convenia",
"email": "usuario1@convenia.com.br",
"phone": "(11) 1234-45678",
"birthday": "1909-03-15 00:00:00",
"gender": "masculino",
"city": "São Paulo",
"state": "SP",
"avatar": "https://example.com"
}
}
Utilize esse endpoint para atualizar os dados de **Nome e Sobrenome do seu usuário.
Utilize o cpf do usuário na rota substituindo a palavra cpf pelo respectivo cpf. Exemplo:
https://clubecore-staging.convenia.com.br/painel/v1/company/(sua-chave-de-api)/user/123456789122
Neste endpoint é necessário ustilizar o token gerado no passo Login do painel do gestor
HTTP Request
PATCH https://clubecore-staging.convenia.com.br/painel/v1/company/(sua-chave-de-api)/user/{cpf}
Headers
Parameter | Required | Description |
---|---|---|
Authorization | true | Bearer token-no-formato-jwt-gerado-no-login |
Query Parameters
Parameter | Required | Description |
---|---|---|
name | true | Primeiro nome do usuário. |
last_name | false | Sobrenome do usuário. |
Obter lista de relatórios disponíveis
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "http://{{url_base}}/painel/v1/company/{{chave_api}}/report/list",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer {{token}}",
"cache-control: no-cache"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
require 'uri'
require 'net/http'
url = URI("http://{{url_base}}/painel/v1/company/{{chave_api}}/report/list")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer {{token}}'
request["cache-control"] = 'no-cache'
response = http.request(request)
puts response.read_body
import http.client
conn = http.client.HTTPConnection("{{url_base}}")
headers = {
'Authorization': "Bearer {{token}}",
'cache-control': "no-cache",
}
conn.request("GET", "painel,v1,company,{{chave_api}},report,list", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
wget --quiet \
--method GET \
--header 'Authorization: Bearer {{token}}' \
--header 'cache-control: no-cache' \
--output-document \
- 'http://{{url_base}}/painel/v1/company/{{chave_api}}/report/list'
var request = require("request");
var options = { method: 'GET',
url: 'http://{{url_base}}/painel/v1/company/{{chave_api}}/report/list',
headers:
{
'cache-control': 'no-cache',
Authorization: 'Bearer {{token}}' }
};
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
As chamadas acima terão um retorno como este:
{
"message": null,
"data": [
{
"name": "Cliques",
"text": "Acesse o histórico de cliques realizados pelos usuários nas ofertas do clube Convenia.",
"url": "click",
"period": true
},
{
"name": "Ofertas",
"text": "Confira todas as ofertas ativas no clube atualmente.",
"url": "campaigns",
"period": false
},
{
"name": "Parceiros",
"text": "Veja a relação de todos os parceiros disponibilizados pelo clube Convenia.",
"url": "perks",
"period": false
},
{
"name": "Parceiros exclusivos",
"text": "Veja a relação dos parceiros exclusivos cadastrados no seu clube.",
"url": "exclusive-perks",
"period": false
},
{
"name": "Usuários ativos",
"text": "Confira todos os usuários que se cadastraram e acessaram seu clube pelo menos uma vez.",
"url": "users",
"period": true
},
{
"name": "CPF's habilitados",
"text": "Veja a relação de CPF's dos usuários que estão habilitados para acessar o seu clube.",
"url": "documents",
"period": false
},
{
"name": "Login de usuários ativos",
"text": "Acesse o histórico de acessos realizados pelos usuários ativos no seu clube.",
"url": "login",
"period": true
},
{
"name": "Cliques exclusivos",
"text": "Acesse o histórico de cliques realizados pelos usuários nas ofertas exclusivas do seu clube.",
"url": "exclusive-click",
"period": true
},
{
"name": "Ofertas exclusivas",
"text": "Confira a relação das ofertas exclusivas cadastradas no seu clube.",
"url": "exclusive-campaigns",
"period": false
},
{
"name": "Compras",
"text": "Veja as transações realizadas pelos usuários em descontos do tipo \"Compras\" disponibilizados no clube",
"url": "users-purchases",
"period": true
}
],
"redirect": null,
"success": true
}
Utilize esse endpoint para obter a lista de relatórios que são disponibilizados no painel do gestor. Neste endpoint é necessário ustilizar o token gerado no passo Login do painel do gestor
Retorno
Parameter | Description |
---|---|
name | nome do relatório |
text | descrição do relatório |
url | link do relatório (deverá ser usado no próximo endpoint da documentação) |
period | período do relatório, caso true o relatório pode ser gerado com um intervalo de tempo, podendo se escolher uma data de início e outra de fim. Caso essa opção seja utilizada, enviar os parâmetros: start_date e end_date como query params no formato YYYY-mm-dd ex: ?start_date=2019-09-01&end_date=2019-09-02 |
HTTP Request
GET https://clubecore-staging.convenia.com.br/painel/v1/company/(sua-chave-de-api/report/list
Headers
Parameter | Required | Description |
---|---|---|
Authorization | true | Bearer token-no-formato-jwt-gerado-no-login |
Obter relatório
<?php
$curl = curl_init();
$report = "relatorio-desejado";
curl_setopt_array($curl, array(
CURLOPT_URL => "http://{{url_base}}/painel/v1/company/{{chave_api}}/report/$report",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer {{token}}",
"cache-control: no-cache"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
require 'uri'
require 'net/http'
url = URI("http://{{url_base}}/painel/v1/company/{{chave_api}}/report/{{url}}")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer {{token}}'
request["cache-control"] = 'no-cache'
response = http.request(request)
puts response.read_body
import http.client
conn = http.client.HTTPConnection("{{url_base}}")
headers = {
'Authorization': "Bearer {{token}}",
'cache-control': "no-cache",
}
conn.request("GET", "painel,v1,company,{{chave_api}},report,{{url}}", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
wget --quiet \
--method GET \
--header 'Authorization: Bearer {{token}}' \
--header 'cache-control: no-cache' \
--output-document \
- 'http://{{url_base}}/painel/v1/company/{{chave_api}}/report/{{url}}'
var request = require("request");
var options = { method: 'GET',
url: 'http://{{url_base}}/painel/v1/company/{{chave_api}}/report/{{url}}',
headers:
{
'cache-control': 'no-cache',
Authorization: 'Bearer {{token}}' }
};
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
As chamadas acima terão um retorno como este:
{
"message": "processing",
"data": {
"processing": true
},
"redirect": null,
"success": true
}
Utilize esse endpoint para obter um relatório a partir da listagem anterior de relatórios. Após requisitar o relatório o mesmo será enviado para o email do gestor que fez a requisição
Neste endpoint é necessário ustilizar o token gerado no passo Login do painel do gestor
Aqui deverá ser utilizado o valor retornado no campo url do endpoint anterior
HTTP Request
GET https://clubecore-staging.convenia.com.br/painel/v1/company/(sua-chave-de-api/report/{{url}}
Headers
Parameter | Required | Description |
---|---|---|
Authorization | true | Bearer token-no-formato-jwt-gerado-no-login |
Query Parameters
Parameter | Required | Description |
---|---|---|
start_date | false | Data de início do relatório (se aplicável ao relatório em questão). Enviar como query param. Ex: https://clubecore-staging.convenia.com.br/painel/v1/company/(sua-chave-de-api/report/{{url}}?start_date=2019-09-01&end_date=2019-09-02 |
end_date | false | Data de início do relatório (se aplicável ao relatório em questão). Enviar como query param. Ex: https://clubecore-staging.convenia.com.br/painel/v1/company/(sua-chave-de-api/report/{{url}}?start_date=2019-09-01&end_date=2019-09-02 |
Errors
A API do Clube Convenia apresenta os seguintes erros HTTP:
Error Code | Meaning |
---|---|
400 | Bad Request -- Your request is invalid. |
401 | Unauthorized -- Your API key is wrong. |
403 | Forbidden -- The kitten requested is hidden for administrators only. |
404 | Not Found -- The specified kitten could not be found. |
405 | Method Not Allowed -- You tried to access a kitten with an invalid method. |
406 | Not Acceptable -- You requested a format that isn't json. |
410 | Gone -- The kitten requested has been removed from our servers. |
418 | I'm a teapot. |
429 | Too Many Requests -- You're requesting too many kittens! Slow down! |
500 | Internal Server Error -- We had a problem with our server. Try again later. |
503 | Service Unavailable -- We're temporarily offline for maintenance. Please try again later. |