{-
   AWS Lambda Runtime API

   AWS Lambda Runtime API is an HTTP API for implementing custom runtimes

   OpenAPI Version: 3.0.0
   AWS Lambda Runtime API API version: 1.0.3
   Generated by OpenAPI Generator (https://openapi-generator.tech)
-}

{-|
Module : AWSLambdaRuntime.API.ApiDefault
-}

{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MonoLocalBinds #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
{-# OPTIONS_GHC -fno-warn-name-shadowing -fno-warn-unused-binds -fno-warn-unused-imports #-}

module AWSLambdaRuntime.API.ApiDefault where

import AWSLambdaRuntime.Core
import AWSLambdaRuntime.MimeTypes
import AWSLambdaRuntime.Model as M

import qualified Data.Aeson as A
import qualified Data.ByteString as B
import qualified Data.ByteString.Lazy as BL
import qualified Data.Data as P (Typeable, TypeRep, typeOf, typeRep)
import qualified Data.Foldable as P
import qualified Data.Map as Map
import qualified Data.Maybe as P
import qualified Data.Proxy as P (Proxy(..))
import qualified Data.Set as Set
import qualified Data.String as P
import qualified Data.Text as T
import qualified Data.Text.Encoding as T
import qualified Data.Text.Lazy as TL
import qualified Data.Text.Lazy.Encoding as TL
import qualified Data.Time as TI
import qualified Network.HTTP.Client.MultipartFormData as NH
import qualified Network.HTTP.Media as ME
import qualified Network.HTTP.Types as NH
import qualified Web.FormUrlEncoded as WH
import qualified Web.HttpApiData as WH

import Data.Text (Text)
import GHC.Base ((<|>))

import Prelude ((==),(/=),($), (.),(<$>),(<*>),(>>=),Maybe(..),Bool(..),Char,Double,FilePath,Float,Int,Integer,String,fmap,undefined,mempty,maybe,pure,Monad,Applicative,Functor)
import qualified Prelude as P

-- * Operations


-- ** Default

-- *** runtimeInitErrorPost

-- | @POST \/runtime\/init\/error@
-- 
-- Non-recoverable initialization error. Runtime should exit after reporting the error. Error will be served in response to the first invoke. 
-- 
runtimeInitErrorPost
  :: (Consumes RuntimeInitErrorPost contentType)
  => ContentType contentType -- ^ request content-type ('MimeType')
  -> AWSLambdaRuntimeRequest RuntimeInitErrorPost contentType StatusResponse MimeJSON
runtimeInitErrorPost _ =
  _mkRequest "POST" ["/runtime/init/error"]

data RuntimeInitErrorPost
instance HasBodyParam RuntimeInitErrorPost Body
instance HasOptionalParam RuntimeInitErrorPost LambdaRuntimeFunctionErrorType where
  applyOptionalParam req (LambdaRuntimeFunctionErrorType xs) =
    req `setHeader` toHeader ("Lambda-Runtime-Function-Error-Type", xs)

-- | @*/*@
instance MimeType mtype => Consumes RuntimeInitErrorPost mtype

-- | @application/json@
instance Produces RuntimeInitErrorPost MimeJSON


-- *** runtimeInvocationAwsRequestIdErrorPost

-- | @POST \/runtime\/invocation\/{AwsRequestId}\/error@
-- 
-- Runtime makes this request in order to submit an error response. It can be either a function error, or a runtime error. Error will be served in response to the invoke. 
-- 
runtimeInvocationAwsRequestIdErrorPost
  :: (Consumes RuntimeInvocationAwsRequestIdErrorPost contentType)
  => ContentType contentType -- ^ request content-type ('MimeType')
  -> AwsRequestId -- ^ "awsRequestId"
  -> AWSLambdaRuntimeRequest RuntimeInvocationAwsRequestIdErrorPost contentType StatusResponse MimeJSON
runtimeInvocationAwsRequestIdErrorPost _ (AwsRequestId awsRequestId) =
  _mkRequest "POST" ["/runtime/invocation/",toPath awsRequestId,"/error"]

data RuntimeInvocationAwsRequestIdErrorPost
instance HasBodyParam RuntimeInvocationAwsRequestIdErrorPost Body
instance HasOptionalParam RuntimeInvocationAwsRequestIdErrorPost LambdaRuntimeFunctionErrorType where
  applyOptionalParam req (LambdaRuntimeFunctionErrorType xs) =
    req `setHeader` toHeader ("Lambda-Runtime-Function-Error-Type", xs)

-- | @*/*@
instance MimeType mtype => Consumes RuntimeInvocationAwsRequestIdErrorPost mtype

-- | @application/json@
instance Produces RuntimeInvocationAwsRequestIdErrorPost MimeJSON


-- *** runtimeInvocationAwsRequestIdResponsePost

-- | @POST \/runtime\/invocation\/{AwsRequestId}\/response@
-- 
-- Runtime makes this request in order to submit a response.
-- 
runtimeInvocationAwsRequestIdResponsePost
  :: (Consumes RuntimeInvocationAwsRequestIdResponsePost contentType)
  => ContentType contentType -- ^ request content-type ('MimeType')
  -> AwsRequestId -- ^ "awsRequestId"
  -> AWSLambdaRuntimeRequest RuntimeInvocationAwsRequestIdResponsePost contentType StatusResponse MimeJSON
runtimeInvocationAwsRequestIdResponsePost _ (AwsRequestId awsRequestId) =
  _mkRequest "POST" ["/runtime/invocation/",toPath awsRequestId,"/response"]

data RuntimeInvocationAwsRequestIdResponsePost
instance HasBodyParam RuntimeInvocationAwsRequestIdResponsePost Body

-- | @*/*@
instance MimeType mtype => Consumes RuntimeInvocationAwsRequestIdResponsePost mtype

-- | @application/json@
instance Produces RuntimeInvocationAwsRequestIdResponsePost MimeJSON


-- *** runtimeInvocationNextGet

-- | @GET \/runtime\/invocation\/next@
-- 
-- Runtime makes this HTTP request when it is ready to receive and process a new invoke. 
-- 
runtimeInvocationNextGet
  :: AWSLambdaRuntimeRequest RuntimeInvocationNextGet MimeNoContent A.Value MimeJSON
runtimeInvocationNextGet =
  _mkRequest "GET" ["/runtime/invocation/next"]

data RuntimeInvocationNextGet
-- | @application/json@
instance Produces RuntimeInvocationNextGet MimeJSON