Esta é uma API de gerenciamento instâncias OpenVPN.
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",
}
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",
}
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",
}
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",
}
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
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 });
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
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
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 |
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 |