| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866 | basePath: /consumes:    - application/jsondefinitions:    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/modelshost: netmaker.ioinfo:    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.2paths:    /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:                - meshclientproduces:    - application/jsonresponses:    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:    - httpsswagger: "2.0"
 |