Get Started

O Ally fornece uma API simples e poderosa em REST para integrar a busca de cursos em seu site ou aplicação.

A URL Base da API é

              
            

Configuração

Todas as requisições devem usar o schema https por questões de segurança.
A API aceita apenas o formato JSON, sendo assim todas as requisições usam content type application/json.
Utilizamos as seguintes convenções nesta documentação:

Convenção de Requisições

Convenção Descrição
:variable Indica o nome de uma variável que precisa ser substituída em uma URL.
#{variable} Indica o nome de uma variável que precisa ser substituída por valores da sua conta.
... Indica o conteúdo da resposta de uma requisição, que foi truncado para facilitar a leitura da documentação.
$ALLY_TOKEN Indica o Token de Acesso

Códigos de Retorno

A API retorna os códigos de resposta HTTP. Estas são as informações mais relevantes:

Código Descrição
200 OK A chamada foi bem sucedida
400 Bad Request A requisição é inválida, em geral conteúdo mal formado
401 Unauthorized O usuário e senha ou token de acesso são inválidos
403 Forbidden O acesso à API está bloqueado ou o usuário está bloqueado
404 Not Found O endereço acessado não existe
422 Unprocessable Entity A requisição é válida, mas os dados passados não são válidos
429 Too Many Requests O usuário atingiu o limite de requisições
500 Internal Server Error Houve um erro interno do servidor ao processar a requisição

Segurança

Toda requisição realizada através da API deve utilizar o protocolo HTTPS pois estará passando informações de autenticação no cabeçalho da requisição.

As requisições realizadas na porta 80, serão automaticamente redirecionadas para a porta 443. Esta medida garante que nenhuma requisição realizada na API estará fora do protocolo seguro.

Todas as requisições realizadas nos servidores Ally serão criptografadas.


Autenticação

Basic Auth

Basic Authentication permite conectar APIs ao Ally fazendo a autenticação de usuários com um username e password. Para isso, o Ally inclui o nome e a senha do usuário, criptografados em base64, nos headers de todas as requisições feitas para a API.

              
                Basic < Base64 encoded username and password >
              
            

Estudantes

Recurso Descrição
GET /api/v1/student Lista paginada de estudantes

Parâmetros

Parâmetro Obrigatório Tipo Tamanho Descrição
page Não Integer - Número da página
likeQuery Não String 120 Filtra os estudantes que contenham a string informada em name, surname, email, code, phone1 ou phone2
Exemplo de resposta
              
                {
                   "total":4,
                   "per_page":20,
                   "current_page":1,
                   "last_page":1,
                   "next_page_url":null,
                   "prev_page_url":null,
                   "from":1,
                   "to":20,
                   "data":[
                    {
                     "id":4555,
                     "code":500,
                     "name":"Primeira",
                     "surname":"Pessoa",
                     "fullName":"Primeira Pessoa",
                     "email":"primeira@pessoa.com",
                     "phone1":"99999999999",
                     "phone2":"88888888888",
                    },
                    {
                     "id":4556,
                     "code":501,
                     "name":"Segunda",
                     "surname":"Pessoa",
                     "fullName":"Segunda Pessoa",
                     "email":"segunda@pessoa.com",
                     "phone1":"99999999999",
                     "phone2":"88888888888",
                    },
                    {
                     "id":4557,
                     "code":502,
                     "name":"Terceira",
                     "surname":"Pessoa",
                     "fullName":"Terceira Pessoa",
                     "email":"terceira@pessoa.com",
                     "phone1":"99999999999",
                     "phone2":"88888888888",
                    },
                    {
                     "id":4558,
                     "code":503,
                     "name":"Quarta",
                     "surname":"Pessoa",
                     "fullName":"Quarta Pessoa",
                     "email":"quarta@pessoa.com",
                     "phone1":"99999999999",
                     "phone2":"88888888888",
                    },
                   ]
                }
              
            

Recurso Descrição
GET /api/v1/student/:id Busca por um estudante específico

Parâmetros

Parâmetro Obrigatório Tipo Tamanho Descrição
:id Sim Integer - ID do Estudante
Exemplo de resposta
              
                {
                   "id":4555,
                   "code":500,
                   "name":"Primeira",
                   "surname":"Pessoa",
                   "fullName":"Primeira Pessoa",
                   "email":"primeira@pessoa.com",
                   "phone1":"99999999999",
                   "phone2":"88888888888",
                }
              
            

Pastas

Recurso Descrição
GET /api/v1/folder Lista de pastas

Parâmetros

Parâmetro Obrigatório Tipo Tamanho Descrição
student_id Sim Integer - ID do Estudante
likeQuery Não String 120 Filtra as pastas pelo name
Exemplo de resposta
              
                [
                   {
                    "id":37,
                    "name":"home",
                    "parent":null
                   },
                   {
                    "id":100,
                    "name":"Contratos",
                    "parent":{
                     "id":37,
                     "name":"home"
                    }
                   },
                   {
                    "id":101,
                    "name":"Fotos",
                    "parent":{
                     "id":100,
                     "name":"Contratos"
                    }
                   }
                ]
              
            

Arquivos

Recurso Descrição
GET /api/v1/file Lista de arquivos

Parâmetros

Parâmetro Obrigatório Tipo Tamanho Descrição
student_id Sim Integer - ID do Estudante
likeQuery Não String 120 Filtra os arquivos pelo name
Exemplo de resposta
              
                [
                   {
                    "id":33,
                    "name":"exemplo_de_arquivo.png",
                    "folder_id":37,
                    "folder_name":"home",
                    "link":"https:\/\/s3.us-east-2.amazonaws.com\/student-docs\/1521211178.exemplo_de_arquivo.png",
                    "student_id":111
                   },
                   {
                    "id":34,
                    "name":"exemplo_de_arquivo_2.pdf",
                    "folder_id":37,
                    "folder_name":"home",
                    "link":"https:\/\/s3.us-east-2.amazonaws.com\/student-docs\/1521211178.exemplo_de_arquivo_2.pdf",
                    "student_id":111
                   }
                ]
              
            

Recurso Descrição
GET /api/v1/file/:id Busca por um arquivo específico

Parâmetros

Parâmetro Obrigatório Tipo Tamanho Descrição
:id Sim Integer - ID do Arquivo
student_id Sim Integer - ID do Estudante
Exemplo de resposta
              
                {
                    "id":33,
                    "name":"exemplo_de_arquivo.png",
                    "folder_id":37,
                    "folder_name":"home",
                    "link":"https:\/\/s3.us-east-2.amazonaws.com\/student-docs\/1521211178.exemplo_de_arquivo.png",
                    "student_id":111
                }
              
            

Recurso Descrição
POST /api/v1/file Fazer upload de arquivo

Parâmetros

Parâmetro Obrigatório Tipo Tamanho Descrição
student_id Sim Integer - ID do Estudante
folder_id Sim Integer - ID da Pasta
file Sim File 20MB Arquivo selecionado (máx. 20MB)

Caso o arquivo já exista (nomes idênticos) a api irá retornar:

              
                {
                  "error":"File Duplicated"
                }
              
            

Recurso Descrição
DELETE /api/v1/file/:id Excluir um arquivo

Parâmetros

Parâmetro Obrigatório Tipo Tamanho Descrição
:id Sim Integer - ID do Arquivo

Cidades

Recurso Descrição
GET /api/v1/city Lista de cidades

Parâmetros

Parâmetro Obrigatório Tipo Tamanho Descrição
name Não String 120 Nome
Exemplo de resposta
              
                [
                    {
                        "id":1,
                        "code":"ee3107c2c20ba41fb6f435804b9b1b6f499f56d5",
                        "name":"Amparo, State of S\u00e3o Paulo, Brazil",
                        "country_code":"BR"
                    },
                    {
                      "id":2,
                        "code":"109dda35f4c11b490051baeae7f7474f51697ab0",
                        "name":"Brisbane, Queensland, Australia",
                        "country_code":"AU"
                    }
                  ]
              
            

Países

Recurso Descrição
GET /api/v1/country Lista de países

Parâmetros

Parâmetro Obrigatório Tipo Tamanho Descrição
name Não String 120 Nome
code Não String 2 ISO-3166 Country Alpha-2 Code
Exemplo de resposta
              
                [
                    {
                        "id":1,
                        "code":"AU",
                        "name":"Australia",
                    },
                    {
                      "id":2,
                      "code":"BR"
                        "name":"Brazil",
                    }
                  ]
              
            

Nacionalidades

Recurso Descrição
GET /api/v1/nationality Lista de nacionalidades

Parâmetros

Parâmetro Obrigatório Tipo Tamanho Descrição
country Não String 120 País
nationality Não String 255 ISO-3166 Country
Exemplo de resposta
              
                [
                    {
                        "country":"Australia",
                        "nationality":"Australian",
                        "flag":"Australia.png",
                    },
                    {
                        "country":"Brazil",
                        "nationality":"Brazilian",
                        "flag":"Brazil.png",
                    }
                  ]
              
            

Escolas

Recurso Descrição
GET /api/v1/school Lista de escolas

Parâmetros

Parâmetro Obrigatório Tipo Tamanho Descrição
city_id Não Number id da cidade
country_code Não Number 2 ISO-3166 Country Alpha-2 Code
name Não String 255 Nome
lat Não String 55 geolocation latitude?
lon Não String 55 geolocation longitude?
Exemplo de resposta
              
                [
                    {
                        "id":1,
                        "name":"SELC - English Language Centres",
                    },
                    {
                        "id":2,
                        "name":"Embassy English",
                    }
                  ]
              
            

Cursos

Recurso Descrição
GET /api/v1/course Lista de cursos

Parâmetros

Parâmetro Obrigatório Tipo Tamanho Descrição
page Não Number Número da página
per_page Não Number Quantidade de resultados por página
country Sim String 255 Nome do país da Nacionalidade do Estudante
school_city_id Não Number id da cidade destino
school_country_code Não String 2 código do país destino
course_name Não String 255 nome do curso
school_id Não Number id da escola
enrolDate Não String 20 data de matrícula
filterValue Não Boolean Usar Filtro de valores (1,0)
fromValue Não Float Valor mínimo
toValue Não Float Valor máximo
duration Não Number quantidade em duração (período estudado)
durationType Não String tipo da quantidade (day, week, month, year) (período estudado)
workload Não String Carga horária (basic, standard, intensive, semi-intensive, super-intensive)
durationInt Não String Carga Horária por Semana
durationDic Não String Tipo da Carga Horária por Semana (hours || lessons)
category_id Não Number Veja abaixo
class_period Não Number Veja abaixo
CATEGORIAS : category_id
              
                'Language Program' = 1
                'Exam Preparation' = 2
                'Professional Qualification' = 3
                'High School' = 4
                'Package' = 5
                'Kids & Junior & Teen' = 6
                'Offshore' = 7
                'Onshore' = 8
                'Work & Study' = 9
                'Volunteer Experience' = 10
              
            

HORÁRIO DE AULA : class_period
              
                - AM || Morning = 1
                - PM || Afternoon = 2
                - Evening || Night = 3
                - Full-Time || Full Time = 4
                - Part-Time || Part Time = 5
              
            
Exemplo de resposta
              
                [
                  {
                    "id":413040,
                    "courseCampus_id":147328,
                    "startDate":"2019-07-10",
                    "endDate":"2019-11-01",
                    "duration":6,
                    "price":
                    {
                      "account_id":455,
                      "base_id":200996,
                      "begin":1,
                      "default_id":null,
                      "end":6,
                      "enrollmentValue":0,
                      "fixed":0,
                      "group":
                      {
                        "code":"LAT",
                        "name":"Latin Americans",
                        "public":1,
                        "account_id":1,
                        "country":
                        [
                          {
                            "code":"GT",
                            "name":"Guatemala"
                          },
                          {
                            "code":"BZ",
                            "name":"Belize"
                          },
                          {
                            "code":"SD",
                            "name":"Sudan"
                          },
                          {
                            "code":"NI",
                            "name":"Nicaragua"
                          },
                          {
                            "code":"CO",
                            "name":"Colombia"
                          },
                          {
                            "code":"VE",
                            "name":"Venezuela"
                          },
                          {
                            "code":"GF",
                            "name":"French Guiana"
                          },
                          {
                            "code":"SR",
                            "name":"Suriname"
                          },
                          {
                            "code":"EC",
                            "name":"Ecuador"
                          },
                          {
                            "code":"PE",
                            "name":"Peru"
                          },
                          {
                            "code":"BO",
                            "name":"Bolivia"
                          },
                          {
                            "code":"PY",
                            "name":"Paraguay"
                          },
                          {
                            "code":"CL",
                            "name":"Chile"
                          },
                          {
                            "code":"UY",
                            "name":"Uruguay"
                          },
                          {
                            "code":"AR",
                            "name":"Argentina"
                          },
                          {
                            "code":"BR",
                            "name":"Brazil"
                          },
                          {
                            "code":"MX",
                            "name":"Mexico"
                          }
                        ]
                      },
                      "group_code":"LAT",
                      "id":14505545,
                      "materialFixed":1,
                      "materialValue":60,
                      "periodType":"week",
                      "priority":null,
                      "type":1,
                      "date":null,
                      "value":235,
                      "sumMaterialValue":60
                    },
                    "specialrate":[],
                    "materialActive":"yes",
                    "enrolActive":"no",
                    "sumThisValue":1470,
                    "onlyCourse":1410,
                    "onlyEnrol":0,
                    "onlyMaterial":60,
                    "totalThisCourse":
                    {
                      "currency":"AU$",
                      "value":1470,
                      "onlyCourse":1410,
                      "onlyMaterial":60,
                      "onlyEnrol":0
                    },
                    "course":
                    {
                      "id":147328,
                      "hasSR":0,
                      "startDate":"2019-01-01",
                      "dueDate":"2019-12-31",
                      "description":null,
                      "descriptionCourse":null,
                      "course_id":138960,
                      "campus_id":5022,
                      "reviewed_at":null,
                      "checked_at":"2019-01-21 13:26:23",
                      "account_id":null,
                      "published":1,
                      "course":
                      {
                        "id":138960,
                        "name":"GE Semi-Intensive 18 lessons\/wk",
                        "periodDic":5,
                        "typeDic":null,
                        "package":null,
                        "deleted_at":null,
                        "created_at":"2019-01-14 19:26:51",
                        "updated_at":"2019-01-14 19:26:51",
                        "courseinfo":null,
                        "category":
                        [
                          {
                            "course_id":138960,
                            "typeDic":1,
                            "type_dic":
                            {
                              "id":1,
                              "name":"Language Program"
                            }
                          }
                        ]
                        ,
                      },
                      "campus":
                      {
                        "id":5022,
                        "name":"MIILA Montreal",
                        "school_id":1887,
                        "email":"info@miila.ca",
                        "phone":"(514) 509-4242",
                        "address":"8255 Mountain Sights \u2013 Suite 150\n Montreal, Quebec\nH4P 2B5 CANADA",
                        "city_id":82,
                        "currency_code":"CAD",
                        "updated_at":"2019-06-14 19:07:28",
                        "site":"http:\/\/miila.ca\/",
                        "youtube":"https:\/\/www.youtube.com\/watch?v=5vfWF2GPWEw",
                        "description":"Opening hours:\nMonday to Friday \u2013 9:00 am to 6:00 pm \n(EST \u2013 Eastern Standard Time)\n\nClosest subway stations:\nDe La Savane (orange line)",
                        "description_pt":"Hor\u00e1rio de Funcionamento:\nSegunda a sexta-feira - 9:00 am a 6:00 pm\n(EST \u2013 Eastern Standard Time)\n\nEsta\u00e7\u00f5es de metr\u00f4 mais pr\u00f3ximas:\nDe La Savane (linha laranja)",
                        "description_es":"Horas de Oficina:\nLunes a viernes - 9:00 am a 6:00 pm\n(EST \u2013 Eastern Standard Time)\n\nEstaciones de metro m\u00e1s cercanas:\nDe La Savane (l\u00ednea laranja)",
                        "city":
                        {
                          "id":82,
                          "code":"64f76606728b9536f3b6f03703a296affd47ca6c",
                          "name":"Montreal, QC, Canada",
                          "country_code":"CA",
                          "created_at":"2016-04-28 10:44:07",
                          "updated_at":"2016-04-28 10:44:07",
                          "country":
                          {
                            "code":"CA",
                            "name":"Canada",
                            "nationality":
                            {
                              "country":"Canada",
                              "nationality":"Canadian",
                              "flag":"Canada.png"
                            }
                          }
                        },
                        "currency":
                        {
                          "code":"CAD",
                          "symbol":"CA$",
                          "name":"Canadian Dollar"
                        },
                        "holidays":[],
                        "campusinfo":null,
                        "mix":[],
                        "facilities":
                        [
                          {
                            "id":3020,
                            "campusfacilityDic":9,
                            "campus_id":5022,
                            "facility":
                            {
                              "id":9,
                              "name":"Wi-Fi",
                              "icon":"fa-wifi"
                            }
                          },
                          {
                            "id":3021,
                            "campusfacilityDic":10,
                            "campus_id":5022,
                            "facility":
                            {
                              "id":10,
                              "name":"Garden \/ Lounge",
                              "icon":"fa-tree"
                            }
                          },
                          {
                            "id":3022,
                            "campusfacilityDic":4,
                            "campus_id":5022,
                            "facility":
                            {
                              "id":4,
                              "name":"Kitchen",
                              "icon":"fa-cutlery"
                            }
                          },
                          {
                            "id":3023,
                            "campusfacilityDic":7,
                            "campus_id":5022,
                            "facility":
                            {
                              "id":7,
                              "name":"Computer lab",
                              "icon":"fa-laptop"
                            }
                          }
                        ]
                        ,
                        "schoolinfo":
                        {
                          "id":1887,
                          "name":"MIILA - Montreal International Institute of Language Arts",
                          "published":1,
                          "deleted_at":null,
                          "created_at":"0000-00-00 00:00:00",
                          "updated_at":"2019-06-14 19:07:28",
                          "account_id":1,
                          "bannerUrl":"https:\/\/s3.amazonaws.com\/schools-price-lists\/1547493318.jpg",
                          "description":"A one-of-a-kind language school which effort\u00adlessly com\u00adbines a dynamic learning envi\u00adron\u00adment, a friendly and wel\u00adcom\u00ading atmos\u00adphere and modern facilities.",
                          "description_pt":"Uma escola de idiomas \u00fanica que combina facilmente um ambiente din\u00e2mico de aprendizado, uma atmosfera amig\u00e1vel e acolhedora e instala\u00e7\u00f5es modernas.",
                          "description_es":"Una escuela de idiomas \u00fanica en su clase que combina sin esfuerzo un entorno de aprendizaje din\u00e1mico, un ambiente agradable y acogedor e instalaciones modernas."
                        }
                      }
                    }
                  }
                ]
              
            

Agências

Recurso Descrição
GET /api/v1/agency Lista de agências

Parâmetros

Parâmetro Obrigatório Tipo Tamanho Descrição
city_id Não Number id da cidade
country_code Não Number 2 ISO-3166 Country Alpha-2 Code
name Não String 255 Nome
lat Não String 55 geolocation latitude?
lon Não String 55 geolocation longitude?
Exemplo de resposta
              
                [
                    {
                        "id":1,
                        "name":"Agencia Teste 1",
                        "country_code":"BR",
                        "lat": 39.0438,
                        "lon": -77.4874
                    },
                    {
                        "id":2,
                        "name":"Agencia Teste 2",
                        "country_code":"AU",
                        "lat": 39.0438,
                        "lon": -77.4874
                    }
                  ]
              
            

Changelog


v1.0

15/07/2019
  • First Commit
  • Basic Documentation