-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | A Haskell bindings for Webex Teams API
--   
--   Please see the README on Github at
--   <a>https://github.com/nshimaza/webex-teams-api#readme</a>
@package webex-teams-api
@version 0.2.0.0


-- | Implements some internal functions for Cisco Webex Teams API.
module Network.WebexTeams.Internal

-- | Drop given number of characters from the given <a>String</a> then
--   change first character of the remaining string to lowercase. This
--   function is intended to be used for <tt>fieldLabelModifier</tt> and
--   <tt>constructorTagModifier</tt> argument of <tt>DeriveJSON</tt> from
--   DATA.Aeson.TH. You can find how this function is used in
--   <a>WebexTeams</a> source code.
dropAndLow :: Int -> String -> String

-- | Parsed Link header parameter. Convert only rel param to <a>Rel</a> and
--   keeps other params as-is.
data LinkParam
Rel :: LinkParam
Other :: ByteString -> LinkParam

-- | Parsed entire Link header value. It keeps URI-Reference part untouched
--   for farther processing in different way.
data LinkHeader
LinkHeader :: ByteString -> [(LinkParam, ByteString)] -> LinkHeader
[linkHeaderUrl] :: LinkHeader -> ByteString
[linkHeaderParams] :: LinkHeader -> [(LinkParam, ByteString)]

-- | Matches to double quote.
dQuote :: Parser Word8

-- | Matches to semicolon.
semicolon :: Parser Word8

-- | Matches to equal character.
equalChar :: Parser Word8

-- | Matches to less-than character.
lessThan :: Parser Word8

-- | Matches to greater-than character.
greaterThan :: Parser Word8

-- | Skips white spaces.
skipSpace :: Parser ()

-- | Parse RFC7230 token.
token :: Parser ByteString

-- | Parse RFC7230 quoted-pair.
quotedPair :: Parser Word8

-- | Parse RFC7230 quoted-string.
quotedString :: Parser ByteString

-- | Parse a parameter value in Link header.
paramValue :: Parser ByteString

-- | Convert parameter name string to LinkParam.
paramName :: ByteString -> LinkParam

-- | Parse parameter part of Link header.
param :: Parser (LinkParam, ByteString)

-- | Attoparsec parser of RFC5988 HTTP Link Header. Link header is defined
--   in RFC5988 <a>https://tools.ietf.org/html/rfc5988</a>. This parser
--   doesn't parse complete spec of RFC5988 but only parses rel="next" link
--   for simple pagination. It doesn't parse obs-fold defined in RFC7230
--   <a>https://tools.ietf.org/html/rfc7230</a>. It assumes Header in
--   Response never contains CRLF or LF.
linkHeader :: Parser LinkHeader

-- | Accept all RFC5988 Link HTTP header, filter first header containing
--   rel="next" param, parse URL part.
extractNextUrl :: [ByteString] -> [ByteString]

-- | Return URL for next page if it exists in given response.
getNextUrl :: Response a -> Maybe ByteString

-- | Validate extracted URL from HTTP Link Header by <a>getNextUrl</a>.
--   Check if it has same scheme and URI authority as original request.
validateUrl :: String -> URIAuth -> ByteString -> Maybe ByteString
instance GHC.Show.Show Network.WebexTeams.Internal.LinkHeader
instance GHC.Classes.Eq Network.WebexTeams.Internal.LinkHeader
instance GHC.Show.Show Network.WebexTeams.Internal.LinkParam
instance GHC.Classes.Eq Network.WebexTeams.Internal.LinkParam


-- | <i>Deprecated: Use Network.WebexTeams.Internal</i>
module Network.CiscoSpark.Internal


-- | This module defines most of types and records used in webex-teams-api
--   package. Records used for REST communications are designed to be
--   converted from / to JSON using Aeson package. Those records are also
--   designed to allow create lenses by Control.Lens.TH.makeFields.
--   
--   Following example creates overloaded accessors for <a>Person</a>,
--   <a>Room</a> and <a>Team</a>.
--   
--   <pre>
--   makeFields ''Person
--   makeFields ''Room
--   makeFields ''Team
--   </pre>
--   
--   You can access <a>personId</a>, <a>roomId</a> and <a>teamId</a> via
--   overloaded accessor function <a>id</a> like this.
--   
--   <pre>
--   let yourPersonId = yourPerson ^. id
--       yourRoomId = yourRoom ^. id
--       yourTeamId = yourTeam ^. id
--   </pre>
--   
--   This package doesn't pre-generate those lenses for you because it is
--   so easy. Please create them by yourself as needed.
module Network.WebexTeams.Types

-- | URL path for people API.
peoplePath :: ByteString

-- | URL path for rooms API.
roomsPath :: ByteString

-- | URL path for memberships API.
membershipsPath :: ByteString

-- | URL path for messages API.
messagesPath :: ByteString

-- | URL path for teams API.
teamsPath :: ByteString

-- | URL path for team memberships API.
teamMembershipsPath :: ByteString

-- | URL path for organizations API.
organizationsPath :: ByteString

-- | URL path for licenes API.
licensesPath :: ByteString

-- | URL path for roles API.
rolesPath :: ByteString

-- | URL path for webhooks API.
webhooksPath :: ByteString

-- | WebexTeamsListItem is a type class grouping types with following
--   common usage.
--   
--   <ul>
--   <li>It is used for return value of get-detail APIs.</li>
--   <li>It is used for element of return value of list APIs.</li>
--   </ul>
--   
--   WebexTeamsListItem also associates the above type to wrapping list
--   type (e.g. associates <a>Person</a> to <a>PersonList</a>). Wrapping
--   type (PersonList in this case) is necessary for parsing JSON from REST
--   API but what we are interested in is bare list such like [Person].
--   Type family association defined in this class is used for type
--   translation from type of items to type of wrapper.
class FromJSON (ToList i) => WebexTeamsListItem i where {
    type family ToList i :: *;
}

-- | Get bare list from wrapped type which can be parsed directly from
--   JSON.
unwrap :: WebexTeamsListItem i => ToList i -> [i]

-- | Type class for getting URL path of API category from given type of
--   value.
class WebexTeamsApiPath a
apiPath :: WebexTeamsApiPath a => a -> ByteString

-- | Type family to associate a type appears in an argument to response
--   type.
class FromJSON (ToResponse a) => WebexTeamsResponse a where {
    type family ToResponse a :: *;
}

-- | Extract containing entity ID string from given type of value.
class (WebexTeamsApiPath a, WebexTeamsResponse a) => WebexTeamsDetail a
toIdStr :: WebexTeamsDetail a => a -> Text

-- | Convert given filter condition parameter in a concrete type to HTTP
--   query strings.
class (WebexTeamsApiPath a, WebexTeamsResponse a) => WebexTeamsFilter a
toFilterList :: WebexTeamsFilter a => a -> [(ByteString, Maybe ByteString)]

-- | Type class for parameter type for create entity API.
class (WebexTeamsApiPath a, WebexTeamsResponse a, ToJSON a) => WebexTeamsCreate a

-- | Type class for parameter type for update entity API.
class (WebexTeamsApiPath a, WebexTeamsResponse a, ToJSON a) => WebexTeamsUpdate a

-- | Type representing timestamp. For now, it is just copied from API
--   response JSON.
newtype Timestamp
Timestamp :: Text -> Timestamp

-- | Error code for element level error potentially contained in List API
--   responses.
newtype ErrorCode
ErrorCode :: Text -> ErrorCode

-- | <a>ErrorTitle</a> represent concrete error code and reason. It appears
--   in <a>Errors</a>.
data ErrorTitle
ErrorTitle :: ErrorCode -> Text -> ErrorTitle

-- | Error code of element level error in List API response.
[errorTitleCode] :: ErrorTitle -> ErrorCode

-- | Reason explanation of the error.
[errorTitleReason] :: ErrorTitle -> Text

-- | <a>Errors</a> 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 <a>API Document</a> for more detail.
newtype Errors
Errors :: ErrorTitle -> Errors
[errorsTitle] :: Errors -> ErrorTitle

-- | Identifying <a>Person</a> describing detail of Webex Teams user or
--   bot.
newtype PersonId
PersonId :: Text -> PersonId

-- | Email address of user.
newtype Email
Email :: Text -> Email

-- | Display name of user.
newtype DisplayName
DisplayName :: Text -> DisplayName

-- | Nickname of user.
newtype NickName
NickName :: Text -> NickName

-- | First name of user.
newtype FirstName
FirstName :: Text -> FirstName

-- | Last name of user.
newtype LastName
LastName :: Text -> LastName

-- | URL pointing to image file of Avatar.
newtype AvatarUrl
AvatarUrl :: Text -> AvatarUrl

-- | <a>Organization</a> identifier which user or team belongs to.
newtype OrganizationId
OrganizationId :: Text -> OrganizationId

-- | <a>Role</a> identifier which can be assigned to user. See <a>Role</a>
--   too.
newtype RoleId
RoleId :: Text -> RoleId

-- | <a>License</a> identifier which can be enabled on user. See
--   <a>License</a> too.
newtype LicenseId
LicenseId :: Text -> LicenseId

-- | Timezone in timezone name.
newtype Timezone
Timezone :: Text -> Timezone

-- | Current status of <a>Person</a>. It can be updated automatically by
--   recent activity or explicitly updated by user's operation or
--   propagated from vacation setting on email system.
data PersonStatus

-- | The <a>Person</a> is currently active. Decoded from "active".
PersonStatusActive :: PersonStatus

-- | The <a>Person</a> is currently not active. Decoded from "inactive".
PersonStatusInactive :: PersonStatus

-- | Email system of the <a>Person</a> currently sets vacation. Decoded
--   from "OutOfOffice".
PersonStatusOutOfOffice :: PersonStatus

-- | The <a>Person</a> is explicitly indicated do-not-disturb. Decoded from
--   "DoNotDisturb".
PersonStatusDoNotDisturb :: PersonStatus

-- | The status of the <a>Person</a> is unknown. Decoded from "unknown".
PersonStatusUnknown :: PersonStatus

-- | <a>PersonType</a> indicates whether the Person is real human or bot.
data PersonType

-- | The <a>Person</a> is a real human. Decoded from "person".
PersonTypePerson :: PersonType

-- | The <a>Person</a> is a bot. Decoded from "bot".
PersonTypeBot :: PersonType

-- | <a>Person</a> is detail description of Webex Teams 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.
data Person
Person :: PersonId -> Maybe Errors -> Maybe [Email] -> Maybe DisplayName -> Maybe NickName -> Maybe FirstName -> Maybe LastName -> Maybe AvatarUrl -> Maybe OrganizationId -> Maybe [RoleId] -> Maybe [LicenseId] -> Maybe Timestamp -> Maybe Timezone -> Maybe Timestamp -> Maybe PersonStatus -> Maybe Bool -> Maybe Bool -> Maybe PersonType -> Person

-- | Identifier of the Person.
[personId] :: Person -> PersonId

-- | Element level error possibly contained in List API response.
[personErrors] :: Person -> Maybe Errors

-- | List of email addresses which the Person has.
[personEmails] :: Person -> Maybe [Email]

-- | Display name of the Person.
[personDisplayName] :: Person -> Maybe DisplayName

-- | Nickname of the Person.
[personNickName] :: Person -> Maybe NickName

-- | First name of the Person.
[personFirstName] :: Person -> Maybe FirstName

-- | Last name of the Person.
[personLastName] :: Person -> Maybe LastName

-- | URL pointing a image used for Avatar of the Person.
[personAvatar] :: Person -> Maybe AvatarUrl

-- | <a>Organization</a> which the Person belongs to.
[personOrgId] :: Person -> Maybe OrganizationId

-- | List of roles assigned to the Person.
[personRoles] :: Person -> Maybe [RoleId]

-- | List of licenses effective on the Person.
[personLicenses] :: Person -> Maybe [LicenseId]

-- | Timestamp when the Person was created.
[personCreated] :: Person -> Maybe Timestamp

-- | Timezone of the Person.
[personTimezone] :: Person -> Maybe Timezone

-- | Timestamp of the latest activity of the Person.
[personLastActivity] :: Person -> Maybe Timestamp

-- | Current status of the Person
[personStatus] :: Person -> Maybe PersonStatus

-- | True if invitation for the Person is pending.
[personInvitePending] :: Person -> Maybe Bool

-- | True if login of the Person is enabled.
[personLoginEnabled] :: Person -> Maybe Bool

-- | Indicating if the Person is real human or bot.
[personType] :: Person -> Maybe PersonType

-- | <a>PersonList</a> is decoded from response JSON of List People REST
--   call. It is list of <a>Person</a>.
newtype PersonList
PersonList :: [Person] -> PersonList
[personListItems] :: PersonList -> [Person]

-- | Optional query strings for people list API.
data PersonFilter
PersonFilter :: Maybe Email -> Maybe DisplayName -> Maybe OrganizationId -> PersonFilter

-- | Find person who has given email address.
[personFilterEmail] :: PersonFilter -> Maybe Email

-- | Find person who has given display name.
[personFilterDisplayName] :: PersonFilter -> Maybe DisplayName

-- | Find person who belongs to given organization.
[personFilterOrgId] :: PersonFilter -> Maybe OrganizationId

-- | <a>CreatePerson</a> is encoded to request body JSON of Create a Person
--   REST call.
data CreatePerson
CreatePerson :: Maybe [Email] -> Maybe DisplayName -> Maybe FirstName -> Maybe LastName -> Maybe AvatarUrl -> Maybe OrganizationId -> Maybe [RoleId] -> Maybe [LicenseId] -> CreatePerson

-- | List of email addresses which the Person has.
[createPersonEmails] :: CreatePerson -> Maybe [Email]

-- | Display name of the Person.
[createPersonDisplayName] :: CreatePerson -> Maybe DisplayName

-- | First name of the Person.
[createPersonFirstName] :: CreatePerson -> Maybe FirstName

-- | Last name of the Person.
[createPersonLastName] :: CreatePerson -> Maybe LastName

-- | URL pointing a image used for Avatar of the Person.
[createPersonAvatar] :: CreatePerson -> Maybe AvatarUrl

-- | Organization which the Person belongs to.
[createPersonOrgId] :: CreatePerson -> Maybe OrganizationId

-- | List of roles assigned to the person.
[createPersonRoles] :: CreatePerson -> Maybe [RoleId]

-- | List of licenses effective on the Person.
[createPersonLicenses] :: CreatePerson -> Maybe [LicenseId]

-- | <a>UpdatePerson</a> is encoded to request body JSON of Update a Person
--   REST call.
data UpdatePerson
UpdatePerson :: Maybe DisplayName -> Maybe FirstName -> Maybe LastName -> Maybe AvatarUrl -> Maybe OrganizationId -> Maybe [RoleId] -> Maybe [LicenseId] -> UpdatePerson

-- | Display name of the Person.
[updatePersonDisplayName] :: UpdatePerson -> Maybe DisplayName

-- | First name of the Person.
[updatePersonFirstName] :: UpdatePerson -> Maybe FirstName

-- | Last name of the Person.
[updatePersonLastName] :: UpdatePerson -> Maybe LastName

-- | URL pointing a image used for Avatar of the Person.
[updatePersonAvatar] :: UpdatePerson -> Maybe AvatarUrl

-- | Organization which the Person belongs to.
[updatePersonOrgId] :: UpdatePerson -> Maybe OrganizationId

-- | List of roles assigned to the person.
[updatePersonRoles] :: UpdatePerson -> Maybe [RoleId]

-- | List of licenses effective on the Person.
[updatePersonLicenses] :: UpdatePerson -> Maybe [LicenseId]

-- | Identifying Team.
newtype TeamId
TeamId :: Text -> TeamId

-- | Name of Team
newtype TeamName
TeamName :: Text -> TeamName

-- | <a>Team</a> is group of <a>Person</a> and group of <a>Room</a>. 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.
data Team
Team :: TeamId -> Maybe Errors -> Maybe TeamName -> Maybe PersonId -> Maybe Timestamp -> Team

-- | Identifier of the Team.
[teamId] :: Team -> TeamId

-- | Element level error possibly contained in List API response.
[teamErrors] :: Team -> Maybe Errors

-- | Name of the Team.
[teamName] :: Team -> Maybe TeamName

-- | Identifier of the Person who created the Team.
[teamCreatorId] :: Team -> Maybe PersonId

-- | Timestamp when the Team was created.
[teamCreated] :: Team -> Maybe Timestamp

-- | <a>TeamList</a> is decoded from response JSON of List Teams REST call.
--   It is list of <a>Team</a>.
newtype TeamList
TeamList :: [Team] -> TeamList
[teamListItems] :: TeamList -> [Team]

-- | <a>CreateTeam</a> is encoded to request body JSON of Create a Team
--   REST call.
newtype CreateTeam
CreateTeam :: TeamName -> CreateTeam
[createTeamName] :: CreateTeam -> TeamName

-- | <a>UpdateTeam</a> is encoded to request body JSON of Update a Team
--   REST call.
newtype UpdateTeam
UpdateTeam :: TeamName -> UpdateTeam
[updateTeamName] :: UpdateTeam -> TeamName

-- | Identifying TeamMembership.
newtype TeamMembershipId
TeamMembershipId :: Text -> TeamMembershipId

-- | <a>TeamMembership</a> is association between <a>Team</a> and
--   <a>Person</a>. 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.
data TeamMembership
TeamMembership :: TeamMembershipId -> Maybe Errors -> Maybe TeamId -> Maybe PersonId -> Maybe Email -> Maybe DisplayName -> Maybe OrganizationId -> Maybe Bool -> Maybe Timestamp -> TeamMembership

-- | Identifier of the TeamMembership entry.
[teamMembershipId] :: TeamMembership -> TeamMembershipId

-- | Element level error possibly contained in List API response.
[teamMembershipErrors] :: TeamMembership -> Maybe Errors

-- | Identifier of the <a>Team</a> which the Person belongs to.
[teamMembershipTeamId] :: TeamMembership -> Maybe TeamId

-- | Identifier of user who belongs to the Team.
[teamMembershipPersonId] :: TeamMembership -> Maybe PersonId

-- | Email address of the user identified by the PersonId.
[teamMembershipPersonEmail] :: TeamMembership -> Maybe Email

-- | Display name of the user identified by the PersonId.
[teamMembershipPersonDisplayName] :: TeamMembership -> Maybe DisplayName

-- | Identifier of <a>Organization</a> which the Team blongs to.
[teamMembershipPersonOrgId] :: TeamMembership -> Maybe OrganizationId

-- | The Person is moderator of the Team when True.
[teamMembershipIsModerator] :: TeamMembership -> Maybe Bool

-- | Timestamp when the TeamMembership entry created.
[teamMembershipCreated] :: TeamMembership -> Maybe Timestamp

-- | <a>TeamMembershipList</a> is decoded from response JSON of List Team
--   Memberships REST call. It is list of <a>TeamMembership</a>.
newtype TeamMembershipList
TeamMembershipList :: [TeamMembership] -> TeamMembershipList
[teamMembershipListItems] :: TeamMembershipList -> [TeamMembership]

-- | Optional query strings for team membership list API
newtype TeamMembershipFilter
TeamMembershipFilter :: TeamId -> TeamMembershipFilter

-- | List membership only in given team.
[teamMembershipFilterTeamId] :: TeamMembershipFilter -> TeamId

-- | Default value of query strings for team membership list API. Because
--   <a>TeamId</a> 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 <a>TeamMembershipFilter</a> is used for providing
--   consistent API like <tt>streamEntityWithFilter</tt>.
defaultTeamMembershipFilter :: TeamId -> TeamMembershipFilter

-- | <a>CreateTeamMembership</a> is encoded to request body JSON of Create
--   a Team Membership REST call.
data CreateTeamMembership
CreateTeamMembership :: TeamId -> Maybe PersonId -> Maybe Email -> Maybe Bool -> CreateTeamMembership

-- | Identifier of <a>Team</a> which the user will be added to.
[createTeamMembershipTeamId] :: CreateTeamMembership -> TeamId

-- | Identifier of <a>Person</a> who will be added to the Team.
[createTeamMembershipPersonId] :: CreateTeamMembership -> Maybe PersonId

-- | Email of the Person to be added.
[createTeamMembershipPersonEmail] :: CreateTeamMembership -> Maybe Email

-- | The user becomes a moderator of the team if True.
[createTeamMembershipIsModerator] :: CreateTeamMembership -> Maybe Bool

-- | <a>UpdateTeamMembership</a> is encoded to request body JSON of Update
--   a Team Membership REST call.
newtype UpdateTeamMembership
UpdateTeamMembership :: Bool -> UpdateTeamMembership
[updateTeamMembershipIsModerator] :: UpdateTeamMembership -> Bool

-- | Identifying <a>Room</a>.
newtype RoomId
RoomId :: Text -> RoomId

-- | Title text of <a>Room</a>.
newtype RoomTitle
RoomTitle :: Text -> RoomTitle

-- | SIP address.
newtype SipAddr
SipAddr :: Text -> SipAddr

-- | <a>RoomType</a> indicates if the <a>Room</a> is for 1:1 user or group
--   of users.
data RoomType

-- | The Room is for 1:1. Decoded from "direct".
RoomTypeDirect :: RoomType

-- | The Room is for group. Decoded from "group".
RoomTypeGroup :: RoomType

-- | <a>Room</a> is communication space in Webex Teams 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 Webex Teams.
--   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.
data Room
Room :: RoomId -> Maybe Errors -> Maybe RoomTitle -> Maybe RoomType -> Maybe Bool -> Maybe SipAddr -> Maybe Timestamp -> Maybe TeamId -> Maybe PersonId -> Maybe Timestamp -> Room

-- | Identifier of the Room.
[roomId] :: Room -> RoomId

-- | Element level error possibly contained in List API response.
[roomErrors] :: Room -> Maybe Errors

-- | Title text of the Room.
[roomTitle] :: Room -> Maybe RoomTitle

-- | Indicates if the Room is for 1:1 or group.
[roomType] :: Room -> Maybe RoomType

-- | True if the Room is locked.
[roomIsLocked] :: Room -> Maybe Bool

-- | SIP address of the Room.
[roomSipAddress] :: Room -> Maybe SipAddr

-- | Timestamp when the last activity was happen on the Room.
[roomLastActivity] :: Room -> Maybe Timestamp

-- | Identifier of the <a>Team</a> which the Room belongs to.
[roomTeamId] :: Room -> Maybe TeamId

-- | Identifier of <a>Person</a> who created the Room.
[roomCreatorId] :: Room -> Maybe PersonId

-- | Timestamp when the Room was created.
[roomCreated] :: Room -> Maybe Timestamp

-- | <a>RoomList</a> is decoded from response JSON of List Rooms REST call.
--   It is list of <a>Room</a>.
newtype RoomList
RoomList :: [Room] -> RoomList
[roomListItems] :: RoomList -> [Room]

-- | Sorting option for room list API.
data RoomFilterSortBy
RoomFilterSortById :: RoomFilterSortBy
RoomFilterSortByLastActivity :: RoomFilterSortBy
RoomFilterSortByCreated :: RoomFilterSortBy

-- | Optional query strings for room list API
data RoomFilter
RoomFilter :: Maybe TeamId -> Maybe RoomType -> Maybe RoomFilterSortBy -> RoomFilter

-- | List rooms only in given team.
[roomFilterTeamId] :: RoomFilter -> Maybe TeamId

-- | List given type rooms only.
[roomFilterRoomType] :: RoomFilter -> Maybe RoomType

-- | Sort response by given option.
[roomFilterSortBy] :: RoomFilter -> Maybe RoomFilterSortBy

-- | Sum type to ByteString converter for <a>RoomType</a>.
roomTypeToFilterString :: RoomType -> ByteString

-- | Sum type to ByteString converter for <a>RoomFilterSortBy</a>.
roomFilterSortByToFilterString :: RoomFilterSortBy -> ByteString

-- | <a>CreateRoom</a> is encoded to request body JSON of Create a Room
--   REST call.
data CreateRoom
CreateRoom :: RoomTitle -> Maybe TeamId -> CreateRoom

-- | Title text of newly created Room.
[createRoomTitle] :: CreateRoom -> RoomTitle

-- | Identifier of <a>Team</a> which the Room will belong to. If Nothing,
--   the new Room will be standalone.
[createRoomTeamId] :: CreateRoom -> Maybe TeamId

-- | <a>UpdateRoom</a> is encoded to request body JSON of Update a Room
--   REST call.
newtype UpdateRoom
UpdateRoom :: RoomTitle -> UpdateRoom
[updateRoomTitle] :: UpdateRoom -> RoomTitle

-- | Identifying <a>Membership</a>.
newtype MembershipId
MembershipId :: Text -> MembershipId

-- | <a>Membership</a> is association between <a>Room</a> and
--   <a>Person</a>. 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.
data Membership
Membership :: MembershipId -> Maybe Errors -> Maybe RoomId -> Maybe PersonId -> Maybe Email -> Maybe DisplayName -> Maybe OrganizationId -> Maybe Bool -> Maybe Bool -> Maybe Timestamp -> Membership

-- | Identifier of the Membership entry.
[membershipId] :: Membership -> MembershipId

-- | Element level error possibly contained in List API response.
[membershipErrors] :: Membership -> Maybe Errors

-- | Identifier of the <a>Room</a> associated to the Person
[membershipRoomId] :: Membership -> Maybe RoomId

-- | Identifier of the <a>Person</a> associated to the Room
[membershipPersonId] :: Membership -> Maybe PersonId

-- | Email of the Person
[membershipPersonEmail] :: Membership -> Maybe Email

-- | Display name of the Person
[membershipPersonDisplayName] :: Membership -> Maybe DisplayName

-- | Identifier of <a>Organization</a> which the Person belongs to.
[membershipPersonOrgId] :: Membership -> Maybe OrganizationId

-- | True if the Person is a moderator of the room.
[membershipIsModerator] :: Membership -> Maybe Bool

-- | True if the Person is monitoring the Room.
[membershipIsMonitor] :: Membership -> Maybe Bool

-- | Timestamp when the Membership was created.
[membershipCreated] :: Membership -> Maybe Timestamp

-- | <a>MembershipList</a> is decoded from response JSON of List
--   Memberships REST call. It is list of <a>Membership</a>.
newtype MembershipList
MembershipList :: [Membership] -> MembershipList
[membershipListItems] :: MembershipList -> [Membership]

-- | Optional query strings for room membership list API
data MembershipFilter
MembershipFilter :: Maybe RoomId -> Maybe PersonId -> Maybe Email -> MembershipFilter

-- | List membership only in given room.
[membershipFilterRoomId] :: MembershipFilter -> Maybe RoomId

-- | List membership related to given person of personId.
[membershipFilterPersonId] :: MembershipFilter -> Maybe PersonId

-- | List membership related to given person of email.
[membershipFilterPersonEmail] :: MembershipFilter -> Maybe Email

-- | <a>CreateMembership</a> is encoded to request body JSON of Create a
--   Membership REST call.
data CreateMembership
CreateMembership :: RoomId -> Maybe PersonId -> Maybe Email -> Maybe Bool -> CreateMembership

-- | Identifier of <a>Room</a> which the Person will be added to.
[createMembershipRoomId] :: CreateMembership -> RoomId

-- | Identifier of <a>Person</a> who will be added to the Room.
[createMembershipPersonId] :: CreateMembership -> Maybe PersonId

-- | Email of the Person to be added.
[createMembershipPersonEmail] :: CreateMembership -> Maybe Email

-- | The Person becomes a moderator of the Room if True.
[createMembershipIsModerator] :: CreateMembership -> Maybe Bool

-- | <a>UpdateMembership</a> is encoded to request body JSON of Update a
--   Membership REST call.
newtype UpdateMembership
UpdateMembership :: Bool -> UpdateMembership
[updateMembershipIsModerator] :: UpdateMembership -> Bool

-- | Identifying <a>Message</a>.
newtype MessageId
MessageId :: Text -> MessageId

-- | Body of message in plain text.
newtype MessageText
MessageText :: Text -> MessageText

-- | Body of message in html.
newtype MessageHtml
MessageHtml :: Text -> MessageHtml

-- | Body of message in markdown.
newtype MessageMarkdown
MessageMarkdown :: Text -> MessageMarkdown

-- | URL pointing attached file of message.
newtype FileUrl
FileUrl :: Text -> FileUrl

-- | <a>Message</a> is a message posted to a <a>Room</a> by some
--   <a>Person</a>. Room is decoded from response JSON of Get Message
--   Details REST call. It is also element type of response of List
--   Messages call.
data Message
Message :: MessageId -> Maybe Errors -> Maybe RoomId -> Maybe RoomType -> Maybe PersonId -> Maybe Email -> Maybe MessageText -> Maybe MessageHtml -> Maybe [FileUrl] -> Maybe PersonId -> Maybe Email -> Maybe Timestamp -> Maybe [PersonId] -> Message

-- | Identifier of the Message.
[messageId] :: Message -> MessageId

-- | Element level error possibly contained in List API response.
[messageErrors] :: Message -> Maybe Errors

-- | Identifier of the room where the Message was sent.
[messageRoomId] :: Message -> Maybe RoomId

-- | Type of Room the message was sent to.
[messageRoomType] :: Message -> Maybe RoomType

-- | Presents in documentation but doesn't appear in actual API response.
[messageToPersonId] :: Message -> Maybe PersonId

-- | Presents in documentation but doesn't appear in actual API response.
[messageToPersonEmail] :: Message -> Maybe Email

-- | Message body in plain text.
[messageText] :: Message -> Maybe MessageText

-- | Message body in HTML.
[messageHtml] :: Message -> Maybe MessageHtml

-- | URL to files attached to the message.
[messageFiles] :: Message -> Maybe [FileUrl]

-- | Identifier of <a>Person</a> who sent the message.
[messagePersonId] :: Message -> Maybe PersonId

-- | Email of Person who sent the message.
[messagePersonEmail] :: Message -> Maybe Email

-- | Timestamp when the massage was sent.
[messageCreated] :: Message -> Maybe Timestamp

-- | List of identifiers of Person were mentioned in the message.
[messageMentionedPeople] :: Message -> Maybe [PersonId]

-- | <a>MessageList</a> is decoded from response JSON of List Messages REST
--   call. It is list of <a>Message</a>.
newtype MessageList
MessageList :: [Message] -> MessageList
[messageListItems] :: MessageList -> [Message]

-- | Sum type for mentionedPeople query string. It can be "me" or
--   <a>PersonId</a>.
data MentionedPeople
MentionedPeopleMe :: MentionedPeople
MentionedPeople :: PersonId -> MentionedPeople

-- | Optional query strings for message list API
data MessageFilter
MessageFilter :: RoomId -> Maybe MentionedPeople -> Maybe Timestamp -> Maybe MessageId -> MessageFilter

-- | Mandatory parameter which room to search.
[messageFilterRoomId] :: MessageFilter -> RoomId

-- | List messages only mentioned to given person.
[messageFilterMentionedPeople] :: MessageFilter -> Maybe MentionedPeople

-- | List messages posted before given timestamp.
[messageFilterBefore] :: MessageFilter -> Maybe Timestamp

-- | List messages posted before given message.
[messageFilterBeforeMessage] :: MessageFilter -> Maybe MessageId

-- | Default value of query strings for message list API. Because
--   <a>RoomId</a> is mandatory, user have to supply it in order to get
--   rest of defaults.
defaultMessageFilter :: RoomId -> MessageFilter

-- | Sum type to ByteString converter for mentionedPeople query string.
mentionedPeopleToFilterString :: MentionedPeople -> ByteString

-- | <a>CreateMessage</a> is encoded to request body JSON of Create a
--   Message REST call.
data CreateMessage
CreateMessage :: Maybe RoomId -> Maybe PersonId -> Maybe Email -> Maybe MessageText -> Maybe MessageMarkdown -> Maybe [FileUrl] -> CreateMessage

-- | Identifier of the <a>Room</a> the message will be posted to.
[createMessageRoomId] :: CreateMessage -> Maybe RoomId

-- | Identifier of the <a>Person</a> to whom the direct message will be
--   sent.
[createMessageToPersonId] :: CreateMessage -> Maybe PersonId

-- | Email of Person who receives the Message.
[createMessageToPersonEmail] :: CreateMessage -> Maybe Email

-- | Message body in plain text.
[createMessageText] :: CreateMessage -> Maybe MessageText

-- | Message body in markdown format.
[createMessageMarkdown] :: CreateMessage -> Maybe MessageMarkdown

-- | URLs of Attached files to the message.
[createMessageFiles] :: CreateMessage -> Maybe [FileUrl]

-- | Display name of <a>Organization</a>
newtype OrganizationDisplayName
OrganizationDisplayName :: Text -> OrganizationDisplayName

-- | <a>Organization</a> is an administrative group of Webex Teams users.
--   Each <a>Person</a> 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.
data Organization
Organization :: OrganizationId -> Maybe Errors -> Maybe OrganizationDisplayName -> Maybe Timestamp -> Organization

-- | Identifier of the Organization.
[organizationId] :: Organization -> OrganizationId

-- | Element level error possibly contained in List API response.
[organizationErrors] :: Organization -> Maybe Errors

-- | Display name of the Organization.
[organizationDisplayName] :: Organization -> Maybe OrganizationDisplayName

-- | Timestamp when the Organization was created.
[organizationCreated] :: Organization -> Maybe Timestamp

-- | <a>OrganizationList</a> is decoded from response JSON of List
--   Organizations REST call. It is list of <a>Organization</a>.
newtype OrganizationList
OrganizationList :: [Organization] -> OrganizationList
[organizationListItems] :: OrganizationList -> [Organization]

-- | Display name of License
newtype LicenseName
LicenseName :: Text -> LicenseName

-- | Counting number of granted or consumed License
newtype LicenseUnit
LicenseUnit :: Integer -> LicenseUnit

-- | <a>License</a> is allowance for features and services of Webex Teams
--   subscription. License is decoded from response JSON of Get License
--   Details REST call. It is also element type of response of List
--   Licenses call.
data License
License :: LicenseId -> Maybe Errors -> Maybe LicenseName -> Maybe LicenseUnit -> Maybe LicenseUnit -> License

-- | Identifier of the License.
[licenseId] :: License -> LicenseId

-- | Element level error possibly contained in List API response.
[licenseErrors] :: License -> Maybe Errors

-- | Name of the License.
[licenseName] :: License -> Maybe LicenseName

-- | Number of granted License.
[licenseTotalUnits] :: License -> Maybe LicenseUnit

-- | Number of currently consumed License.
[licenseConsumedUnits] :: License -> Maybe LicenseUnit

-- | <a>LicenseList</a> is decoded from response JSON of List Licenses REST
--   call. It is list of <a>License</a>.
newtype LicenseList
LicenseList :: [License] -> LicenseList
[licenseListItems] :: LicenseList -> [License]

-- | Optional query strings for license list API
newtype LicenseFilter
LicenseFilter :: Maybe OrganizationId -> LicenseFilter

-- | List licenses only applicable to given organization.
[licenseFilterOrgId] :: LicenseFilter -> Maybe OrganizationId

-- | Name of <a>Role</a>.
newtype RoleName
RoleName :: Text -> RoleName

-- | 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.
data Role
Role :: RoleId -> Maybe Errors -> Maybe RoleName -> Role

-- | Identifier of the Role
[roleId] :: Role -> RoleId

-- | Element level error possibly contained in List API response.
[roleErrors] :: Role -> Maybe Errors

-- | Name of the Role
[roleName] :: Role -> Maybe RoleName

-- | <a>RoleList</a> is decoded from response JSON of List Role REST call.
--   It is list of <a>Role</a>.
newtype RoleList
RoleList :: [Role] -> RoleList
[roleListItems] :: RoleList -> [Role]

-- | <a>Webhook</a> identifier which can be assigned to user. See
--   <a>Webhook</a> too.
newtype WebhookId
WebhookId :: Text -> WebhookId

-- | Name of <a>Webhook</a>.
newtype WebhookName
WebhookName :: Text -> WebhookName

-- | URL pointing to webhook target.
newtype WebhookUrl
WebhookUrl :: Text -> WebhookUrl

-- | URL-encoded set of webhook filtering criteria.
newtype WebhookFilter
WebhookFilter :: Text -> WebhookFilter

-- | Shared secret supplied by user to authenticate Webex Cloud by webhook
--   receiver.
newtype WebhookSecret
WebhookSecret :: Text -> WebhookSecret

-- | <a>WebhookResource</a> indicates source of event which triggered
--   webhook access.
data WebhookResource
WebhookResourceAll :: WebhookResource
WebhookResourceTeams :: WebhookResource
WebhookResourceMemberships :: WebhookResource
WebhookResourceMessages :: WebhookResource
WebhookResourceRooms :: WebhookResource

-- | WebhookEvent indicates which event triggered Webhook access.
data WebhookEvent
WebhookEventAll :: WebhookEvent
WebhookEventCreated :: WebhookEvent
WebhookEventUpdated :: WebhookEvent
WebhookEventDeleted :: WebhookEvent

-- | <a>Webhook</a> allow your app to be notified via HTTP when a specific
--   event occurs on Webex Teams. For example, your app can register a
--   webhook to be notified when a new message is posted into a specific
--   room.
data Webhook
Webhook :: WebhookId -> Maybe Errors -> Maybe WebhookName -> Maybe WebhookUrl -> Maybe WebhookResource -> Maybe WebhookEvent -> Maybe WebhookFilter -> Maybe WebhookSecret -> Maybe Timestamp -> Webhook

-- | Identifier of the Webhook.
[webhookId] :: Webhook -> WebhookId

-- | Element level error possibly contained in List API response.
[webhookErrors] :: Webhook -> Maybe Errors

-- | Name of the Webhook.
[webhookName] :: Webhook -> Maybe WebhookName

-- | URL pointing to webhook target.
[webhookTargetUrl] :: Webhook -> Maybe WebhookUrl

-- | Resource type where events are monitored.
[webhookResource] :: Webhook -> Maybe WebhookResource

-- | Event type which will be monitored.
[webhookEvent] :: Webhook -> Maybe WebhookEvent

-- | URL-encoded set of webhook filtering criteria.
[webhookFilter] :: Webhook -> Maybe WebhookFilter

-- | User supplied shared secret for authentication.
[webhookSecret] :: Webhook -> Maybe WebhookSecret

-- | Timestamp when the Webhook was created.
[webhookCreated] :: Webhook -> Maybe Timestamp

-- | <a>WebhookList</a> is decoded from response JSON of List Webhook REST
--   call. It is list of <a>Webhook</a>.
newtype WebhookList
WebhookList :: [Webhook] -> WebhookList
[webhookListItems] :: WebhookList -> [Webhook]

-- | <a>CreateWebhook</a> is encoded to request body JSON of Create a
--   Webhook REST call.
data CreateWebhook
CreateWebhook :: WebhookName -> WebhookUrl -> WebhookResource -> WebhookEvent -> Maybe WebhookFilter -> Maybe WebhookSecret -> CreateWebhook

-- | Name of Webhook to be created.
[createWebhookName] :: CreateWebhook -> WebhookName

-- | URL pointing to webhook target.
[createWebhookTargetUrl] :: CreateWebhook -> WebhookUrl

-- | Resource type where events will be monitored.
[createWebhookResource] :: CreateWebhook -> WebhookResource

-- | Event type which will be monitored.
[createWebhookEvent] :: CreateWebhook -> WebhookEvent

-- | URL-encoded set of webhook filtering criteria.
[createWebhookFilter] :: CreateWebhook -> Maybe WebhookFilter

-- | User supplied shared secret for authentication.
[createWebhookSecret] :: CreateWebhook -> Maybe WebhookSecret

-- | <a>UpdateWebhook</a> is encoded to request body JSON of Update a
--   Webhook REST call.
data UpdateWebhook
UpdateWebhook :: WebhookName -> WebhookUrl -> UpdateWebhook

-- | Name of Webhook to be created.
[updateWebhookName] :: UpdateWebhook -> WebhookName

-- | URL pointing to webhook target.
[updateWebhookTargetUrl] :: UpdateWebhook -> WebhookUrl

-- | Optional query strings for membership event.
data WebhookMembershipFilter
WebhookMembershipFilter :: Maybe RoomId -> Maybe PersonId -> Maybe Email -> Maybe Bool -> WebhookMembershipFilter

-- | Feed events only for given room.
[webhookFilterMembershipRoomId] :: WebhookMembershipFilter -> Maybe RoomId

-- | Feed events only for given person.
[webhookFilterMembershipPersonId] :: WebhookMembershipFilter -> Maybe PersonId

-- | Feed events only person who has given email.
[webhookFilterMembershipPersonEmail] :: WebhookMembershipFilter -> Maybe Email

-- | Feed events only for moderator membership changes.
[webhookFilterMembershipIsModerator] :: WebhookMembershipFilter -> Maybe Bool

-- | Optional query strings for message event.
data WebhookMessageFilter
WebhookMessageFilter :: Maybe RoomId -> Maybe RoomType -> Maybe PersonId -> Maybe Email -> Maybe MentionedPeople -> Maybe Bool -> WebhookMessageFilter

-- | Feed events only for given room.
[webhookFilterMessageRoomId] :: WebhookMessageFilter -> Maybe RoomId

-- | Feed events only for given room type.
[webhookFilterMessageRoomType] :: WebhookMessageFilter -> Maybe RoomType

-- | Feed events only for given person.
[webhookFilterMessagePersonId] :: WebhookMessageFilter -> Maybe PersonId

-- | Feed events only person who has given email.
[webhookFilterMessagePersonEmail] :: WebhookMessageFilter -> Maybe Email

-- | Feed events only mentioned for given person.
[webhookFilterMessagememtionedPeople] :: WebhookMessageFilter -> Maybe MentionedPeople

-- | Feed events only messages with attached file.
[webhookFilterMessageHasFiles] :: WebhookMessageFilter -> Maybe Bool

-- | Optional query strings for room event.
data WebhookRoomFilter
WebhookRoomFilter :: Maybe RoomType -> Maybe Bool -> WebhookRoomFilter

-- | Feed events only for given room type.
[webhookFilterRoomType] :: WebhookRoomFilter -> Maybe RoomType

-- | Feed events only locked unlocked rooms when true.
[webhookFilterRoomIsLocked] :: WebhookRoomFilter -> Maybe Bool

-- | Identifier of app.
newtype AppId
AppId :: Text -> AppId

-- | <a>WebhookNotifyOwnedBy</a> indicates if the webhook is owned by the
--   org or the creator.
data WebhookNotifyOwnedBy
WebhookNotifyOwnedByOrg :: WebhookNotifyOwnedBy
WebhookNotifyOwnedByCreator :: WebhookNotifyOwnedBy

-- | <a>WebhookNotifyStatus</a> indicates if the webhook is active.
data WebhookNotifyStatus
WebhookNotifyStatusActive :: WebhookNotifyStatus
WebhookNotifyStatusDesabled :: WebhookNotifyStatus

-- | <a>Webhook</a> decodes webhook notification from Webex Cloud except
--   data field. Data field can be one of <a>Membership</a>, <a>Message</a>
--   or <a>Room</a>. Type of data field is shown as value of resource
--   field.
data WebhookNotify
WebhookNotify :: WebhookId -> WebhookName -> WebhookResource -> WebhookEvent -> WebhookFilter -> Organization -> PersonId -> AppId -> WebhookNotifyOwnedBy -> WebhookNotifyStatus -> PersonId -> WebhookNotify
[webhookNotifyId] :: WebhookNotify -> WebhookId
[webhookNotifyName] :: WebhookNotify -> WebhookName
[webhookNotifyResource] :: WebhookNotify -> WebhookResource
[webhookNotifyEvent] :: WebhookNotify -> WebhookEvent
[webhookNotifyFilter] :: WebhookNotify -> WebhookFilter
[webhookNotifyOrgId] :: WebhookNotify -> Organization
[webhookNotifyCreatedBy] :: WebhookNotify -> PersonId
[webhookNotifyAppId] :: WebhookNotify -> AppId
[webhookNotifyOwnedBy] :: WebhookNotify -> WebhookNotifyOwnedBy
[webhookNotifyStatus] :: WebhookNotify -> WebhookNotifyStatus
[webhookNotifyActorId] :: WebhookNotify -> PersonId

-- | Data part of webhook notification is decoded to <a>Membership</a> when
--   resource field value is "memberships".
newtype WebhookNotifyMembership
WebhookNotifyMembership :: Membership -> WebhookNotifyMembership
[webhookNotifyMembershipData] :: WebhookNotifyMembership -> Membership

-- | Data part of webhook notification is decoded to <a>Message</a> when
--   resource field value is "messages".
newtype WebhookNotifyMessage
WebhookNotifyMessage :: Message -> WebhookNotifyMessage
[webhookNotifyMessageData] :: WebhookNotifyMessage -> Message

-- | Data part of webhook notification is decoded to <a>Room</a> when
--   resource field value is "rooms".
newtype WebhookNotifyRoom
WebhookNotifyRoom :: Room -> WebhookNotifyRoom
[webhookNotifyRoomData] :: WebhookNotifyRoom -> Room
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.WebhookNotifyRoom
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.WebhookNotifyRoom
instance GHC.Show.Show Network.WebexTeams.Types.WebhookNotifyRoom
instance GHC.Classes.Eq Network.WebexTeams.Types.WebhookNotifyRoom
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.WebhookNotifyMessage
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.WebhookNotifyMessage
instance GHC.Show.Show Network.WebexTeams.Types.WebhookNotifyMessage
instance GHC.Classes.Eq Network.WebexTeams.Types.WebhookNotifyMessage
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.WebhookNotifyMembership
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.WebhookNotifyMembership
instance GHC.Show.Show Network.WebexTeams.Types.WebhookNotifyMembership
instance GHC.Classes.Eq Network.WebexTeams.Types.WebhookNotifyMembership
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.WebhookNotify
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.WebhookNotify
instance GHC.Show.Show Network.WebexTeams.Types.WebhookNotify
instance GHC.Classes.Eq Network.WebexTeams.Types.WebhookNotify
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.WebhookNotifyStatus
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.WebhookNotifyStatus
instance GHC.Show.Show Network.WebexTeams.Types.WebhookNotifyStatus
instance GHC.Classes.Eq Network.WebexTeams.Types.WebhookNotifyStatus
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.WebhookNotifyOwnedBy
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.WebhookNotifyOwnedBy
instance GHC.Show.Show Network.WebexTeams.Types.WebhookNotifyOwnedBy
instance GHC.Classes.Eq Network.WebexTeams.Types.WebhookNotifyOwnedBy
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.AppId
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.AppId
instance GHC.Generics.Generic Network.WebexTeams.Types.AppId
instance GHC.Show.Show Network.WebexTeams.Types.AppId
instance GHC.Classes.Eq Network.WebexTeams.Types.AppId
instance GHC.Show.Show Network.WebexTeams.Types.WebhookRoomFilter
instance GHC.Classes.Eq Network.WebexTeams.Types.WebhookRoomFilter
instance GHC.Show.Show Network.WebexTeams.Types.WebhookMessageFilter
instance GHC.Classes.Eq Network.WebexTeams.Types.WebhookMessageFilter
instance GHC.Show.Show Network.WebexTeams.Types.WebhookMembershipFilter
instance GHC.Classes.Eq Network.WebexTeams.Types.WebhookMembershipFilter
instance Network.WebexTeams.Types.WebexTeamsApiPath Network.WebexTeams.Types.WebhookRoomFilter
instance Network.WebexTeams.Types.WebexTeamsResponse Network.WebexTeams.Types.WebhookRoomFilter
instance Network.WebexTeams.Types.WebexTeamsFilter Network.WebexTeams.Types.WebhookRoomFilter
instance Network.WebexTeams.Types.WebexTeamsApiPath Network.WebexTeams.Types.WebhookMessageFilter
instance Network.WebexTeams.Types.WebexTeamsResponse Network.WebexTeams.Types.WebhookMessageFilter
instance Network.WebexTeams.Types.WebexTeamsFilter Network.WebexTeams.Types.WebhookMessageFilter
instance Network.WebexTeams.Types.WebexTeamsApiPath Network.WebexTeams.Types.WebhookMembershipFilter
instance Network.WebexTeams.Types.WebexTeamsResponse Network.WebexTeams.Types.WebhookMembershipFilter
instance Network.WebexTeams.Types.WebexTeamsFilter Network.WebexTeams.Types.WebhookMembershipFilter
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.UpdateWebhook
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.UpdateWebhook
instance Network.WebexTeams.Types.WebexTeamsApiPath Network.WebexTeams.Types.UpdateWebhook
instance Network.WebexTeams.Types.WebexTeamsResponse Network.WebexTeams.Types.UpdateWebhook
instance Network.WebexTeams.Types.WebexTeamsUpdate Network.WebexTeams.Types.UpdateWebhook
instance GHC.Show.Show Network.WebexTeams.Types.UpdateWebhook
instance GHC.Classes.Eq Network.WebexTeams.Types.UpdateWebhook
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.CreateWebhook
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.CreateWebhook
instance Network.WebexTeams.Types.WebexTeamsApiPath Network.WebexTeams.Types.CreateWebhook
instance Network.WebexTeams.Types.WebexTeamsResponse Network.WebexTeams.Types.CreateWebhook
instance Network.WebexTeams.Types.WebexTeamsCreate Network.WebexTeams.Types.CreateWebhook
instance GHC.Show.Show Network.WebexTeams.Types.CreateWebhook
instance GHC.Classes.Eq Network.WebexTeams.Types.CreateWebhook
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.WebhookList
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.WebhookList
instance Network.WebexTeams.Types.WebexTeamsListItem Network.WebexTeams.Types.Webhook
instance GHC.Show.Show Network.WebexTeams.Types.WebhookList
instance GHC.Classes.Eq Network.WebexTeams.Types.WebhookList
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.Webhook
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.Webhook
instance Network.WebexTeams.Types.WebexTeamsApiPath Network.WebexTeams.Types.WebhookId
instance Network.WebexTeams.Types.WebexTeamsResponse Network.WebexTeams.Types.WebhookId
instance Network.WebexTeams.Types.WebexTeamsDetail Network.WebexTeams.Types.WebhookId
instance GHC.Show.Show Network.WebexTeams.Types.Webhook
instance GHC.Classes.Eq Network.WebexTeams.Types.Webhook
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.WebhookEvent
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.WebhookEvent
instance GHC.Show.Show Network.WebexTeams.Types.WebhookEvent
instance GHC.Classes.Eq Network.WebexTeams.Types.WebhookEvent
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.WebhookResource
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.WebhookResource
instance GHC.Show.Show Network.WebexTeams.Types.WebhookResource
instance GHC.Classes.Eq Network.WebexTeams.Types.WebhookResource
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.WebhookSecret
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.WebhookSecret
instance GHC.Generics.Generic Network.WebexTeams.Types.WebhookSecret
instance GHC.Show.Show Network.WebexTeams.Types.WebhookSecret
instance GHC.Classes.Eq Network.WebexTeams.Types.WebhookSecret
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.WebhookFilter
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.WebhookFilter
instance GHC.Generics.Generic Network.WebexTeams.Types.WebhookFilter
instance GHC.Show.Show Network.WebexTeams.Types.WebhookFilter
instance GHC.Classes.Eq Network.WebexTeams.Types.WebhookFilter
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.WebhookUrl
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.WebhookUrl
instance GHC.Generics.Generic Network.WebexTeams.Types.WebhookUrl
instance GHC.Show.Show Network.WebexTeams.Types.WebhookUrl
instance GHC.Classes.Eq Network.WebexTeams.Types.WebhookUrl
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.WebhookName
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.WebhookName
instance GHC.Generics.Generic Network.WebexTeams.Types.WebhookName
instance GHC.Show.Show Network.WebexTeams.Types.WebhookName
instance GHC.Classes.Eq Network.WebexTeams.Types.WebhookName
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.WebhookId
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.WebhookId
instance GHC.Generics.Generic Network.WebexTeams.Types.WebhookId
instance GHC.Show.Show Network.WebexTeams.Types.WebhookId
instance GHC.Classes.Eq Network.WebexTeams.Types.WebhookId
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.RoleList
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.RoleList
instance Network.WebexTeams.Types.WebexTeamsListItem Network.WebexTeams.Types.Role
instance GHC.Show.Show Network.WebexTeams.Types.RoleList
instance GHC.Classes.Eq Network.WebexTeams.Types.RoleList
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.Role
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.Role
instance Network.WebexTeams.Types.WebexTeamsApiPath Network.WebexTeams.Types.RoleId
instance Network.WebexTeams.Types.WebexTeamsResponse Network.WebexTeams.Types.RoleId
instance Network.WebexTeams.Types.WebexTeamsDetail Network.WebexTeams.Types.RoleId
instance GHC.Show.Show Network.WebexTeams.Types.Role
instance GHC.Classes.Eq Network.WebexTeams.Types.Role
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.RoleName
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.RoleName
instance GHC.Generics.Generic Network.WebexTeams.Types.RoleName
instance GHC.Show.Show Network.WebexTeams.Types.RoleName
instance GHC.Classes.Eq Network.WebexTeams.Types.RoleName
instance GHC.Show.Show Network.WebexTeams.Types.LicenseFilter
instance GHC.Generics.Generic Network.WebexTeams.Types.LicenseFilter
instance GHC.Classes.Eq Network.WebexTeams.Types.LicenseFilter
instance Data.Default.Class.Default Network.WebexTeams.Types.LicenseFilter
instance Network.WebexTeams.Types.WebexTeamsApiPath Network.WebexTeams.Types.LicenseFilter
instance Network.WebexTeams.Types.WebexTeamsResponse Network.WebexTeams.Types.LicenseFilter
instance Network.WebexTeams.Types.WebexTeamsFilter Network.WebexTeams.Types.LicenseFilter
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.LicenseList
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.LicenseList
instance Network.WebexTeams.Types.WebexTeamsListItem Network.WebexTeams.Types.License
instance GHC.Show.Show Network.WebexTeams.Types.LicenseList
instance GHC.Classes.Eq Network.WebexTeams.Types.LicenseList
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.License
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.License
instance Network.WebexTeams.Types.WebexTeamsApiPath Network.WebexTeams.Types.LicenseId
instance Network.WebexTeams.Types.WebexTeamsResponse Network.WebexTeams.Types.LicenseId
instance Network.WebexTeams.Types.WebexTeamsDetail Network.WebexTeams.Types.LicenseId
instance GHC.Show.Show Network.WebexTeams.Types.License
instance GHC.Classes.Eq Network.WebexTeams.Types.License
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.LicenseUnit
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.LicenseUnit
instance GHC.Generics.Generic Network.WebexTeams.Types.LicenseUnit
instance GHC.Show.Show Network.WebexTeams.Types.LicenseUnit
instance GHC.Classes.Eq Network.WebexTeams.Types.LicenseUnit
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.LicenseName
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.LicenseName
instance GHC.Generics.Generic Network.WebexTeams.Types.LicenseName
instance GHC.Show.Show Network.WebexTeams.Types.LicenseName
instance GHC.Classes.Eq Network.WebexTeams.Types.LicenseName
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.OrganizationList
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.OrganizationList
instance Network.WebexTeams.Types.WebexTeamsListItem Network.WebexTeams.Types.Organization
instance GHC.Show.Show Network.WebexTeams.Types.OrganizationList
instance GHC.Classes.Eq Network.WebexTeams.Types.OrganizationList
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.Organization
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.Organization
instance Network.WebexTeams.Types.WebexTeamsApiPath Network.WebexTeams.Types.OrganizationId
instance Network.WebexTeams.Types.WebexTeamsResponse Network.WebexTeams.Types.OrganizationId
instance Network.WebexTeams.Types.WebexTeamsDetail Network.WebexTeams.Types.OrganizationId
instance GHC.Show.Show Network.WebexTeams.Types.Organization
instance GHC.Classes.Eq Network.WebexTeams.Types.Organization
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.OrganizationDisplayName
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.OrganizationDisplayName
instance GHC.Generics.Generic Network.WebexTeams.Types.OrganizationDisplayName
instance GHC.Show.Show Network.WebexTeams.Types.OrganizationDisplayName
instance GHC.Classes.Eq Network.WebexTeams.Types.OrganizationDisplayName
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.CreateMessage
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.CreateMessage
instance Network.WebexTeams.Types.WebexTeamsApiPath Network.WebexTeams.Types.CreateMessage
instance Network.WebexTeams.Types.WebexTeamsResponse Network.WebexTeams.Types.CreateMessage
instance Network.WebexTeams.Types.WebexTeamsCreate Network.WebexTeams.Types.CreateMessage
instance GHC.Show.Show Network.WebexTeams.Types.CreateMessage
instance GHC.Classes.Eq Network.WebexTeams.Types.CreateMessage
instance GHC.Show.Show Network.WebexTeams.Types.MessageFilter
instance GHC.Classes.Eq Network.WebexTeams.Types.MessageFilter
instance GHC.Show.Show Network.WebexTeams.Types.MentionedPeople
instance GHC.Classes.Eq Network.WebexTeams.Types.MentionedPeople
instance Network.WebexTeams.Types.WebexTeamsApiPath Network.WebexTeams.Types.MessageFilter
instance Network.WebexTeams.Types.WebexTeamsResponse Network.WebexTeams.Types.MessageFilter
instance Network.WebexTeams.Types.WebexTeamsFilter Network.WebexTeams.Types.MessageFilter
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.MessageList
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.MessageList
instance Network.WebexTeams.Types.WebexTeamsListItem Network.WebexTeams.Types.Message
instance GHC.Show.Show Network.WebexTeams.Types.MessageList
instance GHC.Classes.Eq Network.WebexTeams.Types.MessageList
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.Message
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.Message
instance Network.WebexTeams.Types.WebexTeamsApiPath Network.WebexTeams.Types.MessageId
instance Network.WebexTeams.Types.WebexTeamsResponse Network.WebexTeams.Types.MessageId
instance Network.WebexTeams.Types.WebexTeamsDetail Network.WebexTeams.Types.MessageId
instance GHC.Show.Show Network.WebexTeams.Types.Message
instance GHC.Classes.Eq Network.WebexTeams.Types.Message
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.FileUrl
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.FileUrl
instance GHC.Generics.Generic Network.WebexTeams.Types.FileUrl
instance GHC.Show.Show Network.WebexTeams.Types.FileUrl
instance GHC.Classes.Eq Network.WebexTeams.Types.FileUrl
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.MessageMarkdown
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.MessageMarkdown
instance GHC.Generics.Generic Network.WebexTeams.Types.MessageMarkdown
instance GHC.Show.Show Network.WebexTeams.Types.MessageMarkdown
instance GHC.Classes.Eq Network.WebexTeams.Types.MessageMarkdown
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.MessageHtml
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.MessageHtml
instance GHC.Generics.Generic Network.WebexTeams.Types.MessageHtml
instance GHC.Show.Show Network.WebexTeams.Types.MessageHtml
instance GHC.Classes.Eq Network.WebexTeams.Types.MessageHtml
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.MessageText
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.MessageText
instance GHC.Generics.Generic Network.WebexTeams.Types.MessageText
instance GHC.Show.Show Network.WebexTeams.Types.MessageText
instance GHC.Classes.Eq Network.WebexTeams.Types.MessageText
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.MessageId
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.MessageId
instance GHC.Generics.Generic Network.WebexTeams.Types.MessageId
instance GHC.Show.Show Network.WebexTeams.Types.MessageId
instance GHC.Classes.Eq Network.WebexTeams.Types.MessageId
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.UpdateMembership
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.UpdateMembership
instance Network.WebexTeams.Types.WebexTeamsApiPath Network.WebexTeams.Types.UpdateMembership
instance Network.WebexTeams.Types.WebexTeamsResponse Network.WebexTeams.Types.UpdateMembership
instance Network.WebexTeams.Types.WebexTeamsUpdate Network.WebexTeams.Types.UpdateMembership
instance GHC.Show.Show Network.WebexTeams.Types.UpdateMembership
instance GHC.Classes.Eq Network.WebexTeams.Types.UpdateMembership
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.CreateMembership
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.CreateMembership
instance Network.WebexTeams.Types.WebexTeamsApiPath Network.WebexTeams.Types.CreateMembership
instance Network.WebexTeams.Types.WebexTeamsResponse Network.WebexTeams.Types.CreateMembership
instance Network.WebexTeams.Types.WebexTeamsCreate Network.WebexTeams.Types.CreateMembership
instance GHC.Show.Show Network.WebexTeams.Types.CreateMembership
instance GHC.Classes.Eq Network.WebexTeams.Types.CreateMembership
instance GHC.Show.Show Network.WebexTeams.Types.MembershipFilter
instance GHC.Generics.Generic Network.WebexTeams.Types.MembershipFilter
instance GHC.Classes.Eq Network.WebexTeams.Types.MembershipFilter
instance Data.Default.Class.Default Network.WebexTeams.Types.MembershipFilter
instance Network.WebexTeams.Types.WebexTeamsApiPath Network.WebexTeams.Types.MembershipFilter
instance Network.WebexTeams.Types.WebexTeamsResponse Network.WebexTeams.Types.MembershipFilter
instance Network.WebexTeams.Types.WebexTeamsFilter Network.WebexTeams.Types.MembershipFilter
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.MembershipList
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.MembershipList
instance Network.WebexTeams.Types.WebexTeamsListItem Network.WebexTeams.Types.Membership
instance GHC.Show.Show Network.WebexTeams.Types.MembershipList
instance GHC.Classes.Eq Network.WebexTeams.Types.MembershipList
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.Membership
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.Membership
instance Network.WebexTeams.Types.WebexTeamsApiPath Network.WebexTeams.Types.MembershipId
instance Network.WebexTeams.Types.WebexTeamsResponse Network.WebexTeams.Types.MembershipId
instance Network.WebexTeams.Types.WebexTeamsDetail Network.WebexTeams.Types.MembershipId
instance GHC.Show.Show Network.WebexTeams.Types.Membership
instance GHC.Classes.Eq Network.WebexTeams.Types.Membership
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.MembershipId
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.MembershipId
instance GHC.Generics.Generic Network.WebexTeams.Types.MembershipId
instance GHC.Show.Show Network.WebexTeams.Types.MembershipId
instance GHC.Classes.Eq Network.WebexTeams.Types.MembershipId
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.UpdateRoom
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.UpdateRoom
instance Network.WebexTeams.Types.WebexTeamsApiPath Network.WebexTeams.Types.UpdateRoom
instance Network.WebexTeams.Types.WebexTeamsResponse Network.WebexTeams.Types.UpdateRoom
instance Network.WebexTeams.Types.WebexTeamsUpdate Network.WebexTeams.Types.UpdateRoom
instance GHC.Show.Show Network.WebexTeams.Types.UpdateRoom
instance GHC.Classes.Eq Network.WebexTeams.Types.UpdateRoom
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.CreateRoom
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.CreateRoom
instance Network.WebexTeams.Types.WebexTeamsApiPath Network.WebexTeams.Types.CreateRoom
instance Network.WebexTeams.Types.WebexTeamsResponse Network.WebexTeams.Types.CreateRoom
instance Network.WebexTeams.Types.WebexTeamsCreate Network.WebexTeams.Types.CreateRoom
instance GHC.Show.Show Network.WebexTeams.Types.CreateRoom
instance GHC.Classes.Eq Network.WebexTeams.Types.CreateRoom
instance GHC.Show.Show Network.WebexTeams.Types.RoomFilter
instance GHC.Generics.Generic Network.WebexTeams.Types.RoomFilter
instance GHC.Classes.Eq Network.WebexTeams.Types.RoomFilter
instance Data.Default.Class.Default Network.WebexTeams.Types.RoomFilter
instance GHC.Show.Show Network.WebexTeams.Types.RoomFilterSortBy
instance GHC.Classes.Eq Network.WebexTeams.Types.RoomFilterSortBy
instance Network.WebexTeams.Types.WebexTeamsApiPath Network.WebexTeams.Types.RoomFilter
instance Network.WebexTeams.Types.WebexTeamsResponse Network.WebexTeams.Types.RoomFilter
instance Network.WebexTeams.Types.WebexTeamsFilter Network.WebexTeams.Types.RoomFilter
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.RoomList
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.RoomList
instance Network.WebexTeams.Types.WebexTeamsListItem Network.WebexTeams.Types.Room
instance GHC.Show.Show Network.WebexTeams.Types.RoomList
instance GHC.Classes.Eq Network.WebexTeams.Types.RoomList
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.Room
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.Room
instance Network.WebexTeams.Types.WebexTeamsApiPath Network.WebexTeams.Types.RoomId
instance Network.WebexTeams.Types.WebexTeamsResponse Network.WebexTeams.Types.RoomId
instance Network.WebexTeams.Types.WebexTeamsDetail Network.WebexTeams.Types.RoomId
instance GHC.Show.Show Network.WebexTeams.Types.Room
instance GHC.Classes.Eq Network.WebexTeams.Types.Room
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.RoomType
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.RoomType
instance GHC.Show.Show Network.WebexTeams.Types.RoomType
instance GHC.Classes.Eq Network.WebexTeams.Types.RoomType
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.SipAddr
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.SipAddr
instance GHC.Generics.Generic Network.WebexTeams.Types.SipAddr
instance GHC.Show.Show Network.WebexTeams.Types.SipAddr
instance GHC.Classes.Eq Network.WebexTeams.Types.SipAddr
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.RoomTitle
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.RoomTitle
instance GHC.Generics.Generic Network.WebexTeams.Types.RoomTitle
instance GHC.Show.Show Network.WebexTeams.Types.RoomTitle
instance GHC.Classes.Eq Network.WebexTeams.Types.RoomTitle
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.RoomId
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.RoomId
instance GHC.Generics.Generic Network.WebexTeams.Types.RoomId
instance GHC.Show.Show Network.WebexTeams.Types.RoomId
instance GHC.Classes.Eq Network.WebexTeams.Types.RoomId
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.UpdateTeamMembership
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.UpdateTeamMembership
instance Network.WebexTeams.Types.WebexTeamsApiPath Network.WebexTeams.Types.UpdateTeamMembership
instance Network.WebexTeams.Types.WebexTeamsResponse Network.WebexTeams.Types.UpdateTeamMembership
instance Network.WebexTeams.Types.WebexTeamsUpdate Network.WebexTeams.Types.UpdateTeamMembership
instance GHC.Show.Show Network.WebexTeams.Types.UpdateTeamMembership
instance GHC.Classes.Eq Network.WebexTeams.Types.UpdateTeamMembership
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.CreateTeamMembership
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.CreateTeamMembership
instance Network.WebexTeams.Types.WebexTeamsApiPath Network.WebexTeams.Types.CreateTeamMembership
instance Network.WebexTeams.Types.WebexTeamsResponse Network.WebexTeams.Types.CreateTeamMembership
instance Network.WebexTeams.Types.WebexTeamsCreate Network.WebexTeams.Types.CreateTeamMembership
instance GHC.Show.Show Network.WebexTeams.Types.CreateTeamMembership
instance GHC.Classes.Eq Network.WebexTeams.Types.CreateTeamMembership
instance GHC.Show.Show Network.WebexTeams.Types.TeamMembershipFilter
instance GHC.Classes.Eq Network.WebexTeams.Types.TeamMembershipFilter
instance Network.WebexTeams.Types.WebexTeamsApiPath Network.WebexTeams.Types.TeamMembershipFilter
instance Network.WebexTeams.Types.WebexTeamsResponse Network.WebexTeams.Types.TeamMembershipFilter
instance Network.WebexTeams.Types.WebexTeamsFilter Network.WebexTeams.Types.TeamMembershipFilter
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.TeamMembershipList
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.TeamMembershipList
instance Network.WebexTeams.Types.WebexTeamsListItem Network.WebexTeams.Types.TeamMembership
instance GHC.Show.Show Network.WebexTeams.Types.TeamMembershipList
instance GHC.Classes.Eq Network.WebexTeams.Types.TeamMembershipList
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.TeamMembership
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.TeamMembership
instance Network.WebexTeams.Types.WebexTeamsApiPath Network.WebexTeams.Types.TeamMembershipId
instance Network.WebexTeams.Types.WebexTeamsResponse Network.WebexTeams.Types.TeamMembershipId
instance Network.WebexTeams.Types.WebexTeamsDetail Network.WebexTeams.Types.TeamMembershipId
instance GHC.Show.Show Network.WebexTeams.Types.TeamMembership
instance GHC.Classes.Eq Network.WebexTeams.Types.TeamMembership
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.TeamMembershipId
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.TeamMembershipId
instance GHC.Generics.Generic Network.WebexTeams.Types.TeamMembershipId
instance GHC.Show.Show Network.WebexTeams.Types.TeamMembershipId
instance GHC.Classes.Eq Network.WebexTeams.Types.TeamMembershipId
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.UpdateTeam
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.UpdateTeam
instance Network.WebexTeams.Types.WebexTeamsApiPath Network.WebexTeams.Types.UpdateTeam
instance Network.WebexTeams.Types.WebexTeamsResponse Network.WebexTeams.Types.UpdateTeam
instance Network.WebexTeams.Types.WebexTeamsUpdate Network.WebexTeams.Types.UpdateTeam
instance GHC.Show.Show Network.WebexTeams.Types.UpdateTeam
instance GHC.Classes.Eq Network.WebexTeams.Types.UpdateTeam
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.CreateTeam
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.CreateTeam
instance Network.WebexTeams.Types.WebexTeamsApiPath Network.WebexTeams.Types.CreateTeam
instance Network.WebexTeams.Types.WebexTeamsResponse Network.WebexTeams.Types.CreateTeam
instance Network.WebexTeams.Types.WebexTeamsCreate Network.WebexTeams.Types.CreateTeam
instance GHC.Show.Show Network.WebexTeams.Types.CreateTeam
instance GHC.Classes.Eq Network.WebexTeams.Types.CreateTeam
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.TeamList
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.TeamList
instance Network.WebexTeams.Types.WebexTeamsListItem Network.WebexTeams.Types.Team
instance GHC.Show.Show Network.WebexTeams.Types.TeamList
instance GHC.Classes.Eq Network.WebexTeams.Types.TeamList
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.Team
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.Team
instance Network.WebexTeams.Types.WebexTeamsApiPath Network.WebexTeams.Types.TeamId
instance Network.WebexTeams.Types.WebexTeamsResponse Network.WebexTeams.Types.TeamId
instance Network.WebexTeams.Types.WebexTeamsDetail Network.WebexTeams.Types.TeamId
instance GHC.Show.Show Network.WebexTeams.Types.Team
instance GHC.Classes.Eq Network.WebexTeams.Types.Team
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.TeamName
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.TeamName
instance GHC.Generics.Generic Network.WebexTeams.Types.TeamName
instance GHC.Show.Show Network.WebexTeams.Types.TeamName
instance GHC.Classes.Eq Network.WebexTeams.Types.TeamName
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.TeamId
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.TeamId
instance GHC.Generics.Generic Network.WebexTeams.Types.TeamId
instance GHC.Show.Show Network.WebexTeams.Types.TeamId
instance GHC.Classes.Eq Network.WebexTeams.Types.TeamId
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.UpdatePerson
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.UpdatePerson
instance Network.WebexTeams.Types.WebexTeamsApiPath Network.WebexTeams.Types.UpdatePerson
instance Network.WebexTeams.Types.WebexTeamsResponse Network.WebexTeams.Types.UpdatePerson
instance Network.WebexTeams.Types.WebexTeamsUpdate Network.WebexTeams.Types.UpdatePerson
instance GHC.Show.Show Network.WebexTeams.Types.UpdatePerson
instance GHC.Classes.Eq Network.WebexTeams.Types.UpdatePerson
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.CreatePerson
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.CreatePerson
instance Network.WebexTeams.Types.WebexTeamsApiPath Network.WebexTeams.Types.CreatePerson
instance Network.WebexTeams.Types.WebexTeamsResponse Network.WebexTeams.Types.CreatePerson
instance Network.WebexTeams.Types.WebexTeamsCreate Network.WebexTeams.Types.CreatePerson
instance GHC.Show.Show Network.WebexTeams.Types.CreatePerson
instance GHC.Classes.Eq Network.WebexTeams.Types.CreatePerson
instance GHC.Show.Show Network.WebexTeams.Types.PersonFilter
instance GHC.Generics.Generic Network.WebexTeams.Types.PersonFilter
instance GHC.Classes.Eq Network.WebexTeams.Types.PersonFilter
instance Data.Default.Class.Default Network.WebexTeams.Types.PersonFilter
instance Network.WebexTeams.Types.WebexTeamsApiPath Network.WebexTeams.Types.PersonFilter
instance Network.WebexTeams.Types.WebexTeamsResponse Network.WebexTeams.Types.PersonFilter
instance Network.WebexTeams.Types.WebexTeamsFilter Network.WebexTeams.Types.PersonFilter
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.PersonList
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.PersonList
instance Network.WebexTeams.Types.WebexTeamsListItem Network.WebexTeams.Types.Person
instance GHC.Show.Show Network.WebexTeams.Types.PersonList
instance GHC.Classes.Eq Network.WebexTeams.Types.PersonList
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.Person
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.Person
instance Network.WebexTeams.Types.WebexTeamsApiPath Network.WebexTeams.Types.PersonId
instance Network.WebexTeams.Types.WebexTeamsResponse Network.WebexTeams.Types.PersonId
instance Network.WebexTeams.Types.WebexTeamsDetail Network.WebexTeams.Types.PersonId
instance GHC.Show.Show Network.WebexTeams.Types.Person
instance GHC.Classes.Eq Network.WebexTeams.Types.Person
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.PersonType
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.PersonType
instance GHC.Show.Show Network.WebexTeams.Types.PersonType
instance GHC.Classes.Eq Network.WebexTeams.Types.PersonType
instance GHC.Show.Show Network.WebexTeams.Types.PersonStatus
instance GHC.Generics.Generic Network.WebexTeams.Types.PersonStatus
instance GHC.Classes.Eq Network.WebexTeams.Types.PersonStatus
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.Timezone
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.Timezone
instance GHC.Generics.Generic Network.WebexTeams.Types.Timezone
instance GHC.Show.Show Network.WebexTeams.Types.Timezone
instance GHC.Classes.Eq Network.WebexTeams.Types.Timezone
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.LicenseId
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.LicenseId
instance GHC.Generics.Generic Network.WebexTeams.Types.LicenseId
instance GHC.Show.Show Network.WebexTeams.Types.LicenseId
instance GHC.Classes.Eq Network.WebexTeams.Types.LicenseId
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.RoleId
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.RoleId
instance GHC.Generics.Generic Network.WebexTeams.Types.RoleId
instance GHC.Show.Show Network.WebexTeams.Types.RoleId
instance GHC.Classes.Eq Network.WebexTeams.Types.RoleId
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.OrganizationId
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.OrganizationId
instance GHC.Generics.Generic Network.WebexTeams.Types.OrganizationId
instance GHC.Show.Show Network.WebexTeams.Types.OrganizationId
instance GHC.Classes.Eq Network.WebexTeams.Types.OrganizationId
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.AvatarUrl
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.AvatarUrl
instance GHC.Generics.Generic Network.WebexTeams.Types.AvatarUrl
instance GHC.Show.Show Network.WebexTeams.Types.AvatarUrl
instance GHC.Classes.Eq Network.WebexTeams.Types.AvatarUrl
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.LastName
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.LastName
instance GHC.Generics.Generic Network.WebexTeams.Types.LastName
instance GHC.Show.Show Network.WebexTeams.Types.LastName
instance GHC.Classes.Eq Network.WebexTeams.Types.LastName
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.FirstName
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.FirstName
instance GHC.Generics.Generic Network.WebexTeams.Types.FirstName
instance GHC.Show.Show Network.WebexTeams.Types.FirstName
instance GHC.Classes.Eq Network.WebexTeams.Types.FirstName
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.NickName
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.NickName
instance GHC.Generics.Generic Network.WebexTeams.Types.NickName
instance GHC.Show.Show Network.WebexTeams.Types.NickName
instance GHC.Classes.Eq Network.WebexTeams.Types.NickName
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.DisplayName
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.DisplayName
instance GHC.Generics.Generic Network.WebexTeams.Types.DisplayName
instance GHC.Show.Show Network.WebexTeams.Types.DisplayName
instance GHC.Classes.Eq Network.WebexTeams.Types.DisplayName
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.Email
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.Email
instance GHC.Generics.Generic Network.WebexTeams.Types.Email
instance GHC.Show.Show Network.WebexTeams.Types.Email
instance GHC.Classes.Eq Network.WebexTeams.Types.Email
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.PersonId
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.PersonId
instance GHC.Generics.Generic Network.WebexTeams.Types.PersonId
instance GHC.Show.Show Network.WebexTeams.Types.PersonId
instance GHC.Classes.Eq Network.WebexTeams.Types.PersonId
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.PersonStatus
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.PersonStatus
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.Errors
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.Errors
instance GHC.Show.Show Network.WebexTeams.Types.Errors
instance GHC.Classes.Eq Network.WebexTeams.Types.Errors
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.ErrorTitle
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.ErrorTitle
instance GHC.Show.Show Network.WebexTeams.Types.ErrorTitle
instance GHC.Classes.Eq Network.WebexTeams.Types.ErrorTitle
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.ErrorCode
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.ErrorCode
instance GHC.Generics.Generic Network.WebexTeams.Types.ErrorCode
instance GHC.Show.Show Network.WebexTeams.Types.ErrorCode
instance GHC.Classes.Eq Network.WebexTeams.Types.ErrorCode
instance Data.Aeson.Types.FromJSON.FromJSON Network.WebexTeams.Types.Timestamp
instance Data.Aeson.Types.ToJSON.ToJSON Network.WebexTeams.Types.Timestamp
instance GHC.Generics.Generic Network.WebexTeams.Types.Timestamp
instance GHC.Show.Show Network.WebexTeams.Types.Timestamp
instance GHC.Classes.Eq Network.WebexTeams.Types.Timestamp


-- | This module provides types and functions for accessing Cisco Webex
--   Teams 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 Webex Teams 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.
--   
--   <h1>Examples</h1>
--   
--   <pre>
--   -- 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 &gt;&gt;= print . getResponseBody
--   
--   -- Obtaining detail of a user.
--   let personId    = PersonId "your person ID"
--   getDetail auth def personId &gt;&gt;= print . getResponseBody
--   
--   -- Obtaining membership of a room as stream of object representing each membership relation.
--   let filter = MembershipFilter yourRoomId Nothing Nothing
--   runConduit $ streamListWithFilter auth def filter .| takeC 200 .| mapM_C print
--   
--   -- Create a room.
--   let createRoom  = CreateRoom "Title of the new room" Nothing
--   createEntity auth def createRoom &gt;&gt;= print . getResponseBody
--   
--   -- Delete a room.
--   deleteRoom auth def roomId &gt;&gt;= print . getResponseBody
--   </pre>
--   
--   <h1>List and steaming</h1>
--   
--   The <tt>WebexTeams</tt> module doesn't provide streaming API for REST
--   response returning list of entities. It is because the author of the
--   package wants to keep it streaming library agnostic. Instead, it
--   provides <a>ListReader</a> IO action to read list responses with
--   automatic pagenation. Streaming APIs can be found in separate packages
--   like webex-teams-pipes or webex-teams-conduit.
--   
--   <h1>Support for Lens</h1>
--   
--   This package provides many of records representing objects
--   communicated via Webex Teams REST API. Those records are designed to
--   allow create lenses by Control.Lens.TH.makeFields.
--   
--   Following example creates overloaded accessors for <a>Person</a>,
--   <a>Room</a> and <a>Team</a>.
--   
--   <pre>
--   makeFields ''Person
--   makeFields ''Room
--   makeFields ''Team
--   </pre>
--   
--   You can access <a>personId</a>, <a>roomId</a> and <a>teamId</a> via
--   overloaded accessor function <a>id</a> like this.
--   
--   <pre>
--   let yourPersonId = yourPerson ^. id
--       yourRoomId = yourRoom ^. id
--       yourTeamId = yourTeam ^. id
--   </pre>
--   
--   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.
module Network.WebexTeams

-- | Convert given filter condition parameter in a concrete type to HTTP
--   query strings.
class (WebexTeamsApiPath a, WebexTeamsResponse a) => WebexTeamsFilter a

-- | WebexTeamsListItem is a type class grouping types with following
--   common usage.
--   
--   <ul>
--   <li>It is used for return value of get-detail APIs.</li>
--   <li>It is used for element of return value of list APIs.</li>
--   </ul>
--   
--   WebexTeamsListItem also associates the above type to wrapping list
--   type (e.g. associates <a>Person</a> to <a>PersonList</a>). Wrapping
--   type (PersonList in this case) is necessary for parsing JSON from REST
--   API but what we are interested in is bare list such like [Person].
--   Type family association defined in this class is used for type
--   translation from type of items to type of wrapper.
class FromJSON (ToList i) => WebexTeamsListItem i

-- | Associate response type to input parameter type such as filter
--   criteria, entity key or create / update parameters.

-- | Authorization string against Webex Teams API to be contained in HTTP
--   Authorization header of every request.
newtype Authorization
Authorization :: ByteString -> Authorization

-- | Type synonym for backward compatibility.
type CiscoSparkRequest = WebexTeamsRequest

-- | Wrapping <a>Request</a> in order to provide easy default value
--   specifically for Webex Teams public API.
data WebexTeamsRequest
WebexTeamsRequest :: Request -> String -> URIAuth -> WebexTeamsRequest

-- | Holds pre-set <a>Request</a> for REST API.
[webexTeamsRequestRequest] :: WebexTeamsRequest -> Request

-- | Should be "https:" in production.
[webexTeamsRequestScheme] :: WebexTeamsRequest -> String

-- | Authority part of request URI.
[webexTeamsRequestAuthority] :: WebexTeamsRequest -> URIAuth

-- | Type representing timestamp. For now, it is just copied from API
--   response JSON.
newtype Timestamp
Timestamp :: Text -> Timestamp

-- | Error code for element level error potentially contained in List API
--   responses.
newtype ErrorCode
ErrorCode :: Text -> ErrorCode

-- | <a>ErrorTitle</a> represent concrete error code and reason. It appears
--   in <a>Errors</a>.
data ErrorTitle
ErrorTitle :: ErrorCode -> Text -> ErrorTitle

-- | Error code of element level error in List API response.
[errorTitleCode] :: ErrorTitle -> ErrorCode

-- | Reason explanation of the error.
[errorTitleReason] :: ErrorTitle -> Text

-- | <a>Errors</a> 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 <a>API Document</a> for more detail.
newtype Errors
Errors :: ErrorTitle -> Errors
[errorsTitle] :: Errors -> ErrorTitle

-- | <a>Person</a> is detail description of Webex Teams 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.
data Person
Person :: PersonId -> Maybe Errors -> Maybe [Email] -> Maybe DisplayName -> Maybe NickName -> Maybe FirstName -> Maybe LastName -> Maybe AvatarUrl -> Maybe OrganizationId -> Maybe [RoleId] -> Maybe [LicenseId] -> Maybe Timestamp -> Maybe Timezone -> Maybe Timestamp -> Maybe PersonStatus -> Maybe Bool -> Maybe Bool -> Maybe PersonType -> Person

-- | Identifier of the Person.
[personId] :: Person -> PersonId

-- | Element level error possibly contained in List API response.
[personErrors] :: Person -> Maybe Errors

-- | List of email addresses which the Person has.
[personEmails] :: Person -> Maybe [Email]

-- | Display name of the Person.
[personDisplayName] :: Person -> Maybe DisplayName

-- | Nickname of the Person.
[personNickName] :: Person -> Maybe NickName

-- | First name of the Person.
[personFirstName] :: Person -> Maybe FirstName

-- | Last name of the Person.
[personLastName] :: Person -> Maybe LastName

-- | URL pointing a image used for Avatar of the Person.
[personAvatar] :: Person -> Maybe AvatarUrl

-- | <a>Organization</a> which the Person belongs to.
[personOrgId] :: Person -> Maybe OrganizationId

-- | List of roles assigned to the Person.
[personRoles] :: Person -> Maybe [RoleId]

-- | List of licenses effective on the Person.
[personLicenses] :: Person -> Maybe [LicenseId]

-- | Timestamp when the Person was created.
[personCreated] :: Person -> Maybe Timestamp

-- | Timezone of the Person.
[personTimezone] :: Person -> Maybe Timezone

-- | Timestamp of the latest activity of the Person.
[personLastActivity] :: Person -> Maybe Timestamp

-- | Current status of the Person
[personStatus] :: Person -> Maybe PersonStatus

-- | True if invitation for the Person is pending.
[personInvitePending] :: Person -> Maybe Bool

-- | True if login of the Person is enabled.
[personLoginEnabled] :: Person -> Maybe Bool

-- | Indicating if the Person is real human or bot.
[personType] :: Person -> Maybe PersonType

-- | Identifying <a>Person</a> describing detail of Webex Teams user or
--   bot.
newtype PersonId
PersonId :: Text -> PersonId

-- | Email address of user.
newtype Email
Email :: Text -> Email

-- | Display name of user.
newtype DisplayName
DisplayName :: Text -> DisplayName

-- | Nickname of user.
newtype NickName
NickName :: Text -> NickName

-- | First name of user.
newtype FirstName
FirstName :: Text -> FirstName

-- | Last name of user.
newtype LastName
LastName :: Text -> LastName

-- | URL pointing to image file of Avatar.
newtype AvatarUrl
AvatarUrl :: Text -> AvatarUrl

-- | Timezone in timezone name.
newtype Timezone
Timezone :: Text -> Timezone

-- | Current status of <a>Person</a>. It can be updated automatically by
--   recent activity or explicitly updated by user's operation or
--   propagated from vacation setting on email system.
data PersonStatus

-- | The <a>Person</a> is currently active. Decoded from "active".
PersonStatusActive :: PersonStatus

-- | The <a>Person</a> is currently not active. Decoded from "inactive".
PersonStatusInactive :: PersonStatus

-- | Email system of the <a>Person</a> currently sets vacation. Decoded
--   from "OutOfOffice".
PersonStatusOutOfOffice :: PersonStatus

-- | The <a>Person</a> is explicitly indicated do-not-disturb. Decoded from
--   "DoNotDisturb".
PersonStatusDoNotDisturb :: PersonStatus

-- | The status of the <a>Person</a> is unknown. Decoded from "unknown".
PersonStatusUnknown :: PersonStatus

-- | <a>PersonType</a> indicates whether the Person is real human or bot.
data PersonType

-- | The <a>Person</a> is a real human. Decoded from "person".
PersonTypePerson :: PersonType

-- | The <a>Person</a> is a bot. Decoded from "bot".
PersonTypeBot :: PersonType

-- | <a>PersonList</a> is decoded from response JSON of List People REST
--   call. It is list of <a>Person</a>.
newtype PersonList
PersonList :: [Person] -> PersonList
[personListItems] :: PersonList -> [Person]

-- | Optional query strings for people list API.
data PersonFilter
PersonFilter :: Maybe Email -> Maybe DisplayName -> Maybe OrganizationId -> PersonFilter

-- | Find person who has given email address.
[personFilterEmail] :: PersonFilter -> Maybe Email

-- | Find person who has given display name.
[personFilterDisplayName] :: PersonFilter -> Maybe DisplayName

-- | Find person who belongs to given organization.
[personFilterOrgId] :: PersonFilter -> Maybe OrganizationId

-- | <a>CreatePerson</a> is encoded to request body JSON of Create a Person
--   REST call.
data CreatePerson
CreatePerson :: Maybe [Email] -> Maybe DisplayName -> Maybe FirstName -> Maybe LastName -> Maybe AvatarUrl -> Maybe OrganizationId -> Maybe [RoleId] -> Maybe [LicenseId] -> CreatePerson

-- | List of email addresses which the Person has.
[createPersonEmails] :: CreatePerson -> Maybe [Email]

-- | Display name of the Person.
[createPersonDisplayName] :: CreatePerson -> Maybe DisplayName

-- | First name of the Person.
[createPersonFirstName] :: CreatePerson -> Maybe FirstName

-- | Last name of the Person.
[createPersonLastName] :: CreatePerson -> Maybe LastName

-- | URL pointing a image used for Avatar of the Person.
[createPersonAvatar] :: CreatePerson -> Maybe AvatarUrl

-- | Organization which the Person belongs to.
[createPersonOrgId] :: CreatePerson -> Maybe OrganizationId

-- | List of roles assigned to the person.
[createPersonRoles] :: CreatePerson -> Maybe [RoleId]

-- | List of licenses effective on the Person.
[createPersonLicenses] :: CreatePerson -> Maybe [LicenseId]

-- | <a>UpdatePerson</a> is encoded to request body JSON of Update a Person
--   REST call.
data UpdatePerson
UpdatePerson :: Maybe DisplayName -> Maybe FirstName -> Maybe LastName -> Maybe AvatarUrl -> Maybe OrganizationId -> Maybe [RoleId] -> Maybe [LicenseId] -> UpdatePerson

-- | Display name of the Person.
[updatePersonDisplayName] :: UpdatePerson -> Maybe DisplayName

-- | First name of the Person.
[updatePersonFirstName] :: UpdatePerson -> Maybe FirstName

-- | Last name of the Person.
[updatePersonLastName] :: UpdatePerson -> Maybe LastName

-- | URL pointing a image used for Avatar of the Person.
[updatePersonAvatar] :: UpdatePerson -> Maybe AvatarUrl

-- | Organization which the Person belongs to.
[updatePersonOrgId] :: UpdatePerson -> Maybe OrganizationId

-- | List of roles assigned to the person.
[updatePersonRoles] :: UpdatePerson -> Maybe [RoleId]

-- | List of licenses effective on the Person.
[updatePersonLicenses] :: UpdatePerson -> Maybe [LicenseId]

-- | <a>Room</a> is communication space in Webex Teams 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 Webex Teams.
--   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.
data Room
Room :: RoomId -> Maybe Errors -> Maybe RoomTitle -> Maybe RoomType -> Maybe Bool -> Maybe SipAddr -> Maybe Timestamp -> Maybe TeamId -> Maybe PersonId -> Maybe Timestamp -> Room

-- | Identifier of the Room.
[roomId] :: Room -> RoomId

-- | Element level error possibly contained in List API response.
[roomErrors] :: Room -> Maybe Errors

-- | Title text of the Room.
[roomTitle] :: Room -> Maybe RoomTitle

-- | Indicates if the Room is for 1:1 or group.
[roomType] :: Room -> Maybe RoomType

-- | True if the Room is locked.
[roomIsLocked] :: Room -> Maybe Bool

-- | SIP address of the Room.
[roomSipAddress] :: Room -> Maybe SipAddr

-- | Timestamp when the last activity was happen on the Room.
[roomLastActivity] :: Room -> Maybe Timestamp

-- | Identifier of the <a>Team</a> which the Room belongs to.
[roomTeamId] :: Room -> Maybe TeamId

-- | Identifier of <a>Person</a> who created the Room.
[roomCreatorId] :: Room -> Maybe PersonId

-- | Timestamp when the Room was created.
[roomCreated] :: Room -> Maybe Timestamp

-- | Identifying <a>Room</a>.
newtype RoomId
RoomId :: Text -> RoomId

-- | Title text of <a>Room</a>.
newtype RoomTitle
RoomTitle :: Text -> RoomTitle

-- | <a>RoomType</a> indicates if the <a>Room</a> is for 1:1 user or group
--   of users.
data RoomType

-- | The Room is for 1:1. Decoded from "direct".
RoomTypeDirect :: RoomType

-- | The Room is for group. Decoded from "group".
RoomTypeGroup :: RoomType

-- | SIP address.
newtype SipAddr
SipAddr :: Text -> SipAddr

-- | <a>RoomList</a> is decoded from response JSON of List Rooms REST call.
--   It is list of <a>Room</a>.
newtype RoomList
RoomList :: [Room] -> RoomList
[roomListItems] :: RoomList -> [Room]

-- | Optional query strings for room list API
data RoomFilter
RoomFilter :: Maybe TeamId -> Maybe RoomType -> Maybe RoomFilterSortBy -> RoomFilter

-- | List rooms only in given team.
[roomFilterTeamId] :: RoomFilter -> Maybe TeamId

-- | List given type rooms only.
[roomFilterRoomType] :: RoomFilter -> Maybe RoomType

-- | Sort response by given option.
[roomFilterSortBy] :: RoomFilter -> Maybe RoomFilterSortBy

-- | Sorting option for room list API.
data RoomFilterSortBy
RoomFilterSortById :: RoomFilterSortBy
RoomFilterSortByLastActivity :: RoomFilterSortBy
RoomFilterSortByCreated :: RoomFilterSortBy

-- | <a>CreateRoom</a> is encoded to request body JSON of Create a Room
--   REST call.
data CreateRoom
CreateRoom :: RoomTitle -> Maybe TeamId -> CreateRoom

-- | Title text of newly created Room.
[createRoomTitle] :: CreateRoom -> RoomTitle

-- | Identifier of <a>Team</a> which the Room will belong to. If Nothing,
--   the new Room will be standalone.
[createRoomTeamId] :: CreateRoom -> Maybe TeamId

-- | <a>UpdateRoom</a> is encoded to request body JSON of Update a Room
--   REST call.
newtype UpdateRoom
UpdateRoom :: RoomTitle -> UpdateRoom
[updateRoomTitle] :: UpdateRoom -> RoomTitle

-- | <a>Membership</a> is association between <a>Room</a> and
--   <a>Person</a>. 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.
data Membership
Membership :: MembershipId -> Maybe Errors -> Maybe RoomId -> Maybe PersonId -> Maybe Email -> Maybe DisplayName -> Maybe OrganizationId -> Maybe Bool -> Maybe Bool -> Maybe Timestamp -> Membership

-- | Identifier of the Membership entry.
[membershipId] :: Membership -> MembershipId

-- | Element level error possibly contained in List API response.
[membershipErrors] :: Membership -> Maybe Errors

-- | Identifier of the <a>Room</a> associated to the Person
[membershipRoomId] :: Membership -> Maybe RoomId

-- | Identifier of the <a>Person</a> associated to the Room
[membershipPersonId] :: Membership -> Maybe PersonId

-- | Email of the Person
[membershipPersonEmail] :: Membership -> Maybe Email

-- | Display name of the Person
[membershipPersonDisplayName] :: Membership -> Maybe DisplayName

-- | Identifier of <a>Organization</a> which the Person belongs to.
[membershipPersonOrgId] :: Membership -> Maybe OrganizationId

-- | True if the Person is a moderator of the room.
[membershipIsModerator] :: Membership -> Maybe Bool

-- | True if the Person is monitoring the Room.
[membershipIsMonitor] :: Membership -> Maybe Bool

-- | Timestamp when the Membership was created.
[membershipCreated] :: Membership -> Maybe Timestamp

-- | Identifying <a>Membership</a>.
newtype MembershipId
MembershipId :: Text -> MembershipId

-- | <a>MembershipList</a> is decoded from response JSON of List
--   Memberships REST call. It is list of <a>Membership</a>.
newtype MembershipList
MembershipList :: [Membership] -> MembershipList
[membershipListItems] :: MembershipList -> [Membership]

-- | Optional query strings for room membership list API
data MembershipFilter
MembershipFilter :: Maybe RoomId -> Maybe PersonId -> Maybe Email -> MembershipFilter

-- | List membership only in given room.
[membershipFilterRoomId] :: MembershipFilter -> Maybe RoomId

-- | List membership related to given person of personId.
[membershipFilterPersonId] :: MembershipFilter -> Maybe PersonId

-- | List membership related to given person of email.
[membershipFilterPersonEmail] :: MembershipFilter -> Maybe Email

-- | <a>CreateMembership</a> is encoded to request body JSON of Create a
--   Membership REST call.
data CreateMembership
CreateMembership :: RoomId -> Maybe PersonId -> Maybe Email -> Maybe Bool -> CreateMembership

-- | Identifier of <a>Room</a> which the Person will be added to.
[createMembershipRoomId] :: CreateMembership -> RoomId

-- | Identifier of <a>Person</a> who will be added to the Room.
[createMembershipPersonId] :: CreateMembership -> Maybe PersonId

-- | Email of the Person to be added.
[createMembershipPersonEmail] :: CreateMembership -> Maybe Email

-- | The Person becomes a moderator of the Room if True.
[createMembershipIsModerator] :: CreateMembership -> Maybe Bool

-- | <a>UpdateMembership</a> is encoded to request body JSON of Update a
--   Membership REST call.
newtype UpdateMembership
UpdateMembership :: Bool -> UpdateMembership
[updateMembershipIsModerator] :: UpdateMembership -> Bool

-- | <a>Message</a> is a message posted to a <a>Room</a> by some
--   <a>Person</a>. Room is decoded from response JSON of Get Message
--   Details REST call. It is also element type of response of List
--   Messages call.
data Message
Message :: MessageId -> Maybe Errors -> Maybe RoomId -> Maybe RoomType -> Maybe PersonId -> Maybe Email -> Maybe MessageText -> Maybe MessageHtml -> Maybe [FileUrl] -> Maybe PersonId -> Maybe Email -> Maybe Timestamp -> Maybe [PersonId] -> Message

-- | Identifier of the Message.
[messageId] :: Message -> MessageId

-- | Element level error possibly contained in List API response.
[messageErrors] :: Message -> Maybe Errors

-- | Identifier of the room where the Message was sent.
[messageRoomId] :: Message -> Maybe RoomId

-- | Type of Room the message was sent to.
[messageRoomType] :: Message -> Maybe RoomType

-- | Presents in documentation but doesn't appear in actual API response.
[messageToPersonId] :: Message -> Maybe PersonId

-- | Presents in documentation but doesn't appear in actual API response.
[messageToPersonEmail] :: Message -> Maybe Email

-- | Message body in plain text.
[messageText] :: Message -> Maybe MessageText

-- | Message body in HTML.
[messageHtml] :: Message -> Maybe MessageHtml

-- | URL to files attached to the message.
[messageFiles] :: Message -> Maybe [FileUrl]

-- | Identifier of <a>Person</a> who sent the message.
[messagePersonId] :: Message -> Maybe PersonId

-- | Email of Person who sent the message.
[messagePersonEmail] :: Message -> Maybe Email

-- | Timestamp when the massage was sent.
[messageCreated] :: Message -> Maybe Timestamp

-- | List of identifiers of Person were mentioned in the message.
[messageMentionedPeople] :: Message -> Maybe [PersonId]

-- | Identifying <a>Message</a>.
newtype MessageId
MessageId :: Text -> MessageId

-- | Body of message in plain text.
newtype MessageText
MessageText :: Text -> MessageText

-- | Body of message in html.
newtype MessageHtml
MessageHtml :: Text -> MessageHtml

-- | Body of message in markdown.
newtype MessageMarkdown
MessageMarkdown :: Text -> MessageMarkdown

-- | URL pointing attached file of message.
newtype FileUrl
FileUrl :: Text -> FileUrl

-- | <a>MessageList</a> is decoded from response JSON of List Messages REST
--   call. It is list of <a>Message</a>.
newtype MessageList
MessageList :: [Message] -> MessageList
[messageListItems] :: MessageList -> [Message]

-- | Optional query strings for message list API
data MessageFilter
MessageFilter :: RoomId -> Maybe MentionedPeople -> Maybe Timestamp -> Maybe MessageId -> MessageFilter

-- | Mandatory parameter which room to search.
[messageFilterRoomId] :: MessageFilter -> RoomId

-- | List messages only mentioned to given person.
[messageFilterMentionedPeople] :: MessageFilter -> Maybe MentionedPeople

-- | List messages posted before given timestamp.
[messageFilterBefore] :: MessageFilter -> Maybe Timestamp

-- | List messages posted before given message.
[messageFilterBeforeMessage] :: MessageFilter -> Maybe MessageId

-- | Sum type for mentionedPeople query string. It can be "me" or
--   <a>PersonId</a>.
data MentionedPeople
MentionedPeopleMe :: MentionedPeople
MentionedPeople :: PersonId -> MentionedPeople

-- | <a>CreateMessage</a> is encoded to request body JSON of Create a
--   Message REST call.
data CreateMessage
CreateMessage :: Maybe RoomId -> Maybe PersonId -> Maybe Email -> Maybe MessageText -> Maybe MessageMarkdown -> Maybe [FileUrl] -> CreateMessage

-- | Identifier of the <a>Room</a> the message will be posted to.
[createMessageRoomId] :: CreateMessage -> Maybe RoomId

-- | Identifier of the <a>Person</a> to whom the direct message will be
--   sent.
[createMessageToPersonId] :: CreateMessage -> Maybe PersonId

-- | Email of Person who receives the Message.
[createMessageToPersonEmail] :: CreateMessage -> Maybe Email

-- | Message body in plain text.
[createMessageText] :: CreateMessage -> Maybe MessageText

-- | Message body in markdown format.
[createMessageMarkdown] :: CreateMessage -> Maybe MessageMarkdown

-- | URLs of Attached files to the message.
[createMessageFiles] :: CreateMessage -> Maybe [FileUrl]

-- | Name of Team
newtype TeamName
TeamName :: Text -> TeamName

-- | Identifying Team.
newtype TeamId
TeamId :: Text -> TeamId

-- | <a>Team</a> is group of <a>Person</a> and group of <a>Room</a>. 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.
data Team
Team :: TeamId -> Maybe Errors -> Maybe TeamName -> Maybe PersonId -> Maybe Timestamp -> Team

-- | Identifier of the Team.
[teamId] :: Team -> TeamId

-- | Element level error possibly contained in List API response.
[teamErrors] :: Team -> Maybe Errors

-- | Name of the Team.
[teamName] :: Team -> Maybe TeamName

-- | Identifier of the Person who created the Team.
[teamCreatorId] :: Team -> Maybe PersonId

-- | Timestamp when the Team was created.
[teamCreated] :: Team -> Maybe Timestamp

-- | <a>TeamList</a> is decoded from response JSON of List Teams REST call.
--   It is list of <a>Team</a>.
newtype TeamList
TeamList :: [Team] -> TeamList
[teamListItems] :: TeamList -> [Team]

-- | <a>CreateTeam</a> is encoded to request body JSON of Create a Team
--   REST call.
newtype CreateTeam
CreateTeam :: TeamName -> CreateTeam
[createTeamName] :: CreateTeam -> TeamName

-- | <a>UpdateTeam</a> is encoded to request body JSON of Update a Team
--   REST call.
newtype UpdateTeam
UpdateTeam :: TeamName -> UpdateTeam
[updateTeamName] :: UpdateTeam -> TeamName

-- | <a>TeamMembership</a> is association between <a>Team</a> and
--   <a>Person</a>. 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.
data TeamMembership
TeamMembership :: TeamMembershipId -> Maybe Errors -> Maybe TeamId -> Maybe PersonId -> Maybe Email -> Maybe DisplayName -> Maybe OrganizationId -> Maybe Bool -> Maybe Timestamp -> TeamMembership

-- | Identifier of the TeamMembership entry.
[teamMembershipId] :: TeamMembership -> TeamMembershipId

-- | Element level error possibly contained in List API response.
[teamMembershipErrors] :: TeamMembership -> Maybe Errors

-- | Identifier of the <a>Team</a> which the Person belongs to.
[teamMembershipTeamId] :: TeamMembership -> Maybe TeamId

-- | Identifier of user who belongs to the Team.
[teamMembershipPersonId] :: TeamMembership -> Maybe PersonId

-- | Email address of the user identified by the PersonId.
[teamMembershipPersonEmail] :: TeamMembership -> Maybe Email

-- | Display name of the user identified by the PersonId.
[teamMembershipPersonDisplayName] :: TeamMembership -> Maybe DisplayName

-- | Identifier of <a>Organization</a> which the Team blongs to.
[teamMembershipPersonOrgId] :: TeamMembership -> Maybe OrganizationId

-- | The Person is moderator of the Team when True.
[teamMembershipIsModerator] :: TeamMembership -> Maybe Bool

-- | Timestamp when the TeamMembership entry created.
[teamMembershipCreated] :: TeamMembership -> Maybe Timestamp

-- | Identifying TeamMembership.
newtype TeamMembershipId
TeamMembershipId :: Text -> TeamMembershipId

-- | <a>TeamMembershipList</a> is decoded from response JSON of List Team
--   Memberships REST call. It is list of <a>TeamMembership</a>.
newtype TeamMembershipList
TeamMembershipList :: [TeamMembership] -> TeamMembershipList
[teamMembershipListItems] :: TeamMembershipList -> [TeamMembership]

-- | Optional query strings for team membership list API
newtype TeamMembershipFilter
TeamMembershipFilter :: TeamId -> TeamMembershipFilter

-- | List membership only in given team.
[teamMembershipFilterTeamId] :: TeamMembershipFilter -> TeamId

-- | <a>CreateTeamMembership</a> is encoded to request body JSON of Create
--   a Team Membership REST call.
data CreateTeamMembership
CreateTeamMembership :: TeamId -> Maybe PersonId -> Maybe Email -> Maybe Bool -> CreateTeamMembership

-- | Identifier of <a>Team</a> which the user will be added to.
[createTeamMembershipTeamId] :: CreateTeamMembership -> TeamId

-- | Identifier of <a>Person</a> who will be added to the Team.
[createTeamMembershipPersonId] :: CreateTeamMembership -> Maybe PersonId

-- | Email of the Person to be added.
[createTeamMembershipPersonEmail] :: CreateTeamMembership -> Maybe Email

-- | The user becomes a moderator of the team if True.
[createTeamMembershipIsModerator] :: CreateTeamMembership -> Maybe Bool

-- | <a>UpdateTeamMembership</a> is encoded to request body JSON of Update
--   a Team Membership REST call.
newtype UpdateTeamMembership
UpdateTeamMembership :: Bool -> UpdateTeamMembership
[updateTeamMembershipIsModerator] :: UpdateTeamMembership -> Bool

-- | <a>Organization</a> is an administrative group of Webex Teams users.
--   Each <a>Person</a> 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.
data Organization
Organization :: OrganizationId -> Maybe Errors -> Maybe OrganizationDisplayName -> Maybe Timestamp -> Organization

-- | Identifier of the Organization.
[organizationId] :: Organization -> OrganizationId

-- | Element level error possibly contained in List API response.
[organizationErrors] :: Organization -> Maybe Errors

-- | Display name of the Organization.
[organizationDisplayName] :: Organization -> Maybe OrganizationDisplayName

-- | Timestamp when the Organization was created.
[organizationCreated] :: Organization -> Maybe Timestamp

-- | <a>Organization</a> identifier which user or team belongs to.
newtype OrganizationId
OrganizationId :: Text -> OrganizationId

-- | Display name of <a>Organization</a>
newtype OrganizationDisplayName
OrganizationDisplayName :: Text -> OrganizationDisplayName

-- | <a>OrganizationList</a> is decoded from response JSON of List
--   Organizations REST call. It is list of <a>Organization</a>.
newtype OrganizationList
OrganizationList :: [Organization] -> OrganizationList
[organizationListItems] :: OrganizationList -> [Organization]

-- | <a>License</a> is allowance for features and services of Webex Teams
--   subscription. License is decoded from response JSON of Get License
--   Details REST call. It is also element type of response of List
--   Licenses call.
data License
License :: LicenseId -> Maybe Errors -> Maybe LicenseName -> Maybe LicenseUnit -> Maybe LicenseUnit -> License

-- | Identifier of the License.
[licenseId] :: License -> LicenseId

-- | Element level error possibly contained in List API response.
[licenseErrors] :: License -> Maybe Errors

-- | Name of the License.
[licenseName] :: License -> Maybe LicenseName

-- | Number of granted License.
[licenseTotalUnits] :: License -> Maybe LicenseUnit

-- | Number of currently consumed License.
[licenseConsumedUnits] :: License -> Maybe LicenseUnit

-- | <a>License</a> identifier which can be enabled on user. See
--   <a>License</a> too.
newtype LicenseId
LicenseId :: Text -> LicenseId

-- | Display name of License
newtype LicenseName
LicenseName :: Text -> LicenseName

-- | Counting number of granted or consumed License
newtype LicenseUnit
LicenseUnit :: Integer -> LicenseUnit

-- | <a>LicenseList</a> is decoded from response JSON of List Licenses REST
--   call. It is list of <a>License</a>.
newtype LicenseList
LicenseList :: [License] -> LicenseList
[licenseListItems] :: LicenseList -> [License]

-- | Optional query strings for license list API
newtype LicenseFilter
LicenseFilter :: Maybe OrganizationId -> LicenseFilter

-- | List licenses only applicable to given organization.
[licenseFilterOrgId] :: LicenseFilter -> Maybe OrganizationId

-- | 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.
data Role
Role :: RoleId -> Maybe Errors -> Maybe RoleName -> Role

-- | Identifier of the Role
[roleId] :: Role -> RoleId

-- | Element level error possibly contained in List API response.
[roleErrors] :: Role -> Maybe Errors

-- | Name of the Role
[roleName] :: Role -> Maybe RoleName

-- | <a>Role</a> identifier which can be assigned to user. See <a>Role</a>
--   too.
newtype RoleId
RoleId :: Text -> RoleId

-- | Name of <a>Role</a>.
newtype RoleName
RoleName :: Text -> RoleName

-- | <a>RoleList</a> is decoded from response JSON of List Role REST call.
--   It is list of <a>Role</a>.
newtype RoleList
RoleList :: [Role] -> RoleList
[roleListItems] :: RoleList -> [Role]

-- | Get details of a Webex Teams entity.
--   
--   Obtaining detail of an entity identified by key. The key can be a
--   value in one of following types: <a>PersonId</a>, <a>RoomId</a>,
--   <a>MembershipId</a>, <a>MessageId</a>, <a>TeamId</a>,
--   <a>TeamMembershipId</a>, <a>OrganizationId</a>, <a>LicenseId</a>,
--   <a>RoleId</a>. API is automatically selected by type of the key. A
--   JSONException runtime exception will be thrown on an JSON parse
--   errors.
getDetail :: (MonadIO m, WebexTeamsDetail key) => Authorization -> WebexTeamsRequest -> key -> m (Response (ToResponse key))

-- | Get details of a Webex Teams entity. A Left value will be returned on
--   an JSON parse errors.
getDetailEither :: (MonadIO m, WebexTeamsDetail key) => Authorization -> WebexTeamsRequest -> key -> m (Response (Either JSONException (ToResponse key)))

-- | <a>ListReader</a> is IO action returned by functions for list API
--   (<a>getListWithFilter</a>, <a>getTeamList</a> etc). It is containing
--   URL inside to be accessed. When you call the IO action, it accesses to
--   Webex Teams REST API, parse next page URL if available, then return
--   new IO action. The new IO action contains list of responded items and
--   new URL for next page so you can call the new IO action to get the
--   next page.
--   
--   Following example demonstrates how you can get all items into single
--   list.
--   
--   <pre>
--   readAllList :: ListReader i -&gt; IO [i]
--   readAllList reader = go []
--     where
--       go xs = reader &gt;&gt;= chunk -&gt; case chunk of
--           [] -&gt; pure xs
--           ys -&gt; go (xs &lt;&gt; ys)
--   </pre>
--   
--   Note that this example is only for explaining how <a>ListReader</a>
--   works. Practically you should not do the above because it eagerly
--   creates entire list. You should use streaming APIs instead. Streaming
--   APIs are available via webex-teams-conduit and webex-teams-pipes
--   package.
type ListReader a = IO [a]

-- | Get list with query parameter.
getListWithFilter :: (MonadIO m, WebexTeamsFilter filter, WebexTeamsListItem (ToResponse filter)) => Authorization -> WebexTeamsRequest -> filter -> m (ListReader (ToResponse filter))

-- | Return <a>ListReader</a> for <a>Team</a>.
getTeamList :: MonadIO m => Authorization -> WebexTeamsRequest -> m (ListReader Team)

-- | Return <a>ListReader</a> for <a>Team</a>.
getOrganizationList :: MonadIO m => Authorization -> WebexTeamsRequest -> m (ListReader Organization)

-- | Return <a>ListReader</a> for <a>Team</a>.
getRoleList :: MonadIO m => Authorization -> WebexTeamsRequest -> m (ListReader Role)

-- | Get list of entities with query parameter and stream it into Conduit
--   pipe. It automatically performs pagination.

-- | <i>Deprecated: Use getListWithFilter or streamListWithFilter of
--   webex-teams-conduit</i>
streamEntityWithFilter :: (MonadIO m, WebexTeamsFilter filter, WebexTeamsListItem (ToResponse filter)) => Authorization -> WebexTeamsRequest -> filter -> ConduitT () (ToResponse filter) m ()

-- | List of <a>Team</a> and stream it into Conduit pipe. It automatically
--   performs pagination.

-- | <i>Deprecated: Use getTeamList or streamTeamList of
--   webex-teams-conduit</i>
streamTeamList :: MonadIO m => Authorization -> WebexTeamsRequest -> ConduitT () Team m ()

-- | Filter list of <a>Organization</a> and stream it into Conduit pipe. It
--   automatically performs pagination.

-- | <i>Deprecated: Use getOrganizationList or streamOrganizationList of
--   webex-teams-conduit</i>
streamOrganizationList :: MonadIO m => Authorization -> WebexTeamsRequest -> ConduitT () Organization m ()

-- | List of <a>Role</a> and stream it into Conduit pipe. It automatically
--   performs pagination.

-- | <i>Deprecated: Use getRoleList or streamRoleList of
--   webex-teams-conduit</i>
streamRoleList :: MonadIO m => Authorization -> WebexTeamsRequest -> ConduitT () Role m ()

-- | Create a Webex Teams entity with given parameters.
--   
--   Creating a new entity of Webex Teams 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.
createEntity :: (MonadIO m, WebexTeamsCreate createParams) => Authorization -> WebexTeamsRequest -> createParams -> m (Response (ToResponse createParams))

-- | Create a Webex Teams entity with given parameters. A Left value will
--   be returned on an JSON parse errors.
createEntityEither :: (MonadIO m, WebexTeamsCreate createParams) => Authorization -> WebexTeamsRequest -> createParams -> m (Response (Either JSONException (ToResponse createParams)))

-- | Update a Webex Teams entity with given parameters.
--   
--   Creating a new entity of Webex Teams 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.
updateEntity :: (MonadIO m, WebexTeamsUpdate updateParams) => Authorization -> WebexTeamsRequest -> updateParams -> m (Response (ToResponse updateParams))

-- | Update a Webex Teams entity with given parameters. A Left value will
--   be returned on an JSON parse errors.
updateEntityEither :: (MonadIO m, WebexTeamsUpdate updateParams) => Authorization -> WebexTeamsRequest -> updateParams -> m (Response (Either JSONException (ToResponse updateParams)))

-- | Default value of query strings for message list API. Because
--   <a>RoomId</a> is mandatory, user have to supply it in order to get
--   rest of defaults.
defaultMessageFilter :: RoomId -> MessageFilter

-- | Default value of query strings for team membership list API. Because
--   <a>TeamId</a> 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 <a>TeamMembershipFilter</a> is used for providing
--   consistent API like <tt>streamEntityWithFilter</tt>.
defaultTeamMembershipFilter :: TeamId -> TeamMembershipFilter

-- | Deletes a room, by ID.
deleteRoom :: MonadIO m => Authorization -> WebexTeamsRequest -> RoomId -> m (Response ())

-- | Deletes a membership, by ID.
deleteMembership :: MonadIO m => Authorization -> WebexTeamsRequest -> MembershipId -> m (Response ())

-- | Deletes a message, by ID.
deleteMessage :: MonadIO m => Authorization -> WebexTeamsRequest -> MessageId -> m (Response ())

-- | Deletes a team, by ID.
deleteTeam :: MonadIO m => Authorization -> WebexTeamsRequest -> TeamId -> m (Response ())

-- | Deletes a teamMembership, by ID.
deleteTeamMembership :: MonadIO m => Authorization -> WebexTeamsRequest -> TeamMembershipId -> m (Response ())
instance GHC.Show.Show Network.WebexTeams.WebexTeamsRequest
instance GHC.Show.Show Network.WebexTeams.Authorization
instance GHC.Classes.Eq Network.WebexTeams.Authorization
instance Data.Default.Class.Default Network.WebexTeams.WebexTeamsRequest


-- | <i>Deprecated: Use Network.WebexTeams</i>
module Network.CiscoSpark


-- | <i>Deprecated: Use Network.WebexTeams.Types</i>
module Network.CiscoSpark.Types
