Adam Nadrowski and Claude Opus 4.6
1baee2070f
fix: add omitempty to Network string fields to prevent sending empty values
...
Network create/update requests were sending empty strings for unset fields
(firewall_zone_id, radiusprofile_id, usergroup_id, dhcpd_dns_*, wan_dns*,
and 20+ others) because their JSON struct tags lacked omitempty. The UniFi
controller interprets an explicit empty firewall_zone_id as a zone
disassociation, which triggers a global zone rebuild that causes all zone
policies to disappear from the UI.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-06 23:00:02 -05:00
shadyeip and Claude Opus 4.5
74c1746ff5
feat: add network_ids support to FirewallZonePolicyDestination
...
- Add NetworkIDs and MatchOppositeNetworks fields to destination struct
- Add NETWORK to MatchingTarget validation for destination
- Update codegen schema to include destination network targeting
- Add AggregateNumPorts to DevicePortOverrides (compatibility fix)
This enables firewall zone policies to target specific destination
networks, matching the existing source.network_ids functionality.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-05 13:26:28 -05:00
filipowm and Mateusz Filipowicz
831fea8c4b
feat: update to the controller version 9.2.87
2025-06-23 10:01:10 +02:00
Brendann and GitHub
88d631c434
fix: updated FirewallZonePolicy.json to handle port list and ranges ( #68 )
2025-04-02 09:49:39 +02:00
Mateusz Filipowicz and GitHub
4814504c98
feat: support auto allow return traffic for firewall zone policy with create_allow_respond ( #60 )
2025-03-21 17:12:33 +01:00
Mateusz Filipowicz and GitHub
bfa3bba50d
fix: do not omit empty portal_customized_bg_image_filename and portal_customized_logo_filename ( #59 )
2025-03-21 16:58:24 +01:00
Mateusz Filipowicz and GitHub
b6512ab793
fix: perform client-side filtering on GET firewall zone, because API for getting single zone by ID does not exist ( #58 )
2025-03-20 20:42:16 +01:00
Mateusz Filipowicz and GitHub
a931ceb6bf
fix: remove match_mac from firewall zone destination which is not supported ( #57 )
2025-03-20 19:54:47 +01:00
Mateusz Filipowicz and GitHub
12bf4bae30
feat: support list of MAC addresses for Firewall Zone Policy ( #56 )
2025-03-20 19:54:13 +01:00
Mateusz Filipowicz and GitHub
1def1e4ec4
fix: adjust firewall zone policy resource date attributes ( #54 )
...
* fix: adjust firewall zone policy resource date attributes
2025-03-18 00:08:25 +01:00
Mateusz Filipowicz and GitHub
c8a3b96575
fix: adjust guest access settings ( #53 )
2025-03-17 04:09:53 +01:00
Mateusz Filipowicz and GitHub
873818ddac
feat: support Remember Me for prolonging session validity on user/pass authentication ( #52 )
2025-03-16 11:48:44 +01:00
Mateusz Filipowicz and GitHub
e41cfe08e2
fix: use omitEmpty only on hotspot for SettingIps ( #51 )
2025-03-16 02:18:36 +01:00
Mateusz Filipowicz and GitHub
98885a12a3
fix: allow empty fields in SettingMgmt ( #50 )
2025-03-14 12:27:01 +01:00
Mateusz Filipowicz
a10b02ca2c
fix: revert allowed empty fields for NTP servers
2025-03-11 00:54:44 +01:00
Mateusz Filipowicz and GitHub
55cfe22636
fix: allow more empty fields on rsyslogd, NTP, IPS and USG settings ( #45 )
2025-03-05 12:29:46 +01:00
Mateusz Filipowicz and GitHub
278a72fbb9
feat: add support for uploading Hotspot Captive Portal files (like background image, logo) ( #42 )
...
* feat: add support for uploading Hotspot Captive Portal files (like background image, logo)
* feat: add UploadPortalFileFromReader
2025-03-03 02:03:10 +01:00
Mateusz Filipowicz
bdc73a9811
docs: fix invalid godoc for generated settings methods
2025-03-02 22:27:49 +01:00
Mateusz Filipowicz and GitHub
a5955a6358
feat: support checking supported and enabled controller features ( #41 )
...
* feat: support checking supported and enabled controller features
* linting
2025-03-02 22:22:18 +01:00
Mateusz Filipowicz and GitHub
4e6e9d97b7
fix: add missing ip_group_id to firewall zone policy to support firewall groups of address-group type (ipv4) ( #39 )
...
fixes #38
2025-03-02 21:15:18 +01:00
Mateusz Filipowicz and GitHub
bbc373a354
fix: explicitly set Setting key when updating a settings ( #37 )
2025-02-23 14:00:19 +01:00
Mateusz Filipowicz and GitHub
e79dcb13f0
feat: add logging and support for custom logger ( #36 )
...
* feat: add support for logging
* fix linting
* chore: remove old APIError in favor of ServerError
2025-02-23 12:59:46 +01:00
Mateusz Filipowicz and GitHub
95a4ff87ea
fix: add missing field mapping for settings ( #35 )
...
* feat: add missing field mapping for settings
* fix: guest access settings expire should be int
2025-02-21 16:53:43 +01:00
Mateusz Filipowicz and GitHub
ae23f73810
fix: passing setting response body as pointer to Post method ( #34 )
2025-02-21 15:59:06 +01:00
Mateusz Filipowicz and GitHub
637809c663
feat: support Zone-Based Firewalls ( #33 )
...
* feat: support Zone-Based Firewalls
* chore: add usage example of zone-based firewall
* chore: add note to readme to support unifi controller v2
* fix: invalid path for reordering firewall zone policies
2025-02-20 18:48:04 +01:00
Mateusz Filipowicz and GitHub
16f71e7fe9
feat: add Version method to client to provide system version information ( #32 )
2025-02-19 09:19:20 +01:00
Mateusz Filipowicz and GitHub
d3a3d5a342
feat: allow creating own http.RoundTripper for http.Client with HttpRoundTripperProvider when customizing pre-configured http.Transport with HttpTransportCustomizer is not sufficient ( #31 )
...
feat: allow creating own http.RoundTripper for http.Client with `HttpRoundTripperProvider` when customizing pre-configured http.Transport with `HttpTransportCustomizer` is not sufficient
2025-02-19 01:28:11 +01:00
Mateusz Filipowicz and GitHub
7c7ef98c03
feat: rename HttpCustomizer to HttpTransportCustomizer and make it return http.Transport that is later used ( #30 )
...
* feat: rename HttpCustomizer to HttpTransportCustomizer and make it return http.Transport that is later used
* linting
2025-02-19 01:03:21 +01:00
Mateusz Filipowicz and GitHub
35e7b2c3cc
docs: add detailed usage documentation together with examples ( #29 )
...
* feat: rename Pass to Password in ClientConfig
* docs: add more detailed usage documentation together with examples
* chore: update issue templates
* docs: add codeowners, code of conduct and contributing docs
* chore: add editorconfig
* chore: apply linter
2025-02-18 22:36:08 +01:00
Mateusz Filipowicz and GitHub
7432260d3e
feat: expose all available actions on all resources through Client ( #27 )
2025-02-18 10:23:18 +01:00
Mateusz Filipowicz and GitHub
7b35725921
feat(experimental): add support for reading and updating all settings ( #25 )
2025-02-18 07:43:04 +01:00
Mateusz Filipowicz and GitHub
0e2736fa54
feat: remove deprecated SettingProviderCapabilities ( #24 )
2025-02-17 17:06:14 +01:00
Mateusz Filipowicz and GitHub
aa188a6faa
feat: add API v2 support by adding APGroup and DNSRecord resource handling with generated code ( #23 )
...
* feat: add API v2 support by adding APGroup and DNSRecord resource handling with generated code
* fix tests
2025-02-17 15:39:54 +01:00
Mateusz Filipowicz and GitHub
dca894e8e7
feat: use Client interface instead of client struct when interacting with UniFi SDK ( #21 )
...
* feat: use Client interface instead of client struct when interacting with UniFi SDK
Breaking change!
* chore: linting
* chore: linting
2025-02-17 09:38:41 +01:00
Mateusz Filipowicz
c6e20b675c
refactor: major refactor of unifi.go to split it into multiple files for cohesiveness and readability.
...
Even more documentation
2025-02-10 22:59:39 +01:00
Mateusz Filipowicz
473a5d0d5c
chore: increase test coverage of unifi
2025-02-10 19:02:30 +01:00
Mateusz Filipowicz and GitHub
35b786277c
feat: use sysinfo API for getting system information with fallback to old API ( #10 )
...
* feat: use sysinfo API for getting system information with fallback to old API
* chore: apply linting
2025-02-10 18:43:20 +01:00
Mateusz Filipowicz and GitHub
7f5968314d
feat: make error handling more verbose and collect more error information from API errors, support API V2 error format ( #8 )
...
feat: make error handling more verbose and collect more error information from Unifi Controller, support API V2 error format
2025-02-10 03:03:56 +01:00
Mateusz Filipowicz and GitHub
53bb1a13b9
feat: generate fields validation and use it when sending requests to API ( #7 )
...
* feat: generate fields validation and use it when issuing requests to API with soft (default) or hard modes
* chore: apply linter fixes
* feat: enable field validation on int fields
* feat: add validation for ^[\w]+$ fields
* feat: add validation for MAC address fields
* fix: trim wrappers for all comments
* feat: add validation for IPv4, IPv6 and IP(IPv4/IPv6) fields
* feat: add validation for numeric, non-zero based fields
* fix: one of validation can contain dot (.) sign in values
* feat: add second notation of MAC address validation
* fix: one of validation can start with ^( and end with )$
* feat: add option to disable validation and use soft validation by default
* chore: fix test
* docs: add readme about client-side validation
2025-02-09 21:08:21 +01:00
Mateusz Filipowicz and GitHub
c7e81e2b18
feat: add validation of ClientConfig fields for improved data integrity ( #5 )
...
* feat: add validation of ClientConfig fields for improved data integrity
* chore: add tests for client config validation
2025-02-09 04:21:15 +01:00
Mateusz Filipowicz and Mateusz Filipowicz
d79f581c1f
chore: apply linter fixes
2025-02-09 01:51:47 +01:00
Mateusz Filipowicz and Mateusz Filipowicz
685572d5ce
test: add tests for Unifi client
2025-02-09 01:51:47 +01:00
Mateusz Filipowicz and Mateusz Filipowicz
f79f21c4ad
feat: new, more customizable client supporting API Key and user/password authentication
2025-02-09 01:51:47 +01:00
Mateusz Filipowicz and Mateusz Filipowicz
e629288cba
feat(codegen): rename "fields" to "codegen" for more meaningful naming
2025-02-07 17:42:05 +01:00
Mateusz Filipowicz
88080fe551
feat: add support for DNS records
2025-02-07 15:41:34 +01:00
Mateusz Filipowicz
c393dcbe71
fix: WAN network support was broken
2025-02-07 15:40:42 +01:00
Mateusz Filipowicz
4be261d2a8
feat: support update port profile API
2025-02-04 18:25:07 +01:00
Mateusz Filipowicz
5552bb8a2d
fix: add ulp_user_id to fix account tests
2025-01-07 11:30:28 +01:00
Mateusz Filipowicz and GitHub
3fda37369e
feat: removed -latest flag and instead support latest version marker, refactor ( #233 )
...
* feat: remove -latest flag and instead support latest version marker
* refactor: move determining unifi version, download URL and downloading resources and field definitions to dedicated files
* refactor: move writing version file to version.go file
* refactor: move code generation code to dedicated generator.go file
* chore: fix linting issues
* chore: add version tests
2025-01-07 12:10:23 +11:00
oldztimer and GitHub
df68605117
Add Error.Is interface method on the custom error type APIError. ( #162 )
...
This method supports doing "errors.Is" checks so downstream can handle API errors more specifically.
In my case, since I copied your lazyClient example, but I'm using it in a server, the Login needs to be refreshed if an API call errors out with "api.err.LoginRequired".
There was no clean way to check for this specific error in order to refresh the login and retry.
2025-01-07 12:02:23 +11:00