netmaker/swagger.yaml
2023-06-21 19:45:44 +05:30

1866 lines
59 KiB
YAML

basePath: /
consumes:
- application/json
definitions:
ACL:
additionalProperties:
format: uint8
type: integer
description: ACL - the ACL of other nodes in a NetworkACL for a single unique node
type: object
x-go-package: github.com/gravitl/netmaker/logic/acls
ACLContainer:
additionalProperties:
$ref: '#/definitions/ACL'
description: ACLContainer - the total list of all node's ACL in a given network
type: object
x-go-package: github.com/gravitl/netmaker/logic/acls
AccessKey:
description: AccessKey - access key struct
properties:
accessstring:
type: string
x-go-name: AccessString
name:
type: string
x-go-name: Name
uses:
format: int64
type: integer
x-go-name: Uses
value:
type: string
x-go-name: Value
type: object
x-go-package: github.com/gravitl/netmaker/models
AttributeTypeAndValue:
description: |-
AttributeTypeAndValue mirrors the ASN.1 structure of the same name in
RFC 5280, Section 4.1.2.4.
properties:
Type:
$ref: '#/definitions/ObjectIdentifier'
Value: {}
type: object
x-go-package: crypto/x509/pkix
AuthParams:
description: AuthParams - struct for auth params
properties:
id:
type: string
x-go-name: ID
macaddress:
type: string
x-go-name: MacAddress
password:
type: string
x-go-name: Password
type: object
x-go-package: github.com/gravitl/netmaker/models
CustomExtClient:
description: CustomExtClient - struct for CustomExtClient params
properties:
clientid:
type: string
x-go-name: ClientID
type: object
x-go-package: github.com/gravitl/netmaker/models
DNSEntry:
description: DNSEntry - a DNS entry represented as struct
properties:
address:
type: string
x-go-name: Address
address6:
type: string
x-go-name: Address6
name:
type: string
x-go-name: Name
network:
type: string
x-go-name: Network
type: object
x-go-package: github.com/gravitl/netmaker/models
Duration:
description: |-
A Duration represents the elapsed time between two instants
as an int64 nanosecond count. The representation limits the
largest representable duration to approximately 290 years.
format: int64
type: integer
x-go-package: time
EgressGatewayRequest:
description: EgressGatewayRequest - egress gateway request
properties:
interface:
type: string
x-go-name: Interface
natenabled:
type: string
x-go-name: NatEnabled
netid:
type: string
x-go-name: NetID
nodeid:
type: string
x-go-name: NodeID
ranges:
items:
type: string
type: array
x-go-name: Ranges
type: object
x-go-package: github.com/gravitl/netmaker/models
ExtClient:
description: ExtClient - struct for external clients
properties:
address:
type: string
x-go-name: Address
address6:
type: string
x-go-name: Address6
clientid:
type: string
x-go-name: ClientID
description:
type: string
x-go-name: Description
enabled:
type: boolean
x-go-name: Enabled
ingressgatewayendpoint:
type: string
x-go-name: IngressGatewayEndpoint
ingressgatewayid:
type: string
x-go-name: IngressGatewayID
lastmodified:
format: int64
type: integer
x-go-name: LastModified
network:
type: string
x-go-name: Network
privatekey:
type: string
x-go-name: PrivateKey
publickey:
type: string
x-go-name: PublicKey
type: object
x-go-package: github.com/gravitl/netmaker/models
IPMask:
description: See type IPNet and func ParseCIDR for details.
items:
format: uint8
type: integer
title: |-
An IPMask is a bitmask that can be used to manipulate
IP addresses for IP addressing and routing.
type: array
x-go-package: net
IPNet:
properties:
IP:
type: string
Mask:
$ref: '#/definitions/IPMask'
title: An IPNet represents an IP network.
type: object
x-go-package: net
Key:
description: |-
A Key is a public, private, or pre-shared secret key. The Key constructor
functions in this package can be used to create Keys suitable for each of
these applications.
items:
format: uint8
type: integer
type: array
x-go-package: golang.zx2c4.com/wireguard/wgctrl/wgtypes
Name:
description: |-
Name represents an X.509 distinguished name. This only includes the common
elements of a DN. Note that Name is only an approximation of the X.509
structure. If an accurate representation is needed, asn1.Unmarshal the raw
subject or issuer as an RDNSequence.
properties:
Country:
items:
type: string
type: array
x-go-name: OrganizationalUnit
ExtraNames:
description: |-
ExtraNames contains attributes to be copied, raw, into any marshaled
distinguished names. Values override any attributes with the same OID.
The ExtraNames field is not populated when parsing, see Names.
items:
$ref: '#/definitions/AttributeTypeAndValue'
type: array
Locality:
items:
type: string
type: array
x-go-name: Province
Names:
description: |-
Names contains all parsed attributes. When parsing distinguished names,
this can be used to extract non-standard attributes that are not parsed
by this package. When marshaling to RDNSequences, the Names field is
ignored, see ExtraNames.
items:
$ref: '#/definitions/AttributeTypeAndValue'
type: array
SerialNumber:
type: string
x-go-name: CommonName
StreetAddress:
items:
type: string
type: array
x-go-name: PostalCode
type: object
x-go-package: crypto/x509/pkix
Network:
description: |-
Network Struct - contains info for a given unique network
At some point, need to replace all instances of Name with something else like Identifier
properties:
accesskeys:
items:
$ref: '#/definitions/AccessKey'
type: array
x-go-name: AccessKeys
addressrange:
type: string
x-go-name: AddressRange
addressrange6:
type: string
x-go-name: AddressRange6
allowmanualsignup:
type: string
x-go-name: AllowManualSignUp
defaultacl:
type: string
x-go-name: DefaultACL
defaultextclientdns:
type: string
x-go-name: DefaultExtClientDNS
defaultinterface:
type: string
x-go-name: DefaultInterface
defaultkeepalive:
format: int32
type: integer
x-go-name: DefaultKeepalive
defaultlistenport:
format: int32
type: integer
x-go-name: DefaultListenPort
defaultmtu:
format: int32
type: integer
x-go-name: DefaultMTU
defaultudpholepunch:
type: string
x-go-name: DefaultUDPHolePunch
isipv4:
type: string
x-go-name: IsIPv4
isipv6:
type: string
x-go-name: IsIPv6
ispointtosite:
type: string
x-go-name: IsPointToSite
netid:
type: string
x-go-name: NetID
networklastmodified:
format: int64
type: integer
x-go-name: NetworkLastModified
nodelimit:
format: int32
type: integer
x-go-name: NodeLimit
nodeslastmodified:
format: int64
type: integer
x-go-name: NodesLastModified
type: object
x-go-package: github.com/gravitl/netmaker/models
Node:
description: Node - struct for node model
properties:
accesskey:
type: string
x-go-name: AccessKey
action:
type: string
x-go-name: Action
address:
type: string
x-go-name: Address
address6:
type: string
x-go-name: Address6
allowedips:
items:
type: string
type: array
x-go-name: AllowedIPs
connected:
type: string
x-go-name: Connected
dnson:
type: string
x-go-name: DNSOn
egressgatewaynatenabled:
type: string
x-go-name: EgressGatewayNatEnabled
egressgatewayranges:
items:
type: string
type: array
x-go-name: EgressGatewayRanges
egressgatewayrequest:
$ref: '#/definitions/EgressGatewayRequest'
endpoint:
type: string
x-go-name: Endpoint
expdatetime:
format: int64
type: integer
x-go-name: ExpirationDateTime
firewallinuse:
type: string
x-go-name: FirewallInUse
id:
type: string
x-go-name: ID
ingressgatewayrange:
type: string
x-go-name: IngressGatewayRange
ingressgatewayrange6:
type: string
x-go-name: IngressGatewayRange6
interface:
type: string
x-go-name: Interface
internetgateway:
type: string
x-go-name: InternetGateway
ipforwarding:
type: string
x-go-name: IPForwarding
isdocker:
type: string
x-go-name: IsDocker
isegressgateway:
type: string
x-go-name: IsEgressGateway
ishub:
type: string
x-go-name: IsHub
isingressgateway:
type: string
x-go-name: IsIngressGateway
isk8s:
type: string
x-go-name: IsK8S
ispending:
type: string
x-go-name: IsPending
isrelay:
type: string
x-go-name: IsRelay
isrelayed:
type: string
x-go-name: IsRelayed
isserver:
type: string
x-go-name: IsServer
isstatic:
description: IsStatic - refers to if the Endpoint is set manually or dynamically
type: string
x-go-name: IsStatic
lastcheckin:
format: int64
type: integer
x-go-name: LastCheckIn
lastmodified:
format: int64
type: integer
x-go-name: LastModified
lastpeerupdate:
format: int64
type: integer
x-go-name: LastPeerUpdate
listenport:
format: int32
type: integer
x-go-name: ListenPort
localaddress:
type: string
x-go-name: LocalAddress
locallistenport:
format: int32
type: integer
x-go-name: LocalListenPort
macaddress:
type: string
x-go-name: MacAddress
mtu:
format: int32
type: integer
x-go-name: MTU
name:
type: string
x-go-name: Name
network:
type: string
x-go-name: Network
networksettings:
$ref: '#/definitions/Network'
os:
type: string
x-go-name: OS
password:
type: string
x-go-name: Password
persistentkeepalive:
format: int32
type: integer
x-go-name: PersistentKeepalive
publickey:
type: string
x-go-name: PublicKey
relayaddrs:
items:
type: string
type: array
x-go-name: RelayAddrs
server:
type: string
x-go-name: Server
traffickeys:
$ref: '#/definitions/TrafficKeys'
udpholepunch:
type: string
x-go-name: UDPHolePunch
version:
type: string
x-go-name: Version
type: object
x-go-package: github.com/gravitl/netmaker/models
NodeGet:
description: NodeGet - struct for a single node get response
properties:
node:
$ref: '#/definitions/Node'
peers:
items:
$ref: '#/definitions/PeerConfig'
type: array
x-go-name: Peers
serverconfig:
$ref: '#/definitions/ServerConfig'
type: object
x-go-package: github.com/gravitl/netmaker/models
ObjectIdentifier:
items:
format: int64
type: integer
title: An ObjectIdentifier represents an ASN.1 OBJECT IDENTIFIER.
type: array
x-go-package: encoding/asn1
PeerConfig:
description: |-
Because the zero value of some Go types may be significant to WireGuard for
PeerConfig fields, pointer types are used for some of these fields. Only
pointer fields which are not nil will be applied when configuring a peer.
properties:
AllowedIPs:
description: |-
AllowedIPs specifies a list of allowed IP addresses in CIDR notation
for this peer.
items:
$ref: '#/definitions/IPNet'
type: array
Endpoint:
$ref: '#/definitions/UDPAddr'
PersistentKeepaliveInterval:
$ref: '#/definitions/Duration'
PresharedKey:
$ref: '#/definitions/Key'
PublicKey:
$ref: '#/definitions/Key'
Remove:
description: |-
Remove specifies if the peer with this public key should be removed
from a device's peer list.
type: boolean
ReplaceAllowedIPs:
description: |-
ReplaceAllowedIPs specifies if the allowed IPs specified in this peer
configuration should replace any existing ones, instead of appending them
to the allowed IPs list.
type: boolean
UpdateOnly:
description: |-
UpdateOnly specifies that an operation will only occur on this peer
if the peer already exists as part of the interface.
type: boolean
title: A PeerConfig is a WireGuard device peer configuration.
type: object
x-go-package: golang.zx2c4.com/wireguard/wgctrl/wgtypes
PrivateKey:
items:
format: uint8
type: integer
title: PrivateKey is the type of Ed25519 private keys. It implements crypto.Signer.
type: array
x-go-package: crypto/ed25519
RegisterRequest:
description: RegisterRequest - struct for registation with netmaker server
properties:
CommonName:
$ref: '#/definitions/Name'
Key:
$ref: '#/definitions/PrivateKey'
type: object
x-go-package: github.com/gravitl/netmaker/netclient/config
RelayRequest:
description: RelayRequest - relay request struct
properties:
netid:
type: string
x-go-name: NetID
nodeid:
type: string
x-go-name: NodeID
relayaddrs:
items:
type: string
type: array
x-go-name: RelayAddrs
type: object
x-go-package: github.com/gravitl/netmaker/models
ServerConfig:
description: ServerConfig - server conf struct
properties:
APIConnString:
type: string
APIHost:
type: string
APIPort:
type: string
AllowedOrigin:
type: string
AuthProvider:
type: string
AzureTenant:
type: string
ClientID:
type: string
ClientSecret:
type: string
CoreDNSAddr:
type: string
DNSKey:
type: string
DNSMode:
type: string
Database:
type: string
DisableRemoteIPCheck:
type: string
DisplayKeys:
type: string
FrontendURL:
type: string
HostNetwork:
type: string
MQHOST:
type: string
MQPort:
type: string
MQServerPort:
type: string
ManageIPTables:
type: string
MasterKey:
type: string
MessageQueueBackend:
type: string
NodeID:
type: string
OIDCIssuer:
type: string
Platform:
type: string
PortForwardServices:
type: string
PublicIPService:
type: string
RestBackend:
type: string
SQLConn:
type: string
Server:
type: string
Telemetry:
type: string
Verbosity:
format: int32
type: integer
Version:
type: string
type: object
x-go-package: github.com/gravitl/netmaker/config
SuccessResponse:
properties:
Code:
format: int64
type: integer
Message:
type: string
Response: {}
title: SuccessResponse is struct for sending error message with code.
type: object
x-go-package: github.com/gravitl/netmaker/models
TrafficKeys:
description: TrafficKeys - struct to hold public keys
properties:
mine:
items:
format: uint8
type: integer
type: array
x-go-name: Mine
server:
items:
format: uint8
type: integer
type: array
x-go-name: Server
type: object
x-go-package: github.com/gravitl/netmaker/models
UDPAddr:
properties:
IP:
type: string
Port:
format: int64
type: integer
Zone:
type: string
title: UDPAddr represents the address of a UDP end point.
type: object
x-go-package: net
User:
description: User struct - struct for Users
properties:
isadmin:
type: boolean
x-go-name: IsAdmin
networks:
items:
type: string
type: array
x-go-name: Networks
password:
type: string
x-go-name: Password
username:
type: string
x-go-name: UserName
type: object
x-go-package: github.com/gravitl/netmaker/models
UserAuthParams:
description: UserAuthParams - user auth params struct
properties:
password:
type: string
x-go-name: Password
username:
type: string
x-go-name: UserName
type: object
x-go-package: github.com/gravitl/netmaker/models
host: netmaker.io
info:
description: |-
API Usage
Most actions that can be performed via API can be performed via UI. We recommend managing your networks using the official netmaker-ui project. However, Netmaker can also be run without the UI, and all functions can be achieved via API calls. If your use case requires using Netmaker without the UI or you need to do some troubleshooting/advanced configuration, using the API directly may help.
Authentication
API calls must be authenticated via a header of the format -H “Authorization: Bearer <YOUR_SECRET_KEY>” There are two methods to obtain YOUR_SECRET_KEY: 1. Using the masterkey. By default, this value is “secret key,” but you should change this on your instance and keep it secure. This value can be set via env var at startup or in a config file (config/environments/< env >.yaml). See the [Netmaker](https://docs.netmaker.org/index.html) documentation for more details. 2. Using a JWT received for a node. This can be retrieved by calling the /api/nodes/<network>/authenticate endpoint, as documented below.
title: Netmaker
version: 0.20.3
paths:
/api/dns:
get:
operationId: getAllDNS
responses:
"200":
$ref: '#/responses/dnsResponse'
schemes:
- https
summary: Gets all DNS entries.
tags:
- dns
/api/dns/{network}:
post:
operationId: createDNS
parameters:
- description: Network
in: path
name: network
required: true
type: string
x-go-name: Network
- description: DNS Entry
in: body
name: body
schema:
items:
$ref: '#/definitions/DNSEntry'
type: array
x-go-name: Body
responses:
"200":
$ref: '#/responses/dnsResponse'
schemes:
- https
summary: Create a DNS entry.
tags:
- dns
/api/dns/{network}/{domain}:
delete:
operationId: deleteDNS
parameters:
- description: Network
in: path
name: network
required: true
type: string
x-go-name: Network
- description: Domain
in: path
name: domain
required: true
type: string
x-go-name: Domain
responses:
"200":
$ref: '#/responses/stringJSONResponse'
schemes:
- https
summary: Delete a DNS entry.
tags:
- dns
/api/dns/adm/{network}:
get:
operationId: getDNS
parameters:
- description: Network
in: path
name: network
required: true
type: string
x-go-name: Network
responses:
"200":
$ref: '#/responses/dnsResponse'
schemes:
- https
summary: Gets all DNS entries associated with the network.
tags:
- dns
/api/dns/adm/{network}/custom:
get:
operationId: getCustomDNS
parameters:
- description: Network
in: path
name: network
required: true
type: string
x-go-name: Network
responses:
"200":
$ref: '#/responses/dnsResponse'
schemes:
- https
summary: Gets custom DNS entries associated with a network.
tags:
- dns
/api/dns/adm/{network}/nodes:
get:
operationId: getNodeDNS
parameters:
- description: Network
in: path
name: network
required: true
type: string
x-go-name: Network
schemes:
- https
summary: Gets node DNS entries associated with a network.
tags:
- dns
/api/dns/adm/pushdns:
post:
operationId: pushDNS
responses:
"200":
$ref: '#/responses/dnsStringJSONResponse'
schemes:
- https
summary: Push DNS entries to nameserver.
tags:
- dns
/api/extclients:
get:
operationId: getAllExtClients
parameters:
- description: Networks
in: body
name: networks
schema:
items:
type: string
type: array
x-go-name: Networks
responses:
"200":
$ref: '#/responses/extClientSliceResponse'
schemes:
- https
summary: A separate function to get all extclients, not just extclients for a particular network.
tags:
- ext_client
/api/extclients/{network}:
get:
description: Gets all extclients associated with network, including pending extclients.
operationId: getNetworkExtClients
parameters:
- description: Network
in: path
name: network
required: true
type: string
x-go-name: Network
responses:
"200":
$ref: '#/responses/extClientSliceResponse'
schemes:
- https
summary: Get all extclients associated with network.
tags:
- ext_client
/api/extclients/{network}/{clientid}:
delete:
operationId: deleteExtClient
parameters:
- description: Client ID
in: path
name: clientid
required: true
type: string
x-go-name: ClientID
- description: Network
in: path
name: network
required: true
type: string
x-go-name: Network
responses:
"200":
$ref: '#/responses/successResponse'
schemes:
- https
summary: Delete an individual extclient.
tags:
- ext_client
get:
operationId: getExtClient
parameters:
- description: Client ID
in: path
name: clientid
required: true
type: string
x-go-name: ClientID
- description: Network
in: path
name: network
required: true
type: string
x-go-name: Network
responses:
"200":
$ref: '#/responses/extClientResponse'
schemes:
- https
summary: Get an individual extclient.
tags:
- ext_client
put:
operationId: updateExtClient
parameters:
- description: Client ID
in: path
name: clientid
required: true
type: string
x-go-name: ClientID
- description: Network
in: path
name: network
required: true
type: string
x-go-name: Network
- description: ExtClient
in: body
name: ext_client
schema:
$ref: '#/definitions/ExtClient'
x-go-name: ExtClient
responses:
"200":
$ref: '#/responses/extClientResponse'
schemes:
- https
summary: Update an individual extclient.
tags:
- ext_client
/api/extclients/{network}/{clientid}/{type}:
get:
operationId: getExtClientConf
parameters:
- description: Client ID
in: path
name: clientid
required: true
type: string
x-go-name: ClientID
- description: Network
in: path
name: network
required: true
type: string
x-go-name: Network
responses:
"200":
$ref: '#/responses/extClientResponse'
schemes:
- https
summary: Get an individual extclient.
tags:
- ext_client
/api/extclients/{network}/{nodeid}:
post:
operationId: createExtClient
parameters:
- description: Network
in: path
name: network
required: true
type: string
x-go-name: Network
- description: Node ID
in: path
name: node
required: true
type: string
x-go-name: NodeID
- description: Custom ExtClient
in: body
name: custom_ext_client
schema:
$ref: '#/definitions/CustomExtClient'
x-go-name: CustomExtClient
schemes:
- https
summary: Create an individual extclient. Must have valid key and be unique.
tags:
- ext_client
/api/getip:
get:
operationId: getPublicIP
responses:
"200":
$ref: '#/responses/byteArrayResponse'
schemes:
- https
summary: Get the current public IP address.
tags:
- ipservice
/api/networks:
get:
operationId: getNetworks
parameters:
- description: 'name: networks'
in: header
items:
type: string
name: networks
type: array
x-go-name: Networks
responses:
"200":
$ref: '#/responses/getNetworksSliceResponse'
schemes:
- https
summary: Lists all networks.
tags:
- networks
post:
operationId: createNetwork
parameters:
- description: Network
in: body
name: network
schema:
$ref: '#/definitions/Network'
x-go-name: Network
responses:
"200":
$ref: '#/responses/networkBodyResponse'
schemes:
- https
summary: Create a network.
tags:
- networks
/api/networks/{networkname}:
delete:
operationId: deleteNetwork
parameters:
- description: Network Name
in: path
name: networkname
required: true
type: string
x-go-name: NetworkName
responses:
"200":
$ref: '#/responses/stringJSONResponse'
schemes:
- https
summary: Delete a network. Will not delete if there are any nodes that belong to the network.
tags:
- networks
get:
operationId: getNetwork
parameters:
- description: Network Name
in: path
name: networkname
required: true
type: string
x-go-name: NetworkName
responses:
"200":
$ref: '#/responses/networkBodyResponse'
schemes:
- https
summary: Get a network.
tags:
- networks
put:
operationId: updateNetwork
parameters:
- description: Network
in: body
name: network
schema:
$ref: '#/definitions/Network'
x-go-name: Network
- description: Network Name
in: path
name: networkname
required: true
type: string
x-go-name: NetworkName
responses:
"200":
$ref: '#/responses/networkBodyResponse'
schemes:
- https
summary: Update a network.
tags:
- networks
/api/networks/{networkname}/acls:
get:
operationId: getNetworkACL
parameters:
- description: Network Name
in: path
name: networkname
required: true
type: string
x-go-name: NetworkName
- description: ACL Container
in: body
name: acl_container
schema:
$ref: '#/definitions/ACLContainer'
x-go-name: ACLContainer
responses:
"200":
$ref: '#/responses/aclContainerResponse'
schemes:
- https
summary: Get a network ACL (Access Control List).
tags:
- networks
put:
operationId: updateNetworkACL
parameters:
- description: Network Name
in: path
name: networkname
required: true
type: string
x-go-name: NetworkName
- description: ACL Container
in: body
name: acl_container
schema:
$ref: '#/definitions/ACLContainer'
x-go-name: ACLContainer
responses:
"200":
$ref: '#/responses/aclContainerResponse'
schemes:
- https
summary: Update a network ACL (Access Control List).
tags:
- networks
/api/networks/{networkname}/keys:
get:
operationId: getAccessKeys
parameters:
- description: Network Name
in: path
name: networkname
required: true
type: string
x-go-name: NetworkName
responses:
"200":
$ref: '#/responses/accessKeySliceBodyResponse'
schemes:
- https
summary: Get network access keys for a network.
tags:
- networks
post:
operationId: createAccessKey
parameters:
- description: Network Name
in: path
name: networkname
required: true
type: string
x-go-name: NetworkName
- description: Access Key
in: body
name: access_key
schema:
$ref: '#/definitions/AccessKey'
x-go-name: AccessKey
responses:
"200":
$ref: '#/responses/accessKeyBodyResponse'
schemes:
- https
summary: Create a network access key.
tags:
- networks
/api/networks/{networkname}/keys/{name}:
delete:
operationId: deleteAccessKey
parameters:
- description: Network Name
in: path
name: networkname
required: true
type: string
x-go-name: NetworkName
- description: Access Key Name
in: path
name: access_key_name
required: true
type: string
x-go-name: AccessKeyName
responses:
"200":
description: ""
schemes:
- https
summary: Delete a network access key.
tags:
- networks
/api/networks/{networkname}/keyupdate:
post:
operationId: keyUpdate
parameters:
- description: Network Name
in: path
name: networkname
required: true
type: string
x-go-name: NetworkName
responses:
"200":
$ref: '#/responses/networkBodyResponse'
schemes:
- https
summary: Update keys for a network.
tags:
- networks
/api/nodes:
get:
operationId: getAllNodes
responses:
"200":
$ref: '#/responses/nodeSliceResponse'
schemes:
- https
summary: Get all nodes across all networks.
tags:
- nodes
/api/nodes/{network}:
get:
operationId: getNetworkNodes
responses:
"200":
$ref: '#/responses/nodeSliceResponse'
schemes:
- https
summary: Gets all nodes associated with network including pending nodes.
tags:
- nodes
post:
operationId: createNode
responses:
"200":
$ref: '#/responses/nodeGetResponse'
schemes:
- https
summary: Create a node on a network.
tags:
- nodes
/api/nodes/{network}/{nodeid}:
delete:
operationId: deleteNode
parameters:
- description: Network
in: path
name: network
required: true
type: string
x-go-name: Network
- description: Node ID
in: path
name: nodeid
required: true
type: string
x-go-name: NodeID
- description: Node
in: body
name: node
schema:
$ref: '#/definitions/Node'
x-go-name: Node
responses:
"200":
$ref: '#/responses/nodeResponse'
schemes:
- https
summary: Delete an individual node.
tags:
- nodes
get:
operationId: getNode
parameters:
- description: Network
in: path
name: network
required: true
type: string
x-go-name: Network
- description: Node ID
in: path
name: nodeid
required: true
type: string
x-go-name: NodeID
responses:
"200":
$ref: '#/responses/nodeResponse'
schemes:
- https
summary: Get an individual node.
tags:
- nodes
put:
operationId: updateNode
parameters:
- description: Network
in: path
name: network
required: true
type: string
x-go-name: Network
- description: Node ID
in: path
name: nodeid
required: true
type: string
x-go-name: NodeID
- description: Node
in: body
name: node
schema:
$ref: '#/definitions/Node'
x-go-name: Node
responses:
"200":
$ref: '#/responses/nodeResponse'
schemes:
- https
summary: Update an individual node.
tags:
- nodes
/api/nodes/{network}/{nodeid}/approve:
post:
operationId: uncordonNode
parameters:
- description: Network
in: path
name: network
required: true
type: string
x-go-name: Network
- description: Node ID
in: path
name: nodeid
required: true
type: string
x-go-name: NodeID
responses:
"200":
$ref: '#/responses/nodeResponse'
schemes:
- https
summary: Takes a node out of pending state.
tags:
- nodes
/api/nodes/{network}/{nodeid}/creategateway:
post:
operationId: createEgressGateway
parameters:
- description: Network
in: path
name: network
required: true
type: string
x-go-name: Network
- description: Node ID
in: path
name: nodeid
required: true
type: string
x-go-name: NodeID
- description: Egress Gateway Request
in: body
name: egress_gateway_request
schema:
$ref: '#/definitions/EgressGatewayRequest'
x-go-name: EgressGatewayRequest
responses:
"200":
$ref: '#/responses/nodeResponse'
schemes:
- https
summary: Create an egress gateway.
tags:
- nodes
/api/nodes/{network}/{nodeid}/createingress:
post:
operationId: createIngressGateway
parameters:
- description: Network
in: path
name: network
required: true
type: string
x-go-name: Network
- description: Node ID
in: path
name: nodeid
required: true
type: string
x-go-name: NodeID
responses:
"200":
$ref: '#/responses/nodeResponse'
schemes:
- https
summary: Create an ingress gateway.
tags:
- nodes
/api/nodes/{network}/{nodeid}/createrelay:
post:
operationId: createRelay
parameters:
- description: Network
in: path
name: network
required: true
type: string
x-go-name: Network
- description: Node ID
in: path
name: nodeid
required: true
type: string
x-go-name: NodeID
- description: Relay Request
in: body
name: relay_request
schema:
$ref: '#/definitions/RelayRequest'
x-go-name: RelayRequest
responses:
"200":
$ref: '#/responses/nodeResponse'
schemes:
- https
summary: Create a relay.
tags:
- nodes
/api/nodes/{network}/{nodeid}/deletegateway:
delete:
operationId: deleteEgressGateway
parameters:
- description: Network
in: path
name: network
required: true
type: string
x-go-name: Network
- description: Node ID
in: path
name: nodeid
required: true
type: string
x-go-name: NodeID
responses:
"200":
$ref: '#/responses/nodeResponse'
schemes:
- https
summary: Delete an egress gateway.
tags:
- nodes
/api/nodes/{network}/{nodeid}/deleteingress:
delete:
operationId: deleteIngressGateway
parameters:
- description: Network
in: path
name: network
required: true
type: string
x-go-name: Network
- description: Node ID
in: path
name: nodeid
required: true
type: string
x-go-name: NodeID
responses:
"200":
$ref: '#/responses/nodeResponse'
schemes:
- https
summary: Delete an ingress gateway.
tags:
- nodes
/api/nodes/{network}/{nodeid}/deleterelay:
delete:
operationId: deleteRelay
parameters:
- description: Network
in: path
name: network
required: true
type: string
x-go-name: Network
- description: Node ID
in: path
name: nodeid
required: true
type: string
x-go-name: NodeID
responses:
"200":
$ref: '#/responses/nodeResponse'
schemes:
- https
summary: Remove a relay.
tags:
- nodes
/api/nodes/adm/{network}/authenticate:
post:
operationId: authenticate
parameters:
- description: AuthParams
in: body
name: auth_params
schema:
$ref: '#/definitions/AuthParams'
x-go-name: AuthParams
responses:
"200":
$ref: '#/responses/successResponse'
schemes:
- https
summary: Authenticate to make further API calls related to a network.
tags:
- nodes
/api/oauth/login:
get:
operationId: HandleAuthLogin
schemes:
- https
summary: Handles OAuth login.
tags:
- nodes
/api/server/getconfig:
get:
operationId: getConfig
responses:
"200":
$ref: '#/responses/serverConfigResponse'
schemes:
- https
summary: Get the server configuration.
tags:
- server
/api/server/getserverinfo:
get:
operationId: getServerInfo
responses:
"200":
$ref: '#/responses/serverConfigResponse'
schemes:
- https
summary: Get the server configuration.
tags:
- server
/api/server/register:
post:
operationId: register
parameters:
- description: Register Request
in: body
name: register_request
schema:
$ref: '#/definitions/RegisterRequest'
x-go-name: RegisterRequest
responses:
"200":
$ref: '#/responses/registerResponse'
schemes:
- https
summary: Registers a client with the server and return the Certificate Authority and certificate.
tags:
- server
/api/users:
get:
operationId: getUsers
responses:
"200":
$ref: '#/responses/userBodyResponse'
schemes:
- https
summary: Get all users.
tags:
- user
/api/users/{username}:
delete:
operationId: deleteUser
parameters:
- description: Username
in: path
name: username
required: true
type: string
x-go-name: Username
responses:
"200":
$ref: '#/responses/userBodyResponse'
schemes:
- https
summary: Delete a user.
tags:
- user
get:
operationId: getUser
parameters:
- description: Username
in: path
name: username
required: true
type: string
x-go-name: Username
responses:
"200":
$ref: '#/responses/userBodyResponse'
schemes:
- https
summary: Get an individual user.
tags:
- user
post:
operationId: createUser
parameters:
- description: User
in: body
name: user
schema:
$ref: '#/definitions/User'
x-go-name: User
- description: Username
in: path
name: username
required: true
type: string
x-go-name: Username
responses:
"200":
$ref: '#/responses/userBodyResponse'
schemes:
- https
summary: Create a user.
tags:
- user
put:
operationId: updateUser
parameters:
- description: User
in: body
name: user
schema:
$ref: '#/definitions/User'
x-go-name: User
- description: Username
in: path
name: username
required: true
type: string
x-go-name: Username
responses:
"200":
$ref: '#/responses/userBodyResponse'
schemes:
- https
summary: Update a user.
tags:
- user
/api/users/{username}/adm:
put:
operationId: updateUserAdm
parameters:
- description: Username
in: path
name: username
required: true
type: string
x-go-name: Username
responses:
"200":
$ref: '#/responses/userBodyResponse'
schemes:
- https
summary: Updates the given admin user's info (as long as the user is an admin).
tags:
- user
/api/users/adm/authenticate:
post:
operationId: authenticateUser
parameters:
- description: User Auth Params
in: body
name: user_auth_params
schema:
$ref: '#/definitions/UserAuthParams'
x-go-name: UserAuthParams
responses:
"200":
$ref: '#/responses/successResponse'
schemes:
- https
summary: Node authenticates using its password and retrieves a JWT for authorization.
tags:
- user
/api/users/adm/createadmin:
post:
operationId: createAdmin
parameters:
- description: User
in: body
name: user
schema:
$ref: '#/definitions/User'
x-go-name: User
responses:
"200":
$ref: '#/responses/userBodyResponse'
schemes:
- https
summary: Make a user an admin.
tags:
- user
/api/users/adm/hasadmin:
get:
operationId: hasAdmin
responses:
"200":
$ref: '#/responses/successResponse'
schemes:
- https
summary: Checks whether the server has an admin.
tags:
- user
/api/users/networks/{username}:
put:
operationId: updateUserNetworks
parameters:
- description: User
in: body
name: user
schema:
$ref: '#/definitions/User'
x-go-name: User
- description: Username
in: path
name: username
required: true
type: string
x-go-name: Username
responses:
"200":
$ref: '#/responses/userBodyResponse'
schemes:
- https
summary: Updates the networks of the given user.
tags:
- user
/meshclient/files/{filename}:
get:
operationId: fileServer
schemes:
- https
summary: Retrieve a file from the file server.
tags:
- meshclient
produces:
- application/json
responses:
accessKeyBodyResponse:
description: ""
schema:
$ref: '#/definitions/AccessKey'
accessKeySliceBodyResponse:
description: ""
schema:
items:
$ref: '#/definitions/AccessKey'
type: array
aclContainerResponse:
description: ""
schema:
$ref: '#/definitions/ACLContainer'
boolResponse:
description: ""
byteArrayResponse:
description: ""
schema:
items:
format: uint8
type: integer
type: array
dnsResponse:
description: Success
schema:
items:
$ref: '#/definitions/DNSEntry'
type: array
extClientResponse:
description: ""
schema:
$ref: '#/definitions/ExtClient'
extClientSliceResponse:
description: ""
schema:
items:
$ref: '#/definitions/ExtClient'
type: array
getNetworksSliceResponse:
description: ""
schema:
items:
$ref: '#/definitions/Network'
type: array
networkBodyResponse:
description: ""
schema:
$ref: '#/definitions/Network'
nodeGetResponse:
description: ""
schema:
$ref: '#/definitions/NodeGet'
nodeLastModifiedResponse:
description: ""
nodeResponse:
description: ""
schema:
$ref: '#/definitions/Node'
nodeSliceResponse:
description: ""
schema:
items:
$ref: '#/definitions/Node'
type: array
serverConfigResponse:
description: ""
schema:
$ref: '#/definitions/ServerConfig'
stringJSONResponse:
description: ""
successResponse:
description: ""
schema:
$ref: '#/definitions/SuccessResponse'
userBodyResponse:
description: ""
schema:
$ref: '#/definitions/User'
schemes:
- https
swagger: "2.0"