components: schemas: ABIErrorPayload: additionalProperties: false properties: code: $ref: "#/components/schemas/PartoutErrorCode" userInfo: type: object required: - code type: object ParseErrorInfo: additionalProperties: false properties: name: type: string details: type: string required: - name - details type: object Address: type: string description: A hostname or IP address. ConnectionStatus: enum: - disconnected - connecting - connected - disconnecting type: string x-enum-varnames: - disconnected - connecting - connected - disconnecting description: The status of a ``Connection``. CustomModule: additionalProperties: false properties: innerType: $ref: "#/components/schemas/ModuleType" json: $ref: "#/components/schemas/JSONValue" required: - innerType - json type: object description: A type-erased ``Module`` for encoding external implementations. DNSModule: additionalProperties: false properties: id: $ref: "#/components/schemas/UniqueID" protocolType: $ref: "#/components/schemas/DNSModule.ProtocolType" servers: items: $ref: "#/components/schemas/Address" type: array domainName: $ref: "#/components/schemas/Address" searchDomains: items: $ref: "#/components/schemas/Address" type: array inheritsVPN: type: boolean domainPolicy: $ref: "#/components/schemas/DNSModule.DomainPolicy" routesThroughVPN: type: boolean required: - id - protocolType - servers type: object description: DNS settings. DNSModule.DomainPolicy: enum: - match - matchAndSearch type: string x-enum-varnames: - match - matchAndSearch DNSModule.ProtocolType: discriminator: mapping: cleartext: "#/components/schemas/DNSModule.ProtocolType.cleartext" https: "#/components/schemas/DNSModule.ProtocolType.https" tls: "#/components/schemas/DNSModule.ProtocolType.tls" propertyName: type properties: type: type: string required: - type type: object DNSModule.ProtocolType.cleartext: additionalProperties: false allOf: - $ref: "#/components/schemas/DNSModule.ProtocolType" properties: type: const: cleartext type: string required: - type type: object DNSModule.ProtocolType.https: additionalProperties: false allOf: - $ref: "#/components/schemas/DNSModule.ProtocolType" properties: type: const: https type: string url: format: uri type: string required: - type - url type: object DNSModule.ProtocolType.tls: additionalProperties: false allOf: - $ref: "#/components/schemas/DNSModule.ProtocolType" properties: type: const: tls type: string hostname: type: string required: - type - hostname type: object DNSProtocol: enum: - cleartext - https - tls type: string x-enum-varnames: - cleartext - https - tls description: The protocol used in DNS servers. x-enum-descriptions: - The value to fall back to when unset. Standard cleartext DNS (port 53). - DNS over HTTPS. - DNS over TLS (port 853). DataCount: additionalProperties: false properties: received: $ref: "#/components/schemas/UInt64" description: Received bytes count. sent: $ref: "#/components/schemas/UInt64" description: Sent bytes count. required: - received - sent type: object description: A pair of received/sent bytes count. Endpoint: type: string description: Represents an endpoint. EndpointProtocol: type: string description: Defines the communication protocol of an endpoint. ExtendedEndpoint: type: string description: Aggregates an address and an ``EndpointProtocol``. HTTPProxyModule: additionalProperties: false properties: id: $ref: "#/components/schemas/UniqueID" proxy: $ref: "#/components/schemas/Endpoint" secureProxy: $ref: "#/components/schemas/Endpoint" pacURL: format: uri type: string bypassDomains: items: $ref: "#/components/schemas/Address" type: array required: - id - bypassDomains type: object description: HTTP proxy settings. IPModule: additionalProperties: false properties: id: $ref: "#/components/schemas/UniqueID" ipv4: $ref: "#/components/schemas/IPSettings" ipv6: $ref: "#/components/schemas/IPSettings" mtu: type: integer required: - id type: object description: IP and routes. IPSettings: additionalProperties: false properties: subnets: items: $ref: "#/components/schemas/Subnet" type: array description: The subnets. includedRoutes: items: $ref: "#/components/schemas/Route" type: array description: The included routes. excludedRoutes: items: $ref: "#/components/schemas/Route" type: array description: The excluded routes. required: - subnets - includedRoutes - excludedRoutes type: object description: IP settings and routes. IPSocketType: enum: - UDP - TCP - UDP4 - TCP4 - UDP6 - TCP6 type: string x-enum-varnames: - udp - tcp - udp4 - tcp4 - udp6 - tcp6 description: A socket type with optional info about the IP endpoint. x-enum-descriptions: - UDP socket type. - TCP socket type. - UDP socket type (IPv4). - TCP socket type (IPv4). - UDP socket type (IPv6). - TCP socket type (IPv6). Int16: type: integer Int32: type: integer Int64: format: int64 type: integer Int8: type: integer JSONValue: type: object ModuleType: enum: - Custom - DNS - HTTPProxy - IP - OnDemand - OpenVPN - Provider - WireGuard - Undefined type: string x-enum-varnames: - Custom - DNS - HTTPProxy - IP - OnDemand - OpenVPN - Provider - WireGuard - Undefined description: Raw type univocally associated to each ``Module`` implementation. OnDemandModule: additionalProperties: false properties: id: $ref: "#/components/schemas/UniqueID" policy: $ref: "#/components/schemas/OnDemandModule.Policy" withSSIDs: additionalProperties: type: boolean type: object withOtherNetworks: items: $ref: "#/components/schemas/OnDemandModule.OtherNetwork" type: array uniqueItems: true required: - id - policy - withSSIDs - withOtherNetworks type: object description: On-demand settings. OnDemandModule.OtherNetwork: enum: - mobile - ethernet type: string x-enum-varnames: - mobile - ethernet OnDemandModule.Policy: enum: - any - including - excluding type: string x-enum-varnames: - any - including - excluding OpenVPN.Cipher: enum: - "AES-128-CBC" - "AES-192-CBC" - "AES-256-CBC" - "AES-128-GCM" - "AES-192-GCM" - "AES-256-GCM" type: string x-enum-varnames: - aes128cbc - aes192cbc - aes256cbc - aes128gcm - aes192gcm - aes256gcm description: Encryption algorithm. x-enum-descriptions: - AES encryption with 128-bit key size and CBC. - AES encryption with 192-bit key size and CBC. - AES encryption with 256-bit key size and CBC. - AES encryption with 128-bit key size and GCM. - AES encryption with 192-bit key size and GCM. - AES encryption with 256-bit key size and GCM. OpenVPN.CompressionAlgorithm: enum: - 0 - 1 - 2 type: integer x-enum-varnames: - disabled - LZO - other description: Defines the type of compression algorithm. OpenVPN.CompressionFraming: enum: - 0 - 1 - 2 - 3 type: integer x-enum-varnames: - disabled - compLZO - compress - compressV2 description: Defines the type of compression framing. OpenVPN.Configuration: additionalProperties: false properties: cipher: $ref: "#/components/schemas/OpenVPN.Cipher" description: "- Seealso: `Configuration.Builder.cipher`" dataCiphers: items: $ref: "#/components/schemas/OpenVPN.Cipher" type: array description: "- Seealso: `Configuration.Builder.dataCiphers`" digest: $ref: "#/components/schemas/OpenVPN.Digest" description: "- Seealso: `Configuration.Builder.digest`" compressionFraming: $ref: "#/components/schemas/OpenVPN.CompressionFraming" description: "- Seealso: `Configuration.Builder.compressionFraming`" compressionAlgorithm: $ref: "#/components/schemas/OpenVPN.CompressionAlgorithm" description: "- Seealso: `Configuration.Builder.compressionAlgorithm`" ca: $ref: "#/components/schemas/OpenVPN.CryptoContainer" description: "- Seealso: `Configuration.Builder.ca`" clientCertificate: $ref: "#/components/schemas/OpenVPN.CryptoContainer" description: "- Seealso: `Configuration.Builder.clientCertificate`" clientKey: $ref: "#/components/schemas/OpenVPN.CryptoContainer" description: "- Seealso: `Configuration.Builder.clientKey`" tlsWrap: $ref: "#/components/schemas/OpenVPN.TLSWrap" description: "- Seealso: `Configuration.Builder.tlsWrap`" tlsSecurityLevel: type: integer description: "- Seealso: `Configuration.Builder.tlsSecurityLevel`" keepAliveInterval: type: number description: "- Seealso: `Configuration.Builder.keepAliveInterval`" keepAliveTimeout: type: number description: "- Seealso: `Configuration.Builder.keepAliveTimeout`" renegotiatesAfter: type: number description: "- Seealso: `Configuration.Builder.renegotiatesAfter`" remotes: items: $ref: "#/components/schemas/ExtendedEndpoint" type: array description: "- Seealso: `Configuration.Builder.remotes`" checksEKU: type: boolean description: "- Seealso: `Configuration.Builder.checksEKU`" checksSANHost: type: boolean description: "- Seealso: `Configuration.Builder.checksSANHost`" sanHost: type: string description: "- Seealso: `Configuration.Builder.sanHost`" randomizeEndpoint: type: boolean description: "- Seealso: `Configuration.Builder.randomizeEndpoint`" randomizeHostnames: type: boolean description: "- Seealso: `Configuration.Builder.randomizeHostnames`" usesPIAPatches: type: boolean description: "- Seealso: `Configuration.Builder.usesPIAPatches`" mtu: type: integer description: "- Seealso: `Configuration.Builder.mtu`" authUserPass: type: boolean description: "- Seealso: `Configuration.Builder.authUserPass`" staticChallenge: type: boolean description: "- Seealso: `Configuration.Builder.staticChallenge`" authToken: type: string description: "- Seealso: `Configuration.Builder.authToken`" peerId: $ref: "#/components/schemas/UInt32" description: "- Seealso: `Configuration.Builder.peerId`" ipv4: $ref: "#/components/schemas/IPSettings" description: "- Seealso: `Configuration.Builder.ipv4`" ipv6: $ref: "#/components/schemas/IPSettings" description: "- Seealso: `Configuration.Builder.ipv6`" routes4: items: $ref: "#/components/schemas/Route" type: array description: "- Seealso: `Configuration.Builder.routes4`" routes6: items: $ref: "#/components/schemas/Route" type: array description: "- Seealso: `Configuration.Builder.routes6`" routeGateway4: $ref: "#/components/schemas/Address" description: "- Seealso: `Configuration.Builder.routeGateway4`" routeGateway6: $ref: "#/components/schemas/Address" description: "- Seealso: `Configuration.Builder.routeGateway6`" dnsServers: items: type: string type: array description: "- Seealso: `Configuration.Builder.dnsServers`" dnsDomain: type: string description: "- Seealso: `Configuration.Builder.dnsDomain`" searchDomains: items: type: string type: array description: "- Seealso: `Configuration.Builder.searchDomains`" httpProxy: $ref: "#/components/schemas/Endpoint" description: "- Seealso: `Configuration.Builder.httpProxy`" httpsProxy: $ref: "#/components/schemas/Endpoint" description: "- Seealso: `Configuration.Builder.httpsProxy`" proxyAutoConfigurationURL: format: uri type: string description: "- Seealso: `Configuration.Builder.proxyAutoConfigurationURL`" proxyBypassDomains: items: type: string type: array description: "- Seealso: `Configuration.Builder.proxyBypassDomains`" routingPolicies: items: $ref: "#/components/schemas/OpenVPN.RoutingPolicy" type: array description: "- Seealso: `Configuration.Builder.routingPolicies`" noPullMask: items: $ref: "#/components/schemas/OpenVPN.PullMask" type: array description: "- Seealso: `Configuration.Builder.noPullMask`" xorMethod: $ref: "#/components/schemas/OpenVPN.ObfuscationMethod" description: "- Seealso: `Configuration.Builder.xorMethod`" type: object description: The immutable configuration for `OpenVPNSession`. OpenVPN.Credentials: additionalProperties: false properties: username: type: string description: The username. password: type: string description: The password. otpMethod: $ref: "#/components/schemas/OpenVPN.Credentials.OTPMethod" description: The OTP method (defaults to none). otp: type: string description: The OTP. required: - username - password - otpMethod type: object description: A set of credentials for authentication. OpenVPN.Credentials.OTPMethod: enum: - none - append - encode type: string x-enum-varnames: - none - append - encode OpenVPN.CryptoContainer: type: string description: Represents a cryptographic container in PEM format. OpenVPN.Digest: enum: - SHA1 - SHA224 - SHA256 - SHA384 - SHA512 type: string x-enum-varnames: - sha1 - sha224 - sha256 - sha384 - sha512 description: Message digest algorithm. x-enum-descriptions: - SHA1 message digest. - SHA224 message digest. - SHA256 message digest. - SHA256 message digest. - SHA256 message digest. OpenVPN.ObfuscationMethod: discriminator: mapping: obfuscate: "#/components/schemas/OpenVPN.ObfuscationMethod.obfuscate" reverse: "#/components/schemas/OpenVPN.ObfuscationMethod.reverse" xormask: "#/components/schemas/OpenVPN.ObfuscationMethod.xormask" xorptrpos: "#/components/schemas/OpenVPN.ObfuscationMethod.xorptrpos" propertyName: type properties: type: type: string required: - type type: object description: The obfuscation method. OpenVPN.ObfuscationMethod.obfuscate: additionalProperties: false allOf: - $ref: "#/components/schemas/OpenVPN.ObfuscationMethod" properties: type: const: obfuscate type: string mask: $ref: "#/components/schemas/SecureData" required: - type - mask type: object description: Performs several of the above steps (xormask -> xorptrpos -> reverse -> xorptrpos). OpenVPN.ObfuscationMethod.reverse: additionalProperties: false allOf: - $ref: "#/components/schemas/OpenVPN.ObfuscationMethod" properties: type: const: reverse type: string required: - type type: object description: Reverses the order of bytes in each buffer except for the first (abcde becomes aedcb). OpenVPN.ObfuscationMethod.xormask: additionalProperties: false allOf: - $ref: "#/components/schemas/OpenVPN.ObfuscationMethod" properties: type: const: xormask type: string mask: $ref: "#/components/schemas/SecureData" required: - type - mask type: object description: XORs the bytes in each buffer with the given mask. OpenVPN.ObfuscationMethod.xorptrpos: additionalProperties: false allOf: - $ref: "#/components/schemas/OpenVPN.ObfuscationMethod" properties: type: const: xorptrpos type: string required: - type type: object description: XORs each byte with its position in the packet. OpenVPN.PullMask: enum: - routes - dns - proxy type: string x-enum-varnames: - routes - dns - proxy description: Settings that can be pulled from server. x-enum-descriptions: - Routes and gateways. - DNS settings. - Proxy settings. OpenVPN.RoutingPolicy: enum: - IPv4 - IPv6 - blockLocal type: string x-enum-varnames: - IPv4 - IPv6 - blockLocal description: Routing policy. x-enum-descriptions: - All IPv4 traffic goes through the VPN. - All IPv6 traffic goes through the VPN. - Block LAN while connected. OpenVPN.StaticKey: additionalProperties: false properties: data: $ref: "#/components/schemas/SecureData" dir: $ref: "#/components/schemas/OpenVPN.StaticKey.Direction" required: - data type: object description: Represents an OpenVPN static key file (as generated with --genkey) OpenVPN.StaticKey.Direction: enum: - 0 - 1 type: integer x-enum-varnames: - server - client description: The key-direction field, usually 0 on servers and 1 on clients. x-enum-descriptions: - Conventional server direction (implicit for tls-crypt). - Conventional client direction (implicit for tls-crypt). OpenVPN.TLSWrap: additionalProperties: false properties: strategy: $ref: "#/components/schemas/OpenVPN.TLSWrap.Strategy" description: The wrapping strategy. key: $ref: "#/components/schemas/OpenVPN.StaticKey" description: The static encryption key. wrappedKey: $ref: "#/components/schemas/SecureData" description: "The wrapped client key appended to initial tls-crypt-v2 packets." required: - strategy - key type: object description: Holds parameters for TLS wrapping. OpenVPN.TLSWrap.Strategy: enum: - auth - crypt - "crypt-v2" type: string x-enum-varnames: - auth - crypt - cryptV2 description: The wrapping strategy. x-enum-descriptions: - Authenticates payload (--tls-auth). - Encrypts payload (--tls-crypt). - "Encrypts payload with a client-specific key (--tls-crypt-v2)." OpenVPNModule: additionalProperties: false properties: id: $ref: "#/components/schemas/UniqueID" configuration: $ref: "#/components/schemas/OpenVPN.Configuration" credentials: $ref: "#/components/schemas/OpenVPN.Credentials" requiresInteractiveCredentials: type: boolean required: - id type: object description: A connection module providing an OpenVPN connection. PartoutErrorCode: enum: - cached - notFound - operationCancelled - releasedObject - scriptException - timeout - unhandled - incompatibleModules - incompleteModule - noActiveModules - nonFinalModules - requiredImplementation - unexpectedModuleType - unknownImportedModule - unknownModuleHandler - authentication - crypto - dnsFailure - exhaustedEndpoints - fdUnavailable - ioFailure - linkNotActive - networkChanged - networkUnreachable - socketConfiguration - tunNotActive - tunNotAvailable - decoding - encoding - invalidField - invalidValue - parsing - keychainAddItem - keychainItemNotFound - passphraseRequired - OpenVPN.compressionMismatch - OpenVPN.connectionFailure - OpenVPN.noRouting - OpenVPN.otpRequired - OpenVPN.passphraseRequired - OpenVPN.recoverableAuthentication - OpenVPN.serverShutdown - OpenVPN.tlsFailure - OpenVPN.unsupportedAlgorithm - OpenVPN.unsupportedCompression - OpenVPN.unsupportedOption - WireGuard.emptyPeers type: string x-enum-varnames: - cached - notFound - operationCancelled - releasedObject - scriptException - timeout - unhandled - incompatibleModules - incompleteModule - noActiveModules - nonFinalModules - requiredImplementation - unexpectedModuleType - unknownImportedModule - unknownModuleHandler - authentication - crypto - dnsFailure - exhaustedEndpoints - fdUnavailable - ioFailure - linkNotActive - networkChanged - networkUnreachable - socketConfiguration - tunNotActive - tunNotAvailable - decoding - encoding - invalidField - invalidValue - parsing - keychainAddItem - keychainItemNotFound - passphraseRequired - openVPNCompressionMismatch - openVPNConnectionFailure - openVPNNoRouting - openVPNOTPRequired - openVPNPassphraseRequired - openVPNRecoverableAuthentication - openVPNServerShutdown - openVPNTLSFailure - openVPNUnsupportedAlgorithm - openVPNUnsupportedCompression - openVPNUnsupportedOption - wireGuardEmptyPeers x-enum-descriptions: - Response is cached. - Entity not found. - Operation cancelled or unauthorized. - A required object was released prematurely. - An exception was raised during a script execution. - Operation timed out. - Generic failure. - Some modules are incompatible (`userInfo` is an array of incompatible ``Module``). - A module is incomplete (`userInfo` is the incomplete ``ModuleBuilder`` ID). - The profile has no active modules. - The profile has non-final modules that must be resolved to final modules first. - Missing a required implementation. - Module type is unexpected - Module content is unknown for the importer. - Module handler is unknown. - Authentication failure. - Crypto error. - DNS resolution failure. - No more endpoints available to try. - File descriptor is not available. - I/O failure. - Link device is not active. - Network changed. - Network is unreachable. - Native sockets could not be configured. - TUN device is not active. - TUN device is not available for I/O. - Decoding error. - Encoding error. - Invalid field. - Invalid value. - Parsing error. - Unable to add keychain item. - Keychain item not found. - Compression settings mismatch. - Connection failure. - No routing configuration. - One-time password is required. - Passphrase is required. - Authentication can be retried. - Server requested shutdown. - TLS failure. - Algorithm is unsupported. - Compression setting is unsupported. - Option is unsupported. - Configuration has no peers. Profile: additionalProperties: false properties: version: type: integer id: $ref: "#/components/schemas/UniqueID" name: type: string modules: items: $ref: "#/components/schemas/TaggedModule" type: array activeModulesIds: items: $ref: "#/components/schemas/UniqueID" type: array uniqueItems: true behavior: $ref: "#/components/schemas/ProfileBehavior" userInfo: type: object required: - id - name - modules - activeModulesIds type: object description: A codable wrapper for a profile with all known modules. ProfileBehavior: additionalProperties: false properties: disconnectsOnSleep: type: boolean description: Disconnects when the device goes to sleep. includesAllNetworks: type: boolean description: Attempts to route as much traffic as possible through the tunnel. required: - disconnectsOnSleep type: object description: Advanced flags affecting the behavior of a ``Profile``. Route: additionalProperties: false properties: destination: $ref: "#/components/schemas/Subnet" description: The destination subnet or `nil` if default. gateway: $ref: "#/components/schemas/Address" description: The address of the gateway (falls back to global gateway). type: object description: Represents a route in the routing table. SecureData: type: string description: Wrapper of a byte array with safe encoding capabilities. SocketType: enum: - UDP - TCP type: string x-enum-varnames: - udp - tcp description: A socket type between UDP and TCP. x-enum-descriptions: - UDP socket type. - TCP socket type. Subnet: type: string description: An IPv4/v6 subnet. TaggedModule: discriminator: mapping: Custom: "#/components/schemas/TaggedModule.Custom" DNS: "#/components/schemas/TaggedModule.DNS" HTTPProxy: "#/components/schemas/TaggedModule.HTTPProxy" IP: "#/components/schemas/TaggedModule.IP" OnDemand: "#/components/schemas/TaggedModule.OnDemand" OpenVPN: "#/components/schemas/TaggedModule.OpenVPN" WireGuard: "#/components/schemas/TaggedModule.WireGuard" propertyName: type properties: type: type: string required: - type type: object description: A codable wrapper for all known modules. TaggedModule.Custom: additionalProperties: false allOf: - $ref: "#/components/schemas/TaggedModule" properties: type: const: Custom type: string value: $ref: "#/components/schemas/CustomModule" required: - type - value type: object TaggedModule.DNS: additionalProperties: false allOf: - $ref: "#/components/schemas/TaggedModule" properties: type: const: DNS type: string value: $ref: "#/components/schemas/DNSModule" required: - type - value type: object TaggedModule.HTTPProxy: additionalProperties: false allOf: - $ref: "#/components/schemas/TaggedModule" properties: type: const: HTTPProxy type: string value: $ref: "#/components/schemas/HTTPProxyModule" required: - type - value type: object TaggedModule.IP: additionalProperties: false allOf: - $ref: "#/components/schemas/TaggedModule" properties: type: const: IP type: string value: $ref: "#/components/schemas/IPModule" required: - type - value type: object TaggedModule.OnDemand: additionalProperties: false allOf: - $ref: "#/components/schemas/TaggedModule" properties: type: const: OnDemand type: string value: $ref: "#/components/schemas/OnDemandModule" required: - type - value type: object TaggedModule.OpenVPN: additionalProperties: false allOf: - $ref: "#/components/schemas/TaggedModule" properties: type: const: OpenVPN type: string value: $ref: "#/components/schemas/OpenVPNModule" required: - type - value type: object TaggedModule.WireGuard: additionalProperties: false allOf: - $ref: "#/components/schemas/TaggedModule" properties: type: const: WireGuard type: string value: $ref: "#/components/schemas/WireGuardModule" required: - type - value type: object TunnelControllerOptions: additionalProperties: false properties: dnsFallbackServers: items: type: string type: array logsSnapshots: type: boolean required: - dnsFallbackServers - logsSnapshots type: object description: Common options to give to ``TunnelController``. TunnelRemoteInfoWrapper: additionalProperties: false properties: profile: $ref: "#/components/schemas/Profile" originalModuleId: $ref: "#/components/schemas/UniqueID" address: $ref: "#/components/schemas/Address" requiresVirtualDevice: type: boolean modules: items: $ref: "#/components/schemas/TaggedModule" type: array required: - profile - originalModuleId - requiresVirtualDevice type: object TunnelSnapshot: additionalProperties: false properties: id: $ref: "#/components/schemas/UniqueID" isEnabled: type: boolean status: $ref: "#/components/schemas/TunnelStatus" onDemand: type: boolean environment: $ref: "#/components/schemas/TunnelSnapshot.Environment" required: - id - isEnabled - status - onDemand type: object description: Returns a tunnel-specific snapshot of a ``Profile``. TunnelSnapshot.Environment: additionalProperties: false properties: connectionStatus: $ref: "#/components/schemas/ConnectionStatus" dataCount: $ref: "#/components/schemas/DataCount" lastErrorCode: type: string required: - connectionStatus - dataCount type: object TunnelStatus: enum: - inactive - activating - active - deactivating type: string x-enum-varnames: - inactive - activating - active - deactivating description: The status of a ``Tunnel``. UInt: type: integer UInt16: type: integer UInt32: type: integer UInt64: format: int64 type: integer UInt8: type: integer UniqueID: type: string WireGuard.Configuration: additionalProperties: false properties: interface: $ref: "#/components/schemas/WireGuard.LocalInterface" description: The local interface. peers: items: $ref: "#/components/schemas/WireGuard.RemoteInterface" type: array description: The peers. required: - interface - peers type: object description: Represents a WireGuard configuration. WireGuard.Key: type: string description: A Base64-encoded key. WireGuard.LocalInterface: additionalProperties: false properties: privateKey: $ref: "#/components/schemas/WireGuard.Key" description: The local private key. addresses: items: $ref: "#/components/schemas/Subnet" type: array description: The local addresses. listenPort: $ref: "#/components/schemas/UInt16" description: The optional UDP port to listen on. dns: $ref: "#/components/schemas/DNSModule" description: The optional DNS settings. mtu: $ref: "#/components/schemas/UInt16" description: The optional MTU. required: - privateKey - addresses type: object description: The parameters of the local interface. WireGuard.RemoteInterface: additionalProperties: false properties: publicKey: $ref: "#/components/schemas/WireGuard.Key" description: The endpoint public key. preSharedKey: $ref: "#/components/schemas/WireGuard.Key" description: The optional endpoint pre-shared key. endpoint: $ref: "#/components/schemas/Endpoint" description: The optional endpoint. allowedIPs: items: $ref: "#/components/schemas/Subnet" type: array description: The list of allowed subnets. keepAlive: $ref: "#/components/schemas/UInt16" description: The keep-alive interval in seconds. required: - publicKey - allowedIPs type: object description: The parameters of the remote interface. WireGuardModule: additionalProperties: false properties: id: $ref: "#/components/schemas/UniqueID" configuration: $ref: "#/components/schemas/WireGuard.Configuration" required: - id type: object description: A connection module providing a WireGuard connection. info: title: codegen version: 1.0.0 openapi: 3.1.0 paths: /: summary: ""