// Copyright 2015 The Weave Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef LIBWEAVE_SRC_COMMANDS_SCHEMA_CONSTANTS_H_
#define LIBWEAVE_SRC_COMMANDS_SCHEMA_CONSTANTS_H_

namespace weave {

namespace errors {
namespace commands {
// Error domain for command schema description.
extern const char kDomain[];

// Common command definition error codes.
extern const char kTypeMismatch[];
extern const char kInvalidPropValue[];
extern const char kPropertyMissing[];
extern const char kInvalidCommandName[];
extern const char kCommandFailed[];
extern const char kInvalidMinimalRole[];
extern const char kCommandDestroyed[];
extern const char kInvalidState[];
}  // namespace commands
}  // namespace errors

namespace commands {
namespace attributes {
// Command description JSON schema attributes.
extern const char kCommand_Id[];
extern const char kCommand_Name[];
extern const char kCommand_Parameters[];
extern const char kCommand_Progress[];
extern const char kCommand_Results[];
extern const char kCommand_State[];
extern const char kCommand_Error[];

extern const char kCommand_Role[];
extern const char kCommand_Role_Manager[];
extern const char kCommand_Role_Owner[];
extern const char kCommand_Role_User[];
extern const char kCommand_Role_Viewer[];

}  // namespace attributes
}  // namespace commands

}  // namespace weave

#endif  // LIBWEAVE_SRC_COMMANDS_SCHEMA_CONSTANTS_H_
