import * as S from '@effect/schema/Schema'
import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from '@effect/platform'
// Define your request schema as usual
export const SearchPostRequest = S.Struct({
collections: S.optional(S.Array(S.String)),
// ... other fields
})
.pipe(
// V-- Attach encoding metadata directly to the schema
HttpApiSchema.withEncoding({
kind: 'Json',
contentType: 'application/json',
}),
)
.annotations({ identifier: 'SearchPostRequest' })
export type SearchPostRequest = typeof SearchPostRequest.Type
// Your endpoint definition doesn't need to change
export const ApiGroupSearch = HttpApiGroup.make('Search').add(
HttpApiEndpoint.post('post', '/search')
.setPayload(SearchPostRequest)
.addSuccess(/* ... */),
)
import * as S from '@effect/schema/Schema'
import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from '@effect/platform'
// Define your request schema as usual
export const SearchPostRequest = S.Struct({
collections: S.optional(S.Array(S.String)),
// ... other fields
})
.pipe(
// V-- Attach encoding metadata directly to the schema
HttpApiSchema.withEncoding({
kind: 'Json',
contentType: 'application/json',
}),
)
.annotations({ identifier: 'SearchPostRequest' })
export type SearchPostRequest = typeof SearchPostRequest.Type
// Your endpoint definition doesn't need to change
export const ApiGroupSearch = HttpApiGroup.make('Search').add(
HttpApiEndpoint.post('post', '/search')
.setPayload(SearchPostRequest)
.addSuccess(/* ... */),
)