Documentação de formato de resposta e chamada de API
Protocolo
As funções da API estão disponíveis apenas no protocolo HTTPS (SSL)
PHP SDK
Você pode usar nosso SDK
Autorização
Para autorização, para cada solicitação, passe a chave secreta como o parâmetro-chave da POST-solicitação.
Ação
A ação é passada como um parâmetro de ação da POST-solicitação.
Parâmetros de ação
Os parâmetros para a ação são passados no formato JSON codificado em base64 no parâmetro params da solicitação POST
Observação
A importação ou exportação de usuários por API está disponível apenas nos planos pagos do GetCourse. Na tarifa de avaliação, essa funcionalidade está fechada.
Formato de resposta
A resposta é retornada no formato JSON:
{ "success":"true/false", // resultado da chamada "action":"ação provocada", "result":{ "deal_id":"id de pedido unico", "deal_number":"numero do pedido", "success":"true/false", // resultado da ação "user_id":"id do usuario", "user_status":"status do usuario", "payment_link":"link para a pagina de pagamento", "error_message":"mensagem sobre erro", "error":"true/false", // presença de erros } }
Importação de usuário
O método destina-se à importação de dados, não ao gerenciamento operacional de objetos!
A importação do usuário está localizada em:
https://{account_name}.getcour...
Para adicionar um usuário, você precisa passar uma ação add, chave secreta e parâmetros do usuário adicionado:
curl -i -H "Accept: application/json; q=1.0, */*; q=0.1" "https://{account_name}.getcourse.com.br/pl/api/users" ;-d "action=add&key={secret_key}&parаms={params}"
Parâmetros do usuário:
base64_encode { "user":{ "email":"email", "phone":"telefone", "first_name":"nome", "last_name":"sobrenome", "city":"cidade", "country":"país", "group_name":[ // para adicionar usuarios no grupo "Grupo1", // adição simples a grupos ["Grupo2", "2018-08-01 21:21"], // adicionando ao grupo indicando um momento arbitrário ["Grupo4", "2018-08-02"] ], "addfields":{"Camp.adic1":"valor","Camp.adic2":"valor"} // para adicionar campos adicionais de usuário }, "system":{ "refresh_if_exists":0, // se deve atualizar um usuário existente 1/0 sim/nao "partner_email":"e-mail de afiliado (para usuário)*" }, "session":{ "utm_source":"", "utm_medium":"", "utm_content":"", "utm_campaign":"", "utm_group":"", "gcpc":"", "gcao":"", "referer":"" } }
Se não houver nenhum usuário com o e-mail especificado no sistema — um novo usuário será criado.
Se o usuário existir e system.refresh_if_exists == 1 — os dados do usuário serão atualizados e a lista de seus grupos será complementada com os grupos especificados no parâmetro user.group_name. Se este sinalizador não for definido, nenhum dado do usuário será alterado.
Os dados do objeto de sessão serão capturados como os novos parâmetros de registro do usuário. Se os dados estiverem sendo atualizados (apenas com system.refresh_if_exists == 1), os anteriores serão substituídos.
Você pode definir um afiliado para um usuário de duas maneiras diferentes:
a) usando o parâmetro system.partner_email;
b) usando o parâmetro session.gcpc (tem maior prioridade).
Se o afiliado especificado para o usuário criado/atualizado existir, o usuário no sistema será marcado como uma referência deste parceiro.
Se o usuário afiliado não existe — um erro será acontecerá.
Se um usuário afiliado existir, mas não for um afiliado, o usuário especificado receberá automaticamente o status de afiliado.
Gerenciamento de grupo de usuários
O método destina-se à importação de dados, não ao gerenciamento operacional de objetos!
A importação de informações sobre grupos de usuários está localizada em:
https://{account_name}.getcourse.com.br/pl/api/users
Para atualizar as informações do grupo do usuário, você deve passar a ação update, a chave secreta e as configurações do usuário:
Parâmetros do usuário:
base64_encode { "user":{ "id":"id do usuario", "group_name": ["Grupo 1", "Grupo 2"] // lista de grupo } }
Como resultado da execução da consulta, o usuário será membro de todos os grupos especificados na lista group_name. Se o usuário foi anteriormente um membro de algum grupo não especificado em group_name — ele será removido desses grupos.
Pedido de importação (transação)
O método destina-se à importação de dados, não ao gerenciamento operacional de objetos!
A importação da transação está localizada em:
https://{account_name}.getcourse.com.br/pl/api/deals
Para adicionar uma oferta, você precisa passar a ação add, a chave secreta, os parâmetros da oferta, os parâmetros do usuário para quem a oferta está sendo criada:
curl -i -H "Accept: application/json; q=1.0, */*; q=0.1" "https://{account_name}.getcourse.com.br/pl/api/deals" -data "action=add&key={secret_key}&params={params}"
base64_encode { "user":{ // como na importação do usuário }, "system":{ "refresh_if_exists":0, // se deve atualizar um usuário existente 1/0 sim/nao "partner_email":"e-mail do afiliado (para usuário)*", "multiple_offers":0, // adicionar várias ofertas ao pedido 1/0 "return_payment_link":0, // retornar link de pagamento 1/0 "return_deal_number":0 // retornar o número da ordem 1/0 }, "session":{ // como na importação do usuário }, "deal":{ "deal_number":"número do pedido", "offer_code":"código de oferta único", "product_title":"nome da oferta", "product_description":"descrição da oferta", "quantity":1, // quantidade "deal_cost":"preço do pedido", "deal_status":"código de status do pedido", "deal_is_paid":"pago sim/nao", "manager_email":"email do gerente", "deal_created_at":"data do pedido", "deal_finished_at":"data de pagamento/conclusão do pedido", "deal_comment":"comentário", "payment_type":"tipo de pagamento da lista", "payment_status":"status de pagamento da lista", "partner_email":"email do afiliado (para o pedido)", "addfields":{"Camp.adic1":"valor","Camp.adic2":"valor"}, // para adicionar mais campos de pedido "deal_currency":"código de moeda do pedido" // por exemplo, "EUR", o parâmetro é opcional se não for usado na solicitação - a moeda do pedido será em rublos (RUB) } }
Para importar uma oferta, um usuário deve existir — proprietário da transação.
Se o usuário passado não existir — ele é criado.
Se houver um usuário com o e-mail especificado, ele será usado como o proprietário do pedido.
Se o parâmetro system.refresh_if_exists == 1 E o usuário existir, então seus dados serão atualizados da mesma forma que a operação de importação do usuário (exceto para o objeto de sessão - veja abaixo)
Ao importar uma oferta, é verificado se existe uma oferta com o número especificado.
Dependendo disso, uma nova oferta é criada ou uma existente é atualizada.
Se o sinalizador system.multiple_offers == 1 e um pedido existente for atualizado, as posições transferidas na negociação serão adicionadas às existentes, em vez de substituí-las.
O parâmetro system.refresh_if_exists não tem efeito na criação / atualização de um negócio (este parâmetro é usado apenas para usuários!).
O objeto session ao importar uma transação contém parâmetros UTM que são capturados como contexto de criação de ordem.
Além disso, se um novo usuário for criado ao importar uma transação, o objeto session será usado da mesma forma que o contexto de registro do usuário. No entanto, ao atualizar os dados do usuário ao importar uma transação, o objeto session é usado apenas para a transação, não para o usuário.
O pedido pode ter uma referência a um afiliado diferente do afiliado do usuário. Um parceiro de pedido pode ser instalado de duas maneiras:
a) usando o parâmetro deal.partner_email;
b) usando o parâmetro session.gcpc (tem maior prioridade).
Se o afiliado especificado para a transação existir, esse parceiro será definido para ela.
Se o usuário afiliado não existe — um erro será retornado.
Se um usuário afiliado existir, mas não for um, o usuário especificado receberá automaticamente o status de afiliado.
Atenção:
1. Os parâmetros mínimos necessários para criar um novo pedido são:
- código de oferta exclusivo * ou nome da oferta
- preço do pedido
- e-mail do usuário
Para editar um pedido existente — os mesmos parâmetros, mas também:
- número do pedido
- parâmetro refresh_if_exists = 1
* - localizado nas configurações da oferta necessária:
Alterar o status de um pedido (transação)
O status do pedido pode ser alterado em:
https://{account_name}.getcourse.com.br/pl/api/deals
Para alterar o status da transação, você deve passar a ação add, a chave secreta e o seguinte conjunto de parâmetros da transação e do Usuário:
base64_encode { "user":{ "email":"email@yopmail.com" }, "deal":{ "deal_number":"13667463", "deal_status":"new" } }
Códigos de status do pedido (deal_status)
- new
- payed
- cancelled
- false
- in_work
- payment_waiting
- part_payed
- waiting_for_return
- not_confirmed
- pending
Códigos de status de pagamento (payment_status)
- expected
- accepted
- returned
- tobalance
- frombalance
- returned_to_balance
Códigos de método de pagamento (payment_type)
- 2CO — 2Checkout
- BILL — Pagamentos sem cash/especie
- CARD — Por cartão
- CARD_TERMINAL — Cartão bancário através do terminal
- CASH — Dinheiro em especie
- cloud_payments — CloudPayments
- fondy — Fondy
- OTHER — Outro
- payanyway — PayAnyWay
- PAYPAL — PayPal
- perfect_money — Perfect Money
- PERFECTMONEY — Perfect Money
- ebanx — EBANX
Códigos de moeda
- RUB
- USD
- EUR
- GBP
- BYR
- BYN
- KZT
- UAH
- AUD
- DKK
- CHF
- SEK
- ZAR
- AMD
- RON
- BRL
- ILS
Atenção: Ao criar um pedido via API por compra para este pedido não é criado em modo automático, portanto, não são emitidos direitos de acesso ao treinamento/grupo para o usuário.
Recomendamos transferir pedidos para uma conta com o status "Em andamento" e, em seguida, usar o configurado processo para transferir automaticamente tal pedido para o status "Concluído". Depois disso, será criada uma compra para o pedido, o acesso será emitido.
Exemplo de adição de um usuário (PHP):
<?php $accountName = 'XXXXXX'; $secretKey = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; $user = [ ] ; $user['user']['email'] = 'xxxxx@xxxxx.xxx'; $user['user']['phone'] = '+554951234567'; $user['user']['first_name'] = 'Carlos'; $user['user']['last_name'] = 'Silva'; $user['user']['city' ] = 'Manaus'; $user['user']['country'] = 'Brasil'; $user['user']['group_name'] = ['Grupo1', 'Grupo2']; $user['system']['refresh_if_exists'] = 1; $json = json_encode($user); $base64 = base64_encode($json); if($curl = curl_init()){ curl_setopt($curl, CURLOPT_URL, 'https://' . $accountName . '.getcourse.com.br/pl/api/users'); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true) ; curl_setopt($curl, CURLOPT_POST, true ) ; curl_setopt($curl, CURLOPT_POSTFIELDS, 'action=add&key=' . $secretKey . 'params=' . $base64); $out=curl_exec($curl); echo$out; curl_close($curl); } else { echo'Failed initialization'; } ?>
Export API
A API de exportação é projetada para baixar dados periodicamente do GetCourse para análise.
GetCourse apenas fornece dados e não afeta a capacidade de processar esses dados em sistemas externos.
A API de exportação não se destina à transferência de dados online separadamente para cada objeto.
Localizado em https://account_name.getcourse.com.br/pl/api/account
Quais dados podem ser baixados via API
A estrutura de dados para cada objeto corresponde ao que é exportado para CSV usando a interface de exportação nas seções relevantes
Atenção:
— A exportação da API é realizada em um fluxo, ou seja, a capacidade de processar uma solicitação para gerar um novo arquivo de exportação não é fornecida até que a geração do arquivo de exportação seja concluída pela solicitação anterior;
— em uma conta, no máximo 100 solicitações relacionadas aos métodos de exportação da API podem ser processadas em 2 horas.
Exportando usuários
Para obter os dados você precisa:
1. Enviar ação users, chave secreta e pelo menos um filtro de objeto para exportação:
"https://{account_name}.getcourse.com.br/pl/api/account/users?key={secret_key}&...."
Em vez de: "...." as opções de filtro necessárias são adicionadas.
Esta ação inicia a tarefa de coleta de dados e retorna a chave de exportação, que você precisará para verificar o status de prontidão e obter os dados.
2. Enviar ação exports, chave de exportação e chave secreta:
«https://{account_name}.getcourse.com.br/pl/api/account/exports/{export_id}?key={secret_key}»
Esta ação verifica o status de pronto e retorna um fluxo de dados em formato de texto (UTF-8 sem BOM).
Opções de filtro:
- Data de criação do usuário
- created_at[from]=YYYY-MM-DD
- created_at[to]=YYYY-MM-DD
- Status do usuário
- status=active/in_base
Para obter uma lista de todos os grupos de usuários, você precisa enviar a ação de grupos e a chave secreta:
«https://{account_name}.getcourse.com.br/pl/api/account/groups?key={secret_key}»
Conhecendo o ID do grupo, você pode usá-lo ao enviar uma solicitação de coleta de dados para exportar usuários no formato:
"https://{account_name}.getcourse.com.br/pl/api/account/groups/{ID}/users?key={secret_key}&...."
Em vez de: "....", pelo menos um dos parâmetros do filtro é adicionado (veja acima).
Esta ação inicia a tarefa de coleta de dados e retorna a chave de exportação, que você precisará para verificar o status de prontidão e obter os dados.
Opções de filtro:
- Data de criação do usuário
- created_at[from]=YYYY-MM-DD
- created_at[to]=YYYY-MM-DD
- Status do usuário
- status=active/in_base
- Data que foi adicionada ao grupo (adição ao filtro group_id)
- added_at[from]=YYYY-MM-DD
- added_at[to]=YYYY-MM-DD
Você pode ver a lista de campos exportados neste artigo.
Pedidos de exportação
Para obter os dados você precisa:
1. Enviar ação deals, chave secreta e pelo menos um filtro de objeto para exportação
"https://{account_name}.getcourse.com.br/pl/api/account/deals?key={secret_key}&...."
Em vez de "...." as opções de filtro necessárias são adicionadas.
Esta ação inicia a tarefa de coleta de dados e retorna a chave de exportação, que você precisará para verificar o status de prontidão e obter os dados.
2. Enviar a ação de exportação, chave de exportação e chave privada:
«https://{account_name}.getcourse.com.br/pl/api/account/exports/{export_id}?key={secret_key}»
Esta ação verifica o status de pronto e retorna um fluxo de dados em formato de texto (UTF-8 sem BOM).
Opções de filtro:
- Data de criação do pedido
- created_at[from]=YYYY-MM-DD
- created_at[to]=YYYY-MM-DD
- Status do pedido
- status=deal_status
- Data de pagamento do pedido
payed_at[from]=YYYY-MM-DD
payed_at[to]=YYYY-MM-DD
- Data de conclusão do pedido
- finished_at[from]=YYYY-MM-DD
- finished_at[to]=YYYY-MM-DD
- Data de alteração do status do pedido
- status_changed_at[from]=YYYY-MM-DD
- status_changed_at[to]=YYYY-MM-DD
Lista de possíveis status de pedidos:
- new
- payed
- cancelled
- in_work
- payment_waiting
- part_payed
- waiting_for_return
- not_confirmed
- pending
Exportar pagamentos
Para obter os dados você precisa:
1. Enviar ação payments, chave secreta e pelo menos um filtro de objeto para exportação
"https://{account_name}.getcourse.com.br/pl/api/account/payments?key={secret_key}&...."
Em vez de "...."as opções de filtro necessárias são adicionadas.
Esta ação inicia a tarefa de coleta de dados e retorna a chave de exportação, que você precisará para verificar o status de prontidão e obter os dados.
2. Enviar ação exports, chave de exportação e chave secreta:
«https://{account_name}.getcourse.com.br/pl/api/account/exports/{export_id}?key={secret_key}»
Esta ação verifica o status de pronto e retorna um fluxo de dados em formato de texto (UTF-8 sem BOM).
Opções de filtro:
- Data da criação de pagamentos
- created_at[from]=YYYY-MM-DD
- created_at[to]=YYYY-MM-DD
- Status do pagamento
- status=deal_status
- Data de alteração do status de pagamento
status_changed_at[from]=YYYY-MM-DD
status_changed_at[to]=YYYY-MM-DD
Lista de possíveis status de pagamento:
- expected
- accepted
- returned
- tobalance
- frombalance
- returned_to_balance
Você pode ver a lista de campos exportados neste artigo.
Obter diretórios de campos de usuário adicionais e campos de pedido adicionais
Localizado em
https://{account_name}.getcourse.com.br/pl/api/account/fields
Para obter uma lista de campos, você deve passar a ação key (chave secreta da API da conta) e action (deve ser especificado como "Get"):
curl -i -H «Accept: application/json; q=1.0, */*; q=0.1» «https://{account_name}.getcourse.com.br/pl/api/account/fields» -d «action=get&key={secret_key}»
Atenção: se a sua conta estiver configurada para forçar o redirecionamento do endereço do sistema da conta "your_account.getcourse.com.br" por domínio adicionado "your_domain.br" e você deseja usar métodos de API no formato cURL — precisa usar um domínio "your_domain.br" em vez de "your_account.getcourse.com.br" no endereço em que a solicitação ocorre.