{"_id":"59e59359672c9a002e87409b","project":"568bdc1483d2061900d86cdc","version":{"_id":"59a72290d61777001b6c42c3","project":"568bdc1483d2061900d86cdc","__v":31,"createdAt":"2017-08-30T20:39:44.453Z","releaseDate":"2017-08-30T20:39:44.453Z","categories":["59a7236e3fe4d90025117c10","59a72eb6cb0db3001b84cfe2","59a734eb757d030019b85af8","59c0243b1b2d07001a9d2b76","59c035e42126e10028effb12","59c06c40df5b3c0010584a13","59c1a5852cabe5002641a3e7","59c2fb00b2b45c0010b7a3d7","59c32ceb9aea850010ac4130","59c32e6e190c90003cb0d12f","59c33affb2b45c0010b7aa23","59c7dfa457bd8200105444dc","59c7e975c50cf30010d712a0","59cffdef0cd4dd0010294d54","59d0622ca91a810032c8f60c","59d06733c1aec60026253065","59d174d44ac471001a07b123","59d5a5e323e6e800103defb2","59ecf1d8ed507c001c52b255","59f76fef8581dc0010593e6f","5a0c003680a35b0012c35db0","5a8358722e78660075e45f42","5a846645b5ec3a001203517e","5b258091bc7a6700033b9cb5","5b26e48e024807000315a740","5b44edff3306680003663f5c","5b468abd3d4a9e0003789111","5b468d8f3dcb6a0003c6e374","5b47b0b93d4a9e000378a33a","5b538d114ea24f00033c726f","5b6a0efe402b32000336c33f"],"is_deprecated":false,"is_hidden":false,"is_beta":true,"is_stable":true,"codename":"","version_clean":"0.0.0","version":"0"},"category":{"_id":"59cffdef0cd4dd0010294d54","project":"568bdc1483d2061900d86cdc","version":"59a72290d61777001b6c42c3","__v":0,"sync":{"url":"","isSync":false},"reference":false,"createdAt":"2017-09-30T20:26:23.487Z","from_sync":false,"order":2,"slug":"platform-overview","title":"Platform Overview"},"user":"568bdbc4fe6fcc0d006dc970","githubsync":"","__v":0,"parentDoc":null,"updates":[],"next":{"pages":[],"description":""},"createdAt":"2017-10-17T05:21:29.665Z","link_external":false,"link_url":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":5,"body":"[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Overview\"\n}\n[/block]\nAn **ecosystem** in droplit.io is the highest level in organizational structure.\n\nYou should create a single ecosystem for a single application or product. It contains all items that are reusable for your application.\n\nNothing can be shared across ecosystems.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Ecosystem Items\"\n}\n[/block]\nAn ecosystem contains:\n* [Environments](doc:environments) \n* [Service Classes](doc:services) \n* Clients \n* [Webhooks](doc:webhooks) \n* [Users](doc:users) \n\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Ownership and Access\"\n}\n[/block]\nIf you create an ecosystem, you become its owner. As the owner you can grant other developers access to your ecosystem. An ecosystem cannot access conduits or users from another ecosystem; ecosystems are entirely independent from one another. Since [assets](doc:assets) are stored outside the scope of ecosystems, however, they may be used by more than one ecosystem.\n\nBoth conduits and users are restricted to their respective ecosystem; they may not be migrated to another.  Only one conduit may be installed per ecosystem; the conduits are intended to be shared across all an ecosystem's environments.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Commands\"\n}\n[/block]\nDevice control commands cannot be issued directly to an ecosystem. The highest scope to which commands can be issued is [Environments](doc:environments).\n[block:api-header]\n{\n  \"title\": \"Domains\"\n}\n[/block]\nLengthy IDs may be aliased to human readable domains. A domain is created by [editing](doc:ecosystems-update)  the `domain` key.\n\nDomains must meet the following requirements:\n* __globally unique__: domains must be unique with respect to all other existing domains\n* __permitted characters__: `a-z`, `0-9`, `-`, no spaces\n* __character limit__: 24\n[block:api-header]\n{\n  \"title\": \"Indicating Device Availability\"\n}\n[/block]\nSome system-defined metadata keys are available to control a device's availability and accessibility. If a device is set to not be active, it cannot receive notifications, nor can it be interacted with in any way. It can, however, still be included in device configurations so that it can be seamlessly reactivated.\n\n### `$activeDeviceMode`\n\nSpecify the ecosystem's treatment of the `isActive` flag.\n\n* __disabled__: The ecosystem will ignore its devices' `isActive` flag.\n* __enabled__: The ecosystem will acknowledge its devices' `isActive` flag.\n* __inactiveWhenSpecified__: When enabled, if a device does not have the `isActive` flag, it is automatically set to `inactive`. The default behavior is to set the device to `active`.\n\n### `$allowInactiveDeviceCommands`\n\nSpecify how the `isActive` flag directs the routing of device commands.\n\n* __none__: No commands will be sent to inactive devices.\n* __all__: Commands will be sent normally to inactive devices.\n* __unicastOnly__: Only devices equipped with unicast will be sent commands.\n \n### `$inactiveDeviceLogging`\n\nSpecify how the `isActive` flag determines the storage policy for a device's logs.\n\n* __none__: The logs of inactive devices will not be stored.\n* __all__: The logs of inactive devices will continue to be stored.\n\n### `$inactiveDeviceServiceNotifications`\n\nSpecify how the `isActive` flag determines the handling of the devices' service notifications.\n\n* __none__: Inactive devices will not produce service notifications.\n* __all__: Inactive devices will continue to produce service notifications.\n \n### `$newDeviceIsActiveState`\n\nSpecify how the ecosystem sets the `isActive` flag upon the discovery of a new device.\n\n* __unspecified__: The ecosystem will not set the `isActive` flag of new devices.\n* __inactive__: The ecosystem will automatically set the `isActive` flag of new devices to `inactive`.\n* __active__: The ecosystem will automatically set the `isActive` flag of new devices to `active`.","excerpt":"Your IoT application container","slug":"ecosystems","type":"basic","title":"Ecosystems"}

Ecosystems

Your IoT application container

[block:api-header] { "type": "basic", "title": "Overview" } [/block] An **ecosystem** in droplit.io is the highest level in organizational structure. You should create a single ecosystem for a single application or product. It contains all items that are reusable for your application. Nothing can be shared across ecosystems. [block:api-header] { "type": "basic", "title": "Ecosystem Items" } [/block] An ecosystem contains: * [Environments](doc:environments) * [Service Classes](doc:services) * Clients * [Webhooks](doc:webhooks) * [Users](doc:users) [block:api-header] { "type": "basic", "title": "Ownership and Access" } [/block] If you create an ecosystem, you become its owner. As the owner you can grant other developers access to your ecosystem. An ecosystem cannot access conduits or users from another ecosystem; ecosystems are entirely independent from one another. Since [assets](doc:assets) are stored outside the scope of ecosystems, however, they may be used by more than one ecosystem. Both conduits and users are restricted to their respective ecosystem; they may not be migrated to another. Only one conduit may be installed per ecosystem; the conduits are intended to be shared across all an ecosystem's environments. [block:api-header] { "type": "basic", "title": "Commands" } [/block] Device control commands cannot be issued directly to an ecosystem. The highest scope to which commands can be issued is [Environments](doc:environments). [block:api-header] { "title": "Domains" } [/block] Lengthy IDs may be aliased to human readable domains. A domain is created by [editing](doc:ecosystems-update) the `domain` key. Domains must meet the following requirements: * __globally unique__: domains must be unique with respect to all other existing domains * __permitted characters__: `a-z`, `0-9`, `-`, no spaces * __character limit__: 24 [block:api-header] { "title": "Indicating Device Availability" } [/block] Some system-defined metadata keys are available to control a device's availability and accessibility. If a device is set to not be active, it cannot receive notifications, nor can it be interacted with in any way. It can, however, still be included in device configurations so that it can be seamlessly reactivated. ### `$activeDeviceMode` Specify the ecosystem's treatment of the `isActive` flag. * __disabled__: The ecosystem will ignore its devices' `isActive` flag. * __enabled__: The ecosystem will acknowledge its devices' `isActive` flag. * __inactiveWhenSpecified__: When enabled, if a device does not have the `isActive` flag, it is automatically set to `inactive`. The default behavior is to set the device to `active`. ### `$allowInactiveDeviceCommands` Specify how the `isActive` flag directs the routing of device commands. * __none__: No commands will be sent to inactive devices. * __all__: Commands will be sent normally to inactive devices. * __unicastOnly__: Only devices equipped with unicast will be sent commands. ### `$inactiveDeviceLogging` Specify how the `isActive` flag determines the storage policy for a device's logs. * __none__: The logs of inactive devices will not be stored. * __all__: The logs of inactive devices will continue to be stored. ### `$inactiveDeviceServiceNotifications` Specify how the `isActive` flag determines the handling of the devices' service notifications. * __none__: Inactive devices will not produce service notifications. * __all__: Inactive devices will continue to produce service notifications. ### `$newDeviceIsActiveState` Specify how the ecosystem sets the `isActive` flag upon the discovery of a new device. * __unspecified__: The ecosystem will not set the `isActive` flag of new devices. * __inactive__: The ecosystem will automatically set the `isActive` flag of new devices to `inactive`. * __active__: The ecosystem will automatically set the `isActive` flag of new devices to `active`.