<?xml version="1.0"?>
<!--
Copyright (c) 2021 Project CHIP Authors

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<configurator>
  <domain name="General"/>

  <enum name="StatusCode" type="ENUM8">
    <cluster code="0x003c"/>
     <item name="Busy" value="0x02"/>
     <item name="PAKEParameterError" value="0x03"/>
     <item name="WindowNotOpen" value="0x04"/>
  </enum>

  <enum name="CommissioningWindowStatus" type="ENUM8">
    <cluster code="0x003c"/>
     <item name="WindowNotOpen" value="0x00"/>
     <item name="EnhancedWindowOpen" value="0x01"/>
     <item name="BasicWindowOpen" value="0x02"/>
  </enum>

  <cluster>
    <name>AdministratorCommissioning</name>
    <domain>General</domain>
    <code>0x003c</code>
    <define>ADMINISTRATOR_COMMISSIONING_CLUSTER</define>
    <description>Commands to trigger a Node to allow a new Administrator to commission it.</description>

    <attribute side="server" code="0x0000" define="WINDOW_STATUS" type="CommissioningWindowStatus" writable="false" optional="false">WindowStatus</attribute>
    <attribute side="server" code="0x0001" define="ADMIN_FABRIC_INDEX" type="fabric_idx" writable="false" isNullable="true" optional="false">AdminFabricIndex</attribute>
    <attribute side="server" code="0x0002" define="ADMIN_VENDOR_ID" type="INT16U" writable="false" isNullable="true" optional="false">AdminVendorId</attribute>

    <command source="client" code="0x00" name="OpenCommissioningWindow" mustUseTimedInvoke="true" optional="false">
      <description>This command is used by a current Administrator to instruct a Node to go into commissioning mode using enhanced commissioning method.</description>
      <arg name="CommissioningTimeout" type="INT16U"/>
      <arg name="PAKEVerifier" type="OCTET_STRING"/>
      <arg name="Discriminator" type="INT16U"/>
      <arg name="Iterations" type="INT32U"/>
      <arg name="Salt" type="OCTET_STRING"/>
      <access op="invoke" privilege="administer"/>
    </command>

    <command source="client" code="0x01" name="OpenBasicCommissioningWindow" mustUseTimedInvoke="true" optional="true">
      <description>This command is used by a current Administrator to instruct a Node to go into commissioning mode using basic commissioning method, if the node supports it.</description>
      <arg name="CommissioningTimeout" type="INT16U"/>
      <access op="invoke" privilege="administer"/>
    </command>

    <command source="client" code="0x02" name="RevokeCommissioning" mustUseTimedInvoke="true" optional="false">
      <description>This command is used by a current Administrator to instruct a Node to revoke any active Open Commissioning Window or Open Basic Commissioning Window command.</description>
      <access op="invoke" privilege="administer"/>
    </command>

  </cluster>
</configurator>
