Module

Yoga.HTTP.API.Route.OpenAPI

Package
purescript-yoga-http-api
Repository
rowtype-yoga/purescript-yoga-http-api

#RenderHeadersSchema Source

class RenderHeadersSchema :: Row Type -> Constraintclass RenderHeadersSchema (headers :: Row Type)  where

Render headers row as OpenAPI parameter array

Members

Instances

#RenderHeadersSchemaRL Source

class RenderHeadersSchemaRL :: RowList Type -> Row Type -> Constraintclass RenderHeadersSchemaRL (rl :: RowList Type) (headers :: Row Type) | rl -> headers where

Helper class using RowList

Members

Instances

#RenderPathParamsSchema Source

class RenderPathParamsSchema :: Row Type -> Constraintclass RenderPathParamsSchema (params :: Row Type)  where

Render path parameters row as OpenAPI parameter array

Members

Instances

#RenderPathParamsSchemaRL Source

class RenderPathParamsSchemaRL :: RowList Type -> Row Type -> Constraintclass RenderPathParamsSchemaRL (rl :: RowList Type) (params :: Row Type) | rl -> params where

Helper class using RowList

Members

Instances

#RenderQueryParamsSchema Source

class RenderQueryParamsSchema :: Row Type -> Constraintclass RenderQueryParamsSchema (params :: Row Type)  where

Render query parameters row as OpenAPI parameter array

Members

Instances

#RenderQueryParamsSchemaRL Source

class RenderQueryParamsSchemaRL :: RowList Type -> Row Type -> Constraintclass RenderQueryParamsSchemaRL (rl :: RowList Type) (params :: Row Type) | rl -> params where

Helper class using RowList

Members

Instances

#RenderCookieParamsSchema Source

class RenderCookieParamsSchema :: Row Type -> Constraintclass RenderCookieParamsSchema (params :: Row Type)  where

Render cookie parameters row as OpenAPI parameter array

Members

Instances

#RenderCookieParamsSchemaRL Source

class RenderCookieParamsSchemaRL :: RowList Type -> Row Type -> Constraintclass RenderCookieParamsSchemaRL (rl :: RowList Type) (params :: Row Type) | rl -> params where

Helper class using RowList

Members

Instances

#RenderRequestBodySchema Source

class RenderRequestBodySchema (encoding :: Type)  where

Render request body schema for OpenAPI requestBody section Returns Nothing for NoBody, Just requestBody object for JSON/FormData

Members

Instances

#RenderResponseHeadersSchema Source

class RenderResponseHeadersSchema :: Row Type -> Constraintclass RenderResponseHeadersSchema (headers :: Row Type)  where

Render response headers row as OpenAPI header object (for responses section)

Members

Instances

#RenderResponseHeadersSchemaRL Source

class RenderResponseHeadersSchemaRL :: RowList Type -> Row Type -> Constraintclass RenderResponseHeadersSchemaRL (rl :: RowList Type) (headers :: Row Type) | rl -> headers where

Helper class using RowList

Members

Instances

#RenderResponseSchema Source

class RenderResponseSchema :: Row Type -> Type -> Constraintclass RenderResponseSchema (headers :: Row Type) (body :: Type)  where

Render complete response object for OpenAPI (status 200 with headers and body)

Members

Instances

#RenderVariantResponseSchema Source

class RenderVariantResponseSchema :: Row Type -> Constraintclass RenderVariantResponseSchema (variantRow :: Row Type)  where

Render variant response schema as OpenAPI responses object Maps each variant case to an HTTP status code and response object

Members

Instances

#RenderVariantResponseSchemaRL Source

class RenderVariantResponseSchemaRL :: RowList Type -> Constraintclass RenderVariantResponseSchemaRL (rl :: RowList Type)  where

Helper class that processes RowList for variant responses

Members

Instances

#RenderJSONSchema Source

class RenderJSONSchema :: forall k. k -> Constraintclass RenderJSONSchema ty  where

Render a PureScript type as an OpenAPI JSON schema

Members

Instances

#RenderRecordSchemaRL Source

class RenderRecordSchemaRL :: RowList Type -> Row Type -> Constraintclass RenderRecordSchemaRL (rl :: RowList Type) (row :: Row Type) | rl -> row where

Helper class to render record fields as OpenAPI properties

Members

Instances

#DetectSecurity Source

class DetectSecurity :: Row Type -> Constraintclass DetectSecurity (headers :: Row Type)  where

Detect security requirements in request headers Returns an array of security requirement objects (e.g., [{ bearerAuth: [] }])

Members

Instances

#DetectSecurityRL Source

class DetectSecurityRL :: RowList Type -> Constraintclass DetectSecurityRL (rl :: RowList Type)  where

Helper class using RowList to find security-related headers

Members

Instances

#DetectCookieSecurity Source

class DetectCookieSecurity :: Row Type -> Constraintclass DetectCookieSecurity (cookies :: Row Type)  where

Detect security requirements in request cookies Returns an array of security requirement objects (e.g., [{ sessionIdCookie: [] }])

Members

Instances

#ToOpenAPI Source

class ToOpenAPI (route :: Type)  where

Generate complete OpenAPI operation object for a route Note: The instance for this typeclass is defined in Route.purs since it depends on the Route type defined there

Members

#toOpenAPI Source

toOpenAPI :: forall @a. ToOpenAPI a => String

#CollectOperations Source

class CollectOperations (routes :: Type)  where

Collect OpenAPI operations from a type-level structure of routes. Use a Record to combine multiple named routes: CollectOperations { getUser :: RouteA, createUser :: RouteB }

Members

Instances

#OperationEntry Source

type OperationEntry = { method :: String, operation :: String, path :: String }

#buildOpenAPISpec Source

#buildOpenAPISpec' Source

buildOpenAPISpec' :: forall @routes. CollectOperations routes => CollectRouteSchemas routes => ValidateSchemaNames routes => OpenAPIInfoUor -> { servers :: Opt (Array ServerObject) } -> OpenAPISpec

Build a complete OpenAPI 3.0 spec with optional servers configuration.

#ServerObject Source

type ServerObject = { description :: Maybe String, url :: String }

Type for OpenAPI server object

#OpenAPISpec Source

data OpenAPISpec

Opaque type representing a complete OpenAPI specification document.

Instances

#ResponseHeaderObject Source

type ResponseHeaderObject = { deprecated :: Maybe Boolean, description :: Maybe String, example :: Maybe String, schema :: Foreign }

Response header object type with all metadata

#CollectSchemas Source

class CollectSchemas (ty :: Type)  where

Collects all Schema wrappers found in a type and returns their definitions

Members

Instances

#CollectSchemasRL Source

class CollectSchemasRL :: RowList Type -> Constraintclass CollectSchemasRL (rl :: RowList Type)  where

Helper class to collect schemas from record fields

Members

Instances

#CollectVariantSchemasRL Source

class CollectVariantSchemasRL :: RowList Type -> Constraintclass CollectVariantSchemasRL (rl :: RowList Type)  where

Collects schemas from all response bodies in a variant

Members

Instances

#CollectRouteSchemas Source

class CollectRouteSchemas (route :: Type)  where

Collects schemas from a route's request and response types

Members

Instances

#CollectRouteSchemasRL Source

class CollectRouteSchemasRL :: RowList Type -> Constraintclass CollectRouteSchemasRL (rl :: RowList Type)  where

Helper class for collecting schemas from a record of routes

Members

Instances

#CollectSchemaNames Source

class CollectSchemaNames :: Type -> Row Type -> Constraintclass CollectSchemaNames (ty :: Type) (names :: Row Type) | ty -> names

Collects schema names at the type level as a Row. Used with Row.Union + Row.Nub to detect name collisions at compile time. Two Schema wrappers with the same name but different types cause a compile error.

Instances

#CollectSchemaNamesRL Source

class CollectSchemaNamesRL :: RowList Type -> Row Type -> Constraintclass CollectSchemaNamesRL (rl :: RowList Type) (names :: Row Type) | rl -> names

Helper class to collect schema names from record fields

Instances

#CollectVariantSchemaNames Source

class CollectVariantSchemaNames :: RowList Type -> Row Type -> Constraintclass CollectVariantSchemaNames (rl :: RowList Type) (names :: Row Type) | rl -> names

Collects schema names from all response bodies in a variant

Instances

#CollectRouteSchemaNames Source

class CollectRouteSchemaNames :: Type -> Row Type -> Constraintclass CollectRouteSchemaNames (route :: Type) (names :: Row Type) | route -> names

Collects schema names from a route's request and response types

Instances

#CollectRouteSchemaNameRL Source

class CollectRouteSchemaNameRL :: RowList Type -> Row Type -> Constraintclass CollectRouteSchemaNameRL (rl :: RowList Type) (names :: Row Type) | rl -> names

Helper for collecting schema names from a record of routes

Instances

#ValidateNoDuplicatesRL Source

class ValidateNoDuplicatesRL :: RowList Type -> Row Type -> Constraintclass ValidateNoDuplicatesRL (rl :: RowList Type) (full :: Row Type) 

Walks a RowList and checks each entry against the full row. If the RowList has duplicate labels from Union, Cons will unify their types. Same name + same type: Cons succeeds. Same name + different type: Cons fails.

Instances

#ValidateSchemaNames Source

class ValidateSchemaNames (routes :: Type) 

Validates that all Schema wrappers in a route collection have unique names. Same name with same type is allowed (deduplication). Same name with different types is a compile error.

Instances