NAV Navbar
shell ruby python javascript php

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.
email 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:

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.