arbiter-servant-openapi-0.1.0.0
arbiter-servant-openapi
Safe HaskellNone
LanguageGHC2024

Arbiter.Servant.OpenApi

Description

OpenAPI 3 description of ArbiterAPI. The route types define paths, methods, parameters, bodies, success responses, and the declared error responses. RegistryToAPI expands to the server route tree and includes each queue by its registry name with its payload and result schemas.

Each payload and result type requires a ToSchema instance. For generic JSON, use deriving anyclass (ToSchema). This module defines a Value instance for free-form payloads.

Synopsis

The document

openApiSpec :: forall (registry :: JobPayloadRegistry). HasOpenApi (ArbiterAPI registry) => Text -> ValueSource #

The description of a registry's API, from its route types. The version goes to info.version. The document also describes the registry's queues and payloads, so the caller owns its version.

Serving it

type OpenApiAPI = "openapi.json" :> Get '[JSON] ValueSource #

The document's own route, for mounting beside ArbiterAPI. Mount it before Arbiter.Servant.UI.AdminUI. That route is a Raw catch-all. Give the registry by type application and the document version as an argument:

type MyApp = ArbiterAPI MyRegistry :<|> OpenApiAPI :<|> AdminUI
run port $ serve (Proxy @MyApp) (arbiterServer config :<|> openApiServer @MyRegistry "1.0.0" :<|> adminUIServer)

openApiServer :: forall (registry :: JobPayloadRegistry). HasOpenApi (ArbiterAPI registry) => Text -> Server OpenApiAPISource #

Serve the description of a registry's API at a given document version.

Orphan instances

ToParamSchema JobStatus Source # 
Instance details

ToParamSchema ArchiveSortColumn Source # 
Instance details

ToParamSchema DLQSortColumn Source # 
Instance details

ToParamSchema JobSortColumn Source # 
Instance details

ToParamSchema SortDir Source # 
Instance details

ToSchema Value Source #

A caller-defined payload or result.

Instance details

ToSchema ConcurrencyKey Source # 
Instance details

ToSchema ConcurrencyKeyView Source # 
Instance details

ToSchema ConcurrencyPolicyUpdate Source # 
Instance details

ToSchema ConcurrencyPolicyView Source # 
Instance details

ToSchema CronScheduleRow Source # 
Instance details

ToSchema CronScheduleUpdate Source # 
Instance details

ToSchema PgDbHealth Source # 
Instance details

ToSchema DedupKey Source # 
Instance details

ToSchema JobStatus Source # 
Instance details

ToSchema GroupSummary Source # 
Instance details

ToSchema QueueOverview Source # 
Instance details

ToSchema QueueStats Source # 
Instance details

ToSchema QueueRow Source # 
Instance details

ToSchema RateLimitKey Source # 
Instance details

ToSchema RateLimitBucketView Source # 
Instance details

ToSchema RateLimitPolicyUpdate Source # 
Instance details

ToSchema RateLimitPolicyView Source # 
Instance details

ToSchema WorkerHealth Source # 
Instance details

ToSchema WorkerRow Source # 
Instance details

ToSchema AddTokensRequest Source # 
Instance details

ToSchema AddTokensResponse Source # 
Instance details

ToSchema AllStatsResponse Source # 
Instance details

ToSchema BatchDeleteRequest Source # 
Instance details

ToSchema BatchDeleteResponse Source # 
Instance details

ToSchema BatchRetryRequest Source # 
Instance details

ToSchema BatchRetryResponse Source # 
Instance details

ToSchema ClaimRequest Source # 
Instance details

ToSchema ConcurrencyKeysResponse Source # 
Instance details

ToSchema ConcurrencyPoliciesResponse Source # 
Instance details

ToSchema ConcurrencyReconcileResponse Source # 
Instance details

ToSchema CronScheduleView Source # 
Instance details

ToSchema CronSchedulesResponse Source # 
Instance details

ToSchema DLQRetentionRequest Source # 
Instance details

ToSchema ExtendRequest Source # 
Instance details

ToSchema GroupsResponse Source # 
Instance details

ToSchema HealthResponse Source # 
Instance details

ToSchema HealthStatus Source # 
Instance details

ToSchema JobLease Source # 
Instance details

ToSchema LivenessResponse Source # 
Instance details

ToSchema MaintenanceResponse Source # 
Instance details

ToSchema PruneResponse Source # 
Instance details

ToSchema QueuesResponse Source # 
Instance details

ToSchema RateLimitBucketsResponse Source # 
Instance details

ToSchema RateLimitPoliciesResponse Source # 
Instance details

ToSchema RateLimitResetResponse Source # 
Instance details

ToSchema RescheduleRequest Source # 
Instance details

ToSchema StatsResponse Source # 
Instance details

ToSchema WorkersResponse Source # 
Instance details

(HasOpenApi api, KnownNat status, KnownSymbol reason, ToSchema body) => HasOpenApi (Throws' status reason ('Just body) :> api :: Type) Source #

A declared error response with a JSON body.

Instance details

Methods

toOpenApi :: Proxy (Throws' status reason ('Just body) :> api) -> OpenApi#

(HasOpenApi api, KnownNat status, KnownSymbol reason) => HasOpenApi (Throws' status reason ('Nothing :: Maybe Type) :> api :: Type) Source #

A declared error response. Reasons for the same status join into one description.

Instance details

Methods

toOpenApi :: Proxy (Throws' status reason ('Nothing :: Maybe Type) :> api) -> OpenApi#

KnownNat def => ToParamSchema (PageSize def) Source # 
Instance details

Methods

toParamSchema :: Proxy (PageSize def) -> Schema#

ToSchema payload => ToSchema (ArchiveJob payload) Source # 
Instance details

ToSchema payload => ToSchema (DLQJob payload) Source # 
Instance details

ToSchema payload => ToSchema (JobRead payload) Source # 
Instance details

ToSchema payload => ToSchema (Stored payload) Source #

A stored payload documents as the payload it decodes to.

Instance details

ToSchema result => ToSchema (AckRequest result) Source #

Ack request with an optional queue result.

Instance details

ToSchema payload => ToSchema (ApiJobWithStatus payload) Source # 
Instance details

ToSchema payload => ToSchema (ApiJobWrite payload) Source # 
Instance details

ToSchema payload => ToSchema (ArchiveResponse payload) Source # 
Instance details

ToSchema payload => ToSchema (BatchInsertRequest payload) Source # 
Instance details

ToSchema payload => ToSchema (BatchInsertResponse payload) Source # 
Instance details

ToSchema payload => ToSchema (ClaimResponse payload) Source # 
Instance details

ToSchema payload => ToSchema (DLQResponse payload) Source # 
Instance details

ToSchema payload => ToSchema (JobResponse (JobRead payload)) Source # 
Instance details

ToSchema payload => ToSchema (JobResponse (ApiJobWithStatus payload)) Source # 
Instance details

ToSchema payload => ToSchema (JobsResponse payload) Source # 
Instance details

ToSchema payload => ToSchema (PayloadEdit payload) Source # 
Instance details