Artigos sobre: Integrações e Desenvolvedores

Definições da API - Privada V1 (LEGADA)


Introdução


Neste artigo você poderá encontrar a estrutura da API da sua plataforma disponível a partir do plano Business.
A API utiliza arquitetura RESTful (representational state transfer).


Autenticação


A autenticação deve ser feita utilizando o APP_ID **e **API_KEY **que podem ser geradas pela página **API em Configurações ("Configurações" -> "API")


Esses parâmetros devem ser informados no HEADER da requisição, no seguinte formato:


HEADER = {
Content-Type: application/json,
app-id: "LTHDT9EQIU5PXFDR2WLLER93TCISZYXR",
api-key: "ZULoIPoY9wqYV5EpuFDUfKsdGJnRyGPD"
}


Endpoints


Os endpoints da API utilizam o EAD_ID, que também pode ser encontrado na página API, junto com o APP_ID ** e **API_KEY.
O endpoint base é: https ://<EAD_ID>.ead.guru/api/v1
A API v1 possui 3 endpoints:


Usuários


https://{EAD_ID}.ead.guru/api/v1/users/


Cursos


https://{EAD_ID}.ead.guru/api/v1/courses/


Matrículas


https://{EAD_ID}.ead.guru/api/v1/enrols/


Usuários


Listar usuários


GET /api/v1/users/


Parâmetros:
      page (opcional): integer
      is_active (opcional): boolean
      suspended (opcional): boolean
      admin (opcional): boolean
      teacher (opcional): boolean


  Exemplo de requisição:


curl --request GET \
  --url 'https://EAD_ID.ead.guru/api/v1/users/?page=1&is_active=true' \
  --header 'api-key: ZULoIPoY9wqYV5EpuFDUfKsdGJnRyGPD' \
  --header 'app-id: LTHDT9EQIU5PXFDR2WLLER93TCISZYXR'


Exemplo de resposta:


{
  "success": true,
  "current_page": 1,
  "total_entries": 2,
  "total_pages": 1,
  "data": [
    {
      "id": 1,
      "username": "joao_silva",
      "first_name": "João",
      "last_name": "Silva",
      "email": "joao@mail.com",
      "date_joined": "2020-04-01T12:30:00.00001-03:00"
    },
    {
      "id": 2,
      "username": "jose_silva",
      "first_name": "José",
      "last_name": "da Silva",
      "email": "jose@mail.com",
      "date_joined": "2020-04-02T12:30:00.00001-03:00"
    }
}


Detalhes de um usuário


GET /api/v1/users/<id>/


Parâmetros PATH:
      **id*** (obrigatório): integer


Exemplo de requisição:


curl --request GET \
  --url https://EAD_ID.ead.guru/api/v1/users/2/ \
  --header 'api-key: ZULoIPoY9wqYV5EpuFDUfKsdGJnRyGPD' \
  --header 'app-id: LTHDT9EQIU5PXFDR2WLLER93TCISZYXR'


Exemplo de resposta:


{
  "success": true,
  "data": {
    "id": 2,
    "username": "jose_silva",
    "first_name": "José",
    "last_name": "da Silva",
    "email": "jose@mail.com",
    "last_login": "2020-04-10T13:38:21.29377-03:00",
    "date_joined": "2020-04-02T12:30:00.00001-03:00",
    "is_active": true,
    "profile": {
      "suspended": false,
      "admin": false,
      "teacher": true,
      "last_active": "2020-04-10T18:21:13.83761-03:00",
      "phone": "+55 (11) 99999-9999",
      "sex": "M",
      "birth_date": "1990-01-01",
      "bio": null,
      "person_type": "F",
      "cpf_cnpj": "17091605004",
      "corporate_name": null,
      "country": "br",
      "zip_code": "01311-922",
      "state": "SP",
      "city": "São Paulo",
      "district": "Bela Vista",
      "street": "Av. Paulista",
      "house_number": "1000",
      "complement": "Ap 101",
      "facebook": null,
      "instagram": null,
      "twitter": null,
      "linkedin": null,
      "github": null,
      "youtube": null
    }
  }
}


Detalhes de um usuário buscando por email


GET /api/v1/users/<email>/search-email/


Parâmetros PATH:
**email*** (obrigatório): string


Exemplo de requisição:


curl --request GET \
--url https://EAD_ID.ead.guru/api/v1/users/jose@mail.com/search-email/ \
--header 'api-key: ZULoIPoY9wqYV5EpuFDUfKsdGJnRyGPD' \
--header 'app-id: LTHDT9EQIU5PXFDR2WLLER93TCISZYXR'


Exemplo de resposta:


{
"success": true,
"data": {
"id": 2,
"username": "jose_silva",
"first_name": "José",
"last_name": "da Silva",
"email": "jose@mail.com",
"last_login": "2020-04-10T13:38:21.29377-03:00",
"date_joined": "2020-04-02T12:30:00.00001-03:00",
"is_active": true,
"profile": {
"suspended": false,
"admin": false,
"teacher": true,
"last_active": "2020-04-10T18:21:13.83761-03:00",
"phone": "+55 (11) 99999-9999",
"sex": "M",
"birth_date": "1990-01-01",
"bio": null,
"person_type": "F",
"cpf_cnpj": "17091605004",
"corporate_name": null,
"country": "br",
"zip_code": "01311-922",
"state": "SP",
"city": "São Paulo",
"district": "Bela Vista",
"street": "Av. Paulista",
"house_number": "1000",
"complement": "Ap 101",
"facebook": null,
"instagram": null,
"twitter": null,
"linkedin": null,
"github": null,
"youtube": null
}
}
}


Criar usuário


POST /api/v1/users/


Parâmetros:
      **email*** (obrigatório): string (max 250 chars)
      **first_name*** (obrigatório): string (max 30 chars)
      **last_name*** (obrigatório): string (max 30 chars)
      username (opcional): string (max 150 chars)
      password (opcional): string (max 250 chars)
      date_joined (opcional): date (ISO 8601)
      teacher (opcional): boolean (default false)
      admin (opcional): boolean (default false)
      suspended (opcional): boolean (default false)
      sex (opcional): string ("M" ou "F")
      phone (opcional): string (max 50 chars)
      birth_date (opcional): date (ISO 8601)
      bio (opcional): string
      person_type (opcional):  string ("F" - Pessoa física ou "J" - Pessoa jurídica)
      cpf_cnpj (opcional): string (11 chars para CPF ou 14 chars para CNPJ)
      corporate_name (opcional): string (max 250 chars)
      country (opcional): string (Código de 2 chars ISO 3166)
      zip_code (opcional): string (8 chars)
      state (opcional): string (Código de 2 chars)
      city (opcional): string (max 100 chars)
      district (opcional): string (max 100 chars)
      street (opcional): string (max 100 chars)
      house_number (opcional): string (max 10 chars)
      complement (opcional): string (max 100 chars)


Exemplo de requisição:


curl --request POST \
  --url https://EAD_ID.ead.guru/api/v1/users/ \
  --header 'api-key: ZULoIPoY9wqYV5EpuFDUfKsdGJnRyGPD' \
  --header 'app-id: LTHDT9EQIU5PXFDR2WLLER93TCISZYXR' \
  --header 'content-type: application/json' \
  --data '{
"username": "maria_silva",
"email": "maria@mail.com",
"first_name": "Maria",
"last_name": "Silva",
"date_joined": "2020-04-10T10:40:55.623312-03:00",
"teacher": true,
"admin": false,
"suspended": false,
"sex": "F",
"phone": "+55 (11) 99999-9999"
}


Exemplo de resposta:


{
  "success": true,
  "data": {
    "id": 2,
    "username": "maria_silva",
    "first_name": "Maria",
    "last_name": "Silva",
    "email": "maria@mail.com",
    "last_login": null,
    "date_joined": "2020-04-10T10:40:55.623312-03:00",
    "is_active": true,
    "profile": {
      "suspended": false,
      "admin": false,
      "teacher": true,
      "last_active": null,
      "phone": "+55 (11) 99999-9999",
      "sex": "F",
      "birth_date": null,
      "bio": null,
      "person_type": "F",
      "cpf_cnpj": null,
      "corporate_name": null,
      "country": null,
      "zip_code": null,
      "state": null,
      "city": null,
      "district": null,
      "street": null,
      "house_number": null,
      "complement": null,
      "facebook": null,
      "instagram": null,
      "twitter": null,
      "linkedin": null,
      "github": null,
      "youtube": null
    }
  }
}


Editar usuário


PUT /api/v1/users/<id>/


Parâmetros PATH:      
      **id*** (obrigatório): integer
Parâmetros:
      email (opcional): string (max 250 chars)
      first_name (opcional): string (max 30 chars)
      last_name (opcional): string (max 30 chars)
      username (opcional): string (max 150 chars)
      teacher (opcional): boolean (default false)
      admin (opcional): boolean (default false)
      suspended (opcional): boolean (default false)
      sex (opcional): string ("M" ou "F")
      phone (opcional): string (max 50 chars)
      birth_date (opcional): date (ISO 8601)
      bio (opcional): string
      person_type (opcional):  string ("F" - Pessoa física ou "J" - Pessoa jurídica)
      cpf_cnpj (opcional): string (11 chars para CPF ou 14 chars para CNPJ)
      corporate_name (opcional): string (max 250 chars)
      country (opcional): string (Código de 2 chars ISO 3166)
      zip_code (opcional): string (8 chars)
      state (opcional): string (Código de 2 chars)
      city (opcional): string (max 100 chars)
      district (opcional): string (max 100 chars)
      street (opcional): string (max 100 chars)
      house_number (opcional): string (max 10 chars)
      complement (opcional): string (max 100 chars)


Exemplo de requisição:


curl --request PUT \
  --url https://EAD_ID.ead.guru/api/v1/users/3/ \
  --header 'api-key: ZULoIPoY9wqYV5EpuFDUfKsdGJnRyGPD' \
  --header 'app-id: LTHDT9EQIU5PXFDR2WLLER93TCISZYXR' \
  --header 'content-type: application/json' \
  --data '{
"teacher": false,
"admin": false,
"suspended": true,
"country": "br",
"zip_code": "22041-001",
"state": "RJ",
"city": "Rio de Janeiro",
"district": "Copacabana",
"street": "Avenida Atlântica",
"house_number": "2000",
"complement": null
}'


Exemplo de resposta:


{
  "success": true,
  "data": {
    "id": 2,
    "username": "maria_silva",
    "first_name": "Maria",
    "last_name": "Silva",
    "email": "maria@mail.com",
    "last_login": null,
    "date_joined": "2020-04-10T10:40:55.623312-03:00",
    "is_active": true,
    "profile": {
      "suspended": true,
      "admin": false,
      "teacher": false,
      "last_active": null,
      "phone": "+55 (11) 99999-9999",
      "sex": "F",
      "birth_date": null,
      "bio": null,
      "person_type": "F",
      "cpf_cnpj": null,
      "corporate_name": null,
      "country": br,
      "zip_code": "22041-001",
      "state": "RJ",
      "city": "Rio de Janeiro",
      "district": "Copacabana",
      "street": "Avenida Atlântica",
      "house_number": "2000",
      "complement": null,
      "facebook": null,
      "instagram": null,
      "twitter": null,
      "linkedin": null,
      "github": null,
      "youtube": null
    }
  }
}


Excluir usuário


DELETE /api/v1/users/<id>/


Parâmetros PATH:      
      **id*** (obrigatório): integer

Exemplo de requisição:


curl --request DELETE \
  --url https://EAD_ID.ead.guru/api/v1/users/3/ \
  --header 'api-key: ZULoIPoY9wqYV5EpuFDUfKsdGJnRyGPD' \
  --header 'app-id: LTHDT9EQIU5PXFDR2WLLER93TCISZYXR'


Exemplo de resposta:


{
  "success": true,
  "user_id": 3
}


Cursos


Listar cursos


GET /api/v1/courses/


Parâmetros:      
      page (opcional): integer
      open_to_enroll (opcional): boolean
      active (opcional): boolean


  Exemplo de requisição:


curl --request GET \
  --url 'https://EAD_ID.ead.guru/api/v1/courses/?page=1&active=true' \
  --header 'api-key: ZULoIPoY9wqYV5EpuFDUfKsdGJnRyGPD' \
  --header 'app-id: LTHDT9EQIU5PXFDR2WLLER93TCISZYXR'


Exemplo de resposta:


{
  "success": true,
  "current_page": 1,
  "total_pages": 1,
  "total_entries": 2,
  "data": [
    {
      "id": 1,
      "name": "Curso de Teste",
      "open_to_enroll": false,
      "active": true,
      "slug": "curso-de-teste",
      "price": "100.00",
      "created": "2020-02-04T09:45:40.499802-03:00"
    },
    {
      "id": 2,
      "name": "Curso preparatório",
      "open_to_enroll": true,
      "active": true,
      "slug": "curso-preparatorio",
      "price": "50.00",
      "created": "2020-02-04T09:55:50.088000-03:00"
    }
]
}


Detalhes de um curso


GET /api/v1/courses/<id>/


Parâmetros PATH:      
      **id*** (obrigatório): integer


Exemplo de requisição:


curl --request GET \
  --url https://EAD_ID.ead.guru/api/v1/courses/2/ \
  --header 'api-key: ZULoIPoY9wqYV5EpuFDUfKsdGJnRyGPD' \
  --header 'app-id: LTHDT9EQIU5PXFDR2WLLER93TCISZYXR'


Exemplo de resposta:


{
  "success": true,
  "data": {
    "id": 2,
    "name": "Curso preparatório",
    "open_to_enroll": true,
    "active": true,
    "slug": "curso-preparatorio",
    "created": "2020-02-04T09:55:50.088000-03:00",
    "category": null,
    "description": null,
    "short_description": null,
    "launch_date": null,
    "syllabus": null,
    "upgrade_to": null,
    "upgrade_price": null,
    "workload": 1,
    "forum_enabled": true,
    "show_score": false,
    "active_comments": false,
    "show_enrols_count": false,
    "expiry_date": null,
    "price": "50.00",
    "number_of_installments": 1,
    "installment_interest": "1.9",
    "teachers": [
      {
        "teacher_id": 2
      }
    ]
  }
}


Criar curso


POST /api/v1/courses/


Parâmetros:
      **teachers_ids*** (obrigatório): list of integers (max 5 teachers)
      **name*** (obrigatório): string (max 100chars)
      description (opcional): string
      short_description (opcional): string (max 140 chars)
      launch_date (opcional): date (ISO 8601)
      syllabus (opcional): string
      open_to_enroll (opcional): boolean (default false)
      active (opcional): boolean (default true)
      price (opcional): float (default 0.00)
      slug (opcional): string (Apenas letras minúsculas e o caracter "-" como espaço)
      workload (opcional): integer (default 1)
      forum_enabled (opcional): boolean (default true)
      show_score (opcional): boolean (default false)
      active_comments (opcional):  boolean (default false)
      show_enrols_count (opcional): boolean (default false)
      grade_certificate (opcional): integer ( deprecated)
      show_grade_certificate (opcional): boolean (default false) ( deprecated)
      expiry_date (opcional): integer (Número de meses até o vencimento da matrícula)
      number_of_installments (opcional): integer (min 1, max 12)


Exemplo de requisição:


curl --request POST \
  --url https://EAD_ID.ead.guru/api/v1/courses/ \
  --header 'api-key: ZULoIPoY9wqYV5EpuFDUfKsdGJnRyGPD' \
  --header 'app-id: LTHDT9EQIU5PXFDR2WLLER93TCISZYXR' \
  --header 'content-type: application/json' \
  --data '{
"teachers_ids": [2, 3],
"name": "Curso API",
"description": "Descrição teste",
"short_description": "Descrição resumida teste",
"launch_date": "2020-12-01T12:00:00.000000-03:00",
"syllabus": "Ementa teste",
"open_to_enroll": false,
"active": true,
"price": 49.99,
"slug": "curso-api",
"workload": 10,
"expiry_date": null
}'


Exemplo de resposta:


{
  "success": true,
  "data": {
    "id": 3,
    "name": "Curso API",
    "open_to_enroll": false,
    "active": true,
    "slug": "curso-api",
    "created": "2020-10-04T10:30:25.589061-03:00",
    "category": null,    "description": "Descrição teste",
    "short_description": "Descrição resumida teste",
    "launch_date": "2020-12-01T12:00:00.000000-03:00",
    "syllabus": "Ementa teste",
    "upgrade_to": null,
    "upgrade_price": null,
    "workload": 10,
    "forum_enabled": true,
    "show_score": false,
    "active_comments": false,
    "show_enrols_count": false,
    "expiry_date": null,
    "price": "49.99",
    "number_of_installments": 1,
    "installment_interest": "1.9",
    "teachers": [
      {
        "teacher_id": 2
      },
      {
        "teacher_id": 3
      }
    ]
  }
}


Editar curso


PUT /api/v1/courses/<id>/


Parâmetros PATH:          
      **id*** (obrigatório): integer
Parâmetros:
      teachers_ids (opcional): list of integers (max 5 teachers)
      name (opcional): string (max 100chars)
      description (opcional): string
      short_description (opcional): string (max 140 chars)
      launch_date (opcional): date (ISO 8601)
      syllabus (opcional): string
      open_to_enroll (opcional): boolean
      active (opcional): boolean
      price (opcional): float
      slug (opcional): string (Apenas letras minúsculas e o caracter "-" como espaço)
      workload (opcional): integer
      forum_enabled (opcional): boolean
      show_score (opcional): boolean
      active_comments (opcional):  boolean
      show_enrols_count (opcional): boolean
      grade_certificate (opcional): integer ( deprecated)
      show_grade_certificate (opcional): boolean ( deprecated)
      expiry_date (opcional): integer (Número de meses até o vencimento da matrícula)
      number_of_installments (opcional): integer (min 1, max 12)
      installment_interest (opcional): float (min 0, max 99. Obrigatório caso                                                                                             number_of_installments seja informado)


Exemplo de requisição:


curl --request PUT \
  --url https://EAD_ID.ead.guru/api/v1/courses/3/ \
  --header 'api-key: ZULoIPoY9wqYV5EpuFDUfKsdGJnRyGPD' \
  --header 'app-id: LTHDT9EQIU5PXFDR2WLLER93TCISZYXR' \
  --header 'content-type: application/json' \
  --data '{
       "teachers_ids": [2, 4],
        "open_to_enroll": true,
        "description": "Nova descrição"
}'


Exemplo de resposta:


{
  "success": true,
  "data": {
    "id": 3,
    "name": "Curso API",
    "open_to_enroll": true,
    "active": true,
    "slug": "curso-api",
    "created": "2020-10-04T10:30:25.589061-03:00",
    "category": null,
    "description": "Nova descrição",
    "short_description": "Descrição resumida teste",
    "launch_date": "2020-12-01T12:00:00.000000-03:00",
    "syllabus": "Ementa teste",
    "upgrade_to": null,
    "upgrade_price": null,
    "workload": 10,
    "forum_enabled": true,
    "show_score": false,
    "active_comments": false,
    "show_enrols_count": false,
    "expiry_date": null,
    "price": "49.99",
    "number_of_installments": 1,
    "installment_interest": "1.9",
    "teachers": [
      {
        "teacher_id": 2
      },
      {
        "teacher_id": 4
      }
    ]
  }
}


Excluir curso


DELETE /api/v1/courses/<id>/


Parâmetros PATH:            
      **id*** (obrigatório): integer

Exemplo de requisição:


curl --request DELETE \
  --url https://EAD_ID.ead.guru/api/v1/courses/1/ \
  --header 'api-key: ZULoIPoY9wqYV5EpuFDUfKsdGJnRyGPD' \
  --header 'app-id: LTHDT9EQIU5PXFDR2WLLER93TCISZYXR'


Exemplo de resposta:


{
  "success": true,
  "course_id": 1
}


Matrículas


Listar matrículas


GET /api/v1/enrols/


Parâmetros:            
      page (opcional): integer
      course (opcional): integer
      user (opcional): integer


  Exemplo de requisição:


curl --request GET \
  --url 'https://EAD_ID.ead.guru/api/v1/enrols/?page=1&course=2' \
  --header 'api-key: ZULoIPoY9wqYV5EpuFDUfKsdGJnRyGPD' \
  --header 'app-id: LTHDT9EQIU5PXFDR2WLLER93TCISZYXR'


Exemplo de resposta:


{
  "success": true,
  "current_page": 1,
  "total_pages": 1,
  "total_entries": 2,
  "data": [
    {
      "id": 1,
      "student": 1,
      "course": 2,
      "active": true
    },
    {
      "id": 4,
      "student": 2,
      "course": 2,
      "active": true
    }
}


Detalhes de uma matrícula


GET /api/v1/enrols/<id>/


Parâmetros PATH:            
      **id*** (obrigatório): integer


Exemplo de requisição:


curl --request GET \
  --url https://EAD_ID.ead.guru/api/secure/enrols/4/ \
  --header 'api-key: ZULoIPoY9wqYV5EpuFDUfKsdGJnRyGPD' \
  --header 'app-id: LTHDT9EQIU5PXFDR2WLLER93TCISZYXR'


Exemplo de resposta:


{
  "success": true,
  "data": {
    "id": 4,
    "student": 2,
    "course": 2,
    "expiry_date": null,
    "active": true,
    "created": "2020-02-04T12:30:00.247000-03:00",
    "updated": "2020-02-10T16:35:10.338758-03:00"
  }
}


Criar matrícula


POST /api/v1/enrols/


Parâmetros:
      **user*** (obrigatório): integer
      **course*** (obrigatório): integer
      expiry_date (opcional): date (ISO 8601)
      active (opcional): boolean (default true)
      send_email (opcional): boolean (default false)
      *Atenção: Utilize a opção send_email=true apenas se tiver certeza que o email do aluno é válido.                Caso ocorram muitos erros de envio de email por causa de email inválido, o seu EAD poderá ser                suspenso.


Exemplo de requisição:


curl --request POST \
  --url https://EAD_ID.ead.guru/api/v1/enrols/ \
  --header 'api-key: ZULoIPoY9wqYV5EpuFDUfKsdGJnRyGPD' \
  --header 'app-id: LTHDT9EQIU5PXFDR2WLLER93TCISZYXR' \
  --header 'content-type: application/json' \
  --data '{
"user": "3",
"course": "2"
}'


Exemplo de resposta:


{
  "success": true,
  "data": {
    "id": 5,
    "student": 3,
    "course": 2,
    "expiry_date": null,
    "active": true,
    "created": "2020-04-02T20:20:50.708849-03:00",
    "updated": "2020-04-10T12:40:50.179511-03:00"
  }
}


Editar matrícula


PUT /api/v1/enrols/<id>/


Parâmetros PATH:                
      **id*** (obrigatório): integer


Parâmetros:
      expiry_date (opcional): date (ISO 8601)
      active (opcional): boolean


Exemplo de requisição:


curl --request PUT \
  --url https://EAD_ID.ead.guru/api/v1/enrols/5/ \
  --header 'api-key: ZULoIPoxxxxxxxxxxxxxxxxxGJnRyGPD' \
  --header 'app-id: LTHDTxxxxxxxxxxxxxxxxxxxxxxCISZYXR' \
  --header 'content-type: application/json' \
  --data '{
"expiry_date": "2020-06-10",
"active": true
}'


Exemplo de resposta:


{
  "success": true,
  "data": {
    "id": 5,
    "student": 3,
    "course": 2,
    "expiry_date": "2020-06-10",
    "active": true,
    "created": "2020-04-02T20:20:50.708849-03:00",
    "updated": "2020-04-10T18:00:00.753982-03:00"
  }
}


Atualizado em: 19/06/2025