1 /*
2  * Copyright 2025 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package androidx.appfunctions
18 
19 import androidx.annotation.RestrictTo
20 import androidx.annotation.RestrictTo.Scope
21 
22 /**
23  * Annotates an interface defining the schema for an app function, outlining its input, output, and
24  * behavior
25  *
26  * Example Usage:
27  * ```kotlin
28  * @AppFunctionSchemaDefinition(name = "findNotes", version = 1, category = "Notes")
29  * interface FindNotes {
30  *   suspend fun findNotes(
31  *     appFunctionContext: AppFunctionContext,
32  *     findNotesParams: FindNotesParams,
33  *   ): List<Note>
34  * }
35  * ```
36  */
37 @RestrictTo(Scope.LIBRARY_GROUP)
38 @Retention(
39     // Binary because it's used to determine the annotation values from the compiled schema library.
40     AnnotationRetention.BINARY
41 )
42 @Target(AnnotationTarget.CLASS)
43 public annotation class AppFunctionSchemaDefinition(
44     val name: String,
45     val version: Int,
46     val category: String
47 )
48