Instâncias

Esta é uma API de gerenciamento instâncias OpenVPN.

Listar Instâncias Paginadas

API de listagem de instâncias paginadas. Ver documentação de paginação.

GET /api/openvpn/instances

GET /api/openvpn/instances?cursor=0&size=15

Exemplo de requisição

GET /api/openvpn/instances HTTP/1.1
Host: api.exemplo.com
Accept: application/json
Authorization: Bearer <Access-Token>
from itflex_sdk.openvpn.types import GetInstancesPageRequest

request = GetInstancesPageRequest(cursor=0, size=15)
pages = sdk.openvpn.get_instances_pages(request)
const pages = sdk.openvpn.getInstancesPages();
const response = pages.next();
console.log(response.payload);

Exemplo de resposta

HTTP/1.1 200 OK
Content-Type: application/json

{
  "cursor": {"current": 0, "next": null, "previous": null},
  "instaces_models": [
    {
      "id": 1,
      "model_id": 1,
      "ca_id": 1,
      "cert_email_template_id": 1,
      "name": "instance-01",
      "description": "Instância da Empresa XYZ",
      "country": "BR",
      "province": "Rio de Janeiro",
      "city": "Rio de Janeiro",
      "organization": "Empresa XYZ",
      "sector": "Suporte",
      "email": "empresa-xyz@email.com",
      "port": 8001,
      "network": "192.168.1.0/24",
      "proto": "tcp",
      "dhcp_enabled": true,
      "dhcp_start": "192.168.1.50",
      "dhcp_end": "192.168.1.200",
      "dns_server": "192.168.1.1",
      "dns_domain": "example.com.br",
      "push_routes": ["10.10.0.0/24"],
      "routes": ["192.168.20.0/24"],
      "ldap_auth": false,
      "remotes": [
        "vpn01.example.com.br",
        "vpn02.example.com.br"
      ],
      "revoked": false,
      "expired": false,
      "expiry_date": "2027-10-05T12:20:02.932000+00:00",
      "created_at": "2017-10-05T12:20:02.932000+00:00",
      "updated_at": "2017-11-05T12:20:02.932000+00:00",
    },
  ],
}
page = pages.next()
page = pages.previous()

# retornar os itens de uma página
for instance in page.instances:
    print(instance)

# retornar os itens de todas as páginas
for instance in pages:
    print(instance)
{
  id: 1,
  modelId: 1,
  caId: 1,
  certEmailTemplateId: 1,
  name: "instance-01",
  description: "Instância da Empresa XYZ",
  country: "BR",
  province: "Rio de Janeiro",
  city: "Rio de Janeiro",
  organization: "Empresa XYZ",
  sector: "Suporte",
  email: "empresa-xyz@email.com",
  port: 8001,
  network: "192.168.1.0/24",
  proto: "tcp",
  dhcpEnabled: true,
  dhcpStart: "192.168.1.50",
  dhcpEnd: "192.168.1.200",
  dnsServer: "192.168.1.1",
  dnsDomain: "example.com.br",
  pushRoutes: ["10.10.0.0/24"],
  routes: ["192.168.20.0/24"],
  ldapAuth: false,
  remotes: [
    "vpn01.example.com.br",
    "vpn02.example.com.br"
  ],
  revoked: false,
  expired: false,
  expiryDate: "2027-10-05T12:20:02Z",
  createdAt: "2017-10-05T12:20:02Z",
  updatedAt: "2017-11-05T12:20:02Z",
}

Buscar Instância

API de busca de um instância existente.

GET /api/openvpn/instances/<id>

Exemplo de requisição

GET /api/openvpn/instances/1 HTTP/1.1
Host: api.exemplo.com
Accept: application/json
Authorization: Bearer <Access-Token>
from itflex_sdk.openvpn.types import GetInstanceRequest

request = GetInstanceRequest(id=1)
response = sdk.openvpn.get_instance(request)
const response = sdk.openvpn.getInstance({ id: 1 });

Exemplo de resposta

HTTP/1.1 200 OK
Content-Type: application/json

{
  "id": 1,
  "model_id": 1,
  "ca_id": 1,
  "cert_email_template_id": 1,
  "name": "instance-01",
  "description": "Instância da Empresa XYZ",
  "country": "BR",
  "province": "Rio de Janeiro",
  "city": "Rio de Janeiro",
  "organization": "Empresa XYZ",
  "sector": "Suporte",
  "email": "empresa-xyz@email.com",
  "port": 8001,
  "network": "192.168.1.0/24",
  "proto": "tcp",
  "dhcp_enabled": true,
  "dhcp_start": "192.168.1.50",
  "dhcp_end": "192.168.1.200",
  "dns_server": "192.168.1.1",
  "dns_domain": "example.com.br",
  "push_routes": ["10.10.0.0/24"],
  "routes": ["192.168.20.0/24"],
  "ldap_auth": false,
  "remotes": [
    "vpn01.example.com.br",
    "vpn02.example.com.br"
  ],
  "revoked": false,
  "expired": false,
  "expiry_date": "2027-10-05T12:20:02.932000+00:00",
  "created_at": "2017-10-05T12:20:02.932000+00:00",
  "updated_at": "2017-11-05T12:20:02.932000+00:00",
}
if response.success:
    return response.instance
{
  id: 1,
  modelId: 1,
  caId: 1,
  certEmailTemplateId: 1,
  name: "instance-01",
  description: "Instância da Empresa XYZ",
  country: "BR",
  province: "Rio de Janeiro",
  city: "Rio de Janeiro",
  organization: "Empresa XYZ",
  sector: "Suporte",
  email: "empresa-xyz@email.com",
  port: 8001,
  network: "192.168.1.0/24",
  proto: "tcp",
  dhcpEnabled: true,
  dhcpStart: "192.168.1.50",
  dhcpEnd: "192.168.1.200",
  dnsServer: "192.168.1.1",
  dnsDomain: "example.com.br",
  pushRoutes: ["10.10.0.0/24"],
  routes: ["192.168.20.0/24"],
  ldapAuth: false,
  remotes: [
    "vpn01.example.com.br",
    "vpn02.example.com.br"
  ],
  revoked: false,
  expired: false,
  expiryDate: "2027-10-05T12:20:02Z",
  createdAt: "2017-10-05T12:20:02Z",
  updatedAt: "2017-11-05T12:20:02Z",
}

Cadastrar Instância

API de cadastro de instância.

POST /api/openvpn/instances

Obs: Para cadastrar uma instância OpenVPN é necessário ter uma CA. Para isso, basta consultar a API de CA e passar o identificador da CA no conteúdo da requisição da API ou do SDK.

Exemplo de requisição

POST /api/openvpn/instances HTTP/1.1
Host: api.exemplo.com
Accept: application/json
Authorization: Bearer <Access-Token>

{
  "model_id": 1,
  "ca_id": 1,
  "cert_email_template_id": 1,
  "name": "instance-01",
  "description": "Instância da Empresa XYZ",
  "port": 8001,
  "network": "192.168.1.0/24",
  "proto": "tcp",
  "dhcp_enabled": true,
  "dhcp_start": "192.168.1.50",
  "dhcp_end": "192.168.1.200",
  "dns_server": "192.168.1.1",
  "dns_domain": "example.com.br",
  "push_routes": ["10.10.0.0/24"],
  "routes": ["192.168.20.0/24"],
  "ldap_auth": false,
  "remotes": [
    "vpn01.example.com.br",
    "vpn02.example.com.br"
  ],
  "apply": true,
}
from itflex_sdk.openvpn.types import CreateInstanceRequest

request = CreateInstanceRequest(
    model_id=1,
    ca_id=1,
    cert_email_template_id=1,
    name="instance-01",
    description="Instância da Empresa XYZ",
    port=8001,
    network="192.168.1.0/24",
    proto="tcp",
    dhcp_enabled=True,
    dhcp_start="192.168.1.50",
    dhcp_end="192.168.1.200",
    dns_server="192.168.1.1",
    dns_domain="example.com.br",
    push_routes=["10.10.0.0/24"],
    routes=["192.168.20.0/24"],
    ldap_auth=False,
    remotes=[
      "vpn01.example.com.br",
      "vpn02.example.com.br"
    ],
    apply=True,
)
response = sdk.openvpn.create_instance(request)
const instance = sdk.openvpn.types.Instance();
instance.modelId = 1;
instance.caId = 1;
instance.certEmailTemplateId = 1;
instance.name = "instance-01";
instance.description = "Instância da Empresa XYZ";
instance.port = 8001;
instance.network = "192.168.1.0/24";
instance.proto = "tcp";
instance.dhcpEnabled = true;
instance.dhcpStart = "192.168.1.50";
instance.dhcpEnd = "192.168.1.200";
instance.dnsServer = "192.168.1.1";
instance.dnsDomain = "example.com.br";
instance.pushRoutes = ["10.10.0.0/24"];
instance.routes = ["192.168.20.0/24"];
instance.ldapAuth = false;
instance.remotes = ["vpn01.example.com.br", "vpn02.example.com.br"];
instance.apply = true;

const response = sdk.openvpn.createInstance(instance);
console.log(response.payload);

Exemplo de resposta

HTTP/1.1 200 OK
Content-Type: application/json

{
  "id": 1,
  "model_id": 1,
  "ca_id": 1,
  "cert_email_template_id": 1,
  "name": "instance-01",
  "description": "Instância da Empresa XYZ",
  "country": "BR",
  "province": "Rio de Janeiro",
  "city": "Rio de Janeiro",
  "organization": "Empresa XYZ",
  "sector": "Suporte",
  "email": "empresa-xyz@email.com",
  "port": 8001,
  "network": "192.168.1.0/24",
  "proto": "tcp",
  "dhcp_enabled": true,
  "dhcp_start": "192.168.1.50",
  "dhcp_end": "192.168.1.200",
  "dns_server": "192.168.1.1",
  "dns_domain": "example.com.br",
  "push_routes": ["10.10.0.0/24"],
  "routes": ["192.168.20.0/24"],
  "ldap_auth": false,
  "remotes": [
    "vpn01.example.com.br",
    "vpn02.example.com.br"
  ],
  "revoked": false,
  "expired": false,
  "expiry_date": "2027-10-05T12:20:02.932000+00:00",
  "created_at": "2017-10-05T12:20:02.932000+00:00",
  "updated_at": "2017-11-05T12:20:02.932000+00:00",
}
if response.success:
    return response.instance
{
  id: 1,
  modelId: 1,
  caId: 1,
  certEmailTemplateId: 1,
  name: "instance-01",
  description: "Instância da Empresa XYZ",
  country: "BR",
  province: "Rio de Janeiro",
  city: "Rio de Janeiro",
  organization: "Empresa XYZ",
  sector: "Suporte",
  email: "empresa-xyz@email.com",
  proto: "tcp",
  dhcpEnabled: true,
  dhcpStart: "192.168.1.50",
  dhcpEnd: "192.168.1.200",
  dnsServer: "192.168.1.1",
  dnsDomain: "example.com.br",
  pushRoutes: ["10.10.0.0/24"],
  routes: ["192.168.20.0/24"],
  ldapAuth: false,
  remotes: [
    "vpn01.example.com.br",
    "vpn02.example.com.br"
  ],
  revoked: false,
  expired: false,
  expiryDate: "2027-10-05T12:20:02Z",
  createdAt: "2017-10-05T12:20:02Z",
  updatedAt: "2017-11-05T12:20:02Z",
}

Editar Instância

API de edição de um instância existente.

PUT /api/openvpn/instances/<id>

Exemplo de requisição

PUT /api/openvpn/instances/1 HTTP/1.1
Host: api.exemplo.com
Accept: application/json
Authorization: Bearer <Access-Token>

{
  "model_id": 2,
  "cert_email_template_id": 1,
  "description": "Instância da Empresa XYZ",
  "port": 8002,
  "network": "192.168.10.0/24",
  "proto": "tcp",
  "dhcp_enabled": true,
  "dhcp_start": "192.168.10.50",
  "dhcp_end": "192.168.10.200",
  "dns_server": "192.168.10.1",
  "dns_domain": "example.com.br",
  "push_routes": ["10.10.1.0/24"],
  "routes": ["192.168.20.0/24"],
  "ldap_auth": false,
  "remotes": [
    "vpn01.example.com.br",
    "vpn02.example.com.br"
  ],
  "apply": true,
}
from itflex_sdk.openvpn.types import UpdateInstanceRequest

request = UpdateInstanceRequest(
    id=1,
    model_id=2,
    cert_email_template_id=1,
    description="Instância da Empresa XYZ",
    port=8002,
    network="192.168.10.0/24",
    proto="tcp",
    dhcp_enabled=True,
    dhcp_start="192.168.10.50",
    dhcp_end="192.168.10.200",
    dns_server="192.168.10.1",
    dns_domain="example.com.br",
    push_routes=["10.10.1.0/24"],
    routes=["192.168.20.0/24"],
    ldap_auth=False,
    remotes=[
        "vpn01.example.com.br",
        "vpn02.example.com.br"
    ],
    apply=True,
)
response = sdk.openvpn.update_instance(request)
const instance = sdk.openvpn.types.Instance();
instance.id = 1;
instance.modelId = 2;
instance.certEmailTemplateId: 1,
instance.description = "Instância da Empresa XYZ";
instance.port = 8002;
instance.network = "192.168.10.0/24";
instance.proto = "tcp";
instance.dhcpEnabled = true;
instance.dhcpStart = "192.168.1.50";
instance.dhcpEnd = "192.168.1.200";
instance.dnsServer = "192.168.1.1";
instance.dnsDomain = "example.com.br";
instance.pushRoutes = ["10.10.1.0/24"];
instance.routes = ["192.168.20.0/24"];
instance.ldapAuth = false;
instance.remotes = ["vpn01.example.com.br", "vpn02.example.com.br"];
instance.apply = true;

const response = sdk.openvpn.updateInstance(instance);
console.log(response.payload);

Exemplo de resposta

HTTP/1.1 200 OK
Content-Type: application/json

{
  "id": 1,
  "model_id": 2,
  "ca_id": 1,
  "cert_email_template_id": 1,
  "name": "instance-01",
  "description": "Instância da Empresa XYZ",
  "country": "BR",
  "province": "Rio de Janeiro",
  "city": "Rio de Janeiro",
  "organization": "Empresa XYZ",
  "sector": "Suporte",
  "email": "empresa-xyz@email.com",
  "port": 8002,
  "network": "192.168.10.0/24",
  "proto": "tcp",
  "dhcp_enabled": true,
  "dhcp_start": "192.168.10.50",
  "dhcp_end": "192.168.10.200",
  "dns_server": "192.168.10.1",
  "dns_domain": "example.com.br",
  "push_routes": ["10.10.1.0/24"],
  "routes": ["192.168.20.0/24"],
  "ldap_auth": false,
  "remotes": [
    "vpn01.example.com.br",
    "vpn02.example.com.br"
  ],
  "revoked": false,
  "expired": false,
  "expiry_date": "2027-10-05T12:20:02.932000+00:00",
  "created_at": "2017-10-05T12:20:02.932000+00:00",
  "updated_at": "2017-11-05T12:20:02.932000+00:00",
}
if response.success:
    return response.instance
{
  id: 1,
  model_id: 2,
  ca_id: 1,
  cert_email_template_id: 1,
  name: "instance-01",
  description: "Instância da Empresa XYZ",
  country: "BR",
  province: "Rio de Janeiro",
  city: "Rio de Janeiro",
  organization: "Empresa XYZ",
  sector: "Suporte",
  email: "empresa-xyz@email.com",
  port: 8002,
  network: "192.168.10.0/24",
  proto: "tcp",
  dhcpEnabled: true,
  dhcpStart: "192.168.10.50",
  dhcpEnd: "192.168.10.200",
  dnsServer: "192.168.10.1",
  dnsDomain: "example.com.br",
  pushRoutes: ["10.10.1.0/24"],
  routes: ["192.168.20.0/24"],
  ldapAuth: false,
  remotes: [
    "vpn01.example.com.br",
    "vpn02.example.com.br"
  ],
  revoked: false,
  expired: false,
  expiryDate: "2027-10-05T12:20:02Z",
  createdAt: "2017-10-05T12:20:02Z",
  updatedAt: "2017-11-05T12:20:02Z",
}

Excluir Instância

API de exclusão de um instância existente.

DELETE /api/openvpn/instances/<id>

Exemplo de requisição

DELETE /api/openvpn/instances/1 HTTP/1.1
Host: api.exemplo.com
Accept: application/json
Authorization: Bearer <Access-Token>
from itflex_sdk.openvpn.types import DeleteInstanceRequest

request = DeleteInstanceRequest(id=2)
response = sdk.openvpn.delete_instance(request)
const response = sdk.openvpn.deleteInstance({ id: 2 });

Exemplo de resposta

HTTP/1.1 200 OK
Content-Type: application/json
return response.success

Provisionar Instância

API de provisionamento de uma instância.

POST /api/openvpn/instances/<id>/reload

Exemplo de requisição

POST /api/openvpn/instances/1/reload HTTP/1.1
Host: api.exemplo.com
Accept: application/json
Authorization: Bearer <Access-Token>
from itflex_sdk.openvpn.types import ReloadInstanceRequest

request = ReloadInstanceRequest(
    id=1,
)
response = sdk.openvpn.reload_instance(request)

Exemplo de resposta

HTTP/1.1 200 OK
Content-Type: application/json
return response.success
const response = sdk.openvpn.reloadInstance({ id: 1 });

Aplicar instâncias OpenVPN

API para aplicar uma instância OpenVPN

POST /api/openvpn/instances/apply

Exemplo de requisição

POST /api/openvpn/instances/apply HTTP/1.1
Host: api.exemplo.com
Accept: application/json
Authorization: Bearer <Access-Token>
response = sdk.openvpn.apply()
const response = await sdk.openvpn.apply();

Exemplo de resposta

HTTP/1.1 200 OK
Content-Type: application/json

Aplicar uma instância OpenVPN

API para aplicar uma instância OpenVPN

POST /api/openvpn/instances/<id>/apply

Exemplo de requisição

POST /api/openvpn/instances/1/apply HTTP/1.1
Host: api.exemplo.com
Accept: application/json
Authorization: Bearer <Access-Token>
response = sdk.openvpn.apply_instance(id=1)
const response = await sdk.openvpn.applyInstance({ id: 1 });

Exemplo de resposta

HTTP/1.1 200 OK
Content-Type: application/json

Formato dos dados

Parâmetros da url

Parâmetro Tipo
id integer

Requisição

Parâmetro Tipo Valor Dafault Descrição
id integer Identificador da instância
model_id integer Identificador do modelo de configuração da instância
cert_email_template_id integer Identificador do template de email da instância
ca_id integer requerido
não editável
Identificador da CA
name string requerido
único não editável
Nome do cliente.
Caracteres permitidos: A-Z a-z 0-9 - .
Tamanho máximo: 30
description string opcional Descrição do cliente
port int requerido único Porta de conexão da instância
Minimo: 1000
Máximo: 30000
network string requerido
único
Rede referente a instância OpenVPN
Rede válida
proto string Protocolo de controle de transmissão
Valores possíveis:
udp: Usar protocolo UDP para acesso a VPN (padrão)
tcp: Usar protocolo TCP para acesso a VPN
dhcp_enabled boolean requerido Habilitar/desabilitar DHCP na rede da instância
dhcp_start string requerido Início da faixa de IP’s do DHCP
IP válido
Deve estar dentro da faixa de ips da rede
Somente é requerido quando o campo dhcp_enabled estiver habilitado
dhcp_end string requerido Final da faixa de IP’s do DHCP
IP válido
Deve estar dentro da faixa de ips da rede
Somente é requerido quando o campo dhcp_enabled estiver habilitado
dns_server string IP do servidor de DNS
dns_domain string Domínio do servidor de DNS
push_routes array<string> Lista de rotas do cliente
routes array<string> Lista de rotas do servidor
ldap_auth boolean False Habilita autenticação com o LDAP
remotes array<string>
requerido
Lista de endereços de conexão usados pelos clientes
Devem ser hostnames válidos
apply boolean requerido Aplica as novas configurações

Resposta

Parâmetro Tipo Descrição
id integer Identificador da instância
model_id integer Identificador do modelo de configuração da instância
ca_id integer Identificador da CA
name string Nome do cliente
description string Descrição do cliente
country string País do cliente
province string Estado do cliente
city string Cidade do cliente
organization string Nome da organização do cliente
sector string Setor do cliente
email email E-mail do cliente
port int Porta de conexão da instância
network string Rede referênte a instância VPN
proto string Protocolo de controle de transmissão
Valores possíveis:
udp: Usar protocolo UDP para acesso a VPN (padrão)
tcp: Usar protocolo TCP para acesso a VPN
dhcp_enabled booleam Habilitar/desabilitar DHCP na rede da instância
dhcp_start string Início da faixa de IP’s do DHCP
dhcp_end string Final da faixa de IP’s do DHCP
dns_server string IP do servidor de DNS
dns_domain string Domínio do servidor de DNS
push_routes array<string> Lista de rotas do cliente
routes array<string> Lista de rotas do servidor
ldap_auth boolean Habilita autenticação com o LDAP
remotes string Lista de endereços de conexão usados pelos clientes
revoked boolean Status de revogado do certificado
expired boolean Status de expirado do certificado
expiry_date datetime Data de expiração do certificado da instância
Possui a mesma data de expiração da CA
created_at datetime Data de criação
updated_at datetime Data de edição