| Copyright | (c) Naoto Shimazaki 2017 |
|---|---|
| License | MIT (see the file LICENSE) |
| Maintainer | https://github.com/nshimaza |
| Stability | experimental |
| Safe Haskell | None |
| Language | Haskell2010 |
Network.CiscoSpark
Description
This module provides types and functions for accessing Cisco Spark REST API.
The module is designed to improve type safety over the API. Each entity is separately typed. JSON messages contained in REST responses are decoded into appropriate type of Haskell record. JSON messages sent in REST requests are encoded only from correct type of record.
Some Spark REST API return list of objects. Those APIs require HTTP Link Header based pagination. Haskell functions for those APIs automatically request subsequent pages as needed. Also those functions transform chunky response into seamless stream of elements.
Examples
-- Sending a message to a room.
let auth = Authorization "your authorization token"
roomId = RoomId "Room ID your message to be sent"
messageText = MessageText "your message"
message = CreateMessage (Just roomId) Nothing Nothing (Just messageText) Nothing Nothing
createEntity auth def createMessage >>= print . getResponseBody
-- Obtaining detail of a user.
let personId = PersonId "your person ID"
getDetail auth def personId >>= print . getResponseBody
-- Obtaining membership of a room as stream of object representing each membership relation.
let filter = MembershipFilter yourRoomId Nothing Nothing
runConduit $ streamEntityWithFilter auth def filter .| takeC 200 .| mapM_C print
-- Create a room.
let createRoom = CreateRoom "Title of the new room" Nothing
createEntity auth def createRoom >>= print . getResponseBody
-- Delete a room.
deleteRoom auth def roomId >>= print . getResponseBody
Support for Lens
This package provides many of records representing objects communicated via Cisco Spark REST API. Those records are designed to allow create lenses by Control.Lens.TH.makeFields.
Following example creates overloaded accessors for Person, Room and Team.
makeFields ''Person makeFields ''Room makeFields ''Team
You can access personId, roomId and teamId via overloaded accessor function id like this.
let yourPersonId = yourPerson ^. id
yourRoomId = yourRoom ^. id
yourTeamId = yourTeam ^. id
This package does not provide pre-generated lenses for you because not everyone need it but you can make it by yourself so easily as described.
- newtype Authorization = Authorization ByteString
- data CiscoSparkRequest = CiscoSparkRequest {}
- newtype Timestamp = Timestamp Text
- newtype ErrorCode = ErrorCode Text
- data ErrorTitle = ErrorTitle {}
- newtype Errors = Errors {}
- data Person = Person {
- personId :: PersonId
- personErrors :: Maybe Errors
- personEmails :: Maybe [Email]
- personDisplayName :: Maybe DisplayName
- personNickName :: Maybe NickName
- personFirstName :: Maybe FirstName
- personLastName :: Maybe LastName
- personAvatar :: Maybe AvatarUrl
- personOrgId :: Maybe OrganizationId
- personRoles :: Maybe [RoleId]
- personLicenses :: Maybe [LicenseId]
- personCreated :: Maybe Timestamp
- personTimezone :: Maybe Timezone
- personLastActivity :: Maybe Timestamp
- personStatus :: Maybe PersonStatus
- personInvitePending :: Maybe Bool
- personLoginEnabled :: Maybe Bool
- personType :: Maybe PersonType
- newtype PersonId = PersonId Text
- newtype Email = Email Text
- newtype DisplayName = DisplayName Text
- newtype NickName = NickName Text
- newtype FirstName = FirstName Text
- newtype LastName = LastName Text
- newtype AvatarUrl = AvatarUrl Text
- newtype Timezone = Timezone Text
- data PersonStatus
- data PersonType
- newtype PersonList = PersonList {
- personListItems :: [Person]
- data PersonFilter = PersonFilter {}
- data CreatePerson = CreatePerson {
- createPersonEmails :: Maybe [Email]
- createPersonDisplayName :: Maybe DisplayName
- createPersonFirstName :: Maybe FirstName
- createPersonLastName :: Maybe LastName
- createPersonAvatar :: Maybe AvatarUrl
- createPersonOrgId :: Maybe OrganizationId
- createPersonRoles :: Maybe [RoleId]
- createPersonLicenses :: Maybe [LicenseId]
- data UpdatePerson = UpdatePerson {}
- data Room = Room {}
- newtype RoomId = RoomId Text
- newtype RoomTitle = RoomTitle Text
- data RoomType
- newtype SipAddr = SipAddr Text
- newtype RoomList = RoomList {
- roomListItems :: [Room]
- data RoomFilter = RoomFilter {}
- data RoomFilterSortBy
- data CreateRoom = CreateRoom {}
- newtype UpdateRoom = UpdateRoom {}
- data Membership = Membership {
- membershipId :: MembershipId
- membershipErrors :: Maybe Errors
- membershipRoomId :: Maybe RoomId
- membershipPersonId :: Maybe PersonId
- membershipPersonEmail :: Maybe Email
- membershipPersonDisplayName :: Maybe DisplayName
- membershipPersonOrgId :: Maybe OrganizationId
- membershipIsModerator :: Maybe Bool
- membershipIsMonitor :: Maybe Bool
- membershipCreated :: Maybe Timestamp
- newtype MembershipId = MembershipId Text
- newtype MembershipList = MembershipList {}
- data MembershipFilter = MembershipFilter {}
- data CreateMembership = CreateMembership {}
- newtype UpdateMembership = UpdateMembership {}
- data Message = Message {
- messageId :: MessageId
- messageErrors :: Maybe Errors
- messageRoomId :: Maybe RoomId
- messageRoomType :: Maybe RoomType
- messageToPersonId :: Maybe PersonId
- messageToPersonEmail :: Maybe Email
- messageText :: Maybe MessageText
- messageHtml :: Maybe MessageHtml
- messageFiles :: Maybe [FileUrl]
- messagePersonId :: Maybe PersonId
- messagePersonEmail :: Maybe Email
- messageCreated :: Maybe Timestamp
- messageMentionedPeople :: Maybe [PersonId]
- newtype MessageId = MessageId Text
- newtype MessageText = MessageText Text
- newtype MessageHtml = MessageHtml Text
- newtype MessageMarkdown = MessageMarkdown Text
- newtype FileUrl = FileUrl Text
- newtype MessageList = MessageList {
- messageListItems :: [Message]
- data MessageFilter = MessageFilter {}
- data MentionedPeople
- data CreateMessage = CreateMessage {}
- newtype TeamName = TeamName Text
- newtype TeamId = TeamId Text
- data Team = Team {}
- newtype TeamList = TeamList {
- teamListItems :: [Team]
- newtype CreateTeam = CreateTeam {}
- newtype UpdateTeam = UpdateTeam {}
- data TeamMembership = TeamMembership {
- teamMembershipId :: TeamMembershipId
- teamMembershipErrors :: Maybe Errors
- teamMembershipTeamId :: Maybe TeamId
- teamMembershipPersonId :: Maybe PersonId
- teamMembershipPersonEmail :: Maybe Email
- teamMembershipPersonDisplayName :: Maybe DisplayName
- teamMembershipPersonOrgId :: Maybe OrganizationId
- teamMembershipIsModerator :: Maybe Bool
- teamMembershipCreated :: Maybe Timestamp
- newtype TeamMembershipId = TeamMembershipId Text
- newtype TeamMembershipList = TeamMembershipList {}
- newtype TeamMembershipFilter = TeamMembershipFilter {}
- data CreateTeamMembership = CreateTeamMembership {}
- newtype UpdateTeamMembership = UpdateTeamMembership {}
- data Organization = Organization {}
- newtype OrganizationId = OrganizationId Text
- newtype OrganizationDisplayName = OrganizationDisplayName Text
- newtype OrganizationList = OrganizationList {}
- data License = License {}
- newtype LicenseId = LicenseId Text
- newtype LicenseName = LicenseName Text
- newtype LicenseUnit = LicenseUnit Integer
- newtype LicenseList = LicenseList {
- licenseListItems :: [License]
- newtype LicenseFilter = LicenseFilter {}
- data Role = Role {}
- newtype RoleId = RoleId Text
- newtype RoleName = RoleName Text
- newtype RoleList = RoleList {
- roleListItems :: [Role]
- getDetail :: (MonadIO m, SparkDetail key) => Authorization -> CiscoSparkRequest -> key -> m (Response (ToResponse key))
- getDetailEither :: (MonadIO m, SparkDetail key) => Authorization -> CiscoSparkRequest -> key -> m (Response (Either JSONException (ToResponse key)))
- streamEntityWithFilter :: (MonadIO m, SparkFilter filter, SparkListItem (ToResponse filter)) => Authorization -> CiscoSparkRequest -> filter -> ConduitT () (ToResponse filter) m ()
- streamTeamList :: MonadIO m => Authorization -> CiscoSparkRequest -> ConduitT () Team m ()
- streamOrganizationList :: MonadIO m => Authorization -> CiscoSparkRequest -> ConduitT () Organization m ()
- streamRoleList :: MonadIO m => Authorization -> CiscoSparkRequest -> ConduitT () Role m ()
- createEntity :: (MonadIO m, SparkCreate createParams) => Authorization -> CiscoSparkRequest -> createParams -> m (Response (ToResponse createParams))
- createEntityEither :: (MonadIO m, SparkCreate createParams) => Authorization -> CiscoSparkRequest -> createParams -> m (Response (Either JSONException (ToResponse createParams)))
- updateEntity :: (MonadIO m, SparkUpdate updateParams) => Authorization -> CiscoSparkRequest -> updateParams -> m (Response (ToResponse updateParams))
- updateEntityEither :: (MonadIO m, SparkUpdate updateParams) => Authorization -> CiscoSparkRequest -> updateParams -> m (Response (Either JSONException (ToResponse updateParams)))
- defaultMessageFilter :: RoomId -> MessageFilter
- defaultTeamMembershipFilter :: TeamId -> TeamMembershipFilter
- deleteRoom :: MonadIO m => Authorization -> CiscoSparkRequest -> RoomId -> m (Response ())
- deleteMembership :: MonadIO m => Authorization -> CiscoSparkRequest -> MembershipId -> m (Response ())
- deleteMessage :: MonadIO m => Authorization -> CiscoSparkRequest -> MessageId -> m (Response ())
- deleteTeam :: MonadIO m => Authorization -> CiscoSparkRequest -> TeamId -> m (Response ())
- deleteTeamMembership :: MonadIO m => Authorization -> CiscoSparkRequest -> TeamMembershipId -> m (Response ())
Types
Common Types
newtype Authorization #
Authorization string against Spark API to be contained in HTTP Authorization header of every request.
Constructors
| Authorization ByteString |
Instances
data CiscoSparkRequest #
Wrapping Request in order to provide easy default value specifically for Cisco Spark public API.
Constructors
| CiscoSparkRequest | |
Fields
| |
Instances
| Show CiscoSparkRequest # | |
| Default CiscoSparkRequest # | Default parameters for HTTP request to Cisco Spark REST API. |
Type representing timestamp. For now, it is just copied from API response JSON.
Error code for element level error potentially contained in List API responses.
data ErrorTitle #
ErrorTitle represent concrete error code and reason. It appears in Errors.
Constructors
| ErrorTitle | |
Fields
| |
Instances
| Eq ErrorTitle # | |
| Show ErrorTitle # | |
| ToJSON ErrorTitle # | |
| FromJSON ErrorTitle # |
|
Errors is used for element level error in List API.
When list API failed to retrieve an element, it returns this object for the element
and response API status as successful instead of failing entire API request.
Refer to API Document for more detail.
Constructors
| Errors | |
Fields | |
People related types
Person is detail description of Cisco Spark user or bot.
Person is decoded from response JSON of Get Person Details REST call.
It is also element type of response of List People call.
Constructors
| Person | |
Fields
| |
Identifying Person describing detail of Cisco Spark user or bot.
Instances
| Eq PersonId # | |
| Show PersonId # | |
| Generic PersonId # | |
| ToJSON PersonId # | |
| FromJSON PersonId # | |
| SparkDetail PersonId # | User can get detail of a person. |
| SparkResponse PersonId # | Get detail for a person API uses "PersonId' and responses |
| SparkApiPath PersonId # | Get detail for a person API uses |
| type Rep PersonId # | |
| type ToResponse PersonId # | |
Email address of user.
Nickname of user.
First name of user.
Last name of user.
URL pointing to image file of Avatar.
Timezone in timezone name.
data PersonStatus #
Current status of Person.
It can be updated automatically by recent activity or explicitly updated by user's operation
or propagated from vacation setting on email system.
Constructors
| PersonStatusActive | The |
| PersonStatusInactive | The |
| PersonStatusOutOfOffice | Email system of the |
| PersonStatusDoNotDisturb | The |
| PersonStatusUnknown | The status of the |
Instances
| Eq PersonStatus # | |
| Show PersonStatus # | |
| Generic PersonStatus # | |
| ToJSON PersonStatus # |
|
| FromJSON PersonStatus # |
|
| type Rep PersonStatus # | |
data PersonType #
PersonType indicates whether the Person is real human or bot.
Constructors
| PersonTypePerson | The |
| PersonTypeBot | The |
Instances
| Eq PersonType # | |
| Show PersonType # | |
| ToJSON PersonType # | |
| FromJSON PersonType # |
|
newtype PersonList #
PersonList is decoded from response JSON of List People REST call. It is list of Person.
Constructors
| PersonList | |
Fields
| |
Instances
| Eq PersonList # | |
| Show PersonList # | |
| ToJSON PersonList # | |
| FromJSON PersonList # |
|
data PersonFilter #
Optional query strings for people list API.
Constructors
| PersonFilter | |
Fields
| |
Instances
| Eq PersonFilter # | |
| Show PersonFilter # | |
| Generic PersonFilter # | |
| Default PersonFilter # | |
| SparkFilter PersonFilter # | User can list people with filter parameter. |
| SparkResponse PersonFilter # | List people API uses |
| SparkApiPath PersonFilter # | List people API uses |
| type Rep PersonFilter # | |
| type ToResponse PersonFilter # | |
data CreatePerson #
CreatePerson is encoded to request body JSON of Create a Person REST call.
Constructors
| CreatePerson | |
Fields
| |
Instances
| Eq CreatePerson # | |
| Show CreatePerson # | |
| ToJSON CreatePerson # | |
| FromJSON CreatePerson # |
|
| SparkCreate CreatePerson # | User can create a person. |
| SparkResponse CreatePerson # | Create person API uses "CreatePerson' and responses |
| SparkApiPath CreatePerson # | Create person API uses |
| type ToResponse CreatePerson # | |
data UpdatePerson #
UpdatePerson is encoded to request body JSON of Update a Person REST call.
Constructors
| UpdatePerson | |
Fields
| |
Instances
| Eq UpdatePerson # | |
| Show UpdatePerson # | |
| ToJSON UpdatePerson # | |
| FromJSON UpdatePerson # |
|
| SparkUpdate UpdatePerson # | User can update a person. |
| SparkResponse UpdatePerson # | Update person API uses "UpdatePerson' and responses |
| SparkApiPath UpdatePerson # | Update person API uses |
| type ToResponse UpdatePerson # | |
Room related types
Room is communication space in Cisco Spark and called "Space" on UI.
Historically it was called Room on UI too but UI has been changed to "Space" in order to avoid
confusion with the concept "Room" associated to hardware facility of video conferencing on Spark.
The name of Room is kept unchanged for backward compatibility.
Room is decoded from response JSON of Get Room Details REST call. It is also element type of response of List Rooms call.
Constructors
| Room | |
Fields
| |
Identifying Room.
Instances
| Eq RoomId # | |
| Show RoomId # | |
| Generic RoomId # | |
| ToJSON RoomId # | |
| FromJSON RoomId # | |
| SparkDetail RoomId # | User can get detail of a room. |
| SparkResponse RoomId # | Get detail for a room API uses "RoomId' and responses |
| SparkApiPath RoomId # | Get detail for a room API uses |
| type Rep RoomId # | |
| type ToResponse RoomId # | |
Title text of Room.
Constructors
| RoomTypeDirect | The Room is for 1:1. Decoded from "direct". |
| RoomTypeGroup | The Room is for group. Decoded from "group". |
SIP address.
Constructors
| RoomList | |
Fields
| |
data RoomFilter #
Optional query strings for room list API
Constructors
| RoomFilter | |
Fields
| |
Instances
| Eq RoomFilter # | |
| Show RoomFilter # | |
| Generic RoomFilter # | |
| Default RoomFilter # | |
| SparkFilter RoomFilter # | User can list rooms with filter parameter. |
| SparkResponse RoomFilter # | List rooms API uses |
| SparkApiPath RoomFilter # | List rooms API uses |
| type Rep RoomFilter # | |
| type ToResponse RoomFilter # | |
data CreateRoom #
CreateRoom is encoded to request body JSON of Create a Room REST call.
Constructors
| CreateRoom | |
Fields
| |
Instances
| Eq CreateRoom # | |
| Show CreateRoom # | |
| ToJSON CreateRoom # | |
| FromJSON CreateRoom # |
|
| SparkCreate CreateRoom # | User can create a room. |
| SparkResponse CreateRoom # | Create room API uses "CreateRoom' and responses |
| SparkApiPath CreateRoom # | Create room API uses |
| type ToResponse CreateRoom # | |
newtype UpdateRoom #
UpdateRoom is encoded to request body JSON of Update a Room REST call.
Constructors
| UpdateRoom | |
Fields | |
Instances
| Eq UpdateRoom # | |
| Show UpdateRoom # | |
| ToJSON UpdateRoom # | |
| FromJSON UpdateRoom # |
|
| SparkUpdate UpdateRoom # | User can update a room. |
| SparkResponse UpdateRoom # | Update room API uses "UpdateRoom' and responses |
| SparkApiPath UpdateRoom # | Update room API uses |
| type ToResponse UpdateRoom # | |
Membership related types
data Membership #
Membership is association between Room and Person.
It can be N:N relation. A Person can belong to multiple Room.
Membership is decoded from response JSON of Get Membership Details REST call.
It is also element type of response of List Memberships call.
Constructors
| Membership | |
Fields
| |
Instances
| Eq Membership # | |
| Show Membership # | |
| ToJSON Membership # | |
| FromJSON Membership # |
|
| SparkListItem Membership # |
|
| type ToList Membership # | |
newtype MembershipId #
Identifying Membership.
Constructors
| MembershipId Text |
Instances
| Eq MembershipId # | |
| Show MembershipId # | |
| Generic MembershipId # | |
| ToJSON MembershipId # | |
| FromJSON MembershipId # | |
| SparkDetail MembershipId # | User can get detail of a membership. |
| SparkResponse MembershipId # | Get detail for a membership API uses "MembershipId' and responses |
| SparkApiPath MembershipId # | Get detail for a membership API uses |
| type Rep MembershipId # | |
| type ToResponse MembershipId # | |
newtype MembershipList #
MembershipList is decoded from response JSON of List Memberships REST call. It is list of Membership.
Constructors
| MembershipList | |
Fields | |
Instances
| Eq MembershipList # | |
| Show MembershipList # | |
| ToJSON MembershipList # | |
| FromJSON MembershipList # |
|
data MembershipFilter #
Optional query strings for room membership list API
Constructors
| MembershipFilter | |
Fields
| |
Instances
| Eq MembershipFilter # | |
| Show MembershipFilter # | |
| Generic MembershipFilter # | |
| Default MembershipFilter # | |
| SparkFilter MembershipFilter # | User can list memberships with filter parameter. |
| SparkResponse MembershipFilter # | List memberships API uses |
| SparkApiPath MembershipFilter # | List memberships API uses |
| type Rep MembershipFilter # | |
| type ToResponse MembershipFilter # | |
data CreateMembership #
CreateMembership is encoded to request body JSON of Create a Membership REST call.
Constructors
| CreateMembership | |
Fields
| |
Instances
| Eq CreateMembership # | |
| Show CreateMembership # | |
| ToJSON CreateMembership # | |
| FromJSON CreateMembership # |
|
| SparkCreate CreateMembership # | User can create a membership. |
| SparkResponse CreateMembership # | Create membership API uses "CreateMembership' and responses |
| SparkApiPath CreateMembership # | Create membership API uses |
| type ToResponse CreateMembership # | |
newtype UpdateMembership #
UpdateMembership is encoded to request body JSON of Update a Membership REST call.
Constructors
| UpdateMembership | |
Fields | |
Instances
| Eq UpdateMembership # | |
| Show UpdateMembership # | |
| ToJSON UpdateMembership # | |
| FromJSON UpdateMembership # |
|
| SparkUpdate UpdateMembership # | User can update a membership. |
| SparkResponse UpdateMembership # | Update membership API uses "UpdateMembership' and responses |
| SparkApiPath UpdateMembership # | Update membership API uses |
| type ToResponse UpdateMembership # | |
Message related types
Message is a message posted to a Room by some Person.
Room is decoded from response JSON of Get Message Details REST call.
It is also element type of response of List Messages call.
Constructors
| Message | |
Fields
| |
Identifying Message.
Instances
| Eq MessageId # | |
| Show MessageId # | |
| Generic MessageId # | |
| ToJSON MessageId # | |
| FromJSON MessageId # | |
| SparkDetail MessageId # | User can get detail of a message. |
| SparkResponse MessageId # | Get detail for a message API uses "MessageId' and responses |
| SparkApiPath MessageId # | Get detail for message API uses |
| type Rep MessageId # | |
| type ToResponse MessageId # | |
URL pointing attached file of message.
newtype MessageList #
MessageList is decoded from response JSON of List Messages REST call. It is list of Message.
Constructors
| MessageList | |
Fields
| |
Instances
| Eq MessageList # | |
| Show MessageList # | |
| ToJSON MessageList # | |
| FromJSON MessageList # |
|
data MessageFilter #
Optional query strings for message list API
Constructors
| MessageFilter | |
Fields
| |
Instances
| Eq MessageFilter # | |
| Show MessageFilter # | |
| SparkFilter MessageFilter # | User can list messages with filter parameter. |
| SparkResponse MessageFilter # | List messages API uses |
| SparkApiPath MessageFilter # | List messages API uses |
| type ToResponse MessageFilter # | |
data MentionedPeople #
Sum type for mentionedPeople query string. It can be "me" or PersonId.
Constructors
| MentionedPeopleMe | |
| MentionedPeople PersonId |
Instances
data CreateMessage #
CreateMessage is encoded to request body JSON of Create a Message REST call.
Constructors
| CreateMessage | |
Fields
| |
Instances
| Eq CreateMessage # | |
| Show CreateMessage # | |
| ToJSON CreateMessage # | |
| FromJSON CreateMessage # |
|
| SparkCreate CreateMessage # | User can create a message. |
| SparkResponse CreateMessage # | Create message API uses "CreateMessage' and responses |
| SparkApiPath CreateMessage # | Create message API uses |
| type ToResponse CreateMessage # | |
Team related types
Name of Team
Identifying Team.
Instances
| Eq TeamId # | |
| Show TeamId # | |
| Generic TeamId # | |
| ToJSON TeamId # | |
| FromJSON TeamId # | |
| SparkDetail TeamId # | User can get detail of a team. |
| SparkResponse TeamId # | Get detail for a team API uses "TeamId' and responses |
| SparkApiPath TeamId # | Get detail for a team API uses |
| type Rep TeamId # | |
| type ToResponse TeamId # | |
Team is group of Person and group of Room.
A Person can belong to multiple Team but a Room can belong to at most one Team.
Team is decoded from response JSON of Get Team Details REST call.
It is also element type of response of List Teams call.
Constructors
| Team | |
Fields
| |
Constructors
| TeamList | |
Fields
| |
newtype CreateTeam #
CreateTeam is encoded to request body JSON of Create a Team REST call.
Constructors
| CreateTeam | |
Fields | |
Instances
| Eq CreateTeam # | |
| Show CreateTeam # | |
| ToJSON CreateTeam # | |
| FromJSON CreateTeam # |
|
| SparkCreate CreateTeam # | User can create a team. |
| SparkResponse CreateTeam # | Create team API uses "CreateTeam' and responses |
| SparkApiPath CreateTeam # | Create team API uses |
| type ToResponse CreateTeam # | |
newtype UpdateTeam #
UpdateTeam is encoded to request body JSON of Update a Team REST call.
Constructors
| UpdateTeam | |
Fields | |
Instances
| Eq UpdateTeam # | |
| Show UpdateTeam # | |
| ToJSON UpdateTeam # | |
| FromJSON UpdateTeam # |
|
| SparkUpdate UpdateTeam # | User can update a team. |
| SparkResponse UpdateTeam # | Update team API uses "UpdateTeam' and responses |
| SparkApiPath UpdateTeam # | Update team API uses |
| type ToResponse UpdateTeam # | |
Team Membership related types
data TeamMembership #
TeamMembership is association between Team and Person.
It can be N:N relation. A Person can belong to multiple Team.
TeamMembership is decoded from response JSON of Get Team Membership Details REST call.
It is also element type of response of List Team Memberships call.
Constructors
| TeamMembership | |
Fields
| |
Instances
| Eq TeamMembership # | |
| Show TeamMembership # | |
| ToJSON TeamMembership # | |
| FromJSON TeamMembership # |
|
| SparkListItem TeamMembership # | |
| type ToList TeamMembership # | |
newtype TeamMembershipId #
Identifying TeamMembership.
Constructors
| TeamMembershipId Text |
Instances
| Eq TeamMembershipId # | |
| Show TeamMembershipId # | |
| Generic TeamMembershipId # | |
| ToJSON TeamMembershipId # | |
| FromJSON TeamMembershipId # | |
| SparkDetail TeamMembershipId # | User can get detail of a team membership. |
| SparkResponse TeamMembershipId # | Get detail for a team membership API uses "TeamMembershipId' and responses |
| SparkApiPath TeamMembershipId # | Get detail for a team membership API uses |
| type Rep TeamMembershipId # | |
| type ToResponse TeamMembershipId # | |
newtype TeamMembershipList #
TeamMembershipList is decoded from response JSON of List Team Memberships REST call. It is list of TeamMembership.
Constructors
| TeamMembershipList | |
Fields | |
Instances
| Eq TeamMembershipList # | |
| Show TeamMembershipList # | |
| ToJSON TeamMembershipList # | |
| FromJSON TeamMembershipList # |
|
newtype TeamMembershipFilter #
Optional query strings for team membership list API
Constructors
| TeamMembershipFilter | |
Fields
| |
Instances
| Eq TeamMembershipFilter # | |
| Show TeamMembershipFilter # | |
| SparkFilter TeamMembershipFilter # | User can list team membership with filter parameter. |
| SparkResponse TeamMembershipFilter # | List team memberships API uses |
| SparkApiPath TeamMembershipFilter # | List team memberships API uses |
| type ToResponse TeamMembershipFilter # | |
data CreateTeamMembership #
CreateTeamMembership is encoded to request body JSON of Create a Team Membership REST call.
Constructors
| CreateTeamMembership | |
Fields
| |
Instances
| Eq CreateTeamMembership # | |
| Show CreateTeamMembership # | |
| ToJSON CreateTeamMembership # | |
| FromJSON CreateTeamMembership # |
|
| SparkCreate CreateTeamMembership # | User can create a teamMembership. |
| SparkResponse CreateTeamMembership # | Create teamMembership API uses "CreateTeamMembership' and responses |
| SparkApiPath CreateTeamMembership # | Create teamMembership API uses |
| type ToResponse CreateTeamMembership # | |
newtype UpdateTeamMembership #
UpdateTeamMembership is encoded to request body JSON of Update a Team Membership REST call.
Constructors
| UpdateTeamMembership | |
Fields | |
Instances
| Eq UpdateTeamMembership # | |
| Show UpdateTeamMembership # | |
| ToJSON UpdateTeamMembership # | |
| FromJSON UpdateTeamMembership # |
|
| SparkUpdate UpdateTeamMembership # | User can update a teamMembership. |
| SparkResponse UpdateTeamMembership # | Update teamMembership API uses "UpdateTeamMembership' and responses |
| SparkApiPath UpdateTeamMembership # | Update teamMembership API uses |
| type ToResponse UpdateTeamMembership # | |
Organization related types
data Organization #
Organization is an administrative group of Cisco Spark users.
Each Person belongs to one Organization.
Organization is decoded from response JSON of Get Organization Details REST call.
It is also element type of response of List Organizations call.
Constructors
| Organization | |
Fields
| |
Instances
| Eq Organization # | |
| Show Organization # | |
| ToJSON Organization # | |
| FromJSON Organization # |
|
| SparkListItem Organization # |
|
| type ToList Organization # | |
newtype OrganizationId #
Organization identifier which user or team belongs to.
Constructors
| OrganizationId Text |
Instances
| Eq OrganizationId # | |
| Show OrganizationId # | |
| Generic OrganizationId # | |
| ToJSON OrganizationId # | |
| FromJSON OrganizationId # | |
| SparkDetail OrganizationId # | User can get detail of a organization. |
| SparkResponse OrganizationId # | Get detail for a organization API uses "OrganizationId' and responses |
| SparkApiPath OrganizationId # | Get detail for organization API uses |
| type Rep OrganizationId # | |
| type ToResponse OrganizationId # | |
newtype OrganizationDisplayName #
Display name of Organization
Constructors
| OrganizationDisplayName Text |
newtype OrganizationList #
OrganizationList is decoded from response JSON of List Organizations REST call. It is list of Organization.
Constructors
| OrganizationList | |
Fields | |
Instances
| Eq OrganizationList # | |
| Show OrganizationList # | |
| ToJSON OrganizationList # | |
| FromJSON OrganizationList # |
|
License related types
License is allowance for features and services of Cisco Spark subscription.
License is decoded from response JSON of Get License Details REST call.
It is also element type of response of List Licenses call.
Constructors
| License | |
Fields
| |
Instances
| Eq LicenseId # | |
| Show LicenseId # | |
| Generic LicenseId # | |
| ToJSON LicenseId # | |
| FromJSON LicenseId # | |
| SparkDetail LicenseId # | User can get detail of a license. |
| SparkResponse LicenseId # | Get detail for a license API uses "LicenseId' and responses |
| SparkApiPath LicenseId # | Get detail for license API uses |
| type Rep LicenseId # | |
| type ToResponse LicenseId # | |
newtype LicenseUnit #
Counting number of granted or consumed License
Constructors
| LicenseUnit Integer |
Instances
newtype LicenseList #
LicenseList is decoded from response JSON of List Licenses REST call. It is list of License.
Constructors
| LicenseList | |
Fields
| |
Instances
| Eq LicenseList # | |
| Show LicenseList # | |
| ToJSON LicenseList # | |
| FromJSON LicenseList # |
|
newtype LicenseFilter #
Optional query strings for license list API
Constructors
| LicenseFilter | |
Fields
| |
Instances
| Eq LicenseFilter # | |
| Show LicenseFilter # | |
| Generic LicenseFilter # | |
| Default LicenseFilter # | |
| SparkFilter LicenseFilter # | User can list licenses with filter parameter. |
| SparkResponse LicenseFilter # | List licenses API uses |
| SparkApiPath LicenseFilter # | List licenses API uses |
| type Rep LicenseFilter # | |
| type ToResponse LicenseFilter # | |
Role related types
A persona for an authenticated user, corresponding to a set of privileges within an organization. Role is decoded from response JSON of Get Role Details REST call. It is also element type of response of List Roles call.
Constructors
| Role | |
Instances
| Eq RoleId # | |
| Show RoleId # | |
| Generic RoleId # | |
| ToJSON RoleId # | |
| FromJSON RoleId # | |
| SparkDetail RoleId # | User can get detail of a role. |
| SparkResponse RoleId # | Get detail for a role API uses "RoleId' and responses |
| SparkApiPath RoleId # | Get detail for role API uses |
| type Rep RoleId # | |
| type ToResponse RoleId # | |
Name of Role.
Constructors
| RoleList | |
Fields
| |
Functions
Getting detail of an entity
Arguments
| :: (MonadIO m, SparkDetail key) | |
| => Authorization | Authorization string against Spark API. |
| -> CiscoSparkRequest | Predefined part of |
| -> key | One of PersonId, RoomId, MembershipId, MessageId, TeamId, TeamMembershipId, OrganizationId, LicenseId and RoleId. |
| -> m (Response (ToResponse key)) |
Get details of a Spark entity.
Obtaining detail of an entity identified by key. The key can be a value in one of
following types: PersonId, RoomId, MembershipId, MessageId, TeamId, TeamMembershipId,
OrganizationId, LicenseId, RoleId. API is automatically selected by type of the key.
A JSONException runtime exception will be thrown on an JSON parse errors.
getDetailEither :: (MonadIO m, SparkDetail key) => Authorization -> CiscoSparkRequest -> key -> m (Response (Either JSONException (ToResponse key))) #
Get details of a Spark entity. A Left value will be returned on an JSON parse errors.
Streaming response of List API with auto pagenation
streamEntityWithFilter :: (MonadIO m, SparkFilter filter, SparkListItem (ToResponse filter)) => Authorization -> CiscoSparkRequest -> filter -> ConduitT () (ToResponse filter) m () #
Get list of entities with query parameter and stream it into Conduit pipe. It automatically performs pagination.
streamTeamList :: MonadIO m => Authorization -> CiscoSparkRequest -> ConduitT () Team m () #
List of Team and stream it into Conduit pipe. It automatically performs pagination.
streamOrganizationList :: MonadIO m => Authorization -> CiscoSparkRequest -> ConduitT () Organization m () #
Filter list of Organization and stream it into Conduit pipe. It automatically performs pagination.
streamRoleList :: MonadIO m => Authorization -> CiscoSparkRequest -> ConduitT () Role m () #
List of Role and stream it into Conduit pipe. It automatically performs pagination.
Creating an entity
Arguments
| :: (MonadIO m, SparkCreate createParams) | |
| => Authorization | Authorization string against Spark API. |
| -> CiscoSparkRequest | Predefined part of |
| -> createParams | One of |
| -> m (Response (ToResponse createParams)) |
Create a Spark entity with given parameters.
Creating a new entity of Spark such as space, team, membership or message. REST API path is automatically selected by type of createParams. A JSONException runtime exception will be thrown on an JSON parse errors.
createEntityEither :: (MonadIO m, SparkCreate createParams) => Authorization -> CiscoSparkRequest -> createParams -> m (Response (Either JSONException (ToResponse createParams))) #
Create a Spark entity with given parameters. A Left value will be returned on an JSON parse errors.
Updating an entity
Arguments
| :: (MonadIO m, SparkUpdate updateParams) | |
| => Authorization | Authorization string against Spark API. |
| -> CiscoSparkRequest | Predefined part of |
| -> updateParams | One of |
| -> m (Response (ToResponse updateParams)) |
Update a Spark entity with given parameters.
Creating a new entity of Spark such as space, team, or membership. REST API path is automatically selected by type of updateParams. A JSONException runtime exception will be thrown on an JSON parse errors.
updateEntityEither :: (MonadIO m, SparkUpdate updateParams) => Authorization -> CiscoSparkRequest -> updateParams -> m (Response (Either JSONException (ToResponse updateParams))) #
Update a Spark entity with given parameters. A Left value will be returned on an JSON parse errors.
Creating default filter spec from mandatory field
defaultMessageFilter :: RoomId -> MessageFilter #
Default value of query strings for message list API.
Because RoomId is mandatory, user have to supply it in order to get rest of defaults.
defaultTeamMembershipFilter :: TeamId -> TeamMembershipFilter #
Default value of query strings for team membership list API.
Because TeamId is mandatory, user have to supply it in order to get rest of defaults.
As of writing, there is no filter parameter other than TeamId but TeamMembershipFilter is
used for providing consistent API like streamEntityWithFilter.
Deleting an entity
Arguments
| :: MonadIO m | |
| => Authorization | Authorization string against Spark API. |
| -> CiscoSparkRequest | Predefined part of |
| -> RoomId | Identifier of a space to be deleted. |
| -> m (Response ()) |
Deletes a room, by ID.
Arguments
| :: MonadIO m | |
| => Authorization | Authorization string against Spark API. |
| -> CiscoSparkRequest | Predefined part of |
| -> MembershipId | Identifier of a space to be deleted. |
| -> m (Response ()) |
Deletes a membership, by ID.
Arguments
| :: MonadIO m | |
| => Authorization | Authorization string against Spark API. |
| -> CiscoSparkRequest | Predefined part of |
| -> MessageId | Identifier of a space to be deleted. |
| -> m (Response ()) |
Deletes a message, by ID.
Arguments
| :: MonadIO m | |
| => Authorization | Authorization string against Spark API. |
| -> CiscoSparkRequest | Predefined part of |
| -> TeamId | Identifier of a space to be deleted. |
| -> m (Response ()) |
Deletes a team, by ID.
Arguments
| :: MonadIO m | |
| => Authorization | Authorization string against Spark API. |
| -> CiscoSparkRequest | Predefined part of |
| -> TeamMembershipId | Identifier of a space to be deleted. |
| -> m (Response ()) |
Deletes a teamMembership, by ID.