module OpenAI.V1.Threads.Messages
(
MessageID(..)
, Message(..)
, ModifyMessage(..)
, _ModifyMessage
, MessageObject(..)
, Status(..)
, IncompleteDetails(..)
, File(..)
, Annotation(..)
, TextObject(..)
, API
) where
import OpenAI.Prelude
import OpenAI.V1.Assistants (AssistantID)
import OpenAI.V1.DeletionStatus
import OpenAI.V1.Files (FileID)
import OpenAI.V1.ListOf
import OpenAI.V1.Message
import OpenAI.V1.Threads (ThreadID)
import OpenAI.V1.Threads.Runs (RunID)
newtype MessageID = MessageID{ MessageID -> Text
text :: Text }
deriving newtype (Maybe MessageID
Value -> Parser [MessageID]
Value -> Parser MessageID
(Value -> Parser MessageID)
-> (Value -> Parser [MessageID])
-> Maybe MessageID
-> FromJSON MessageID
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser MessageID
parseJSON :: Value -> Parser MessageID
$cparseJSONList :: Value -> Parser [MessageID]
parseJSONList :: Value -> Parser [MessageID]
$comittedField :: Maybe MessageID
omittedField :: Maybe MessageID
FromJSON, String -> MessageID
(String -> MessageID) -> IsString MessageID
forall a. (String -> a) -> IsString a
$cfromString :: String -> MessageID
fromString :: String -> MessageID
IsString, Int -> MessageID -> ShowS
[MessageID] -> ShowS
MessageID -> String
(Int -> MessageID -> ShowS)
-> (MessageID -> String)
-> ([MessageID] -> ShowS)
-> Show MessageID
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> MessageID -> ShowS
showsPrec :: Int -> MessageID -> ShowS
$cshow :: MessageID -> String
show :: MessageID -> String
$cshowList :: [MessageID] -> ShowS
showList :: [MessageID] -> ShowS
Show, MessageID -> Text
MessageID -> ByteString
MessageID -> Builder
(MessageID -> Text)
-> (MessageID -> Builder)
-> (MessageID -> ByteString)
-> (MessageID -> Text)
-> (MessageID -> Builder)
-> ToHttpApiData MessageID
forall a.
(a -> Text)
-> (a -> Builder)
-> (a -> ByteString)
-> (a -> Text)
-> (a -> Builder)
-> ToHttpApiData a
$ctoUrlPiece :: MessageID -> Text
toUrlPiece :: MessageID -> Text
$ctoEncodedUrlPiece :: MessageID -> Builder
toEncodedUrlPiece :: MessageID -> Builder
$ctoHeader :: MessageID -> ByteString
toHeader :: MessageID -> ByteString
$ctoQueryParam :: MessageID -> Text
toQueryParam :: MessageID -> Text
$ctoEncodedQueryParam :: MessageID -> Builder
toEncodedQueryParam :: MessageID -> Builder
ToHttpApiData, [MessageID] -> Value
[MessageID] -> Encoding
MessageID -> Bool
MessageID -> Value
MessageID -> Encoding
(MessageID -> Value)
-> (MessageID -> Encoding)
-> ([MessageID] -> Value)
-> ([MessageID] -> Encoding)
-> (MessageID -> Bool)
-> ToJSON MessageID
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: MessageID -> Value
toJSON :: MessageID -> Value
$ctoEncoding :: MessageID -> Encoding
toEncoding :: MessageID -> Encoding
$ctoJSONList :: [MessageID] -> Value
toJSONList :: [MessageID] -> Value
$ctoEncodingList :: [MessageID] -> Encoding
toEncodingList :: [MessageID] -> Encoding
$comitField :: MessageID -> Bool
omitField :: MessageID -> Bool
ToJSON)
data ModifyMessage = ModifyMessage
{ ModifyMessage -> Maybe (Map Text Text)
metadata :: Maybe (Map Text Text)
} deriving stock ((forall x. ModifyMessage -> Rep ModifyMessage x)
-> (forall x. Rep ModifyMessage x -> ModifyMessage)
-> Generic ModifyMessage
forall x. Rep ModifyMessage x -> ModifyMessage
forall x. ModifyMessage -> Rep ModifyMessage x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. ModifyMessage -> Rep ModifyMessage x
from :: forall x. ModifyMessage -> Rep ModifyMessage x
$cto :: forall x. Rep ModifyMessage x -> ModifyMessage
to :: forall x. Rep ModifyMessage x -> ModifyMessage
Generic, Int -> ModifyMessage -> ShowS
[ModifyMessage] -> ShowS
ModifyMessage -> String
(Int -> ModifyMessage -> ShowS)
-> (ModifyMessage -> String)
-> ([ModifyMessage] -> ShowS)
-> Show ModifyMessage
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ModifyMessage -> ShowS
showsPrec :: Int -> ModifyMessage -> ShowS
$cshow :: ModifyMessage -> String
show :: ModifyMessage -> String
$cshowList :: [ModifyMessage] -> ShowS
showList :: [ModifyMessage] -> ShowS
Show)
instance ToJSON ModifyMessage where
toJSON :: ModifyMessage -> Value
toJSON = Options -> ModifyMessage -> Value
forall a.
(Generic a, GToJSON' Value Zero (Rep a)) =>
Options -> a -> Value
genericToJSON Options
aesonOptions
_ModifyMessage :: ModifyMessage
_ModifyMessage :: ModifyMessage
_ModifyMessage = ModifyMessage
{ $sel:metadata:ModifyMessage :: Maybe (Map Text Text)
metadata = Maybe (Map Text Text)
forall a. Maybe a
Nothing
}
data Status = In_Progress | Incomplete | Completed
deriving stock ((forall x. Status -> Rep Status x)
-> (forall x. Rep Status x -> Status) -> Generic Status
forall x. Rep Status x -> Status
forall x. Status -> Rep Status x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. Status -> Rep Status x
from :: forall x. Status -> Rep Status x
$cto :: forall x. Rep Status x -> Status
to :: forall x. Rep Status x -> Status
Generic, Int -> Status -> ShowS
[Status] -> ShowS
Status -> String
(Int -> Status -> ShowS)
-> (Status -> String) -> ([Status] -> ShowS) -> Show Status
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Status -> ShowS
showsPrec :: Int -> Status -> ShowS
$cshow :: Status -> String
show :: Status -> String
$cshowList :: [Status] -> ShowS
showList :: [Status] -> ShowS
Show)
instance FromJSON Status where
parseJSON :: Value -> Parser Status
parseJSON = Options -> Value -> Parser Status
forall a.
(Generic a, GFromJSON Zero (Rep a)) =>
Options -> Value -> Parser a
genericParseJSON Options
aesonOptions
data IncompleteDetails = IncompleteDetails
{ IncompleteDetails -> Text
reason :: Text
} deriving ((forall x. IncompleteDetails -> Rep IncompleteDetails x)
-> (forall x. Rep IncompleteDetails x -> IncompleteDetails)
-> Generic IncompleteDetails
forall x. Rep IncompleteDetails x -> IncompleteDetails
forall x. IncompleteDetails -> Rep IncompleteDetails x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. IncompleteDetails -> Rep IncompleteDetails x
from :: forall x. IncompleteDetails -> Rep IncompleteDetails x
$cto :: forall x. Rep IncompleteDetails x -> IncompleteDetails
to :: forall x. Rep IncompleteDetails x -> IncompleteDetails
Generic, Int -> IncompleteDetails -> ShowS
[IncompleteDetails] -> ShowS
IncompleteDetails -> String
(Int -> IncompleteDetails -> ShowS)
-> (IncompleteDetails -> String)
-> ([IncompleteDetails] -> ShowS)
-> Show IncompleteDetails
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> IncompleteDetails -> ShowS
showsPrec :: Int -> IncompleteDetails -> ShowS
$cshow :: IncompleteDetails -> String
show :: IncompleteDetails -> String
$cshowList :: [IncompleteDetails] -> ShowS
showList :: [IncompleteDetails] -> ShowS
Show)
deriving anyclass (Maybe IncompleteDetails
Value -> Parser [IncompleteDetails]
Value -> Parser IncompleteDetails
(Value -> Parser IncompleteDetails)
-> (Value -> Parser [IncompleteDetails])
-> Maybe IncompleteDetails
-> FromJSON IncompleteDetails
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser IncompleteDetails
parseJSON :: Value -> Parser IncompleteDetails
$cparseJSONList :: Value -> Parser [IncompleteDetails]
parseJSONList :: Value -> Parser [IncompleteDetails]
$comittedField :: Maybe IncompleteDetails
omittedField :: Maybe IncompleteDetails
FromJSON)
data File = File
{ File -> FileID
file_id :: FileID
} deriving stock ((forall x. File -> Rep File x)
-> (forall x. Rep File x -> File) -> Generic File
forall x. Rep File x -> File
forall x. File -> Rep File x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. File -> Rep File x
from :: forall x. File -> Rep File x
$cto :: forall x. Rep File x -> File
to :: forall x. Rep File x -> File
Generic, Int -> File -> ShowS
[File] -> ShowS
File -> String
(Int -> File -> ShowS)
-> (File -> String) -> ([File] -> ShowS) -> Show File
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> File -> ShowS
showsPrec :: Int -> File -> ShowS
$cshow :: File -> String
show :: File -> String
$cshowList :: [File] -> ShowS
showList :: [File] -> ShowS
Show)
deriving anyclass (Maybe File
Value -> Parser [File]
Value -> Parser File
(Value -> Parser File)
-> (Value -> Parser [File]) -> Maybe File -> FromJSON File
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser File
parseJSON :: Value -> Parser File
$cparseJSONList :: Value -> Parser [File]
parseJSONList :: Value -> Parser [File]
$comittedField :: Maybe File
omittedField :: Maybe File
FromJSON)
data Annotation
= File_Citation
{ Annotation -> Text
text :: Text
, Annotation -> File
file_citation :: File
, Annotation -> Natural
start_index :: Natural
, Annotation -> Natural
end_index :: Natural
}
| File_Path
{ text :: Text
, Annotation -> File
file_path :: File
, start_index :: Natural
, end_index :: Natural
}
deriving stock ((forall x. Annotation -> Rep Annotation x)
-> (forall x. Rep Annotation x -> Annotation) -> Generic Annotation
forall x. Rep Annotation x -> Annotation
forall x. Annotation -> Rep Annotation x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. Annotation -> Rep Annotation x
from :: forall x. Annotation -> Rep Annotation x
$cto :: forall x. Rep Annotation x -> Annotation
to :: forall x. Rep Annotation x -> Annotation
Generic, Int -> Annotation -> ShowS
[Annotation] -> ShowS
Annotation -> String
(Int -> Annotation -> ShowS)
-> (Annotation -> String)
-> ([Annotation] -> ShowS)
-> Show Annotation
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Annotation -> ShowS
showsPrec :: Int -> Annotation -> ShowS
$cshow :: Annotation -> String
show :: Annotation -> String
$cshowList :: [Annotation] -> ShowS
showList :: [Annotation] -> ShowS
Show)
instance FromJSON Annotation where
parseJSON :: Value -> Parser Annotation
parseJSON = Options -> Value -> Parser Annotation
forall a.
(Generic a, GFromJSON Zero (Rep a)) =>
Options -> Value -> Parser a
genericParseJSON Options
aesonOptions
{ sumEncoding =
TaggedObject{ tagFieldName = "type", contentsFieldName = "" }
, tagSingleConstructors = True
}
data TextObject = TextObject
{ TextObject -> Text
value :: Text
, TextObject -> Vector Annotation
annotations :: Vector Annotation
} deriving stock ((forall x. TextObject -> Rep TextObject x)
-> (forall x. Rep TextObject x -> TextObject) -> Generic TextObject
forall x. Rep TextObject x -> TextObject
forall x. TextObject -> Rep TextObject x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. TextObject -> Rep TextObject x
from :: forall x. TextObject -> Rep TextObject x
$cto :: forall x. Rep TextObject x -> TextObject
to :: forall x. Rep TextObject x -> TextObject
Generic, Int -> TextObject -> ShowS
[TextObject] -> ShowS
TextObject -> String
(Int -> TextObject -> ShowS)
-> (TextObject -> String)
-> ([TextObject] -> ShowS)
-> Show TextObject
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TextObject -> ShowS
showsPrec :: Int -> TextObject -> ShowS
$cshow :: TextObject -> String
show :: TextObject -> String
$cshowList :: [TextObject] -> ShowS
showList :: [TextObject] -> ShowS
Show)
deriving anyclass (Maybe TextObject
Value -> Parser [TextObject]
Value -> Parser TextObject
(Value -> Parser TextObject)
-> (Value -> Parser [TextObject])
-> Maybe TextObject
-> FromJSON TextObject
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser TextObject
parseJSON :: Value -> Parser TextObject
$cparseJSONList :: Value -> Parser [TextObject]
parseJSONList :: Value -> Parser [TextObject]
$comittedField :: Maybe TextObject
omittedField :: Maybe TextObject
FromJSON)
instance IsString TextObject where
fromString :: String -> TextObject
fromString String
string =
TextObject{ $sel:value:TextObject :: Text
value = String -> Text
forall a. IsString a => String -> a
fromString String
string, $sel:annotations:TextObject :: Vector Annotation
annotations = [] }
data MessageObject = MessageObject
{ MessageObject -> MessageID
id :: MessageID
, MessageObject -> Text
object :: Text
, MessageObject -> POSIXTime
created_at :: POSIXTime
, MessageObject -> ThreadID
thread_id :: ThreadID
, MessageObject -> Maybe Status
status :: Maybe Status
, MessageObject -> Maybe IncompleteDetails
incomplete_details :: Maybe IncompleteDetails
, MessageObject -> Maybe POSIXTime
completed_at :: Maybe POSIXTime
, MessageObject -> Maybe POSIXTime
incomplete_at :: Maybe POSIXTime
, MessageObject -> Text
role :: Text
, MessageObject -> Vector (Content TextObject)
content :: Vector (Content TextObject)
, MessageObject -> Maybe AssistantID
assistant_id :: Maybe AssistantID
, MessageObject -> Maybe RunID
run_id :: Maybe RunID
, MessageObject -> Maybe (Vector Attachment)
attachments :: Maybe (Vector Attachment)
, MessageObject -> Map Text Text
metadata :: Map Text Text
} deriving ((forall x. MessageObject -> Rep MessageObject x)
-> (forall x. Rep MessageObject x -> MessageObject)
-> Generic MessageObject
forall x. Rep MessageObject x -> MessageObject
forall x. MessageObject -> Rep MessageObject x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. MessageObject -> Rep MessageObject x
from :: forall x. MessageObject -> Rep MessageObject x
$cto :: forall x. Rep MessageObject x -> MessageObject
to :: forall x. Rep MessageObject x -> MessageObject
Generic, Int -> MessageObject -> ShowS
[MessageObject] -> ShowS
MessageObject -> String
(Int -> MessageObject -> ShowS)
-> (MessageObject -> String)
-> ([MessageObject] -> ShowS)
-> Show MessageObject
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> MessageObject -> ShowS
showsPrec :: Int -> MessageObject -> ShowS
$cshow :: MessageObject -> String
show :: MessageObject -> String
$cshowList :: [MessageObject] -> ShowS
showList :: [MessageObject] -> ShowS
Show)
deriving anyclass (Maybe MessageObject
Value -> Parser [MessageObject]
Value -> Parser MessageObject
(Value -> Parser MessageObject)
-> (Value -> Parser [MessageObject])
-> Maybe MessageObject
-> FromJSON MessageObject
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser MessageObject
parseJSON :: Value -> Parser MessageObject
$cparseJSONList :: Value -> Parser [MessageObject]
parseJSONList :: Value -> Parser [MessageObject]
$comittedField :: Maybe MessageObject
omittedField :: Maybe MessageObject
FromJSON)
type API =
Header' '[Required, Strict] "OpenAI-Beta" Text
:> "threads"
:> ( Capture "thread_id" ThreadID
:> "messages"
:> ReqBody '[JSON] Message
:> Post '[JSON] MessageObject
:<|> Capture "thread_id" ThreadID
:> "messages"
:> Get '[JSON] (ListOf MessageObject)
:<|> Capture "thread_id" ThreadID
:> "messages"
:> Capture "message_id" MessageID
:> Get '[JSON] MessageObject
:<|> Capture "thread_id" ThreadID
:> "messages"
:> Capture "message_id" MessageID
:> ReqBody '[JSON] ModifyMessage
:> Post '[JSON] MessageObject
:<|> Capture "thread_id" ThreadID
:> "messages"
:> Capture "message_id" MessageID
:> Delete '[JSON] DeletionStatus
)