 2021 GA Release
          2021 GA Release
        
  # Core Features
The ExtremeCloud IQ API GA release covers the core features to interact with ExtremeCloud IQ platform.
# Authentication
Authenticate user to access protected resources
- Support username/password authentication
# Authorization
API token and permissions
- Fine-grained and flexible access control
- Generate new API Token
- Show user permissions
- Permission check
# Account
ExtremeCloud IQ Account
- Get XIQ Account basic information
- Get VIQ information
- Switch to another ExtremeCloud IQ account
- Get VIQ info
- Backup VIQ
# User
Local and external user management in ExtremeCloud IQ account
- User management
- External user management
# HIQ
Hierarchical ExtremeCloud IQ
- Get HIQ status
- Organization management
- Switch HIQ context
# Location
Hierarchical locations and floor plan
- Location, building, floor management
- Get location tree
# Device
Supported device platforms: Cloud Engine, IQ Engine, WiNG, VOSS, EXOS ...
- Get device list
- Get device details
- Device onboarding
- Delete device
- Send CLI to device
- Reboot device
- Switch device management status
- Assign/Revoke location
- Assign/Revoke network policy
- Change hostname
- Override SSID
- Change OS mode
- Assign/Revoke RADIUS proxy
- Get alarms for device
- Get metrics for device
# Network Policy
Unified configuration management for wireless and wired network devices
- List network policies
- Add/remove SSID
# Client
The clients associate to the devices of ExtremeCloud IQ
- Get active clients
- Get client info
- Get client metrics
# Application
Application management and application metrics
- List applications
- List topN applications
- List topN clients for given application
# Log
Access all kinds of logs in ExtremeCloud IQ
- List accounting logs
- List audit logs
- List auth logs
- List credential logs
- List Email logs
- List SMS logs
# Notification
Push events/logs to users via Webhook, Email, SMS, etc.
- List webhook subscriptions
- Create/Delete webhook subscriptions
# Configuration - Deployment
Push configuration to devices
- Push configuration and upgrade firmware
- Get configuration deployment overview
- Get configuration deployment status
# Configuration - Basic
VLAN Profile/DHCP Server/...
- VLAN profile management
# Configuration - User
User Group/End User/PCG/PPSK Classification
- Get Email/SMS templates
- Key-based PCG (Private Client Group) management
- User group management
- Enduser management
# Configuration - Policy
SSID/User Profile/Classification Rule/CCG/...
- CCG (Cloud Config Group) management
- Classification rule management
- SSID management
- User profile management
- Get L3 address profile
# Configuration - Auth
AD/LDAP/RADIUS/CWP/...
- AD (Active Directory) management
- LDAP server management
- RADIUS server management
- RADIUS client object management
- RADIUS proxy management
- List CWP (Captive Web Portal)
# Configuration - Certificate
Certificate
- List certificates
# Breaking Changes since Beta release
Note If you ever used the Beta release REST APIs, please check the below breaking changes carefully and make corresponding changes.# Account
# GET /account/viq
 - Response Body
- Enum value change
 
# GET /account/info
 - Path
- The new path is /account/home
 
- The new path is 
- Response Body
- Enum value change
 
# User
# GET /users/{id}
 - Response Body
- Removed fields
- user_group_id
- user_group_name
 
- Enum value change
 
- Removed fields
# PUT /users/{id}
 - Request Method
- The new request method is PATCH
 
- The new request method is 
- Request Body
- Enum value change
 
- Response Body
- Removed fields
- user_group_id
- user_group_name
 
- Enum value change
 
- Removed fields
# GET /users
 - Response Body
- Removed fields
- user_group_id
- user_group_name
 
- Enum value change
 
- Removed fields
# POST /users
 - Request Body
- Enum value change
 
- Response Body
- Removed fields
- user_group_id
- user_group_name
 
- Enum value change
 
- Removed fields
# GET /users/externalaccess/{id}
 - Path
- The new path is /users/external/{id}
 
- The new path is 
- Response Body
- Removed fields
- user_group_id
- user_group_name
 
- Enum value change
 
- Removed fields
# PUT /users/externalaccess/{id}
 - Request method
- The new request method is PATCH
 
- The new request method is 
- Path
- The new path is /users/external/{id}
 
- The new path is 
- Request Body
- Enum value change
 
- Response Body
- Removed fields
- user_group_id
- user_group_name
 
- Enum value change
 
- Removed fields
# DELETE /users/externalaccess/{id}
 - Path
- The new path is /users/external/{id}
 
- The new path is 
# POST /users/externalaccess
 - Path
- The new path is /users/external
 
- The new path is 
- Request Body
- Enum value change
 
- Response Body
- Removed fields
- user_group_id
- user_group_name
 
- Enum value change
 
- Removed fields
# GET /users/externalaccess
 - Path
- The new path is /users/external
 
- The new path is 
- Response Body
- Removed fields
- user_group_id
- user_group_name
 
- Enum value change
 
- Removed fields
# GET /user/profile
 - Path
- The new path is /users/me
 
- The new path is 
- Response Body
- Removed fields
- user_group_id
- user_group_name
 
- Enum value change
 
- Removed fields
# HIQ
# GET /hiq/organizations
 - Response Body
- Enum value change
 
# POST /hiq/organizations
 - Response Body
- Enum value change
 
# Location
# POST /locations/floor
 - Request Body
- Enum value change
 
- Response Body
- Enum value change
 
# PUT /locations/floor/{id}
 - Request Body
- Enum value change
 
- Response Body
- Enum value change
 
# SSID
# GET /ssids/email-templates
 - Path
- The new path is /email-templates
 
- The new path is 
- Query Parameter
- Enum value change
 
- Response Body
- Enum value change
 
# GET /ssids/sms-templates
 - Path
- The new path is /sms-templates
 
- The new path is 
- Query Parameter
- Enum value change
 
- Response Body
- Enum value change
 
# PUT /ssids/usergroups/{id}
 - Path
- The new path is /usergroups/{id}
 
- The new path is 
- Request Body
- Response Body
# DELETE /ssids/usergroups/{id}
 - Path
- The new path is /usergroups/{id}
 
- The new path is 
# GET /ssids/usergroups
 - Path
- The new path is /usergroups
 
- The new path is 
- Query Parameter
- Enum value change
 
- Response Body
# POST /ssids/usergroups
 - Path
- The new path is /usergroups
 
- The new path is 
- Request Body
- Response Body
# GET /ssids/users
 - Path
- The new path is /endusers
 
- The new path is 
# PUT /ssids/users/{id}
 - Path
- The new path is /endusers/{id}
 
- The new path is 
# POST /ssids/users
 - Path
- The new path is /endusers
 
- The new path is 
# DELETE /ssids/users/{id}
 - Path
- The new path is /endusers/{id}
 
- The new path is 
# PCG
# DELETE /pcg/key-based/{policyId}
 - Path
- The new path is /pcgs/key-based/network-policy-{policyId}
 
- The new path is 
# POST /pcg/key-based/{policyId}/keys/:generate
 - Path
- The new path is /pcgs/key-based/network-policy-{policyId}/keys/:generate
 
- The new path is 
# POST /pcg/key-based/{policyId}/keys/:email
 - Path
- The new path is /pcgs/key-based/network-policy-{policyId}/keys/:email
 
- The new path is 
# GET /pcg/key-based/ports/{policyId}
 - Path
- The new path is /pcgs/key-based/network-policy-{policyId}/port-assignments
 
- The new path is 
# POST /pcg/key-based/ports/{policyId}
 - Path
- The new path is /pcgs/key-based/network-policy-{policyId}/port-assignments
 
- The new path is 
# POST /pcg/key-based/{policyId}/:onboard
 - Path
- The new path is /pcgs/key-based/network-policy-{policyId}/:onboard
 
- The new path is 
# GET /pcg/key-based/{policyId}/users
 - Path
- The new path is /pcgs/key-based/network-policy-{policyId}/users
 
- The new path is 
# POST /pcg/key-based/{policyId}/users
 - Path
- The new path is /pcgs/key-based/network-policy-{policyId}/users
 
- The new path is 
# DELETE /pcg/key-based/{policyId}/users
 - Path
- The new path is /pcgs/key-based/network-policy-{policyId}/users
 
- The new path is 
# PUT /pcg/key-based/{policyId}/users
 - Path
- The new path is /pcgs/key-based/network-policy-{policyId}/users
 
- The new path is 
# Event Subscription
# GET /subscriptions/webhook
 - Response Body
- Enum value change
 
# POST /subscriptions/webhook
 - Request Body
- Enum value change
 
# LOG
# GET /logs/sms
 - Response Body
- Enum value change
 
# GET /logs/audit
 - Query Parameter
- Enum value change
 
- Response Body
- Enum value change
 
# Device
# GET /devices/config/deploy/status
 - Path
- The new path is /deployments/status
 
- The new path is 
- Response Body
- Changed field [is_finished] to [finished]
 
- Changed field [
# GET /devices/config/deploy/overview
 - Path
- The new path is /deployments/overview
 
- The new path is 
# POST /devices/config/:deploy
 - Path
- The new path is /deployments
 
- The new path is 
# GET /devices
 - Query Parameter
- Enum value change
 
- Response Body
- Enum value change
 
# GET /devices/network-policy/{policyId}
 - Response Body
- Enum value change
 
# GET /devices/{id}
 - Response Body
- Enum value change
 
# GET /devices/status/summary
 - Path
- The new path is /devices/stats
 
- The new path is 
# Enum value changes
We removed prefixes, <ENUM_TYPE>_UNSPECIFIED and UNRECOGNIZED for all enums.
Please check below for details.
# licenses.mode
| Old Value | New Value | 
|---|---|
| LICENSE_MODE_UNSPECIFIED | Removed | 
| LICENSE_MODE_BUY | BUY | 
| LICENSE_MODE_PLANNER | PLANNER | 
| LICENSE_MODE_EVAL | EVAL | 
| LICENSE_MODE_MSP | MSP | 
| LICENSE_MODE_UNKNOWN | UNKNOWN | 
| UNRECOGNIZED | Removed | 
# licenses.entitlement_type
| Old Value | New Value | 
|---|---|
| ENTITLEMENT_TYPE_UNSPECIFIED | Removed | 
| ENTITLEMENT_TYPE_EVALUATION | EVALUATION | 
| ENTITLEMENT_TYPE_PERMANENT | PERMANENT | 
| ENTITLEMENT_TYPE_RENEW | RENEW | 
| ENTITLEMENT_TYPE_UNKNOWN | UNKNOWN | 
| UNRECOGNIZED | Removed | 
# account_type
| Old Value | New Value | 
|---|---|
| ACCOUNT_TYPE_UNSPECIFIED | Removed | 
| ACCOUNT_TYPE_INTERNAL | INTERNAL | 
| ACCOUNT_TYPE_CUSTOMER | CUSTOMER | 
| ACCOUNT_TYPE_HIQ | HIQ | 
| ACCOUNT_TYPE_PARTNER | PARTNER | 
| UNRECOGNIZED | Removed | 
# account_mode
| Old Value | New Value | 
|---|---|
| ACCOUNT_MODE_UNSPECIFIED | Removed | 
| ACCOUNT_MODE_COPILOT | COPILOT | 
| ACCOUNT_MODE_CONNECT | CONNECT | 
| UNRECOGNIZED | Removed | 
# user_role
| Old Value | New Value | 
|---|---|
| USER_ROLE_UNSPECIFIED | Removed | 
| USER_ROLE_ADMINISTRATOR | ADMINISTRATOR | 
| USER_ROLE_OPERATOR | OPERATOR | 
| USER_ROLE_MONITOR | MONITOR | 
| USER_ROLE_HELP_DESK | HELP_DESK | 
| USER_ROLE_GUEST_MANAGEMENT | GUEST_MANAGEMENT | 
| USER_ROLE_OBSERVER | OBSERVER | 
| USER_ROLE_INSTALLER | INSTALLER | 
| USER_ROLE_APPLICATION_OPERATOR | APPLICATION_OPERATOR | 
| UNRECOGNIZED | Removed | 
# hiq.type
| Old Value | New Value | 
|---|---|
| ORGANIZATION_TYPE_UNSPECIFIED | Removed | 
| ORGANIZATION_TYPE_REGULAR | REGULAR | 
| ORGANIZATION_TYPE_PRIVATE | PRIVATE | 
| UNRECOGNIZED | Removed | 
# floor.environment
| Old Value | New Value | 
|---|---|
| RF_ENVIRONMENT_TYPE_UNSPECIFIED | Removed | 
| RF_ENVIRONMENT_TYPE_AUTO_ESTIMATE | AUTO_ESTIMATE | 
| RF_ENVIRONMENT_TYPE_OFFICE | OFFICE | 
| RF_ENVIRONMENT_TYPE_OUTDOOR_FREE_SPACE | OUTDOOR_FREE_SPACE | 
| RF_ENVIRONMENT_TYPE_OBSTRUCTED_IN_BUILDING | OBSTRUCTED_IN_BUILDING | 
| RF_ENVIRONMENT_TYPE_OUTDOOR_SUBURBAN | OUTDOOR_SUBURBAN | 
| RF_ENVIRONMENT_TYPE_WAREHOUSE | WAREHOUSE | 
| RF_ENVIRONMENT_TYPE_OUTDOOR_DENSE_URBAN | OUTDOOR_DENSE_URBAN | 
| UNRECOGNIZED | Removed | 
# floor.measurement_unit
| Old Value | New Value | 
|---|---|
| MEASUREMENT_UNIT_UNSPECIFIED | Removed | 
| MEASUREMENT_UNIT_FEET | FEET | 
| MEASUREMENT_UNIT_METERS | METERS | 
| UNRECOGNIZED | Removed | 
# password_type
| Old Value | New Value | 
|---|---|
| PASSWORD_TYPE_UNSPECIFIED | Removed | 
| PASSWORD_TYPE_PPSK | PPSK | 
| PASSWORD_TYPE_RADIUS | RADIUS | 
| UNRECOGNIZED | Removed | 
# password_db_location
| Old Value | New Value | 
|---|---|
| PASSWORD_DB_LOCATION_UNSPECIFIED | Removed | 
| PASSWORD_DB_LOCATION_CLOUD | CLOUD | 
| PASSWORD_DB_LOCATION_LOCAL | LOCAL | 
| UNRECOGNIZED | Removed | 
# pcg_type
| Old Value | New Value | 
|---|---|
| PCG_TYPE_UNSPECIFIED | Removed | 
| PCG_TYPE_AP_BASED | AP_BASED | 
| PCG_TYPE_KEY_BASED | KEY_BASED | 
| UNRECOGNIZED | Removed | 
# password_settings.psk_generation_method
| Old Value | New Value | 
|---|---|
| PSK_GENERATION_METHOD_UNSPECIFIED | Removed | 
| PSK_GENERATION_METHOD_PASSWORD_ONLY | PASSWORD_ONLY | 
| PSK_GENERATION_METHOD_USER_STRING_PASSWORD | USER_STRING_PASSWORD | 
| UNRECOGNIZED | Removed | 
# password_settings.password_character_types
| Old Value | New Value | 
|---|---|
| PASSWORD_CHARACTER_TYPE_INCLUDE_CHARACTER_TYPE_UNSPECIFIED | Removed | 
| PASSWORD_CHARACTER_TYPE_INCLUDE_ALL_CHARACTER_TYPE_ENABLED | INCLUDE_ALL_CHARACTER_TYPE_ENABLED | 
| PASSWORD_CHARACTER_TYPE_INCLUDE_ANY_CHARACTER_TYPES_ENABLED | INCLUDE_ANY_CHARACTER_TYPES_ENABLED | 
| PASSWORD_CHARACTER_TYPE_INCLUDE_ONLY_ONE_CHARACTER_TYPE_ENABLED | INCLUDE_ONLY_ONE_CHARACTER_TYPE_ENABLED | 
| UNRECOGNIZED | Removed | 
# expiration_settings.expiration_type
| Old Value | New Value | 
|---|---|
| EXPIRATION_TYPE_UNSPECIFIED | Removed | 
| EXPIRATION_TYPE_NEVER_EXPIRE | NEVER_EXPIRE | 
| EXPIRATION_TYPE_VALID_DURING_DATES | VALID_DURING_DATES | 
| EXPIRATION_TYPE_VALID_FOR_TIME_PERIOD | VALID_FOR_TIME_PERIOD | 
| EXPIRATION_TYPE_DAILY | DAILY | 
| UNRECOGNIZED | Removed | 
# expiration_settings.expiration_action
| Old Value | New Value | 
|---|---|
| EXPIRATION_ACTION_TYPE_UNSPECIFIED | Removed | 
| EXPIRATION_ACTION_TYPE_SHOW_MESSAGE | SHOW_MESSAGE | 
| EXPIRATION_ACTION_TYPE_REJECT_ACCESS | REJECT_ACCESS | 
| UNRECOGNIZED | Removed | 
# expiration_settings.post_expiration_action.delete_after_unit
| Old Value | New Value | 
|---|---|
| DATE_TIME_UNIT_TYPE_UNSPECIFIED | Removed | 
| DATE_TIME_UNIT_TYPE_MINUTE | MINUTE | 
| DATE_TIME_UNIT_TYPE_HOUR | HOUR | 
| DATE_TIME_UNIT_TYPE_DAY | DAY | 
| DATE_TIME_UNIT_TYPE_WEEK | WEEK | 
| UNRECOGNIZED | Removed | 
# subscription.status
| Old Value | New Value | 
|---|---|
| EXPIRATION_ACTION_TYPE_UNSPECIFIED | Removed | 
| EXPIRATION_ACTION_TYPE_SHOW_MESSAGE | SHOW_MESSAGE | 
| EXPIRATION_ACTION_TYPE_REJECT_ACCESS | REJECT_ACCESS | 
| UNRECOGNIZED | Removed | 
# subscription.data_type
| Old Value | New Value | 
|---|---|
| SUBSCRIPTION_DATA_TYPE_UNSPECIFIED | Removed | 
| SUBSCRIPTION_DATA_TYPE_LOCATION | LOCATION | 
| SUBSCRIPTION_DATA_TYPE_AUDIT_LOG | AUDIT_LOG | 
| Added | GDPR_LOG | 
| Added | CREDENTIAL_LOG | 
| Added | ACCOUNTING_LOG | 
| Added | AUTHENTICATION_LOG | 
| Added | EMAIL_LOG | 
| Added | SMS_LOG | 
| UNRECOGNIZED | Removed | 
# subscription.message_type
| Old Value | New Value | 
|---|---|
| SUBSCRIPTION_MESSAGE_TYPE_UNSPECIFIED | Removed | 
| SUBSCRIPTION_MESSAGE_TYPE_LOCATION_AP_CENTRIC | LOCATION_AP_CENTRIC | 
| SUBSCRIPTION_MESSAGE_TYPE_LOCATION_CLIENT_CENTRIC | LOCATION_CLIENT_CENTRIC | 
| SUBSCRIPTION_MESSAGE_TYPE_AUDIT_LOG_ALL | AUDIT_LOG_ALL | 
| Added | GDPR_LOG_ALL | 
| Added | CREDENTIAL_LOG_ALL | 
| Added | ACCOUNTING_LOG_ALL | 
| Added | AUTHENTICATION_LOG_ALL | 
| Added | EMAIL_LOG_ALL | 
| Added | SMS_LOG_ALL | 
| UNRECOGNIZED | Removed | 
# sms_log.status
| Old Value | New Value | 
|---|---|
| SMS_LOG_STATUS_SEND_UNSPECIFIED | Removed | 
| SMS_LOG_STATUS_SEND_OUT | SEND_OUT | 
| SMS_LOG_STATUS_COMPLETE | COMPLETE | 
| SMS_LOG_STATUS_SUCCESS | SUCCESS | 
| SMS_LOG_STATUS_FAIL | FAIL | 
| UNRECOGNIZED | Removed | 
# audit_log.category
| Old Value | New Value | 
|---|---|
| AUDIT_LOG_CATEGORY_UNSPECIFIED | Removed | 
| AUDIT_LOG_CATEGORY_ADMIN | ADMIN | 
| AUDIT_LOG_CATEGORY_SYSTEM | SYSTEM | 
| AUDIT_LOG_CATEGORY_DEPLOYMENT | DEPLOYMENT | 
| AUDIT_LOG_CATEGORY_CONFIG | CONFIG | 
| AUDIT_LOG_CATEGORY_MONITOR | MONITOR | 
| AUDIT_LOG_CATEGORY_ALARM | ALARM | 
| UNRECOGNIZED | Removed | 
# devices.admin_states
| Old Value | New Value | 
|---|---|
| DEVICE_ADMIN_STATE_UNSPECIFIED | Removed | 
| DEVICE_ADMIN_STATE_NEW | NEW | 
| DEVICE_ADMIN_STATE_BOOTSTRAP | BOOTSTRAP | 
| DEVICE_ADMIN_STATE_STAGED | STAGED | 
| DEVICE_ADMIN_STATE_MANAGED | MANAGED | 
| DEVICE_ADMIN_STATE_UNMANAGED | UNMANAGED | 
| UNRECOGNIZED | Removed | 
# device_function
| Old Value | New Value | 
|---|---|
| DEVICE_FUNCTION_UNSPECIFIED | Removed | 
| DEVICE_FUNCTION_AP | AP | 
| DEVICE_FUNCTION_ROUTER | ROUTER | 
| DEVICE_FUNCTION_ROUTER_AS_L2_VPN_GATEWAY | ROUTER_AS_L2_VPN_GATEWAY | 
| DEVICE_FUNCTION_ROUTER_AS_L3_VPN_GATEWAY | ROUTER_AS_L3_VPN_GATEWAY | 
| DEVICE_FUNCTION_SWITCH | SWITCH | 
| DEVICE_FUNCTION_SWITCH_HAC | SWITCH_HAC | 
| DEVICE_FUNCTION_SWITCH_DELL | SWITCH_DELL | 
| DEVICE_FUNCTION_L2_VPN_GATEWAY | L2_VPN_GATEWAY | 
| DEVICE_FUNCTION_L3_VPN_GATEWAY | L3_VPN_GATEWAY | 
| UNRECOGNIZED | Removed | 
