Full Code of ViRb3/wgcf for AI

master 6e1d9601880a cached
97 files
473.0 KB
127.2k tokens
1032 symbols
1 requests
Download .txt
Showing preview only (501K chars total). Download the full file or copy to clipboard to get everything.
Repository: ViRb3/wgcf
Branch: master
Commit: 6e1d9601880a
Files: 97
Total size: 473.0 KB

Directory structure:
gitextract_rfy_bp79/

├── .github/
│   ├── dependabot.yml
│   └── workflows/
│       ├── release.yml
│       └── test.yml
├── .gitignore
├── .goreleaser.yml
├── .releaserc.json
├── Dockerfile
├── LICENSE
├── README.md
├── cloudflare/
│   ├── api.go
│   └── util.go
├── cmd/
│   ├── generate/
│   │   └── generate.go
│   ├── register/
│   │   └── register.go
│   ├── root.go
│   ├── shared/
│   │   └── shared.go
│   ├── status/
│   │   └── status.go
│   ├── trace/
│   │   └── trace.go
│   └── update/
│       └── update.go
├── config/
│   └── config.go
├── go.mod
├── go.sum
├── main.go
├── openapi/
│   ├── .gitignore
│   ├── .openapi-generator/
│   │   ├── FILES
│   │   └── VERSION
│   ├── .openapi-generator-ignore
│   ├── .travis.yml
│   ├── README.md
│   ├── api/
│   │   └── openapi.yaml
│   ├── api_default.go
│   ├── client.go
│   ├── configuration.go
│   ├── docs/
│   │   ├── Account.md
│   │   ├── BoundDevice.md
│   │   ├── Config.md
│   │   ├── ConfigInterface.md
│   │   ├── ConfigServices.md
│   │   ├── DefaultApi.md
│   │   ├── Endpoint.md
│   │   ├── GetClientConfig200Response.md
│   │   ├── GetClientConfig200ResponseCaptivePortalInner.md
│   │   ├── GetClientConfig200ResponseCaptivePortalInnerNetworksInner.md
│   │   ├── GetClientConfig200ResponseDenylistInner.md
│   │   ├── GetClientConfig200ResponseDenylistInnerNetworks.md
│   │   ├── GetSourceDevice200Response.md
│   │   ├── IPv4Network.md
│   │   ├── IPv6Network.md
│   │   ├── NetworkAddress.md
│   │   ├── Peer.md
│   │   ├── Register200Response.md
│   │   ├── RegisterRequest.md
│   │   ├── ResetAccountLicense200Response.md
│   │   ├── SourceDevice.md
│   │   ├── UpdateAccount200Response.md
│   │   ├── UpdateAccountRequest.md
│   │   ├── UpdateBoundDeviceRequest.md
│   │   ├── UpdateSourceDevice200Response.md
│   │   └── UpdateSourceDeviceRequest.md
│   ├── git_push.sh
│   ├── go.mod
│   ├── go.sum
│   ├── model_account.go
│   ├── model_bound_device.go
│   ├── model_config.go
│   ├── model_config_interface.go
│   ├── model_config_services.go
│   ├── model_endpoint.go
│   ├── model_get_client_config_200_response.go
│   ├── model_get_client_config_200_response_captive_portal_inner.go
│   ├── model_get_client_config_200_response_captive_portal_inner_networks_inner.go
│   ├── model_get_client_config_200_response_denylist_inner.go
│   ├── model_get_client_config_200_response_denylist_inner_networks.go
│   ├── model_get_source_device_200_response.go
│   ├── model_ipv4_network.go
│   ├── model_ipv6_network.go
│   ├── model_network_address.go
│   ├── model_peer.go
│   ├── model_register_200_response.go
│   ├── model_register_request.go
│   ├── model_reset_account_license_200_response.go
│   ├── model_source_device.go
│   ├── model_update_account_200_response.go
│   ├── model_update_account_request.go
│   ├── model_update_bound_device_request.go
│   ├── model_update_source_device_200_response.go
│   ├── model_update_source_device_request.go
│   ├── response.go
│   ├── test/
│   │   └── api_default_test.go
│   └── utils.go
├── openapi-spec.yml
├── openapitools.json
├── util/
│   ├── util.go
│   └── util_test.go
└── wireguard/
    ├── keys.go
    ├── keys_test.go
    ├── profile.go
    └── profile_test.go

================================================
FILE CONTENTS
================================================

================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
  - package-ecosystem: "gomod"
    directory: "/"
    schedule:
      interval: "daily"
    commit-message:
      prefix: "fix"
      include: "scope"
    open-pull-requests-limit: 20

  - package-ecosystem: "docker"
    directory: "/"
    schedule:
      interval: "daily"
    commit-message:
      prefix: "fix"
      include: "scope"
    open-pull-requests-limit: 20

  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: "daily"
    commit-message:
      prefix: "fix"
      include: "scope"
    open-pull-requests-limit: 20


================================================
FILE: .github/workflows/release.yml
================================================
name: Release

on:
  push:
    tags:
      - "*"

jobs:
  docker:
    runs-on: ubuntu-24.04

    steps:
      - name: Checkout
        uses: actions/checkout@v6.0.1
        with:
          token: ${{ secrets.API_GITHUB_TOKEN }}

      - name: Docker meta
        id: docker_meta
        uses: docker/metadata-action@v5.10.0
        with:
          images: ${{ github.repository }}
          tags: |
            type=semver,pattern={{major}}
            type=semver,pattern={{major}}.{{minor}}
            type=semver,pattern={{major}}.{{minor}}.{{patch}}
            type=semver,pattern={{version}}
      - name: Set up QEMU
        uses: docker/setup-qemu-action@v3.7.0

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3.12.0

      - name: Login to DockerHub
        uses: docker/login-action@v3.6.0
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}

      - name: Build and push
        uses: docker/build-push-action@v6.18.0
        with:
          push: true
          platforms: linux/386,linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64
          tags: ${{ steps.docker_meta.outputs.tags }}
          labels: ${{ steps.docker_meta.outputs.labels }}

  binaries:
    runs-on: ubuntu-24.04

    steps:
      - name: Checkout
        uses: actions/checkout@v6.0.1
        with:
          token: ${{ secrets.API_GITHUB_TOKEN }}

      - name: Fetch Go version
        run: |
          GO_VERSION=$(perl -ne 'print "$1\n" if /FROM golang:([0-9.]+)/' Dockerfile | head -n1)
          [ -n "$GO_VERSION" ] || exit 1
          echo "go_version=$GO_VERSION" >> $GITHUB_ENV

      - name: Setup Go environment
        uses: actions/setup-go@v6.1.0
        with:
          go-version: "${{ env.go_version }}"

      - name: Binaries Release
        uses: goreleaser/goreleaser-action@v6.4.0
        with:
          version: ~> 2.7.0
          args: release --clean
        env:
          GITHUB_TOKEN: ${{ secrets.API_GITHUB_TOKEN }}


================================================
FILE: .github/workflows/test.yml
================================================
name: Test

on:
  push:
    branches: [master, develop]
  pull_request:
    branches: [master, develop]

jobs:
  build:
    runs-on: ubuntu-24.04

    steps:
      - name: Checkout with token
        if: github.event_name != 'pull_request'
        uses: actions/checkout@v6.0.1
        with:
          token: ${{ secrets.API_GITHUB_TOKEN }}

      - name: Checkout without token
        if: github.event_name == 'pull_request'
        uses: actions/checkout@v6.0.1

      - name: Fetch Go version
        run: |
          GO_VERSION=$(perl -ne 'print "$1\n" if /FROM golang:([0-9.]+)/' Dockerfile | head -n1)
          [ -n "$GO_VERSION" ] || exit 1
          echo "go_version=$GO_VERSION" >> $GITHUB_ENV

      - name: Setup Go environment
        uses: actions/setup-go@v6.1.0
        with:
          go-version: "${{ env.go_version }}"

      - name: Program Test
        run: go test ./...

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3.12.0

      - name: Docker Build Test
        run: docker buildx build --load --tag test:test --file ./Dockerfile ./

      - name: Version
        if: github.event_name != 'pull_request'
        uses: cycjimmy/semantic-release-action@v6.0.0
        with:
          semantic_version: 24.2.3
        env:
          GITHUB_TOKEN: ${{ secrets.API_GITHUB_TOKEN }}


================================================
FILE: .gitignore
================================================
/.optic/captures/
/.optic/generated/
/*.toml
/*.conf
/*.pcapng
/wgcf
.DS_Store

# Created by https://www.gitignore.io/api/go,intellij+all,visualstudiocode
# Edit at https://www.gitignore.io/?templates=go,intellij+all,visualstudiocode

### Go ###
# Binaries for programs and plugins
*.exe
*.exe~
*.dll
*.so
*.dylib

# Test binary, built with `go test -c`
*.test

# Output of the go coverage tool, specifically when used with LiteIDE
*.out

# Dependency directories (remove the comment below to include it)
# vendor/

### Go Patch ###
/vendor/
/Godeps/

### Intellij+all ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839

# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf

# Generated files
.idea/**/contentModel.xml

# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml

# Gradle
.idea/**/gradle.xml
.idea/**/libraries

# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn.  Uncomment if using
# auto-import.
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr

# CMake
cmake-build-*/

# Mongo Explorer plugin
.idea/**/mongoSettings.xml

# File-based project format
*.iws

# IntelliJ
out/

# mpeltonen/sbt-idea plugin
.idea_modules/

# JIRA plugin
atlassian-ide-plugin.xml

# Cursive Clojure plugin
.idea/replstate.xml

# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties

# Editor-based Rest Client
.idea/httpRequests

# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser

### Intellij+all Patch ###
# Ignores the whole .idea folder and all .iml files
# See https://github.com/joeblau/gitignore.io/issues/186 and https://github.com/joeblau/gitignore.io/issues/360

.idea/

# Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023

*.iml
modules.xml
.idea/misc.xml
*.ipr

# Sonarlint plugin
.idea/sonarlint

### VisualStudioCode ###
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json

### VisualStudioCode Patch ###
# Ignore all local history of files
.history

# End of https://www.gitignore.io/api/go,intellij+all,visualstudiocode


================================================
FILE: .goreleaser.yml
================================================
before:
builds:
  - env:
      - CGO_ENABLED=0
    ldflags:
      - -s -w
    flags:
      - -trimpath
    goos:
      - linux
      - windows
      - darwin
      - freebsd
    goarch:
      - 386
      - amd64
      - arm
      - arm64
      - mips
      - mipsle
      - mips64
      - mips64le
      - s390x
    goarm:
      - 5
      - 6
      - 7
    gomips:
      - softfloat
archives:
  - format: binary
checksum:
  name_template: "checksums.txt"


================================================
FILE: .releaserc.json
================================================
{
  "branches": [
    {
      "name": "master"
    },
    {
      "name": "develop",
      "prerelease": true
    }
  ],
  "plugins": [
    "@semantic-release/commit-analyzer",
    "@semantic-release/release-notes-generator",
    [
      "@semantic-release/github",
      {
        "successComment": false,
        "failComment": false
      }
    ]
  ]
}


================================================
FILE: Dockerfile
================================================
FROM golang:1.25.5-alpine AS builder

WORKDIR /src
COPY . .

RUN apk add --no-cache git && \
    go mod download && \
    CGO_ENABLED=0 go build -ldflags="-s -w" -o "wgcf"

FROM alpine:3.23.2

WORKDIR /

COPY --from=builder "/src/wgcf" "/"

ENTRYPOINT ["/wgcf"]


================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) 2020 ViRb3

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: README.md
================================================
# wgcf
> wgcf is an unofficial, cross-platform CLI for [Cloudflare Warp](https://1.1.1.1/)

![](https://img.shields.io/drone/build/ViRb3/wgcf)
![](https://img.shields.io/github/issues/ViRb3/wgcf)
![](https://img.shields.io/github/downloads/ViRb3/wgcf/total)
![](https://img.shields.io/github/languages/code-size/ViRb3/wgcf)

## Features
- Register new account
- Change license key to use existing Warp+ subscription
- Generate WireGuard profile
- Check account status
- Print trace information to debug Warp/Warp+ status

## Download
You can find pre-compiled binaries on the [releases page](https://github.com/ViRb3/wgcf/releases).

## Usage
Run `wgcf` in a terminal without any arguments to display the help screen. All commands and parameters are documented.

### Register new account
Run the following command in a terminal:
```bash
wgcf register
```
The new account will be saved under `wgcf-account.toml`

### Generate WireGuard profile
Run the following command in a terminal:
```bash
wgcf generate
```
The WireGuard profile will be saved under `wgcf-profile.conf`. For more information on how to use it, please check the official [WireGuard Quick Start](https://www.wireguard.com/quickstart/).

#### Maximum transmission unit (MTU)
To ensure maximum compatibility, the generated profile will have a MTU of 1280, just like the official Android app. If you are experiencing performance issues, you may be able to improve your speed by increasing this value. For more information, please check [#40](https://github.com/ViRb3/wgcf/issues/40).

### Add a license key

If you have an existing Warp+ subscription, for example on your phone, you can bind the account generated by this tool to your phone's account, sharing its Warp+ status. Please note that there is a limit of 5 maximum devices linked at a time. You can remove linked devices from the 1.1.1.1 app on your phone.

> [!CAUTION]
> Only subscriptions purchased directly from the official 1.1.1.1 app are supported. Keys obtained by any other means, including referrals, will not work and will not be supported.

First, get your Warp+ account license key. To view it on Android:
1. Open the `1.1.1.1` app
2. Click on the hamburger menu button in the top-right corner 
3. Navigate to: `Account` > `Key`

Now, back to wgcf.

> [!WARNING]
> There's a bug on Cloudflare's side that prevents existing accounts from getting Warp+ even after you bind a correct license key. If you have ever connected to Warp VPN, then your account is affected. You will need to make a new account via:
>
> ```wgcf register
> wgcf register
> ```
> Then immediately proceed with the steps below, without running any other commands. For more details, check [!85](https://github.com/ViRb3/wgcf/issues/85)

Run the following commands:

```bash
wgcf update --license-key "YOUR_LICENSE_KEY_GOES_HERE"
wgcf generate
```


### Check device status
Run the following command in a terminal:
```bash
wgcf status
```

### Verify Warp/Warp+ works
Connect to the WireGuard profile [generated](#generate-wireguard-profile) by this tool, then run:
```bash
wgcf trace
```
If you look at the last line, it should say `warp=on` or `warp=plus`, depending on whether you have Warp or Warp+ respectively.

> [!WARNING]
> If you're seeing `warp=on` even after you bound a Warp+ license key, you are likely experiencing a known bug, please refer to the [Add a license key](#add-a-license-key) section.

## Development
The API client code is auto-generated from the OpenAPI spec [openapi-spec.yml](openapi-spec.yml) and stored under the [openapi/](openapi/) package. Do not touch any code under that package, instead, change the spec file and regenerate the API client code. To do this, [install openapi-generator](https://openapi-generator.tech/docs/installation), then run:

```bash
go generate
```
## Notice of Non-Affiliation and Disclaimer
We are not affiliated, associated, authorized, endorsed by, or in any way officially connected with Cloudflare, or any of its subsidiaries or its affiliates. The official Cloudflare website can be found at https://www.cloudflare.com/.

The names Cloudflare Warp and Cloudflare as well as related names, marks, emblems and images are registered trademarks of their respective owners.


================================================
FILE: cloudflare/api.go
================================================
package cloudflare

import (
	"crypto/tls"
	"net/http"
	"time"

	"github.com/ViRb3/wgcf/v2/config"
	"github.com/ViRb3/wgcf/v2/openapi"
	"github.com/ViRb3/wgcf/v2/util"
	"github.com/ViRb3/wgcf/v2/wireguard"
	"github.com/cockroachdb/errors"
)

const (
	ApiUrl     = "https://api.cloudflareclient.com"
	ApiVersion = "v0a1922"
)

var (
	DefaultHeaders = map[string]string{
		"User-Agent":        "okhttp/3.12.1",
		"CF-Client-Version": "a-6.3-1922",
	}
	DefaultTransport = &http.Transport{
		// Match app's TLS config or API will reject us with code 403 error 1020
		TLSClientConfig: &tls.Config{
			MinVersion: tls.VersionTLS12,
			MaxVersion: tls.VersionTLS12},
		ForceAttemptHTTP2: false,
		// From http.DefaultTransport
		Proxy:                 http.ProxyFromEnvironment,
		MaxIdleConns:          100,
		IdleConnTimeout:       90 * time.Second,
		TLSHandshakeTimeout:   10 * time.Second,
		ExpectContinueTimeout: 1 * time.Second,
	}
)

var apiClient = MakeApiClient(nil)
var apiClientAuth *openapi.APIClient

func MakeApiClient(authToken *string) *openapi.APIClient {
	httpClient := http.Client{Transport: DefaultTransport}
	apiClient := openapi.NewAPIClient(&openapi.Configuration{
		DefaultHeader: DefaultHeaders,
		UserAgent:     DefaultHeaders["User-Agent"],
		Debug:         false,
		Servers: []openapi.ServerConfiguration{
			{URL: ApiUrl},
		},
		HTTPClient: &httpClient,
	})
	if authToken != nil {
		apiClient.GetConfig().DefaultHeader["Authorization"] = "Bearer " + *authToken
	}
	return apiClient
}

func Register(publicKey *wireguard.Key, deviceModel string) (*openapi.Register200Response, error) {
	timestamp := util.GetTimestamp()
	result, _, err := apiClient.DefaultAPI.
		Register(nil, ApiVersion).
		RegisterRequest(openapi.RegisterRequest{
			FcmToken:  "", // not empty on actual client
			InstallId: "", // not empty on actual client
			Key:       publicKey.String(),
			Locale:    "en_US",
			Model:     deviceModel,
			Tos:       timestamp,
			Type:      "Android",
		}).Execute()
	return result, errors.WithStack(err)
}

type SourceDevice openapi.GetSourceDevice200Response

func GetSourceDevice(ctx *config.Context) (*SourceDevice, error) {
	result, _, err := globalClientAuth(ctx.AccessToken).DefaultAPI.
		GetSourceDevice(nil, ApiVersion, ctx.DeviceId).
		Execute()
	return (*SourceDevice)(result), errors.WithStack(err)
}

func globalClientAuth(authToken string) *openapi.APIClient {
	if apiClientAuth == nil {
		apiClientAuth = MakeApiClient(&authToken)
	}
	return apiClientAuth
}

type Account openapi.Account

func GetAccount(ctx *config.Context) (*Account, error) {
	result, _, err := globalClientAuth(ctx.AccessToken).DefaultAPI.
		GetAccount(nil, ctx.DeviceId, ApiVersion).
		Execute()
	castResult := (*Account)(result)
	return castResult, errors.WithStack(err)
}

func UpdateLicenseKey(ctx *config.Context) (*openapi.UpdateAccount200Response, error) {
	result, _, err := globalClientAuth(ctx.AccessToken).DefaultAPI.
		UpdateAccount(nil, ctx.DeviceId, ApiVersion).
		UpdateAccountRequest(openapi.UpdateAccountRequest{License: ctx.LicenseKey}).
		Execute()
	if err != nil {
		return nil, errors.WithStack(err)
	}

	return result, nil
}

type BoundDevice openapi.BoundDevice

func GetBoundDevices(ctx *config.Context) ([]BoundDevice, error) {
	result, _, err := globalClientAuth(ctx.AccessToken).DefaultAPI.
		GetBoundDevices(nil, ctx.DeviceId, ApiVersion).
		Execute()
	if err != nil {
		return nil, errors.WithStack(err)
	}
	var castResult []BoundDevice
	for _, device := range result {
		castResult = append(castResult, BoundDevice(device))
	}
	return castResult, nil
}

func GetSourceBoundDevice(ctx *config.Context) (*BoundDevice, error) {
	result, err := GetBoundDevices(ctx)
	if err != nil {
		return nil, errors.WithStack(err)
	}
	return FindDevice(result, ctx.DeviceId)
}

func UpdateSourceBoundDeviceName(ctx *config.Context, targetDeviceId string, newName string) (*BoundDevice, error) {
	return updateSourceBoundDevice(ctx, targetDeviceId, openapi.UpdateBoundDeviceRequest{
		Name: &newName,
	})
}

func UpdateSourceBoundDeviceActive(ctx *config.Context, targetDeviceId string, active bool) (*BoundDevice, error) {
	return updateSourceBoundDevice(ctx, targetDeviceId, openapi.UpdateBoundDeviceRequest{
		Active: &active,
	})
}

func updateSourceBoundDevice(ctx *config.Context, targetDeviceId string, data openapi.UpdateBoundDeviceRequest) (*BoundDevice, error) {
	result, _, err := globalClientAuth(ctx.AccessToken).DefaultAPI.
		UpdateBoundDevice(nil, ctx.DeviceId, ApiVersion, targetDeviceId).
		UpdateBoundDeviceRequest(data).
		Execute()
	if err != nil {
		return nil, errors.WithStack(err)
	}
	var castResult []BoundDevice
	for _, device := range result {
		castResult = append(castResult, BoundDevice(device))
	}
	return FindDevice(castResult, ctx.DeviceId)
}

func DeleteBoundDevice(ctx *config.Context, targetDeviceId string) error {
	if _, err := globalClientAuth(ctx.AccessToken).DefaultAPI.
		DeleteBoundDevice(nil, ctx.DeviceId, ApiVersion, targetDeviceId).
		Execute(); err != nil {
		return err
	}
	return nil
}


================================================
FILE: cloudflare/util.go
================================================
package cloudflare

import (
	"github.com/cockroachdb/errors"
)

func FindDevice(devices []BoundDevice, deviceId string) (*BoundDevice, error) {
	for _, device := range devices {
		if device.Id == deviceId {
			return &device, nil
		}
	}
	return nil, errors.New("device not found in list")
}


================================================
FILE: cmd/generate/generate.go
================================================
package generate

import (
	"log"

	"github.com/ViRb3/wgcf/v2/cloudflare"
	. "github.com/ViRb3/wgcf/v2/cmd/shared"
	"github.com/ViRb3/wgcf/v2/config"
	"github.com/ViRb3/wgcf/v2/wireguard"
	"github.com/cockroachdb/errors"
	"github.com/spf13/cobra"
	"github.com/spf13/viper"
)

var profileFile string
var shortMsg = "Generates a WireGuard profile from the current Cloudflare Warp account"

var Cmd = &cobra.Command{
	Use:   "generate",
	Short: shortMsg,
	Long:  FormatMessage(shortMsg, ``),
	Run: func(cmd *cobra.Command, args []string) {
		RunCommandFatal(generateProfile)
	},
}

func init() {
	Cmd.PersistentFlags().StringVarP(&profileFile, "profile", "p", "wgcf-profile.conf", "WireGuard profile file")
}

func generateProfile() error {
	if err := EnsureConfigValidAccount(); err != nil {
		return errors.WithStack(err)
	}

	ctx := CreateContext()
	thisDevice, err := cloudflare.GetSourceDevice(ctx)
	if err != nil {
		return errors.WithStack(err)
	}

	profile, err := wireguard.NewProfile(&wireguard.ProfileData{
		PrivateKey: viper.GetString(config.PrivateKey),
		Address1:   thisDevice.Config.Interface.Addresses.V4,
		Address2:   thisDevice.Config.Interface.Addresses.V6,
		PublicKey:  thisDevice.Config.Peers[0].PublicKey,
		Endpoint:   thisDevice.Config.Peers[0].Endpoint.Host,
	})
	if err != nil {
		return errors.WithStack(err)
	}
	if err := profile.Save(profileFile); err != nil {
		return errors.WithStack(err)
	}

	log.Println("Successfully generated WireGuard profile:", profileFile)
	return nil
}


================================================
FILE: cmd/register/register.go
================================================
package register

import (
	"fmt"
	"log"

	"github.com/ViRb3/wgcf/v2/cloudflare"
	. "github.com/ViRb3/wgcf/v2/cmd/shared"
	"github.com/ViRb3/wgcf/v2/config"
	"github.com/ViRb3/wgcf/v2/wireguard"
	"github.com/cockroachdb/errors"
	"github.com/manifoldco/promptui"
	"github.com/spf13/cobra"
	"github.com/spf13/viper"
)

var deviceName string
var deviceModel string
var existingKey string
var acceptedTOS = false
var shortMsg = "Registers a new Cloudflare Warp device and creates a new account, preparing it for connection"

var Cmd = &cobra.Command{
	Use:   "register",
	Short: shortMsg,
	Long:  FormatMessage(shortMsg, ``),
	Run: func(cmd *cobra.Command, args []string) {
		RunCommandFatal(registerAccount)
	},
}

func init() {
	Cmd.PersistentFlags().StringVarP(&deviceName, "name", "n", "", "Device name displayed under the 1.1.1.1 app (defaults to random)")
	Cmd.PersistentFlags().StringVarP(&deviceModel, "model", "m", "PC", "Device model displayed under the 1.1.1.1 app")
	Cmd.PersistentFlags().StringVarP(&existingKey, "key", "k", "", "Base64 private key used to authenticate your device over WireGuard (defaults to random)")
	Cmd.PersistentFlags().BoolVar(&acceptedTOS, "accept-tos", false, "Accept Cloudflare's Terms of Service non-interactively")
}

func registerAccount() error {
	if err := EnsureNoExistingAccount(); err != nil {
		return errors.WithStack(err)
	}

	if err := checkTOS(); err != nil {
		return errors.WithStack(err)
	}

	var privateKey *wireguard.Key
	var err error

	if existingKey != "" {
		privateKey, err = wireguard.NewKey(existingKey)
	} else {
		privateKey, err = wireguard.NewPrivateKey()
	}
	if err != nil {
		return errors.WithStack(err)
	}

	device, err := cloudflare.Register(privateKey.Public(), deviceModel)
	if err != nil {
		return errors.WithStack(err)
	}

	viper.Set(config.PrivateKey, privateKey.String())
	viper.Set(config.DeviceId, device.Id)
	viper.Set(config.AccessToken, device.Token)
	viper.Set(config.LicenseKey, device.Account.License)
	if err := viper.WriteConfig(); err != nil {
		return errors.WithStack(err)
	}

	ctx := CreateContext()
	if _, err := SetDeviceName(ctx, deviceName); err != nil {
		return errors.WithStack(err)
	}

	account, err := cloudflare.GetAccount(ctx)
	if err != nil {
		return errors.WithStack(err)
	}
	boundDevices, err := cloudflare.GetBoundDevices(ctx)
	if err != nil {
		return errors.WithStack(err)
	}

	PrintAccountDetails(account, boundDevices)
	log.Println("Successfully created Cloudflare Warp account")
	return nil
}

func checkTOS() error {
	if !acceptedTOS {
		fmt.Println("This project is in no way affiliated with Cloudflare")
		fmt.Println("Cloudflare's Terms of Service: https://www.cloudflare.com/application/terms/")
		prompt := promptui.Select{
			Label: "Do you agree?",
			Items: []string{"Yes", "No"},
		}
		if _, result, err := prompt.Run(); err != nil {
			return errors.WithStack(err)
		} else if result != "Yes" {
			return ErrTOSNotAccepted
		}
	}
	return nil
}


================================================
FILE: cmd/root.go
================================================
package cmd

import (
	"errors"
	"log"

	"github.com/ViRb3/wgcf/v2/cmd/generate"
	"github.com/ViRb3/wgcf/v2/cmd/register"
	. "github.com/ViRb3/wgcf/v2/cmd/shared"
	"github.com/ViRb3/wgcf/v2/cmd/status"
	"github.com/ViRb3/wgcf/v2/cmd/trace"
	"github.com/ViRb3/wgcf/v2/cmd/update"
	"github.com/ViRb3/wgcf/v2/config"
	"github.com/spf13/cobra"
	"github.com/spf13/viper"
)

var cfgFile string

var RootCmd = &cobra.Command{
	Use:   "wgcf",
	Short: "WireGuard Cloudflare Warp utility",
	Long: FormatMessage("", `
wgcf is a utility for Cloudflare Warp that allows you to create and
manage accounts, assign license keys, and generate WireGuard profiles.
Project website: https://github.com/ViRb3/wgcf`),
	Run: func(cmd *cobra.Command, args []string) {
		if err := cmd.Help(); err != nil {
			log.Fatalf("%+v\n", err)
		}
	},
}

func Execute() error {
	return RootCmd.Execute()
}

func init() {
	cobra.OnInitialize(initConfig)
	RootCmd.PersistentFlags().StringVar(&cfgFile, "config", "wgcf-account.toml", "Configuration file")
	RootCmd.AddCommand(register.Cmd)
	RootCmd.AddCommand(update.Cmd)
	RootCmd.AddCommand(generate.Cmd)
	RootCmd.AddCommand(status.Cmd)
	RootCmd.AddCommand(trace.Cmd)
}

var unsupportedConfigError viper.UnsupportedConfigError

func initConfig() {
	initConfigDefaults()
	viper.SetConfigFile(cfgFile)
	viper.SetEnvPrefix("WGCF")
	viper.AutomaticEnv()
	if err := viper.ReadInConfig(); errors.As(err, &unsupportedConfigError) {
		log.Fatal(err)
	} else {
		log.Println("Using config file:", viper.ConfigFileUsed())
	}
}

func initConfigDefaults() {
	viper.SetDefault(config.DeviceId, "")
	viper.SetDefault(config.AccessToken, "")
	viper.SetDefault(config.PrivateKey, "")
	viper.SetDefault(config.LicenseKey, "")
}


================================================
FILE: cmd/shared/shared.go
================================================
package shared

import (
	errors2 "errors"
	"fmt"
	"log"
	"slices"
	"strings"

	"github.com/ViRb3/wgcf/v2/cloudflare"
	"github.com/ViRb3/wgcf/v2/config"
	"github.com/ViRb3/wgcf/v2/util"
	"github.com/dustin/go-humanize"

	"github.com/cockroachdb/errors"
	"github.com/spf13/viper"
)

var ErrExistingAccount = errors2.New("existing account detected, refusing to overwrite")
var ErrNoAccount = errors2.New("no account detected, register one first")
var ErrTOSNotAccepted = errors2.New("TOS not accepted")

func RunCommandFatal(cmd func() error) {
	if err := cmd(); err != nil {
		expectedErrs := []error{ErrNoAccount, ErrExistingAccount, ErrTOSNotAccepted}
		if slices.ContainsFunc(expectedErrs, func(e error) bool { return errors.Is(err, e) }) {
			log.Fatalln(err)
		} else {
			log.Fatalf("%+v\n", err)
		}
	}
}

func FormatMessage(shortMessage string, longMessage string) string {
	if longMessage != "" {
		if strings.HasPrefix(longMessage, "\n") {
			longMessage = longMessage[1:]
		}
		longMessage = strings.Replace(longMessage, "\n", " ", -1)
	}
	if shortMessage != "" && longMessage != "" {
		return shortMessage + ". " + longMessage
	} else if shortMessage != "" {
		return shortMessage
	} else {
		return longMessage
	}
}

func isConfigValidAccount() bool {
	return viper.GetString(config.DeviceId) != "" &&
		viper.GetString(config.AccessToken) != "" &&
		viper.GetString(config.PrivateKey) != ""
}

func EnsureConfigValidAccount() error {
	if isConfigValidAccount() {
		return nil
	} else {
		return ErrNoAccount
	}
}

func EnsureNoExistingAccount() error {
	if isConfigValidAccount() {
		return ErrExistingAccount
	} else {
		return nil
	}
}

func CreateContext() *config.Context {
	ctx := config.Context{
		DeviceId:    viper.GetString(config.DeviceId),
		AccessToken: viper.GetString(config.AccessToken),
		LicenseKey:  viper.GetString(config.LicenseKey),
	}
	return &ctx
}

func PrintAccountDetails(account *cloudflare.Account, boundDevices []cloudflare.BoundDevice) {
	log.Println("Printing account details:")
	fmt.Println()
	fmt.Println("================================================================")
	fmt.Println("Account")
	fmt.Println("================================================================")
	fmt.Printf("%-12s : %s\n", "Id", account.Id)
	fmt.Printf("%-12s : %s\n", "Account type", account.AccountType)
	fmt.Printf("%-12s : %s\n", "Created", account.Created)
	fmt.Printf("%-12s : %s\n", "Updated", account.Updated)
	fmt.Printf("%-12s : %s\n", "Premium data", humanize.Bytes(uint64(account.PremiumData)))
	fmt.Printf("%-12s : %s\n", "Quota", humanize.Bytes(uint64(account.Quota)))
	fmt.Printf("%-12s : %s\n", "Role", account.Role)
	fmt.Println()
	fmt.Println("================================================================")
	fmt.Println("Devices")
	fmt.Println("================================================================")
	for _, device := range boundDevices {
		name := "N/A"
		if device.Name != nil {
			name = *device.Name
		}
		id := device.Id
		if device.Id == viper.GetString(config.DeviceId) {
			id += " (current)"
		}
		fmt.Printf("%-9s : %s\n", "Id", id)
		fmt.Printf("%-9s : %s\n", "Type", device.Type)
		fmt.Printf("%-9s : %s\n", "Model", device.Model)
		fmt.Printf("%-9s : %s\n", "Name", name)
		fmt.Printf("%-9s : %t\n", "Active", device.Active)
		fmt.Printf("%-9s : %s\n", "Created", device.Created)
		fmt.Printf("%-9s : %s\n", "Activated", device.Activated)
		fmt.Printf("%-9s : %s\n", "Role", device.Role)
		fmt.Println()
	}
}

func SetDeviceName(ctx *config.Context, deviceName string) (*cloudflare.BoundDevice, error) {
	if deviceName == "" {
		deviceName += util.RandomHexString(3)
	}
	device, err := cloudflare.UpdateSourceBoundDeviceName(ctx, ctx.DeviceId, deviceName)
	if err == nil {
		if device.Name == nil || *device.Name != deviceName {
			return nil, errors.New("could not update device name")
		}
	} else if util.IsHttp500Error(err) {
		// server-side issue, but the operation still works
	} else {
		return nil, errors.WithStack(err)
	}

	return device, nil
}


================================================
FILE: cmd/status/status.go
================================================
package status

import (
	"github.com/ViRb3/wgcf/v2/cloudflare"
	. "github.com/ViRb3/wgcf/v2/cmd/shared"
	"github.com/cockroachdb/errors"
	"github.com/spf13/cobra"
)

var shortMsg = "Prints the status of the current Cloudflare Warp device"

var Cmd = &cobra.Command{
	Use:   "status",
	Short: shortMsg,
	Long:  FormatMessage(shortMsg, ``),
	Run: func(cmd *cobra.Command, args []string) {
		RunCommandFatal(status)
	},
}

func init() {
}

func status() error {
	if err := EnsureConfigValidAccount(); err != nil {
		return errors.WithStack(err)
	}

	ctx := CreateContext()

	account, err := cloudflare.GetAccount(ctx)
	if err != nil {
		return errors.WithStack(err)
	}
	boundDevices, err := cloudflare.GetBoundDevices(ctx)
	if err != nil {
		return errors.WithStack(err)
	}

	PrintAccountDetails(account, boundDevices)
	return nil
}


================================================
FILE: cmd/trace/trace.go
================================================
package trace

import (
	"fmt"
	"io"
	"log"
	"net/http"
	"strings"

	. "github.com/ViRb3/wgcf/v2/cmd/shared"
	"github.com/cockroachdb/errors"
	"github.com/spf13/cobra"
)

var shortMsg = "Prints trace information about the current internet connection"

var Cmd = &cobra.Command{
	Use:   "trace",
	Short: shortMsg,
	Long: FormatMessage(shortMsg, `
Useful for verifying if Warp and Warp+ are working.`),
	Run: func(cmd *cobra.Command, args []string) {
		if err := trace(); err != nil {
			log.Fatalf("%+v\n", err)
		}
	},
}

func init() {
}

func trace() error {
	response, err := http.Get("https://cloudflare.com/cdn-cgi/trace")
	if err != nil {
		return errors.WithStack(err)
	}
	bodyBytes, err := io.ReadAll(response.Body)
	if err != nil {
		return errors.WithStack(err)
	}
	log.Println("Trace result:")
	fmt.Println(strings.TrimSpace(string(bodyBytes)))
	return nil
}


================================================
FILE: cmd/update/update.go
================================================
package update

import (
	"log"
	"slices"

	"github.com/ViRb3/wgcf/v2/cloudflare"
	. "github.com/ViRb3/wgcf/v2/cmd/shared"
	"github.com/ViRb3/wgcf/v2/config"
	"github.com/cockroachdb/errors"
	"github.com/spf13/cobra"
	"github.com/spf13/viper"
)

var deviceName string
var licenseKey string
var removeDevices []string
var deactivateDevices []string
var activateDevices []string

var shortMsg = "Updates the current Cloudflare Warp account, preparing it for connection"

var Cmd = &cobra.Command{
	Use:   "update",
	Short: shortMsg,
	Long: FormatMessage(shortMsg, `
If a new/different license key is provided, the current device will be bound to the new key and its parent account. 
Please note that there is a maximum limit of 5 active devices linked to the same account at a given time.`),
	Run: func(cmd *cobra.Command, args []string) {
		RunCommandFatal(updateAccount)
	},
}

func init() {
	Cmd.PersistentFlags().StringVarP(&deviceName, "name", "n", "", "Update this device's name")
	Cmd.PersistentFlags().StringVarP(&licenseKey, "license-key", "l", "", "Update this device's license key")
	Cmd.PersistentFlags().StringSliceVar(&removeDevices, "remove", []string{}, "Remove devices by their ID (can be used multiple times)")
	Cmd.PersistentFlags().StringSliceVar(&deactivateDevices, "deactivate", []string{}, "Deactivate devices by their ID (can be used multiple times)")
	Cmd.PersistentFlags().StringSliceVar(&activateDevices, "activate", []string{}, "Activate devices by their ID (can be used multiple times)")
}

func updateAccount() error {
	if err := EnsureConfigValidAccount(); err != nil {
		return errors.WithStack(err)
	}

	ctx := CreateContext()
	if licenseKey != "" {
		ctx.LicenseKey = licenseKey
	}

	account, err := cloudflare.GetAccount(ctx)
	if err != nil {
		return errors.WithStack(err)
	}
	if account.License != ctx.LicenseKey {
		log.Println("Updated license key detected, re-binding device to new account")
		if _, err := cloudflare.UpdateLicenseKey(ctx); err != nil {
			return errors.WithStack(err)
		}
		viper.Set(config.LicenseKey, ctx.LicenseKey)
		if err := viper.WriteConfig(); err != nil {
			return errors.WithStack(err)
		}
	}

	boundDevice, err := cloudflare.GetSourceBoundDevice(ctx)
	if err != nil {
		return errors.WithStack(err)
	}
	if boundDevice.Name == nil || (deviceName != "" && deviceName != *boundDevice.Name) {
		log.Println("Setting device name")
		if _, err := SetDeviceName(ctx, deviceName); err != nil {
			return errors.WithStack(err)
		}
	}

	deviceActions := map[string]func() error{}
	for _, deviceId := range removeDevices {
		deviceActions[deviceId] = func() error {
			log.Printf("Deleting device: %s\n", deviceId)
			err := cloudflare.DeleteBoundDevice(ctx, deviceId)
			return errors.WithStack(err)
		}
	}
	for _, deviceId := range deactivateDevices {
		deviceActions[deviceId] = func() error {
			log.Printf("Deactivating device: %s\n", deviceId)
			if _, err := cloudflare.UpdateSourceBoundDeviceActive(ctx, deviceId, false); err != nil {
				return errors.WithStack(err)
			}
			return errors.WithStack(err)
		}
	}
	for _, deviceId := range activateDevices {
		deviceActions[deviceId] = func() error {
			log.Printf("Activating device: %s\n", deviceId)
			_, err := cloudflare.UpdateSourceBoundDeviceActive(ctx, deviceId, true)
			return errors.WithStack(err)
		}
	}

	boundDevices, err := cloudflare.GetBoundDevices(ctx)
	if err != nil {
		return errors.WithStack(err)
	}

	for deviceId, action := range deviceActions {
		deviceFound := slices.ContainsFunc(boundDevices, func(device cloudflare.BoundDevice) bool {
			return device.Id == deviceId
		})
		if !deviceFound {
			return errors.Newf("device not found: %s", deviceId)
		}
		if err := action(); err != nil {
			return errors.WithStack(err)
		}
	}

	// refresh in case e.g. account type changed
	account, err = cloudflare.GetAccount(ctx)
	if err != nil {
		return errors.WithStack(err)
	}
	boundDevices, err = cloudflare.GetBoundDevices(ctx)
	if err != nil {
		return errors.WithStack(err)
	}

	PrintAccountDetails(account, boundDevices)

	log.Println("Successfully updated Cloudflare Warp account")
	return nil
}


================================================
FILE: config/config.go
================================================
package config

const (
	DeviceId    = "device_id"
	AccessToken = "access_token"
	PrivateKey  = "private_key"
	LicenseKey  = "license_key"
)

type Context struct {
	DeviceId    string
	AccessToken string
	PrivateKey  string
	LicenseKey  string
}


================================================
FILE: go.mod
================================================
module github.com/ViRb3/wgcf/v2

go 1.24.0

toolchain go1.24.1

require (
	github.com/ViRb3/wgcf/v2/openapi v0.0.0-00010101000000-000000000000
	github.com/cockroachdb/errors v1.12.0
	github.com/dustin/go-humanize v1.0.1
	github.com/manifoldco/promptui v0.9.0
	github.com/spf13/cobra v1.10.2
	github.com/spf13/viper v1.21.0
	golang.org/x/crypto v0.46.0
)

require (
	github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e // indirect
	github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect
	github.com/cockroachdb/redact v1.1.5 // indirect
	github.com/fsnotify/fsnotify v1.9.0 // indirect
	github.com/getsentry/sentry-go v0.27.0 // indirect
	github.com/go-viper/mapstructure/v2 v2.4.0 // indirect
	github.com/gogo/protobuf v1.3.2 // indirect
	github.com/inconshreveable/mousetrap v1.1.0 // indirect
	github.com/kr/pretty v0.3.1 // indirect
	github.com/kr/text v0.2.0 // indirect
	github.com/pelletier/go-toml/v2 v2.2.4 // indirect
	github.com/pkg/errors v0.9.1 // indirect
	github.com/rogpeppe/go-internal v1.12.0 // indirect
	github.com/sagikazarmark/locafero v0.11.0 // indirect
	github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 // indirect
	github.com/spf13/afero v1.15.0 // indirect
	github.com/spf13/cast v1.10.0 // indirect
	github.com/spf13/pflag v1.0.10 // indirect
	github.com/subosito/gotenv v1.6.0 // indirect
	go.yaml.in/yaml/v3 v3.0.4 // indirect
	golang.org/x/sys v0.39.0 // indirect
	golang.org/x/text v0.32.0 // indirect
)

replace github.com/ViRb3/wgcf/v2/openapi => ./openapi


================================================
FILE: go.sum
================================================
github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE=
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8=
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8=
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
github.com/cockroachdb/errors v1.12.0 h1:d7oCs6vuIMUQRVbi6jWWWEJZahLCfJpnJSVobd1/sUo=
github.com/cockroachdb/errors v1.12.0/go.mod h1:SvzfYNNBshAVbZ8wzNc/UPK3w1vf0dKDUP41ucAIf7g=
github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE=
github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs=
github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30=
github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg=
github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k=
github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
github.com/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps=
github.com/getsentry/sentry-go v0.27.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY=
github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA=
github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9LvH92wZUgs=
github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA=
github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg=
github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4=
github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4=
github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8=
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/sagikazarmark/locafero v0.11.0 h1:1iurJgmM9G3PA/I+wWYIOw/5SyBtxapeHDcg+AAIFXc=
github.com/sagikazarmark/locafero v0.11.0/go.mod h1:nVIGvgyzw595SUSUE6tvCp3YYTeHs15MvlmU87WwIik=
github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 h1:+jumHNA0Wrelhe64i8F6HNlS8pkoyMv5sreGx2Ry5Rw=
github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8/go.mod h1:3n1Cwaq1E1/1lhQhtRK2ts/ZwZEhjcQeJQ1RuC6Q/8U=
github.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I=
github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg=
github.com/spf13/cast v1.10.0 h1:h2x0u2shc1QuLHfxi+cTJvs30+ZAHOGRic8uyGTDWxY=
github.com/spf13/cast v1.10.0/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo=
github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU=
github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4=
github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk=
github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/spf13/viper v1.21.0 h1:x5S+0EU27Lbphp4UKm1C+1oQO+rKx36vfCoaVebLFSU=
github.com/spf13/viper v1.21.0/go.mod h1:P0lhsswPGWD/1lZJ9ny3fYnVqxiegrlNrEmgLjbTCAY=
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=
go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU=
golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk=
golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU=
golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=


================================================
FILE: main.go
================================================
//go:generate openapi-generator generate -i openapi-spec.yml -g go -o openapi --additional-properties=disallowAdditionalPropertiesIfNotPresent=false

package main

import (
	"log"

	"github.com/ViRb3/wgcf/v2/cmd"
)

func main() {
	if err := cmd.Execute(); err != nil {
		log.Fatalf("%+v\n", err)
	}
}


================================================
FILE: openapi/.gitignore
================================================
# Compiled Object files, Static and Dynamic libs (Shared Objects)
*.o
*.a
*.so

# Folders
_obj
_test

# Architecture specific extensions/prefixes
*.[568vq]
[568vq].out

*.cgo1.go
*.cgo2.c
_cgo_defun.c
_cgo_gotypes.go
_cgo_export.*

_testmain.go

*.exe
*.test
*.prof


================================================
FILE: openapi/.openapi-generator/FILES
================================================
.gitignore
.travis.yml
README.md
api/openapi.yaml
api_default.go
client.go
configuration.go
docs/Account.md
docs/BoundDevice.md
docs/Config.md
docs/ConfigInterface.md
docs/ConfigServices.md
docs/DefaultAPI.md
docs/Endpoint.md
docs/GetClientConfig200Response.md
docs/GetClientConfig200ResponseCaptivePortalInner.md
docs/GetClientConfig200ResponseCaptivePortalInnerNetworksInner.md
docs/GetClientConfig200ResponseDenylistInner.md
docs/GetClientConfig200ResponseDenylistInnerNetworks.md
docs/GetSourceDevice200Response.md
docs/IPv4Network.md
docs/IPv6Network.md
docs/NetworkAddress.md
docs/Peer.md
docs/Register200Response.md
docs/RegisterRequest.md
docs/ResetAccountLicense200Response.md
docs/SourceDevice.md
docs/UpdateAccount200Response.md
docs/UpdateAccountRequest.md
docs/UpdateBoundDeviceRequest.md
docs/UpdateSourceDevice200Response.md
docs/UpdateSourceDeviceRequest.md
git_push.sh
go.mod
go.sum
model_account.go
model_bound_device.go
model_config.go
model_config_interface.go
model_config_services.go
model_endpoint.go
model_get_client_config_200_response.go
model_get_client_config_200_response_captive_portal_inner.go
model_get_client_config_200_response_captive_portal_inner_networks_inner.go
model_get_client_config_200_response_denylist_inner.go
model_get_client_config_200_response_denylist_inner_networks.go
model_get_source_device_200_response.go
model_ipv4_network.go
model_ipv6_network.go
model_network_address.go
model_peer.go
model_register_200_response.go
model_register_request.go
model_reset_account_license_200_response.go
model_source_device.go
model_update_account_200_response.go
model_update_account_request.go
model_update_bound_device_request.go
model_update_source_device_200_response.go
model_update_source_device_request.go
response.go
utils.go


================================================
FILE: openapi/.openapi-generator/VERSION
================================================
7.14.0


================================================
FILE: openapi/.openapi-generator-ignore
================================================
# OpenAPI Generator Ignore
# Generated by openapi-generator https://github.com/openapitools/openapi-generator

# Use this file to prevent files from being overwritten by the generator.
# The patterns follow closely to .gitignore or .dockerignore.

# As an example, the C# client generator defines ApiClient.cs.
# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
#ApiClient.cs

# You can match any string of characters against a directory, file or extension with a single asterisk (*):
#foo/*/qux
# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux

# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
#foo/**/qux
# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux

# You can also negate patterns with an exclamation (!).
# For example, you can ignore all files in a docs folder with the file extension .md:
#docs/*.md
# Then explicitly reverse the ignore rule for a single file:
#!docs/README.md


================================================
FILE: openapi/.travis.yml
================================================
language: go

install:
  - go get -d -v .

script:
  - go build -v ./



================================================
FILE: openapi/README.md
================================================
# Go API client for openapi

No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)

## Overview
This API client was generated by the [OpenAPI Generator](https://openapi-generator.tech) project.  By using the [OpenAPI-spec](https://www.openapis.org/) from a remote server, you can easily generate an API client.

- API version: 536
- Package version: 1.0.0
- Generator version: 7.14.0
- Build package: org.openapitools.codegen.languages.GoClientCodegen

## Installation

Install the following dependencies:

```sh
go get github.com/stretchr/testify/assert
go get golang.org/x/net/context
```

Put the package under your project folder and add the following in import:

```go
import openapi "github.com/GIT_USER_ID/GIT_REPO_ID"
```

To use a proxy, set the environment variable `HTTP_PROXY`:

```go
os.Setenv("HTTP_PROXY", "http://proxy_name:proxy_port")
```

## Configuration of Server URL

Default configuration comes with `Servers` field that contains server objects as defined in the OpenAPI specification.

### Select Server Configuration

For using other server than the one defined on index 0 set context value `openapi.ContextServerIndex` of type `int`.

```go
ctx := context.WithValue(context.Background(), openapi.ContextServerIndex, 1)
```

### Templated Server URL

Templated server URL is formatted using default variables from configuration or from context value `openapi.ContextServerVariables` of type `map[string]string`.

```go
ctx := context.WithValue(context.Background(), openapi.ContextServerVariables, map[string]string{
	"basePath": "v2",
})
```

Note, enum values are always validated and all unused variables are silently ignored.

### URLs Configuration per Operation

Each operation can use different server URL defined using `OperationServers` map in the `Configuration`.
An operation is uniquely identified by `"{classname}Service.{nickname}"` string.
Similar rules for overriding default operation server index and variables applies by using `openapi.ContextOperationServerIndices` and `openapi.ContextOperationServerVariables` context maps.

```go
ctx := context.WithValue(context.Background(), openapi.ContextOperationServerIndices, map[string]int{
	"{classname}Service.{nickname}": 2,
})
ctx = context.WithValue(context.Background(), openapi.ContextOperationServerVariables, map[string]map[string]string{
	"{classname}Service.{nickname}": {
		"port": "8443",
	},
})
```

## Documentation for API Endpoints

All URIs are relative to *http://localhost*

Class | Method | HTTP request | Description
------------ | ------------- | ------------- | -------------
*DefaultAPI* | [**DeleteBoundDevice**](docs/DefaultAPI.md#deletebounddevice) | **Delete** /{apiVersion}/reg/{sourceDeviceId}/account/reg/{boundDeviceId} | DeleteBoundDevice
*DefaultAPI* | [**GetAccount**](docs/DefaultAPI.md#getaccount) | **Get** /{apiVersion}/reg/{sourceDeviceId}/account | GetAccount
*DefaultAPI* | [**GetBoundDevices**](docs/DefaultAPI.md#getbounddevices) | **Get** /{apiVersion}/reg/{sourceDeviceId}/account/devices | GetBoundDevices
*DefaultAPI* | [**GetClientConfig**](docs/DefaultAPI.md#getclientconfig) | **Get** /{apiVersion}/client_config | GetClientConfig
*DefaultAPI* | [**GetSourceDevice**](docs/DefaultAPI.md#getsourcedevice) | **Get** /{apiVersion}/reg/{sourceDeviceId} | GetSourceDevice
*DefaultAPI* | [**Register**](docs/DefaultAPI.md#register) | **Post** /{apiVersion}/reg | Register
*DefaultAPI* | [**ResetAccountLicense**](docs/DefaultAPI.md#resetaccountlicense) | **Post** /{apiVersion}/reg/{sourceDeviceId}/account/license | ResetAccountLicense
*DefaultAPI* | [**UpdateAccount**](docs/DefaultAPI.md#updateaccount) | **Put** /{apiVersion}/reg/{sourceDeviceId}/account | UpdateAccount
*DefaultAPI* | [**UpdateBoundDevice**](docs/DefaultAPI.md#updatebounddevice) | **Patch** /{apiVersion}/reg/{sourceDeviceId}/account/reg/{boundDeviceId} | UpdateBoundDevice
*DefaultAPI* | [**UpdateSourceDevice**](docs/DefaultAPI.md#updatesourcedevice) | **Patch** /{apiVersion}/reg/{sourceDeviceId} | UpdateSourceDevice


## Documentation For Models

 - [Account](docs/Account.md)
 - [BoundDevice](docs/BoundDevice.md)
 - [Config](docs/Config.md)
 - [ConfigInterface](docs/ConfigInterface.md)
 - [ConfigServices](docs/ConfigServices.md)
 - [Endpoint](docs/Endpoint.md)
 - [GetClientConfig200Response](docs/GetClientConfig200Response.md)
 - [GetClientConfig200ResponseCaptivePortalInner](docs/GetClientConfig200ResponseCaptivePortalInner.md)
 - [GetClientConfig200ResponseCaptivePortalInnerNetworksInner](docs/GetClientConfig200ResponseCaptivePortalInnerNetworksInner.md)
 - [GetClientConfig200ResponseDenylistInner](docs/GetClientConfig200ResponseDenylistInner.md)
 - [GetClientConfig200ResponseDenylistInnerNetworks](docs/GetClientConfig200ResponseDenylistInnerNetworks.md)
 - [GetSourceDevice200Response](docs/GetSourceDevice200Response.md)
 - [IPv4Network](docs/IPv4Network.md)
 - [IPv6Network](docs/IPv6Network.md)
 - [NetworkAddress](docs/NetworkAddress.md)
 - [Peer](docs/Peer.md)
 - [Register200Response](docs/Register200Response.md)
 - [RegisterRequest](docs/RegisterRequest.md)
 - [ResetAccountLicense200Response](docs/ResetAccountLicense200Response.md)
 - [SourceDevice](docs/SourceDevice.md)
 - [UpdateAccount200Response](docs/UpdateAccount200Response.md)
 - [UpdateAccountRequest](docs/UpdateAccountRequest.md)
 - [UpdateBoundDeviceRequest](docs/UpdateBoundDeviceRequest.md)
 - [UpdateSourceDevice200Response](docs/UpdateSourceDevice200Response.md)
 - [UpdateSourceDeviceRequest](docs/UpdateSourceDeviceRequest.md)


## Documentation For Authorization

Endpoints do not require authorization.


## Documentation for Utility Methods

Due to the fact that model structure members are all pointers, this package contains
a number of utility functions to easily obtain pointers to values of basic types.
Each of these functions takes a value of the given basic type and returns a pointer to it:

* `PtrBool`
* `PtrInt`
* `PtrInt32`
* `PtrInt64`
* `PtrFloat`
* `PtrFloat32`
* `PtrFloat64`
* `PtrString`
* `PtrTime`

## Author





================================================
FILE: openapi/api/openapi.yaml
================================================
openapi: 3.0.1
info:
  title: Cloudflare WARP API
  version: "536"
servers:
- url: /
paths:
  /{apiVersion}/client_config:
    get:
      operationId: GetClientConfig
      parameters:
      - explode: false
        in: path
        name: apiVersion
        required: true
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetClientConfig_200_Response"
          description: ""
      summary: GetClientConfig
  /{apiVersion}/reg:
    post:
      operationId: Register
      parameters:
      - explode: false
        in: path
        name: apiVersion
        required: true
        schema:
          type: string
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Register_Request"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Register_200_Response"
          description: ""
      summary: Register
  /{apiVersion}/reg/{sourceDeviceId}:
    get:
      operationId: GetSourceDevice
      parameters:
      - explode: false
        in: path
        name: apiVersion
        required: true
        schema:
          type: string
        style: simple
      - explode: false
        in: path
        name: sourceDeviceId
        required: true
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetSourceDevice_200_Response"
          description: ""
      summary: GetSourceDevice
    patch:
      operationId: UpdateSourceDevice
      parameters:
      - explode: false
        in: path
        name: apiVersion
        required: true
        schema:
          type: string
        style: simple
      - explode: false
        in: path
        name: sourceDeviceId
        required: true
        schema:
          type: string
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdateSourceDevice_Request"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UpdateSourceDevice_200_Response"
          description: ""
      summary: UpdateSourceDevice
  /{apiVersion}/reg/{sourceDeviceId}/account:
    get:
      operationId: GetAccount
      parameters:
      - explode: false
        in: path
        name: sourceDeviceId
        required: true
        schema:
          type: string
        style: simple
      - explode: false
        in: path
        name: apiVersion
        required: true
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetAccount_200_Response"
          description: ""
      summary: GetAccount
    put:
      operationId: UpdateAccount
      parameters:
      - explode: false
        in: path
        name: sourceDeviceId
        required: true
        schema:
          type: string
        style: simple
      - explode: false
        in: path
        name: apiVersion
        required: true
        schema:
          type: string
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdateAccount_Request"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UpdateAccount_200_Response"
          description: ""
      summary: UpdateAccount
  /{apiVersion}/reg/{sourceDeviceId}/account/devices:
    get:
      operationId: GetBoundDevices
      parameters:
      - explode: false
        in: path
        name: sourceDeviceId
        required: true
        schema:
          type: string
        style: simple
      - explode: false
        in: path
        name: apiVersion
        required: true
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: "#/components/schemas/GetBoundDevices_200_Response"
                type: array
          description: ""
      summary: GetBoundDevices
  /{apiVersion}/reg/{sourceDeviceId}/account/license:
    post:
      operationId: ResetAccountLicense
      parameters:
      - explode: false
        in: path
        name: sourceDeviceId
        required: true
        schema:
          type: string
        style: simple
      - explode: false
        in: path
        name: apiVersion
        required: true
        schema:
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ResetAccountLicense_200_Response"
          description: ""
      summary: ResetAccountLicense
  /{apiVersion}/reg/{sourceDeviceId}/account/reg/{boundDeviceId}:
    delete:
      operationId: DeleteBoundDevice
      parameters:
      - explode: false
        in: path
        name: sourceDeviceId
        required: true
        schema:
          type: string
        style: simple
      - explode: false
        in: path
        name: apiVersion
        required: true
        schema:
          type: string
        style: simple
      - explode: false
        in: path
        name: boundDeviceId
        required: true
        schema:
          type: string
        style: simple
      responses:
        "204":
          description: ""
      summary: DeleteBoundDevice
    patch:
      operationId: UpdateBoundDevice
      parameters:
      - explode: false
        in: path
        name: sourceDeviceId
        required: true
        schema:
          type: string
        style: simple
      - explode: false
        in: path
        name: apiVersion
        required: true
        schema:
          type: string
        style: simple
      - explode: false
        in: path
        name: boundDeviceId
        required: true
        schema:
          type: string
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdateBoundDevice_Request"
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: "#/components/schemas/UpdateBoundDevice_200_Response"
                type: array
          description: ""
      summary: UpdateBoundDevice
components:
  schemas:
    Account:
      example:
        license: license
        referral_count: 5.962133916683182
        account_type: account_type
        role: role
        referral_renewal_countdown: 5.637376656633329
        created: created
        quota: 1.4658129805029452
        warp_plus: true
        usage: 2.3021358869347655
        premium_data: 6.027456183070403
        id: id
        updated: updated
      properties:
        account_type:
          type: string
        created:
          type: string
        id:
          type: string
        license:
          type: string
        premium_data:
          type: number
        quota:
          type: number
        referral_count:
          type: number
        referral_renewal_countdown:
          type: number
        role:
          type: string
        updated:
          type: string
        warp_plus:
          type: boolean
        usage:
          type: number
      required:
      - account_type
      - created
      - id
      - license
      - premium_data
      - quota
      - referral_count
      - referral_renewal_countdown
      - role
      - updated
      - warp_plus
      type: object
    BoundDevice:
      properties:
        activated:
          type: string
        active:
          type: boolean
        created:
          type: string
        id:
          type: string
        model:
          type: string
        name:
          type: string
        role:
          type: string
        type:
          type: string
      required:
      - activated
      - active
      - created
      - id
      - model
      - role
      - type
      type: object
    NetworkAddress:
      example:
        v6: v6
        v4: v4
      properties:
        v4:
          type: string
        v6:
          type: string
      required:
      - v4
      - v6
      type: object
    Endpoint:
      example:
        v6: v6
        host: host
        v4: v4
      properties:
        host:
          type: string
        v4:
          type: string
        v6:
          type: string
      required:
      - host
      - v4
      - v6
      type: object
    Peer:
      example:
        public_key: public_key
        endpoint:
          v6: v6
          host: host
          v4: v4
      properties:
        endpoint:
          $ref: "#/components/schemas/Endpoint"
        public_key:
          type: string
      required:
      - endpoint
      - public_key
      type: object
    Config:
      example:
        peers:
        - public_key: public_key
          endpoint:
            v6: v6
            host: host
            v4: v4
        - public_key: public_key
          endpoint:
            v6: v6
            host: host
            v4: v4
        services:
          http_proxy: http_proxy
        interface:
          addresses:
            v6: v6
            v4: v4
        client_id: client_id
      properties:
        client_id:
          type: string
        interface:
          $ref: "#/components/schemas/Config_interface"
        peers:
          items:
            $ref: "#/components/schemas/Peer"
          type: array
        services:
          $ref: "#/components/schemas/Config_services"
      required:
      - client_id
      - interface
      - peers
      - services
      type: object
    SourceDevice:
      properties:
        created:
          type: string
        enabled:
          type: boolean
        fcm_token:
          type: string
        id:
          type: string
        install_id:
          type: string
        key:
          type: string
        locale:
          type: string
        model:
          type: string
        name:
          type: string
        place:
          type: number
        tos:
          type: string
        type:
          type: string
        updated:
          type: string
        waitlist_enabled:
          type: boolean
        warp_enabled:
          type: boolean
      required:
      - created
      - enabled
      - fcm_token
      - id
      - install_id
      - key
      - locale
      - model
      - name
      - place
      - tos
      - type
      - updated
      - waitlist_enabled
      - warp_enabled
      type: object
    IPv4Network:
      example:
        address: address
        netmask: netmask
      properties:
        address:
          type: string
        netmask:
          type: string
      required:
      - address
      - netmask
      type: object
    IPv6Network:
      example:
        address: address
        prefix: 0.8008281904610115
      properties:
        address:
          type: string
        prefix:
          type: number
      required:
      - address
      - prefix
      type: object
    GetAccount_200_Response:
      $ref: "#/components/schemas/Account"
    GetBoundDevices_200_Response:
      $ref: "#/components/schemas/BoundDevice"
    GetClientConfig_200_Response:
      example:
        captive_portal:
        - name: name
          networks:
          - address: address
          - address: address
        - name: name
          networks:
          - address: address
          - address: address
        denylist:
        - visible: true
          name: name
          networks:
            v6:
            - address: address
              prefix: 0.8008281904610115
            - address: address
              prefix: 0.8008281904610115
            v4:
            - address: address
              netmask: netmask
            - address: address
              netmask: netmask
          android-packages:
          - android-packages
          - android-packages
        - visible: true
          name: name
          networks:
            v6:
            - address: address
              prefix: 0.8008281904610115
            - address: address
              prefix: 0.8008281904610115
            v4:
            - address: address
              netmask: netmask
            - address: address
              netmask: netmask
          android-packages:
          - android-packages
          - android-packages
        referral_reward_bytes: 1.4658129805029452
        premium_data_bytes: 6.027456183070403
      properties:
        captive_portal:
          items:
            $ref: "#/components/schemas/GetClientConfig_200_Response_captive_portal_inner"
          type: array
        denylist:
          items:
            $ref: "#/components/schemas/GetClientConfig_200_Response_denylist_inner"
          type: array
        premium_data_bytes:
          type: number
        referral_reward_bytes:
          type: number
      required:
      - captive_portal
      - denylist
      - premium_data_bytes
      - referral_reward_bytes
      type: object
    GetSourceDevice_200_Response:
      allOf:
      - $ref: "#/components/schemas/SourceDevice"
      - properties:
          account:
            $ref: "#/components/schemas/Account"
          config:
            $ref: "#/components/schemas/Config"
        required:
        - account
        - config
        type: object
      example:
        created: created
        locale: locale
        type: type
        enabled: true
        waitlist_enabled: true
        install_id: install_id
        warp_enabled: true
        fcm_token: fcm_token
        name: name
        tos: tos
        model: model
        id: id
        place: 0.8008281904610115
        updated: updated
        config:
          peers:
          - public_key: public_key
            endpoint:
              v6: v6
              host: host
              v4: v4
          - public_key: public_key
            endpoint:
              v6: v6
              host: host
              v4: v4
          services:
            http_proxy: http_proxy
          interface:
            addresses:
              v6: v6
              v4: v4
          client_id: client_id
        key: key
        account:
          license: license
          referral_count: 5.962133916683182
          account_type: account_type
          role: role
          referral_renewal_countdown: 5.637376656633329
          created: created
          quota: 1.4658129805029452
          warp_plus: true
          usage: 2.3021358869347655
          premium_data: 6.027456183070403
          id: id
          updated: updated
    Register_200_Response:
      allOf:
      - $ref: "#/components/schemas/SourceDevice"
      - properties:
          account:
            $ref: "#/components/schemas/Account"
          config:
            $ref: "#/components/schemas/Config"
          token:
            type: string
        required:
        - account
        - config
        - token
        type: object
      example:
        created: created
        locale: locale
        type: type
        enabled: true
        token: token
        waitlist_enabled: true
        install_id: install_id
        warp_enabled: true
        fcm_token: fcm_token
        name: name
        tos: tos
        model: model
        id: id
        place: 0.8008281904610115
        updated: updated
        config:
          peers:
          - public_key: public_key
            endpoint:
              v6: v6
              host: host
              v4: v4
          - public_key: public_key
            endpoint:
              v6: v6
              host: host
              v4: v4
          services:
            http_proxy: http_proxy
          interface:
            addresses:
              v6: v6
              v4: v4
          client_id: client_id
        key: key
        account:
          license: license
          referral_count: 5.962133916683182
          account_type: account_type
          role: role
          referral_renewal_countdown: 5.637376656633329
          created: created
          quota: 1.4658129805029452
          warp_plus: true
          usage: 2.3021358869347655
          premium_data: 6.027456183070403
          id: id
          updated: updated
    Register_Request:
      properties:
        fcm_token:
          type: string
        install_id:
          type: string
        key:
          type: string
        locale:
          type: string
        model:
          type: string
        tos:
          type: string
        type:
          type: string
      required:
      - fcm_token
      - install_id
      - key
      - locale
      - model
      - tos
      - type
      type: object
    ResetAccountLicense_200_Response:
      example:
        license: license
      properties:
        license:
          type: string
      required:
      - license
      type: object
    UpdateAccount_200_Response:
      example:
        referral_count: 1.4658129805029452
        role: role
        referral_renewal_countdown: 5.962133916683182
        created: created
        quota: 6.027456183070403
        warp_plus: true
        premium_data: 0.8008281904610115
        id: id
        updated: updated
      properties:
        created:
          type: string
        id:
          type: string
        premium_data:
          type: number
        quota:
          type: number
        referral_count:
          type: number
        referral_renewal_countdown:
          type: number
        role:
          type: string
        updated:
          type: string
        warp_plus:
          type: boolean
      required:
      - created
      - id
      - premium_data
      - quota
      - referral_count
      - referral_renewal_countdown
      - role
      - updated
      - warp_plus
      type: object
    UpdateAccount_Request:
      properties:
        license:
          type: string
      required:
      - license
      type: object
    UpdateBoundDevice_200_Response:
      $ref: "#/components/schemas/BoundDevice"
    UpdateBoundDevice_Request:
      properties:
        active:
          type: boolean
        name:
          type: string
      type: object
    UpdateSourceDevice_200_Response:
      allOf:
      - $ref: "#/components/schemas/SourceDevice"
      - properties:
          account:
            $ref: "#/components/schemas/Account"
          config:
            $ref: "#/components/schemas/Config"
        required:
        - account
        - config
        type: object
      example:
        created: created
        locale: locale
        type: type
        enabled: true
        waitlist_enabled: true
        install_id: install_id
        warp_enabled: true
        fcm_token: fcm_token
        name: name
        tos: tos
        model: model
        id: id
        place: 0.8008281904610115
        updated: updated
        config:
          peers:
          - public_key: public_key
            endpoint:
              v6: v6
              host: host
              v4: v4
          - public_key: public_key
            endpoint:
              v6: v6
              host: host
              v4: v4
          services:
            http_proxy: http_proxy
          interface:
            addresses:
              v6: v6
              v4: v4
          client_id: client_id
        key: key
        account:
          license: license
          referral_count: 5.962133916683182
          account_type: account_type
          role: role
          referral_renewal_countdown: 5.637376656633329
          created: created
          quota: 1.4658129805029452
          warp_plus: true
          usage: 2.3021358869347655
          premium_data: 6.027456183070403
          id: id
          updated: updated
    UpdateSourceDevice_Request:
      properties:
        key:
          type: string
      required:
      - key
      type: object
    Config_interface:
      example:
        addresses:
          v6: v6
          v4: v4
      properties:
        addresses:
          $ref: "#/components/schemas/NetworkAddress"
      required:
      - addresses
      type: object
    Config_services:
      example:
        http_proxy: http_proxy
      properties:
        http_proxy:
          type: string
      required:
      - http_proxy
      type: object
    GetClientConfig_200_Response_captive_portal_inner_networks_inner:
      example:
        address: address
      properties:
        address:
          type: string
      required:
      - address
      type: object
    GetClientConfig_200_Response_captive_portal_inner:
      example:
        name: name
        networks:
        - address: address
        - address: address
      properties:
        name:
          type: string
        networks:
          items:
            $ref: "#/components/schemas/GetClientConfig_200_Response_captive_portal_inner_networks_inner"
          type: array
      required:
      - name
      - networks
      type: object
    GetClientConfig_200_Response_denylist_inner_networks:
      example:
        v6:
        - address: address
          prefix: 0.8008281904610115
        - address: address
          prefix: 0.8008281904610115
        v4:
        - address: address
          netmask: netmask
        - address: address
          netmask: netmask
      properties:
        v4:
          items:
            $ref: "#/components/schemas/IPv4Network"
          type: array
        v6:
          items:
            $ref: "#/components/schemas/IPv6Network"
          type: array
      required:
      - v4
      - v6
      type: object
    GetClientConfig_200_Response_denylist_inner:
      example:
        visible: true
        name: name
        networks:
          v6:
          - address: address
            prefix: 0.8008281904610115
          - address: address
            prefix: 0.8008281904610115
          v4:
          - address: address
            netmask: netmask
          - address: address
            netmask: netmask
        android-packages:
        - android-packages
        - android-packages
      properties:
        android-packages:
          items:
            type: string
          type: array
        name:
          type: string
        networks:
          $ref: "#/components/schemas/GetClientConfig_200_Response_denylist_inner_networks"
        visible:
          type: boolean
      required:
      - name
      - visible
      type: object


================================================
FILE: openapi/api_default.go
================================================
/*
Cloudflare WARP API

No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)

API version: 536
*/

// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.

package openapi

import (
	"bytes"
	"context"
	"io"
	"net/http"
	"net/url"
	"strings"
)


// DefaultAPIService DefaultAPI service
type DefaultAPIService service

type ApiDeleteBoundDeviceRequest struct {
	ctx context.Context
	ApiService *DefaultAPIService
	sourceDeviceId string
	apiVersion string
	boundDeviceId string
}

func (r ApiDeleteBoundDeviceRequest) Execute() (*http.Response, error) {
	return r.ApiService.DeleteBoundDeviceExecute(r)
}

/*
DeleteBoundDevice DeleteBoundDevice

 @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
 @param sourceDeviceId
 @param apiVersion
 @param boundDeviceId
 @return ApiDeleteBoundDeviceRequest
*/
func (a *DefaultAPIService) DeleteBoundDevice(ctx context.Context, sourceDeviceId string, apiVersion string, boundDeviceId string) ApiDeleteBoundDeviceRequest {
	return ApiDeleteBoundDeviceRequest{
		ApiService: a,
		ctx: ctx,
		sourceDeviceId: sourceDeviceId,
		apiVersion: apiVersion,
		boundDeviceId: boundDeviceId,
	}
}

// Execute executes the request
func (a *DefaultAPIService) DeleteBoundDeviceExecute(r ApiDeleteBoundDeviceRequest) (*http.Response, error) {
	var (
		localVarHTTPMethod   = http.MethodDelete
		localVarPostBody     interface{}
		formFiles            []formFile
	)

	localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "DefaultAPIService.DeleteBoundDevice")
	if err != nil {
		return nil, &GenericOpenAPIError{error: err.Error()}
	}

	localVarPath := localBasePath + "/{apiVersion}/reg/{sourceDeviceId}/account/reg/{boundDeviceId}"
	localVarPath = strings.Replace(localVarPath, "{"+"sourceDeviceId"+"}", url.PathEscape(parameterValueToString(r.sourceDeviceId, "sourceDeviceId")), -1)
	localVarPath = strings.Replace(localVarPath, "{"+"apiVersion"+"}", url.PathEscape(parameterValueToString(r.apiVersion, "apiVersion")), -1)
	localVarPath = strings.Replace(localVarPath, "{"+"boundDeviceId"+"}", url.PathEscape(parameterValueToString(r.boundDeviceId, "boundDeviceId")), -1)

	localVarHeaderParams := make(map[string]string)
	localVarQueryParams := url.Values{}
	localVarFormParams := url.Values{}

	// to determine the Content-Type header
	localVarHTTPContentTypes := []string{}

	// set Content-Type header
	localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
	if localVarHTTPContentType != "" {
		localVarHeaderParams["Content-Type"] = localVarHTTPContentType
	}

	// to determine the Accept header
	localVarHTTPHeaderAccepts := []string{}

	// set Accept header
	localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
	if localVarHTTPHeaderAccept != "" {
		localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
	}
	req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
	if err != nil {
		return nil, err
	}

	localVarHTTPResponse, err := a.client.callAPI(req)
	if err != nil || localVarHTTPResponse == nil {
		return localVarHTTPResponse, err
	}

	localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
	localVarHTTPResponse.Body.Close()
	localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
	if err != nil {
		return localVarHTTPResponse, err
	}

	if localVarHTTPResponse.StatusCode >= 300 {
		newErr := &GenericOpenAPIError{
			body:  localVarBody,
			error: localVarHTTPResponse.Status,
		}
		return localVarHTTPResponse, newErr
	}

	return localVarHTTPResponse, nil
}

type ApiGetAccountRequest struct {
	ctx context.Context
	ApiService *DefaultAPIService
	sourceDeviceId string
	apiVersion string
}

func (r ApiGetAccountRequest) Execute() (*Account, *http.Response, error) {
	return r.ApiService.GetAccountExecute(r)
}

/*
GetAccount GetAccount

 @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
 @param sourceDeviceId
 @param apiVersion
 @return ApiGetAccountRequest
*/
func (a *DefaultAPIService) GetAccount(ctx context.Context, sourceDeviceId string, apiVersion string) ApiGetAccountRequest {
	return ApiGetAccountRequest{
		ApiService: a,
		ctx: ctx,
		sourceDeviceId: sourceDeviceId,
		apiVersion: apiVersion,
	}
}

// Execute executes the request
//  @return Account
func (a *DefaultAPIService) GetAccountExecute(r ApiGetAccountRequest) (*Account, *http.Response, error) {
	var (
		localVarHTTPMethod   = http.MethodGet
		localVarPostBody     interface{}
		formFiles            []formFile
		localVarReturnValue  *Account
	)

	localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "DefaultAPIService.GetAccount")
	if err != nil {
		return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
	}

	localVarPath := localBasePath + "/{apiVersion}/reg/{sourceDeviceId}/account"
	localVarPath = strings.Replace(localVarPath, "{"+"sourceDeviceId"+"}", url.PathEscape(parameterValueToString(r.sourceDeviceId, "sourceDeviceId")), -1)
	localVarPath = strings.Replace(localVarPath, "{"+"apiVersion"+"}", url.PathEscape(parameterValueToString(r.apiVersion, "apiVersion")), -1)

	localVarHeaderParams := make(map[string]string)
	localVarQueryParams := url.Values{}
	localVarFormParams := url.Values{}

	// to determine the Content-Type header
	localVarHTTPContentTypes := []string{}

	// set Content-Type header
	localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
	if localVarHTTPContentType != "" {
		localVarHeaderParams["Content-Type"] = localVarHTTPContentType
	}

	// to determine the Accept header
	localVarHTTPHeaderAccepts := []string{"application/json"}

	// set Accept header
	localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
	if localVarHTTPHeaderAccept != "" {
		localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
	}
	req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
	if err != nil {
		return localVarReturnValue, nil, err
	}

	localVarHTTPResponse, err := a.client.callAPI(req)
	if err != nil || localVarHTTPResponse == nil {
		return localVarReturnValue, localVarHTTPResponse, err
	}

	localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
	localVarHTTPResponse.Body.Close()
	localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
	if err != nil {
		return localVarReturnValue, localVarHTTPResponse, err
	}

	if localVarHTTPResponse.StatusCode >= 300 {
		newErr := &GenericOpenAPIError{
			body:  localVarBody,
			error: localVarHTTPResponse.Status,
		}
		return localVarReturnValue, localVarHTTPResponse, newErr
	}

	err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
	if err != nil {
		newErr := &GenericOpenAPIError{
			body:  localVarBody,
			error: err.Error(),
		}
		return localVarReturnValue, localVarHTTPResponse, newErr
	}

	return localVarReturnValue, localVarHTTPResponse, nil
}

type ApiGetBoundDevicesRequest struct {
	ctx context.Context
	ApiService *DefaultAPIService
	sourceDeviceId string
	apiVersion string
}

func (r ApiGetBoundDevicesRequest) Execute() ([]BoundDevice, *http.Response, error) {
	return r.ApiService.GetBoundDevicesExecute(r)
}

/*
GetBoundDevices GetBoundDevices

 @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
 @param sourceDeviceId
 @param apiVersion
 @return ApiGetBoundDevicesRequest
*/
func (a *DefaultAPIService) GetBoundDevices(ctx context.Context, sourceDeviceId string, apiVersion string) ApiGetBoundDevicesRequest {
	return ApiGetBoundDevicesRequest{
		ApiService: a,
		ctx: ctx,
		sourceDeviceId: sourceDeviceId,
		apiVersion: apiVersion,
	}
}

// Execute executes the request
//  @return []BoundDevice
func (a *DefaultAPIService) GetBoundDevicesExecute(r ApiGetBoundDevicesRequest) ([]BoundDevice, *http.Response, error) {
	var (
		localVarHTTPMethod   = http.MethodGet
		localVarPostBody     interface{}
		formFiles            []formFile
		localVarReturnValue  []BoundDevice
	)

	localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "DefaultAPIService.GetBoundDevices")
	if err != nil {
		return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
	}

	localVarPath := localBasePath + "/{apiVersion}/reg/{sourceDeviceId}/account/devices"
	localVarPath = strings.Replace(localVarPath, "{"+"sourceDeviceId"+"}", url.PathEscape(parameterValueToString(r.sourceDeviceId, "sourceDeviceId")), -1)
	localVarPath = strings.Replace(localVarPath, "{"+"apiVersion"+"}", url.PathEscape(parameterValueToString(r.apiVersion, "apiVersion")), -1)

	localVarHeaderParams := make(map[string]string)
	localVarQueryParams := url.Values{}
	localVarFormParams := url.Values{}

	// to determine the Content-Type header
	localVarHTTPContentTypes := []string{}

	// set Content-Type header
	localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
	if localVarHTTPContentType != "" {
		localVarHeaderParams["Content-Type"] = localVarHTTPContentType
	}

	// to determine the Accept header
	localVarHTTPHeaderAccepts := []string{"application/json"}

	// set Accept header
	localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
	if localVarHTTPHeaderAccept != "" {
		localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
	}
	req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
	if err != nil {
		return localVarReturnValue, nil, err
	}

	localVarHTTPResponse, err := a.client.callAPI(req)
	if err != nil || localVarHTTPResponse == nil {
		return localVarReturnValue, localVarHTTPResponse, err
	}

	localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
	localVarHTTPResponse.Body.Close()
	localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
	if err != nil {
		return localVarReturnValue, localVarHTTPResponse, err
	}

	if localVarHTTPResponse.StatusCode >= 300 {
		newErr := &GenericOpenAPIError{
			body:  localVarBody,
			error: localVarHTTPResponse.Status,
		}
		return localVarReturnValue, localVarHTTPResponse, newErr
	}

	err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
	if err != nil {
		newErr := &GenericOpenAPIError{
			body:  localVarBody,
			error: err.Error(),
		}
		return localVarReturnValue, localVarHTTPResponse, newErr
	}

	return localVarReturnValue, localVarHTTPResponse, nil
}

type ApiGetClientConfigRequest struct {
	ctx context.Context
	ApiService *DefaultAPIService
	apiVersion string
}

func (r ApiGetClientConfigRequest) Execute() (*GetClientConfig200Response, *http.Response, error) {
	return r.ApiService.GetClientConfigExecute(r)
}

/*
GetClientConfig GetClientConfig

 @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
 @param apiVersion
 @return ApiGetClientConfigRequest
*/
func (a *DefaultAPIService) GetClientConfig(ctx context.Context, apiVersion string) ApiGetClientConfigRequest {
	return ApiGetClientConfigRequest{
		ApiService: a,
		ctx: ctx,
		apiVersion: apiVersion,
	}
}

// Execute executes the request
//  @return GetClientConfig200Response
func (a *DefaultAPIService) GetClientConfigExecute(r ApiGetClientConfigRequest) (*GetClientConfig200Response, *http.Response, error) {
	var (
		localVarHTTPMethod   = http.MethodGet
		localVarPostBody     interface{}
		formFiles            []formFile
		localVarReturnValue  *GetClientConfig200Response
	)

	localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "DefaultAPIService.GetClientConfig")
	if err != nil {
		return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
	}

	localVarPath := localBasePath + "/{apiVersion}/client_config"
	localVarPath = strings.Replace(localVarPath, "{"+"apiVersion"+"}", url.PathEscape(parameterValueToString(r.apiVersion, "apiVersion")), -1)

	localVarHeaderParams := make(map[string]string)
	localVarQueryParams := url.Values{}
	localVarFormParams := url.Values{}

	// to determine the Content-Type header
	localVarHTTPContentTypes := []string{}

	// set Content-Type header
	localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
	if localVarHTTPContentType != "" {
		localVarHeaderParams["Content-Type"] = localVarHTTPContentType
	}

	// to determine the Accept header
	localVarHTTPHeaderAccepts := []string{"application/json"}

	// set Accept header
	localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
	if localVarHTTPHeaderAccept != "" {
		localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
	}
	req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
	if err != nil {
		return localVarReturnValue, nil, err
	}

	localVarHTTPResponse, err := a.client.callAPI(req)
	if err != nil || localVarHTTPResponse == nil {
		return localVarReturnValue, localVarHTTPResponse, err
	}

	localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
	localVarHTTPResponse.Body.Close()
	localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
	if err != nil {
		return localVarReturnValue, localVarHTTPResponse, err
	}

	if localVarHTTPResponse.StatusCode >= 300 {
		newErr := &GenericOpenAPIError{
			body:  localVarBody,
			error: localVarHTTPResponse.Status,
		}
		return localVarReturnValue, localVarHTTPResponse, newErr
	}

	err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
	if err != nil {
		newErr := &GenericOpenAPIError{
			body:  localVarBody,
			error: err.Error(),
		}
		return localVarReturnValue, localVarHTTPResponse, newErr
	}

	return localVarReturnValue, localVarHTTPResponse, nil
}

type ApiGetSourceDeviceRequest struct {
	ctx context.Context
	ApiService *DefaultAPIService
	apiVersion string
	sourceDeviceId string
}

func (r ApiGetSourceDeviceRequest) Execute() (*GetSourceDevice200Response, *http.Response, error) {
	return r.ApiService.GetSourceDeviceExecute(r)
}

/*
GetSourceDevice GetSourceDevice

 @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
 @param apiVersion
 @param sourceDeviceId
 @return ApiGetSourceDeviceRequest
*/
func (a *DefaultAPIService) GetSourceDevice(ctx context.Context, apiVersion string, sourceDeviceId string) ApiGetSourceDeviceRequest {
	return ApiGetSourceDeviceRequest{
		ApiService: a,
		ctx: ctx,
		apiVersion: apiVersion,
		sourceDeviceId: sourceDeviceId,
	}
}

// Execute executes the request
//  @return GetSourceDevice200Response
func (a *DefaultAPIService) GetSourceDeviceExecute(r ApiGetSourceDeviceRequest) (*GetSourceDevice200Response, *http.Response, error) {
	var (
		localVarHTTPMethod   = http.MethodGet
		localVarPostBody     interface{}
		formFiles            []formFile
		localVarReturnValue  *GetSourceDevice200Response
	)

	localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "DefaultAPIService.GetSourceDevice")
	if err != nil {
		return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
	}

	localVarPath := localBasePath + "/{apiVersion}/reg/{sourceDeviceId}"
	localVarPath = strings.Replace(localVarPath, "{"+"apiVersion"+"}", url.PathEscape(parameterValueToString(r.apiVersion, "apiVersion")), -1)
	localVarPath = strings.Replace(localVarPath, "{"+"sourceDeviceId"+"}", url.PathEscape(parameterValueToString(r.sourceDeviceId, "sourceDeviceId")), -1)

	localVarHeaderParams := make(map[string]string)
	localVarQueryParams := url.Values{}
	localVarFormParams := url.Values{}

	// to determine the Content-Type header
	localVarHTTPContentTypes := []string{}

	// set Content-Type header
	localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
	if localVarHTTPContentType != "" {
		localVarHeaderParams["Content-Type"] = localVarHTTPContentType
	}

	// to determine the Accept header
	localVarHTTPHeaderAccepts := []string{"application/json"}

	// set Accept header
	localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
	if localVarHTTPHeaderAccept != "" {
		localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
	}
	req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
	if err != nil {
		return localVarReturnValue, nil, err
	}

	localVarHTTPResponse, err := a.client.callAPI(req)
	if err != nil || localVarHTTPResponse == nil {
		return localVarReturnValue, localVarHTTPResponse, err
	}

	localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
	localVarHTTPResponse.Body.Close()
	localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
	if err != nil {
		return localVarReturnValue, localVarHTTPResponse, err
	}

	if localVarHTTPResponse.StatusCode >= 300 {
		newErr := &GenericOpenAPIError{
			body:  localVarBody,
			error: localVarHTTPResponse.Status,
		}
		return localVarReturnValue, localVarHTTPResponse, newErr
	}

	err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
	if err != nil {
		newErr := &GenericOpenAPIError{
			body:  localVarBody,
			error: err.Error(),
		}
		return localVarReturnValue, localVarHTTPResponse, newErr
	}

	return localVarReturnValue, localVarHTTPResponse, nil
}

type ApiRegisterRequest struct {
	ctx context.Context
	ApiService *DefaultAPIService
	apiVersion string
	registerRequest *RegisterRequest
}

func (r ApiRegisterRequest) RegisterRequest(registerRequest RegisterRequest) ApiRegisterRequest {
	r.registerRequest = &registerRequest
	return r
}

func (r ApiRegisterRequest) Execute() (*Register200Response, *http.Response, error) {
	return r.ApiService.RegisterExecute(r)
}

/*
Register Register

 @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
 @param apiVersion
 @return ApiRegisterRequest
*/
func (a *DefaultAPIService) Register(ctx context.Context, apiVersion string) ApiRegisterRequest {
	return ApiRegisterRequest{
		ApiService: a,
		ctx: ctx,
		apiVersion: apiVersion,
	}
}

// Execute executes the request
//  @return Register200Response
func (a *DefaultAPIService) RegisterExecute(r ApiRegisterRequest) (*Register200Response, *http.Response, error) {
	var (
		localVarHTTPMethod   = http.MethodPost
		localVarPostBody     interface{}
		formFiles            []formFile
		localVarReturnValue  *Register200Response
	)

	localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "DefaultAPIService.Register")
	if err != nil {
		return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
	}

	localVarPath := localBasePath + "/{apiVersion}/reg"
	localVarPath = strings.Replace(localVarPath, "{"+"apiVersion"+"}", url.PathEscape(parameterValueToString(r.apiVersion, "apiVersion")), -1)

	localVarHeaderParams := make(map[string]string)
	localVarQueryParams := url.Values{}
	localVarFormParams := url.Values{}

	// to determine the Content-Type header
	localVarHTTPContentTypes := []string{"application/json"}

	// set Content-Type header
	localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
	if localVarHTTPContentType != "" {
		localVarHeaderParams["Content-Type"] = localVarHTTPContentType
	}

	// to determine the Accept header
	localVarHTTPHeaderAccepts := []string{"application/json"}

	// set Accept header
	localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
	if localVarHTTPHeaderAccept != "" {
		localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
	}
	// body params
	localVarPostBody = r.registerRequest
	req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
	if err != nil {
		return localVarReturnValue, nil, err
	}

	localVarHTTPResponse, err := a.client.callAPI(req)
	if err != nil || localVarHTTPResponse == nil {
		return localVarReturnValue, localVarHTTPResponse, err
	}

	localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
	localVarHTTPResponse.Body.Close()
	localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
	if err != nil {
		return localVarReturnValue, localVarHTTPResponse, err
	}

	if localVarHTTPResponse.StatusCode >= 300 {
		newErr := &GenericOpenAPIError{
			body:  localVarBody,
			error: localVarHTTPResponse.Status,
		}
		return localVarReturnValue, localVarHTTPResponse, newErr
	}

	err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
	if err != nil {
		newErr := &GenericOpenAPIError{
			body:  localVarBody,
			error: err.Error(),
		}
		return localVarReturnValue, localVarHTTPResponse, newErr
	}

	return localVarReturnValue, localVarHTTPResponse, nil
}

type ApiResetAccountLicenseRequest struct {
	ctx context.Context
	ApiService *DefaultAPIService
	sourceDeviceId string
	apiVersion string
}

func (r ApiResetAccountLicenseRequest) Execute() (*ResetAccountLicense200Response, *http.Response, error) {
	return r.ApiService.ResetAccountLicenseExecute(r)
}

/*
ResetAccountLicense ResetAccountLicense

 @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
 @param sourceDeviceId
 @param apiVersion
 @return ApiResetAccountLicenseRequest
*/
func (a *DefaultAPIService) ResetAccountLicense(ctx context.Context, sourceDeviceId string, apiVersion string) ApiResetAccountLicenseRequest {
	return ApiResetAccountLicenseRequest{
		ApiService: a,
		ctx: ctx,
		sourceDeviceId: sourceDeviceId,
		apiVersion: apiVersion,
	}
}

// Execute executes the request
//  @return ResetAccountLicense200Response
func (a *DefaultAPIService) ResetAccountLicenseExecute(r ApiResetAccountLicenseRequest) (*ResetAccountLicense200Response, *http.Response, error) {
	var (
		localVarHTTPMethod   = http.MethodPost
		localVarPostBody     interface{}
		formFiles            []formFile
		localVarReturnValue  *ResetAccountLicense200Response
	)

	localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "DefaultAPIService.ResetAccountLicense")
	if err != nil {
		return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
	}

	localVarPath := localBasePath + "/{apiVersion}/reg/{sourceDeviceId}/account/license"
	localVarPath = strings.Replace(localVarPath, "{"+"sourceDeviceId"+"}", url.PathEscape(parameterValueToString(r.sourceDeviceId, "sourceDeviceId")), -1)
	localVarPath = strings.Replace(localVarPath, "{"+"apiVersion"+"}", url.PathEscape(parameterValueToString(r.apiVersion, "apiVersion")), -1)

	localVarHeaderParams := make(map[string]string)
	localVarQueryParams := url.Values{}
	localVarFormParams := url.Values{}

	// to determine the Content-Type header
	localVarHTTPContentTypes := []string{}

	// set Content-Type header
	localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
	if localVarHTTPContentType != "" {
		localVarHeaderParams["Content-Type"] = localVarHTTPContentType
	}

	// to determine the Accept header
	localVarHTTPHeaderAccepts := []string{"application/json"}

	// set Accept header
	localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
	if localVarHTTPHeaderAccept != "" {
		localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
	}
	req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
	if err != nil {
		return localVarReturnValue, nil, err
	}

	localVarHTTPResponse, err := a.client.callAPI(req)
	if err != nil || localVarHTTPResponse == nil {
		return localVarReturnValue, localVarHTTPResponse, err
	}

	localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
	localVarHTTPResponse.Body.Close()
	localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
	if err != nil {
		return localVarReturnValue, localVarHTTPResponse, err
	}

	if localVarHTTPResponse.StatusCode >= 300 {
		newErr := &GenericOpenAPIError{
			body:  localVarBody,
			error: localVarHTTPResponse.Status,
		}
		return localVarReturnValue, localVarHTTPResponse, newErr
	}

	err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
	if err != nil {
		newErr := &GenericOpenAPIError{
			body:  localVarBody,
			error: err.Error(),
		}
		return localVarReturnValue, localVarHTTPResponse, newErr
	}

	return localVarReturnValue, localVarHTTPResponse, nil
}

type ApiUpdateAccountRequest struct {
	ctx context.Context
	ApiService *DefaultAPIService
	sourceDeviceId string
	apiVersion string
	updateAccountRequest *UpdateAccountRequest
}

func (r ApiUpdateAccountRequest) UpdateAccountRequest(updateAccountRequest UpdateAccountRequest) ApiUpdateAccountRequest {
	r.updateAccountRequest = &updateAccountRequest
	return r
}

func (r ApiUpdateAccountRequest) Execute() (*UpdateAccount200Response, *http.Response, error) {
	return r.ApiService.UpdateAccountExecute(r)
}

/*
UpdateAccount UpdateAccount

 @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
 @param sourceDeviceId
 @param apiVersion
 @return ApiUpdateAccountRequest
*/
func (a *DefaultAPIService) UpdateAccount(ctx context.Context, sourceDeviceId string, apiVersion string) ApiUpdateAccountRequest {
	return ApiUpdateAccountRequest{
		ApiService: a,
		ctx: ctx,
		sourceDeviceId: sourceDeviceId,
		apiVersion: apiVersion,
	}
}

// Execute executes the request
//  @return UpdateAccount200Response
func (a *DefaultAPIService) UpdateAccountExecute(r ApiUpdateAccountRequest) (*UpdateAccount200Response, *http.Response, error) {
	var (
		localVarHTTPMethod   = http.MethodPut
		localVarPostBody     interface{}
		formFiles            []formFile
		localVarReturnValue  *UpdateAccount200Response
	)

	localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "DefaultAPIService.UpdateAccount")
	if err != nil {
		return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
	}

	localVarPath := localBasePath + "/{apiVersion}/reg/{sourceDeviceId}/account"
	localVarPath = strings.Replace(localVarPath, "{"+"sourceDeviceId"+"}", url.PathEscape(parameterValueToString(r.sourceDeviceId, "sourceDeviceId")), -1)
	localVarPath = strings.Replace(localVarPath, "{"+"apiVersion"+"}", url.PathEscape(parameterValueToString(r.apiVersion, "apiVersion")), -1)

	localVarHeaderParams := make(map[string]string)
	localVarQueryParams := url.Values{}
	localVarFormParams := url.Values{}

	// to determine the Content-Type header
	localVarHTTPContentTypes := []string{"application/json"}

	// set Content-Type header
	localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
	if localVarHTTPContentType != "" {
		localVarHeaderParams["Content-Type"] = localVarHTTPContentType
	}

	// to determine the Accept header
	localVarHTTPHeaderAccepts := []string{"application/json"}

	// set Accept header
	localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
	if localVarHTTPHeaderAccept != "" {
		localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
	}
	// body params
	localVarPostBody = r.updateAccountRequest
	req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
	if err != nil {
		return localVarReturnValue, nil, err
	}

	localVarHTTPResponse, err := a.client.callAPI(req)
	if err != nil || localVarHTTPResponse == nil {
		return localVarReturnValue, localVarHTTPResponse, err
	}

	localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
	localVarHTTPResponse.Body.Close()
	localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
	if err != nil {
		return localVarReturnValue, localVarHTTPResponse, err
	}

	if localVarHTTPResponse.StatusCode >= 300 {
		newErr := &GenericOpenAPIError{
			body:  localVarBody,
			error: localVarHTTPResponse.Status,
		}
		return localVarReturnValue, localVarHTTPResponse, newErr
	}

	err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
	if err != nil {
		newErr := &GenericOpenAPIError{
			body:  localVarBody,
			error: err.Error(),
		}
		return localVarReturnValue, localVarHTTPResponse, newErr
	}

	return localVarReturnValue, localVarHTTPResponse, nil
}

type ApiUpdateBoundDeviceRequest struct {
	ctx context.Context
	ApiService *DefaultAPIService
	sourceDeviceId string
	apiVersion string
	boundDeviceId string
	updateBoundDeviceRequest *UpdateBoundDeviceRequest
}

func (r ApiUpdateBoundDeviceRequest) UpdateBoundDeviceRequest(updateBoundDeviceRequest UpdateBoundDeviceRequest) ApiUpdateBoundDeviceRequest {
	r.updateBoundDeviceRequest = &updateBoundDeviceRequest
	return r
}

func (r ApiUpdateBoundDeviceRequest) Execute() ([]BoundDevice, *http.Response, error) {
	return r.ApiService.UpdateBoundDeviceExecute(r)
}

/*
UpdateBoundDevice UpdateBoundDevice

 @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
 @param sourceDeviceId
 @param apiVersion
 @param boundDeviceId
 @return ApiUpdateBoundDeviceRequest
*/
func (a *DefaultAPIService) UpdateBoundDevice(ctx context.Context, sourceDeviceId string, apiVersion string, boundDeviceId string) ApiUpdateBoundDeviceRequest {
	return ApiUpdateBoundDeviceRequest{
		ApiService: a,
		ctx: ctx,
		sourceDeviceId: sourceDeviceId,
		apiVersion: apiVersion,
		boundDeviceId: boundDeviceId,
	}
}

// Execute executes the request
//  @return []BoundDevice
func (a *DefaultAPIService) UpdateBoundDeviceExecute(r ApiUpdateBoundDeviceRequest) ([]BoundDevice, *http.Response, error) {
	var (
		localVarHTTPMethod   = http.MethodPatch
		localVarPostBody     interface{}
		formFiles            []formFile
		localVarReturnValue  []BoundDevice
	)

	localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "DefaultAPIService.UpdateBoundDevice")
	if err != nil {
		return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
	}

	localVarPath := localBasePath + "/{apiVersion}/reg/{sourceDeviceId}/account/reg/{boundDeviceId}"
	localVarPath = strings.Replace(localVarPath, "{"+"sourceDeviceId"+"}", url.PathEscape(parameterValueToString(r.sourceDeviceId, "sourceDeviceId")), -1)
	localVarPath = strings.Replace(localVarPath, "{"+"apiVersion"+"}", url.PathEscape(parameterValueToString(r.apiVersion, "apiVersion")), -1)
	localVarPath = strings.Replace(localVarPath, "{"+"boundDeviceId"+"}", url.PathEscape(parameterValueToString(r.boundDeviceId, "boundDeviceId")), -1)

	localVarHeaderParams := make(map[string]string)
	localVarQueryParams := url.Values{}
	localVarFormParams := url.Values{}

	// to determine the Content-Type header
	localVarHTTPContentTypes := []string{"application/json"}

	// set Content-Type header
	localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
	if localVarHTTPContentType != "" {
		localVarHeaderParams["Content-Type"] = localVarHTTPContentType
	}

	// to determine the Accept header
	localVarHTTPHeaderAccepts := []string{"application/json"}

	// set Accept header
	localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
	if localVarHTTPHeaderAccept != "" {
		localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
	}
	// body params
	localVarPostBody = r.updateBoundDeviceRequest
	req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
	if err != nil {
		return localVarReturnValue, nil, err
	}

	localVarHTTPResponse, err := a.client.callAPI(req)
	if err != nil || localVarHTTPResponse == nil {
		return localVarReturnValue, localVarHTTPResponse, err
	}

	localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
	localVarHTTPResponse.Body.Close()
	localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
	if err != nil {
		return localVarReturnValue, localVarHTTPResponse, err
	}

	if localVarHTTPResponse.StatusCode >= 300 {
		newErr := &GenericOpenAPIError{
			body:  localVarBody,
			error: localVarHTTPResponse.Status,
		}
		return localVarReturnValue, localVarHTTPResponse, newErr
	}

	err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
	if err != nil {
		newErr := &GenericOpenAPIError{
			body:  localVarBody,
			error: err.Error(),
		}
		return localVarReturnValue, localVarHTTPResponse, newErr
	}

	return localVarReturnValue, localVarHTTPResponse, nil
}

type ApiUpdateSourceDeviceRequest struct {
	ctx context.Context
	ApiService *DefaultAPIService
	apiVersion string
	sourceDeviceId string
	updateSourceDeviceRequest *UpdateSourceDeviceRequest
}

func (r ApiUpdateSourceDeviceRequest) UpdateSourceDeviceRequest(updateSourceDeviceRequest UpdateSourceDeviceRequest) ApiUpdateSourceDeviceRequest {
	r.updateSourceDeviceRequest = &updateSourceDeviceRequest
	return r
}

func (r ApiUpdateSourceDeviceRequest) Execute() (*UpdateSourceDevice200Response, *http.Response, error) {
	return r.ApiService.UpdateSourceDeviceExecute(r)
}

/*
UpdateSourceDevice UpdateSourceDevice

 @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
 @param apiVersion
 @param sourceDeviceId
 @return ApiUpdateSourceDeviceRequest
*/
func (a *DefaultAPIService) UpdateSourceDevice(ctx context.Context, apiVersion string, sourceDeviceId string) ApiUpdateSourceDeviceRequest {
	return ApiUpdateSourceDeviceRequest{
		ApiService: a,
		ctx: ctx,
		apiVersion: apiVersion,
		sourceDeviceId: sourceDeviceId,
	}
}

// Execute executes the request
//  @return UpdateSourceDevice200Response
func (a *DefaultAPIService) UpdateSourceDeviceExecute(r ApiUpdateSourceDeviceRequest) (*UpdateSourceDevice200Response, *http.Response, error) {
	var (
		localVarHTTPMethod   = http.MethodPatch
		localVarPostBody     interface{}
		formFiles            []formFile
		localVarReturnValue  *UpdateSourceDevice200Response
	)

	localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "DefaultAPIService.UpdateSourceDevice")
	if err != nil {
		return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
	}

	localVarPath := localBasePath + "/{apiVersion}/reg/{sourceDeviceId}"
	localVarPath = strings.Replace(localVarPath, "{"+"apiVersion"+"}", url.PathEscape(parameterValueToString(r.apiVersion, "apiVersion")), -1)
	localVarPath = strings.Replace(localVarPath, "{"+"sourceDeviceId"+"}", url.PathEscape(parameterValueToString(r.sourceDeviceId, "sourceDeviceId")), -1)

	localVarHeaderParams := make(map[string]string)
	localVarQueryParams := url.Values{}
	localVarFormParams := url.Values{}

	// to determine the Content-Type header
	localVarHTTPContentTypes := []string{"application/json"}

	// set Content-Type header
	localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
	if localVarHTTPContentType != "" {
		localVarHeaderParams["Content-Type"] = localVarHTTPContentType
	}

	// to determine the Accept header
	localVarHTTPHeaderAccepts := []string{"application/json"}

	// set Accept header
	localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
	if localVarHTTPHeaderAccept != "" {
		localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
	}
	// body params
	localVarPostBody = r.updateSourceDeviceRequest
	req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
	if err != nil {
		return localVarReturnValue, nil, err
	}

	localVarHTTPResponse, err := a.client.callAPI(req)
	if err != nil || localVarHTTPResponse == nil {
		return localVarReturnValue, localVarHTTPResponse, err
	}

	localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
	localVarHTTPResponse.Body.Close()
	localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
	if err != nil {
		return localVarReturnValue, localVarHTTPResponse, err
	}

	if localVarHTTPResponse.StatusCode >= 300 {
		newErr := &GenericOpenAPIError{
			body:  localVarBody,
			error: localVarHTTPResponse.Status,
		}
		return localVarReturnValue, localVarHTTPResponse, newErr
	}

	err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
	if err != nil {
		newErr := &GenericOpenAPIError{
			body:  localVarBody,
			error: err.Error(),
		}
		return localVarReturnValue, localVarHTTPResponse, newErr
	}

	return localVarReturnValue, localVarHTTPResponse, nil
}


================================================
FILE: openapi/client.go
================================================
/*
Cloudflare WARP API

No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)

API version: 536
*/

// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.

package openapi

import (
	"bytes"
	"context"
	"encoding/json"
	"encoding/xml"
	"errors"
	"fmt"
	"io"
	"log"
	"mime/multipart"
	"net/http"
	"net/http/httputil"
	"net/url"
	"os"
	"path/filepath"
	"reflect"
	"regexp"
	"strconv"
	"strings"
	"time"
	"unicode/utf8"

)

var (
	JsonCheck       = regexp.MustCompile(`(?i:(?:application|text)/(?:[^;]+\+)?json)`)
	XmlCheck        = regexp.MustCompile(`(?i:(?:application|text)/(?:[^;]+\+)?xml)`)
	queryParamSplit = regexp.MustCompile(`(^|&)([^&]+)`)
	queryDescape    = strings.NewReplacer( "%5B", "[", "%5D", "]" )
)

// APIClient manages communication with the Cloudflare WARP API API v536
// In most cases there should be only one, shared, APIClient.
type APIClient struct {
	cfg    *Configuration
	common service // Reuse a single struct instead of allocating one for each service on the heap.

	// API Services

	DefaultAPI *DefaultAPIService
}

type service struct {
	client *APIClient
}

// NewAPIClient creates a new API client. Requires a userAgent string describing your application.
// optionally a custom http.Client to allow for advanced features such as caching.
func NewAPIClient(cfg *Configuration) *APIClient {
	if cfg.HTTPClient == nil {
		cfg.HTTPClient = http.DefaultClient
	}

	c := &APIClient{}
	c.cfg = cfg
	c.common.client = c

	// API Services
	c.DefaultAPI = (*DefaultAPIService)(&c.common)

	return c
}

func atoi(in string) (int, error) {
	return strconv.Atoi(in)
}

// selectHeaderContentType select a content type from the available list.
func selectHeaderContentType(contentTypes []string) string {
	if len(contentTypes) == 0 {
		return ""
	}
	if contains(contentTypes, "application/json") {
		return "application/json"
	}
	return contentTypes[0] // use the first content type specified in 'consumes'
}

// selectHeaderAccept join all accept types and return
func selectHeaderAccept(accepts []string) string {
	if len(accepts) == 0 {
		return ""
	}

	if contains(accepts, "application/json") {
		return "application/json"
	}

	return strings.Join(accepts, ",")
}

// contains is a case insensitive match, finding needle in a haystack
func contains(haystack []string, needle string) bool {
	for _, a := range haystack {
		if strings.EqualFold(a, needle) {
			return true
		}
	}
	return false
}

// Verify optional parameters are of the correct type.
func typeCheckParameter(obj interface{}, expected string, name string) error {
	// Make sure there is an object.
	if obj == nil {
		return nil
	}

	// Check the type is as expected.
	if reflect.TypeOf(obj).String() != expected {
		return fmt.Errorf("expected %s to be of type %s but received %s", name, expected, reflect.TypeOf(obj).String())
	}
	return nil
}

func parameterValueToString( obj interface{}, key string ) string {
	if reflect.TypeOf(obj).Kind() != reflect.Ptr {
		if actualObj, ok := obj.(interface{ GetActualInstanceValue() interface{} }); ok {
			return fmt.Sprintf("%v", actualObj.GetActualInstanceValue())
		}

		return fmt.Sprintf("%v", obj)
	}
	var param,ok = obj.(MappedNullable)
	if !ok {
		return ""
	}
	dataMap,err := param.ToMap()
	if err != nil {
		return ""
	}
	return fmt.Sprintf("%v", dataMap[key])
}

// parameterAddToHeaderOrQuery adds the provided object to the request header or url query
// supporting deep object syntax
func parameterAddToHeaderOrQuery(headerOrQueryParams interface{}, keyPrefix string, obj interface{}, style string, collectionType string) {
	var v = reflect.ValueOf(obj)
	var value = ""
	if v == reflect.ValueOf(nil) {
		value = "null"
	} else {
		switch v.Kind() {
			case reflect.Invalid:
				value = "invalid"

			case reflect.Struct:
				if t,ok := obj.(MappedNullable); ok {
					dataMap,err := t.ToMap()
					if err != nil {
						return
					}
					parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefix, dataMap, style, collectionType)
					return
				}
				if t, ok := obj.(time.Time); ok {
					parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefix, t.Format(time.RFC3339Nano), style, collectionType)
					return
				}
				value = v.Type().String() + " value"
			case reflect.Slice:
				var indValue = reflect.ValueOf(obj)
				if indValue == reflect.ValueOf(nil) {
					return
				}
				var lenIndValue = indValue.Len()
				for i:=0;i<lenIndValue;i++ {
					var arrayValue = indValue.Index(i)
					var keyPrefixForCollectionType = keyPrefix
					if style == "deepObject" {
						keyPrefixForCollectionType = keyPrefix + "[" + strconv.Itoa(i) + "]"
					}
					parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefixForCollectionType, arrayValue.Interface(), style, collectionType)
				}
				return

			case reflect.Map:
				var indValue = reflect.ValueOf(obj)
				if indValue == reflect.ValueOf(nil) {
					return
				}
				iter := indValue.MapRange()
				for iter.Next() {
					k,v := iter.Key(), iter.Value()
					parameterAddToHeaderOrQuery(headerOrQueryParams, fmt.Sprintf("%s[%s]", keyPrefix, k.String()), v.Interface(), style, collectionType)
				}
				return

			case reflect.Interface:
				fallthrough
			case reflect.Ptr:
				parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefix, v.Elem().Interface(), style, collectionType)
				return

			case reflect.Int, reflect.Int8, reflect.Int16,
				reflect.Int32, reflect.Int64:
				value = strconv.FormatInt(v.Int(), 10)
			case reflect.Uint, reflect.Uint8, reflect.Uint16,
				reflect.Uint32, reflect.Uint64, reflect.Uintptr:
				value = strconv.FormatUint(v.Uint(), 10)
			case reflect.Float32, reflect.Float64:
				value = strconv.FormatFloat(v.Float(), 'g', -1, 32)
			case reflect.Bool:
				value = strconv.FormatBool(v.Bool())
			case reflect.String:
				value = v.String()
			default:
				value = v.Type().String() + " value"
		}
	}

	switch valuesMap := headerOrQueryParams.(type) {
		case url.Values:
			if collectionType == "csv" && valuesMap.Get(keyPrefix) != "" {
				valuesMap.Set(keyPrefix, valuesMap.Get(keyPrefix) + "," + value)
			} else {
				valuesMap.Add(keyPrefix, value)
			}
			break
		case map[string]string:
			valuesMap[keyPrefix] = value
			break
	}
}

// helper for converting interface{} parameters to json strings
func parameterToJson(obj interface{}) (string, error) {
	jsonBuf, err := json.Marshal(obj)
	if err != nil {
		return "", err
	}
	return string(jsonBuf), err
}

// callAPI do the request.
func (c *APIClient) callAPI(request *http.Request) (*http.Response, error) {
	if c.cfg.Debug {
		dump, err := httputil.DumpRequestOut(request, true)
		if err != nil {
			return nil, err
		}
		log.Printf("\n%s\n", string(dump))
	}

	resp, err := c.cfg.HTTPClient.Do(request)
	if err != nil {
		return resp, err
	}

	if c.cfg.Debug {
		dump, err := httputil.DumpResponse(resp, true)
		if err != nil {
			return resp, err
		}
		log.Printf("\n%s\n", string(dump))
	}
	return resp, err
}

// Allow modification of underlying config for alternate implementations and testing
// Caution: modifying the configuration while live can cause data races and potentially unwanted behavior
func (c *APIClient) GetConfig() *Configuration {
	return c.cfg
}

type formFile struct {
		fileBytes []byte
		fileName string
		formFileName string
}

// prepareRequest build the request
func (c *APIClient) prepareRequest(
	ctx context.Context,
	path string, method string,
	postBody interface{},
	headerParams map[string]string,
	queryParams url.Values,
	formParams url.Values,
	formFiles []formFile) (localVarRequest *http.Request, err error) {

	var body *bytes.Buffer

	// Detect postBody type and post.
	if postBody != nil {
		contentType := headerParams["Content-Type"]
		if contentType == "" {
			contentType = detectContentType(postBody)
			headerParams["Content-Type"] = contentType
		}

		body, err = setBody(postBody, contentType)
		if err != nil {
			return nil, err
		}
	}

	// add form parameters and file if available.
	if strings.HasPrefix(headerParams["Content-Type"], "multipart/form-data") && len(formParams) > 0 || (len(formFiles) > 0) {
		if body != nil {
			return nil, errors.New("Cannot specify postBody and multipart form at the same time.")
		}
		body = &bytes.Buffer{}
		w := multipart.NewWriter(body)

		for k, v := range formParams {
			for _, iv := range v {
				if strings.HasPrefix(k, "@") { // file
					err = addFile(w, k[1:], iv)
					if err != nil {
						return nil, err
					}
				} else { // form value
					w.WriteField(k, iv)
				}
			}
		}
		for _, formFile := range formFiles {
			if len(formFile.fileBytes) > 0 && formFile.fileName != "" {
				w.Boundary()
				part, err := w.CreateFormFile(formFile.formFileName, filepath.Base(formFile.fileName))
				if err != nil {
						return nil, err
				}
				_, err = part.Write(formFile.fileBytes)
				if err != nil {
						return nil, err
				}
			}
		}

		// Set the Boundary in the Content-Type
		headerParams["Content-Type"] = w.FormDataContentType()

		// Set Content-Length
		headerParams["Content-Length"] = fmt.Sprintf("%d", body.Len())
		w.Close()
	}

	if strings.HasPrefix(headerParams["Content-Type"], "application/x-www-form-urlencoded") && len(formParams) > 0 {
		if body != nil {
			return nil, errors.New("Cannot specify postBody and x-www-form-urlencoded form at the same time.")
		}
		body = &bytes.Buffer{}
		body.WriteString(formParams.Encode())
		// Set Content-Length
		headerParams["Content-Length"] = fmt.Sprintf("%d", body.Len())
	}

	// Setup path and query parameters
	url, err := url.Parse(path)
	if err != nil {
		return nil, err
	}

	// Override request host, if applicable
	if c.cfg.Host != "" {
		url.Host = c.cfg.Host
	}

	// Override request scheme, if applicable
	if c.cfg.Scheme != "" {
		url.Scheme = c.cfg.Scheme
	}

	// Adding Query Param
	query := url.Query()
	for k, v := range queryParams {
		for _, iv := range v {
			query.Add(k, iv)
		}
	}

	// Encode the parameters.
	url.RawQuery = queryParamSplit.ReplaceAllStringFunc(query.Encode(), func(s string) string {
		pieces := strings.Split(s, "=")
		pieces[0] = queryDescape.Replace(pieces[0])
		return strings.Join(pieces, "=")
	})

	// Generate a new request
	if body != nil {
		localVarRequest, err = http.NewRequest(method, url.String(), body)
	} else {
		localVarRequest, err = http.NewRequest(method, url.String(), nil)
	}
	if err != nil {
		return nil, err
	}

	// add header parameters, if any
	if len(headerParams) > 0 {
		headers := http.Header{}
		for h, v := range headerParams {
			headers[h] = []string{v}
		}
		localVarRequest.Header = headers
	}

	// Add the user agent to the request.
	localVarRequest.Header.Add("User-Agent", c.cfg.UserAgent)

	if ctx != nil {
		// add context to the request
		localVarRequest = localVarRequest.WithContext(ctx)

		// Walk through any authentication.

	}

	for header, value := range c.cfg.DefaultHeader {
		localVarRequest.Header.Add(header, value)
	}
	return localVarRequest, nil
}

func (c *APIClient) decode(v interface{}, b []byte, contentType string) (err error) {
	if len(b) == 0 {
		return nil
	}
	if s, ok := v.(*string); ok {
		*s = string(b)
		return nil
	}
	if f, ok := v.(*os.File); ok {
		f, err = os.CreateTemp("", "HttpClientFile")
		if err != nil {
			return
		}
		_, err = f.Write(b)
		if err != nil {
			return
		}
		_, err = f.Seek(0, io.SeekStart)
		return
	}
	if f, ok := v.(**os.File); ok {
		*f, err = os.CreateTemp("", "HttpClientFile")
		if err != nil {
			return
		}
		_, err = (*f).Write(b)
		if err != nil {
			return
		}
		_, err = (*f).Seek(0, io.SeekStart)
		return
	}
	if XmlCheck.MatchString(contentType) {
		if err = xml.Unmarshal(b, v); err != nil {
			return err
		}
		return nil
	}
	if JsonCheck.MatchString(contentType) {
		if actualObj, ok := v.(interface{ GetActualInstance() interface{} }); ok { // oneOf, anyOf schemas
			if unmarshalObj, ok := actualObj.(interface{ UnmarshalJSON([]byte) error }); ok { // make sure it has UnmarshalJSON defined
				if err = unmarshalObj.UnmarshalJSON(b); err != nil {
					return err
				}
			} else {
				return errors.New("Unknown type with GetActualInstance but no unmarshalObj.UnmarshalJSON defined")
			}
		} else if err = json.Unmarshal(b, v); err != nil { // simple model
			return err
		}
		return nil
	}
	return errors.New("undefined response type")
}

// Add a file to the multipart request
func addFile(w *multipart.Writer, fieldName, path string) error {
	file, err := os.Open(filepath.Clean(path))
	if err != nil {
		return err
	}
	err = file.Close()
	if err != nil {
		return err
	}

	part, err := w.CreateFormFile(fieldName, filepath.Base(path))
	if err != nil {
		return err
	}
	_, err = io.Copy(part, file)

	return err
}

// Set request body from an interface{}
func setBody(body interface{}, contentType string) (bodyBuf *bytes.Buffer, err error) {
	if bodyBuf == nil {
		bodyBuf = &bytes.Buffer{}
	}

	if reader, ok := body.(io.Reader); ok {
		_, err = bodyBuf.ReadFrom(reader)
	} else if fp, ok := body.(*os.File); ok {
		_, err = bodyBuf.ReadFrom(fp)
	} else if b, ok := body.([]byte); ok {
		_, err = bodyBuf.Write(b)
	} else if s, ok := body.(string); ok {
		_, err = bodyBuf.WriteString(s)
	} else if s, ok := body.(*string); ok {
		_, err = bodyBuf.WriteString(*s)
	} else if JsonCheck.MatchString(contentType) {
		err = json.NewEncoder(bodyBuf).Encode(body)
	} else if XmlCheck.MatchString(contentType) {
		var bs []byte
		bs, err = xml.Marshal(body)
		if err == nil {
			bodyBuf.Write(bs)
		}
	}

	if err != nil {
		return nil, err
	}

	if bodyBuf.Len() == 0 {
		err = fmt.Errorf("invalid body type %s\n", contentType)
		return nil, err
	}
	return bodyBuf, nil
}

// detectContentType method is used to figure out `Request.Body` content type for request header
func detectContentType(body interface{}) string {
	contentType := "text/plain; charset=utf-8"
	kind := reflect.TypeOf(body).Kind()

	switch kind {
	case reflect.Struct, reflect.Map, reflect.Ptr:
		contentType = "application/json; charset=utf-8"
	case reflect.String:
		contentType = "text/plain; charset=utf-8"
	default:
		if b, ok := body.([]byte); ok {
			contentType = http.DetectContentType(b)
		} else if kind == reflect.Slice {
			contentType = "application/json; charset=utf-8"
		}
	}

	return contentType
}

// Ripped from https://github.com/gregjones/httpcache/blob/master/httpcache.go
type cacheControl map[string]string

func parseCacheControl(headers http.Header) cacheControl {
	cc := cacheControl{}
	ccHeader := headers.Get("Cache-Control")
	for _, part := range strings.Split(ccHeader, ",") {
		part = strings.Trim(part, " ")
		if part == "" {
			continue
		}
		if strings.ContainsRune(part, '=') {
			keyval := strings.Split(part, "=")
			cc[strings.Trim(keyval[0], " ")] = strings.Trim(keyval[1], ",")
		} else {
			cc[part] = ""
		}
	}
	return cc
}

// CacheExpires helper function to determine remaining time before repeating a request.
func CacheExpires(r *http.Response) time.Time {
	// Figure out when the cache expires.
	var expires time.Time
	now, err := time.Parse(time.RFC1123, r.Header.Get("date"))
	if err != nil {
		return time.Now()
	}
	respCacheControl := parseCacheControl(r.Header)

	if maxAge, ok := respCacheControl["max-age"]; ok {
		lifetime, err := time.ParseDuration(maxAge + "s")
		if err != nil {
			expires = now
		} else {
			expires = now.Add(lifetime)
		}
	} else {
		expiresHeader := r.Header.Get("Expires")
		if expiresHeader != "" {
			expires, err = time.Parse(time.RFC1123, expiresHeader)
			if err != nil {
				expires = now
			}
		}
	}
	return expires
}

func strlen(s string) int {
	return utf8.RuneCountInString(s)
}

// GenericOpenAPIError Provides access to the body, error and model on returned errors.
type GenericOpenAPIError struct {
	body  []byte
	error string
	model interface{}
}

// Error returns non-empty string if there was an error.
func (e GenericOpenAPIError) Error() string {
	return e.error
}

// Body returns the raw bytes of the response
func (e GenericOpenAPIError) Body() []byte {
	return e.body
}

// Model returns the unpacked model of the error
func (e GenericOpenAPIError) Model() interface{} {
	return e.model
}

// format error message using title and detail when model implements rfc7807
func formatErrorMessage(status string, v interface{}) string {
	str := ""
	metaValue := reflect.ValueOf(v).Elem()

	if metaValue.Kind() == reflect.Struct {
		field := metaValue.FieldByName("Title")
		if field != (reflect.Value{}) {
			str = fmt.Sprintf("%s", field.Interface())
		}

		field = metaValue.FieldByName("Detail")
		if field != (reflect.Value{}) {
			str = fmt.Sprintf("%s (%s)", str, field.Interface())
		}
	}

	return strings.TrimSpace(fmt.Sprintf("%s %s", status, str))
}


================================================
FILE: openapi/configuration.go
================================================
/*
Cloudflare WARP API

No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)

API version: 536
*/

// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.

package openapi

import (
	"context"
	"fmt"
	"net/http"
	"strings"
)

// contextKeys are used to identify the type of value in the context.
// Since these are string, it is possible to get a short description of the
// context key for logging and debugging using key.String().

type contextKey string

func (c contextKey) String() string {
	return "auth " + string(c)
}

var (
	// ContextServerIndex uses a server configuration from the index.
	ContextServerIndex = contextKey("serverIndex")

	// ContextOperationServerIndices uses a server configuration from the index mapping.
	ContextOperationServerIndices = contextKey("serverOperationIndices")

	// ContextServerVariables overrides a server configuration variables.
	ContextServerVariables = contextKey("serverVariables")

	// ContextOperationServerVariables overrides a server configuration variables using operation specific values.
	ContextOperationServerVariables = contextKey("serverOperationVariables")
)

// BasicAuth provides basic http authentication to a request passed via context using ContextBasicAuth
type BasicAuth struct {
	UserName string `json:"userName,omitempty"`
	Password string `json:"password,omitempty"`
}

// APIKey provides API key based authentication to a request passed via context using ContextAPIKey
type APIKey struct {
	Key    string
	Prefix string
}

// ServerVariable stores the information about a server variable
type ServerVariable struct {
	Description  string
	DefaultValue string
	EnumValues   []string
}

// ServerConfiguration stores the information about a server
type ServerConfiguration struct {
	URL string
	Description string
	Variables map[string]ServerVariable
}

// ServerConfigurations stores multiple ServerConfiguration items
type ServerConfigurations []ServerConfiguration

// Configuration stores the configuration of the API client
type Configuration struct {
	Host             string            `json:"host,omitempty"`
	Scheme           string            `json:"scheme,omitempty"`
	DefaultHeader    map[string]string `json:"defaultHeader,omitempty"`
	UserAgent        string            `json:"userAgent,omitempty"`
	Debug            bool              `json:"debug,omitempty"`
	Servers          ServerConfigurations
	OperationServers map[string]ServerConfigurations
	HTTPClient       *http.Client
}

// NewConfiguration returns a new Configuration object
func NewConfiguration() *Configuration {
	cfg := &Configuration{
		DefaultHeader:    make(map[string]string),
		UserAgent:        "OpenAPI-Generator/1.0.0/go",
		Debug:            false,
		Servers:          ServerConfigurations{
			{
				URL: "",
				Description: "No description provided",
			},
		},
		OperationServers: map[string]ServerConfigurations{
		},
	}
	return cfg
}

// AddDefaultHeader adds a new HTTP header to the default header in the request
func (c *Configuration) AddDefaultHeader(key string, value string) {
	c.DefaultHeader[key] = value
}

// URL formats template on a index using given variables
func (sc ServerConfigurations) URL(index int, variables map[string]string) (string, error) {
	if index < 0 || len(sc) <= index {
		return "", fmt.Errorf("index %v out of range %v", index, len(sc)-1)
	}
	server := sc[index]
	url := server.URL

	// go through variables and replace placeholders
	for name, variable := range server.Variables {
		if value, ok := variables[name]; ok {
			found := bool(len(variable.EnumValues) == 0)
			for _, enumValue := range variable.EnumValues {
				if value == enumValue {
					found = true
				}
			}
			if !found {
				return "", fmt.Errorf("the variable %s in the server URL has invalid value %v. Must be %v", name, value, variable.EnumValues)
			}
			url = strings.Replace(url, "{"+name+"}", value, -1)
		} else {
			url = strings.Replace(url, "{"+name+"}", variable.DefaultValue, -1)
		}
	}
	return url, nil
}

// ServerURL returns URL based on server settings
func (c *Configuration) ServerURL(index int, variables map[string]string) (string, error) {
	return c.Servers.URL(index, variables)
}

func getServerIndex(ctx context.Context) (int, error) {
	si := ctx.Value(ContextServerIndex)
	if si != nil {
		if index, ok := si.(int); ok {
			return index, nil
		}
		return 0, reportError("Invalid type %T should be int", si)
	}
	return 0, nil
}

func getServerOperationIndex(ctx context.Context, endpoint string) (int, error) {
	osi := ctx.Value(ContextOperationServerIndices)
	if osi != nil {
		if operationIndices, ok := osi.(map[string]int); !ok {
			return 0, reportError("Invalid type %T should be map[string]int", osi)
		} else {
			index, ok := operationIndices[endpoint]
			if ok {
				return index, nil
			}
		}
	}
	return getServerIndex(ctx)
}

func getServerVariables(ctx context.Context) (map[string]string, error) {
	sv := ctx.Value(ContextServerVariables)
	if sv != nil {
		if variables, ok := sv.(map[string]string); ok {
			return variables, nil
		}
		return nil, reportError("ctx value of ContextServerVariables has invalid type %T should be map[string]string", sv)
	}
	return nil, nil
}

func getServerOperationVariables(ctx context.Context, endpoint string) (map[string]string, error) {
	osv := ctx.Value(ContextOperationServerVariables)
	if osv != nil {
		if operationVariables, ok := osv.(map[string]map[string]string); !ok {
			return nil, reportError("ctx value of ContextOperationServerVariables has invalid type %T should be map[string]map[string]string", osv)
		} else {
			variables, ok := operationVariables[endpoint]
			if ok {
				return variables, nil
			}
		}
	}
	return getServerVariables(ctx)
}

// ServerURLWithContext returns a new server URL given an endpoint
func (c *Configuration) ServerURLWithContext(ctx context.Context, endpoint string) (string, error) {
	sc, ok := c.OperationServers[endpoint]
	if !ok {
		sc = c.Servers
	}

	if ctx == nil {
		return sc.URL(0, nil)
	}

	index, err := getServerOperationIndex(ctx, endpoint)
	if err != nil {
		return "", err
	}

	variables, err := getServerOperationVariables(ctx, endpoint)
	if err != nil {
		return "", err
	}

	return sc.URL(index, variables)
}


================================================
FILE: openapi/docs/Account.md
================================================
# Account

## Properties

Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**AccountType** | **string** |  | 
**Created** | **string** |  | 
**Id** | **string** |  | 
**License** | **string** |  | 
**PremiumData** | **float32** |  | 
**Quota** | **float32** |  | 
**ReferralCount** | **float32** |  | 
**ReferralRenewalCountdown** | **float32** |  | 
**Role** | **string** |  | 
**Updated** | **string** |  | 
**WarpPlus** | **bool** |  | 
**Usage** | Pointer to **float32** |  | [optional] 

## Methods

### NewAccount

`func NewAccount(accountType string, created string, id string, license string, premiumData float32, quota float32, referralCount float32, referralRenewalCountdown float32, role string, updated string, warpPlus bool, ) *Account`

NewAccount instantiates a new Account object
This constructor will assign default values to properties that have it defined,
and makes sure properties required by API are set, but the set of arguments
will change when the set of required properties is changed

### NewAccountWithDefaults

`func NewAccountWithDefaults() *Account`

NewAccountWithDefaults instantiates a new Account object
This constructor will only assign default values to properties that have it defined,
but it doesn't guarantee that properties required by API are set

### GetAccountType

`func (o *Account) GetAccountType() string`

GetAccountType returns the AccountType field if non-nil, zero value otherwise.

### GetAccountTypeOk

`func (o *Account) GetAccountTypeOk() (*string, bool)`

GetAccountTypeOk returns a tuple with the AccountType field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetAccountType

`func (o *Account) SetAccountType(v string)`

SetAccountType sets AccountType field to given value.


### GetCreated

`func (o *Account) GetCreated() string`

GetCreated returns the Created field if non-nil, zero value otherwise.

### GetCreatedOk

`func (o *Account) GetCreatedOk() (*string, bool)`

GetCreatedOk returns a tuple with the Created field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetCreated

`func (o *Account) SetCreated(v string)`

SetCreated sets Created field to given value.


### GetId

`func (o *Account) GetId() string`

GetId returns the Id field if non-nil, zero value otherwise.

### GetIdOk

`func (o *Account) GetIdOk() (*string, bool)`

GetIdOk returns a tuple with the Id field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetId

`func (o *Account) SetId(v string)`

SetId sets Id field to given value.


### GetLicense

`func (o *Account) GetLicense() string`

GetLicense returns the License field if non-nil, zero value otherwise.

### GetLicenseOk

`func (o *Account) GetLicenseOk() (*string, bool)`

GetLicenseOk returns a tuple with the License field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetLicense

`func (o *Account) SetLicense(v string)`

SetLicense sets License field to given value.


### GetPremiumData

`func (o *Account) GetPremiumData() float32`

GetPremiumData returns the PremiumData field if non-nil, zero value otherwise.

### GetPremiumDataOk

`func (o *Account) GetPremiumDataOk() (*float32, bool)`

GetPremiumDataOk returns a tuple with the PremiumData field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetPremiumData

`func (o *Account) SetPremiumData(v float32)`

SetPremiumData sets PremiumData field to given value.


### GetQuota

`func (o *Account) GetQuota() float32`

GetQuota returns the Quota field if non-nil, zero value otherwise.

### GetQuotaOk

`func (o *Account) GetQuotaOk() (*float32, bool)`

GetQuotaOk returns a tuple with the Quota field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetQuota

`func (o *Account) SetQuota(v float32)`

SetQuota sets Quota field to given value.


### GetReferralCount

`func (o *Account) GetReferralCount() float32`

GetReferralCount returns the ReferralCount field if non-nil, zero value otherwise.

### GetReferralCountOk

`func (o *Account) GetReferralCountOk() (*float32, bool)`

GetReferralCountOk returns a tuple with the ReferralCount field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetReferralCount

`func (o *Account) SetReferralCount(v float32)`

SetReferralCount sets ReferralCount field to given value.


### GetReferralRenewalCountdown

`func (o *Account) GetReferralRenewalCountdown() float32`

GetReferralRenewalCountdown returns the ReferralRenewalCountdown field if non-nil, zero value otherwise.

### GetReferralRenewalCountdownOk

`func (o *Account) GetReferralRenewalCountdownOk() (*float32, bool)`

GetReferralRenewalCountdownOk returns a tuple with the ReferralRenewalCountdown field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetReferralRenewalCountdown

`func (o *Account) SetReferralRenewalCountdown(v float32)`

SetReferralRenewalCountdown sets ReferralRenewalCountdown field to given value.


### GetRole

`func (o *Account) GetRole() string`

GetRole returns the Role field if non-nil, zero value otherwise.

### GetRoleOk

`func (o *Account) GetRoleOk() (*string, bool)`

GetRoleOk returns a tuple with the Role field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetRole

`func (o *Account) SetRole(v string)`

SetRole sets Role field to given value.


### GetUpdated

`func (o *Account) GetUpdated() string`

GetUpdated returns the Updated field if non-nil, zero value otherwise.

### GetUpdatedOk

`func (o *Account) GetUpdatedOk() (*string, bool)`

GetUpdatedOk returns a tuple with the Updated field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetUpdated

`func (o *Account) SetUpdated(v string)`

SetUpdated sets Updated field to given value.


### GetWarpPlus

`func (o *Account) GetWarpPlus() bool`

GetWarpPlus returns the WarpPlus field if non-nil, zero value otherwise.

### GetWarpPlusOk

`func (o *Account) GetWarpPlusOk() (*bool, bool)`

GetWarpPlusOk returns a tuple with the WarpPlus field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetWarpPlus

`func (o *Account) SetWarpPlus(v bool)`

SetWarpPlus sets WarpPlus field to given value.


### GetUsage

`func (o *Account) GetUsage() float32`

GetUsage returns the Usage field if non-nil, zero value otherwise.

### GetUsageOk

`func (o *Account) GetUsageOk() (*float32, bool)`

GetUsageOk returns a tuple with the Usage field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetUsage

`func (o *Account) SetUsage(v float32)`

SetUsage sets Usage field to given value.

### HasUsage

`func (o *Account) HasUsage() bool`

HasUsage returns a boolean if a field has been set.


[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)




================================================
FILE: openapi/docs/BoundDevice.md
================================================
# BoundDevice

## Properties

Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**Activated** | **string** |  | 
**Active** | **bool** |  | 
**Created** | **string** |  | 
**Id** | **string** |  | 
**Model** | **string** |  | 
**Name** | Pointer to **string** |  | [optional] 
**Role** | **string** |  | 
**Type** | **string** |  | 

## Methods

### NewBoundDevice

`func NewBoundDevice(activated string, active bool, created string, id string, model string, role string, type_ string, ) *BoundDevice`

NewBoundDevice instantiates a new BoundDevice object
This constructor will assign default values to properties that have it defined,
and makes sure properties required by API are set, but the set of arguments
will change when the set of required properties is changed

### NewBoundDeviceWithDefaults

`func NewBoundDeviceWithDefaults() *BoundDevice`

NewBoundDeviceWithDefaults instantiates a new BoundDevice object
This constructor will only assign default values to properties that have it defined,
but it doesn't guarantee that properties required by API are set

### GetActivated

`func (o *BoundDevice) GetActivated() string`

GetActivated returns the Activated field if non-nil, zero value otherwise.

### GetActivatedOk

`func (o *BoundDevice) GetActivatedOk() (*string, bool)`

GetActivatedOk returns a tuple with the Activated field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetActivated

`func (o *BoundDevice) SetActivated(v string)`

SetActivated sets Activated field to given value.


### GetActive

`func (o *BoundDevice) GetActive() bool`

GetActive returns the Active field if non-nil, zero value otherwise.

### GetActiveOk

`func (o *BoundDevice) GetActiveOk() (*bool, bool)`

GetActiveOk returns a tuple with the Active field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetActive

`func (o *BoundDevice) SetActive(v bool)`

SetActive sets Active field to given value.


### GetCreated

`func (o *BoundDevice) GetCreated() string`

GetCreated returns the Created field if non-nil, zero value otherwise.

### GetCreatedOk

`func (o *BoundDevice) GetCreatedOk() (*string, bool)`

GetCreatedOk returns a tuple with the Created field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetCreated

`func (o *BoundDevice) SetCreated(v string)`

SetCreated sets Created field to given value.


### GetId

`func (o *BoundDevice) GetId() string`

GetId returns the Id field if non-nil, zero value otherwise.

### GetIdOk

`func (o *BoundDevice) GetIdOk() (*string, bool)`

GetIdOk returns a tuple with the Id field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetId

`func (o *BoundDevice) SetId(v string)`

SetId sets Id field to given value.


### GetModel

`func (o *BoundDevice) GetModel() string`

GetModel returns the Model field if non-nil, zero value otherwise.

### GetModelOk

`func (o *BoundDevice) GetModelOk() (*string, bool)`

GetModelOk returns a tuple with the Model field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetModel

`func (o *BoundDevice) SetModel(v string)`

SetModel sets Model field to given value.


### GetName

`func (o *BoundDevice) GetName() string`

GetName returns the Name field if non-nil, zero value otherwise.

### GetNameOk

`func (o *BoundDevice) GetNameOk() (*string, bool)`

GetNameOk returns a tuple with the Name field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetName

`func (o *BoundDevice) SetName(v string)`

SetName sets Name field to given value.

### HasName

`func (o *BoundDevice) HasName() bool`

HasName returns a boolean if a field has been set.

### GetRole

`func (o *BoundDevice) GetRole() string`

GetRole returns the Role field if non-nil, zero value otherwise.

### GetRoleOk

`func (o *BoundDevice) GetRoleOk() (*string, bool)`

GetRoleOk returns a tuple with the Role field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetRole

`func (o *BoundDevice) SetRole(v string)`

SetRole sets Role field to given value.


### GetType

`func (o *BoundDevice) GetType() string`

GetType returns the Type field if non-nil, zero value otherwise.

### GetTypeOk

`func (o *BoundDevice) GetTypeOk() (*string, bool)`

GetTypeOk returns a tuple with the Type field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetType

`func (o *BoundDevice) SetType(v string)`

SetType sets Type field to given value.



[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)




================================================
FILE: openapi/docs/Config.md
================================================
# Config

## Properties

Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**ClientId** | **string** |  | 
**Interface** | [**ConfigInterface**](ConfigInterface.md) |  | 
**Peers** | [**[]Peer**](Peer.md) |  | 
**Services** | [**ConfigServices**](ConfigServices.md) |  | 

## Methods

### NewConfig

`func NewConfig(clientId string, interface_ ConfigInterface, peers []Peer, services ConfigServices, ) *Config`

NewConfig instantiates a new Config object
This constructor will assign default values to properties that have it defined,
and makes sure properties required by API are set, but the set of arguments
will change when the set of required properties is changed

### NewConfigWithDefaults

`func NewConfigWithDefaults() *Config`

NewConfigWithDefaults instantiates a new Config object
This constructor will only assign default values to properties that have it defined,
but it doesn't guarantee that properties required by API are set

### GetClientId

`func (o *Config) GetClientId() string`

GetClientId returns the ClientId field if non-nil, zero value otherwise.

### GetClientIdOk

`func (o *Config) GetClientIdOk() (*string, bool)`

GetClientIdOk returns a tuple with the ClientId field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetClientId

`func (o *Config) SetClientId(v string)`

SetClientId sets ClientId field to given value.


### GetInterface

`func (o *Config) GetInterface() ConfigInterface`

GetInterface returns the Interface field if non-nil, zero value otherwise.

### GetInterfaceOk

`func (o *Config) GetInterfaceOk() (*ConfigInterface, bool)`

GetInterfaceOk returns a tuple with the Interface field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetInterface

`func (o *Config) SetInterface(v ConfigInterface)`

SetInterface sets Interface field to given value.


### GetPeers

`func (o *Config) GetPeers() []Peer`

GetPeers returns the Peers field if non-nil, zero value otherwise.

### GetPeersOk

`func (o *Config) GetPeersOk() (*[]Peer, bool)`

GetPeersOk returns a tuple with the Peers field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetPeers

`func (o *Config) SetPeers(v []Peer)`

SetPeers sets Peers field to given value.


### GetServices

`func (o *Config) GetServices() ConfigServices`

GetServices returns the Services field if non-nil, zero value otherwise.

### GetServicesOk

`func (o *Config) GetServicesOk() (*ConfigServices, bool)`

GetServicesOk returns a tuple with the Services field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetServices

`func (o *Config) SetServices(v ConfigServices)`

SetServices sets Services field to given value.



[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)




================================================
FILE: openapi/docs/ConfigInterface.md
================================================
# ConfigInterface

## Properties

Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**Addresses** | [**NetworkAddress**](NetworkAddress.md) |  | 

## Methods

### NewConfigInterface

`func NewConfigInterface(addresses NetworkAddress, ) *ConfigInterface`

NewConfigInterface instantiates a new ConfigInterface object
This constructor will assign default values to properties that have it defined,
and makes sure properties required by API are set, but the set of arguments
will change when the set of required properties is changed

### NewConfigInterfaceWithDefaults

`func NewConfigInterfaceWithDefaults() *ConfigInterface`

NewConfigInterfaceWithDefaults instantiates a new ConfigInterface object
This constructor will only assign default values to properties that have it defined,
but it doesn't guarantee that properties required by API are set

### GetAddresses

`func (o *ConfigInterface) GetAddresses() NetworkAddress`

GetAddresses returns the Addresses field if non-nil, zero value otherwise.

### GetAddressesOk

`func (o *ConfigInterface) GetAddressesOk() (*NetworkAddress, bool)`

GetAddressesOk returns a tuple with the Addresses field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetAddresses

`func (o *ConfigInterface) SetAddresses(v NetworkAddress)`

SetAddresses sets Addresses field to given value.



[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)




================================================
FILE: openapi/docs/ConfigServices.md
================================================
# ConfigServices

## Properties

Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**HttpProxy** | **string** |  | 

## Methods

### NewConfigServices

`func NewConfigServices(httpProxy string, ) *ConfigServices`

NewConfigServices instantiates a new ConfigServices object
This constructor will assign default values to properties that have it defined,
and makes sure properties required by API are set, but the set of arguments
will change when the set of required properties is changed

### NewConfigServicesWithDefaults

`func NewConfigServicesWithDefaults() *ConfigServices`

NewConfigServicesWithDefaults instantiates a new ConfigServices object
This constructor will only assign default values to properties that have it defined,
but it doesn't guarantee that properties required by API are set

### GetHttpProxy

`func (o *ConfigServices) GetHttpProxy() string`

GetHttpProxy returns the HttpProxy field if non-nil, zero value otherwise.

### GetHttpProxyOk

`func (o *ConfigServices) GetHttpProxyOk() (*string, bool)`

GetHttpProxyOk returns a tuple with the HttpProxy field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetHttpProxy

`func (o *ConfigServices) SetHttpProxy(v string)`

SetHttpProxy sets HttpProxy field to given value.



[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)




================================================
FILE: openapi/docs/DefaultApi.md
================================================
# \DefaultAPI

All URIs are relative to *http://localhost*

Method | HTTP request | Description
------------- | ------------- | -------------
[**DeleteBoundDevice**](DefaultAPI.md#DeleteBoundDevice) | **Delete** /{apiVersion}/reg/{sourceDeviceId}/account/reg/{boundDeviceId} | DeleteBoundDevice
[**GetAccount**](DefaultAPI.md#GetAccount) | **Get** /{apiVersion}/reg/{sourceDeviceId}/account | GetAccount
[**GetBoundDevices**](DefaultAPI.md#GetBoundDevices) | **Get** /{apiVersion}/reg/{sourceDeviceId}/account/devices | GetBoundDevices
[**GetClientConfig**](DefaultAPI.md#GetClientConfig) | **Get** /{apiVersion}/client_config | GetClientConfig
[**GetSourceDevice**](DefaultAPI.md#GetSourceDevice) | **Get** /{apiVersion}/reg/{sourceDeviceId} | GetSourceDevice
[**Register**](DefaultAPI.md#Register) | **Post** /{apiVersion}/reg | Register
[**ResetAccountLicense**](DefaultAPI.md#ResetAccountLicense) | **Post** /{apiVersion}/reg/{sourceDeviceId}/account/license | ResetAccountLicense
[**UpdateAccount**](DefaultAPI.md#UpdateAccount) | **Put** /{apiVersion}/reg/{sourceDeviceId}/account | UpdateAccount
[**UpdateBoundDevice**](DefaultAPI.md#UpdateBoundDevice) | **Patch** /{apiVersion}/reg/{sourceDeviceId}/account/reg/{boundDeviceId} | UpdateBoundDevice
[**UpdateSourceDevice**](DefaultAPI.md#UpdateSourceDevice) | **Patch** /{apiVersion}/reg/{sourceDeviceId} | UpdateSourceDevice



## DeleteBoundDevice

> DeleteBoundDevice(ctx, sourceDeviceId, apiVersion, boundDeviceId).Execute()

DeleteBoundDevice

### Example

```go
package main

import (
	"context"
	"fmt"
	"os"
	openapiclient "github.com/GIT_USER_ID/GIT_REPO_ID"
)

func main() {
	sourceDeviceId := "sourceDeviceId_example" // string | 
	apiVersion := "apiVersion_example" // string | 
	boundDeviceId := "boundDeviceId_example" // string | 

	configuration := openapiclient.NewConfiguration()
	apiClient := openapiclient.NewAPIClient(configuration)
	r, err := apiClient.DefaultAPI.DeleteBoundDevice(context.Background(), sourceDeviceId, apiVersion, boundDeviceId).Execute()
	if err != nil {
		fmt.Fprintf(os.Stderr, "Error when calling `DefaultAPI.DeleteBoundDevice``: %v\n", err)
		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
	}
}
```

### Path Parameters


Name | Type | Description  | Notes
------------- | ------------- | ------------- | -------------
**ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc.
**sourceDeviceId** | **string** |  | 
**apiVersion** | **string** |  | 
**boundDeviceId** | **string** |  | 

### Other Parameters

Other parameters are passed through a pointer to a apiDeleteBoundDeviceRequest struct via the builder pattern


Name | Type | Description  | Notes
------------- | ------------- | ------------- | -------------




### Return type

 (empty response body)

### Authorization

No authorization required

### HTTP request headers

- **Content-Type**: Not defined
- **Accept**: Not defined

[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints)
[[Back to Model list]](../README.md#documentation-for-models)
[[Back to README]](../README.md)


## GetAccount

> Account GetAccount(ctx, sourceDeviceId, apiVersion).Execute()

GetAccount

### Example

```go
package main

import (
	"context"
	"fmt"
	"os"
	openapiclient "github.com/GIT_USER_ID/GIT_REPO_ID"
)

func main() {
	sourceDeviceId := "sourceDeviceId_example" // string | 
	apiVersion := "apiVersion_example" // string | 

	configuration := openapiclient.NewConfiguration()
	apiClient := openapiclient.NewAPIClient(configuration)
	resp, r, err := apiClient.DefaultAPI.GetAccount(context.Background(), sourceDeviceId, apiVersion).Execute()
	if err != nil {
		fmt.Fprintf(os.Stderr, "Error when calling `DefaultAPI.GetAccount``: %v\n", err)
		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
	}
	// response from `GetAccount`: Account
	fmt.Fprintf(os.Stdout, "Response from `DefaultAPI.GetAccount`: %v\n", resp)
}
```

### Path Parameters


Name | Type | Description  | Notes
------------- | ------------- | ------------- | -------------
**ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc.
**sourceDeviceId** | **string** |  | 
**apiVersion** | **string** |  | 

### Other Parameters

Other parameters are passed through a pointer to a apiGetAccountRequest struct via the builder pattern


Name | Type | Description  | Notes
------------- | ------------- | ------------- | -------------



### Return type

[**Account**](Account.md)

### Authorization

No authorization required

### HTTP request headers

- **Content-Type**: Not defined
- **Accept**: application/json

[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints)
[[Back to Model list]](../README.md#documentation-for-models)
[[Back to README]](../README.md)


## GetBoundDevices

> []BoundDevice GetBoundDevices(ctx, sourceDeviceId, apiVersion).Execute()

GetBoundDevices

### Example

```go
package main

import (
	"context"
	"fmt"
	"os"
	openapiclient "github.com/GIT_USER_ID/GIT_REPO_ID"
)

func main() {
	sourceDeviceId := "sourceDeviceId_example" // string | 
	apiVersion := "apiVersion_example" // string | 

	configuration := openapiclient.NewConfiguration()
	apiClient := openapiclient.NewAPIClient(configuration)
	resp, r, err := apiClient.DefaultAPI.GetBoundDevices(context.Background(), sourceDeviceId, apiVersion).Execute()
	if err != nil {
		fmt.Fprintf(os.Stderr, "Error when calling `DefaultAPI.GetBoundDevices``: %v\n", err)
		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
	}
	// response from `GetBoundDevices`: []BoundDevice
	fmt.Fprintf(os.Stdout, "Response from `DefaultAPI.GetBoundDevices`: %v\n", resp)
}
```

### Path Parameters


Name | Type | Description  | Notes
------------- | ------------- | ------------- | -------------
**ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc.
**sourceDeviceId** | **string** |  | 
**apiVersion** | **string** |  | 

### Other Parameters

Other parameters are passed through a pointer to a apiGetBoundDevicesRequest struct via the builder pattern


Name | Type | Description  | Notes
------------- | ------------- | ------------- | -------------



### Return type

[**[]BoundDevice**](BoundDevice.md)

### Authorization

No authorization required

### HTTP request headers

- **Content-Type**: Not defined
- **Accept**: application/json

[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints)
[[Back to Model list]](../README.md#documentation-for-models)
[[Back to README]](../README.md)


## GetClientConfig

> GetClientConfig200Response GetClientConfig(ctx, apiVersion).Execute()

GetClientConfig

### Example

```go
package main

import (
	"context"
	"fmt"
	"os"
	openapiclient "github.com/GIT_USER_ID/GIT_REPO_ID"
)

func main() {
	apiVersion := "apiVersion_example" // string | 

	configuration := openapiclient.NewConfiguration()
	apiClient := openapiclient.NewAPIClient(configuration)
	resp, r, err := apiClient.DefaultAPI.GetClientConfig(context.Background(), apiVersion).Execute()
	if err != nil {
		fmt.Fprintf(os.Stderr, "Error when calling `DefaultAPI.GetClientConfig``: %v\n", err)
		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
	}
	// response from `GetClientConfig`: GetClientConfig200Response
	fmt.Fprintf(os.Stdout, "Response from `DefaultAPI.GetClientConfig`: %v\n", resp)
}
```

### Path Parameters


Name | Type | Description  | Notes
------------- | ------------- | ------------- | -------------
**ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc.
**apiVersion** | **string** |  | 

### Other Parameters

Other parameters are passed through a pointer to a apiGetClientConfigRequest struct via the builder pattern


Name | Type | Description  | Notes
------------- | ------------- | ------------- | -------------


### Return type

[**GetClientConfig200Response**](GetClientConfig200Response.md)

### Authorization

No authorization required

### HTTP request headers

- **Content-Type**: Not defined
- **Accept**: application/json

[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints)
[[Back to Model list]](../README.md#documentation-for-models)
[[Back to README]](../README.md)


## GetSourceDevice

> GetSourceDevice200Response GetSourceDevice(ctx, apiVersion, sourceDeviceId).Execute()

GetSourceDevice

### Example

```go
package main

import (
	"context"
	"fmt"
	"os"
	openapiclient "github.com/GIT_USER_ID/GIT_REPO_ID"
)

func main() {
	apiVersion := "apiVersion_example" // string | 
	sourceDeviceId := "sourceDeviceId_example" // string | 

	configuration := openapiclient.NewConfiguration()
	apiClient := openapiclient.NewAPIClient(configuration)
	resp, r, err := apiClient.DefaultAPI.GetSourceDevice(context.Background(), apiVersion, sourceDeviceId).Execute()
	if err != nil {
		fmt.Fprintf(os.Stderr, "Error when calling `DefaultAPI.GetSourceDevice``: %v\n", err)
		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
	}
	// response from `GetSourceDevice`: GetSourceDevice200Response
	fmt.Fprintf(os.Stdout, "Response from `DefaultAPI.GetSourceDevice`: %v\n", resp)
}
```

### Path Parameters


Name | Type | Description  | Notes
------------- | ------------- | ------------- | -------------
**ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc.
**apiVersion** | **string** |  | 
**sourceDeviceId** | **string** |  | 

### Other Parameters

Other parameters are passed through a pointer to a apiGetSourceDeviceRequest struct via the builder pattern


Name | Type | Description  | Notes
------------- | ------------- | ------------- | -------------



### Return type

[**GetSourceDevice200Response**](GetSourceDevice200Response.md)

### Authorization

No authorization required

### HTTP request headers

- **Content-Type**: Not defined
- **Accept**: application/json

[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints)
[[Back to Model list]](../README.md#documentation-for-models)
[[Back to README]](../README.md)


## Register

> Register200Response Register(ctx, apiVersion).RegisterRequest(registerRequest).Execute()

Register

### Example

```go
package main

import (
	"context"
	"fmt"
	"os"
	openapiclient "github.com/GIT_USER_ID/GIT_REPO_ID"
)

func main() {
	apiVersion := "apiVersion_example" // string | 
	registerRequest := *openapiclient.NewRegisterRequest("FcmToken_example", "InstallId_example", "Key_example", "Locale_example", "Model_example", "Tos_example", "Type_example") // RegisterRequest |  (optional)

	configuration := openapiclient.NewConfiguration()
	apiClient := openapiclient.NewAPIClient(configuration)
	resp, r, err := apiClient.DefaultAPI.Register(context.Background(), apiVersion).RegisterRequest(registerRequest).Execute()
	if err != nil {
		fmt.Fprintf(os.Stderr, "Error when calling `DefaultAPI.Register``: %v\n", err)
		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
	}
	// response from `Register`: Register200Response
	fmt.Fprintf(os.Stdout, "Response from `DefaultAPI.Register`: %v\n", resp)
}
```

### Path Parameters


Name | Type | Description  | Notes
------------- | ------------- | ------------- | -------------
**ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc.
**apiVersion** | **string** |  | 

### Other Parameters

Other parameters are passed through a pointer to a apiRegisterRequest struct via the builder pattern


Name | Type | Description  | Notes
------------- | ------------- | ------------- | -------------

 **registerRequest** | [**RegisterRequest**](RegisterRequest.md) |  | 

### Return type

[**Register200Response**](Register200Response.md)

### Authorization

No authorization required

### HTTP request headers

- **Content-Type**: application/json
- **Accept**: application/json

[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints)
[[Back to Model list]](../README.md#documentation-for-models)
[[Back to README]](../README.md)


## ResetAccountLicense

> ResetAccountLicense200Response ResetAccountLicense(ctx, sourceDeviceId, apiVersion).Execute()

ResetAccountLicense

### Example

```go
package main

import (
	"context"
	"fmt"
	"os"
	openapiclient "github.com/GIT_USER_ID/GIT_REPO_ID"
)

func main() {
	sourceDeviceId := "sourceDeviceId_example" // string | 
	apiVersion := "apiVersion_example" // string | 

	configuration := openapiclient.NewConfiguration()
	apiClient := openapiclient.NewAPIClient(configuration)
	resp, r, err := apiClient.DefaultAPI.ResetAccountLicense(context.Background(), sourceDeviceId, apiVersion).Execute()
	if err != nil {
		fmt.Fprintf(os.Stderr, "Error when calling `DefaultAPI.ResetAccountLicense``: %v\n", err)
		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
	}
	// response from `ResetAccountLicense`: ResetAccountLicense200Response
	fmt.Fprintf(os.Stdout, "Response from `DefaultAPI.ResetAccountLicense`: %v\n", resp)
}
```

### Path Parameters


Name | Type | Description  | Notes
------------- | ------------- | ------------- | -------------
**ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc.
**sourceDeviceId** | **string** |  | 
**apiVersion** | **string** |  | 

### Other Parameters

Other parameters are passed through a pointer to a apiResetAccountLicenseRequest struct via the builder pattern


Name | Type | Description  | Notes
------------- | ------------- | ------------- | -------------



### Return type

[**ResetAccountLicense200Response**](ResetAccountLicense200Response.md)

### Authorization

No authorization required

### HTTP request headers

- **Content-Type**: Not defined
- **Accept**: application/json

[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints)
[[Back to Model list]](../README.md#documentation-for-models)
[[Back to README]](../README.md)


## UpdateAccount

> UpdateAccount200Response UpdateAccount(ctx, sourceDeviceId, apiVersion).UpdateAccountRequest(updateAccountRequest).Execute()

UpdateAccount

### Example

```go
package main

import (
	"context"
	"fmt"
	"os"
	openapiclient "github.com/GIT_USER_ID/GIT_REPO_ID"
)

func main() {
	sourceDeviceId := "sourceDeviceId_example" // string | 
	apiVersion := "apiVersion_example" // string | 
	updateAccountRequest := *openapiclient.NewUpdateAccountRequest("License_example") // UpdateAccountRequest |  (optional)

	configuration := openapiclient.NewConfiguration()
	apiClient := openapiclient.NewAPIClient(configuration)
	resp, r, err := apiClient.DefaultAPI.UpdateAccount(context.Background(), sourceDeviceId, apiVersion).UpdateAccountRequest(updateAccountRequest).Execute()
	if err != nil {
		fmt.Fprintf(os.Stderr, "Error when calling `DefaultAPI.UpdateAccount``: %v\n", err)
		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
	}
	// response from `UpdateAccount`: UpdateAccount200Response
	fmt.Fprintf(os.Stdout, "Response from `DefaultAPI.UpdateAccount`: %v\n", resp)
}
```

### Path Parameters


Name | Type | Description  | Notes
------------- | ------------- | ------------- | -------------
**ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc.
**sourceDeviceId** | **string** |  | 
**apiVersion** | **string** |  | 

### Other Parameters

Other parameters are passed through a pointer to a apiUpdateAccountRequest struct via the builder pattern


Name | Type | Description  | Notes
------------- | ------------- | ------------- | -------------


 **updateAccountRequest** | [**UpdateAccountRequest**](UpdateAccountRequest.md) |  | 

### Return type

[**UpdateAccount200Response**](UpdateAccount200Response.md)

### Authorization

No authorization required

### HTTP request headers

- **Content-Type**: application/json
- **Accept**: application/json

[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints)
[[Back to Model list]](../README.md#documentation-for-models)
[[Back to README]](../README.md)


## UpdateBoundDevice

> []BoundDevice UpdateBoundDevice(ctx, sourceDeviceId, apiVersion, boundDeviceId).UpdateBoundDeviceRequest(updateBoundDeviceRequest).Execute()

UpdateBoundDevice

### Example

```go
package main

import (
	"context"
	"fmt"
	"os"
	openapiclient "github.com/GIT_USER_ID/GIT_REPO_ID"
)

func main() {
	sourceDeviceId := "sourceDeviceId_example" // string | 
	apiVersion := "apiVersion_example" // string | 
	boundDeviceId := "boundDeviceId_example" // string | 
	updateBoundDeviceRequest := *openapiclient.NewUpdateBoundDeviceRequest() // UpdateBoundDeviceRequest |  (optional)

	configuration := openapiclient.NewConfiguration()
	apiClient := openapiclient.NewAPIClient(configuration)
	resp, r, err := apiClient.DefaultAPI.UpdateBoundDevice(context.Background(), sourceDeviceId, apiVersion, boundDeviceId).UpdateBoundDeviceRequest(updateBoundDeviceRequest).Execute()
	if err != nil {
		fmt.Fprintf(os.Stderr, "Error when calling `DefaultAPI.UpdateBoundDevice``: %v\n", err)
		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
	}
	// response from `UpdateBoundDevice`: []BoundDevice
	fmt.Fprintf(os.Stdout, "Response from `DefaultAPI.UpdateBoundDevice`: %v\n", resp)
}
```

### Path Parameters


Name | Type | Description  | Notes
------------- | ------------- | ------------- | -------------
**ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc.
**sourceDeviceId** | **string** |  | 
**apiVersion** | **string** |  | 
**boundDeviceId** | **string** |  | 

### Other Parameters

Other parameters are passed through a pointer to a apiUpdateBoundDeviceRequest struct via the builder pattern


Name | Type | Description  | Notes
------------- | ------------- | ------------- | -------------



 **updateBoundDeviceRequest** | [**UpdateBoundDeviceRequest**](UpdateBoundDeviceRequest.md) |  | 

### Return type

[**[]BoundDevice**](BoundDevice.md)

### Authorization

No authorization required

### HTTP request headers

- **Content-Type**: application/json
- **Accept**: application/json

[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints)
[[Back to Model list]](../README.md#documentation-for-models)
[[Back to README]](../README.md)


## UpdateSourceDevice

> UpdateSourceDevice200Response UpdateSourceDevice(ctx, apiVersion, sourceDeviceId).UpdateSourceDeviceRequest(updateSourceDeviceRequest).Execute()

UpdateSourceDevice

### Example

```go
package main

import (
	"context"
	"fmt"
	"os"
	openapiclient "github.com/GIT_USER_ID/GIT_REPO_ID"
)

func main() {
	apiVersion := "apiVersion_example" // string | 
	sourceDeviceId := "sourceDeviceId_example" // string | 
	updateSourceDeviceRequest := *openapiclient.NewUpdateSourceDeviceRequest("Key_example") // UpdateSourceDeviceRequest |  (optional)

	configuration := openapiclient.NewConfiguration()
	apiClient := openapiclient.NewAPIClient(configuration)
	resp, r, err := apiClient.DefaultAPI.UpdateSourceDevice(context.Background(), apiVersion, sourceDeviceId).UpdateSourceDeviceRequest(updateSourceDeviceRequest).Execute()
	if err != nil {
		fmt.Fprintf(os.Stderr, "Error when calling `DefaultAPI.UpdateSourceDevice``: %v\n", err)
		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
	}
	// response from `UpdateSourceDevice`: UpdateSourceDevice200Response
	fmt.Fprintf(os.Stdout, "Response from `DefaultAPI.UpdateSourceDevice`: %v\n", resp)
}
```

### Path Parameters


Name | Type | Description  | Notes
------------- | ------------- | ------------- | -------------
**ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc.
**apiVersion** | **string** |  | 
**sourceDeviceId** | **string** |  | 

### Other Parameters

Other parameters are passed through a pointer to a apiUpdateSourceDeviceRequest struct via the builder pattern


Name | Type | Description  | Notes
------------- | ------------- | ------------- | -------------


 **updateSourceDeviceRequest** | [**UpdateSourceDeviceRequest**](UpdateSourceDeviceRequest.md) |  | 

### Return type

[**UpdateSourceDevice200Response**](UpdateSourceDevice200Response.md)

### Authorization

No authorization required

### HTTP request headers

- **Content-Type**: application/json
- **Accept**: application/json

[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints)
[[Back to Model list]](../README.md#documentation-for-models)
[[Back to README]](../README.md)



================================================
FILE: openapi/docs/Endpoint.md
================================================
# Endpoint

## Properties

Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**Host** | **string** |  | 
**V4** | **string** |  | 
**V6** | **string** |  | 

## Methods

### NewEndpoint

`func NewEndpoint(host string, v4 string, v6 string, ) *Endpoint`

NewEndpoint instantiates a new Endpoint object
This constructor will assign default values to properties that have it defined,
and makes sure properties required by API are set, but the set of arguments
will change when the set of required properties is changed

### NewEndpointWithDefaults

`func NewEndpointWithDefaults() *Endpoint`

NewEndpointWithDefaults instantiates a new Endpoint object
This constructor will only assign default values to properties that have it defined,
but it doesn't guarantee that properties required by API are set

### GetHost

`func (o *Endpoint) GetHost() string`

GetHost returns the Host field if non-nil, zero value otherwise.

### GetHostOk

`func (o *Endpoint) GetHostOk() (*string, bool)`

GetHostOk returns a tuple with the Host field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetHost

`func (o *Endpoint) SetHost(v string)`

SetHost sets Host field to given value.


### GetV4

`func (o *Endpoint) GetV4() string`

GetV4 returns the V4 field if non-nil, zero value otherwise.

### GetV4Ok

`func (o *Endpoint) GetV4Ok() (*string, bool)`

GetV4Ok returns a tuple with the V4 field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetV4

`func (o *Endpoint) SetV4(v string)`

SetV4 sets V4 field to given value.


### GetV6

`func (o *Endpoint) GetV6() string`

GetV6 returns the V6 field if non-nil, zero value otherwise.

### GetV6Ok

`func (o *Endpoint) GetV6Ok() (*string, bool)`

GetV6Ok returns a tuple with the V6 field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetV6

`func (o *Endpoint) SetV6(v string)`

SetV6 sets V6 field to given value.



[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)




================================================
FILE: openapi/docs/GetClientConfig200Response.md
================================================
# GetClientConfig200Response

## Properties

Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**CaptivePortal** | [**[]GetClientConfig200ResponseCaptivePortalInner**](GetClientConfig200ResponseCaptivePortalInner.md) |  | 
**Denylist** | [**[]GetClientConfig200ResponseDenylistInner**](GetClientConfig200ResponseDenylistInner.md) |  | 
**PremiumDataBytes** | **float32** |  | 
**ReferralRewardBytes** | **float32** |  | 

## Methods

### NewGetClientConfig200Response

`func NewGetClientConfig200Response(captivePortal []GetClientConfig200ResponseCaptivePortalInner, denylist []GetClientConfig200ResponseDenylistInner, premiumDataBytes float32, referralRewardBytes float32, ) *GetClientConfig200Response`

NewGetClientConfig200Response instantiates a new GetClientConfig200Response object
This constructor will assign default values to properties that have it defined,
and makes sure properties required by API are set, but the set of arguments
will change when the set of required properties is changed

### NewGetClientConfig200ResponseWithDefaults

`func NewGetClientConfig200ResponseWithDefaults() *GetClientConfig200Response`

NewGetClientConfig200ResponseWithDefaults instantiates a new GetClientConfig200Response object
This constructor will only assign default values to properties that have it defined,
but it doesn't guarantee that properties required by API are set

### GetCaptivePortal

`func (o *GetClientConfig200Response) GetCaptivePortal() []GetClientConfig200ResponseCaptivePortalInner`

GetCaptivePortal returns the CaptivePortal field if non-nil, zero value otherwise.

### GetCaptivePortalOk

`func (o *GetClientConfig200Response) GetCaptivePortalOk() (*[]GetClientConfig200ResponseCaptivePortalInner, bool)`

GetCaptivePortalOk returns a tuple with the CaptivePortal field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetCaptivePortal

`func (o *GetClientConfig200Response) SetCaptivePortal(v []GetClientConfig200ResponseCaptivePortalInner)`

SetCaptivePortal sets CaptivePortal field to given value.


### GetDenylist

`func (o *GetClientConfig200Response) GetDenylist() []GetClientConfig200ResponseDenylistInner`

GetDenylist returns the Denylist field if non-nil, zero value otherwise.

### GetDenylistOk

`func (o *GetClientConfig200Response) GetDenylistOk() (*[]GetClientConfig200ResponseDenylistInner, bool)`

GetDenylistOk returns a tuple with the Denylist field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetDenylist

`func (o *GetClientConfig200Response) SetDenylist(v []GetClientConfig200ResponseDenylistInner)`

SetDenylist sets Denylist field to given value.


### GetPremiumDataBytes

`func (o *GetClientConfig200Response) GetPremiumDataBytes() float32`

GetPremiumDataBytes returns the PremiumDataBytes field if non-nil, zero value otherwise.

### GetPremiumDataBytesOk

`func (o *GetClientConfig200Response) GetPremiumDataBytesOk() (*float32, bool)`

GetPremiumDataBytesOk returns a tuple with the PremiumDataBytes field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetPremiumDataBytes

`func (o *GetClientConfig200Response) SetPremiumDataBytes(v float32)`

SetPremiumDataBytes sets PremiumDataBytes field to given value.


### GetReferralRewardBytes

`func (o *GetClientConfig200Response) GetReferralRewardBytes() float32`

GetReferralRewardBytes returns the ReferralRewardBytes field if non-nil, zero value otherwise.

### GetReferralRewardBytesOk

`func (o *GetClientConfig200Response) GetReferralRewardBytesOk() (*float32, bool)`

GetReferralRewardBytesOk returns a tuple with the ReferralRewardBytes field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetReferralRewardBytes

`func (o *GetClientConfig200Response) SetReferralRewardBytes(v float32)`

SetReferralRewardBytes sets ReferralRewardBytes field to given value.



[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)




================================================
FILE: openapi/docs/GetClientConfig200ResponseCaptivePortalInner.md
================================================
# GetClientConfig200ResponseCaptivePortalInner

## Properties

Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**Name** | **string** |  | 
**Networks** | [**[]GetClientConfig200ResponseCaptivePortalInnerNetworksInner**](GetClientConfig200ResponseCaptivePortalInnerNetworksInner.md) |  | 

## Methods

### NewGetClientConfig200ResponseCaptivePortalInner

`func NewGetClientConfig200ResponseCaptivePortalInner(name string, networks []GetClientConfig200ResponseCaptivePortalInnerNetworksInner, ) *GetClientConfig200ResponseCaptivePortalInner`

NewGetClientConfig200ResponseCaptivePortalInner instantiates a new GetClientConfig200ResponseCaptivePortalInner object
This constructor will assign default values to properties that have it defined,
and makes sure properties required by API are set, but the set of arguments
will change when the set of required properties is changed

### NewGetClientConfig200ResponseCaptivePortalInnerWithDefaults

`func NewGetClientConfig200ResponseCaptivePortalInnerWithDefaults() *GetClientConfig200ResponseCaptivePortalInner`

NewGetClientConfig200ResponseCaptivePortalInnerWithDefaults instantiates a new GetClientConfig200ResponseCaptivePortalInner object
This constructor will only assign default values to properties that have it defined,
but it doesn't guarantee that properties required by API are set

### GetName

`func (o *GetClientConfig200ResponseCaptivePortalInner) GetName() string`

GetName returns the Name field if non-nil, zero value otherwise.

### GetNameOk

`func (o *GetClientConfig200ResponseCaptivePortalInner) GetNameOk() (*string, bool)`

GetNameOk returns a tuple with the Name field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetName

`func (o *GetClientConfig200ResponseCaptivePortalInner) SetName(v string)`

SetName sets Name field to given value.


### GetNetworks

`func (o *GetClientConfig200ResponseCaptivePortalInner) GetNetworks() []GetClientConfig200ResponseCaptivePortalInnerNetworksInner`

GetNetworks returns the Networks field if non-nil, zero value otherwise.

### GetNetworksOk

`func (o *GetClientConfig200ResponseCaptivePortalInner) GetNetworksOk() (*[]GetClientConfig200ResponseCaptivePortalInnerNetworksInner, bool)`

GetNetworksOk returns a tuple with the Networks field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetNetworks

`func (o *GetClientConfig200ResponseCaptivePortalInner) SetNetworks(v []GetClientConfig200ResponseCaptivePortalInnerNetworksInner)`

SetNetworks sets Networks field to given value.



[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)




================================================
FILE: openapi/docs/GetClientConfig200ResponseCaptivePortalInnerNetworksInner.md
================================================
# GetClientConfig200ResponseCaptivePortalInnerNetworksInner

## Properties

Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**Address** | **string** |  | 

## Methods

### NewGetClientConfig200ResponseCaptivePortalInnerNetworksInner

`func NewGetClientConfig200ResponseCaptivePortalInnerNetworksInner(address string, ) *GetClientConfig200ResponseCaptivePortalInnerNetworksInner`

NewGetClientConfig200ResponseCaptivePortalInnerNetworksInner instantiates a new GetClientConfig200ResponseCaptivePortalInnerNetworksInner object
This constructor will assign default values to properties that have it defined,
and makes sure properties required by API are set, but the set of arguments
will change when the set of required properties is changed

### NewGetClientConfig200ResponseCaptivePortalInnerNetworksInnerWithDefaults

`func NewGetClientConfig200ResponseCaptivePortalInnerNetworksInnerWithDefaults() *GetClientConfig200ResponseCaptivePortalInnerNetworksInner`

NewGetClientConfig200ResponseCaptivePortalInnerNetworksInnerWithDefaults instantiates a new GetClientConfig200ResponseCaptivePortalInnerNetworksInner object
This constructor will only assign default values to properties that have it defined,
but it doesn't guarantee that properties required by API are set

### GetAddress

`func (o *GetClientConfig200ResponseCaptivePortalInnerNetworksInner) GetAddress() string`

GetAddress returns the Address field if non-nil, zero value otherwise.

### GetAddressOk

`func (o *GetClientConfig200ResponseCaptivePortalInnerNetworksInner) GetAddressOk() (*string, bool)`

GetAddressOk returns a tuple with the Address field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetAddress

`func (o *GetClientConfig200ResponseCaptivePortalInnerNetworksInner) SetAddress(v string)`

SetAddress sets Address field to given value.



[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)




================================================
FILE: openapi/docs/GetClientConfig200ResponseDenylistInner.md
================================================
# GetClientConfig200ResponseDenylistInner

## Properties

Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**AndroidPackages** | Pointer to **[]string** |  | [optional] 
**Name** | **string** |  | 
**Networks** | Pointer to [**GetClientConfig200ResponseDenylistInnerNetworks**](GetClientConfig200ResponseDenylistInnerNetworks.md) |  | [optional] 
**Visible** | **bool** |  | 

## Methods

### NewGetClientConfig200ResponseDenylistInner

`func NewGetClientConfig200ResponseDenylistInner(name string, visible bool, ) *GetClientConfig200ResponseDenylistInner`

NewGetClientConfig200ResponseDenylistInner instantiates a new GetClientConfig200ResponseDenylistInner object
This constructor will assign default values to properties that have it defined,
and makes sure properties required by API are set, but the set of arguments
will change when the set of required properties is changed

### NewGetClientConfig200ResponseDenylistInnerWithDefaults

`func NewGetClientConfig200ResponseDenylistInnerWithDefaults() *GetClientConfig200ResponseDenylistInner`

NewGetClientConfig200ResponseDenylistInnerWithDefaults instantiates a new GetClientConfig200ResponseDenylistInner object
This constructor will only assign default values to properties that have it defined,
but it doesn't guarantee that properties required by API are set

### GetAndroidPackages

`func (o *GetClientConfig200ResponseDenylistInner) GetAndroidPackages() []string`

GetAndroidPackages returns the AndroidPackages field if non-nil, zero value otherwise.

### GetAndroidPackagesOk

`func (o *GetClientConfig200ResponseDenylistInner) GetAndroidPackagesOk() (*[]string, bool)`

GetAndroidPackagesOk returns a tuple with the AndroidPackages field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetAndroidPackages

`func (o *GetClientConfig200ResponseDenylistInner) SetAndroidPackages(v []string)`

SetAndroidPackages sets AndroidPackages field to given value.

### HasAndroidPackages

`func (o *GetClientConfig200ResponseDenylistInner) HasAndroidPackages() bool`

HasAndroidPackages returns a boolean if a field has been set.

### GetName

`func (o *GetClientConfig200ResponseDenylistInner) GetName() string`

GetName returns the Name field if non-nil, zero value otherwise.

### GetNameOk

`func (o *GetClientConfig200ResponseDenylistInner) GetNameOk() (*string, bool)`

GetNameOk returns a tuple with the Name field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetName

`func (o *GetClientConfig200ResponseDenylistInner) SetName(v string)`

SetName sets Name field to given value.


### GetNetworks

`func (o *GetClientConfig200ResponseDenylistInner) GetNetworks() GetClientConfig200ResponseDenylistInnerNetworks`

GetNetworks returns the Networks field if non-nil, zero value otherwise.

### GetNetworksOk

`func (o *GetClientConfig200ResponseDenylistInner) GetNetworksOk() (*GetClientConfig200ResponseDenylistInnerNetworks, bool)`

GetNetworksOk returns a tuple with the Networks field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetNetworks

`func (o *GetClientConfig200ResponseDenylistInner) SetNetworks(v GetClientConfig200ResponseDenylistInnerNetworks)`

SetNetworks sets Networks field to given value.

### HasNetworks

`func (o *GetClientConfig200ResponseDenylistInner) HasNetworks() bool`

HasNetworks returns a boolean if a field has been set.

### GetVisible

`func (o *GetClientConfig200ResponseDenylistInner) GetVisible() bool`

GetVisible returns the Visible field if non-nil, zero value otherwise.

### GetVisibleOk

`func (o *GetClientConfig200ResponseDenylistInner) GetVisibleOk() (*bool, bool)`

GetVisibleOk returns a tuple with the Visible field if it's non-nil, zero value otherwise
and a boolean to check if the value has been set.

### SetVisible

`func (o *GetClientConfig200ResponseDenylistInner) SetVisible(v bool)`

SetVisible sets Visible field to given value.



[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)




================================================
FILE: openapi/docs/GetClientConfig200ResponseDenylistInnerNetworks.md
================================================
# GetClientConfig200ResponseDenylistInnerNetworks

## Properties

Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**V4** | [**[]IPv4Network**](IPv4Network.md) |  | 
**V6** | [**[]IPv6Netw
Download .txt
gitextract_rfy_bp79/

├── .github/
│   ├── dependabot.yml
│   └── workflows/
│       ├── release.yml
│       └── test.yml
├── .gitignore
├── .goreleaser.yml
├── .releaserc.json
├── Dockerfile
├── LICENSE
├── README.md
├── cloudflare/
│   ├── api.go
│   └── util.go
├── cmd/
│   ├── generate/
│   │   └── generate.go
│   ├── register/
│   │   └── register.go
│   ├── root.go
│   ├── shared/
│   │   └── shared.go
│   ├── status/
│   │   └── status.go
│   ├── trace/
│   │   └── trace.go
│   └── update/
│       └── update.go
├── config/
│   └── config.go
├── go.mod
├── go.sum
├── main.go
├── openapi/
│   ├── .gitignore
│   ├── .openapi-generator/
│   │   ├── FILES
│   │   └── VERSION
│   ├── .openapi-generator-ignore
│   ├── .travis.yml
│   ├── README.md
│   ├── api/
│   │   └── openapi.yaml
│   ├── api_default.go
│   ├── client.go
│   ├── configuration.go
│   ├── docs/
│   │   ├── Account.md
│   │   ├── BoundDevice.md
│   │   ├── Config.md
│   │   ├── ConfigInterface.md
│   │   ├── ConfigServices.md
│   │   ├── DefaultApi.md
│   │   ├── Endpoint.md
│   │   ├── GetClientConfig200Response.md
│   │   ├── GetClientConfig200ResponseCaptivePortalInner.md
│   │   ├── GetClientConfig200ResponseCaptivePortalInnerNetworksInner.md
│   │   ├── GetClientConfig200ResponseDenylistInner.md
│   │   ├── GetClientConfig200ResponseDenylistInnerNetworks.md
│   │   ├── GetSourceDevice200Response.md
│   │   ├── IPv4Network.md
│   │   ├── IPv6Network.md
│   │   ├── NetworkAddress.md
│   │   ├── Peer.md
│   │   ├── Register200Response.md
│   │   ├── RegisterRequest.md
│   │   ├── ResetAccountLicense200Response.md
│   │   ├── SourceDevice.md
│   │   ├── UpdateAccount200Response.md
│   │   ├── UpdateAccountRequest.md
│   │   ├── UpdateBoundDeviceRequest.md
│   │   ├── UpdateSourceDevice200Response.md
│   │   └── UpdateSourceDeviceRequest.md
│   ├── git_push.sh
│   ├── go.mod
│   ├── go.sum
│   ├── model_account.go
│   ├── model_bound_device.go
│   ├── model_config.go
│   ├── model_config_interface.go
│   ├── model_config_services.go
│   ├── model_endpoint.go
│   ├── model_get_client_config_200_response.go
│   ├── model_get_client_config_200_response_captive_portal_inner.go
│   ├── model_get_client_config_200_response_captive_portal_inner_networks_inner.go
│   ├── model_get_client_config_200_response_denylist_inner.go
│   ├── model_get_client_config_200_response_denylist_inner_networks.go
│   ├── model_get_source_device_200_response.go
│   ├── model_ipv4_network.go
│   ├── model_ipv6_network.go
│   ├── model_network_address.go
│   ├── model_peer.go
│   ├── model_register_200_response.go
│   ├── model_register_request.go
│   ├── model_reset_account_license_200_response.go
│   ├── model_source_device.go
│   ├── model_update_account_200_response.go
│   ├── model_update_account_request.go
│   ├── model_update_bound_device_request.go
│   ├── model_update_source_device_200_response.go
│   ├── model_update_source_device_request.go
│   ├── response.go
│   ├── test/
│   │   └── api_default_test.go
│   └── utils.go
├── openapi-spec.yml
├── openapitools.json
├── util/
│   ├── util.go
│   └── util_test.go
└── wireguard/
    ├── keys.go
    ├── keys_test.go
    ├── profile.go
    └── profile_test.go
Download .txt
SYMBOL INDEX (1032 symbols across 48 files)

FILE: cloudflare/api.go
  constant ApiUrl (line 16) | ApiUrl     = "https://api.cloudflareclient.com"
  constant ApiVersion (line 17) | ApiVersion = "v0a1922"
  function MakeApiClient (line 43) | func MakeApiClient(authToken *string) *openapi.APIClient {
  function Register (line 60) | func Register(publicKey *wireguard.Key, deviceModel string) (*openapi.Re...
  type SourceDevice (line 76) | type SourceDevice
  function GetSourceDevice (line 78) | func GetSourceDevice(ctx *config.Context) (*SourceDevice, error) {
  function globalClientAuth (line 85) | func globalClientAuth(authToken string) *openapi.APIClient {
  type Account (line 92) | type Account
  function GetAccount (line 94) | func GetAccount(ctx *config.Context) (*Account, error) {
  function UpdateLicenseKey (line 102) | func UpdateLicenseKey(ctx *config.Context) (*openapi.UpdateAccount200Res...
  type BoundDevice (line 114) | type BoundDevice
  function GetBoundDevices (line 116) | func GetBoundDevices(ctx *config.Context) ([]BoundDevice, error) {
  function GetSourceBoundDevice (line 130) | func GetSourceBoundDevice(ctx *config.Context) (*BoundDevice, error) {
  function UpdateSourceBoundDeviceName (line 138) | func UpdateSourceBoundDeviceName(ctx *config.Context, targetDeviceId str...
  function UpdateSourceBoundDeviceActive (line 144) | func UpdateSourceBoundDeviceActive(ctx *config.Context, targetDeviceId s...
  function updateSourceBoundDevice (line 150) | func updateSourceBoundDevice(ctx *config.Context, targetDeviceId string,...
  function DeleteBoundDevice (line 165) | func DeleteBoundDevice(ctx *config.Context, targetDeviceId string) error {

FILE: cloudflare/util.go
  function FindDevice (line 7) | func FindDevice(devices []BoundDevice, deviceId string) (*BoundDevice, e...

FILE: cmd/generate/generate.go
  function init (line 27) | func init() {
  function generateProfile (line 31) | func generateProfile() error {

FILE: cmd/register/register.go
  function init (line 32) | func init() {
  function registerAccount (line 39) | func registerAccount() error {
  function checkTOS (line 92) | func checkTOS() error {

FILE: cmd/root.go
  function Execute (line 34) | func Execute() error {
  function init (line 38) | func init() {
  function initConfig (line 50) | func initConfig() {
  function initConfigDefaults (line 62) | func initConfigDefaults() {

FILE: cmd/shared/shared.go
  function RunCommandFatal (line 23) | func RunCommandFatal(cmd func() error) {
  function FormatMessage (line 34) | func FormatMessage(shortMessage string, longMessage string) string {
  function isConfigValidAccount (line 50) | func isConfigValidAccount() bool {
  function EnsureConfigValidAccount (line 56) | func EnsureConfigValidAccount() error {
  function EnsureNoExistingAccount (line 64) | func EnsureNoExistingAccount() error {
  function CreateContext (line 72) | func CreateContext() *config.Context {
  function PrintAccountDetails (line 81) | func PrintAccountDetails(account *cloudflare.Account, boundDevices []clo...
  function SetDeviceName (line 119) | func SetDeviceName(ctx *config.Context, deviceName string) (*cloudflare....

FILE: cmd/status/status.go
  function init (line 21) | func init() {
  function status (line 24) | func status() error {

FILE: cmd/trace/trace.go
  function init (line 29) | func init() {
  function trace (line 32) | func trace() error {

FILE: cmd/update/update.go
  function init (line 34) | func init() {
  function updateAccount (line 42) | func updateAccount() error {

FILE: config/config.go
  constant DeviceId (line 4) | DeviceId    = "device_id"
  constant AccessToken (line 5) | AccessToken = "access_token"
  constant PrivateKey (line 6) | PrivateKey  = "private_key"
  constant LicenseKey (line 7) | LicenseKey  = "license_key"
  type Context (line 10) | type Context struct

FILE: main.go
  function main (line 11) | func main() {

FILE: openapi/api_default.go
  type DefaultAPIService (line 24) | type DefaultAPIService
    method DeleteBoundDevice (line 47) | func (a *DefaultAPIService) DeleteBoundDevice(ctx context.Context, sou...
    method DeleteBoundDeviceExecute (line 58) | func (a *DefaultAPIService) DeleteBoundDeviceExecute(r ApiDeleteBoundD...
    method GetAccount (line 143) | func (a *DefaultAPIService) GetAccount(ctx context.Context, sourceDevi...
    method GetAccountExecute (line 154) | func (a *DefaultAPIService) GetAccountExecute(r ApiGetAccountRequest) ...
    method GetBoundDevices (line 248) | func (a *DefaultAPIService) GetBoundDevices(ctx context.Context, sourc...
    method GetBoundDevicesExecute (line 259) | func (a *DefaultAPIService) GetBoundDevicesExecute(r ApiGetBoundDevice...
    method GetClientConfig (line 351) | func (a *DefaultAPIService) GetClientConfig(ctx context.Context, apiVe...
    method GetClientConfigExecute (line 361) | func (a *DefaultAPIService) GetClientConfigExecute(r ApiGetClientConfi...
    method GetSourceDevice (line 454) | func (a *DefaultAPIService) GetSourceDevice(ctx context.Context, apiVe...
    method GetSourceDeviceExecute (line 465) | func (a *DefaultAPIService) GetSourceDeviceExecute(r ApiGetSourceDevic...
    method Register (line 563) | func (a *DefaultAPIService) Register(ctx context.Context, apiVersion s...
    method RegisterExecute (line 573) | func (a *DefaultAPIService) RegisterExecute(r ApiRegisterRequest) (*Re...
    method ResetAccountLicense (line 668) | func (a *DefaultAPIService) ResetAccountLicense(ctx context.Context, s...
    method ResetAccountLicenseExecute (line 679) | func (a *DefaultAPIService) ResetAccountLicenseExecute(r ApiResetAccou...
    method UpdateAccount (line 779) | func (a *DefaultAPIService) UpdateAccount(ctx context.Context, sourceD...
    method UpdateAccountExecute (line 790) | func (a *DefaultAPIService) UpdateAccountExecute(r ApiUpdateAccountReq...
    method UpdateBoundDevice (line 894) | func (a *DefaultAPIService) UpdateBoundDevice(ctx context.Context, sou...
    method UpdateBoundDeviceExecute (line 906) | func (a *DefaultAPIService) UpdateBoundDeviceExecute(r ApiUpdateBoundD...
    method UpdateSourceDevice (line 1009) | func (a *DefaultAPIService) UpdateSourceDevice(ctx context.Context, ap...
    method UpdateSourceDeviceExecute (line 1020) | func (a *DefaultAPIService) UpdateSourceDeviceExecute(r ApiUpdateSourc...
  type ApiDeleteBoundDeviceRequest (line 26) | type ApiDeleteBoundDeviceRequest struct
    method Execute (line 34) | func (r ApiDeleteBoundDeviceRequest) Execute() (*http.Response, error) {
  type ApiGetAccountRequest (line 124) | type ApiGetAccountRequest struct
    method Execute (line 131) | func (r ApiGetAccountRequest) Execute() (*Account, *http.Response, err...
  type ApiGetBoundDevicesRequest (line 229) | type ApiGetBoundDevicesRequest struct
    method Execute (line 236) | func (r ApiGetBoundDevicesRequest) Execute() ([]BoundDevice, *http.Res...
  type ApiGetClientConfigRequest (line 334) | type ApiGetClientConfigRequest struct
    method Execute (line 340) | func (r ApiGetClientConfigRequest) Execute() (*GetClientConfig200Respo...
  type ApiGetSourceDeviceRequest (line 435) | type ApiGetSourceDeviceRequest struct
    method Execute (line 442) | func (r ApiGetSourceDeviceRequest) Execute() (*GetSourceDevice200Respo...
  type ApiRegisterRequest (line 540) | type ApiRegisterRequest struct
    method RegisterRequest (line 547) | func (r ApiRegisterRequest) RegisterRequest(registerRequest RegisterRe...
    method Execute (line 552) | func (r ApiRegisterRequest) Execute() (*Register200Response, *http.Res...
  type ApiResetAccountLicenseRequest (line 649) | type ApiResetAccountLicenseRequest struct
    method Execute (line 656) | func (r ApiResetAccountLicenseRequest) Execute() (*ResetAccountLicense...
  type ApiUpdateAccountRequest (line 754) | type ApiUpdateAccountRequest struct
    method UpdateAccountRequest (line 762) | func (r ApiUpdateAccountRequest) UpdateAccountRequest(updateAccountReq...
    method Execute (line 767) | func (r ApiUpdateAccountRequest) Execute() (*UpdateAccount200Response,...
  type ApiUpdateBoundDeviceRequest (line 867) | type ApiUpdateBoundDeviceRequest struct
    method UpdateBoundDeviceRequest (line 876) | func (r ApiUpdateBoundDeviceRequest) UpdateBoundDeviceRequest(updateBo...
    method Execute (line 881) | func (r ApiUpdateBoundDeviceRequest) Execute() ([]BoundDevice, *http.R...
  type ApiUpdateSourceDeviceRequest (line 984) | type ApiUpdateSourceDeviceRequest struct
    method UpdateSourceDeviceRequest (line 992) | func (r ApiUpdateSourceDeviceRequest) UpdateSourceDeviceRequest(update...
    method Execute (line 997) | func (r ApiUpdateSourceDeviceRequest) Execute() (*UpdateSourceDevice20...

FILE: openapi/client.go
  type APIClient (line 46) | type APIClient struct
    method callAPI (line 248) | func (c *APIClient) callAPI(request *http.Request) (*http.Response, er...
    method GetConfig (line 274) | func (c *APIClient) GetConfig() *Configuration {
    method prepareRequest (line 285) | func (c *APIClient) prepareRequest(
    method decode (line 429) | func (c *APIClient) decode(v interface{}, b []byte, contentType string...
  type service (line 55) | type service struct
  function NewAPIClient (line 61) | func NewAPIClient(cfg *Configuration) *APIClient {
  function atoi (line 76) | func atoi(in string) (int, error) {
  function selectHeaderContentType (line 81) | func selectHeaderContentType(contentTypes []string) string {
  function selectHeaderAccept (line 92) | func selectHeaderAccept(accepts []string) string {
  function contains (line 105) | func contains(haystack []string, needle string) bool {
  function typeCheckParameter (line 115) | func typeCheckParameter(obj interface{}, expected string, name string) e...
  function parameterValueToString (line 128) | func parameterValueToString( obj interface{}, key string ) string {
  function parameterAddToHeaderOrQuery (line 149) | func parameterAddToHeaderOrQuery(headerOrQueryParams interface{}, keyPre...
  function parameterToJson (line 239) | func parameterToJson(obj interface{}) (string, error) {
  type formFile (line 278) | type formFile struct
  function addFile (line 485) | func addFile(w *multipart.Writer, fieldName, path string) error {
  function setBody (line 505) | func setBody(body interface{}, contentType string) (bodyBuf *bytes.Buffe...
  function detectContentType (line 542) | func detectContentType(body interface{}) string {
  type cacheControl (line 563) | type cacheControl
  function parseCacheControl (line 565) | func parseCacheControl(headers http.Header) cacheControl {
  function CacheExpires (line 584) | func CacheExpires(r *http.Response) time.Time {
  function strlen (line 612) | func strlen(s string) int {
  type GenericOpenAPIError (line 617) | type GenericOpenAPIError struct
    method Error (line 624) | func (e GenericOpenAPIError) Error() string {
    method Body (line 629) | func (e GenericOpenAPIError) Body() []byte {
    method Model (line 634) | func (e GenericOpenAPIError) Model() interface{} {
  function formatErrorMessage (line 639) | func formatErrorMessage(status string, v interface{}) string {

FILE: openapi/configuration.go
  type contextKey (line 24) | type contextKey
    method String (line 26) | func (c contextKey) String() string {
  type BasicAuth (line 45) | type BasicAuth struct
  type APIKey (line 51) | type APIKey struct
  type ServerVariable (line 57) | type ServerVariable struct
  type ServerConfiguration (line 64) | type ServerConfiguration struct
  type ServerConfigurations (line 71) | type ServerConfigurations
    method URL (line 109) | func (sc ServerConfigurations) URL(index int, variables map[string]str...
  type Configuration (line 74) | type Configuration struct
    method AddDefaultHeader (line 104) | func (c *Configuration) AddDefaultHeader(key string, value string) {
    method ServerURL (line 137) | func (c *Configuration) ServerURL(index int, variables map[string]stri...
    method ServerURLWithContext (line 194) | func (c *Configuration) ServerURLWithContext(ctx context.Context, endp...
  function NewConfiguration (line 86) | func NewConfiguration() *Configuration {
  function getServerIndex (line 141) | func getServerIndex(ctx context.Context) (int, error) {
  function getServerOperationIndex (line 152) | func getServerOperationIndex(ctx context.Context, endpoint string) (int,...
  function getServerVariables (line 167) | func getServerVariables(ctx context.Context) (map[string]string, error) {
  function getServerOperationVariables (line 178) | func getServerOperationVariables(ctx context.Context, endpoint string) (...

FILE: openapi/model_account.go
  type Account (line 22) | type Account struct
    method GetAccountType (line 69) | func (o *Account) GetAccountType() string {
    method GetAccountTypeOk (line 80) | func (o *Account) GetAccountTypeOk() (*string, bool) {
    method SetAccountType (line 88) | func (o *Account) SetAccountType(v string) {
    method GetCreated (line 93) | func (o *Account) GetCreated() string {
    method GetCreatedOk (line 104) | func (o *Account) GetCreatedOk() (*string, bool) {
    method SetCreated (line 112) | func (o *Account) SetCreated(v string) {
    method GetId (line 117) | func (o *Account) GetId() string {
    method GetIdOk (line 128) | func (o *Account) GetIdOk() (*string, bool) {
    method SetId (line 136) | func (o *Account) SetId(v string) {
    method GetLicense (line 141) | func (o *Account) GetLicense() string {
    method GetLicenseOk (line 152) | func (o *Account) GetLicenseOk() (*string, bool) {
    method SetLicense (line 160) | func (o *Account) SetLicense(v string) {
    method GetPremiumData (line 165) | func (o *Account) GetPremiumData() float32 {
    method GetPremiumDataOk (line 176) | func (o *Account) GetPremiumDataOk() (*float32, bool) {
    method SetPremiumData (line 184) | func (o *Account) SetPremiumData(v float32) {
    method GetQuota (line 189) | func (o *Account) GetQuota() float32 {
    method GetQuotaOk (line 200) | func (o *Account) GetQuotaOk() (*float32, bool) {
    method SetQuota (line 208) | func (o *Account) SetQuota(v float32) {
    method GetReferralCount (line 213) | func (o *Account) GetReferralCount() float32 {
    method GetReferralCountOk (line 224) | func (o *Account) GetReferralCountOk() (*float32, bool) {
    method SetReferralCount (line 232) | func (o *Account) SetReferralCount(v float32) {
    method GetReferralRenewalCountdown (line 237) | func (o *Account) GetReferralRenewalCountdown() float32 {
    method GetReferralRenewalCountdownOk (line 248) | func (o *Account) GetReferralRenewalCountdownOk() (*float32, bool) {
    method SetReferralRenewalCountdown (line 256) | func (o *Account) SetReferralRenewalCountdown(v float32) {
    method GetRole (line 261) | func (o *Account) GetRole() string {
    method GetRoleOk (line 272) | func (o *Account) GetRoleOk() (*string, bool) {
    method SetRole (line 280) | func (o *Account) SetRole(v string) {
    method GetUpdated (line 285) | func (o *Account) GetUpdated() string {
    method GetUpdatedOk (line 296) | func (o *Account) GetUpdatedOk() (*string, bool) {
    method SetUpdated (line 304) | func (o *Account) SetUpdated(v string) {
    method GetWarpPlus (line 309) | func (o *Account) GetWarpPlus() bool {
    method GetWarpPlusOk (line 320) | func (o *Account) GetWarpPlusOk() (*bool, bool) {
    method SetWarpPlus (line 328) | func (o *Account) SetWarpPlus(v bool) {
    method GetUsage (line 333) | func (o *Account) GetUsage() float32 {
    method GetUsageOk (line 343) | func (o *Account) GetUsageOk() (*float32, bool) {
    method HasUsage (line 351) | func (o *Account) HasUsage() bool {
    method SetUsage (line 360) | func (o *Account) SetUsage(v float32) {
    method MarshalJSON (line 364) | func (o Account) MarshalJSON() ([]byte, error) {
    method ToMap (line 372) | func (o Account) ToMap() (map[string]interface{}, error) {
    method UnmarshalJSON (line 396) | func (o *Account) UnmarshalJSON(data []byte) (err error) {
  type _Account (line 38) | type _Account
  function NewAccount (line 44) | func NewAccount(accountType string, created string, id string, license s...
  function NewAccountWithDefaults (line 63) | func NewAccountWithDefaults() *Account {
  type NullableAccount (line 459) | type NullableAccount struct
    method Get (line 464) | func (v NullableAccount) Get() *Account {
    method Set (line 468) | func (v *NullableAccount) Set(val *Account) {
    method IsSet (line 473) | func (v NullableAccount) IsSet() bool {
    method Unset (line 477) | func (v *NullableAccount) Unset() {
    method MarshalJSON (line 486) | func (v NullableAccount) MarshalJSON() ([]byte, error) {
    method UnmarshalJSON (line 490) | func (v *NullableAccount) UnmarshalJSON(src []byte) error {
  function NewNullableAccount (line 482) | func NewNullableAccount(val *Account) *NullableAccount {

FILE: openapi/model_bound_device.go
  type BoundDevice (line 22) | type BoundDevice struct
    method GetActivated (line 61) | func (o *BoundDevice) GetActivated() string {
    method GetActivatedOk (line 72) | func (o *BoundDevice) GetActivatedOk() (*string, bool) {
    method SetActivated (line 80) | func (o *BoundDevice) SetActivated(v string) {
    method GetActive (line 85) | func (o *BoundDevice) GetActive() bool {
    method GetActiveOk (line 96) | func (o *BoundDevice) GetActiveOk() (*bool, bool) {
    method SetActive (line 104) | func (o *BoundDevice) SetActive(v bool) {
    method GetCreated (line 109) | func (o *BoundDevice) GetCreated() string {
    method GetCreatedOk (line 120) | func (o *BoundDevice) GetCreatedOk() (*string, bool) {
    method SetCreated (line 128) | func (o *BoundDevice) SetCreated(v string) {
    method GetId (line 133) | func (o *BoundDevice) GetId() string {
    method GetIdOk (line 144) | func (o *BoundDevice) GetIdOk() (*string, bool) {
    method SetId (line 152) | func (o *BoundDevice) SetId(v string) {
    method GetModel (line 157) | func (o *BoundDevice) GetModel() string {
    method GetModelOk (line 168) | func (o *BoundDevice) GetModelOk() (*string, bool) {
    method SetModel (line 176) | func (o *BoundDevice) SetModel(v string) {
    method GetName (line 181) | func (o *BoundDevice) GetName() string {
    method GetNameOk (line 191) | func (o *BoundDevice) GetNameOk() (*string, bool) {
    method HasName (line 199) | func (o *BoundDevice) HasName() bool {
    method SetName (line 208) | func (o *BoundDevice) SetName(v string) {
    method GetRole (line 213) | func (o *BoundDevice) GetRole() string {
    method GetRoleOk (line 224) | func (o *BoundDevice) GetRoleOk() (*string, bool) {
    method SetRole (line 232) | func (o *BoundDevice) SetRole(v string) {
    method GetType (line 237) | func (o *BoundDevice) GetType() string {
    method GetTypeOk (line 248) | func (o *BoundDevice) GetTypeOk() (*string, bool) {
    method SetType (line 256) | func (o *BoundDevice) SetType(v string) {
    method MarshalJSON (line 260) | func (o BoundDevice) MarshalJSON() ([]byte, error) {
    method ToMap (line 268) | func (o BoundDevice) ToMap() (map[string]interface{}, error) {
    method UnmarshalJSON (line 288) | func (o *BoundDevice) UnmarshalJSON(data []byte) (err error) {
  type _BoundDevice (line 34) | type _BoundDevice
  function NewBoundDevice (line 40) | func NewBoundDevice(activated string, active bool, created string, id st...
  function NewBoundDeviceWithDefaults (line 55) | func NewBoundDeviceWithDefaults() *BoundDevice {
  type NullableBoundDevice (line 343) | type NullableBoundDevice struct
    method Get (line 348) | func (v NullableBoundDevice) Get() *BoundDevice {
    method Set (line 352) | func (v *NullableBoundDevice) Set(val *BoundDevice) {
    method IsSet (line 357) | func (v NullableBoundDevice) IsSet() bool {
    method Unset (line 361) | func (v *NullableBoundDevice) Unset() {
    method MarshalJSON (line 370) | func (v NullableBoundDevice) MarshalJSON() ([]byte, error) {
    method UnmarshalJSON (line 374) | func (v *NullableBoundDevice) UnmarshalJSON(src []byte) error {
  function NewNullableBoundDevice (line 366) | func NewNullableBoundDevice(val *BoundDevice) *NullableBoundDevice {

FILE: openapi/model_config.go
  type Config (line 22) | type Config struct
    method GetClientId (line 54) | func (o *Config) GetClientId() string {
    method GetClientIdOk (line 65) | func (o *Config) GetClientIdOk() (*string, bool) {
    method SetClientId (line 73) | func (o *Config) SetClientId(v string) {
    method GetInterface (line 78) | func (o *Config) GetInterface() ConfigInterface {
    method GetInterfaceOk (line 89) | func (o *Config) GetInterfaceOk() (*ConfigInterface, bool) {
    method SetInterface (line 97) | func (o *Config) SetInterface(v ConfigInterface) {
    method GetPeers (line 102) | func (o *Config) GetPeers() []Peer {
    method GetPeersOk (line 113) | func (o *Config) GetPeersOk() ([]Peer, bool) {
    method SetPeers (line 121) | func (o *Config) SetPeers(v []Peer) {
    method GetServices (line 126) | func (o *Config) GetServices() ConfigServices {
    method GetServicesOk (line 137) | func (o *Config) GetServicesOk() (*ConfigServices, bool) {
    method SetServices (line 145) | func (o *Config) SetServices(v ConfigServices) {
    method MarshalJSON (line 149) | func (o Config) MarshalJSON() ([]byte, error) {
    method ToMap (line 157) | func (o Config) ToMap() (map[string]interface{}, error) {
    method UnmarshalJSON (line 171) | func (o *Config) UnmarshalJSON(data []byte) (err error) {
  type _Config (line 30) | type _Config
  function NewConfig (line 36) | func NewConfig(clientId string, interface_ ConfigInterface, peers []Peer...
  function NewConfigWithDefaults (line 48) | func NewConfigWithDefaults() *Config {
  type NullableConfig (line 219) | type NullableConfig struct
    method Get (line 224) | func (v NullableConfig) Get() *Config {
    method Set (line 228) | func (v *NullableConfig) Set(val *Config) {
    method IsSet (line 233) | func (v NullableConfig) IsSet() bool {
    method Unset (line 237) | func (v *NullableConfig) Unset() {
    method MarshalJSON (line 246) | func (v NullableConfig) MarshalJSON() ([]byte, error) {
    method UnmarshalJSON (line 250) | func (v *NullableConfig) UnmarshalJSON(src []byte) error {
  function NewNullableConfig (line 242) | func NewNullableConfig(val *Config) *NullableConfig {

FILE: openapi/model_config_interface.go
  type ConfigInterface (line 22) | type ConfigInterface struct
    method GetAddresses (line 48) | func (o *ConfigInterface) GetAddresses() NetworkAddress {
    method GetAddressesOk (line 59) | func (o *ConfigInterface) GetAddressesOk() (*NetworkAddress, bool) {
    method SetAddresses (line 67) | func (o *ConfigInterface) SetAddresses(v NetworkAddress) {
    method MarshalJSON (line 71) | func (o ConfigInterface) MarshalJSON() ([]byte, error) {
    method ToMap (line 79) | func (o ConfigInterface) ToMap() (map[string]interface{}, error) {
    method UnmarshalJSON (line 90) | func (o *ConfigInterface) UnmarshalJSON(data []byte) (err error) {
  type _ConfigInterface (line 27) | type _ConfigInterface
  function NewConfigInterface (line 33) | func NewConfigInterface(addresses NetworkAddress) *ConfigInterface {
  function NewConfigInterfaceWithDefaults (line 42) | func NewConfigInterfaceWithDefaults() *ConfigInterface {
  type NullableConfigInterface (line 132) | type NullableConfigInterface struct
    method Get (line 137) | func (v NullableConfigInterface) Get() *ConfigInterface {
    method Set (line 141) | func (v *NullableConfigInterface) Set(val *ConfigInterface) {
    method IsSet (line 146) | func (v NullableConfigInterface) IsSet() bool {
    method Unset (line 150) | func (v *NullableConfigInterface) Unset() {
    method MarshalJSON (line 159) | func (v NullableConfigInterface) MarshalJSON() ([]byte, error) {
    method UnmarshalJSON (line 163) | func (v *NullableConfigInterface) UnmarshalJSON(src []byte) error {
  function NewNullableConfigInterface (line 155) | func NewNullableConfigInterface(val *ConfigInterface) *NullableConfigInt...

FILE: openapi/model_config_services.go
  type ConfigServices (line 22) | type ConfigServices struct
    method GetHttpProxy (line 48) | func (o *ConfigServices) GetHttpProxy() string {
    method GetHttpProxyOk (line 59) | func (o *ConfigServices) GetHttpProxyOk() (*string, bool) {
    method SetHttpProxy (line 67) | func (o *ConfigServices) SetHttpProxy(v string) {
    method MarshalJSON (line 71) | func (o ConfigServices) MarshalJSON() ([]byte, error) {
    method ToMap (line 79) | func (o ConfigServices) ToMap() (map[string]interface{}, error) {
    method UnmarshalJSON (line 90) | func (o *ConfigServices) UnmarshalJSON(data []byte) (err error) {
  type _ConfigServices (line 27) | type _ConfigServices
  function NewConfigServices (line 33) | func NewConfigServices(httpProxy string) *ConfigServices {
  function NewConfigServicesWithDefaults (line 42) | func NewConfigServicesWithDefaults() *ConfigServices {
  type NullableConfigServices (line 132) | type NullableConfigServices struct
    method Get (line 137) | func (v NullableConfigServices) Get() *ConfigServices {
    method Set (line 141) | func (v *NullableConfigServices) Set(val *ConfigServices) {
    method IsSet (line 146) | func (v NullableConfigServices) IsSet() bool {
    method Unset (line 150) | func (v *NullableConfigServices) Unset() {
    method MarshalJSON (line 159) | func (v NullableConfigServices) MarshalJSON() ([]byte, error) {
    method UnmarshalJSON (line 163) | func (v *NullableConfigServices) UnmarshalJSON(src []byte) error {
  function NewNullableConfigServices (line 155) | func NewNullableConfigServices(val *ConfigServices) *NullableConfigServi...

FILE: openapi/model_endpoint.go
  type Endpoint (line 22) | type Endpoint struct
    method GetHost (line 52) | func (o *Endpoint) GetHost() string {
    method GetHostOk (line 63) | func (o *Endpoint) GetHostOk() (*string, bool) {
    method SetHost (line 71) | func (o *Endpoint) SetHost(v string) {
    method GetV4 (line 76) | func (o *Endpoint) GetV4() string {
    method GetV4Ok (line 87) | func (o *Endpoint) GetV4Ok() (*string, bool) {
    method SetV4 (line 95) | func (o *Endpoint) SetV4(v string) {
    method GetV6 (line 100) | func (o *Endpoint) GetV6() string {
    method GetV6Ok (line 111) | func (o *Endpoint) GetV6Ok() (*string, bool) {
    method SetV6 (line 119) | func (o *Endpoint) SetV6(v string) {
    method MarshalJSON (line 123) | func (o Endpoint) MarshalJSON() ([]byte, error) {
    method ToMap (line 131) | func (o Endpoint) ToMap() (map[string]interface{}, error) {
    method UnmarshalJSON (line 144) | func (o *Endpoint) UnmarshalJSON(data []byte) (err error) {
  type _Endpoint (line 29) | type _Endpoint
  function NewEndpoint (line 35) | func NewEndpoint(host string, v4 string, v6 string) *Endpoint {
  function NewEndpointWithDefaults (line 46) | func NewEndpointWithDefaults() *Endpoint {
  type NullableEndpoint (line 190) | type NullableEndpoint struct
    method Get (line 195) | func (v NullableEndpoint) Get() *Endpoint {
    method Set (line 199) | func (v *NullableEndpoint) Set(val *Endpoint) {
    method IsSet (line 204) | func (v NullableEndpoint) IsSet() bool {
    method Unset (line 208) | func (v *NullableEndpoint) Unset() {
    method MarshalJSON (line 217) | func (v NullableEndpoint) MarshalJSON() ([]byte, error) {
    method UnmarshalJSON (line 221) | func (v *NullableEndpoint) UnmarshalJSON(src []byte) error {
  function NewNullableEndpoint (line 213) | func NewNullableEndpoint(val *Endpoint) *NullableEndpoint {

FILE: openapi/model_get_client_config_200_response.go
  type GetClientConfig200Response (line 22) | type GetClientConfig200Response struct
    method GetCaptivePortal (line 54) | func (o *GetClientConfig200Response) GetCaptivePortal() []GetClientCon...
    method GetCaptivePortalOk (line 65) | func (o *GetClientConfig200Response) GetCaptivePortalOk() ([]GetClient...
    method SetCaptivePortal (line 73) | func (o *GetClientConfig200Response) SetCaptivePortal(v []GetClientCon...
    method GetDenylist (line 78) | func (o *GetClientConfig200Response) GetDenylist() []GetClientConfig20...
    method GetDenylistOk (line 89) | func (o *GetClientConfig200Response) GetDenylistOk() ([]GetClientConfi...
    method SetDenylist (line 97) | func (o *GetClientConfig200Response) SetDenylist(v []GetClientConfig20...
    method GetPremiumDataBytes (line 102) | func (o *GetClientConfig200Response) GetPremiumDataBytes() float32 {
    method GetPremiumDataBytesOk (line 113) | func (o *GetClientConfig200Response) GetPremiumDataBytesOk() (*float32...
    method SetPremiumDataBytes (line 121) | func (o *GetClientConfig200Response) SetPremiumDataBytes(v float32) {
    method GetReferralRewardBytes (line 126) | func (o *GetClientConfig200Response) GetReferralRewardBytes() float32 {
    method GetReferralRewardBytesOk (line 137) | func (o *GetClientConfig200Response) GetReferralRewardBytesOk() (*floa...
    method SetReferralRewardBytes (line 145) | func (o *GetClientConfig200Response) SetReferralRewardBytes(v float32) {
    method MarshalJSON (line 149) | func (o GetClientConfig200Response) MarshalJSON() ([]byte, error) {
    method ToMap (line 157) | func (o GetClientConfig200Response) ToMap() (map[string]interface{}, e...
    method UnmarshalJSON (line 171) | func (o *GetClientConfig200Response) UnmarshalJSON(data []byte) (err e...
  type _GetClientConfig200Response (line 30) | type _GetClientConfig200Response
  function NewGetClientConfig200Response (line 36) | func NewGetClientConfig200Response(captivePortal []GetClientConfig200Res...
  function NewGetClientConfig200ResponseWithDefaults (line 48) | func NewGetClientConfig200ResponseWithDefaults() *GetClientConfig200Resp...
  type NullableGetClientConfig200Response (line 219) | type NullableGetClientConfig200Response struct
    method Get (line 224) | func (v NullableGetClientConfig200Response) Get() *GetClientConfig200R...
    method Set (line 228) | func (v *NullableGetClientConfig200Response) Set(val *GetClientConfig2...
    method IsSet (line 233) | func (v NullableGetClientConfig200Response) IsSet() bool {
    method Unset (line 237) | func (v *NullableGetClientConfig200Response) Unset() {
    method MarshalJSON (line 246) | func (v NullableGetClientConfig200Response) MarshalJSON() ([]byte, err...
    method UnmarshalJSON (line 250) | func (v *NullableGetClientConfig200Response) UnmarshalJSON(src []byte)...
  function NewNullableGetClientConfig200Response (line 242) | func NewNullableGetClientConfig200Response(val *GetClientConfig200Respon...

FILE: openapi/model_get_client_config_200_response_captive_portal_inner.go
  type GetClientConfig200ResponseCaptivePortalInner (line 22) | type GetClientConfig200ResponseCaptivePortalInner struct
    method GetName (line 50) | func (o *GetClientConfig200ResponseCaptivePortalInner) GetName() string {
    method GetNameOk (line 61) | func (o *GetClientConfig200ResponseCaptivePortalInner) GetNameOk() (*s...
    method SetName (line 69) | func (o *GetClientConfig200ResponseCaptivePortalInner) SetName(v strin...
    method GetNetworks (line 74) | func (o *GetClientConfig200ResponseCaptivePortalInner) GetNetworks() [...
    method GetNetworksOk (line 85) | func (o *GetClientConfig200ResponseCaptivePortalInner) GetNetworksOk()...
    method SetNetworks (line 93) | func (o *GetClientConfig200ResponseCaptivePortalInner) SetNetworks(v [...
    method MarshalJSON (line 97) | func (o GetClientConfig200ResponseCaptivePortalInner) MarshalJSON() ([...
    method ToMap (line 105) | func (o GetClientConfig200ResponseCaptivePortalInner) ToMap() (map[str...
    method UnmarshalJSON (line 117) | func (o *GetClientConfig200ResponseCaptivePortalInner) UnmarshalJSON(d...
  type _GetClientConfig200ResponseCaptivePortalInner (line 28) | type _GetClientConfig200ResponseCaptivePortalInner
  function NewGetClientConfig200ResponseCaptivePortalInner (line 34) | func NewGetClientConfig200ResponseCaptivePortalInner(name string, networ...
  function NewGetClientConfig200ResponseCaptivePortalInnerWithDefaults (line 44) | func NewGetClientConfig200ResponseCaptivePortalInnerWithDefaults() *GetC...
  type NullableGetClientConfig200ResponseCaptivePortalInner (line 161) | type NullableGetClientConfig200ResponseCaptivePortalInner struct
    method Get (line 166) | func (v NullableGetClientConfig200ResponseCaptivePortalInner) Get() *G...
    method Set (line 170) | func (v *NullableGetClientConfig200ResponseCaptivePortalInner) Set(val...
    method IsSet (line 175) | func (v NullableGetClientConfig200ResponseCaptivePortalInner) IsSet() ...
    method Unset (line 179) | func (v *NullableGetClientConfig200ResponseCaptivePortalInner) Unset() {
    method MarshalJSON (line 188) | func (v NullableGetClientConfig200ResponseCaptivePortalInner) MarshalJ...
    method UnmarshalJSON (line 192) | func (v *NullableGetClientConfig200ResponseCaptivePortalInner) Unmarsh...
  function NewNullableGetClientConfig200ResponseCaptivePortalInner (line 184) | func NewNullableGetClientConfig200ResponseCaptivePortalInner(val *GetCli...

FILE: openapi/model_get_client_config_200_response_captive_portal_inner_networks_inner.go
  type GetClientConfig200ResponseCaptivePortalInnerNetworksInner (line 22) | type GetClientConfig200ResponseCaptivePortalInnerNetworksInner struct
    method GetAddress (line 48) | func (o *GetClientConfig200ResponseCaptivePortalInnerNetworksInner) Ge...
    method GetAddressOk (line 59) | func (o *GetClientConfig200ResponseCaptivePortalInnerNetworksInner) Ge...
    method SetAddress (line 67) | func (o *GetClientConfig200ResponseCaptivePortalInnerNetworksInner) Se...
    method MarshalJSON (line 71) | func (o GetClientConfig200ResponseCaptivePortalInnerNetworksInner) Mar...
    method ToMap (line 79) | func (o GetClientConfig200ResponseCaptivePortalInnerNetworksInner) ToM...
    method UnmarshalJSON (line 90) | func (o *GetClientConfig200ResponseCaptivePortalInnerNetworksInner) Un...
  type _GetClientConfig200ResponseCaptivePortalInnerNetworksInner (line 27) | type _GetClientConfig200ResponseCaptivePortalInnerNetworksInner
  function NewGetClientConfig200ResponseCaptivePortalInnerNetworksInner (line 33) | func NewGetClientConfig200ResponseCaptivePortalInnerNetworksInner(addres...
  function NewGetClientConfig200ResponseCaptivePortalInnerNetworksInnerWithDefaults (line 42) | func NewGetClientConfig200ResponseCaptivePortalInnerNetworksInnerWithDef...
  type NullableGetClientConfig200ResponseCaptivePortalInnerNetworksInner (line 132) | type NullableGetClientConfig200ResponseCaptivePortalInnerNetworksInner s...
    method Get (line 137) | func (v NullableGetClientConfig200ResponseCaptivePortalInnerNetworksIn...
    method Set (line 141) | func (v *NullableGetClientConfig200ResponseCaptivePortalInnerNetworksI...
    method IsSet (line 146) | func (v NullableGetClientConfig200ResponseCaptivePortalInnerNetworksIn...
    method Unset (line 150) | func (v *NullableGetClientConfig200ResponseCaptivePortalInnerNetworksI...
    method MarshalJSON (line 159) | func (v NullableGetClientConfig200ResponseCaptivePortalInnerNetworksIn...
    method UnmarshalJSON (line 163) | func (v *NullableGetClientConfig200ResponseCaptivePortalInnerNetworksI...
  function NewNullableGetClientConfig200ResponseCaptivePortalInnerNetworksInner (line 155) | func NewNullableGetClientConfig200ResponseCaptivePortalInnerNetworksInne...

FILE: openapi/model_get_client_config_200_response_denylist_inner.go
  type GetClientConfig200ResponseDenylistInner (line 22) | type GetClientConfig200ResponseDenylistInner struct
    method GetAndroidPackages (line 52) | func (o *GetClientConfig200ResponseDenylistInner) GetAndroidPackages()...
    method GetAndroidPackagesOk (line 62) | func (o *GetClientConfig200ResponseDenylistInner) GetAndroidPackagesOk...
    method HasAndroidPackages (line 70) | func (o *GetClientConfig200ResponseDenylistInner) HasAndroidPackages()...
    method SetAndroidPackages (line 79) | func (o *GetClientConfig200ResponseDenylistInner) SetAndroidPackages(v...
    method GetName (line 84) | func (o *GetClientConfig200ResponseDenylistInner) GetName() string {
    method GetNameOk (line 95) | func (o *GetClientConfig200ResponseDenylistInner) GetNameOk() (*string...
    method SetName (line 103) | func (o *GetClientConfig200ResponseDenylistInner) SetName(v string) {
    method GetNetworks (line 108) | func (o *GetClientConfig200ResponseDenylistInner) GetNetworks() GetCli...
    method GetNetworksOk (line 118) | func (o *GetClientConfig200ResponseDenylistInner) GetNetworksOk() (*Ge...
    method HasNetworks (line 126) | func (o *GetClientConfig200ResponseDenylistInner) HasNetworks() bool {
    method SetNetworks (line 135) | func (o *GetClientConfig200ResponseDenylistInner) SetNetworks(v GetCli...
    method GetVisible (line 140) | func (o *GetClientConfig200ResponseDenylistInner) GetVisible() bool {
    method GetVisibleOk (line 151) | func (o *GetClientConfig200ResponseDenylistInner) GetVisibleOk() (*boo...
    method SetVisible (line 159) | func (o *GetClientConfig200ResponseDenylistInner) SetVisible(v bool) {
    method MarshalJSON (line 163) | func (o GetClientConfig200ResponseDenylistInner) MarshalJSON() ([]byte...
    method ToMap (line 171) | func (o GetClientConfig200ResponseDenylistInner) ToMap() (map[string]i...
    method UnmarshalJSON (line 189) | func (o *GetClientConfig200ResponseDenylistInner) UnmarshalJSON(data [...
  type _GetClientConfig200ResponseDenylistInner (line 30) | type _GetClientConfig200ResponseDenylistInner
  function NewGetClientConfig200ResponseDenylistInner (line 36) | func NewGetClientConfig200ResponseDenylistInner(name string, visible boo...
  function NewGetClientConfig200ResponseDenylistInnerWithDefaults (line 46) | func NewGetClientConfig200ResponseDenylistInnerWithDefaults() *GetClient...
  type NullableGetClientConfig200ResponseDenylistInner (line 235) | type NullableGetClientConfig200ResponseDenylistInner struct
    method Get (line 240) | func (v NullableGetClientConfig200ResponseDenylistInner) Get() *GetCli...
    method Set (line 244) | func (v *NullableGetClientConfig200ResponseDenylistInner) Set(val *Get...
    method IsSet (line 249) | func (v NullableGetClientConfig200ResponseDenylistInner) IsSet() bool {
    method Unset (line 253) | func (v *NullableGetClientConfig200ResponseDenylistInner) Unset() {
    method MarshalJSON (line 262) | func (v NullableGetClientConfig200ResponseDenylistInner) MarshalJSON()...
    method UnmarshalJSON (line 266) | func (v *NullableGetClientConfig200ResponseDenylistInner) UnmarshalJSO...
  function NewNullableGetClientConfig200ResponseDenylistInner (line 258) | func NewNullableGetClientConfig200ResponseDenylistInner(val *GetClientCo...

FILE: openapi/model_get_client_config_200_response_denylist_inner_networks.go
  type GetClientConfig200ResponseDenylistInnerNetworks (line 22) | type GetClientConfig200ResponseDenylistInnerNetworks struct
    method GetV4 (line 50) | func (o *GetClientConfig200ResponseDenylistInnerNetworks) GetV4() []IP...
    method GetV4Ok (line 61) | func (o *GetClientConfig200ResponseDenylistInnerNetworks) GetV4Ok() ([...
    method SetV4 (line 69) | func (o *GetClientConfig200ResponseDenylistInnerNetworks) SetV4(v []IP...
    method GetV6 (line 74) | func (o *GetClientConfig200ResponseDenylistInnerNetworks) GetV6() []IP...
    method GetV6Ok (line 85) | func (o *GetClientConfig200ResponseDenylistInnerNetworks) GetV6Ok() ([...
    method SetV6 (line 93) | func (o *GetClientConfig200ResponseDenylistInnerNetworks) SetV6(v []IP...
    method MarshalJSON (line 97) | func (o GetClientConfig200ResponseDenylistInnerNetworks) MarshalJSON()...
    method ToMap (line 105) | func (o GetClientConfig200ResponseDenylistInnerNetworks) ToMap() (map[...
    method UnmarshalJSON (line 117) | func (o *GetClientConfig200ResponseDenylistInnerNetworks) UnmarshalJSO...
  type _GetClientConfig200ResponseDenylistInnerNetworks (line 28) | type _GetClientConfig200ResponseDenylistInnerNetworks
  function NewGetClientConfig200ResponseDenylistInnerNetworks (line 34) | func NewGetClientConfig200ResponseDenylistInnerNetworks(v4 []IPv4Network...
  function NewGetClientConfig200ResponseDenylistInnerNetworksWithDefaults (line 44) | func NewGetClientConfig200ResponseDenylistInnerNetworksWithDefaults() *G...
  type NullableGetClientConfig200ResponseDenylistInnerNetworks (line 161) | type NullableGetClientConfig200ResponseDenylistInnerNetworks struct
    method Get (line 166) | func (v NullableGetClientConfig200ResponseDenylistInnerNetworks) Get()...
    method Set (line 170) | func (v *NullableGetClientConfig200ResponseDenylistInnerNetworks) Set(...
    method IsSet (line 175) | func (v NullableGetClientConfig200ResponseDenylistInnerNetworks) IsSet...
    method Unset (line 179) | func (v *NullableGetClientConfig200ResponseDenylistInnerNetworks) Unse...
    method MarshalJSON (line 188) | func (v NullableGetClientConfig200ResponseDenylistInnerNetworks) Marsh...
    method UnmarshalJSON (line 192) | func (v *NullableGetClientConfig200ResponseDenylistInnerNetworks) Unma...
  function NewNullableGetClientConfig200ResponseDenylistInnerNetworks (line 184) | func NewNullableGetClientConfig200ResponseDenylistInnerNetworks(val *Get...

FILE: openapi/model_get_source_device_200_response.go
  type GetSourceDevice200Response (line 22) | type GetSourceDevice200Response struct
    method GetCreated (line 80) | func (o *GetSourceDevice200Response) GetCreated() string {
    method GetCreatedOk (line 91) | func (o *GetSourceDevice200Response) GetCreatedOk() (*string, bool) {
    method SetCreated (line 99) | func (o *GetSourceDevice200Response) SetCreated(v string) {
    method GetEnabled (line 104) | func (o *GetSourceDevice200Response) GetEnabled() bool {
    method GetEnabledOk (line 115) | func (o *GetSourceDevice200Response) GetEnabledOk() (*bool, bool) {
    method SetEnabled (line 123) | func (o *GetSourceDevice200Response) SetEnabled(v bool) {
    method GetFcmToken (line 128) | func (o *GetSourceDevice200Response) GetFcmToken() string {
    method GetFcmTokenOk (line 139) | func (o *GetSourceDevice200Response) GetFcmTokenOk() (*string, bool) {
    method SetFcmToken (line 147) | func (o *GetSourceDevice200Response) SetFcmToken(v string) {
    method GetId (line 152) | func (o *GetSourceDevice200Response) GetId() string {
    method GetIdOk (line 163) | func (o *GetSourceDevice200Response) GetIdOk() (*string, bool) {
    method SetId (line 171) | func (o *GetSourceDevice200Response) SetId(v string) {
    method GetInstallId (line 176) | func (o *GetSourceDevice200Response) GetInstallId() string {
    method GetInstallIdOk (line 187) | func (o *GetSourceDevice200Response) GetInstallIdOk() (*string, bool) {
    method SetInstallId (line 195) | func (o *GetSourceDevice200Response) SetInstallId(v string) {
    method GetKey (line 200) | func (o *GetSourceDevice200Response) GetKey() string {
    method GetKeyOk (line 211) | func (o *GetSourceDevice200Response) GetKeyOk() (*string, bool) {
    method SetKey (line 219) | func (o *GetSourceDevice200Response) SetKey(v string) {
    method GetLocale (line 224) | func (o *GetSourceDevice200Response) GetLocale() string {
    method GetLocaleOk (line 235) | func (o *GetSourceDevice200Response) GetLocaleOk() (*string, bool) {
    method SetLocale (line 243) | func (o *GetSourceDevice200Response) SetLocale(v string) {
    method GetModel (line 248) | func (o *GetSourceDevice200Response) GetModel() string {
    method GetModelOk (line 259) | func (o *GetSourceDevice200Response) GetModelOk() (*string, bool) {
    method SetModel (line 267) | func (o *GetSourceDevice200Response) SetModel(v string) {
    method GetName (line 272) | func (o *GetSourceDevice200Response) GetName() string {
    method GetNameOk (line 283) | func (o *GetSourceDevice200Response) GetNameOk() (*string, bool) {
    method SetName (line 291) | func (o *GetSourceDevice200Response) SetName(v string) {
    method GetPlace (line 296) | func (o *GetSourceDevice200Response) GetPlace() float32 {
    method GetPlaceOk (line 307) | func (o *GetSourceDevice200Response) GetPlaceOk() (*float32, bool) {
    method SetPlace (line 315) | func (o *GetSourceDevice200Response) SetPlace(v float32) {
    method GetTos (line 320) | func (o *GetSourceDevice200Response) GetTos() string {
    method GetTosOk (line 331) | func (o *GetSourceDevice200Response) GetTosOk() (*string, bool) {
    method SetTos (line 339) | func (o *GetSourceDevice200Response) SetTos(v string) {
    method GetType (line 344) | func (o *GetSourceDevice200Response) GetType() string {
    method GetTypeOk (line 355) | func (o *GetSourceDevice200Response) GetTypeOk() (*string, bool) {
    method SetType (line 363) | func (o *GetSourceDevice200Response) SetType(v string) {
    method GetUpdated (line 368) | func (o *GetSourceDevice200Response) GetUpdated() string {
    method GetUpdatedOk (line 379) | func (o *GetSourceDevice200Response) GetUpdatedOk() (*string, bool) {
    method SetUpdated (line 387) | func (o *GetSourceDevice200Response) SetUpdated(v string) {
    method GetWaitlistEnabled (line 392) | func (o *GetSourceDevice200Response) GetWaitlistEnabled() bool {
    method GetWaitlistEnabledOk (line 403) | func (o *GetSourceDevice200Response) GetWaitlistEnabledOk() (*bool, bo...
    method SetWaitlistEnabled (line 411) | func (o *GetSourceDevice200Response) SetWaitlistEnabled(v bool) {
    method GetWarpEnabled (line 416) | func (o *GetSourceDevice200Response) GetWarpEnabled() bool {
    method GetWarpEnabledOk (line 427) | func (o *GetSourceDevice200Response) GetWarpEnabledOk() (*bool, bool) {
    method SetWarpEnabled (line 435) | func (o *GetSourceDevice200Response) SetWarpEnabled(v bool) {
    method GetAccount (line 440) | func (o *GetSourceDevice200Response) GetAccount() Account {
    method GetAccountOk (line 451) | func (o *GetSourceDevice200Response) GetAccountOk() (*Account, bool) {
    method SetAccount (line 459) | func (o *GetSourceDevice200Response) SetAccount(v Account) {
    method GetConfig (line 464) | func (o *GetSourceDevice200Response) GetConfig() Config {
    method GetConfigOk (line 475) | func (o *GetSourceDevice200Response) GetConfigOk() (*Config, bool) {
    method SetConfig (line 483) | func (o *GetSourceDevice200Response) SetConfig(v Config) {
    method MarshalJSON (line 487) | func (o GetSourceDevice200Response) MarshalJSON() ([]byte, error) {
    method ToMap (line 495) | func (o GetSourceDevice200Response) ToMap() (map[string]interface{}, e...
    method UnmarshalJSON (line 522) | func (o *GetSourceDevice200Response) UnmarshalJSON(data []byte) (err e...
  type _GetSourceDevice200Response (line 43) | type _GetSourceDevice200Response
  function NewGetSourceDevice200Response (line 49) | func NewGetSourceDevice200Response(created string, enabled bool, fcmToke...
  function NewGetSourceDevice200ResponseWithDefaults (line 74) | func NewGetSourceDevice200ResponseWithDefaults() *GetSourceDevice200Resp...
  type NullableGetSourceDevice200Response (line 596) | type NullableGetSourceDevice200Response struct
    method Get (line 601) | func (v NullableGetSourceDevice200Response) Get() *GetSourceDevice200R...
    method Set (line 605) | func (v *NullableGetSourceDevice200Response) Set(val *GetSourceDevice2...
    method IsSet (line 610) | func (v NullableGetSourceDevice200Response) IsSet() bool {
    method Unset (line 614) | func (v *NullableGetSourceDevice200Response) Unset() {
    method MarshalJSON (line 623) | func (v NullableGetSourceDevice200Response) MarshalJSON() ([]byte, err...
    method UnmarshalJSON (line 627) | func (v *NullableGetSourceDevice200Response) UnmarshalJSON(src []byte)...
  function NewNullableGetSourceDevice200Response (line 619) | func NewNullableGetSourceDevice200Response(val *GetSourceDevice200Respon...

FILE: openapi/model_ipv4_network.go
  type IPv4Network (line 22) | type IPv4Network struct
    method GetAddress (line 50) | func (o *IPv4Network) GetAddress() string {
    method GetAddressOk (line 61) | func (o *IPv4Network) GetAddressOk() (*string, bool) {
    method SetAddress (line 69) | func (o *IPv4Network) SetAddress(v string) {
    method GetNetmask (line 74) | func (o *IPv4Network) GetNetmask() string {
    method GetNetmaskOk (line 85) | func (o *IPv4Network) GetNetmaskOk() (*string, bool) {
    method SetNetmask (line 93) | func (o *IPv4Network) SetNetmask(v string) {
    method MarshalJSON (line 97) | func (o IPv4Network) MarshalJSON() ([]byte, error) {
    method ToMap (line 105) | func (o IPv4Network) ToMap() (map[string]interface{}, error) {
    method UnmarshalJSON (line 117) | func (o *IPv4Network) UnmarshalJSON(data []byte) (err error) {
  type _IPv4Network (line 28) | type _IPv4Network
  function NewIPv4Network (line 34) | func NewIPv4Network(address string, netmask string) *IPv4Network {
  function NewIPv4NetworkWithDefaults (line 44) | func NewIPv4NetworkWithDefaults() *IPv4Network {
  type NullableIPv4Network (line 161) | type NullableIPv4Network struct
    method Get (line 166) | func (v NullableIPv4Network) Get() *IPv4Network {
    method Set (line 170) | func (v *NullableIPv4Network) Set(val *IPv4Network) {
    method IsSet (line 175) | func (v NullableIPv4Network) IsSet() bool {
    method Unset (line 179) | func (v *NullableIPv4Network) Unset() {
    method MarshalJSON (line 188) | func (v NullableIPv4Network) MarshalJSON() ([]byte, error) {
    method UnmarshalJSON (line 192) | func (v *NullableIPv4Network) UnmarshalJSON(src []byte) error {
  function NewNullableIPv4Network (line 184) | func NewNullableIPv4Network(val *IPv4Network) *NullableIPv4Network {

FILE: openapi/model_ipv6_network.go
  type IPv6Network (line 22) | type IPv6Network struct
    method GetAddress (line 50) | func (o *IPv6Network) GetAddress() string {
    method GetAddressOk (line 61) | func (o *IPv6Network) GetAddressOk() (*string, bool) {
    method SetAddress (line 69) | func (o *IPv6Network) SetAddress(v string) {
    method GetPrefix (line 74) | func (o *IPv6Network) GetPrefix() float32 {
    method GetPrefixOk (line 85) | func (o *IPv6Network) GetPrefixOk() (*float32, bool) {
    method SetPrefix (line 93) | func (o *IPv6Network) SetPrefix(v float32) {
    method MarshalJSON (line 97) | func (o IPv6Network) MarshalJSON() ([]byte, error) {
    method ToMap (line 105) | func (o IPv6Network) ToMap() (map[string]interface{}, error) {
    method UnmarshalJSON (line 117) | func (o *IPv6Network) UnmarshalJSON(data []byte) (err error) {
  type _IPv6Network (line 28) | type _IPv6Network
  function NewIPv6Network (line 34) | func NewIPv6Network(address string, prefix float32) *IPv6Network {
  function NewIPv6NetworkWithDefaults (line 44) | func NewIPv6NetworkWithDefaults() *IPv6Network {
  type NullableIPv6Network (line 161) | type NullableIPv6Network struct
    method Get (line 166) | func (v NullableIPv6Network) Get() *IPv6Network {
    method Set (line 170) | func (v *NullableIPv6Network) Set(val *IPv6Network) {
    method IsSet (line 175) | func (v NullableIPv6Network) IsSet() bool {
    method Unset (line 179) | func (v *NullableIPv6Network) Unset() {
    method MarshalJSON (line 188) | func (v NullableIPv6Network) MarshalJSON() ([]byte, error) {
    method UnmarshalJSON (line 192) | func (v *NullableIPv6Network) UnmarshalJSON(src []byte) error {
  function NewNullableIPv6Network (line 184) | func NewNullableIPv6Network(val *IPv6Network) *NullableIPv6Network {

FILE: openapi/model_network_address.go
  type NetworkAddress (line 22) | type NetworkAddress struct
    method GetV4 (line 50) | func (o *NetworkAddress) GetV4() string {
    method GetV4Ok (line 61) | func (o *NetworkAddress) GetV4Ok() (*string, bool) {
    method SetV4 (line 69) | func (o *NetworkAddress) SetV4(v string) {
    method GetV6 (line 74) | func (o *NetworkAddress) GetV6() string {
    method GetV6Ok (line 85) | func (o *NetworkAddress) GetV6Ok() (*string, bool) {
    method SetV6 (line 93) | func (o *NetworkAddress) SetV6(v string) {
    method MarshalJSON (line 97) | func (o NetworkAddress) MarshalJSON() ([]byte, error) {
    method ToMap (line 105) | func (o NetworkAddress) ToMap() (map[string]interface{}, error) {
    method UnmarshalJSON (line 117) | func (o *NetworkAddress) UnmarshalJSON(data []byte) (err error) {
  type _NetworkAddress (line 28) | type _NetworkAddress
  function NewNetworkAddress (line 34) | func NewNetworkAddress(v4 string, v6 string) *NetworkAddress {
  function NewNetworkAddressWithDefaults (line 44) | func NewNetworkAddressWithDefaults() *NetworkAddress {
  type NullableNetworkAddress (line 161) | type NullableNetworkAddress struct
    method Get (line 166) | func (v NullableNetworkAddress) Get() *NetworkAddress {
    method Set (line 170) | func (v *NullableNetworkAddress) Set(val *NetworkAddress) {
    method IsSet (line 175) | func (v NullableNetworkAddress) IsSet() bool {
    method Unset (line 179) | func (v *NullableNetworkAddress) Unset() {
    method MarshalJSON (line 188) | func (v NullableNetworkAddress) MarshalJSON() ([]byte, error) {
    method UnmarshalJSON (line 192) | func (v *NullableNetworkAddress) UnmarshalJSON(src []byte) error {
  function NewNullableNetworkAddress (line 184) | func NewNullableNetworkAddress(val *NetworkAddress) *NullableNetworkAddr...

FILE: openapi/model_peer.go
  type Peer (line 22) | type Peer struct
    method GetEndpoint (line 50) | func (o *Peer) GetEndpoint() Endpoint {
    method GetEndpointOk (line 61) | func (o *Peer) GetEndpointOk() (*Endpoint, bool) {
    method SetEndpoint (line 69) | func (o *Peer) SetEndpoint(v Endpoint) {
    method GetPublicKey (line 74) | func (o *Peer) GetPublicKey() string {
    method GetPublicKeyOk (line 85) | func (o *Peer) GetPublicKeyOk() (*string, bool) {
    method SetPublicKey (line 93) | func (o *Peer) SetPublicKey(v string) {
    method MarshalJSON (line 97) | func (o Peer) MarshalJSON() ([]byte, error) {
    method ToMap (line 105) | func (o Peer) ToMap() (map[string]interface{}, error) {
    method UnmarshalJSON (line 117) | func (o *Peer) UnmarshalJSON(data []byte) (err error) {
  type _Peer (line 28) | type _Peer
  function NewPeer (line 34) | func NewPeer(endpoint Endpoint, publicKey string) *Peer {
  function NewPeerWithDefaults (line 44) | func NewPeerWithDefaults() *Peer {
  type NullablePeer (line 161) | type NullablePeer struct
    method Get (line 166) | func (v NullablePeer) Get() *Peer {
    method Set (line 170) | func (v *NullablePeer) Set(val *Peer) {
    method IsSet (line 175) | func (v NullablePeer) IsSet() bool {
    method Unset (line 179) | func (v *NullablePeer) Unset() {
    method MarshalJSON (line 188) | func (v NullablePeer) MarshalJSON() ([]byte, error) {
    method UnmarshalJSON (line 192) | func (v *NullablePeer) UnmarshalJSON(src []byte) error {
  function NewNullablePeer (line 184) | func NewNullablePeer(val *Peer) *NullablePeer {

FILE: openapi/model_register_200_response.go
  type Register200Response (line 22) | type Register200Response struct
    method GetCreated (line 82) | func (o *Register200Response) GetCreated() string {
    method GetCreatedOk (line 93) | func (o *Register200Response) GetCreatedOk() (*string, bool) {
    method SetCreated (line 101) | func (o *Register200Response) SetCreated(v string) {
    method GetEnabled (line 106) | func (o *Register200Response) GetEnabled() bool {
    method GetEnabledOk (line 117) | func (o *Register200Response) GetEnabledOk() (*bool, bool) {
    method SetEnabled (line 125) | func (o *Register200Response) SetEnabled(v bool) {
    method GetFcmToken (line 130) | func (o *Register200Response) GetFcmToken() string {
    method GetFcmTokenOk (line 141) | func (o *Register200Response) GetFcmTokenOk() (*string, bool) {
    method SetFcmToken (line 149) | func (o *Register200Response) SetFcmToken(v string) {
    method GetId (line 154) | func (o *Register200Response) GetId() string {
    method GetIdOk (line 165) | func (o *Register200Response) GetIdOk() (*string, bool) {
    method SetId (line 173) | func (o *Register200Response) SetId(v string) {
    method GetInstallId (line 178) | func (o *Register200Response) GetInstallId() string {
    method GetInstallIdOk (line 189) | func (o *Register200Response) GetInstallIdOk() (*string, bool) {
    method SetInstallId (line 197) | func (o *Register200Response) SetInstallId(v string) {
    method GetKey (line 202) | func (o *Register200Response) GetKey() string {
    method GetKeyOk (line 213) | func (o *Register200Response) GetKeyOk() (*string, bool) {
    method SetKey (line 221) | func (o *Register200Response) SetKey(v string) {
    method GetLocale (line 226) | func (o *Register200Response) GetLocale() string {
    method GetLocaleOk (line 237) | func (o *Register200Response) GetLocaleOk() (*string, bool) {
    method SetLocale (line 245) | func (o *Register200Response) SetLocale(v string) {
    method GetModel (line 250) | func (o *Register200Response) GetModel() string {
    method GetModelOk (line 261) | func (o *Register200Response) GetModelOk() (*string, bool) {
    method SetModel (line 269) | func (o *Register200Response) SetModel(v string) {
    method GetName (line 274) | func (o *Register200Response) GetName() string {
    method GetNameOk (line 285) | func (o *Register200Response) GetNameOk() (*string, bool) {
    method SetName (line 293) | func (o *Register200Response) SetName(v string) {
    method GetPlace (line 298) | func (o *Register200Response) GetPlace() float32 {
    method GetPlaceOk (line 309) | func (o *Register200Response) GetPlaceOk() (*float32, bool) {
    method SetPlace (line 317) | func (o *Register200Response) SetPlace(v float32) {
    method GetTos (line 322) | func (o *Register200Response) GetTos() string {
    method GetTosOk (line 333) | func (o *Register200Response) GetTosOk() (*string, bool) {
    method SetTos (line 341) | func (o *Register200Response) SetTos(v string) {
    method GetType (line 346) | func (o *Register200Response) GetType() string {
    method GetTypeOk (line 357) | func (o *Register200Response) GetTypeOk() (*string, bool) {
    method SetType (line 365) | func (o *Register200Response) SetType(v string) {
    method GetUpdated (line 370) | func (o *Register200Response) GetUpdated() string {
    method GetUpdatedOk (line 381) | func (o *Register200Response) GetUpdatedOk() (*string, bool) {
    method SetUpdated (line 389) | func (o *Register200Response) SetUpdated(v string) {
    method GetWaitlistEnabled (line 394) | func (o *Register200Response) GetWaitlistEnabled() bool {
    method GetWaitlistEnabledOk (line 405) | func (o *Register200Response) GetWaitlistEnabledOk() (*bool, bool) {
    method SetWaitlistEnabled (line 413) | func (o *Register200Response) SetWaitlistEnabled(v bool) {
    method GetWarpEnabled (line 418) | func (o *Register200Response) GetWarpEnabled() bool {
    method GetWarpEnabledOk (line 429) | func (o *Register200Response) GetWarpEnabledOk() (*bool, bool) {
    method SetWarpEnabled (line 437) | func (o *Register200Response) SetWarpEnabled(v bool) {
    method GetAccount (line 442) | func (o *Register200Response) GetAccount() Account {
    method GetAccountOk (line 453) | func (o *Register200Response) GetAccountOk() (*Account, bool) {
    method SetAccount (line 461) | func (o *Register200Response) SetAccount(v Account) {
    method GetConfig (line 466) | func (o *Register200Response) GetConfig() Config {
    method GetConfigOk (line 477) | func (o *Register200Response) GetConfigOk() (*Config, bool) {
    method SetConfig (line 485) | func (o *Register200Response) SetConfig(v Config) {
    method GetToken (line 490) | func (o *Register200Response) GetToken() string {
    method GetTokenOk (line 501) | func (o *Register200Response) GetTokenOk() (*string, bool) {
    method SetToken (line 509) | func (o *Register200Response) SetToken(v string) {
    method MarshalJSON (line 513) | func (o Register200Response) MarshalJSON() ([]byte, error) {
    method ToMap (line 521) | func (o Register200Response) ToMap() (map[string]interface{}, error) {
    method UnmarshalJSON (line 549) | func (o *Register200Response) UnmarshalJSON(data []byte) (err error) {
  type _Register200Response (line 44) | type _Register200Response
  function NewRegister200Response (line 50) | func NewRegister200Response(created string, enabled bool, fcmToken strin...
  function NewRegister200ResponseWithDefaults (line 76) | func NewRegister200ResponseWithDefaults() *Register200Response {
  type NullableRegister200Response (line 625) | type NullableRegister200Response struct
    method Get (line 630) | func (v NullableRegister200Response) Get() *Register200Response {
    method Set (line 634) | func (v *NullableRegister200Response) Set(val *Register200Response) {
    method IsSet (line 639) | func (v NullableRegister200Response) IsSet() bool {
    method Unset (line 643) | func (v *NullableRegister200Response) Unset() {
    method MarshalJSON (line 652) | func (v NullableRegister200Response) MarshalJSON() ([]byte, error) {
    method UnmarshalJSON (line 656) | func (v *NullableRegister200Response) UnmarshalJSON(src []byte) error {
  function NewNullableRegister200Response (line 648) | func NewNullableRegister200Response(val *Register200Response) *NullableR...

FILE: openapi/model_register_request.go
  type RegisterRequest (line 22) | type RegisterRequest struct
    method GetFcmToken (line 60) | func (o *RegisterRequest) GetFcmToken() string {
    method GetFcmTokenOk (line 71) | func (o *RegisterRequest) GetFcmTokenOk() (*string, bool) {
    method SetFcmToken (line 79) | func (o *RegisterRequest) SetFcmToken(v string) {
    method GetInstallId (line 84) | func (o *RegisterRequest) GetInstallId() string {
    method GetInstallIdOk (line 95) | func (o *RegisterRequest) GetInstallIdOk() (*string, bool) {
    method SetInstallId (line 103) | func (o *RegisterRequest) SetInstallId(v string) {
    method GetKey (line 108) | func (o *RegisterRequest) GetKey() string {
    method GetKeyOk (line 119) | func (o *RegisterRequest) GetKeyOk() (*string, bool) {
    method SetKey (line 127) | func (o *RegisterRequest) SetKey(v string) {
    method GetLocale (line 132) | func (o *RegisterRequest) GetLocale() string {
    method GetLocaleOk (line 143) | func (o *RegisterRequest) GetLocaleOk() (*string, bool) {
    method SetLocale (line 151) | func (o *RegisterRequest) SetLocale(v string) {
    method GetModel (line 156) | func (o *RegisterRequest) GetModel() string {
    method GetModelOk (line 167) | func (o *RegisterRequest) GetModelOk() (*string, bool) {
    method SetModel (line 175) | func (o *RegisterRequest) SetModel(v string) {
    method GetTos (line 180) | func (o *RegisterRequest) GetTos() string {
    method GetTosOk (line 191) | func (o *RegisterRequest) GetTosOk() (*string, bool) {
    method SetTos (line 199) | func (o *RegisterRequest) SetTos(v string) {
    method GetType (line 204) | func (o *RegisterRequest) GetType() string {
    method GetTypeOk (line 215) | func (o *RegisterRequest) GetTypeOk() (*string, bool) {
    method SetType (line 223) | func (o *RegisterRequest) SetType(v string) {
    method MarshalJSON (line 227) | func (o RegisterRequest) MarshalJSON() ([]byte, error) {
    method ToMap (line 235) | func (o RegisterRequest) ToMap() (map[string]interface{}, error) {
    method UnmarshalJSON (line 252) | func (o *RegisterRequest) UnmarshalJSON(data []byte) (err error) {
  type _RegisterRequest (line 33) | type _RegisterRequest
  function NewRegisterRequest (line 39) | func NewRegisterRequest(fcmToken string, installId string, key string, l...
  function NewRegisterRequestWithDefaults (line 54) | func NewRegisterRequestWithDefaults() *RegisterRequest {
  type NullableRegisterRequest (line 306) | type NullableRegisterRequest struct
    method Get (line 311) | func (v NullableRegisterRequest) Get() *RegisterRequest {
    method Set (line 315) | func (v *NullableRegisterRequest) Set(val *RegisterRequest) {
    method IsSet (line 320) | func (v NullableRegisterRequest) IsSet() bool {
    method Unset (line 324) | func (v *NullableRegisterRequest) Unset() {
    method MarshalJSON (line 333) | func (v NullableRegisterRequest) MarshalJSON() ([]byte, error) {
    method UnmarshalJSON (line 337) | func (v *NullableRegisterRequest) UnmarshalJSON(src []byte) error {
  function NewNullableRegisterRequest (line 329) | func NewNullableRegisterRequest(val *RegisterRequest) *NullableRegisterR...

FILE: openapi/model_reset_account_license_200_response.go
  type ResetAccountLicense200Response (line 22) | type ResetAccountLicense200Response struct
    method GetLicense (line 48) | func (o *ResetAccountLicense200Response) GetLicense() string {
    method GetLicenseOk (line 59) | func (o *ResetAccountLicense200Response) GetLicenseOk() (*string, bool) {
    method SetLicense (line 67) | func (o *ResetAccountLicense200Response) SetLicense(v string) {
    method MarshalJSON (line 71) | func (o ResetAccountLicense200Response) MarshalJSON() ([]byte, error) {
    method ToMap (line 79) | func (o ResetAccountLicense200Response) ToMap() (map[string]interface{...
    method UnmarshalJSON (line 90) | func (o *ResetAccountLicense200Response) UnmarshalJSON(data []byte) (e...
  type _ResetAccountLicense200Response (line 27) | type _ResetAccountLicense200Response
  function NewResetAccountLicense200Response (line 33) | func NewResetAccountLicense200Response(license string) *ResetAccountLice...
  function NewResetAccountLicense200ResponseWithDefaults (line 42) | func NewResetAccountLicense200ResponseWithDefaults() *ResetAccountLicens...
  type NullableResetAccountLicense200Response (line 132) | type NullableResetAccountLicense200Response struct
    method Get (line 137) | func (v NullableResetAccountLicense200Response) Get() *ResetAccountLic...
    method Set (line 141) | func (v *NullableResetAccountLicense200Response) Set(val *ResetAccount...
    method IsSet (line 146) | func (v NullableResetAccountLicense200Response) IsSet() bool {
    method Unset (line 150) | func (v *NullableResetAccountLicense200Response) Unset() {
    method MarshalJSON (line 159) | func (v NullableResetAccountLicense200Response) MarshalJSON() ([]byte,...
    method UnmarshalJSON (line 163) | func (v *NullableResetAccountLicense200Response) UnmarshalJSON(src []b...
  function NewNullableResetAccountLicense200Response (line 155) | func NewNullableResetAccountLicense200Response(val *ResetAccountLicense2...

FILE: openapi/model_source_device.go
  type SourceDevice (line 22) | type SourceDevice struct
    method GetCreated (line 76) | func (o *SourceDevice) GetCreated() string {
    method GetCreatedOk (line 87) | func (o *SourceDevice) GetCreatedOk() (*string, bool) {
    method SetCreated (line 95) | func (o *SourceDevice) SetCreated(v string) {
    method GetEnabled (line 100) | func (o *SourceDevice) GetEnabled() bool {
    method GetEnabledOk (line 111) | func (o *SourceDevice) GetEnabledOk() (*bool, bool) {
    method SetEnabled (line 119) | func (o *SourceDevice) SetEnabled(v bool) {
    method GetFcmToken (line 124) | func (o *SourceDevice) GetFcmToken() string {
    method GetFcmTokenOk (line 135) | func (o *SourceDevice) GetFcmTokenOk() (*string, bool) {
    method SetFcmToken (line 143) | func (o *SourceDevice) SetFcmToken(v string) {
    method GetId (line 148) | func (o *SourceDevice) GetId() string {
    method GetIdOk (line 159) | func (o *SourceDevice) GetIdOk() (*string, bool) {
    method SetId (line 167) | func (o *SourceDevice) SetId(v string) {
    method GetInstallId (line 172) | func (o *SourceDevice) GetInstallId() string {
    method GetInstallIdOk (line 183) | func (o *SourceDevice) GetInstallIdOk() (*string, bool) {
    method SetInstallId (line 191) | func (o *SourceDevice) SetInstallId(v string) {
    method GetKey (line 196) | func (o *SourceDevice) GetKey() string {
    method GetKeyOk (line 207) | func (o *SourceDevice) GetKeyOk() (*string, bool) {
    method SetKey (line 215) | func (o *SourceDevice) SetKey(v string) {
    method GetLocale (line 220) | func (o *SourceDevice) GetLocale() string {
    method GetLocaleOk (line 231) | func (o *SourceDevice) GetLocaleOk() (*string, bool) {
    method SetLocale (line 239) | func (o *SourceDevice) SetLocale(v string) {
    method GetModel (line 244) | func (o *SourceDevice) GetModel() string {
    method GetModelOk (line 255) | func (o *SourceDevice) GetModelOk() (*string, bool) {
    method SetModel (line 263) | func (o *SourceDevice) SetModel(v string) {
    method GetName (line 268) | func (o *SourceDevice) GetName() string {
    method GetNameOk (line 279) | func (o *SourceDevice) GetNameOk() (*string, bool) {
    method SetName (line 287) | func (o *SourceDevice) SetName(v string) {
    method GetPlace (line 292) | func (o *SourceDevice) GetPlace() float32 {
    method GetPlaceOk (line 303) | func (o *SourceDevice) GetPlaceOk() (*float32, bool) {
    method SetPlace (line 311) | func (o *SourceDevice) SetPlace(v float32) {
    method GetTos (line 316) | func (o *SourceDevice) GetTos() string {
    method GetTosOk (line 327) | func (o *SourceDevice) GetTosOk() (*string, bool) {
    method SetTos (line 335) | func (o *SourceDevice) SetTos(v string) {
    method GetType (line 340) | func (o *SourceDevice) GetType() string {
    method GetTypeOk (line 351) | func (o *SourceDevice) GetTypeOk() (*string, bool) {
    method SetType (line 359) | func (o *SourceDevice) SetType(v string) {
    method GetUpdated (line 364) | func (o *SourceDevice) GetUpdated() string {
    method GetUpdatedOk (line 375) | func (o *SourceDevice) GetUpdatedOk() (*string, bool) {
    method SetUpdated (line 383) | func (o *SourceDevice) SetUpdated(v string) {
    method GetWaitlistEnabled (line 388) | func (o *SourceDevice) GetWaitlistEnabled() bool {
    method GetWaitlistEnabledOk (line 399) | func (o *SourceDevice) GetWaitlistEnabledOk() (*bool, bool) {
    method SetWaitlistEnabled (line 407) | func (o *SourceDevice) SetWaitlistEnabled(v bool) {
    method GetWarpEnabled (line 412) | func (o *SourceDevice) GetWarpEnabled() bool {
    method GetWarpEnabledOk (line 423) | func (o *SourceDevice) GetWarpEnabledOk() (*bool, bool) {
    method SetWarpEnabled (line 431) | func (o *SourceDevice) SetWarpEnabled(v bool) {
    method MarshalJSON (line 435) | func (o SourceDevice) MarshalJSON() ([]byte, error) {
    method ToMap (line 443) | func (o SourceDevice) ToMap() (map[string]interface{}, error) {
    method UnmarshalJSON (line 468) | func (o *SourceDevice) UnmarshalJSON(data []byte) (err error) {
  type _SourceDevice (line 41) | type _SourceDevice
  function NewSourceDevice (line 47) | func NewSourceDevice(created string, enabled bool, fcmToken string, id s...
  function NewSourceDeviceWithDefaults (line 70) | func NewSourceDeviceWithDefaults() *SourceDevice {
  type NullableSourceDevice (line 538) | type NullableSourceDevice struct
    method Get (line 543) | func (v NullableSourceDevice) Get() *SourceDevice {
    method Set (line 547) | func (v *NullableSourceDevice) Set(val *SourceDevice) {
    method IsSet (line 552) | func (v NullableSourceDevice) IsSet() bool {
    method Unset (line 556) | func (v *NullableSourceDevice) Unset() {
    method MarshalJSON (line 565) | func (v NullableSourceDevice) MarshalJSON() ([]byte, error) {
    method UnmarshalJSON (line 569) | func (v *NullableSourceDevice) UnmarshalJSON(src []byte) error {
  function NewNullableSourceDevice (line 561) | func NewNullableSourceDevice(val *SourceDevice) *NullableSourceDevice {

FILE: openapi/model_update_account_200_response.go
  type UpdateAccount200Response (line 22) | type UpdateAccount200Response struct
    method GetCreated (line 64) | func (o *UpdateAccount200Response) GetCreated() string {
    method GetCreatedOk (line 75) | func (o *UpdateAccount200Response) GetCreatedOk() (*string, bool) {
    method SetCreated (line 83) | func (o *UpdateAccount200Response) SetCreated(v string) {
    method GetId (line 88) | func (o *UpdateAccount200Response) GetId() string {
    method GetIdOk (line 99) | func (o *UpdateAccount200Response) GetIdOk() (*string, bool) {
    method SetId (line 107) | func (o *UpdateAccount200Response) SetId(v string) {
    method GetPremiumData (line 112) | func (o *UpdateAccount200Response) GetPremiumData() float32 {
    method GetPremiumDataOk (line 123) | func (o *UpdateAccount200Response) GetPremiumDataOk() (*float32, bool) {
    method SetPremiumData (line 131) | func (o *UpdateAccount200Response) SetPremiumData(v float32) {
    method GetQuota (line 136) | func (o *UpdateAccount200Response) GetQuota() float32 {
    method GetQuotaOk (line 147) | func (o *UpdateAccount200Response) GetQuotaOk() (*float32, bool) {
    method SetQuota (line 155) | func (o *UpdateAccount200Response) SetQuota(v float32) {
    method GetReferralCount (line 160) | func (o *UpdateAccount200Response) GetReferralCount() float32 {
    method GetReferralCountOk (line 171) | func (o *UpdateAccount200Response) GetReferralCountOk() (*float32, boo...
    method SetReferralCount (line 179) | func (o *UpdateAccount200Response) SetReferralCount(v float32) {
    method GetReferralRenewalCountdown (line 184) | func (o *UpdateAccount200Response) GetReferralRenewalCountdown() float...
    method GetReferralRenewalCountdownOk (line 195) | func (o *UpdateAccount200Response) GetReferralRenewalCountdownOk() (*f...
    method SetReferralRenewalCountdown (line 203) | func (o *UpdateAccount200Response) SetReferralRenewalCountdown(v float...
    method GetRole (line 208) | func (o *UpdateAccount200Response) GetRole() string {
    method GetRoleOk (line 219) | func (o *UpdateAccount200Response) GetRoleOk() (*string, bool) {
    method SetRole (line 227) | func (o *UpdateAccount200Response) SetRole(v string) {
    method GetUpdated (line 232) | func (o *UpdateAccount200Response) GetUpdated() string {
    method GetUpdatedOk (line 243) | func (o *UpdateAccount200Response) GetUpdatedOk() (*string, bool) {
    method SetUpdated (line 251) | func (o *UpdateAccount200Response) SetUpdated(v string) {
    method GetWarpPlus (line 256) | func (o *UpdateAccount200Response) GetWarpPlus() bool {
    method GetWarpPlusOk (line 267) | func (o *UpdateAccount200Response) GetWarpPlusOk() (*bool, bool) {
    method SetWarpPlus (line 275) | func (o *UpdateAccount200Response) SetWarpPlus(v bool) {
    method MarshalJSON (line 279) | func (o UpdateAccount200Response) MarshalJSON() ([]byte, error) {
    method ToMap (line 287) | func (o UpdateAccount200Response) ToMap() (map[string]interface{}, err...
    method UnmarshalJSON (line 306) | func (o *UpdateAccount200Response) UnmarshalJSON(data []byte) (err err...
  type _UpdateAccount200Response (line 35) | type _UpdateAccount200Response
  function NewUpdateAccount200Response (line 41) | func NewUpdateAccount200Response(created string, id string, premiumData ...
  function NewUpdateAccount200ResponseWithDefaults (line 58) | func NewUpdateAccount200ResponseWithDefaults() *UpdateAccount200Response {
  type NullableUpdateAccount200Response (line 364) | type NullableUpdateAccount200Response struct
    method Get (line 369) | func (v NullableUpdateAccount200Response) Get() *UpdateAccount200Respo...
    method Set (line 373) | func (v *NullableUpdateAccount200Response) Set(val *UpdateAccount200Re...
    method IsSet (line 378) | func (v NullableUpdateAccount200Response) IsSet() bool {
    method Unset (line 382) | func (v *NullableUpdateAccount200Response) Unset() {
    method MarshalJSON (line 391) | func (v NullableUpdateAccount200Response) MarshalJSON() ([]byte, error) {
    method UnmarshalJSON (line 395) | func (v *NullableUpdateAccount200Response) UnmarshalJSON(src []byte) e...
  function NewNullableUpdateAccount200Response (line 387) | func NewNullableUpdateAccount200Response(val *UpdateAccount200Response) ...

FILE: openapi/model_update_account_request.go
  type UpdateAccountRequest (line 22) | type UpdateAccountRequest struct
    method GetLicense (line 48) | func (o *UpdateAccountRequest) GetLicense() string {
    method GetLicenseOk (line 59) | func (o *UpdateAccountRequest) GetLicenseOk() (*string, bool) {
    method SetLicense (line 67) | func (o *UpdateAccountRequest) SetLicense(v string) {
    method MarshalJSON (line 71) | func (o UpdateAccountRequest) MarshalJSON() ([]byte, error) {
    method ToMap (line 79) | func (o UpdateAccountRequest) ToMap() (map[string]interface{}, error) {
    method UnmarshalJSON (line 90) | func (o *UpdateAccountRequest) UnmarshalJSON(data []byte) (err error) {
  type _UpdateAccountRequest (line 27) | type _UpdateAccountRequest
  function NewUpdateAccountRequest (line 33) | func NewUpdateAccountRequest(license string) *UpdateAccountRequest {
  function NewUpdateAccountRequestWithDefaults (line 42) | func NewUpdateAccountRequestWithDefaults() *UpdateAccountRequest {
  type NullableUpdateAccountRequest (line 132) | type NullableUpdateAccountRequest struct
    method Get (line 137) | func (v NullableUpdateAccountRequest) Get() *UpdateAccountRequest {
    method Set (line 141) | func (v *NullableUpdateAccountRequest) Set(val *UpdateAccountRequest) {
    method IsSet (line 146) | func (v NullableUpdateAccountRequest) IsSet() bool {
    method Unset (line 150) | func (v *NullableUpdateAccountRequest) Unset() {
    method MarshalJSON (line 159) | func (v NullableUpdateAccountRequest) MarshalJSON() ([]byte, error) {
    method UnmarshalJSON (line 163) | func (v *NullableUpdateAccountRequest) UnmarshalJSON(src []byte) error {
  function NewNullableUpdateAccountRequest (line 155) | func NewNullableUpdateAccountRequest(val *UpdateAccountRequest) *Nullabl...

FILE: openapi/model_update_bound_device_request.go
  type UpdateBoundDeviceRequest (line 21) | type UpdateBoundDeviceRequest struct
    method GetActive (line 47) | func (o *UpdateBoundDeviceRequest) GetActive() bool {
    method GetActiveOk (line 57) | func (o *UpdateBoundDeviceRequest) GetActiveOk() (*bool, bool) {
    method HasActive (line 65) | func (o *UpdateBoundDeviceRequest) HasActive() bool {
    method SetActive (line 74) | func (o *UpdateBoundDeviceRequest) SetActive(v bool) {
    method GetName (line 79) | func (o *UpdateBoundDeviceRequest) GetName() string {
    method GetNameOk (line 89) | func (o *UpdateBoundDeviceRequest) GetNameOk() (*string, bool) {
    method HasName (line 97) | func (o *UpdateBoundDeviceRequest) HasName() bool {
    method SetName (line 106) | func (o *UpdateBoundDeviceRequest) SetName(v string) {
    method MarshalJSON (line 110) | func (o UpdateBoundDeviceRequest) MarshalJSON() ([]byte, error) {
    method ToMap (line 118) | func (o UpdateBoundDeviceRequest) ToMap() (map[string]interface{}, err...
    method UnmarshalJSON (line 134) | func (o *UpdateBoundDeviceRequest) UnmarshalJSON(data []byte) (err err...
  type _UpdateBoundDeviceRequest (line 27) | type _UpdateBoundDeviceRequest
  function NewUpdateBoundDeviceRequest (line 33) | func NewUpdateBoundDeviceRequest() *UpdateBoundDeviceRequest {
  function NewUpdateBoundDeviceRequestWithDefaults (line 41) | func NewUpdateBoundDeviceRequestWithDefaults() *UpdateBoundDeviceRequest {
  type NullableUpdateBoundDeviceRequest (line 156) | type NullableUpdateBoundDeviceRequest struct
    method Get (line 161) | func (v NullableUpdateBoundDeviceRequest) Get() *UpdateBoundDeviceRequ...
    method Set (line 165) | func (v *NullableUpdateBoundDeviceRequest) Set(val *UpdateBoundDeviceR...
    method IsSet (line 170) | func (v NullableUpdateBoundDeviceRequest) IsSet() bool {
    method Unset (line 174) | func (v *NullableUpdateBoundDeviceRequest) Unset() {
    method MarshalJSON (line 183) | func (v NullableUpdateBoundDeviceRequest) MarshalJSON() ([]byte, error) {
    method UnmarshalJSON (line 187) | func (v *NullableUpdateBoundDeviceRequest) UnmarshalJSON(src []byte) e...
  function NewNullableUpdateBoundDeviceRequest (line 179) | func NewNullableUpdateBoundDeviceRequest(val *UpdateBoundDeviceRequest) ...

FILE: openapi/model_update_source_device_200_response.go
  type UpdateSourceDevice200Response (line 22) | type UpdateSourceDevice200Response struct
    method GetCreated (line 80) | func (o *UpdateSourceDevice200Response) GetCreated() string {
    method GetCreatedOk (line 91) | func (o *UpdateSourceDevice200Response) GetCreatedOk() (*string, bool) {
    method SetCreated (line 99) | func (o *UpdateSourceDevice200Response) SetCreated(v string) {
    method GetEnabled (line 104) | func (o *UpdateSourceDevice200Response) GetEnabled() bool {
    method GetEnabledOk (line 115) | func (o *UpdateSourceDevice200Response) GetEnabledOk() (*bool, bool) {
    method SetEnabled (line 123) | func (o *UpdateSourceDevice200Response) SetEnabled(v bool) {
    method GetFcmToken (line 128) | func (o *UpdateSourceDevice200Response) GetFcmToken() string {
    method GetFcmTokenOk (line 139) | func (o *UpdateSourceDevice200Response) GetFcmTokenOk() (*string, bool) {
    method SetFcmToken (line 147) | func (o *UpdateSourceDevice200Response) SetFcmToken(v string) {
    method GetId (line 152) | func (o *UpdateSourceDevice200Response) GetId() string {
    method GetIdOk (line 163) | func (o *UpdateSourceDevice200Response) GetIdOk() (*string, bool) {
    method SetId (line 171) | func (o *UpdateSourceDevice200Response) SetId(v string) {
    method GetInstallId (line 176) | func (o *UpdateSourceDevice200Response) GetInstallId() string {
    method GetInstallIdOk (line 187) | func (o *UpdateSourceDevice200Response) GetInstallIdOk() (*string, boo...
    method SetInstallId (line 195) | func (o *UpdateSourceDevice200Response) SetInstallId(v string) {
    method GetKey (line 200) | func (o *UpdateSourceDevice200Response) GetKey() string {
    method GetKeyOk (line 211) | func (o *UpdateSourceDevice200Response) GetKeyOk() (*string, bool) {
    method SetKey (line 219) | func (o *UpdateSourceDevice200Response) SetKey(v string) {
    method GetLocale (line 224) | func (o *UpdateSourceDevice200Response) GetLocale() string {
    method GetLocaleOk (line 235) | func (o *UpdateSourceDevice200Response) GetLocaleOk() (*string, bool) {
    method SetLocale (line 243) | func (o *UpdateSourceDevice200Response) SetLocale(v string) {
    method GetModel (line 248) | func (o *UpdateSourceDevice200Response) GetModel() string {
    method GetModelOk (line 259) | func (o *UpdateSourceDevice200Response) GetModelOk() (*string, bool) {
    method SetModel (line 267) | func (o *UpdateSourceDevice200Response) SetModel(v string) {
    method GetName (line 272) | func (o *UpdateSourceDevice200Response) GetName() string {
    method GetNameOk (line 283) | func (o *UpdateSourceDevice200Response) GetNameOk() (*string, bool) {
    method SetName (line 291) | func (o *UpdateSourceDevice200Response) SetName(v string) {
    method GetPlace (line 296) | func (o *UpdateSourceDevice200Response) GetPlace() float32 {
    method GetPlaceOk (line 307) | func (o *UpdateSourceDevice200Response) GetPlaceOk() (*float32, bool) {
    method SetPlace (line 315) | func (o *UpdateSourceDevice200Response) SetPlace(v float32) {
    method GetTos (line 320) | func (o *UpdateSourceDevice200Response) GetTos() string {
    method GetTosOk (line 331) | func (o *UpdateSourceDevice200Response) GetTosOk() (*string, bool) {
    method SetTos (line 339) | func (o *UpdateSourceDevice200Response) SetTos(v string) {
    method GetType (line 344) | func (o *UpdateSourceDevice200Response) GetType() string {
    method GetTypeOk (line 355) | func (o *UpdateSourceDevice200Response) GetTypeOk() (*string, bool) {
    method SetType (line 363) | func (o *UpdateSourceDevice200Response) SetType(v string) {
    method GetUpdated (line 368) | func (o *UpdateSourceDevice200Response) GetUpdated() string {
    method GetUpdatedOk (line 379) | func (o *UpdateSourceDevice200Response) GetUpdatedOk() (*string, bool) {
    method SetUpdated (line 387) | func (o *UpdateSourceDevice200Response) SetUpdated(v string) {
    method GetWaitlistEnabled (line 392) | func (o *UpdateSourceDevice200Response) GetWaitlistEnabled() bool {
    method GetWaitlistEnabledOk (line 403) | func (o *UpdateSourceDevice200Response) GetWaitlistEnabledOk() (*bool,...
    method SetWaitlistEnabled (line 411) | func (o *UpdateSourceDevice200Response) SetWaitlistEnabled(v bool) {
    method GetWarpEnabled (line 416) | func (o *UpdateSourceDevice200Response) GetWarpEnabled() bool {
    method GetWarpEnabledOk (line 427) | func (o *UpdateSourceDevice200Response) GetWarpEnabledOk() (*bool, boo...
    method SetWarpEnabled (line 435) | func (o *UpdateSourceDevice200Response) SetWarpEnabled(v bool) {
    method GetAccount (line 440) | func (o *UpdateSourceDevice200Response) GetAccount() Account {
    method GetAccountOk (line 451) | func (o *UpdateSourceDevice200Response) GetAccountOk() (*Account, bool) {
    method SetAccount (line 459) | func (o *UpdateSourceDevice200Response) SetAccount(v Account) {
    method GetConfig (line 464) | func (o *UpdateSourceDevice200Response) GetConfig() Config {
    method GetConfigOk (line 475) | func (o *UpdateSourceDevice200Response) GetConfigOk() (*Config, bool) {
    method SetConfig (line 483) | func (o *UpdateSourceDevice200Response) SetConfig(v Config) {
    method MarshalJSON (line 487) | func (o UpdateSourceDevice200Response) MarshalJSON() ([]byte, error) {
    method ToMap (line 495) | func (o UpdateSourceDevice200Response) ToMap() (map[string]interface{}...
    method UnmarshalJSON (line 522) | func (o *UpdateSourceDevice200Response) UnmarshalJSON(data []byte) (er...
  type _UpdateSourceDevice200Response (line 43) | type _UpdateSourceDevice200Response
  function NewUpdateSourceDevice200Response (line 49) | func NewUpdateSourceDevice200Response(created string, enabled bool, fcmT...
  function NewUpdateSourceDevice200ResponseWithDefaults (line 74) | func NewUpdateSourceDevice200ResponseWithDefaults() *UpdateSourceDevice2...
  type NullableUpdateSourceDevice200Response (line 596) | type NullableUpdateSourceDevice200Response struct
    method Get (line 601) | func (v NullableUpdateSourceDevice200Response) Get() *UpdateSourceDevi...
    method Set (line 605) | func (v *NullableUpdateSourceDevice200Response) Set(val *UpdateSourceD...
    method IsSet (line 610) | func (v NullableUpdateSourceDevice200Response) IsSet() bool {
    method Unset (line 614) | func (v *NullableUpdateSourceDevice200Response) Unset() {
    method MarshalJSON (line 623) | func (v NullableUpdateSourceDevice200Response) MarshalJSON() ([]byte, ...
    method UnmarshalJSON (line 627) | func (v *NullableUpdateSourceDevice200Response) UnmarshalJSON(src []by...
  function NewNullableUpdateSourceDevice200Response (line 619) | func NewNullableUpdateSourceDevice200Response(val *UpdateSourceDevice200...

FILE: openapi/model_update_source_device_request.go
  type UpdateSourceDeviceRequest (line 22) | type UpdateSourceDeviceRequest struct
    method GetKey (line 48) | func (o *UpdateSourceDeviceRequest) GetKey() string {
    method GetKeyOk (line 59) | func (o *UpdateSourceDeviceRequest) GetKeyOk() (*string, bool) {
    method SetKey (line 67) | func (o *UpdateSourceDeviceRequest) SetKey(v string) {
    method MarshalJSON (line 71) | func (o UpdateSourceDeviceRequest) MarshalJSON() ([]byte, error) {
    method ToMap (line 79) | func (o UpdateSourceDeviceRequest) ToMap() (map[string]interface{}, er...
    method UnmarshalJSON (line 90) | func (o *UpdateSourceDeviceRequest) UnmarshalJSON(data []byte) (err er...
  type _UpdateSourceDeviceRequest (line 27) | type _UpdateSourceDeviceRequest
  function NewUpdateSourceDeviceRequest (line 33) | func NewUpdateSourceDeviceRequest(key string) *UpdateSourceDeviceRequest {
  function NewUpdateSourceDeviceRequestWithDefaults (line 42) | func NewUpdateSourceDeviceRequestWithDefaults() *UpdateSourceDeviceReque...
  type NullableUpdateSourceDeviceRequest (line 132) | type NullableUpdateSourceDeviceRequest struct
    method Get (line 137) | func (v NullableUpdateSourceDeviceRequest) Get() *UpdateSourceDeviceRe...
    method Set (line 141) | func (v *NullableUpdateSourceDeviceRequest) Set(val *UpdateSourceDevic...
    method IsSet (line 146) | func (v NullableUpdateSourceDeviceRequest) IsSet() bool {
    method Unset (line 150) | func (v *NullableUpdateSourceDeviceRequest) Unset() {
    method MarshalJSON (line 159) | func (v NullableUpdateSourceDeviceRequest) MarshalJSON() ([]byte, erro...
    method UnmarshalJSON (line 163) | func (v *NullableUpdateSourceDeviceRequest) UnmarshalJSON(src []byte) ...
  function NewNullableUpdateSourceDeviceRequest (line 155) | func NewNullableUpdateSourceDeviceRequest(val *UpdateSourceDeviceRequest...

FILE: openapi/response.go
  type APIResponse (line 18) | type APIResponse struct
  function NewAPIResponse (line 36) | func NewAPIResponse(r *http.Response) *APIResponse {
  function NewAPIResponseWithError (line 43) | func NewAPIResponseWithError(errorMessage string) *APIResponse {

FILE: openapi/test/api_default_test.go
  function Test_openapi_DefaultAPIService (line 20) | func Test_openapi_DefaultAPIService(t *testing.T) {

FILE: openapi/utils.go
  function PtrBool (line 22) | func PtrBool(v bool) *bool { return &v }
  function PtrInt (line 25) | func PtrInt(v int) *int { return &v }
  function PtrInt32 (line 28) | func PtrInt32(v int32) *int32 { return &v }
  function PtrInt64 (line 31) | func PtrInt64(v int64) *int64 { return &v }
  function PtrFloat32 (line 34) | func PtrFloat32(v float32) *float32 { return &v }
  function PtrFloat64 (line 37) | func PtrFloat64(v float64) *float64 { return &v }
  function PtrString (line 40) | func PtrString(v string) *string { return &v }
  function PtrTime (line 43) | func PtrTime(v time.Time) *time.Time { return &v }
  type NullableBool (line 45) | type NullableBool struct
    method Get (line 50) | func (v NullableBool) Get() *bool {
    method Set (line 54) | func (v *NullableBool) Set(val *bool) {
    method IsSet (line 59) | func (v NullableBool) IsSet() bool {
    method Unset (line 63) | func (v *NullableBool) Unset() {
    method MarshalJSON (line 72) | func (v NullableBool) MarshalJSON() ([]byte, error) {
    method UnmarshalJSON (line 76) | func (v *NullableBool) UnmarshalJSON(src []byte) error {
  function NewNullableBool (line 68) | func NewNullableBool(val *bool) *NullableBool {
  type NullableInt (line 81) | type NullableInt struct
    method Get (line 86) | func (v NullableInt) Get() *int {
    method Set (line 90) | func (v *NullableInt) Set(val *int) {
    method IsSet (line 95) | func (v NullableInt) IsSet() bool {
    method Unset (line 99) | func (v *NullableInt) Unset() {
    method MarshalJSON (line 108) | func (v NullableInt) MarshalJSON() ([]byte, error) {
    method UnmarshalJSON (line 112) | func (v *NullableInt) UnmarshalJSON(src []byte) error {
  function NewNullableInt (line 104) | func NewNullableInt(val *int) *NullableInt {
  type NullableInt32 (line 117) | type NullableInt32 struct
    method Get (line 122) | func (v NullableInt32) Get() *int32 {
    method Set (line 126) | func (v *NullableInt32) Set(val *int32) {
    method IsSet (line 131) | func (v NullableInt32) IsSet() bool {
    method Unset (line 135) | func (v *NullableInt32) Unset() {
    method MarshalJSON (line 144) | func (v NullableInt32) MarshalJSON() ([]byte, error) {
    method UnmarshalJSON (line 148) | func (v *NullableInt32) UnmarshalJSON(src []byte) error {
  function NewNullableInt32 (line 140) | func NewNullableInt32(val *int32) *NullableInt32 {
  type NullableInt64 (line 153) | type NullableInt64 struct
    method Get (line 158) | func (v NullableInt64) Get() *int64 {
    method Set (line 162) | func (v *NullableInt64) Set(val *int64) {
    method IsSet (line 167) | func (v NullableInt64) IsSet() bool {
    method Unset (line 171) | func (v *NullableInt64) Unset() {
    method MarshalJSON (line 180) | func (v NullableInt64) MarshalJSON() ([]byte, error) {
    method UnmarshalJSON (line 184) | func (v *NullableInt64) UnmarshalJSON(src []byte) error {
  function NewNullableInt64 (line 176) | func NewNullableInt64(val *int64) *NullableInt64 {
  type NullableFloat32 (line 189) | type NullableFloat32 struct
    method Get (line 194) | func (v NullableFloat32) Get() *float32 {
    method Set (line 198) | func (v *NullableFloat32) Set(val *float32) {
    method IsSet (line 203) | func (v NullableFloat32) IsSet() bool {
    method Unset (line 207) | func (v *NullableFloat32) Unset() {
    method MarshalJSON (line 216) | func (v NullableFloat32) MarshalJSON() ([]byte, error) {
    method UnmarshalJSON (line 220) | func (v *NullableFloat32) UnmarshalJSON(src []byte) error {
  function NewNullableFloat32 (line 212) | func NewNullableFloat32(val *float32) *NullableFloat32 {
  type NullableFloat64 (line 225) | type NullableFloat64 struct
    method Get (line 230) | func (v NullableFloat64) Get() *float64 {
    method Set (line 234) | func (v *NullableFloat64) Set(val *float64) {
    method IsSet (line 239) | func (v NullableFloat64) IsSet() bool {
    method Unset (line 243) | func (v *NullableFloat64) Unset() {
    method MarshalJSON (line 252) | func (v NullableFloat64) MarshalJSON() ([]byte, error) {
    method UnmarshalJSON (line 256) | func (v *NullableFloat64) UnmarshalJSON(src []byte) error {
  function NewNullableFloat64 (line 248) | func NewNullableFloat64(val *float64) *NullableFloat64 {
  type NullableString (line 261) | type NullableString struct
    method Get (line 266) | func (v NullableString) Get() *string {
    method Set (line 270) | func (v *NullableString) Set(val *string) {
    method IsSet (line 275) | func (v NullableString) IsSet() bool {
    method Unset (line 279) | func (v *NullableString) Unset() {
    method MarshalJSON (line 288) | func (v NullableString) MarshalJSON() ([]byte, error) {
    method UnmarshalJSON (line 292) | func (v *NullableString) UnmarshalJSON(src []byte) error {
  function NewNullableString (line 284) | func NewNullableString(val *string) *NullableString {
  type NullableTime (line 297) | type NullableTime struct
    method Get (line 302) | func (v NullableTime) Get() *time.Time {
    method Set (line 306) | func (v *NullableTime) Set(val *time.Time) {
    method IsSet (line 311) | func (v NullableTime) IsSet() bool {
    method Unset (line 315) | func (v *NullableTime) Unset() {
    method MarshalJSON (line 324) | func (v NullableTime) MarshalJSON() ([]byte, error) {
    method UnmarshalJSON (line 328) | func (v *NullableTime) UnmarshalJSON(src []byte) error {
  function NewNullableTime (line 320) | func NewNullableTime(val *time.Time) *NullableTime {
  function IsNil (line 334) | func IsNil(i interface{}) bool {
  type MappedNullable (line 347) | type MappedNullable interface
  function newStrictDecoder (line 352) | func newStrictDecoder(data []byte) *json.Decoder {
  function reportError (line 359) | func reportError(format string, a ...interface{}) error {

FILE: util/util.go
  function RandomHexString (line 9) | func RandomHexString(count int) string {
  function GetTimestamp (line 17) | func GetTimestamp() string {
  function getTimestamp (line 21) | func getTimestamp(t time.Time) string {
  function IsHttp500Error (line 26) | func IsHttp500Error(err error) bool {

FILE: util/util_test.go
  function TestGetTimestamp (line 8) | func TestGetTimestamp(t *testing.T) {

FILE: wireguard/keys.go
  constant KeyLength (line 18) | KeyLength = 32
  type Key (line 20) | type Key
    method String (line 22) | func (k *Key) String() string {
    method IsZero (line 26) | func (k *Key) IsZero() bool {
    method Public (line 31) | func (k *Key) Public() *Key {
  function NewPresharedKey (line 37) | func NewPresharedKey() (*Key, error) {
  function NewPrivateKey (line 46) | func NewPrivateKey() (*Key, error) {
  function NewKey (line 56) | func NewKey(base64Key string) (*Key, error) {

FILE: wireguard/keys_test.go
  function TestNewKey (line 5) | func TestNewKey(t *testing.T) {

FILE: wireguard/profile.go
  type Profile (line 22) | type Profile struct
    method Save (line 54) | func (p *Profile) Save(profileFile string) error {
  type ProfileData (line 26) | type ProfileData struct
  function NewProfile (line 34) | func NewProfile(data *ProfileData) (*Profile, error) {
  function generateProfile (line 42) | func generateProfile(data *ProfileData) (string, error) {

FILE: wireguard/profile_test.go
  function TestGenerateProfile (line 5) | func TestGenerateProfile(t *testing.T) {
Condensed preview — 97 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (520K chars).
[
  {
    "path": ".github/dependabot.yml",
    "chars": 584,
    "preview": "version: 2\nupdates:\n  - package-ecosystem: \"gomod\"\n    directory: \"/\"\n    schedule:\n      interval: \"daily\"\n    commit-m"
  },
  {
    "path": ".github/workflows/release.yml",
    "chars": 2026,
    "preview": "name: Release\n\non:\n  push:\n    tags:\n      - \"*\"\n\njobs:\n  docker:\n    runs-on: ubuntu-24.04\n\n    steps:\n      - name: Ch"
  },
  {
    "path": ".github/workflows/test.yml",
    "chars": 1334,
    "preview": "name: Test\n\non:\n  push:\n    branches: [master, develop]\n  pull_request:\n    branches: [master, develop]\n\njobs:\n  build:\n"
  },
  {
    "path": ".gitignore",
    "chars": 2651,
    "preview": "/.optic/captures/\n/.optic/generated/\n/*.toml\n/*.conf\n/*.pcapng\n/wgcf\n.DS_Store\n\n# Created by https://www.gitignore.io/ap"
  },
  {
    "path": ".goreleaser.yml",
    "chars": 455,
    "preview": "before:\nbuilds:\n  - env:\n      - CGO_ENABLED=0\n    ldflags:\n      - -s -w\n    flags:\n      - -trimpath\n    goos:\n      -"
  },
  {
    "path": ".releaserc.json",
    "chars": 356,
    "preview": "{\n  \"branches\": [\n    {\n      \"name\": \"master\"\n    },\n    {\n      \"name\": \"develop\",\n      \"prerelease\": true\n    }\n  ],"
  },
  {
    "path": "Dockerfile",
    "chars": 262,
    "preview": "FROM golang:1.25.5-alpine AS builder\n\nWORKDIR /src\nCOPY . .\n\nRUN apk add --no-cache git && \\\n    go mod download && \\\n  "
  },
  {
    "path": "LICENSE",
    "chars": 1062,
    "preview": "MIT License\n\nCopyright (c) 2020 ViRb3\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof t"
  },
  {
    "path": "README.md",
    "chars": 4241,
    "preview": "# wgcf\n> wgcf is an unofficial, cross-platform CLI for [Cloudflare Warp](https://1.1.1.1/)\n\n![](https://img.shields.io/d"
  },
  {
    "path": "cloudflare/api.go",
    "chars": 5070,
    "preview": "package cloudflare\n\nimport (\n\t\"crypto/tls\"\n\t\"net/http\"\n\t\"time\"\n\n\t\"github.com/ViRb3/wgcf/v2/config\"\n\t\"github.com/ViRb3/wg"
  },
  {
    "path": "cloudflare/util.go",
    "chars": 292,
    "preview": "package cloudflare\n\nimport (\n\t\"github.com/cockroachdb/errors\"\n)\n\nfunc FindDevice(devices []BoundDevice, deviceId string)"
  },
  {
    "path": "cmd/generate/generate.go",
    "chars": 1511,
    "preview": "package generate\n\nimport (\n\t\"log\"\n\n\t\"github.com/ViRb3/wgcf/v2/cloudflare\"\n\t. \"github.com/ViRb3/wgcf/v2/cmd/shared\"\n\t\"git"
  },
  {
    "path": "cmd/register/register.go",
    "chars": 2967,
    "preview": "package register\n\nimport (\n\t\"fmt\"\n\t\"log\"\n\n\t\"github.com/ViRb3/wgcf/v2/cloudflare\"\n\t. \"github.com/ViRb3/wgcf/v2/cmd/shared"
  },
  {
    "path": "cmd/root.go",
    "chars": 1724,
    "preview": "package cmd\n\nimport (\n\t\"errors\"\n\t\"log\"\n\n\t\"github.com/ViRb3/wgcf/v2/cmd/generate\"\n\t\"github.com/ViRb3/wgcf/v2/cmd/register"
  },
  {
    "path": "cmd/shared/shared.go",
    "chars": 4031,
    "preview": "package shared\n\nimport (\n\terrors2 \"errors\"\n\t\"fmt\"\n\t\"log\"\n\t\"slices\"\n\t\"strings\"\n\n\t\"github.com/ViRb3/wgcf/v2/cloudflare\"\n\t\""
  },
  {
    "path": "cmd/status/status.go",
    "chars": 831,
    "preview": "package status\n\nimport (\n\t\"github.com/ViRb3/wgcf/v2/cloudflare\"\n\t. \"github.com/ViRb3/wgcf/v2/cmd/shared\"\n\t\"github.com/co"
  },
  {
    "path": "cmd/trace/trace.go",
    "chars": 869,
    "preview": "package trace\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"net/http\"\n\t\"strings\"\n\n\t. \"github.com/ViRb3/wgcf/v2/cmd/shared\"\n\t\"github.co"
  },
  {
    "path": "cmd/update/update.go",
    "chars": 4134,
    "preview": "package update\n\nimport (\n\t\"log\"\n\t\"slices\"\n\n\t\"github.com/ViRb3/wgcf/v2/cloudflare\"\n\t. \"github.com/ViRb3/wgcf/v2/cmd/share"
  },
  {
    "path": "config/config.go",
    "chars": 246,
    "preview": "package config\n\nconst (\n\tDeviceId    = \"device_id\"\n\tAccessToken = \"access_token\"\n\tPrivateKey  = \"private_key\"\n\tLicenseKe"
  },
  {
    "path": "go.mod",
    "chars": 1539,
    "preview": "module github.com/ViRb3/wgcf/v2\n\ngo 1.24.0\n\ntoolchain go1.24.1\n\nrequire (\n\tgithub.com/ViRb3/wgcf/v2/openapi v0.0.0-00010"
  },
  {
    "path": "go.sum",
    "chars": 10645,
    "preview": "github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE=\ngithub.com/chzyer/logex v1.1.10/go.mod h"
  },
  {
    "path": "main.go",
    "chars": 301,
    "preview": "//go:generate openapi-generator generate -i openapi-spec.yml -g go -o openapi --additional-properties=disallowAdditional"
  },
  {
    "path": "openapi/.gitignore",
    "chars": 266,
    "preview": "# Compiled Object files, Static and Dynamic libs (Shared Objects)\n*.o\n*.a\n*.so\n\n# Folders\n_obj\n_test\n\n# Architecture spe"
  },
  {
    "path": "openapi/.openapi-generator/FILES",
    "chars": 1775,
    "preview": ".gitignore\n.travis.yml\nREADME.md\napi/openapi.yaml\napi_default.go\nclient.go\nconfiguration.go\ndocs/Account.md\ndocs/BoundDe"
  },
  {
    "path": "openapi/.openapi-generator/VERSION",
    "chars": 7,
    "preview": "7.14.0\n"
  },
  {
    "path": "openapi/.openapi-generator-ignore",
    "chars": 1040,
    "preview": "# OpenAPI Generator Ignore\n# Generated by openapi-generator https://github.com/openapitools/openapi-generator\n\n# Use thi"
  },
  {
    "path": "openapi/.travis.yml",
    "chars": 71,
    "preview": "language: go\n\ninstall:\n  - go get -d -v .\n\nscript:\n  - go build -v ./\n\n"
  },
  {
    "path": "openapi/README.md",
    "chars": 6098,
    "preview": "# Go API client for openapi\n\nNo description provided (generated by Openapi Generator https://github.com/openapitools/ope"
  },
  {
    "path": "openapi/api/openapi.yaml",
    "chars": 23006,
    "preview": "openapi: 3.0.1\ninfo:\n  title: Cloudflare WARP API\n  version: \"536\"\nservers:\n- url: /\npaths:\n  /{apiVersion}/client_confi"
  },
  {
    "path": "openapi/api_default.go",
    "chars": 37309,
    "preview": "/*\nCloudflare WARP API\n\nNo description provided (generated by Openapi Generator https://github.com/openapitools/openapi-"
  },
  {
    "path": "openapi/client.go",
    "chars": 16755,
    "preview": "/*\nCloudflare WARP API\n\nNo description provided (generated by Openapi Generator https://github.com/openapitools/openapi-"
  },
  {
    "path": "openapi/configuration.go",
    "chars": 6305,
    "preview": "/*\nCloudflare WARP API\n\nNo description provided (generated by Openapi Generator https://github.com/openapitools/openapi-"
  },
  {
    "path": "openapi/docs/Account.md",
    "chars": 7205,
    "preview": "# Account\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------"
  },
  {
    "path": "openapi/docs/BoundDevice.md",
    "chars": 4862,
    "preview": "# BoundDevice\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | ---------"
  },
  {
    "path": "openapi/docs/Config.md",
    "chars": 3001,
    "preview": "# Config\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n"
  },
  {
    "path": "openapi/docs/ConfigInterface.md",
    "chars": 1578,
    "preview": "# ConfigInterface\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -----"
  },
  {
    "path": "openapi/docs/ConfigServices.md",
    "chars": 1503,
    "preview": "# ConfigServices\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | ------"
  },
  {
    "path": "openapi/docs/DefaultApi.md",
    "chars": 20633,
    "preview": "# \\DefaultAPI\n\nAll URIs are relative to *http://localhost*\n\nMethod | HTTP request | Description\n------------- | --------"
  },
  {
    "path": "openapi/docs/Endpoint.md",
    "chars": 2201,
    "preview": "# Endpoint\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | ------------"
  },
  {
    "path": "openapi/docs/GetClientConfig200Response.md",
    "chars": 4167,
    "preview": "# GetClientConfig200Response\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ----------"
  },
  {
    "path": "openapi/docs/GetClientConfig200ResponseCaptivePortalInner.md",
    "chars": 2800,
    "preview": "# GetClientConfig200ResponseCaptivePortalInner\n\n## Properties\n\nName | Type | Description | Notes\n------------ | --------"
  },
  {
    "path": "openapi/docs/GetClientConfig200ResponseCaptivePortalInnerNetworksInner.md",
    "chars": 2077,
    "preview": "# GetClientConfig200ResponseCaptivePortalInnerNetworksInner\n\n## Properties\n\nName | Type | Description | Notes\n----------"
  },
  {
    "path": "openapi/docs/GetClientConfig200ResponseDenylistInner.md",
    "chars": 4204,
    "preview": "# GetClientConfig200ResponseDenylistInner\n\n## Properties\n\nName | Type | Description | Notes\n------------ | -------------"
  },
  {
    "path": "openapi/docs/GetClientConfig200ResponseDenylistInnerNetworks.md",
    "chars": 2516,
    "preview": "# GetClientConfig200ResponseDenylistInnerNetworks\n\n## Properties\n\nName | Type | Description | Notes\n------------ | -----"
  },
  {
    "path": "openapi/docs/GetSourceDevice200Response.md",
    "chars": 10311,
    "preview": "# GetSourceDevice200Response\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ----------"
  },
  {
    "path": "openapi/docs/IPv4Network.md",
    "chars": 1938,
    "preview": "# IPv4Network\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | ---------"
  },
  {
    "path": "openapi/docs/IPv6Network.md",
    "chars": 1929,
    "preview": "# IPv6Network\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | ---------"
  },
  {
    "path": "openapi/docs/NetworkAddress.md",
    "chars": 1849,
    "preview": "# NetworkAddress\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | ------"
  },
  {
    "path": "openapi/docs/Peer.md",
    "chars": 1886,
    "preview": "# Peer\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**"
  },
  {
    "path": "openapi/docs/Register200Response.md",
    "chars": 10378,
    "preview": "# Register200Response\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -"
  },
  {
    "path": "openapi/docs/RegisterRequest.md",
    "chars": 4438,
    "preview": "# RegisterRequest\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -----"
  },
  {
    "path": "openapi/docs/ResetAccountLicense200Response.md",
    "chars": 1699,
    "preview": "# ResetAccountLicense200Response\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------"
  },
  {
    "path": "openapi/docs/SourceDevice.md",
    "chars": 8409,
    "preview": "# SourceDevice\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | --------"
  },
  {
    "path": "openapi/docs/UpdateAccount200Response.md",
    "chars": 6229,
    "preview": "# UpdateAccount200Response\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------"
  },
  {
    "path": "openapi/docs/UpdateAccountRequest.md",
    "chars": 1559,
    "preview": "# UpdateAccountRequest\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | "
  },
  {
    "path": "openapi/docs/UpdateBoundDeviceRequest.md",
    "chars": 2351,
    "preview": "# UpdateBoundDeviceRequest\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------"
  },
  {
    "path": "openapi/docs/UpdateSourceDevice200Response.md",
    "chars": 10497,
    "preview": "# UpdateSourceDevice200Response\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | -------"
  },
  {
    "path": "openapi/docs/UpdateSourceDeviceRequest.md",
    "chars": 1573,
    "preview": "# UpdateSourceDeviceRequest\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | -----------"
  },
  {
    "path": "openapi/git_push.sh",
    "chars": 1830,
    "preview": "#!/bin/sh\n# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/\n#\n# Usage"
  },
  {
    "path": "openapi/go.mod",
    "chars": 64,
    "preview": "module github.com/GIT_USER_ID/GIT_REPO_ID\n\ngo 1.18\n\nrequire (\n)\n"
  },
  {
    "path": "openapi/go.sum",
    "chars": 1030,
    "preview": "cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=\ngithub.com/golang/protobuf v1.2.0 h1:"
  },
  {
    "path": "openapi/model_account.go",
    "chars": 11590,
    "preview": "/*\nCloudflare WARP API\n\nNo description provided (generated by Openapi Generator https://github.com/openapitools/openapi-"
  },
  {
    "path": "openapi/model_bound_device.go",
    "chars": 8527,
    "preview": "/*\nCloudflare WARP API\n\nNo description provided (generated by Openapi Generator https://github.com/openapitools/openapi-"
  },
  {
    "path": "openapi/model_config.go",
    "chars": 5820,
    "preview": "/*\nCloudflare WARP API\n\nNo description provided (generated by Openapi Generator https://github.com/openapitools/openapi-"
  },
  {
    "path": "openapi/model_config_interface.go",
    "chars": 4226,
    "preview": "/*\nCloudflare WARP API\n\nNo description provided (generated by Openapi Generator https://github.com/openapitools/openapi-"
  },
  {
    "path": "openapi/model_config_services.go",
    "chars": 4140,
    "preview": "/*\nCloudflare WARP API\n\nNo description provided (generated by Openapi Generator https://github.com/openapitools/openapi-"
  },
  {
    "path": "openapi/model_endpoint.go",
    "chars": 4872,
    "preview": "/*\nCloudflare WARP API\n\nNo description provided (generated by Openapi Generator https://github.com/openapitools/openapi-"
  },
  {
    "path": "openapi/model_get_client_config_200_response.go",
    "chars": 7732,
    "preview": "/*\nCloudflare WARP API\n\nNo description provided (generated by Openapi Generator https://github.com/openapitools/openapi-"
  },
  {
    "path": "openapi/model_get_client_config_200_response_captive_portal_inner.go",
    "chars": 6384,
    "preview": "/*\nCloudflare WARP API\n\nNo description provided (generated by Openapi Generator https://github.com/openapitools/openapi-"
  },
  {
    "path": "openapi/model_get_client_config_200_response_captive_portal_inner_networks_inner.go",
    "chars": 5902,
    "preview": "/*\nCloudflare WARP API\n\nNo description provided (generated by Openapi Generator https://github.com/openapitools/openapi-"
  },
  {
    "path": "openapi/model_get_client_config_200_response_denylist_inner.go",
    "chars": 8415,
    "preview": "/*\nCloudflare WARP API\n\nNo description provided (generated by Openapi Generator https://github.com/openapitools/openapi-"
  },
  {
    "path": "openapi/model_get_client_config_200_response_denylist_inner_networks.go",
    "chars": 6123,
    "preview": "/*\nCloudflare WARP API\n\nNo description provided (generated by Openapi Generator https://github.com/openapitools/openapi-"
  },
  {
    "path": "openapi/model_get_source_device_200_response.go",
    "chars": 15562,
    "preview": "/*\nCloudflare WARP API\n\nNo description provided (generated by Openapi Generator https://github.com/openapitools/openapi-"
  },
  {
    "path": "openapi/model_ipv4_network.go",
    "chars": 4623,
    "preview": "/*\nCloudflare WARP API\n\nNo description provided (generated by Openapi Generator https://github.com/openapitools/openapi-"
  },
  {
    "path": "openapi/model_ipv6_network.go",
    "chars": 4609,
    "preview": "/*\nCloudflare WARP API\n\nNo description provided (generated by Openapi Generator https://github.com/openapitools/openapi-"
  },
  {
    "path": "openapi/model_network_address.go",
    "chars": 4558,
    "preview": "/*\nCloudflare WARP API\n\nNo description provided (generated by Openapi Generator https://github.com/openapitools/openapi-"
  },
  {
    "path": "openapi/model_peer.go",
    "chars": 4384,
    "preview": "/*\nCloudflare WARP API\n\nNo description provided (generated by Openapi Generator https://github.com/openapitools/openapi-"
  },
  {
    "path": "openapi/model_register_200_response.go",
    "chars": 15569,
    "preview": "/*\nCloudflare WARP API\n\nNo description provided (generated by Openapi Generator https://github.com/openapitools/openapi-"
  },
  {
    "path": "openapi/model_register_request.go",
    "chars": 7918,
    "preview": "/*\nCloudflare WARP API\n\nNo description provided (generated by Openapi Generator https://github.com/openapitools/openapi-"
  },
  {
    "path": "openapi/model_reset_account_license_200_response.go",
    "chars": 4768,
    "preview": "/*\nCloudflare WARP API\n\nNo description provided (generated by Openapi Generator https://github.com/openapitools/openapi-"
  },
  {
    "path": "openapi/model_source_device.go",
    "chars": 13004,
    "preview": "/*\nCloudflare WARP API\n\nNo description provided (generated by Openapi Generator https://github.com/openapitools/openapi-"
  },
  {
    "path": "openapi/model_update_account_200_response.go",
    "chars": 10444,
    "preview": "/*\nCloudflare WARP API\n\nNo description provided (generated by Openapi Generator https://github.com/openapitools/openapi-"
  },
  {
    "path": "openapi/model_update_account_request.go",
    "chars": 4348,
    "preview": "/*\nCloudflare WARP API\n\nNo description provided (generated by Openapi Generator https://github.com/openapitools/openapi-"
  },
  {
    "path": "openapi/model_update_bound_device_request.go",
    "chars": 5136,
    "preview": "/*\nCloudflare WARP API\n\nNo description provided (generated by Openapi Generator https://github.com/openapitools/openapi-"
  },
  {
    "path": "openapi/model_update_source_device_200_response.go",
    "chars": 15832,
    "preview": "/*\nCloudflare WARP API\n\nNo description provided (generated by Openapi Generator https://github.com/openapitools/openapi-"
  },
  {
    "path": "openapi/model_update_source_device_request.go",
    "chars": 4478,
    "preview": "/*\nCloudflare WARP API\n\nNo description provided (generated by Openapi Generator https://github.com/openapitools/openapi-"
  },
  {
    "path": "openapi/response.go",
    "chars": 1476,
    "preview": "/*\nCloudflare WARP API\n\nNo description provided (generated by Openapi Generator https://github.com/openapitools/openapi-"
  },
  {
    "path": "openapi/test/api_default_test.go",
    "chars": 3917,
    "preview": "/*\nCloudflare WARP API\n\nTesting DefaultAPIService\n\n*/\n\n// Code generated by OpenAPI Generator (https://openapi-generator"
  },
  {
    "path": "openapi/utils.go",
    "chars": 7067,
    "preview": "/*\nCloudflare WARP API\n\nNo description provided (generated by Openapi Generator https://github.com/openapitools/openapi-"
  },
  {
    "path": "openapi-spec.yml",
    "chars": 14212,
    "preview": "components:\n  schemas:\n    Account:\n      type: \"object\"\n      properties:\n        account_type:\n          type: \"string"
  },
  {
    "path": "openapitools.json",
    "chars": 151,
    "preview": "{\n  \"$schema\": \"node_modules/@openapitools/openapi-generator-cli/config.schema.json\",\n  \"spaces\": 2,\n  \"generator-cli\": "
  },
  {
    "path": "util/util.go",
    "chars": 470,
    "preview": "package util\n\nimport (\n\t\"crypto/rand\"\n\t\"fmt\"\n\t\"time\"\n)\n\nfunc RandomHexString(count int) string {\n\tb := make([]byte, coun"
  },
  {
    "path": "util/util_test.go",
    "chars": 336,
    "preview": "package util\n\nimport (\n\t\"testing\"\n\t\"time\"\n)\n\nfunc TestGetTimestamp(t *testing.T) {\n\texpectedFormat := \"2020-04-11T16:37:"
  },
  {
    "path": "wireguard/keys.go",
    "chars": 1248,
    "preview": "/* SPDX-License-Identifier: MIT\n *\n * Copyright (C) 2019 WireGuard LLC. All Rights Reserved.\n */\n// https://github.com/W"
  },
  {
    "path": "wireguard/keys_test.go",
    "chars": 284,
    "preview": "package wireguard\n\nimport \"testing\"\n\nfunc TestNewKey(t *testing.T) {\n\tkey, err := NewPrivateKey()\n\tif err != nil {\n\t\tt.E"
  },
  {
    "path": "wireguard/profile.go",
    "chars": 1206,
    "preview": "package wireguard\n\nimport (\n\t\"bytes\"\n\t\"io/ioutil\"\n\t\"text/template\"\n\n\t\"github.com/cockroachdb/errors\"\n)\n\nvar profileTempl"
  },
  {
    "path": "wireguard/profile_test.go",
    "chars": 523,
    "preview": "package wireguard\n\nimport \"testing\"\n\nfunc TestGenerateProfile(t *testing.T) {\n\tvar expectedResult = `[Interface]\nPrivate"
  }
]

About this extraction

This page contains the full source code of the ViRb3/wgcf GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 97 files (473.0 KB), approximately 127.2k tokens, and a symbol index with 1032 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!