diff --git a/src/pages/[platform]/build-a-backend/data/custom-business-logic/index.mdx b/src/pages/[platform]/build-a-backend/data/custom-business-logic/index.mdx index af509d70506..9930698f8a9 100644 --- a/src/pages/[platform]/build-a-backend/data/custom-business-logic/index.mdx +++ b/src/pages/[platform]/build-a-backend/data/custom-business-logic/index.mdx @@ -510,6 +510,38 @@ safePrint(echoResponse.echo.content); ``` +## Supported Argument Types in Custom Operations + +Custom operations can accept different types of arguments. Understanding these options helps define flexible and well-structured APIs. + +### Defining Arguments in Custom Operations + +When defining a custom operation, you can specify arguments using different types: + +- **Scalar Fields**: Basic types such as `string`, `integer`, `float`, etc +- **Custom Types**: Define inline `customType` +- **Reference Types**: Use `a.ref()` to reference enums and custom types + +```ts title="amplify/data/resource.ts" +const schema = a.schema({ + Status: a.enum(['ACCEPTED', 'REJECTED']), + + getPost: a + .query() + .arguments({ + // scalar field + content: a.string(), + // inline custom type + config: a.customType({ + filter: a.string(), + // reference to enum + status: a.ref('Status') + }), + }) + .returns(a.string()) + .authorization(allow => [allow.authenticated()]) +}); +``` ## Async function handlers