UNPKG

@aws-amplify/graphql-api-construct

Version:

AppSync GraphQL Api Construct using Amplify GraphQL Transformer.

1,195 lines (736 loc) 180 kB
# Amplify Graphql API Construct [![View on Construct Hub](https://constructs.dev/badge?package=%40aws-amplify%2Fgraphql-api-construct)](https://constructs.dev/packages/@aws-amplify/graphql-api-construct) This package vends an L3 CDK Construct wrapping the behavior of the Amplify GraphQL Transformer. This enables quick development and interation of AppSync APIs which support the Amplify GraphQL Directives. For more information on schema modeling in GraphQL, please refer to the [amplify developer docs](https://docs.amplify.aws/cli/graphql/overview/). The primary way to use this construct is to invoke it with a provided schema (either as an inline graphql string, or as one or more `appsync.SchemaFile`) objects, and with authorization config provided. There are 5 supported methods for authorization of an AppSync API, all of which are supported by this construct. For more information on authorization rule definitions in Amplify, refer to the [authorization docs](https://docs.amplify.aws/cli/graphql/authorization-rules/). Note: currently at least one authorization rule is required, and if multiple are specified, a `defaultAuthorizationMode` must be specified on the api as well. Specified authorization modes must be a superset of those configured in the graphql schema. ## Examples ### Simple Todo List With Cognito Userpool-based Owner Authorization In this example, we create a single model, which will use `user pool` auth in order to allow logged in users to create and manage their own `todos` privately. We create a cdk App and Stack, though you may be deploying this to a custom stack, this is purely illustrative for a concise demo. We then wire this through to import a user pool which was already deployed (creating and deploying is out of scope for this example). ```ts import { App, Stack } from 'aws-cdk-lib'; import { UserPool } from 'aws-cdk-lib/aws-cognito'; import { AmplifyGraphqlApi, AmplifyGraphqlDefinition } from '@aws-amplify/graphql-api-construct'; const app = new App(); const stack = new Stack(app, 'TodoStack'); new AmplifyGraphqlApi(stack, 'TodoApp', { definition: AmplifyGraphqlDefinition.fromString(/* GraphQL */ ` type Todo @model @auth(rules: [{ allow: owner }]) { description: String! completed: Boolean } `), authorizationModes: { userPoolConfig: { userPool: UserPool.fromUserPoolId(stack, 'ImportedUserPool', '<YOUR_USER_POOL_ID>'), }, }, }); ``` ### Multiple related models, with public read access, and admin read/write access In this example, we create a two related models, which will use which logged in users in the 'Author' and 'Admin' user groups will have full access to, and customers requesting with api key will only have read permissions on. ```ts import { App, Stack } from 'aws-cdk-lib'; import { UserPool } from 'aws-cdk-lib/aws-cognito'; import { AmplifyGraphqlApi, AmplifyGraphqlDefinition } from '@aws-amplify/graphql-api-construct'; const app = new App(); const stack = new Stack(app, 'BlogStack'); new AmplifyGraphqlApi(stack, 'BlogApp', { definition: AmplifyGraphqlDefinition.fromString(/* GraphQL */ ` type Blog @model @auth(rules: [{ allow: public, operations: [read] }, { allow: groups, groups: ["Author", "Admin"] }]) { title: String! description: String posts: [Post] @hasMany } type Post @model @auth(rules: [{ allow: public, operations: [read] }, { allow: groups, groups: ["Author", "Admin"] }]) { title: String! content: [String] blog: Blog @belongsTo } `), authorizationModes: { defaultAuthorizationMode: 'API_KEY', apiKeyConfig: { description: 'Api Key for public access', expires: cdk.Duration.days(7), }, userPoolConfig: { userPool: UserPool.fromUserPoolId(stack, 'ImportedUserPool', '<YOUR_USER_POOL_ID>'), }, }, }); ``` ### Import GraphQL Schema from files, instead of inline In this example, we import the schema definition itself from one or more local files, rather than an inline graphql string. ```graphql # todo.graphql type Todo @model @auth(rules: [{ allow: owner }]) { content: String! done: Boolean } ``` ```graphql # blog.graphql type Blog @model @auth(rules: [{ allow: owner }, { allow: public, operations: [read] }]) { title: String! description: String posts: [Post] @hasMany } type Post @model @auth(rules: [{ allow: owner }, { allow: public, operations: [read] }]) { title: String! content: [String] blog: Blog @belongsTo } ``` ```ts // app.ts import { App, Stack } from 'aws-cdk-lib'; import { UserPool } from 'aws-cdk-lib/aws-cognito'; import { AmplifyGraphqlApi, AmplifyGraphqlDefinition } from '@aws-amplify/graphql-api-construct'; const app = new App(); const stack = new Stack(app, 'MultiFileStack'); new AmplifyGraphqlApi(stack, 'MultiFileDefinition', { definition: AmplifyGraphqlDefinition.fromFiles(path.join(__dirname, 'todo.graphql'), path.join(__dirname, 'blog.graphql')), authorizationModes: { defaultAuthorizationMode: 'API_KEY', apiKeyConfig: { description: 'Api Key for public access', expires: cdk.Duration.days(7), }, userPoolConfig: { userPool: UserPool.fromUserPoolId(stack, 'ImportedUserPool', '<YOUR_USER_POOL_ID>'), }, }, }); ``` # API Reference <a name="API Reference" id="api-reference"></a> ## Constructs <a name="Constructs" id="Constructs"></a> ### AmplifyGraphqlApi <a name="AmplifyGraphqlApi" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi"></a> L3 Construct which invokes the Amplify Transformer Pattern over an input Graphql Schema. This can be used to quickly define appsync apis which support full CRUD+List and Subscriptions, relationships, auth, search over data, the ability to inject custom business logic and query/mutation operations, and connect to ML services. For more information, refer to the docs links below: Data Modeling - https://docs.amplify.aws/cli/graphql/data-modeling/ Authorization - https://docs.amplify.aws/cli/graphql/authorization-rules/ Custom Business Logic - https://docs.amplify.aws/cli/graphql/custom-business-logic/ Search - https://docs.amplify.aws/cli/graphql/search-and-result-aggregations/ ML Services - https://docs.amplify.aws/cli/graphql/connect-to-machine-learning-services/ For a full reference of the supported custom graphql directives - https://docs.amplify.aws/cli/graphql/directives-reference/ The output of this construct is a mapping of L2 or L1 resources generated by the transformer, which generally follow the access pattern ```typescript const api = new AmplifyGraphQlApi(this, 'api', { <params> }); // Access L2 resources under `.resources` api.resources.tables["Todo"].tableArn; // Access L1 resources under `.resources.cfnResources` api.resources.cfnResources.cfnGraphqlApi.xrayEnabled = true; Object.values(api.resources.cfnResources.cfnTables).forEach(table => { table.pointInTimeRecoverySpecification = { pointInTimeRecoveryEnabled: false }; }); ``` `resources.<ResourceType>.<ResourceName>` - you can then perform any CDK action on these resulting resoureces. #### Initializers <a name="Initializers" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.Initializer"></a> ```typescript import { AmplifyGraphqlApi } from '@aws-amplify/graphql-api-construct' new AmplifyGraphqlApi(scope: Construct, id: string, props: AmplifyGraphqlApiProps) ``` | **Name** | **Type** | **Description** | | --- | --- | --- | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.Initializer.parameter.scope">scope</a></code> | <code>constructs.Construct</code> | the scope to create this construct within. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.Initializer.parameter.id">id</a></code> | <code>string</code> | the id to use for this api. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.Initializer.parameter.props">props</a></code> | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApiProps">AmplifyGraphqlApiProps</a></code> | the properties used to configure the generated api. | --- ##### `scope`<sup>Required</sup> <a name="scope" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.Initializer.parameter.scope"></a> - *Type:* constructs.Construct the scope to create this construct within. --- ##### `id`<sup>Required</sup> <a name="id" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.Initializer.parameter.id"></a> - *Type:* string the id to use for this api. --- ##### `props`<sup>Required</sup> <a name="props" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.Initializer.parameter.props"></a> - *Type:* <a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApiProps">AmplifyGraphqlApiProps</a> the properties used to configure the generated api. --- #### Methods <a name="Methods" id="Methods"></a> | **Name** | **Description** | | --- | --- | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.toString">toString</a></code> | Returns a string representation of this construct. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addDynamoDbDataSource">addDynamoDbDataSource</a></code> | Add a new DynamoDB data source to this API. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addElasticsearchDataSource">addElasticsearchDataSource</a></code> | Add a new elasticsearch data source to this API. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addEventBridgeDataSource">addEventBridgeDataSource</a></code> | Add an EventBridge data source to this api. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addFunction">addFunction</a></code> | Add an appsync function to the api. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addHttpDataSource">addHttpDataSource</a></code> | Add a new http data source to this API. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addLambdaDataSource">addLambdaDataSource</a></code> | Add a new Lambda data source to this API. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addNoneDataSource">addNoneDataSource</a></code> | Add a new dummy data source to this API. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addOpenSearchDataSource">addOpenSearchDataSource</a></code> | dd a new OpenSearch data source to this API. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addRdsDataSource">addRdsDataSource</a></code> | Add a new Rds data source to this API. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addResolver">addResolver</a></code> | Add a resolver to the api. | --- ##### `toString` <a name="toString" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.toString"></a> ```typescript public toString(): string ``` Returns a string representation of this construct. ##### `addDynamoDbDataSource` <a name="addDynamoDbDataSource" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addDynamoDbDataSource"></a> ```typescript public addDynamoDbDataSource(id: string, table: ITable, options?: DataSourceOptions): DynamoDbDataSource ``` Add a new DynamoDB data source to this API. This is a proxy method to the L2 GraphqlApi Construct. ###### `id`<sup>Required</sup> <a name="id" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addDynamoDbDataSource.parameter.id"></a> - *Type:* string The data source's id. --- ###### `table`<sup>Required</sup> <a name="table" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addDynamoDbDataSource.parameter.table"></a> - *Type:* aws-cdk-lib.aws_dynamodb.ITable The DynamoDB table backing this data source. --- ###### `options`<sup>Optional</sup> <a name="options" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addDynamoDbDataSource.parameter.options"></a> - *Type:* aws-cdk-lib.aws_appsync.DataSourceOptions The optional configuration for this data source. --- ##### ~~`addElasticsearchDataSource`~~ <a name="addElasticsearchDataSource" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addElasticsearchDataSource"></a> ```typescript public addElasticsearchDataSource(id: string, domain: IDomain, options?: DataSourceOptions): ElasticsearchDataSource ``` Add a new elasticsearch data source to this API. This is a proxy method to the L2 GraphqlApi Construct. ###### `id`<sup>Required</sup> <a name="id" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addElasticsearchDataSource.parameter.id"></a> - *Type:* string The data source's id. --- ###### `domain`<sup>Required</sup> <a name="domain" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addElasticsearchDataSource.parameter.domain"></a> - *Type:* aws-cdk-lib.aws_elasticsearch.IDomain The elasticsearch domain for this data source. --- ###### `options`<sup>Optional</sup> <a name="options" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addElasticsearchDataSource.parameter.options"></a> - *Type:* aws-cdk-lib.aws_appsync.DataSourceOptions The optional configuration for this data source. --- ##### `addEventBridgeDataSource` <a name="addEventBridgeDataSource" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addEventBridgeDataSource"></a> ```typescript public addEventBridgeDataSource(id: string, eventBus: IEventBus, options?: DataSourceOptions): EventBridgeDataSource ``` Add an EventBridge data source to this api. This is a proxy method to the L2 GraphqlApi Construct. ###### `id`<sup>Required</sup> <a name="id" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addEventBridgeDataSource.parameter.id"></a> - *Type:* string The data source's id. --- ###### `eventBus`<sup>Required</sup> <a name="eventBus" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addEventBridgeDataSource.parameter.eventBus"></a> - *Type:* aws-cdk-lib.aws_events.IEventBus The EventBridge EventBus on which to put events. --- ###### `options`<sup>Optional</sup> <a name="options" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addEventBridgeDataSource.parameter.options"></a> - *Type:* aws-cdk-lib.aws_appsync.DataSourceOptions The optional configuration for this data source. --- ##### `addFunction` <a name="addFunction" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addFunction"></a> ```typescript public addFunction(id: string, props: AddFunctionProps): AppsyncFunction ``` Add an appsync function to the api. ###### `id`<sup>Required</sup> <a name="id" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addFunction.parameter.id"></a> - *Type:* string the function's id. --- ###### `props`<sup>Required</sup> <a name="props" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addFunction.parameter.props"></a> - *Type:* <a href="#@aws-amplify/graphql-api-construct.AddFunctionProps">AddFunctionProps</a> --- ##### `addHttpDataSource` <a name="addHttpDataSource" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addHttpDataSource"></a> ```typescript public addHttpDataSource(id: string, endpoint: string, options?: HttpDataSourceOptions): HttpDataSource ``` Add a new http data source to this API. This is a proxy method to the L2 GraphqlApi Construct. ###### `id`<sup>Required</sup> <a name="id" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addHttpDataSource.parameter.id"></a> - *Type:* string The data source's id. --- ###### `endpoint`<sup>Required</sup> <a name="endpoint" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addHttpDataSource.parameter.endpoint"></a> - *Type:* string The http endpoint. --- ###### `options`<sup>Optional</sup> <a name="options" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addHttpDataSource.parameter.options"></a> - *Type:* aws-cdk-lib.aws_appsync.HttpDataSourceOptions The optional configuration for this data source. --- ##### `addLambdaDataSource` <a name="addLambdaDataSource" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addLambdaDataSource"></a> ```typescript public addLambdaDataSource(id: string, lambdaFunction: IFunction, options?: DataSourceOptions): LambdaDataSource ``` Add a new Lambda data source to this API. This is a proxy method to the L2 GraphqlApi Construct. ###### `id`<sup>Required</sup> <a name="id" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addLambdaDataSource.parameter.id"></a> - *Type:* string The data source's id. --- ###### `lambdaFunction`<sup>Required</sup> <a name="lambdaFunction" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addLambdaDataSource.parameter.lambdaFunction"></a> - *Type:* aws-cdk-lib.aws_lambda.IFunction The Lambda function to call to interact with this data source. --- ###### `options`<sup>Optional</sup> <a name="options" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addLambdaDataSource.parameter.options"></a> - *Type:* aws-cdk-lib.aws_appsync.DataSourceOptions The optional configuration for this data source. --- ##### `addNoneDataSource` <a name="addNoneDataSource" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addNoneDataSource"></a> ```typescript public addNoneDataSource(id: string, options?: DataSourceOptions): NoneDataSource ``` Add a new dummy data source to this API. This is a proxy method to the L2 GraphqlApi Construct. Useful for pipeline resolvers and for backend changes that don't require a data source. ###### `id`<sup>Required</sup> <a name="id" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addNoneDataSource.parameter.id"></a> - *Type:* string The data source's id. --- ###### `options`<sup>Optional</sup> <a name="options" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addNoneDataSource.parameter.options"></a> - *Type:* aws-cdk-lib.aws_appsync.DataSourceOptions The optional configuration for this data source. --- ##### `addOpenSearchDataSource` <a name="addOpenSearchDataSource" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addOpenSearchDataSource"></a> ```typescript public addOpenSearchDataSource(id: string, domain: IDomain, options?: DataSourceOptions): OpenSearchDataSource ``` dd a new OpenSearch data source to this API. This is a proxy method to the L2 GraphqlApi Construct. ###### `id`<sup>Required</sup> <a name="id" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addOpenSearchDataSource.parameter.id"></a> - *Type:* string The data source's id. --- ###### `domain`<sup>Required</sup> <a name="domain" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addOpenSearchDataSource.parameter.domain"></a> - *Type:* aws-cdk-lib.aws_opensearchservice.IDomain The OpenSearch domain for this data source. --- ###### `options`<sup>Optional</sup> <a name="options" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addOpenSearchDataSource.parameter.options"></a> - *Type:* aws-cdk-lib.aws_appsync.DataSourceOptions The optional configuration for this data source. --- ##### `addRdsDataSource` <a name="addRdsDataSource" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addRdsDataSource"></a> ```typescript public addRdsDataSource(id: string, serverlessCluster: IServerlessCluster, secretStore: ISecret, databaseName?: string, options?: DataSourceOptions): RdsDataSource ``` Add a new Rds data source to this API. This is a proxy method to the L2 GraphqlApi Construct. ###### `id`<sup>Required</sup> <a name="id" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addRdsDataSource.parameter.id"></a> - *Type:* string The data source's id. --- ###### `serverlessCluster`<sup>Required</sup> <a name="serverlessCluster" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addRdsDataSource.parameter.serverlessCluster"></a> - *Type:* aws-cdk-lib.aws_rds.IServerlessCluster The serverless cluster to interact with this data source. --- ###### `secretStore`<sup>Required</sup> <a name="secretStore" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addRdsDataSource.parameter.secretStore"></a> - *Type:* aws-cdk-lib.aws_secretsmanager.ISecret The secret store that contains the username and password for the serverless cluster. --- ###### `databaseName`<sup>Optional</sup> <a name="databaseName" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addRdsDataSource.parameter.databaseName"></a> - *Type:* string The optional name of the database to use within the cluster. --- ###### `options`<sup>Optional</sup> <a name="options" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addRdsDataSource.parameter.options"></a> - *Type:* aws-cdk-lib.aws_appsync.DataSourceOptions The optional configuration for this data source. --- ##### `addResolver` <a name="addResolver" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addResolver"></a> ```typescript public addResolver(id: string, props: ExtendedResolverProps): Resolver ``` Add a resolver to the api. This is a proxy method to the L2 GraphqlApi Construct. ###### `id`<sup>Required</sup> <a name="id" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addResolver.parameter.id"></a> - *Type:* string The resolver's id. --- ###### `props`<sup>Required</sup> <a name="props" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.addResolver.parameter.props"></a> - *Type:* aws-cdk-lib.aws_appsync.ExtendedResolverProps the resolver properties. --- #### Static Functions <a name="Static Functions" id="Static Functions"></a> | **Name** | **Description** | | --- | --- | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.isConstruct">isConstruct</a></code> | Checks if `x` is a construct. | --- ##### ~~`isConstruct`~~ <a name="isConstruct" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.isConstruct"></a> ```typescript import { AmplifyGraphqlApi } from '@aws-amplify/graphql-api-construct' AmplifyGraphqlApi.isConstruct(x: any) ``` Checks if `x` is a construct. ###### `x`<sup>Required</sup> <a name="x" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.isConstruct.parameter.x"></a> - *Type:* any Any object. --- #### Properties <a name="Properties" id="Properties"></a> | **Name** | **Type** | **Description** | | --- | --- | --- | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.property.node">node</a></code> | <code>constructs.Node</code> | The tree node. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.property.apiId">apiId</a></code> | <code>string</code> | Generated Api Id. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.property.generatedFunctionSlots">generatedFunctionSlots</a></code> | <code><a href="#@aws-amplify/graphql-api-construct.MutationFunctionSlot">MutationFunctionSlot</a> \| <a href="#@aws-amplify/graphql-api-construct.QueryFunctionSlot">QueryFunctionSlot</a> \| <a href="#@aws-amplify/graphql-api-construct.SubscriptionFunctionSlot">SubscriptionFunctionSlot</a>[]</code> | Resolvers generated by the transform process, persisted on the side in order to facilitate pulling a manifest for the purposes of inspecting and producing overrides. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.property.graphqlUrl">graphqlUrl</a></code> | <code>string</code> | Graphql URL For the generated API. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.property.realtimeUrl">realtimeUrl</a></code> | <code>string</code> | Realtime URL For the generated API. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.property.resources">resources</a></code> | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApiResources">AmplifyGraphqlApiResources</a></code> | Generated L1 and L2 CDK resources. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.property.apiKey">apiKey</a></code> | <code>string</code> | Generated Api Key if generated. | --- ##### `node`<sup>Required</sup> <a name="node" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.property.node"></a> ```typescript public readonly node: Node; ``` - *Type:* constructs.Node The tree node. --- ##### `apiId`<sup>Required</sup> <a name="apiId" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.property.apiId"></a> ```typescript public readonly apiId: string; ``` - *Type:* string Generated Api Id. May be a CDK Token. --- ##### `generatedFunctionSlots`<sup>Required</sup> <a name="generatedFunctionSlots" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.property.generatedFunctionSlots"></a> ```typescript public readonly generatedFunctionSlots: MutationFunctionSlot | QueryFunctionSlot | SubscriptionFunctionSlot[]; ``` - *Type:* <a href="#@aws-amplify/graphql-api-construct.MutationFunctionSlot">MutationFunctionSlot</a> | <a href="#@aws-amplify/graphql-api-construct.QueryFunctionSlot">QueryFunctionSlot</a> | <a href="#@aws-amplify/graphql-api-construct.SubscriptionFunctionSlot">SubscriptionFunctionSlot</a>[] Resolvers generated by the transform process, persisted on the side in order to facilitate pulling a manifest for the purposes of inspecting and producing overrides. --- ##### `graphqlUrl`<sup>Required</sup> <a name="graphqlUrl" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.property.graphqlUrl"></a> ```typescript public readonly graphqlUrl: string; ``` - *Type:* string Graphql URL For the generated API. May be a CDK Token. --- ##### `realtimeUrl`<sup>Required</sup> <a name="realtimeUrl" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.property.realtimeUrl"></a> ```typescript public readonly realtimeUrl: string; ``` - *Type:* string Realtime URL For the generated API. May be a CDK Token. --- ##### `resources`<sup>Required</sup> <a name="resources" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.property.resources"></a> ```typescript public readonly resources: AmplifyGraphqlApiResources; ``` - *Type:* <a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApiResources">AmplifyGraphqlApiResources</a> Generated L1 and L2 CDK resources. --- ##### `apiKey`<sup>Optional</sup> <a name="apiKey" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApi.property.apiKey"></a> ```typescript public readonly apiKey: string; ``` - *Type:* string Generated Api Key if generated. May be a CDK Token. --- ## Structs <a name="Structs" id="Structs"></a> ### AddFunctionProps <a name="AddFunctionProps" id="@aws-amplify/graphql-api-construct.AddFunctionProps"></a> Input type properties when adding a new appsync.AppsyncFunction to the generated API. This is equivalent to the Omit<appsync.AppsyncFunctionProps, 'api'>. #### Initializer <a name="Initializer" id="@aws-amplify/graphql-api-construct.AddFunctionProps.Initializer"></a> ```typescript import { AddFunctionProps } from '@aws-amplify/graphql-api-construct' const addFunctionProps: AddFunctionProps = { ... } ``` #### Properties <a name="Properties" id="Properties"></a> | **Name** | **Type** | **Description** | | --- | --- | --- | | <code><a href="#@aws-amplify/graphql-api-construct.AddFunctionProps.property.dataSource">dataSource</a></code> | <code>aws-cdk-lib.aws_appsync.BaseDataSource</code> | the data source linked to this AppSync Function. | | <code><a href="#@aws-amplify/graphql-api-construct.AddFunctionProps.property.name">name</a></code> | <code>string</code> | the name of the AppSync Function. | | <code><a href="#@aws-amplify/graphql-api-construct.AddFunctionProps.property.code">code</a></code> | <code>aws-cdk-lib.aws_appsync.Code</code> | The function code. | | <code><a href="#@aws-amplify/graphql-api-construct.AddFunctionProps.property.description">description</a></code> | <code>string</code> | the description for this AppSync Function. | | <code><a href="#@aws-amplify/graphql-api-construct.AddFunctionProps.property.requestMappingTemplate">requestMappingTemplate</a></code> | <code>aws-cdk-lib.aws_appsync.MappingTemplate</code> | the request mapping template for the AppSync Function. | | <code><a href="#@aws-amplify/graphql-api-construct.AddFunctionProps.property.responseMappingTemplate">responseMappingTemplate</a></code> | <code>aws-cdk-lib.aws_appsync.MappingTemplate</code> | the response mapping template for the AppSync Function. | | <code><a href="#@aws-amplify/graphql-api-construct.AddFunctionProps.property.runtime">runtime</a></code> | <code>aws-cdk-lib.aws_appsync.FunctionRuntime</code> | The functions runtime. | --- ##### `dataSource`<sup>Required</sup> <a name="dataSource" id="@aws-amplify/graphql-api-construct.AddFunctionProps.property.dataSource"></a> ```typescript public readonly dataSource: BaseDataSource; ``` - *Type:* aws-cdk-lib.aws_appsync.BaseDataSource the data source linked to this AppSync Function. --- ##### `name`<sup>Required</sup> <a name="name" id="@aws-amplify/graphql-api-construct.AddFunctionProps.property.name"></a> ```typescript public readonly name: string; ``` - *Type:* string the name of the AppSync Function. --- ##### `code`<sup>Optional</sup> <a name="code" id="@aws-amplify/graphql-api-construct.AddFunctionProps.property.code"></a> ```typescript public readonly code: Code; ``` - *Type:* aws-cdk-lib.aws_appsync.Code - *Default:* no code is used The function code. --- ##### `description`<sup>Optional</sup> <a name="description" id="@aws-amplify/graphql-api-construct.AddFunctionProps.property.description"></a> ```typescript public readonly description: string; ``` - *Type:* string - *Default:* no description the description for this AppSync Function. --- ##### `requestMappingTemplate`<sup>Optional</sup> <a name="requestMappingTemplate" id="@aws-amplify/graphql-api-construct.AddFunctionProps.property.requestMappingTemplate"></a> ```typescript public readonly requestMappingTemplate: MappingTemplate; ``` - *Type:* aws-cdk-lib.aws_appsync.MappingTemplate - *Default:* no request mapping template the request mapping template for the AppSync Function. --- ##### `responseMappingTemplate`<sup>Optional</sup> <a name="responseMappingTemplate" id="@aws-amplify/graphql-api-construct.AddFunctionProps.property.responseMappingTemplate"></a> ```typescript public readonly responseMappingTemplate: MappingTemplate; ``` - *Type:* aws-cdk-lib.aws_appsync.MappingTemplate - *Default:* no response mapping template the response mapping template for the AppSync Function. --- ##### `runtime`<sup>Optional</sup> <a name="runtime" id="@aws-amplify/graphql-api-construct.AddFunctionProps.property.runtime"></a> ```typescript public readonly runtime: FunctionRuntime; ``` - *Type:* aws-cdk-lib.aws_appsync.FunctionRuntime - *Default:* no function runtime, VTL mapping templates used The functions runtime. --- ### AmplifyDynamoDbModelDataSourceStrategy <a name="AmplifyDynamoDbModelDataSourceStrategy" id="@aws-amplify/graphql-api-construct.AmplifyDynamoDbModelDataSourceStrategy"></a> Use custom resource type 'Custom::AmplifyDynamoDBTable' to provision table. #### Initializer <a name="Initializer" id="@aws-amplify/graphql-api-construct.AmplifyDynamoDbModelDataSourceStrategy.Initializer"></a> ```typescript import { AmplifyDynamoDbModelDataSourceStrategy } from '@aws-amplify/graphql-api-construct' const amplifyDynamoDbModelDataSourceStrategy: AmplifyDynamoDbModelDataSourceStrategy = { ... } ``` #### Properties <a name="Properties" id="Properties"></a> | **Name** | **Type** | **Description** | | --- | --- | --- | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyDynamoDbModelDataSourceStrategy.property.dbType">dbType</a></code> | <code>string</code> | *No description.* | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyDynamoDbModelDataSourceStrategy.property.provisionStrategy">provisionStrategy</a></code> | <code>string</code> | *No description.* | --- ##### `dbType`<sup>Required</sup> <a name="dbType" id="@aws-amplify/graphql-api-construct.AmplifyDynamoDbModelDataSourceStrategy.property.dbType"></a> ```typescript public readonly dbType: string; ``` - *Type:* string --- ##### `provisionStrategy`<sup>Required</sup> <a name="provisionStrategy" id="@aws-amplify/graphql-api-construct.AmplifyDynamoDbModelDataSourceStrategy.property.provisionStrategy"></a> ```typescript public readonly provisionStrategy: string; ``` - *Type:* string --- ### AmplifyGraphqlApiCfnResources <a name="AmplifyGraphqlApiCfnResources" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApiCfnResources"></a> L1 CDK resources from the Api which were generated as part of the transform. These are potentially stored under nested stacks, but presented organized by type instead. #### Initializer <a name="Initializer" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApiCfnResources.Initializer"></a> ```typescript import { AmplifyGraphqlApiCfnResources } from '@aws-amplify/graphql-api-construct' const amplifyGraphqlApiCfnResources: AmplifyGraphqlApiCfnResources = { ... } ``` #### Properties <a name="Properties" id="Properties"></a> | **Name** | **Type** | **Description** | | --- | --- | --- | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApiCfnResources.property.additionalCfnResources">additionalCfnResources</a></code> | <code>{[ key: string ]: aws-cdk-lib.CfnResource}</code> | Remaining L1 resources generated, keyed by logicalId. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApiCfnResources.property.amplifyDynamoDbTables">amplifyDynamoDbTables</a></code> | <code>{[ key: string ]: <a href="#@aws-amplify/graphql-api-construct.AmplifyDynamoDbTableWrapper">AmplifyDynamoDbTableWrapper</a>}</code> | The Generated Amplify DynamoDb Table L1 resource wrapper, keyed by model type name. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApiCfnResources.property.cfnDataSources">cfnDataSources</a></code> | <code>{[ key: string ]: aws-cdk-lib.aws_appsync.CfnDataSource}</code> | The Generated AppSync DataSource L1 Resources, keyed by logicalId. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApiCfnResources.property.cfnFunctionConfigurations">cfnFunctionConfigurations</a></code> | <code>{[ key: string ]: aws-cdk-lib.aws_appsync.CfnFunctionConfiguration}</code> | The Generated AppSync Function L1 Resources, keyed by logicalId. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApiCfnResources.property.cfnFunctions">cfnFunctions</a></code> | <code>{[ key: string ]: aws-cdk-lib.aws_lambda.CfnFunction}</code> | The Generated Lambda Function L1 Resources, keyed by function name. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApiCfnResources.property.cfnGraphqlApi">cfnGraphqlApi</a></code> | <code>aws-cdk-lib.aws_appsync.CfnGraphQLApi</code> | The Generated AppSync Api L1 Resource. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApiCfnResources.property.cfnGraphqlSchema">cfnGraphqlSchema</a></code> | <code>aws-cdk-lib.aws_appsync.CfnGraphQLSchema</code> | The Generated AppSync Schema L1 Resource. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApiCfnResources.property.cfnResolvers">cfnResolvers</a></code> | <code>{[ key: string ]: aws-cdk-lib.aws_appsync.CfnResolver}</code> | The Generated AppSync Resolver L1 Resources, keyed by logicalId. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApiCfnResources.property.cfnRoles">cfnRoles</a></code> | <code>{[ key: string ]: aws-cdk-lib.aws_iam.CfnRole}</code> | The Generated IAM Role L1 Resources, keyed by logicalId. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApiCfnResources.property.cfnTables">cfnTables</a></code> | <code>{[ key: string ]: aws-cdk-lib.aws_dynamodb.CfnTable}</code> | The Generated DynamoDB Table L1 Resources, keyed by logicalId. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApiCfnResources.property.cfnApiKey">cfnApiKey</a></code> | <code>aws-cdk-lib.aws_appsync.CfnApiKey</code> | The Generated AppSync Api Key L1 Resource. | --- ##### `additionalCfnResources`<sup>Required</sup> <a name="additionalCfnResources" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApiCfnResources.property.additionalCfnResources"></a> ```typescript public readonly additionalCfnResources: {[ key: string ]: CfnResource}; ``` - *Type:* {[ key: string ]: aws-cdk-lib.CfnResource} Remaining L1 resources generated, keyed by logicalId. --- ##### `amplifyDynamoDbTables`<sup>Required</sup> <a name="amplifyDynamoDbTables" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApiCfnResources.property.amplifyDynamoDbTables"></a> ```typescript public readonly amplifyDynamoDbTables: {[ key: string ]: AmplifyDynamoDbTableWrapper}; ``` - *Type:* {[ key: string ]: <a href="#@aws-amplify/graphql-api-construct.AmplifyDynamoDbTableWrapper">AmplifyDynamoDbTableWrapper</a>} The Generated Amplify DynamoDb Table L1 resource wrapper, keyed by model type name. --- ##### `cfnDataSources`<sup>Required</sup> <a name="cfnDataSources" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApiCfnResources.property.cfnDataSources"></a> ```typescript public readonly cfnDataSources: {[ key: string ]: CfnDataSource}; ``` - *Type:* {[ key: string ]: aws-cdk-lib.aws_appsync.CfnDataSource} The Generated AppSync DataSource L1 Resources, keyed by logicalId. --- ##### `cfnFunctionConfigurations`<sup>Required</sup> <a name="cfnFunctionConfigurations" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApiCfnResources.property.cfnFunctionConfigurations"></a> ```typescript public readonly cfnFunctionConfigurations: {[ key: string ]: CfnFunctionConfiguration}; ``` - *Type:* {[ key: string ]: aws-cdk-lib.aws_appsync.CfnFunctionConfiguration} The Generated AppSync Function L1 Resources, keyed by logicalId. --- ##### `cfnFunctions`<sup>Required</sup> <a name="cfnFunctions" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApiCfnResources.property.cfnFunctions"></a> ```typescript public readonly cfnFunctions: {[ key: string ]: CfnFunction}; ``` - *Type:* {[ key: string ]: aws-cdk-lib.aws_lambda.CfnFunction} The Generated Lambda Function L1 Resources, keyed by function name. --- ##### `cfnGraphqlApi`<sup>Required</sup> <a name="cfnGraphqlApi" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApiCfnResources.property.cfnGraphqlApi"></a> ```typescript public readonly cfnGraphqlApi: CfnGraphQLApi; ``` - *Type:* aws-cdk-lib.aws_appsync.CfnGraphQLApi The Generated AppSync Api L1 Resource. --- ##### `cfnGraphqlSchema`<sup>Required</sup> <a name="cfnGraphqlSchema" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApiCfnResources.property.cfnGraphqlSchema"></a> ```typescript public readonly cfnGraphqlSchema: CfnGraphQLSchema; ``` - *Type:* aws-cdk-lib.aws_appsync.CfnGraphQLSchema The Generated AppSync Schema L1 Resource. --- ##### `cfnResolvers`<sup>Required</sup> <a name="cfnResolvers" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApiCfnResources.property.cfnResolvers"></a> ```typescript public readonly cfnResolvers: {[ key: string ]: CfnResolver}; ``` - *Type:* {[ key: string ]: aws-cdk-lib.aws_appsync.CfnResolver} The Generated AppSync Resolver L1 Resources, keyed by logicalId. --- ##### `cfnRoles`<sup>Required</sup> <a name="cfnRoles" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApiCfnResources.property.cfnRoles"></a> ```typescript public readonly cfnRoles: {[ key: string ]: CfnRole}; ``` - *Type:* {[ key: string ]: aws-cdk-lib.aws_iam.CfnRole} The Generated IAM Role L1 Resources, keyed by logicalId. --- ##### `cfnTables`<sup>Required</sup> <a name="cfnTables" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApiCfnResources.property.cfnTables"></a> ```typescript public readonly cfnTables: {[ key: string ]: CfnTable}; ``` - *Type:* {[ key: string ]: aws-cdk-lib.aws_dynamodb.CfnTable} The Generated DynamoDB Table L1 Resources, keyed by logicalId. --- ##### `cfnApiKey`<sup>Optional</sup> <a name="cfnApiKey" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApiCfnResources.property.cfnApiKey"></a> ```typescript public readonly cfnApiKey: CfnApiKey; ``` - *Type:* aws-cdk-lib.aws_appsync.CfnApiKey The Generated AppSync Api Key L1 Resource. --- ### AmplifyGraphqlApiProps <a name="AmplifyGraphqlApiProps" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApiProps"></a> Input props for the AmplifyGraphqlApi construct. Specifies what the input to transform into an Api, and configurations for the transformation process. #### Initializer <a name="Initializer" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApiProps.Initializer"></a> ```typescript import { AmplifyGraphqlApiProps } from '@aws-amplify/graphql-api-construct' const amplifyGraphqlApiProps: AmplifyGraphqlApiProps = { ... } ``` #### Properties <a name="Properties" id="Properties"></a> | **Name** | **Type** | **Description** | | --- | --- | --- | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApiProps.property.authorizationModes">authorizationModes</a></code> | <code><a href="#@aws-amplify/graphql-api-construct.AuthorizationModes">AuthorizationModes</a></code> | Required auth modes for the Api. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApiProps.property.definition">definition</a></code> | <code><a href="#@aws-amplify/graphql-api-construct.IAmplifyGraphqlDefinition">IAmplifyGraphqlDefinition</a></code> | The definition to transform in a full Api. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApiProps.property.apiName">apiName</a></code> | <code>string</code> | Name to be used for the AppSync Api. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApiProps.property.conflictResolution">conflictResolution</a></code> | <code><a href="#@aws-amplify/graphql-api-construct.ConflictResolution">ConflictResolution</a></code> | Configure conflict resolution on the Api, which is required to enable DataStore Api functionality. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApiProps.property.dataStoreConfiguration">dataStoreConfiguration</a></code> | <code><a href="#@aws-amplify/graphql-api-construct.DataStoreConfiguration">DataStoreConfiguration</a></code> | Configure DataStore conflict resolution on the Api. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApiProps.property.disableOutputStorage">disableOutputStorage</a></code> | <code>boolean</code> | Disables storing construct output. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApiProps.property.functionNameMap">functionNameMap</a></code> | <code>{[ key: string ]: aws-cdk-lib.aws_lambda.IFunction}</code> | Lambda functions referenced in the definitions's. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApiProps.property.functionSlots">functionSlots</a></code> | <code><a href="#@aws-amplify/graphql-api-construct.MutationFunctionSlot">MutationFunctionSlot</a> \| <a href="#@aws-amplify/graphql-api-construct.QueryFunctionSlot">QueryFunctionSlot</a> \| <a href="#@aws-amplify/graphql-api-construct.SubscriptionFunctionSlot">SubscriptionFunctionSlot</a>[]</code> | Overrides for a given slot in the generated resolver pipelines. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApiProps.property.outputStorageStrategy">outputStorageStrategy</a></code> | <code><a href="#@aws-amplify/graphql-api-construct.IBackendOutputStorageStrategy">IBackendOutputStorageStrategy</a></code> | Strategy to store construct outputs. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApiProps.property.predictionsBucket">predictionsBucket</a></code> | <code>aws-cdk-lib.aws_s3.IBucket</code> | If using predictions, a bucket must be provided which will be used to search for assets. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApiProps.property.stackMappings">stackMappings</a></code> | <code>{[ key: string ]: string}</code> | StackMappings override the assigned nested stack on a per-resource basis. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApiProps.property.transformerPlugins">transformerPlugins</a></code> | <code>any[]</code> | Provide a list of additional custom transformers which are injected into the transform process. | | <code><a href="#@aws-amplify/graphql-api-construct.AmplifyGraphqlApiProps.property.translationBehavior">translationBehavior</a></code> | <code><a href="#@aws-amplify/graphql-api-construct.PartialTranslationBehavior">PartialTranslationBehavior</a></code> | This replaces feature flags from the Api construct, for general information on what these parameters do, refer to https://docs.amplify.aws/cli/reference/feature-flags/#graphQLTransformer. | --- ##### `authorizationModes`<sup>Required</sup> <a name="authorizationModes" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApiProps.property.authorizationModes"></a> ```typescript public readonly authorizationModes: AuthorizationModes; ``` - *Type:* <a href="#@aws-amplify/graphql-api-construct.AuthorizationModes">AuthorizationModes</a> Required auth modes for the Api. This object must be a superset of the configured auth providers in the Api definition. For more information, refer to https://docs.amplify.aws/cli/graphql/authorization-rules/ --- ##### `definition`<sup>Required</sup> <a name="definition" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApiProps.property.definition"></a> ```typescript public readonly definition: IAmplifyGraphqlDefinition; ``` - *Type:* <a href="#@aws-amplify/graphql-api-construct.IAmplifyGraphqlDefinition">IAmplifyGraphqlDefinition</a> The definition to transform in a full Api. Can be constructed via the AmplifyGraphqlDefinition class. --- ##### `apiName`<sup>Optional</sup> <a name="apiName" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApiProps.property.apiName"></a> ```typescript public readonly apiName: string; ``` - *Type:* string Name to be used for the AppSync Api. Default: construct id. --- ##### ~~`conflictResolution`~~<sup>Optional</sup> <a name="conflictResolution" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApiProps.property.conflictResolution"></a> - *Deprecated:* use dataStoreConfiguration instead. ```typescript public readonly conflictResolution: ConflictResolution; ``` - *Type:* <a href="#@aws-amplify/graphql-api-construct.ConflictResolution">ConflictResolution</a> Configure conflict resolution on the Api, which is required to enable DataStore Api functionality. For more information, refer to https://docs.amplify.aws/lib/datastore/getting-started/q/platform/js/ --- ##### `dataStoreConfiguration`<sup>Optional</sup> <a name="dataStoreConfiguration" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApiProps.property.dataStoreConfiguration"></a> ```typescript public readonly dataStoreConfiguration: DataStoreConfiguration; ``` - *Type:* <a href="#@aws-amplify/graphql-api-construct.DataStoreConfiguration">DataStoreConfiguration</a> Configure DataStore conflict resolution on the Api. Conflict resolution is required to enable DataStore Api functionality. For more information, refer to https://docs.amplify.aws/lib/datastore/getting-started/q/platform/js/ --- ##### `disableOutputStorage`<sup>Optional</sup> <a name="disableOutputStorage" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApiProps.property.disableOutputStorage"></a> ```typescript public readonly disableOutputStorage: boolean; ``` - *Type:* boolean Disables storing construct output. Output storage should be disabled when creating multiple GraphQL APIs in a single CDK synthesis. outputStorageStrategy will be ignored if this is set to true. --- ##### `functionNameMap`<sup>Optional</sup> <a name="functionNameMap" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApiProps.property.functionNameMap"></a> ```typescript public readonly functionNameMap: {[ key: string ]: IFunction}; ``` - *Type:* {[ key: string ]: aws-cdk-lib.aws_lambda.IFunction} Lambda functions referenced in the definitions's. --- ##### `functionSlots`<sup>Optional</sup> <a name="functionSlots" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApiProps.property.functionSlots"></a> ```typescript public readonly functionSlots: MutationFunctionSlot | QueryFunctionSlot | SubscriptionFunctionSlot[]; ``` - *Type:* <a href="#@aws-amplify/graphql-api-construct.MutationFunctionSlot">MutationFunctionSlot</a> | <a href="#@aws-amplify/graphql-api-construct.QueryFunctionSlot">QueryFunctionSlot</a> | <a href="#@aws-amplify/graphql-api-construct.SubscriptionFunctionSlot">SubscriptionFunctionSlot</a>[] Overrides for a given slot in the generated resolver pipelines. For more information about what slots are available, refer to https://docs.amplify.aws/cli/graphql/custom-business-logic/#override-amplify-generated-resolvers. --- ##### `outputStorageStrategy`<sup>Optional</sup> <a name="outputStorageStrategy" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApiProps.property.outputStorageStrategy"></a> ```typescript public readonly outputStorageStrategy: IBackendOutputStorageStrategy; ``` - *Type:* <a href="#@aws-amplify/graphql-api-construct.IBackendOutputStorageStrategy">IBackendOutputStorageStrategy</a> Strategy to store construct outputs. If no outputStorageStrategey is provided a default strategy will be used. --- ##### `predictionsBucket`<sup>Optional</sup> <a name="predictionsBucket" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApiProps.property.predictionsBucket"></a> ```typescript public readonly predictionsBucket: IBucket; ``` - *Type:* aws-cdk-lib.aws_s3.IBucket If using predictions, a bucket must be provided which will be used to search for assets. --- ##### `stackMappings`<sup>Optional</sup> <a name="stackMappings" id="@aws-amplify/graphql-api-construct.AmplifyGraphqlApiProps.property.stackMappin