> For the complete documentation index, see [llms.txt](https://docs.defguard.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.defguard.net/for-developers/rest-api/core/models.md).

# Models

## The AclStateCount object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"AclStateCount":{"type":"object","required":["applied","pending"],"properties":{"applied":{"type":"integer","format":"int64"},"pending":{"type":"integer","format":"int64"}}}}}}
```

## The ActivityLogModule object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"ActivityLogModule":{"type":"string","enum":["defguard","client","vpn","enrollment"]}}}}
```

## The ActivityLogStreamModificationRequest object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"ActivityLogStreamModificationRequest":{"type":"object","required":["name","stream_type","stream_config"],"properties":{"name":{"type":"string"},"stream_config":{},"stream_type":{"$ref":"#/components/schemas/ActivityLogStreamType"}}},"ActivityLogStreamType":{"type":"string","enum":["vector_http","logstash_http"]}}}}
```

## The ActivityLogStreamType object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"ActivityLogStreamType":{"type":"string","enum":["vector_http","logstash_http"]}}}}
```

## The AddApiTokenData object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"AddApiTokenData":{"type":"object","required":["name"],"properties":{"name":{"type":"string"}}}}}}
```

## The AddAuthenticationKeyData object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"AddAuthenticationKeyData":{"type":"object","required":["key","name","key_type"],"properties":{"key":{"type":"string"},"key_type":{"$ref":"#/components/schemas/AuthenticationKeyType"},"name":{"type":"string"}}},"AuthenticationKeyType":{"type":"string","enum":["ssh","gpg"]}}}}
```

## The AddDevice object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"AddDevice":{"type":"object","required":["name","wireguard_pubkey"],"properties":{"name":{"type":"string"},"wireguard_pubkey":{"type":"string"}}}}}}
```

## The AddDeviceResult object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"AddDeviceResult":{"type":"object","required":["configs","device"],"properties":{"configs":{"type":"array","items":{"$ref":"#/components/schemas/DeviceConfig"}},"device":{"$ref":"#/components/schemas/Device_i64"}}},"DeviceConfig":{"type":"object","required":["network_id","network_name","config","address","endpoint","allowed_ips","pubkey","keepalive_interval","location_mfa_mode","service_location_mode"],"properties":{"address":{"type":"array","items":{"type":"string"}},"allowed_ips":{"type":"array","items":{"type":"string"}},"config":{"type":"string"},"dns":{"type":["string","null"]},"endpoint":{"type":"string"},"keepalive_interval":{"type":"integer","format":"int32"},"location_mfa_mode":{"$ref":"#/components/schemas/LocationMfaMode"},"network_id":{"$ref":"#/components/schemas/i64"},"network_name":{"type":"string"},"pubkey":{"type":"string"},"service_location_mode":{"$ref":"#/components/schemas/ServiceLocationMode"}}},"LocationMfaMode":{"type":"string","enum":["disabled","internal","external"]},"i64":{"type":"integer","format":"int64"},"ServiceLocationMode":{"type":"string","enum":["disabled","prelogon","alwayson"]},"Device_i64":{"type":"object","required":["id","name","wireguard_pubkey","user_id","created","device_type","configured"],"properties":{"configured":{"type":"boolean","description":"Whether the device is ready to use. Unconfigured devices are not sent to the gateway.\nSuch a device is already added to all its networks, but is still missing something,\nfor example its public key."},"created":{"type":"string","format":"date-time"},"description":{"type":["string","null"]},"device_type":{"$ref":"#/components/schemas/DeviceType"},"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"user_id":{"$ref":"#/components/schemas/i64"},"wireguard_pubkey":{"type":"string"}}},"DeviceType":{"type":"string","enum":["user","network"]}}}}
```

## The AddNetworkDevice object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"AddNetworkDevice":{"type":"object","required":["name","location_id","assigned_ips","wireguard_pubkey"],"properties":{"assigned_ips":{"type":"array","items":{"type":"string"}},"description":{"type":["string","null"]},"location_id":{"type":"integer","format":"int64"},"name":{"type":"string"},"wireguard_pubkey":{"type":"string"}}}}}}
```

## The AddProviderData object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"AddProviderData":{"type":"object","required":["name","base_url","kind","client_id","client_secret","directory_sync_enabled","directory_sync_interval","directory_sync_user_behavior","directory_sync_admin_behavior","directory_sync_target","prefetch_users","create_account","username_handling"],"properties":{"admin_email":{"type":["string","null"]},"base_url":{"type":"string"},"client_id":{"type":"string"},"client_secret":{"type":"string"},"create_account":{"type":"boolean"},"directory_sync_admin_behavior":{"type":"string"},"directory_sync_enabled":{"type":"boolean"},"directory_sync_group_match":{"type":["string","null"]},"directory_sync_interval":{"type":"integer","format":"int32"},"directory_sync_target":{"type":"string"},"directory_sync_user_behavior":{"type":"string"},"directory_sync_user_groups":{"type":["string","null"]},"display_name":{"type":["string","null"]},"google_service_account_email":{"type":["string","null"]},"google_service_account_key":{"type":["string","null"]},"jumpcloud_api_key":{"type":["string","null"]},"kind":{"$ref":"#/components/schemas/OpenIdProviderKind"},"name":{"type":"string"},"okta_dirsync_client_id":{"type":["string","null"]},"okta_private_jwk":{"type":["string","null"]},"prefetch_users":{"type":"boolean"},"username_handling":{"$ref":"#/components/schemas/OpenIdUsernameHandling"}}},"OpenIdProviderKind":{"type":"string","enum":["Custom","Google","Microsoft","Okta","JumpCloud","Zitadel"]},"OpenIdUsernameHandling":{"type":"string","enum":["RemoveForbidden","ReplaceForbidden","PruneEmailDomain"]}}}}
```

## The AddUserData object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"AddUserData":{"type":"object","required":["username","last_name","first_name","email"],"properties":{"email":{"type":"string"},"first_name":{"type":"string"},"last_name":{"type":"string"},"password":{"type":["string","null"]},"phone":{"type":["string","null"]},"username":{"type":"string"}}}}}}
```

## The AliasKind object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"AliasKind":{"type":"string","description":"Type of an ACL alias:\n- `destination`: the alias defines a complete destination that an ACL rule applies to.\n- `component`: the alias defines parts of a destination and is combined with the parts\n  defined in the ACL rule itself.","enum":["Destination","Component"]}}}}
```

## The AliasState object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"AliasState":{"type":"string","description":"ACL alias can be in one of the following states:\n- Applied: the alias can be used in ACL rules\n- Modified: the alias has been modified and the changes have not yet been applied\n\nUnlike ACL rules themselves aliases do not require a `New` state,\nsince they do not cause any changes to locations until they\nare used by a rule.\n`Deleted` state is also omitted since we don't allow deleting if an alias is used by any rules.","enum":["Applied","Modified"]}}}}
```

## The ApiAclAlias object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"ApiAclAlias":{"type":"object","description":"An ACL alias component.\nAll relations represented as arrays of IDs.","required":["name","kind","state","addresses","ports","protocols","rules"],"properties":{"addresses":{"type":"string"},"id":{"$ref":"#/components/schemas/i64"},"kind":{"$ref":"#/components/schemas/AliasKind"},"name":{"type":"string"},"parent_id":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/i64"}]},"ports":{"type":"string"},"protocols":{"type":"array","items":{"$ref":"#/components/schemas/i32"}},"rules":{"type":"array","items":{"$ref":"#/components/schemas/i64"}},"state":{"$ref":"#/components/schemas/AliasState"}}},"i64":{"type":"integer","format":"int64"},"AliasKind":{"type":"string","description":"Type of an ACL alias:\n- `destination`: the alias defines a complete destination that an ACL rule applies to.\n- `component`: the alias defines parts of a destination and is combined with the parts\n  defined in the ACL rule itself.","enum":["Destination","Component"]},"i32":{"type":"integer","format":"int32"},"AliasState":{"type":"string","description":"ACL alias can be in one of the following states:\n- Applied: the alias can be used in ACL rules\n- Modified: the alias has been modified and the changes have not yet been applied\n\nUnlike ACL rules themselves aliases do not require a `New` state,\nsince they do not cause any changes to locations until they\nare used by a rule.\n`Deleted` state is also omitted since we don't allow deleting if an alias is used by any rules.","enum":["Applied","Modified"]}}}}
```

## The ApiAclDestination object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"ApiAclDestination":{"type":"object","description":"An ACL destination.\nAll relations represented as arrays of IDs.","required":["name","kind","state","addresses","ports","protocols","rules","any_address","any_port","any_protocol"],"properties":{"addresses":{"type":"string"},"any_address":{"type":"boolean"},"any_port":{"type":"boolean"},"any_protocol":{"type":"boolean"},"id":{"$ref":"#/components/schemas/i64"},"kind":{"$ref":"#/components/schemas/AliasKind"},"name":{"type":"string"},"parent_id":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/i64"}]},"ports":{"type":"string"},"protocols":{"type":"array","items":{"$ref":"#/components/schemas/i32"}},"rules":{"type":"array","items":{"$ref":"#/components/schemas/i64"}},"state":{"$ref":"#/components/schemas/AliasState"}}},"i64":{"type":"integer","format":"int64"},"AliasKind":{"type":"string","description":"Type of an ACL alias:\n- `destination`: the alias defines a complete destination that an ACL rule applies to.\n- `component`: the alias defines parts of a destination and is combined with the parts\n  defined in the ACL rule itself.","enum":["Destination","Component"]},"i32":{"type":"integer","format":"int32"},"AliasState":{"type":"string","description":"ACL alias can be in one of the following states:\n- Applied: the alias can be used in ACL rules\n- Modified: the alias has been modified and the changes have not yet been applied\n\nUnlike ACL rules themselves aliases do not require a `New` state,\nsince they do not cause any changes to locations until they\nare used by a rule.\n`Deleted` state is also omitted since we don't allow deleting if an alias is used by any rules.","enum":["Applied","Modified"]}}}}
```

## The ApiAclRule object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"ApiAclRule":{"type":"object","description":"An ACL rule. All relations represented as arrays of IDs.","required":["id","state","name","modified_at","modified_by","all_locations","locations","enabled","allow_all_users","deny_all_users","allow_all_groups","deny_all_groups","allow_all_network_devices","deny_all_network_devices","allowed_users","denied_users","allowed_groups","denied_groups","allowed_network_devices","denied_network_devices","use_manual_destination_settings","addresses","ports","protocols","any_address","any_port","any_protocol","aliases","destinations"],"properties":{"addresses":{"type":"string"},"aliases":{"type":"array","items":{"$ref":"#/components/schemas/i64"}},"all_locations":{"type":"boolean"},"allow_all_groups":{"type":"boolean"},"allow_all_network_devices":{"type":"boolean"},"allow_all_users":{"type":"boolean"},"allowed_groups":{"type":"array","items":{"$ref":"#/components/schemas/i64"}},"allowed_network_devices":{"type":"array","items":{"$ref":"#/components/schemas/i64"}},"allowed_users":{"type":"array","items":{"$ref":"#/components/schemas/i64"}},"any_address":{"type":"boolean"},"any_port":{"type":"boolean"},"any_protocol":{"type":"boolean"},"denied_groups":{"type":"array","items":{"$ref":"#/components/schemas/i64"}},"denied_network_devices":{"type":"array","items":{"$ref":"#/components/schemas/i64"}},"denied_users":{"type":"array","items":{"$ref":"#/components/schemas/i64"}},"deny_all_groups":{"type":"boolean"},"deny_all_network_devices":{"type":"boolean"},"deny_all_users":{"type":"boolean"},"destinations":{"type":"array","items":{"$ref":"#/components/schemas/i64"}},"enabled":{"type":"boolean"},"expires":{"type":["string","null"],"format":"date-time"},"id":{"$ref":"#/components/schemas/i64"},"locations":{"type":"array","items":{"$ref":"#/components/schemas/i64"}},"modified_at":{"type":"string","format":"date-time"},"modified_by":{"type":"string"},"name":{"type":"string"},"parent_id":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/i64"}]},"ports":{"type":"string"},"protocols":{"type":"array","items":{"$ref":"#/components/schemas/i32"}},"state":{"$ref":"#/components/schemas/RuleState"},"use_manual_destination_settings":{"type":"boolean"}}},"i64":{"type":"integer","format":"int64"},"i32":{"type":"integer","format":"int32"},"RuleState":{"type":"string","description":"ACL rule can be in one of the following states:\n- New: the rule has been created and not yet applied\n- Modified: the rule has been modified and not yet applied\n- Deleted: the rule has been marked for deletion but not yed removed\n- Applied: the rule was applied\n- Expired: the rule is past it's expiration date\n\nApplied state does NOT guarantee that all locations have received the rule\nand performed appropriate operations, only that the next time configuration\nis being sent it will include this rule.","enum":["New","Modified","Deleted","Applied","Expired"]}}}}
```

## The ApiActivityLogEvent object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"ApiActivityLogEvent":{"type":"object","description":"Activity log event as returned by the API.","required":["id","timestamp","user_id","username","event","module","device"],"properties":{"description":{"type":["string","null"]},"device":{"type":"string"},"event":{"type":"string"},"id":{"$ref":"#/components/schemas/i64"},"ip":{"type":["string","null"]},"location":{"type":["string","null"]},"module":{"$ref":"#/components/schemas/ActivityLogModule"},"timestamp":{"type":"string","format":"date-time"},"user_id":{"$ref":"#/components/schemas/i64"},"username":{"type":"string"}}},"i64":{"type":"integer","format":"int64"},"ActivityLogModule":{"type":"string","enum":["defguard","client","vpn","enrollment"]}}}}
```

## The ApiErrorResponse object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"ApiErrorResponse":{"type":"object","description":"Body returned with error responses.","required":["msg"],"properties":{"code":{"type":["string","null"],"description":"Machine-readable error code, returned for selected errors."},"msg":{"type":"string","description":"Human-readable error message."}}}}}}
```

## The ApiTokenInfo object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"ApiTokenInfo":{"type":"object","required":["id","name","created_at"],"properties":{"created_at":{"type":"string","format":"date-time"},"id":{"$ref":"#/components/schemas/i64"},"name":{"type":"string"}}},"i64":{"type":"integer","format":"int64"}}}}
```

## The ApplyAclAliasesData object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"ApplyAclAliasesData":{"type":"object","required":["aliases"],"properties":{"aliases":{"type":"array","items":{"$ref":"#/components/schemas/i64"}}}},"i64":{"type":"integer","format":"int64"}}}}
```

## The ApplyAclDestinationsData object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"ApplyAclDestinationsData":{"type":"object","required":["destinations"],"properties":{"destinations":{"type":"array","items":{"$ref":"#/components/schemas/i64"}}}},"i64":{"type":"integer","format":"int64"}}}}
```

## The ApplyAclRulesData object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"ApplyAclRulesData":{"type":"object","required":["rules"],"properties":{"rules":{"type":"array","items":{"$ref":"#/components/schemas/i64"}}}},"i64":{"type":"integer","format":"int64"}}}}
```

## The Auth object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"Auth":{"type":"object","required":["username","password"],"properties":{"password":{"type":"string"},"username":{"type":"string"}}}}}}
```

## The AuthCode object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"AuthCode":{"type":"object","required":["code"],"properties":{"code":{"type":"string"}}}}}}
```

## The AuthResponse object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"AuthResponse":{"type":"object","description":"Return type needed for knowing if a user came from OpenID flow.\nIf so, fill in the optional URL field to redirect him later.","required":["user"],"properties":{"url":{"type":["string","null"]},"user":{"$ref":"#/components/schemas/UserInfo"}}},"UserInfo":{"type":"object","required":["id","username","last_name","first_name","name","email","mfa_enabled","totp_enabled","email_mfa_enabled","groups","mfa_method","authorized_apps","is_active","enrolled","is_admin","ldap_pass_requires_change","devices"],"properties":{"authorized_apps":{"type":"array","items":{"$ref":"#/components/schemas/OAuth2AuthorizedAppInfo"}},"devices":{"type":"array","items":{"$ref":"#/components/schemas/UserDevice"}},"email":{"type":"string"},"email_mfa_enabled":{"type":"boolean"},"enrolled":{"type":"boolean"},"first_name":{"type":"string"},"groups":{"type":"array","items":{"type":"string"}},"id":{"$ref":"#/components/schemas/i64"},"is_active":{"type":"boolean"},"is_admin":{"type":"boolean"},"last_name":{"type":"string"},"ldap_pass_requires_change":{"type":"boolean"},"mfa_enabled":{"type":"boolean"},"mfa_method":{"$ref":"#/components/schemas/MFAMethod"},"name":{"type":"string"},"phone":{"type":["string","null"]},"totp_enabled":{"type":"boolean"},"username":{"type":"string"}}},"OAuth2AuthorizedAppInfo":{"type":"object","required":["oauth2client_id","oauth2client_name"],"properties":{"oauth2client_id":{"$ref":"#/components/schemas/i64"},"oauth2client_name":{"type":"string"}}},"i64":{"type":"integer","format":"int64"},"UserDevice":{"allOf":[{"$ref":"#/components/schemas/Device_i64"},{"type":"object","required":["networks"],"properties":{"networks":{"type":"array","items":{"$ref":"#/components/schemas/UserDeviceNetworkInfo"}}}}]},"Device_i64":{"type":"object","required":["id","name","wireguard_pubkey","user_id","created","device_type","configured"],"properties":{"configured":{"type":"boolean","description":"Whether the device is ready to use. Unconfigured devices are not sent to the gateway.\nSuch a device is already added to all its networks, but is still missing something,\nfor example its public key."},"created":{"type":"string","format":"date-time"},"description":{"type":["string","null"]},"device_type":{"$ref":"#/components/schemas/DeviceType"},"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"user_id":{"$ref":"#/components/schemas/i64"},"wireguard_pubkey":{"type":"string"}}},"DeviceType":{"type":"string","enum":["user","network"]},"UserDeviceNetworkInfo":{"type":"object","required":["network_id","network_name","network_gateway_ip","device_wireguard_ips","is_active","location_mfa_mode"],"properties":{"device_wireguard_ips":{"type":"array","items":{"type":"string"}},"is_active":{"type":"boolean"},"last_connected_at":{"type":["string","null"],"format":"date-time"},"last_connected_ip":{"type":["string","null"]},"location_mfa_mode":{"$ref":"#/components/schemas/LocationMfaMode"},"network_gateway_ip":{"type":"string"},"network_id":{"$ref":"#/components/schemas/i64"},"network_name":{"type":"string"}}},"LocationMfaMode":{"type":"string","enum":["disabled","internal","external"]},"MFAMethod":{"type":"string","enum":["None","OneTimePassword","Webauthn","Email"]}}}}
```

## The AuthTotp object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"AuthTotp":{"type":"object","required":["secret"],"properties":{"secret":{"type":"string"}}}}}}
```

## The AuthenticationKeyType object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"AuthenticationKeyType":{"type":"string","enum":["ssh","gpg"]}}}}
```

## The BulkAssignToGroupsRequest object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"BulkAssignToGroupsRequest":{"type":"object","required":["groups","users"],"properties":{"groups":{"type":"array","items":{"type":"string"}},"users":{"type":"array","items":{"$ref":"#/components/schemas/i64"}}}},"i64":{"type":"integer","format":"int64"}}}}
```

## The BulkStartEnrollmentRequest object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"BulkStartEnrollmentRequest":{"type":"object","required":["users"],"properties":{"send_enrollment_notification":{"type":"boolean","description":"Whether to send enrollment email to each user (uses user's stored email)."},"token_expiration_time":{"type":["string","null"],"description":"Token expiration override in humantime format, for example `24h`. Falls back to the\nsystem setting."},"users":{"type":"array","items":{"$ref":"#/components/schemas/i64"}}}},"i64":{"type":"integer","format":"int64"}}}}
```

## The BulkUserOperationRequest object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"BulkUserOperationRequest":{"type":"object","required":["users"],"properties":{"users":{"type":"array","items":{"$ref":"#/components/schemas/i64"}}}},"i64":{"type":"integer","format":"int64"}}}}
```

## The ChangeStateData object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"ChangeStateData":{"type":"object","required":["enabled"],"properties":{"enabled":{"type":"boolean"}}}}}}
```

## The CheckParams object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"CheckParams":{"type":"object","required":["license"],"properties":{"license":{"type":"string"}}}}}}
```

## The CheckResource object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"CheckResource":{"type":"string","enum":["email","username"]}}}}
```

## The Device object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"Device":{"type":"object","required":["id","name","wireguard_pubkey","user_id","created","device_type","configured"],"properties":{"configured":{"type":"boolean","description":"Whether the device is ready to use. Unconfigured devices are not sent to the gateway.\nSuch a device is already added to all its networks, but is still missing something,\nfor example its public key."},"created":{"type":"string","format":"date-time"},"description":{"type":["string","null"]},"device_type":{"$ref":"#/components/schemas/DeviceType"},"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"user_id":{"$ref":"#/components/schemas/i64"},"wireguard_pubkey":{"type":"string"}}},"DeviceType":{"type":"string","enum":["user","network"]},"i64":{"type":"integer","format":"int64"}}}}
```

## The DeviceConfig object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"DeviceConfig":{"type":"object","required":["network_id","network_name","config","address","endpoint","allowed_ips","pubkey","keepalive_interval","location_mfa_mode","service_location_mode"],"properties":{"address":{"type":"array","items":{"type":"string"}},"allowed_ips":{"type":"array","items":{"type":"string"}},"config":{"type":"string"},"dns":{"type":["string","null"]},"endpoint":{"type":"string"},"keepalive_interval":{"type":"integer","format":"int32"},"location_mfa_mode":{"$ref":"#/components/schemas/LocationMfaMode"},"network_id":{"$ref":"#/components/schemas/i64"},"network_name":{"type":"string"},"pubkey":{"type":"string"},"service_location_mode":{"$ref":"#/components/schemas/ServiceLocationMode"}}},"LocationMfaMode":{"type":"string","enum":["disabled","internal","external"]},"i64":{"type":"integer","format":"int64"},"ServiceLocationMode":{"type":"string","enum":["disabled","prelogon","alwayson"]}}}}
```

## The DeviceType object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"DeviceType":{"type":"string","enum":["user","network"]}}}}
```

## The Device\_i64 object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"Device_i64":{"type":"object","required":["id","name","wireguard_pubkey","user_id","created","device_type","configured"],"properties":{"configured":{"type":"boolean","description":"Whether the device is ready to use. Unconfigured devices are not sent to the gateway.\nSuch a device is already added to all its networks, but is still missing something,\nfor example its public key."},"created":{"type":"string","format":"date-time"},"description":{"type":["string","null"]},"device_type":{"$ref":"#/components/schemas/DeviceType"},"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"user_id":{"$ref":"#/components/schemas/i64"},"wireguard_pubkey":{"type":"string"}}},"DeviceType":{"type":"string","enum":["user","network"]},"i64":{"type":"integer","format":"int64"}}}}
```

## The EditAclAlias object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"EditAclAlias":{"type":"object","description":"An ACL alias, as accepted when creating or updating one.","required":["name","addresses","ports","protocols"],"properties":{"addresses":{"type":"string"},"name":{"type":"string"},"ports":{"type":"string"},"protocols":{"type":"array","items":{"$ref":"#/components/schemas/i32"}}}},"i32":{"type":"integer","format":"int32"}}}}
```

## The EditAclDestination object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"EditAclDestination":{"type":"object","description":"An ACL destination, as accepted when creating or updating one.","required":["name","addresses","ports","protocols","any_address","any_port","any_protocol"],"properties":{"addresses":{"type":"string"},"any_address":{"type":"boolean"},"any_port":{"type":"boolean"},"any_protocol":{"type":"boolean"},"name":{"type":"string"},"ports":{"type":"string"},"protocols":{"type":"array","items":{"$ref":"#/components/schemas/i32"}}}},"i32":{"type":"integer","format":"int32"}}}}
```

## The EditAclRule object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"EditAclRule":{"type":"object","description":"An ACL rule, as accepted when creating or updating one.","required":["name","all_locations","locations","enabled","allow_all_users","deny_all_users","allow_all_groups","deny_all_groups","allow_all_network_devices","deny_all_network_devices","allowed_users","denied_users","allowed_groups","denied_groups","allowed_network_devices","denied_network_devices","use_manual_destination_settings","addresses","ports","protocols","any_address","any_port","any_protocol","aliases","destinations"],"properties":{"addresses":{"type":"string"},"aliases":{"type":"array","items":{"$ref":"#/components/schemas/i64"}},"all_locations":{"type":"boolean"},"allow_all_groups":{"type":"boolean"},"allow_all_network_devices":{"type":"boolean"},"allow_all_users":{"type":"boolean"},"allowed_groups":{"type":"array","items":{"$ref":"#/components/schemas/i64"}},"allowed_network_devices":{"type":"array","items":{"$ref":"#/components/schemas/i64"}},"allowed_users":{"type":"array","items":{"$ref":"#/components/schemas/i64"}},"any_address":{"type":"boolean"},"any_port":{"type":"boolean"},"any_protocol":{"type":"boolean"},"denied_groups":{"type":"array","items":{"$ref":"#/components/schemas/i64"}},"denied_network_devices":{"type":"array","items":{"$ref":"#/components/schemas/i64"}},"denied_users":{"type":"array","items":{"$ref":"#/components/schemas/i64"}},"deny_all_groups":{"type":"boolean"},"deny_all_network_devices":{"type":"boolean"},"deny_all_users":{"type":"boolean"},"destinations":{"type":"array","items":{"$ref":"#/components/schemas/i64"}},"enabled":{"type":"boolean"},"expires":{"type":["string","null"],"format":"date-time"},"locations":{"type":"array","items":{"$ref":"#/components/schemas/i64"}},"name":{"type":"string"},"ports":{"type":"string"},"protocols":{"type":"array","items":{"$ref":"#/components/schemas/i32"}},"use_manual_destination_settings":{"type":"boolean"}}},"i64":{"type":"integer","format":"int64"},"i32":{"type":"integer","format":"int32"}}}}
```

## The EditGroupInfo object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"EditGroupInfo":{"type":"object","description":"Dedicated `GroupInfo` variant for group modification operations.","required":["name","members","is_admin"],"properties":{"is_admin":{"type":"boolean"},"members":{"type":"array","items":{"type":"string"}},"name":{"type":"string"}}}}}}
```

## The EditUserSnatBinding object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"EditUserSnatBinding":{"type":"object","required":["public_ip"],"properties":{"public_ip":{"type":"string","description":"New public IP address used for SNAT."}}}}}}
```

## The ExternalSslType object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"ExternalSslType":{"type":"string","description":"SSL configuration type for the external (proxy) web server.","enum":["none","lets_encrypt","defguard_ca","own_cert"]}}}}
```

## The ExternalUrlSettingsConfig object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"ExternalUrlSettingsConfig":{"type":"object","required":["ssl_type"],"properties":{"cert_pem":{"type":["string","null"]},"key_pem":{"type":["string","null"]},"ssl_type":{"$ref":"#/components/schemas/ExternalSslType"}}},"ExternalSslType":{"type":"string","description":"SSL configuration type for the external (proxy) web server.","enum":["none","lets_encrypt","defguard_ca","own_cert"]}}}}
```

## The Gateway object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"Gateway":{"type":"object","required":["id","location_id","name","address","port","enabled","modified_at","modified_by"],"properties":{"address":{"type":"string"},"certificate_expiry":{"type":["string","null"],"format":"date-time"},"certificate_serial":{"type":["string","null"]},"connected_at":{"type":["string","null"],"format":"date-time"},"core_client_cert_expiry":{"type":["string","null"],"format":"date-time"},"disconnected_at":{"type":["string","null"],"format":"date-time"},"enabled":{"type":"boolean"},"id":{"type":"integer","format":"int64"},"location_id":{"$ref":"#/components/schemas/i64"},"modified_at":{"type":"string","format":"date-time"},"modified_by":{"type":"string"},"name":{"type":"string"},"port":{"type":"integer","format":"int32"},"version":{"type":["string","null"]}}},"i64":{"type":"integer","format":"int64"}}}}
```

## The GatewayAdoptRequest object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"GatewayAdoptRequest":{"type":"object","required":["name","ip_or_domain","grpc_port"],"properties":{"grpc_port":{"type":"integer","format":"int32","minimum":0},"ip_or_domain":{"type":"string"},"name":{"type":"string"}}}}}}
```

## The GatewayInfo object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"GatewayInfo":{"type":"object","required":["id","location_id","name","address","port","connected","enabled","modified_at","modified_by","location_name"],"properties":{"address":{"type":"string"},"certificate_expiry":{"type":["string","null"],"format":"date-time"},"certificate_serial":{"type":["string","null"]},"connected":{"type":"boolean"},"connected_at":{"type":["string","null"],"format":"date-time"},"disconnected_at":{"type":["string","null"],"format":"date-time"},"enabled":{"type":"boolean"},"id":{"$ref":"#/components/schemas/i64"},"location_id":{"$ref":"#/components/schemas/i64"},"location_name":{"type":"string"},"modified_at":{"type":"string","format":"date-time"},"modified_by":{"type":"string"},"name":{"type":"string"},"port":{"type":"integer","format":"int32"},"version":{"type":["string","null"]}}},"i64":{"type":"integer","format":"int64"}}}}
```

## The GatewayUpdateData object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"GatewayUpdateData":{"type":"object","required":["name","enabled"],"properties":{"enabled":{"type":"boolean"},"name":{"type":"string"}},"additionalProperties":false}}}}
```

## The GroupInfo object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"GroupInfo":{"type":"object","required":["id","name","members","vpn_locations","is_admin"],"properties":{"id":{"$ref":"#/components/schemas/i64"},"is_admin":{"type":"boolean"},"members":{"type":"array","items":{"type":"string"}},"name":{"type":"string"},"vpn_locations":{"type":"array","items":{"type":"string"}}}},"i64":{"type":"integer","format":"int64"}}}}
```

## The ImportNetworkData object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"ImportNetworkData":{"type":"object","required":["name","endpoint","config","allow_all_groups","allowed_groups"],"properties":{"allow_all_groups":{"type":"boolean"},"allowed_groups":{"type":"array","items":{"type":"string"}},"config":{"type":"string"},"endpoint":{"type":"string"},"name":{"type":"string"}}}}}}
```

## The ImportedDevice object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"ImportedDevice":{"type":"object","required":["name","wireguard_pubkey","wireguard_ips"],"properties":{"name":{"type":"string"},"user_id":{"type":["integer","null"],"format":"int64"},"wireguard_ips":{"type":"array","items":{"type":"string"}},"wireguard_pubkey":{"type":"string"}}}}}}
```

## The ImportedNetworkData object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"ImportedNetworkData":{"type":"object","required":["network","devices"],"properties":{"devices":{"type":"array","items":{"$ref":"#/components/schemas/ImportedDevice"}},"network":{"$ref":"#/components/schemas/WireguardNetwork_i64"}}},"ImportedDevice":{"type":"object","required":["name","wireguard_pubkey","wireguard_ips"],"properties":{"name":{"type":"string"},"user_id":{"type":["integer","null"],"format":"int64"},"wireguard_ips":{"type":"array","items":{"type":"string"}},"wireguard_pubkey":{"type":"string"}}},"WireguardNetwork_i64":{"type":"object","description":"Stores the configuration required to set up a WireGuard network.","required":["id","name","address","port","pubkey","endpoint","mtu","fwmark","allowed_ips","allow_all_groups","acl_enabled","acl_default_allow","keepalive_interval","peer_disconnect_threshold","location_mfa_mode","service_location_mode"],"properties":{"acl_default_allow":{"type":"boolean"},"acl_enabled":{"type":"boolean"},"address":{"type":"array","items":{"type":"string"}},"allow_all_groups":{"type":"boolean"},"allowed_ips":{"type":"array","items":{"type":"string"}},"connected_at":{"type":["string","null"],"format":"date-time"},"dns":{"type":["string","null"]},"endpoint":{"type":"string"},"fwmark":{"type":"integer","format":"int64"},"id":{"type":"integer","format":"int64"},"keepalive_interval":{"type":"integer","format":"int32"},"location_mfa_mode":{"$ref":"#/components/schemas/LocationMfaMode"},"mtu":{"type":"integer","format":"int32"},"name":{"type":"string"},"peer_disconnect_threshold":{"type":"integer","format":"int32"},"port":{"type":"integer","format":"int32"},"pubkey":{"type":"string"},"service_location_mode":{"$ref":"#/components/schemas/ServiceLocationMode"}}},"LocationMfaMode":{"type":"string","enum":["disabled","internal","external"]},"ServiceLocationMode":{"type":"string","enum":["disabled","prelogon","alwayson"]}}}}
```

## The InternalSslType object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"InternalSslType":{"type":"string","description":"SSL configuration type for Defguard's internal (core) web server.","enum":["none","defguard_ca","own_cert"]}}}}
```

## The InternalUrlSettingsConfig object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"InternalUrlSettingsConfig":{"type":"object","required":["ssl_type"],"properties":{"cert_pem":{"type":["string","null"]},"key_pem":{"type":["string","null"]},"ssl_type":{"$ref":"#/components/schemas/InternalSslType"}}},"InternalSslType":{"type":"string","description":"SSL configuration type for Defguard's internal (core) web server.","enum":["none","defguard_ca","own_cert"]}}}}
```

## The IpAvailabilityCheck object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"IpAvailabilityCheck":{"type":"object","required":["ips"],"properties":{"device_id":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/i64"}]},"ips":{"type":"array","items":{"type":"string"}}}},"i64":{"type":"integer","format":"int64"}}}}
```

## The LdapSyncStatus object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"LdapSyncStatus":{"type":"string","enum":["InSync","OutOfSync"]}}}}
```

## The LocationConnectedNetworkDevice object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"LocationConnectedNetworkDevice":{"type":"object","required":["device_id","device_name","public_ip","vpn_ips","connected_at","total_upload","total_download","stats"],"properties":{"connected_at":{"type":"string","format":"date-time"},"device_id":{"$ref":"#/components/schemas/i64"},"device_name":{"type":"string"},"public_ip":{"type":"string"},"stats":{"type":"array","items":{"$ref":"#/components/schemas/WireguardStatsRow"}},"total_download":{"type":"integer","format":"int64"},"total_upload":{"type":"integer","format":"int64"},"vpn_ips":{"type":"array","items":{"type":"string"}}}},"i64":{"type":"integer","format":"int64"},"WireguardStatsRow":{"type":"object","properties":{"collected_at":{"type":["string","null"],"format":"date-time"},"download":{"type":["integer","null"],"format":"int64"},"upload":{"type":["integer","null"],"format":"int64"}}}}}}
```

## The LocationConnectedUserStats object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"LocationConnectedUserStats":{"type":"object","required":["user_id","first_name","last_name","full_name","connected_devices_count","public_ip","vpn_ips","connected_at","total_upload","total_download","stats"],"properties":{"connected_at":{"type":"string","format":"date-time"},"connected_devices_count":{"type":"integer","format":"int32","minimum":0},"first_name":{"type":"string"},"full_name":{"type":"string"},"last_name":{"type":"string"},"public_ip":{"type":"string"},"stats":{"type":"array","items":{"$ref":"#/components/schemas/WireguardStatsRow"}},"total_download":{"type":"integer","format":"int64"},"total_upload":{"type":"integer","format":"int64"},"user_id":{"$ref":"#/components/schemas/i64"},"vpn_ips":{"type":"array","items":{"type":"string"}}}},"WireguardStatsRow":{"type":"object","properties":{"collected_at":{"type":["string","null"],"format":"date-time"},"download":{"type":["integer","null"],"format":"int64"},"upload":{"type":["integer","null"],"format":"int64"}}},"i64":{"type":"integer","format":"int64"}}}}
```

## The LocationMfaMode object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"LocationMfaMode":{"type":"string","enum":["disabled","internal","external"]}}}}
```

## The LocationsCount object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"LocationsCount":{"type":"object","required":["count"],"properties":{"count":{"type":"integer","minimum":0}}}}}}
```

## The MFAInfo object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"MFAInfo":{"type":"object","required":["mfa_method","totp_available","webauthn_available","email_available"],"properties":{"email_available":{"type":"boolean"},"mfa_method":{"$ref":"#/components/schemas/MFAMethod"},"totp_available":{"type":"boolean"},"webauthn_available":{"type":"boolean"}}},"MFAMethod":{"type":"string","enum":["None","OneTimePassword","Webauthn","Email"]}}}}
```

## The MFAMethod object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"MFAMethod":{"type":"string","enum":["None","OneTimePassword","Webauthn","Email"]}}}}
```

## The MappedDevice object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"MappedDevice":{"type":"object","required":["user_id","name","wireguard_pubkey","wireguard_ips"],"properties":{"name":{"type":"string"},"user_id":{"$ref":"#/components/schemas/i64"},"wireguard_ips":{"type":"array","items":{"type":"string"}},"wireguard_pubkey":{"type":"string"}}},"i64":{"type":"integer","format":"int64"}}}}
```

## The MappedDevices object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"MappedDevices":{"type":"object","required":["devices"],"properties":{"devices":{"type":"array","items":{"$ref":"#/components/schemas/MappedDevice"}}}},"MappedDevice":{"type":"object","required":["user_id","name","wireguard_pubkey","wireguard_ips"],"properties":{"name":{"type":"string"},"user_id":{"$ref":"#/components/schemas/i64"},"wireguard_ips":{"type":"array","items":{"type":"string"}},"wireguard_pubkey":{"type":"string"}}},"i64":{"type":"integer","format":"int64"}}}}
```

## The ModifyDevice object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"ModifyDevice":{"type":"object","required":["name","wireguard_pubkey"],"properties":{"description":{"type":["string","null"]},"name":{"type":"string"},"wireguard_pubkey":{"type":"string"}}}}}}
```

## The ModifyNetworkDevice object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"ModifyNetworkDevice":{"type":"object","required":["name","assigned_ips"],"properties":{"assigned_ips":{"type":"array","items":{"type":"string"}},"description":{"type":["string","null"]},"name":{"type":"string"}}}}}}
```

## The NetworkDeviceInfo object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"NetworkDeviceInfo":{"type":"object","required":["id","name","assigned_ips","added_by","added_date","location","wireguard_pubkey","configured","split_ips"],"properties":{"added_by":{"type":"string"},"added_date":{"type":"string","format":"date-time"},"assigned_ips":{"type":"array","items":{"type":"string"}},"configured":{"type":"boolean"},"description":{"type":["string","null"]},"id":{"$ref":"#/components/schemas/i64"},"location":{"$ref":"#/components/schemas/NetworkDeviceLocation"},"name":{"type":"string"},"split_ips":{"type":"array","items":{"$ref":"#/components/schemas/SplitIp"}},"wireguard_pubkey":{"type":"string"}}},"i64":{"type":"integer","format":"int64"},"NetworkDeviceLocation":{"type":"object","required":["id","name"],"properties":{"id":{"$ref":"#/components/schemas/i64"},"name":{"type":"string"}}},"SplitIp":{"type":"object","required":["network_part","modifiable_part","network_prefix","ip"],"properties":{"ip":{"type":"string"},"modifiable_part":{"type":"string"},"network_part":{"type":"string"},"network_prefix":{"type":"string"}}}}}}
```

## The NetworkDeviceLocation object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"NetworkDeviceLocation":{"type":"object","required":["id","name"],"properties":{"id":{"$ref":"#/components/schemas/i64"},"name":{"type":"string"}}},"i64":{"type":"integer","format":"int64"}}}}
```

## The NewOpenIDClient object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"NewOpenIDClient":{"type":"object","required":["name","redirect_uri","scope","enabled"],"properties":{"enabled":{"type":"boolean"},"name":{"type":"string"},"redirect_uri":{"type":"array","items":{"type":"string"}},"scope":{"type":"array","items":{"type":"string"}}}}}}}
```

## The NewUserSnatBinding object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"NewUserSnatBinding":{"type":"object","required":["user_id","public_ip"],"properties":{"public_ip":{"type":"string","description":"Public IP address used for SNAT."},"user_id":{"$ref":"#/components/schemas/i64","description":"ID of the user bound to the public IP address."}}},"i64":{"type":"integer","format":"int64"}}}}
```

## The OAuth2AuthorizedAppInfo object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"OAuth2AuthorizedAppInfo":{"type":"object","required":["oauth2client_id","oauth2client_name"],"properties":{"oauth2client_id":{"$ref":"#/components/schemas/i64"},"oauth2client_name":{"type":"string"}}},"i64":{"type":"integer","format":"int64"}}}}
```

## The OpenIdProviderKind object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"OpenIdProviderKind":{"type":"string","enum":["Custom","Google","Microsoft","Okta","JumpCloud","Zitadel"]}}}}
```

## The OpenIdUsernameHandling object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"OpenIdUsernameHandling":{"type":"string","enum":["RemoveForbidden","ReplaceForbidden","PruneEmailDomain"]}}}}
```

## The PaginatedApiResponse\_ApiAclRule object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"PaginatedApiResponse_ApiAclRule":{"type":"object","description":"Envelope returned by paginated endpoints.","required":["data","pagination"],"properties":{"data":{"type":"array","items":{"type":"object","description":"An ACL rule. All relations represented as arrays of IDs.","required":["id","state","name","modified_at","modified_by","all_locations","locations","enabled","allow_all_users","deny_all_users","allow_all_groups","deny_all_groups","allow_all_network_devices","deny_all_network_devices","allowed_users","denied_users","allowed_groups","denied_groups","allowed_network_devices","denied_network_devices","use_manual_destination_settings","addresses","ports","protocols","any_address","any_port","any_protocol","aliases","destinations"],"properties":{"addresses":{"type":"string"},"aliases":{"type":"array","items":{"$ref":"#/components/schemas/i64"}},"all_locations":{"type":"boolean"},"allow_all_groups":{"type":"boolean"},"allow_all_network_devices":{"type":"boolean"},"allow_all_users":{"type":"boolean"},"allowed_groups":{"type":"array","items":{"$ref":"#/components/schemas/i64"}},"allowed_network_devices":{"type":"array","items":{"$ref":"#/components/schemas/i64"}},"allowed_users":{"type":"array","items":{"$ref":"#/components/schemas/i64"}},"any_address":{"type":"boolean"},"any_port":{"type":"boolean"},"any_protocol":{"type":"boolean"},"denied_groups":{"type":"array","items":{"$ref":"#/components/schemas/i64"}},"denied_network_devices":{"type":"array","items":{"$ref":"#/components/schemas/i64"}},"denied_users":{"type":"array","items":{"$ref":"#/components/schemas/i64"}},"deny_all_groups":{"type":"boolean"},"deny_all_network_devices":{"type":"boolean"},"deny_all_users":{"type":"boolean"},"destinations":{"type":"array","items":{"$ref":"#/components/schemas/i64"}},"enabled":{"type":"boolean"},"expires":{"type":["string","null"],"format":"date-time"},"id":{"$ref":"#/components/schemas/i64"},"locations":{"type":"array","items":{"$ref":"#/components/schemas/i64"}},"modified_at":{"type":"string","format":"date-time"},"modified_by":{"type":"string"},"name":{"type":"string"},"parent_id":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/i64"}]},"ports":{"type":"string"},"protocols":{"type":"array","items":{"$ref":"#/components/schemas/i32"}},"state":{"$ref":"#/components/schemas/RuleState"},"use_manual_destination_settings":{"type":"boolean"}}},"description":"Items of the requested page."},"pagination":{"$ref":"#/components/schemas/PaginationMeta"}}},"i64":{"type":"integer","format":"int64"},"i32":{"type":"integer","format":"int32"},"RuleState":{"type":"string","description":"ACL rule can be in one of the following states:\n- New: the rule has been created and not yet applied\n- Modified: the rule has been modified and not yet applied\n- Deleted: the rule has been marked for deletion but not yed removed\n- Applied: the rule was applied\n- Expired: the rule is past it's expiration date\n\nApplied state does NOT guarantee that all locations have received the rule\nand performed appropriate operations, only that the next time configuration\nis being sent it will include this rule.","enum":["New","Modified","Deleted","Applied","Expired"]},"PaginationMeta":{"type":"object","description":"Pagination metadata included in the response.","required":["current_page","page_size","total_items","total_pages"],"properties":{"current_page":{"type":"integer","format":"int32","description":"Number of the returned page, starting from 1.","minimum":0},"next_page":{"type":["integer","null"],"format":"int32","description":"Number of the next page, or `null` on the last page.","minimum":0},"page_size":{"type":"integer","format":"int32","description":"Requested page size.","minimum":0},"total_items":{"type":"integer","format":"int32","description":"Total number of items matching the query.","minimum":0},"total_pages":{"type":"integer","format":"int32","description":"Total number of pages for the requested page size.","minimum":0}}}}}}
```

## The PaginatedApiResponse\_ApiActivityLogEvent object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"PaginatedApiResponse_ApiActivityLogEvent":{"type":"object","description":"Envelope returned by paginated endpoints.","required":["data","pagination"],"properties":{"data":{"type":"array","items":{"type":"object","description":"Activity log event as returned by the API.","required":["id","timestamp","user_id","username","event","module","device"],"properties":{"description":{"type":["string","null"]},"device":{"type":"string"},"event":{"type":"string"},"id":{"$ref":"#/components/schemas/i64"},"ip":{"type":["string","null"]},"location":{"type":["string","null"]},"module":{"$ref":"#/components/schemas/ActivityLogModule"},"timestamp":{"type":"string","format":"date-time"},"user_id":{"$ref":"#/components/schemas/i64"},"username":{"type":"string"}}},"description":"Items of the requested page."},"pagination":{"$ref":"#/components/schemas/PaginationMeta"}}},"i64":{"type":"integer","format":"int64"},"ActivityLogModule":{"type":"string","enum":["defguard","client","vpn","enrollment"]},"PaginationMeta":{"type":"object","description":"Pagination metadata included in the response.","required":["current_page","page_size","total_items","total_pages"],"properties":{"current_page":{"type":"integer","format":"int32","description":"Number of the returned page, starting from 1.","minimum":0},"next_page":{"type":["integer","null"],"format":"int32","description":"Number of the next page, or `null` on the last page.","minimum":0},"page_size":{"type":"integer","format":"int32","description":"Requested page size.","minimum":0},"total_items":{"type":"integer","format":"int32","description":"Total number of items matching the query.","minimum":0},"total_pages":{"type":"integer","format":"int32","description":"Total number of pages for the requested page size.","minimum":0}}}}}}
```

## The PaginatedApiResponse\_LocationConnectedNetworkDevice object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"PaginatedApiResponse_LocationConnectedNetworkDevice":{"type":"object","description":"Envelope returned by paginated endpoints.","required":["data","pagination"],"properties":{"data":{"type":"array","items":{"type":"object","required":["device_id","device_name","public_ip","vpn_ips","connected_at","total_upload","total_download","stats"],"properties":{"connected_at":{"type":"string","format":"date-time"},"device_id":{"$ref":"#/components/schemas/i64"},"device_name":{"type":"string"},"public_ip":{"type":"string"},"stats":{"type":"array","items":{"$ref":"#/components/schemas/WireguardStatsRow"}},"total_download":{"type":"integer","format":"int64"},"total_upload":{"type":"integer","format":"int64"},"vpn_ips":{"type":"array","items":{"type":"string"}}}},"description":"Items of the requested page."},"pagination":{"$ref":"#/components/schemas/PaginationMeta"}}},"i64":{"type":"integer","format":"int64"},"WireguardStatsRow":{"type":"object","properties":{"collected_at":{"type":["string","null"],"format":"date-time"},"download":{"type":["integer","null"],"format":"int64"},"upload":{"type":["integer","null"],"format":"int64"}}},"PaginationMeta":{"type":"object","description":"Pagination metadata included in the response.","required":["current_page","page_size","total_items","total_pages"],"properties":{"current_page":{"type":"integer","format":"int32","description":"Number of the returned page, starting from 1.","minimum":0},"next_page":{"type":["integer","null"],"format":"int32","description":"Number of the next page, or `null` on the last page.","minimum":0},"page_size":{"type":"integer","format":"int32","description":"Requested page size.","minimum":0},"total_items":{"type":"integer","format":"int32","description":"Total number of items matching the query.","minimum":0},"total_pages":{"type":"integer","format":"int32","description":"Total number of pages for the requested page size.","minimum":0}}}}}}
```

## The PaginatedApiResponse\_LocationConnectedUserStats object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"PaginatedApiResponse_LocationConnectedUserStats":{"type":"object","description":"Envelope returned by paginated endpoints.","required":["data","pagination"],"properties":{"data":{"type":"array","items":{"type":"object","required":["user_id","first_name","last_name","full_name","connected_devices_count","public_ip","vpn_ips","connected_at","total_upload","total_download","stats"],"properties":{"connected_at":{"type":"string","format":"date-time"},"connected_devices_count":{"type":"integer","format":"int32","minimum":0},"first_name":{"type":"string"},"full_name":{"type":"string"},"last_name":{"type":"string"},"public_ip":{"type":"string"},"stats":{"type":"array","items":{"$ref":"#/components/schemas/WireguardStatsRow"}},"total_download":{"type":"integer","format":"int64"},"total_upload":{"type":"integer","format":"int64"},"user_id":{"$ref":"#/components/schemas/i64"},"vpn_ips":{"type":"array","items":{"type":"string"}}}},"description":"Items of the requested page."},"pagination":{"$ref":"#/components/schemas/PaginationMeta"}}},"WireguardStatsRow":{"type":"object","properties":{"collected_at":{"type":["string","null"],"format":"date-time"},"download":{"type":["integer","null"],"format":"int64"},"upload":{"type":["integer","null"],"format":"int64"}}},"i64":{"type":"integer","format":"int64"},"PaginationMeta":{"type":"object","description":"Pagination metadata included in the response.","required":["current_page","page_size","total_items","total_pages"],"properties":{"current_page":{"type":"integer","format":"int32","description":"Number of the returned page, starting from 1.","minimum":0},"next_page":{"type":["integer","null"],"format":"int32","description":"Number of the next page, or `null` on the last page.","minimum":0},"page_size":{"type":"integer","format":"int32","description":"Requested page size.","minimum":0},"total_items":{"type":"integer","format":"int32","description":"Total number of items matching the query.","minimum":0},"total_pages":{"type":"integer","format":"int32","description":"Total number of pages for the requested page size.","minimum":0}}}}}}
```

## The PaginatedApiResponse\_NetworkDeviceInfo object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"PaginatedApiResponse_NetworkDeviceInfo":{"type":"object","description":"Envelope returned by paginated endpoints.","required":["data","pagination"],"properties":{"data":{"type":"array","items":{"type":"object","required":["id","name","assigned_ips","added_by","added_date","location","wireguard_pubkey","configured","split_ips"],"properties":{"added_by":{"type":"string"},"added_date":{"type":"string","format":"date-time"},"assigned_ips":{"type":"array","items":{"type":"string"}},"configured":{"type":"boolean"},"description":{"type":["string","null"]},"id":{"$ref":"#/components/schemas/i64"},"location":{"$ref":"#/components/schemas/NetworkDeviceLocation"},"name":{"type":"string"},"split_ips":{"type":"array","items":{"$ref":"#/components/schemas/SplitIp"}},"wireguard_pubkey":{"type":"string"}}},"description":"Items of the requested page."},"pagination":{"$ref":"#/components/schemas/PaginationMeta"}}},"i64":{"type":"integer","format":"int64"},"NetworkDeviceLocation":{"type":"object","required":["id","name"],"properties":{"id":{"$ref":"#/components/schemas/i64"},"name":{"type":"string"}}},"SplitIp":{"type":"object","required":["network_part","modifiable_part","network_prefix","ip"],"properties":{"ip":{"type":"string"},"modifiable_part":{"type":"string"},"network_part":{"type":"string"},"network_prefix":{"type":"string"}}},"PaginationMeta":{"type":"object","description":"Pagination metadata included in the response.","required":["current_page","page_size","total_items","total_pages"],"properties":{"current_page":{"type":"integer","format":"int32","description":"Number of the returned page, starting from 1.","minimum":0},"next_page":{"type":["integer","null"],"format":"int32","description":"Number of the next page, or `null` on the last page.","minimum":0},"page_size":{"type":"integer","format":"int32","description":"Requested page size.","minimum":0},"total_items":{"type":"integer","format":"int32","description":"Total number of items matching the query.","minimum":0},"total_pages":{"type":"integer","format":"int32","description":"Total number of pages for the requested page size.","minimum":0}}}}}}
```

## The PaginatedApiResponse\_String object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"PaginatedApiResponse_String":{"type":"object","description":"Envelope returned by paginated endpoints.","required":["data","pagination"],"properties":{"data":{"type":"array","items":{"type":"string"},"description":"Items of the requested page."},"pagination":{"$ref":"#/components/schemas/PaginationMeta"}}},"PaginationMeta":{"type":"object","description":"Pagination metadata included in the response.","required":["current_page","page_size","total_items","total_pages"],"properties":{"current_page":{"type":"integer","format":"int32","description":"Number of the returned page, starting from 1.","minimum":0},"next_page":{"type":["integer","null"],"format":"int32","description":"Number of the next page, or `null` on the last page.","minimum":0},"page_size":{"type":"integer","format":"int32","description":"Requested page size.","minimum":0},"total_items":{"type":"integer","format":"int32","description":"Total number of items matching the query.","minimum":0},"total_pages":{"type":"integer","format":"int32","description":"Total number of pages for the requested page size.","minimum":0}}}}}}
```

## The PaginatedApiResponse\_UserInfo object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"PaginatedApiResponse_UserInfo":{"type":"object","description":"Envelope returned by paginated endpoints.","required":["data","pagination"],"properties":{"data":{"type":"array","items":{"type":"object","required":["id","username","last_name","first_name","name","email","mfa_enabled","totp_enabled","email_mfa_enabled","groups","mfa_method","authorized_apps","is_active","enrolled","is_admin","ldap_pass_requires_change","devices"],"properties":{"authorized_apps":{"type":"array","items":{"$ref":"#/components/schemas/OAuth2AuthorizedAppInfo"}},"devices":{"type":"array","items":{"$ref":"#/components/schemas/UserDevice"}},"email":{"type":"string"},"email_mfa_enabled":{"type":"boolean"},"enrolled":{"type":"boolean"},"first_name":{"type":"string"},"groups":{"type":"array","items":{"type":"string"}},"id":{"$ref":"#/components/schemas/i64"},"is_active":{"type":"boolean"},"is_admin":{"type":"boolean"},"last_name":{"type":"string"},"ldap_pass_requires_change":{"type":"boolean"},"mfa_enabled":{"type":"boolean"},"mfa_method":{"$ref":"#/components/schemas/MFAMethod"},"name":{"type":"string"},"phone":{"type":["string","null"]},"totp_enabled":{"type":"boolean"},"username":{"type":"string"}}},"description":"Items of the requested page."},"pagination":{"$ref":"#/components/schemas/PaginationMeta"}}},"OAuth2AuthorizedAppInfo":{"type":"object","required":["oauth2client_id","oauth2client_name"],"properties":{"oauth2client_id":{"$ref":"#/components/schemas/i64"},"oauth2client_name":{"type":"string"}}},"i64":{"type":"integer","format":"int64"},"UserDevice":{"allOf":[{"$ref":"#/components/schemas/Device_i64"},{"type":"object","required":["networks"],"properties":{"networks":{"type":"array","items":{"$ref":"#/components/schemas/UserDeviceNetworkInfo"}}}}]},"Device_i64":{"type":"object","required":["id","name","wireguard_pubkey","user_id","created","device_type","configured"],"properties":{"configured":{"type":"boolean","description":"Whether the device is ready to use. Unconfigured devices are not sent to the gateway.\nSuch a device is already added to all its networks, but is still missing something,\nfor example its public key."},"created":{"type":"string","format":"date-time"},"description":{"type":["string","null"]},"device_type":{"$ref":"#/components/schemas/DeviceType"},"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"user_id":{"$ref":"#/components/schemas/i64"},"wireguard_pubkey":{"type":"string"}}},"DeviceType":{"type":"string","enum":["user","network"]},"UserDeviceNetworkInfo":{"type":"object","required":["network_id","network_name","network_gateway_ip","device_wireguard_ips","is_active","location_mfa_mode"],"properties":{"device_wireguard_ips":{"type":"array","items":{"type":"string"}},"is_active":{"type":"boolean"},"last_connected_at":{"type":["string","null"],"format":"date-time"},"last_connected_ip":{"type":["string","null"]},"location_mfa_mode":{"$ref":"#/components/schemas/LocationMfaMode"},"network_gateway_ip":{"type":"string"},"network_id":{"$ref":"#/components/schemas/i64"},"network_name":{"type":"string"}}},"LocationMfaMode":{"type":"string","enum":["disabled","internal","external"]},"MFAMethod":{"type":"string","enum":["None","OneTimePassword","Webauthn","Email"]},"PaginationMeta":{"type":"object","description":"Pagination metadata included in the response.","required":["current_page","page_size","total_items","total_pages"],"properties":{"current_page":{"type":"integer","format":"int32","description":"Number of the returned page, starting from 1.","minimum":0},"next_page":{"type":["integer","null"],"format":"int32","description":"Number of the next page, or `null` on the last page.","minimum":0},"page_size":{"type":"integer","format":"int32","description":"Requested page size.","minimum":0},"total_items":{"type":"integer","format":"int32","description":"Total number of items matching the query.","minimum":0},"total_pages":{"type":"integer","format":"int32","description":"Total number of pages for the requested page size.","minimum":0}}}}}}
```

## The PaginationMeta object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"PaginationMeta":{"type":"object","description":"Pagination metadata included in the response.","required":["current_page","page_size","total_items","total_pages"],"properties":{"current_page":{"type":"integer","format":"int32","description":"Number of the returned page, starting from 1.","minimum":0},"next_page":{"type":["integer","null"],"format":"int32","description":"Number of the next page, or `null` on the last page.","minimum":0},"page_size":{"type":"integer","format":"int32","description":"Requested page size.","minimum":0},"total_items":{"type":"integer","format":"int32","description":"Total number of items matching the query.","minimum":0},"total_pages":{"type":"integer","format":"int32","description":"Total number of pages for the requested page size.","minimum":0}}}}}}
```

## The PasswordChange object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"PasswordChange":{"type":"object","required":["new_password"],"properties":{"new_password":{"type":"string"}}}}}}
```

## The PasswordChangeSelf object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"PasswordChangeSelf":{"type":"object","required":["old_password","new_password"],"properties":{"new_password":{"type":"string"},"old_password":{"type":"string"}}}}}}
```

## The Proxy object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"Proxy":{"type":"object","required":["id","name","address","port","enabled","modified_at","modified_by"],"properties":{"address":{"type":"string"},"certificate_expiry":{"type":["string","null"],"format":"date-time"},"certificate_serial":{"type":["string","null"]},"connected_at":{"type":["string","null"],"format":"date-time"},"core_client_cert_expiry":{"type":["string","null"],"format":"date-time"},"disconnected_at":{"type":["string","null"],"format":"date-time"},"enabled":{"type":"boolean"},"id":{"type":"integer","format":"int64"},"modified_at":{"type":"string","format":"date-time"},"modified_by":{"type":"string"},"name":{"type":"string"},"port":{"type":"integer","format":"int32"},"version":{"type":["string","null"]}}}}}}
```

## The ProxyInfo object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"ProxyInfo":{"type":"object","required":["id","name","address","port","enabled","modified_at","modified_by"],"properties":{"address":{"type":"string"},"certificate_expiry":{"type":["string","null"],"format":"date-time"},"certificate_serial":{"type":["string","null"]},"connected_at":{"type":["string","null"],"format":"date-time"},"disconnected_at":{"type":["string","null"],"format":"date-time"},"enabled":{"type":"boolean"},"id":{"$ref":"#/components/schemas/i64"},"modified_at":{"type":"string","format":"date-time"},"modified_by":{"type":"string"},"name":{"type":"string"},"port":{"type":"integer","format":"int32"},"version":{"type":["string","null"]}}},"i64":{"type":"integer","format":"int64"}}}}
```

## The ProxyUpdateData object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"ProxyUpdateData":{"type":"object","required":["name","enabled"],"properties":{"enabled":{"type":"boolean"},"name":{"type":"string"}}}}}}
```

## The RecoveryCode object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"RecoveryCode":{"type":"object","required":["code"],"properties":{"code":{"type":"string"}}}}}}
```

## The RecoveryCodes object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"RecoveryCodes":{"type":"object","properties":{"codes":{"type":["array","null"],"items":{"type":"string"}}}}}}}
```

## The RenameRequest object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"RenameRequest":{"type":"object","required":["name"],"properties":{"name":{"type":"string"}}}}}}
```

## The RuleState object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"RuleState":{"type":"string","description":"ACL rule can be in one of the following states:\n- New: the rule has been created and not yet applied\n- Modified: the rule has been modified and not yet applied\n- Deleted: the rule has been marked for deletion but not yed removed\n- Applied: the rule was applied\n- Expired: the rule is past it's expiration date\n\nApplied state does NOT guarantee that all locations have received the rule\nand performed appropriate operations, only that the next time configuration\nis being sent it will include this rule.","enum":["New","Modified","Deleted","Applied","Expired"]}}}}
```

## The SecurityKey object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"SecurityKey":{"type":"object","description":"A registered security key.","required":["id","name"],"properties":{"id":{"$ref":"#/components/schemas/i64"},"name":{"type":"string"}}},"i64":{"type":"integer","format":"int64"}}}}
```

## The ServiceLocationMode object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"ServiceLocationMode":{"type":"string","enum":["disabled","prelogon","alwayson"]}}}}
```

## The Settings object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"Settings":{"allOf":[{"$ref":"#/components/schemas/SmtpSettings"},{"type":"object","required":["openid_enabled","wireguard_enabled","webhooks_enabled","worker_enabled","challenge_template","instance_name","main_logo_url","nav_logo_url","enrollment_vpn_step_optional","enrollment_use_welcome_message_as_email","enrollment_send_welcome_email","ldap_use_starttls","ldap_tls_verify_cert","ldap_sync_status","ldap_enabled","ldap_sync_enabled","ldap_is_authoritative","ldap_uses_ad","ldap_sync_account_status","ldap_sync_interval","ldap_user_auxiliary_obj_classes","ldap_sync_groups","ldap_remote_enrollment_enabled","ldap_remote_enrollment_send_invite","openid_create_account","openid_username_handling","gateway_disconnect_notifications_enabled","gateway_disconnect_notifications_inactivity_threshold","gateway_disconnect_notifications_reconnect_notification_enabled","defguard_url","default_admin_group_name","authentication_period_days","mfa_code_timeout_seconds","public_proxy_url","enable_stats_purge","stats_purge_frequency_hours","stats_purge_threshold_days","enrollment_token_timeout_hours","password_reset_token_timeout_hours","enrollment_session_timeout_minutes","password_reset_session_timeout_minutes"],"properties":{"authentication_period_days":{"type":"integer","format":"int32"},"challenge_template":{"type":"string"},"default_admin_group_name":{"type":"string"},"default_admin_id":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/i64"}]},"defguard_url":{"type":"string"},"enable_stats_purge":{"type":"boolean"},"enrollment_send_welcome_email":{"type":"boolean"},"enrollment_session_timeout_minutes":{"type":"integer","format":"int32"},"enrollment_token_timeout_hours":{"type":"integer","format":"int32"},"enrollment_use_welcome_message_as_email":{"type":"boolean"},"enrollment_vpn_step_optional":{"type":"boolean"},"enrollment_welcome_email":{"type":["string","null"]},"enrollment_welcome_email_subject":{"type":["string","null"]},"enrollment_welcome_message":{"type":["string","null"]},"gateway_disconnect_notifications_enabled":{"type":"boolean"},"gateway_disconnect_notifications_inactivity_threshold":{"type":"integer","format":"int32"},"gateway_disconnect_notifications_reconnect_notification_enabled":{"type":"boolean"},"instance_name":{"type":"string"},"ldap_bind_password":{"type":["string","null"]},"ldap_bind_username":{"type":["string","null"]},"ldap_enabled":{"type":"boolean"},"ldap_group_member_attr":{"type":["string","null"]},"ldap_group_obj_class":{"type":["string","null"]},"ldap_group_search_base":{"type":["string","null"]},"ldap_groupname_attr":{"type":["string","null"]},"ldap_is_authoritative":{"type":"boolean"},"ldap_member_attr":{"type":["string","null"]},"ldap_remote_enrollment_enabled":{"type":"boolean"},"ldap_remote_enrollment_send_invite":{"type":"boolean"},"ldap_sync_account_status":{"type":"boolean"},"ldap_sync_enabled":{"type":"boolean"},"ldap_sync_groups":{"type":"array","items":{"type":"string"}},"ldap_sync_interval":{"type":"integer","format":"int32"},"ldap_sync_status":{"$ref":"#/components/schemas/LdapSyncStatus"},"ldap_tls_verify_cert":{"type":"boolean"},"ldap_url":{"type":["string","null"]},"ldap_use_starttls":{"type":"boolean"},"ldap_user_auxiliary_obj_classes":{"type":"array","items":{"type":"string"}},"ldap_user_obj_class":{"type":["string","null"]},"ldap_user_rdn_attr":{"type":["string","null"]},"ldap_user_search_base":{"type":["string","null"]},"ldap_username_attr":{"type":["string","null"]},"ldap_uses_ad":{"type":"boolean"},"license":{"type":["string","null"]},"main_logo_url":{"type":"string"},"mfa_code_timeout_seconds":{"type":"integer","format":"int32"},"nav_logo_url":{"type":"string"},"openid_create_account":{"type":"boolean"},"openid_enabled":{"type":"boolean"},"openid_username_handling":{"$ref":"#/components/schemas/OpenIdUsernameHandling"},"password_reset_session_timeout_minutes":{"type":"integer","format":"int32"},"password_reset_token_timeout_hours":{"type":"integer","format":"int32"},"public_proxy_url":{"type":"string"},"secret_key":{"type":["string","null"]},"stats_purge_frequency_hours":{"type":"integer","format":"int32"},"stats_purge_threshold_days":{"type":"integer","format":"int32"},"webhooks_enabled":{"type":"boolean"},"wireguard_enabled":{"type":"boolean"},"worker_enabled":{"type":"boolean"}}}],"description":"Instance settings."},"SmtpSettings":{"type":"object","required":["smtp_encryption","smtp_authentication"],"properties":{"smtp_authentication":{"$ref":"#/components/schemas/SmtpAuthentication"},"smtp_encryption":{"$ref":"#/components/schemas/SmtpEncryption"},"smtp_oauth_client_id":{"type":["string","null"]},"smtp_oauth_client_secret":{"type":["string","null"]},"smtp_oauth_issuer_url":{"type":["string","null"]},"smtp_oauth_refresh_token":{"type":["string","null"]},"smtp_oauth_tenant_id":{"type":["string","null"]},"smtp_password":{"type":["string","null"]},"smtp_port":{"type":["integer","null"],"format":"int32"},"smtp_sender":{"type":["string","null"]},"smtp_server":{"type":["string","null"]},"smtp_user":{"type":["string","null"]}}},"SmtpAuthentication":{"type":"string","enum":["None","Login","XOAuth2"]},"SmtpEncryption":{"type":"string","enum":["None","StartTls","ImplicitTls"]},"i64":{"type":"integer","format":"int64"},"LdapSyncStatus":{"type":"string","enum":["InSync","OutOfSync"]},"OpenIdUsernameHandling":{"type":"string","enum":["RemoveForbidden","ReplaceForbidden","PruneEmailDomain"]}}}}
```

## The SmtpAuthentication object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"SmtpAuthentication":{"type":"string","enum":["None","Login","XOAuth2"]}}}}
```

## The SmtpEncryption object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"SmtpEncryption":{"type":"string","enum":["None","StartTls","ImplicitTls"]}}}}
```

## The SmtpSettings object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"SmtpSettings":{"type":"object","required":["smtp_encryption","smtp_authentication"],"properties":{"smtp_authentication":{"$ref":"#/components/schemas/SmtpAuthentication"},"smtp_encryption":{"$ref":"#/components/schemas/SmtpEncryption"},"smtp_oauth_client_id":{"type":["string","null"]},"smtp_oauth_client_secret":{"type":["string","null"]},"smtp_oauth_issuer_url":{"type":["string","null"]},"smtp_oauth_refresh_token":{"type":["string","null"]},"smtp_oauth_tenant_id":{"type":["string","null"]},"smtp_password":{"type":["string","null"]},"smtp_port":{"type":["integer","null"],"format":"int32"},"smtp_sender":{"type":["string","null"]},"smtp_server":{"type":["string","null"]},"smtp_user":{"type":["string","null"]}}},"SmtpAuthentication":{"type":"string","enum":["None","Login","XOAuth2"]},"SmtpEncryption":{"type":"string","enum":["None","StartTls","ImplicitTls"]}}}}
```

## The SortKey object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"SortKey":{"type":"string","enum":["username","name","email"]}}}}
```

## The SortOrder object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"SortOrder":{"type":"string","enum":["asc","desc"]}}}}
```

## The SplitIp object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"SplitIp":{"type":"object","required":["network_part","modifiable_part","network_prefix","ip"],"properties":{"ip":{"type":"string"},"modifiable_part":{"type":"string"},"network_part":{"type":"string"},"network_prefix":{"type":"string"}}}}}}
```

## The StartEnrollmentRequest object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"StartEnrollmentRequest":{"type":"object","properties":{"email":{"type":["string","null"]},"send_enrollment_notification":{"type":"boolean"},"token_expiration_time":{"type":["string","null"]}}}}}}
```

## The StartNetworkDeviceSetup object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"StartNetworkDeviceSetup":{"type":"object","required":["name","location_id","assigned_ips"],"properties":{"assigned_ips":{"type":"array","items":{"type":"string"}},"description":{"type":["string","null"]},"location_id":{"type":"integer","format":"int64"},"name":{"type":"string"}}}}}}
```

## The StaticIpAssignment object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"StaticIpAssignment":{"type":"object","required":["device_id","location_id","ips"],"properties":{"device_id":{"type":"integer","format":"int64"},"ips":{"type":"array","items":{"type":"string"}},"location_id":{"$ref":"#/components/schemas/i64"}}},"i64":{"type":"integer","format":"int64"}}}}
```

## The TestMail object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"TestMail":{"type":"object","required":["to"],"properties":{"to":{"type":"string"}}}}}}
```

## The UserDetails object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"UserDetails":{"type":"object","required":["user","biometric_enabled_devices"],"properties":{"biometric_enabled_devices":{"type":"array","items":{"type":"integer","format":"int64"}},"security_keys":{"type":"array","items":{"$ref":"#/components/schemas/SecurityKey"}},"user":{"$ref":"#/components/schemas/UserInfo"}}},"SecurityKey":{"type":"object","description":"A registered security key.","required":["id","name"],"properties":{"id":{"$ref":"#/components/schemas/i64"},"name":{"type":"string"}}},"i64":{"type":"integer","format":"int64"},"UserInfo":{"type":"object","required":["id","username","last_name","first_name","name","email","mfa_enabled","totp_enabled","email_mfa_enabled","groups","mfa_method","authorized_apps","is_active","enrolled","is_admin","ldap_pass_requires_change","devices"],"properties":{"authorized_apps":{"type":"array","items":{"$ref":"#/components/schemas/OAuth2AuthorizedAppInfo"}},"devices":{"type":"array","items":{"$ref":"#/components/schemas/UserDevice"}},"email":{"type":"string"},"email_mfa_enabled":{"type":"boolean"},"enrolled":{"type":"boolean"},"first_name":{"type":"string"},"groups":{"type":"array","items":{"type":"string"}},"id":{"$ref":"#/components/schemas/i64"},"is_active":{"type":"boolean"},"is_admin":{"type":"boolean"},"last_name":{"type":"string"},"ldap_pass_requires_change":{"type":"boolean"},"mfa_enabled":{"type":"boolean"},"mfa_method":{"$ref":"#/components/schemas/MFAMethod"},"name":{"type":"string"},"phone":{"type":["string","null"]},"totp_enabled":{"type":"boolean"},"username":{"type":"string"}}},"OAuth2AuthorizedAppInfo":{"type":"object","required":["oauth2client_id","oauth2client_name"],"properties":{"oauth2client_id":{"$ref":"#/components/schemas/i64"},"oauth2client_name":{"type":"string"}}},"UserDevice":{"allOf":[{"$ref":"#/components/schemas/Device_i64"},{"type":"object","required":["networks"],"properties":{"networks":{"type":"array","items":{"$ref":"#/components/schemas/UserDeviceNetworkInfo"}}}}]},"Device_i64":{"type":"object","required":["id","name","wireguard_pubkey","user_id","created","device_type","configured"],"properties":{"configured":{"type":"boolean","description":"Whether the device is ready to use. Unconfigured devices are not sent to the gateway.\nSuch a device is already added to all its networks, but is still missing something,\nfor example its public key."},"created":{"type":"string","format":"date-time"},"description":{"type":["string","null"]},"device_type":{"$ref":"#/components/schemas/DeviceType"},"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"user_id":{"$ref":"#/components/schemas/i64"},"wireguard_pubkey":{"type":"string"}}},"DeviceType":{"type":"string","enum":["user","network"]},"UserDeviceNetworkInfo":{"type":"object","required":["network_id","network_name","network_gateway_ip","device_wireguard_ips","is_active","location_mfa_mode"],"properties":{"device_wireguard_ips":{"type":"array","items":{"type":"string"}},"is_active":{"type":"boolean"},"last_connected_at":{"type":["string","null"],"format":"date-time"},"last_connected_ip":{"type":["string","null"]},"location_mfa_mode":{"$ref":"#/components/schemas/LocationMfaMode"},"network_gateway_ip":{"type":"string"},"network_id":{"$ref":"#/components/schemas/i64"},"network_name":{"type":"string"}}},"LocationMfaMode":{"type":"string","enum":["disabled","internal","external"]},"MFAMethod":{"type":"string","enum":["None","OneTimePassword","Webauthn","Email"]}}}}
```

## The UserDevice object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"UserDevice":{"allOf":[{"$ref":"#/components/schemas/Device_i64"},{"type":"object","required":["networks"],"properties":{"networks":{"type":"array","items":{"$ref":"#/components/schemas/UserDeviceNetworkInfo"}}}}]},"Device_i64":{"type":"object","required":["id","name","wireguard_pubkey","user_id","created","device_type","configured"],"properties":{"configured":{"type":"boolean","description":"Whether the device is ready to use. Unconfigured devices are not sent to the gateway.\nSuch a device is already added to all its networks, but is still missing something,\nfor example its public key."},"created":{"type":"string","format":"date-time"},"description":{"type":["string","null"]},"device_type":{"$ref":"#/components/schemas/DeviceType"},"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"user_id":{"$ref":"#/components/schemas/i64"},"wireguard_pubkey":{"type":"string"}}},"DeviceType":{"type":"string","enum":["user","network"]},"i64":{"type":"integer","format":"int64"},"UserDeviceNetworkInfo":{"type":"object","required":["network_id","network_name","network_gateway_ip","device_wireguard_ips","is_active","location_mfa_mode"],"properties":{"device_wireguard_ips":{"type":"array","items":{"type":"string"}},"is_active":{"type":"boolean"},"last_connected_at":{"type":["string","null"],"format":"date-time"},"last_connected_ip":{"type":["string","null"]},"location_mfa_mode":{"$ref":"#/components/schemas/LocationMfaMode"},"network_gateway_ip":{"type":"string"},"network_id":{"$ref":"#/components/schemas/i64"},"network_name":{"type":"string"}}},"LocationMfaMode":{"type":"string","enum":["disabled","internal","external"]}}}}
```

## The UserDeviceNetworkInfo object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"UserDeviceNetworkInfo":{"type":"object","required":["network_id","network_name","network_gateway_ip","device_wireguard_ips","is_active","location_mfa_mode"],"properties":{"device_wireguard_ips":{"type":"array","items":{"type":"string"}},"is_active":{"type":"boolean"},"last_connected_at":{"type":["string","null"],"format":"date-time"},"last_connected_ip":{"type":["string","null"]},"location_mfa_mode":{"$ref":"#/components/schemas/LocationMfaMode"},"network_gateway_ip":{"type":"string"},"network_id":{"$ref":"#/components/schemas/i64"},"network_name":{"type":"string"}}},"LocationMfaMode":{"type":"string","enum":["disabled","internal","external"]},"i64":{"type":"integer","format":"int64"}}}}
```

## The UserInfo object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"UserInfo":{"type":"object","required":["id","username","last_name","first_name","name","email","mfa_enabled","totp_enabled","email_mfa_enabled","groups","mfa_method","authorized_apps","is_active","enrolled","is_admin","ldap_pass_requires_change","devices"],"properties":{"authorized_apps":{"type":"array","items":{"$ref":"#/components/schemas/OAuth2AuthorizedAppInfo"}},"devices":{"type":"array","items":{"$ref":"#/components/schemas/UserDevice"}},"email":{"type":"string"},"email_mfa_enabled":{"type":"boolean"},"enrolled":{"type":"boolean"},"first_name":{"type":"string"},"groups":{"type":"array","items":{"type":"string"}},"id":{"$ref":"#/components/schemas/i64"},"is_active":{"type":"boolean"},"is_admin":{"type":"boolean"},"last_name":{"type":"string"},"ldap_pass_requires_change":{"type":"boolean"},"mfa_enabled":{"type":"boolean"},"mfa_method":{"$ref":"#/components/schemas/MFAMethod"},"name":{"type":"string"},"phone":{"type":["string","null"]},"totp_enabled":{"type":"boolean"},"username":{"type":"string"}}},"OAuth2AuthorizedAppInfo":{"type":"object","required":["oauth2client_id","oauth2client_name"],"properties":{"oauth2client_id":{"$ref":"#/components/schemas/i64"},"oauth2client_name":{"type":"string"}}},"i64":{"type":"integer","format":"int64"},"UserDevice":{"allOf":[{"$ref":"#/components/schemas/Device_i64"},{"type":"object","required":["networks"],"properties":{"networks":{"type":"array","items":{"$ref":"#/components/schemas/UserDeviceNetworkInfo"}}}}]},"Device_i64":{"type":"object","required":["id","name","wireguard_pubkey","user_id","created","device_type","configured"],"properties":{"configured":{"type":"boolean","description":"Whether the device is ready to use. Unconfigured devices are not sent to the gateway.\nSuch a device is already added to all its networks, but is still missing something,\nfor example its public key."},"created":{"type":"string","format":"date-time"},"description":{"type":["string","null"]},"device_type":{"$ref":"#/components/schemas/DeviceType"},"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"user_id":{"$ref":"#/components/schemas/i64"},"wireguard_pubkey":{"type":"string"}}},"DeviceType":{"type":"string","enum":["user","network"]},"UserDeviceNetworkInfo":{"type":"object","required":["network_id","network_name","network_gateway_ip","device_wireguard_ips","is_active","location_mfa_mode"],"properties":{"device_wireguard_ips":{"type":"array","items":{"type":"string"}},"is_active":{"type":"boolean"},"last_connected_at":{"type":["string","null"],"format":"date-time"},"last_connected_ip":{"type":["string","null"]},"location_mfa_mode":{"$ref":"#/components/schemas/LocationMfaMode"},"network_gateway_ip":{"type":"string"},"network_id":{"$ref":"#/components/schemas/i64"},"network_name":{"type":"string"}}},"LocationMfaMode":{"type":"string","enum":["disabled","internal","external"]},"MFAMethod":{"type":"string","enum":["None","OneTimePassword","Webauthn","Email"]}}}}
```

## The UserSnatBinding object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"UserSnatBinding":{"type":"object","required":["id","user_id","location_id","public_ip"],"properties":{"id":{"type":"integer","format":"int64"},"location_id":{"$ref":"#/components/schemas/i64"},"public_ip":{"type":"string"},"user_id":{"$ref":"#/components/schemas/i64"}}},"i64":{"type":"integer","format":"int64"}}}}
```

## The Username object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"Username":{"type":"object","required":["username"],"properties":{"username":{"type":"string"}}}}}}
```

## The ValidateIpAssignmentRequest object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"ValidateIpAssignmentRequest":{"type":"object","required":["device_id","ip","location"],"properties":{"device_id":{"type":"integer","format":"int64"},"ip":{"type":"string"},"location":{"$ref":"#/components/schemas/i64"}}},"i64":{"type":"integer","format":"int64"}}}}
```

## The WebAuthnRegistration object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"WebAuthnRegistration":{"type":"object","required":["name","rpkc"],"properties":{"name":{"type":"string"},"rpkc":{"type":"object"}}}}}}
```

## The WebHook object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"WebHook":{"type":"object","required":["id","url","description","token","enabled","on_user_created","on_user_deleted","on_user_modified","on_hwkey_provision"],"properties":{"description":{"type":"string"},"enabled":{"type":"boolean"},"id":{"type":"integer","format":"int64"},"on_hwkey_provision":{"type":"boolean"},"on_user_created":{"type":"boolean"},"on_user_deleted":{"type":"boolean"},"on_user_modified":{"type":"boolean"},"token":{"type":"string"},"url":{"type":"string"}}}}}}
```

## The WebHookData object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"WebHookData":{"type":"object","required":["url","description","token","enabled","on_user_created","on_user_deleted","on_user_modified","on_hwkey_provision"],"properties":{"description":{"type":"string"},"enabled":{"type":"boolean"},"on_hwkey_provision":{"type":"boolean"},"on_user_created":{"type":"boolean"},"on_user_deleted":{"type":"boolean"},"on_user_modified":{"type":"boolean"},"token":{"type":"string"},"url":{"type":"string"}}}}}}
```

## The WireguardNetwork object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"WireguardNetwork":{"type":"object","description":"Stores the configuration required to set up a WireGuard network.","required":["id","name","address","port","pubkey","endpoint","mtu","fwmark","allowed_ips","allow_all_groups","acl_enabled","acl_default_allow","keepalive_interval","peer_disconnect_threshold","location_mfa_mode","service_location_mode"],"properties":{"acl_default_allow":{"type":"boolean"},"acl_enabled":{"type":"boolean"},"address":{"type":"array","items":{"type":"string"}},"allow_all_groups":{"type":"boolean"},"allowed_ips":{"type":"array","items":{"type":"string"}},"connected_at":{"type":["string","null"],"format":"date-time"},"dns":{"type":["string","null"]},"endpoint":{"type":"string"},"fwmark":{"type":"integer","format":"int64"},"id":{"type":"integer","format":"int64"},"keepalive_interval":{"type":"integer","format":"int32"},"location_mfa_mode":{"$ref":"#/components/schemas/LocationMfaMode"},"mtu":{"type":"integer","format":"int32"},"name":{"type":"string"},"peer_disconnect_threshold":{"type":"integer","format":"int32"},"port":{"type":"integer","format":"int32"},"pubkey":{"type":"string"},"service_location_mode":{"$ref":"#/components/schemas/ServiceLocationMode"}}},"LocationMfaMode":{"type":"string","enum":["disabled","internal","external"]},"ServiceLocationMode":{"type":"string","enum":["disabled","prelogon","alwayson"]}}}}
```

## The WireguardNetworkData object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"WireguardNetworkData":{"type":"object","required":["name","address","endpoint","port","mtu","fwmark","allow_all_groups","allowed_groups","keepalive_interval","peer_disconnect_threshold","acl_enabled","acl_default_allow","location_mfa_mode","service_location_mode"],"properties":{"acl_default_allow":{"type":"boolean"},"acl_enabled":{"type":"boolean"},"address":{"type":"string"},"allow_all_groups":{"type":"boolean"},"allowed_groups":{"type":"array","items":{"type":"string"}},"allowed_ips":{"type":["string","null"]},"dns":{"type":["string","null"]},"endpoint":{"type":"string"},"fwmark":{"type":"integer","format":"int64"},"keepalive_interval":{"type":"integer","format":"int32"},"location_mfa_mode":{"$ref":"#/components/schemas/LocationMfaMode"},"mtu":{"type":"integer","format":"int32"},"name":{"type":"string"},"peer_disconnect_threshold":{"type":"integer","format":"int32"},"port":{"type":"integer","format":"int32"},"service_location_mode":{"$ref":"#/components/schemas/ServiceLocationMode"}}},"LocationMfaMode":{"type":"string","enum":["disabled","internal","external"]},"ServiceLocationMode":{"type":"string","enum":["disabled","prelogon","alwayson"]}}}}
```

## The WireguardNetworkInfo object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"WireguardNetworkInfo":{"allOf":[{"$ref":"#/components/schemas/WireguardNetwork_i64"},{"type":"object","required":["gateways","allowed_groups","has_devices"],"properties":{"allowed_groups":{"type":"array","items":{"type":"string"}},"gateways":{"type":"array","items":{"$ref":"#/components/schemas/GatewayInfo"}},"has_devices":{"type":"boolean"}}}]},"WireguardNetwork_i64":{"type":"object","description":"Stores the configuration required to set up a WireGuard network.","required":["id","name","address","port","pubkey","endpoint","mtu","fwmark","allowed_ips","allow_all_groups","acl_enabled","acl_default_allow","keepalive_interval","peer_disconnect_threshold","location_mfa_mode","service_location_mode"],"properties":{"acl_default_allow":{"type":"boolean"},"acl_enabled":{"type":"boolean"},"address":{"type":"array","items":{"type":"string"}},"allow_all_groups":{"type":"boolean"},"allowed_ips":{"type":"array","items":{"type":"string"}},"connected_at":{"type":["string","null"],"format":"date-time"},"dns":{"type":["string","null"]},"endpoint":{"type":"string"},"fwmark":{"type":"integer","format":"int64"},"id":{"type":"integer","format":"int64"},"keepalive_interval":{"type":"integer","format":"int32"},"location_mfa_mode":{"$ref":"#/components/schemas/LocationMfaMode"},"mtu":{"type":"integer","format":"int32"},"name":{"type":"string"},"peer_disconnect_threshold":{"type":"integer","format":"int32"},"port":{"type":"integer","format":"int32"},"pubkey":{"type":"string"},"service_location_mode":{"$ref":"#/components/schemas/ServiceLocationMode"}}},"LocationMfaMode":{"type":"string","enum":["disabled","internal","external"]},"ServiceLocationMode":{"type":"string","enum":["disabled","prelogon","alwayson"]},"GatewayInfo":{"type":"object","required":["id","location_id","name","address","port","connected","enabled","modified_at","modified_by","location_name"],"properties":{"address":{"type":"string"},"certificate_expiry":{"type":["string","null"],"format":"date-time"},"certificate_serial":{"type":["string","null"]},"connected":{"type":"boolean"},"connected_at":{"type":["string","null"],"format":"date-time"},"disconnected_at":{"type":["string","null"],"format":"date-time"},"enabled":{"type":"boolean"},"id":{"$ref":"#/components/schemas/i64"},"location_id":{"$ref":"#/components/schemas/i64"},"location_name":{"type":"string"},"modified_at":{"type":"string","format":"date-time"},"modified_by":{"type":"string"},"name":{"type":"string"},"port":{"type":"integer","format":"int32"},"version":{"type":["string","null"]}}},"i64":{"type":"integer","format":"int64"}}}}
```

## The WireguardNetwork\_i64 object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"WireguardNetwork_i64":{"type":"object","description":"Stores the configuration required to set up a WireGuard network.","required":["id","name","address","port","pubkey","endpoint","mtu","fwmark","allowed_ips","allow_all_groups","acl_enabled","acl_default_allow","keepalive_interval","peer_disconnect_threshold","location_mfa_mode","service_location_mode"],"properties":{"acl_default_allow":{"type":"boolean"},"acl_enabled":{"type":"boolean"},"address":{"type":"array","items":{"type":"string"}},"allow_all_groups":{"type":"boolean"},"allowed_ips":{"type":"array","items":{"type":"string"}},"connected_at":{"type":["string","null"],"format":"date-time"},"dns":{"type":["string","null"]},"endpoint":{"type":"string"},"fwmark":{"type":"integer","format":"int64"},"id":{"type":"integer","format":"int64"},"keepalive_interval":{"type":"integer","format":"int32"},"location_mfa_mode":{"$ref":"#/components/schemas/LocationMfaMode"},"mtu":{"type":"integer","format":"int32"},"name":{"type":"string"},"peer_disconnect_threshold":{"type":"integer","format":"int32"},"port":{"type":"integer","format":"int32"},"pubkey":{"type":"string"},"service_location_mode":{"$ref":"#/components/schemas/ServiceLocationMode"}}},"LocationMfaMode":{"type":"string","enum":["disabled","internal","external"]},"ServiceLocationMode":{"type":"string","enum":["disabled","prelogon","alwayson"]}}}}
```

## The WireguardStatsRow object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"WireguardStatsRow":{"type":"object","properties":{"collected_at":{"type":["string","null"],"format":"date-time"},"download":{"type":["integer","null"],"format":"int64"},"upload":{"type":["integer","null"],"format":"int64"}}}}}}
```

## The i32 object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"i32":{"type":"integer","format":"int32"}}}}
```

## The i64 object

```json
{"openapi":"3.1.0","info":{"title":"defguard Core API","version":"2.0.3"},"components":{"schemas":{"i64":{"type":"integer","format":"int64"}}}}
```
