Recently we added a new integration scope called spark:all. The spark:all scope acts as an overall aggregate for the rest of the user scopes. It basically requests full access to a Spark account, i.e. reading/writing messages, creating/deleting spaces, making/receiving calls, and so on.
From an integrations standpoint, this makes it really simple to communicate to a user that the app requires full access without needing to select individual user scopes (such as spark:messages_read, spark:messages_write, spark:people_read). This is particularly useful for heavy-duty integrations, such as Cisco Spark calling apps. Prior to spark:all, individual user scopes were grouped and presented to the user for approval; with spark:all it requires approval for just one 'super' scope.
When spark:all is selected, the rest of the user scopes will be disabled for selection:
Even though spark:all acts as an aggregate scope, it is important to note that in the grant flow, the spark:all scope only aggregates user scopes – admin scopes are not part of spark:all and can be applied as add-ons, but no other user scope should be added when spark:all is selected.
Users will be presented with the following screen in the grant flow when the integration requires spark:all:
The spark:all scope is optional for the majority of the integrations. However, it is required for any app that uses calling features – you're effectively replicating a large portion (if not all) of a native Spark client at that point and need the complete set of scopes in order for your integration to function correctly.