Esquema de manifiesto del complemento de API 2.2 para Microsoft 365 Copilot
Los complementos de API permiten que Microsoft 365 Copilot interactúen con las API REST descritas por una descripción de OpenAPI. La descripción de OpenAPI en un complemento de API describe las API REST con las que Copilot puede interactuar. Además, un complemento de API incluye un archivo de manifiesto de complemento que proporciona metadatos sobre el complemento, como el nombre, la descripción y la versión del complemento. El manifiesto del complemento también incluye información sobre las funcionalidades del complemento, como las API que admite y las operaciones que puede realizar.
En el siguiente artículo se describe el esquema 2.2 que usan los archivos de manifiesto del complemento de API. Para obtener más información sobre los complementos de API, consulte Complementos de API para Microsoft 365 Copilot.
Cambios de la versión anterior
Esta versión del esquema presenta los siguientes cambios de la versión 2.1.
- Se agregó la
security_info
propiedad al objeto Function capabilities. Esta propiedad permite atestiguar el comportamiento del complemento con el fin de evaluar los riesgos de llamar a la función. - Se quitó la propiedad en desuso
localization
del objeto de funcionalidades del complemento. Los manifiestos generados con teams Toolkit mediante el esquema 2.1 incluían la propiedad enlocalization
desuso. Los manifiestos que usan el esquema 2.2 producirán un error de validación si se incluye esta propiedad.
Esquema JSON
El esquema descrito en este documento se puede encontrar en formato de esquema JSONaquí.
Convenios
Referencias relativas en direcciones URL
A menos que se especifique lo contrario, todas las propiedades que son direcciones URL PUEDEN ser referencias relativas. Las referencias relativas en el documento de manifiesto son relativas a la ubicación del documento de manifiesto.
Longitud de cadena
A menos que se especifique lo contrario, todas las propiedades de cadena DEBEN estar limitadas a 4 000 caracteres. Esta longitud de cadena no confiere ningún tamaño aceptable para todo el documento. Implementa una libertad para imponer sus propios límites prácticos sobre la longitud del manifiesto.
Propiedades no reconocidas
Los objetos JSON definidos en este documento solo admiten las propiedades descritas. Las propiedades no reconocidas en cualquier objeto JSON DEBEN hacer que todo el documento no sea válido.
Localización de cadenas
Las cadenas localizables pueden usar una clave de localización en lugar de un valor literal. La sintaxis es [[key_name]]
, donde key_name
es el nombre clave de la localizationKeys
propiedad de los archivos de localización. Para obtener más información sobre la localización, consulte Localización del agente.
Ejemplo de cadena localizada
{
"schema_version": "v2.2",
"name_for_human": "[[plugin_name]]",
"description_for_human": "[[plugin_description]]"
}
Objeto de manifiesto del complemento
La raíz del documento de manifiesto del complemento es un objeto JSON que contiene propiedades que describen el complemento.
El objeto de manifiesto del complemento contiene las siguientes propiedades.
Propiedad | Tipo | Descripción |
---|---|---|
schema_version |
Cadena | Obligatorio. Versión del esquema. Las versiones anteriores son v1 y v2 . Se debe configurar como v2.2 . |
name_for_human |
Cadena | Obligatorio. Un nombre corto y legible para el complemento. DEBE contener al menos un carácter nowhitespace. Los caracteres posteriores a 20 PUEDEN omitirse. Esta propiedad es localizable. |
namespace |
String | Obsoleto. Opcional. |
description_for_model |
Cadena | Opcional. Descripción del complemento que se proporciona al modelo. Esta descripción debe describir para qué es el complemento y, en qué circunstancias, sus funciones son pertinentes. Los caracteres posteriores a 2048 PUEDEN omitirse. Esta propiedad es localizable. |
description_for_human |
Cadena | Obligatorio. Descripción legible del complemento. Los caracteres posteriores a 100 PUEDEN omitirse. Esta propiedad es localizable. |
logo_url |
Cadena | Opcional. Dirección URL usada para capturar un logotipo que puede usar el orquestador. Las implementaciones PUEDEN proporcionar métodos alternativos para proporcionar logotipos que cumplan sus requisitos visuales. Esta propiedad es localizable. |
contact_email |
Cadena | Opcional. Dirección de correo electrónico de un contacto para seguridad/moderación, soporte técnico y desactivación. |
legal_info_url |
Cadena | Opcional. Dirección URL absoluta que busca un documento que contiene los términos de servicio del complemento. Esta propiedad es localizable. |
privacy_policy_url |
Cadena | Opcional. Dirección URL absoluta que busca un documento que contiene la directiva de privacidad del complemento. Esta propiedad es localizable. |
functions |
Matriz del objeto Function | Opcional. Conjunto de objetos de función que describen las funciones disponibles para el complemento. Cada nombre de objeto de función DEBE ser único dentro de la matriz. El orden de la matriz no es significativo. Si la functions propiedad no está presente y hay un entorno de ejecución de OpenAPI, las funciones se deducen de las operaciones de OpenAPI. |
runtimes |
Matriz del objeto en tiempo de ejecución de OpenAPI | Opcional. Conjunto de objetos en tiempo de ejecución que describen los tiempos de ejecución usados por el complemento. |
capabilities |
Objeto de funcionalidades del complemento | Opcional. Describe las funcionalidades del complemento. |
Function (objeto)
Información relacionada con cómo debe interactuar el modelo con una función.
El objeto de función contiene las siguientes propiedades.
Propiedad | Tipo | Descripción |
---|---|---|
id |
Cadena | Opcional. |
name |
Cadena | Obligatorio. Cadena que identifica de forma única esta función. Los objetos en tiempo de ejecución PUEDEN hacer referencia a este identificador para enlazar el tiempo de ejecución a la función . Cuando la función está enlazada a un entorno de ejecución de OpenAPI, el valor debe coincidir con un operationId valor de la descripción de OpenAPI. El valor debe coincidir con la ^[A-Za-z0-9_]+$ expresión regular. |
description |
Cadena | Opcional. Una descripción mejor adaptada al modelo, como consideraciones sobre la longitud del contexto del token o el uso de palabras clave para mejorar la solicitud del complemento. |
parameters |
Objeto de parámetros de función | Opcional. Objeto que contiene propiedades que describen los parámetros de una función de forma independiente en tiempo de ejecución. Refleja la forma de json-schema , pero solo admite un pequeño subconjunto de las funcionalidades del esquema JSON. Si la parameters propiedad no está presente, las funciones descritas por un objeto en tiempo de ejecución de tipo OpenApi usan la descripción de OpenAPI para determinar los parámetros. Cada miembro del objeto JSON es un objeto de parámetro de función que describe la semántica del parámetro. |
returns |
Objeto Return O bien, objeto devuelto enriquecido | Opcional. Describe la semántica del valor devuelto por la función. |
states |
Objeto de estados de función | Opcional. Define objetos de estado para los estados de orquestador. |
capabilities |
Function capabilities (objeto) | Opcional. Contiene una colección de datos que se usan para configurar funcionalidades opcionales del orquestador al invocar la función. |
Ejemplo de objeto de función
{
"functions": [
{
"name": "add_todo",
"description": "Adds a new Todo",
"parameters": {
"type": "object",
"properties": {
"description": {
"type": "string"
}
},
"required": [
"description"
]
},
"returns": {
"type": "string"
}
}
]
}
Objeto de parámetros de función
Objeto que se usa para identificar el conjunto de parámetros que se pueden pasar a la función. Este objeto está estructurado para reflejar la forma de un objeto de esquema JSON, pero solo admite un subconjunto de palabras clave de esquema JSON.
El objeto de parámetros de función contiene las siguientes propiedades.
Propiedad | Tipo | Descripción |
---|---|---|
type |
Cadena | Opcional. Tipo de esquema JSON. Se debe establecer en object . |
properties |
Objeto de propiedades de parámetros de función | Obligatorio. Objeto que asigna nombres de parámetros a sus definiciones. |
required |
Matriz de cadenas | Opcional. Los nombres de las propiedades que son parámetros necesarios. A diferencia del esquema JSON, los valores de esta matriz DEBEN coincidir con los nombres enumerados en la properties propiedad . |
Ejemplo de objeto de parámetros de función
{
"type": "object",
"properties": {
"param1": {
"type": "string"
},
"param2": {
"type": "number"
}
},
"required": [
"param1"
]
}
Objeto de propiedades de parámetros de función
Objeto que asigna nombres de parámetros a sus definiciones.
El objeto de propiedades de parámetros de función contiene las siguientes propiedades.
Propiedad | Tipo | Descripción |
---|---|---|
Coincidencia de nombres ^[A-Za-z0-9_]+$ |
Objeto de parámetro de función | Opcional. Definición de parámetro que corresponde al parámetro que coincide con el nombre de la propiedad. |
Objeto de parámetro de función
Objeto que describe la semántica de un parámetro de función.
El objeto de parámetro de función contiene las siguientes propiedades.
Propiedad | Tipo | Descripción |
---|---|---|
type |
Cadena | Obligatorio. Especifica el tipo del parámetro. Los valores posibles son: string , array , boolean , integer y number . |
items |
Objeto de parámetro de función | Opcional. Objeto de parámetro de función que describe un único elemento de una matriz. SOLO DEBE estar presente cuando type es array . |
enum |
Matriz de cadenas | Opcional. Matriz de valores válidos para este parámetro. SOLO DEBE estar presente cuando type es string . |
description |
Cadena | Opcional. Una descripción del parámetro. |
default |
Array, Boolean, String, Number, Integer | Opcional. Valor del tipo especificado por la type propiedad que indica el valor que usa la API cuando no se proporciona un valor para un parámetro opcional. |
Ejemplo de parámetro de función
{
"type": "string",
"description": "The color of the item",
"enum": [
"green",
"blue",
"orange"
]
}
Objeto Return
Contiene la semántica del valor devuelto por la función.
El objeto devuelto contiene las siguientes propiedades.
Propiedad | Tipo | Descripción |
---|---|---|
type |
Cadena | Obligatorio. Especifica el tipo del valor devuelto por la API. Los valores posibles son: string . |
description |
Cadena | Opcional. Descripción del valor devuelto por la API. |
Objeto devuelto enriquecido
Indica que la función devuelve una respuesta compatible con el protocolo respuestas enriquecidas.
El objeto devuelto enriquecido contiene las siguientes propiedades.
Propiedad | Tipo | Descripción |
---|---|---|
$ref |
Cadena | Obligatorio. Se debe establecer en https://copilot.microsoft.com/schemas/rich-response-v1.0.json . |
Objeto de estados de función
Define objetos de estado para los estados de orquestador.
El objeto de estados de función contiene las siguientes propiedades.
Propiedad | Tipo | Descripción |
---|---|---|
reasoning |
State (objeto) | Opcional. Estado en el que el modelo puede llamar a funciones y realizar cálculos. |
responding |
State (objeto) | Opcional. Estado en el que el modelo puede generar texto que se muestra al usuario. El modelo no puede invocar funciones en el estado de respuesta. |
disengaging |
State (objeto) | Opcional. |
State (objeto)
Contiene instrucciones específicas para cuando se invoca una función en un estado de orquestador específico.
El objeto de estado contiene las siguientes propiedades.
Propiedad | Tipo | Descripción |
---|---|---|
description |
Cadena | Opcional. Describe el propósito de una función cuando se usa en un estado de orquestador específico. |
instructions |
Matriz, cadena | Opcional. Una cadena o una matriz de cadenas que se usan para proporcionar instrucciones al orquestador sobre cómo usar esta función mientras se encuentra en un estado de orquestador específico. Proporcionar una sola cadena indica la intención de proporcionar un conjunto completo de instrucciones que invalidarían cualquier solicitud de función integrada. Proporcionar una matriz de cadenas indica la intención de aumentar el mecanismo de solicitud de función integrada. |
examples |
Matriz, cadena | Opcional. Una cadena o una matriz de cadenas que se usan para proporcionar ejemplos al orquestador sobre cómo se puede invocar esta función. |
Ejemplo de objeto State
{
"functions": [
{
"name": "searchEmails",
"description": "search for Emails from using 3S search Service",
"states": {
"reasoning": {
"description": "\n# `searchEmails(**params) -> str` returns the emails from user's inbox based on search query.",
"instructions": [
"Examine the output of `searchEmails(**params) -> str`.",
"Do not include any information that is not present in the JSON results.",
"Exclude any irrelevant data from the JSON results",
"Determine if the response contains an error field.",
"If an error is present, provide the error code and error message extracted from the response JSON.",
"If there is no error, extract and include as much relevant information as possible from the JSON result to meet the user's needs."
],
"examples": []
}
}
}
]
}
Function capabilities (objeto)
Contiene una colección de datos que se usan para configurar funcionalidades opcionales del orquestador al invocar la función.
El objeto function capabilities contiene las siguientes propiedades.
Propiedad | Tipo | Descripción |
---|---|---|
confirmation |
Objeto de confirmación | Opcional. Describe un cuadro de diálogo de confirmación que DEBE presentarse al usuario antes de invocar la función. |
response_semantics |
Objeto de semántica de respuesta | Opcional. Describe cómo el orquestador puede interpretar la carga de respuesta y proporcionar una representación visual. |
security_info |
Objeto de información de seguridad | Opcional. Contiene atestaciones sobre el comportamiento del complemento con el fin de evaluar los riesgos de llamar a la función. Si se omite esta propiedad, la función no puede interactuar con otros complementos o funcionalidades del agente contenedor. |
Objeto de confirmación
Describe cómo el orquestador pide al usuario que confirme antes de llamar a una función.
El objeto de confirmación contiene las siguientes propiedades.
Propiedad | Tipo | Descripción |
---|---|---|
type |
Cadena | Opcional. Especifica el tipo de confirmación. Los valores posibles son None y AdaptiveCard . |
title |
Cadena | Opcional. Título del cuadro de diálogo de confirmación. Esta propiedad es localizable. |
body |
Cadena | Opcional. Texto del cuadro de diálogo de confirmación. Esta propiedad es localizable. |
Objeto de semántica de respuesta
Contiene información para identificar la semántica de la carga de respuesta y habilitar la representación de esa información en una experiencia visual enriquecida mediante tarjetas adaptables.
El objeto de semántica de respuesta contiene las siguientes propiedades.
Propiedad | Tipo | Descripción |
---|---|---|
data_path |
Cadena | Obligatorio. Una consulta JSONPath RFC9535 que identifica un conjunto de elementos de la respuesta de función que se va a representar mediante la plantilla especificada en cada elemento. |
properties |
Objeto de propiedades semánticas de respuesta | Opcional. Permite la asignación de consultas JSONPath a elementos de datos conocidos. Cada consulta JSONPath es relativa a un valor de resultado. |
static_template |
Objeto | Opcional. Objeto JSON que se ajusta al esquema de tarjeta adaptable y al lenguaje de plantillas. Esta instancia de tarjeta adaptable se usa para representar un resultado de la respuesta del complemento. Este valor se usa si template_selector no está presente o no se resuelve en una tarjeta adaptable. |
oauth_card_path |
Cadena | Opcional. |
Ejemplo de plantilla estática
{
"functions": {
"capabilities": {
"response_semantics": {
"data_path": "$.resources",
"properties": {
"title": "$.name",
"subtitle": "$.location",
"url": "$.href",
"information_protection_label": "$.ipLabel"
},
"static_template": {
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
"version": "1.5",
"body": [
{
"type": "TextBlock",
"text": "${name}",
"weight": "Bolder"
},
{
"type": "TextBlock",
"text": "${description}"
}
],
"action": [
{
"type": "Action.OpenUrl",
"title": "View",
"text": "${href}"
}
]
}
}
}
}
}
Ejemplo de plantilla dinámica
{
"functions": {
"capabilities": {
"response_semantics": {
"data_path": "$.attachments",
"properties": {
"title": "$.title",
"subtitle": "$.subtitle",
"url": "$.url",
"thumbnail_url": "$.thumbnailUrl",
"template_selector": "$.template"
}
}
}
}
}
Objeto de propiedades semánticas de respuesta
Permite la asignación de consultas JSONPath a elementos de datos conocidos. Cada consulta JSONPath es relativa a un valor de resultado.
El objeto de propiedades semánticas de respuesta contiene las siguientes propiedades.
Propiedad | Tipo | Descripción |
---|---|---|
title |
Cadena | Opcional. Título de una cita para el resultado. |
subtitle |
Cadena | Opcional. Subtítulo de una cita para el resultado. |
url |
Cadena | Opcional. Dirección URL de una cita para el resultado. |
thumbnail_url |
Cadena | Opcional. Dirección URL de una imagen en miniatura para el resultado. |
information_protection_label |
Cadena | Opcional. Indicador de confidencialidad de datos del contenido del resultado. |
template_selector |
Cadena | Opcional. Expresión JSONPath en una instancia de tarjeta adaptable que se va a usar para representar el resultado. |
Objeto de información de seguridad
Contiene información que se usa para determinar el riesgo relativo de invocar la función.
El objeto de información de seguridad contiene las siguientes propiedades.
Propiedad | Tipo | Descripción |
---|---|---|
data_handling |
Matriz de cadenas | Obligatorio. Matriz de cadenas que describen el comportamiento de control de datos de la función. Los valores válidos son GetPublicData , GetPrivateData , DataTransform , DataExport y ResourceStateUpdate . |
Valores de control de datos
Valor | Descripción | Ejemplo |
---|---|---|
GetPublicData |
Indica que la función recupera datos de un origen externo que no requiere autenticación. | Función que realiza una llamada de servicio para recuperar datos de un sitio web público. |
GetPrivateData |
Indica que la función recupera datos de un origen externo que requiere autenticación o de la aplicación actual del usuario. | Función que obtiene datos de una base de datos privada o del documento abierto actualmente del usuario. |
DataTransform |
Indica que la función solo devuelve una salida basada en la entrada, sin introducir datos nuevos ni provocar una actualización de recursos. | Función que convierte un número en una palabra o da formato a una fecha. |
DataExport |
Indica que la función envía o escribe datos en una ubicación fuera de la propia función. | Función que guarda datos en un archivo local o en la nube. |
ResourceStateUpdate |
Indica que la función afecta a un recurso iniciando una transacción, cambiando un proceso en el mundo real, concediendo o denegando permisos, o realizando cualquier otra acción que requiera confirmación explícita del usuario. | Función que reserva una habitación de hotel o cambia el estado de un elemento de trabajo de active a resolved . |
Nota:
Los manifiestos de complemento que usan el DataExport
valor pueden producir un error de validación al intentar instalar el complemento. Esto es temporal y se resolverá pronto.
Objeto en tiempo de ejecución de OpenAPI
Describe cómo invoca el complemento las funciones de OpenAPI.
El objeto en tiempo de ejecución de OpenAPI contiene las siguientes propiedades.
Propiedad | Tipo | Descripción |
---|---|---|
type |
Cadena | Obligatorio. Identifica este tiempo de ejecución como un entorno de ejecución de OpenAPI. Se debe establecer en OpenApi . |
auth |
Objeto de autenticación en tiempo de ejecución | Obligatorio. Información de autenticación necesaria para invocar el entorno de ejecución. |
run_for_functions |
Matriz de cadenas | Opcional. Los nombres de las funciones que están disponibles en este entorno de ejecución. Si se omite esta propiedad, están disponibles todas las funciones descritas por el tiempo de ejecución. Los valores de cadena proporcionados pueden contener caracteres comodín. Más de un entorno de ejecución NO DEBE declarar la compatibilidad con la misma función de forma implícita o explícita. |
spec |
Objeto de especificación de OpenAPI | Obligatorio. Contiene la información de OpenAPI necesaria para invocar el entorno de ejecución. |
Objeto de especificación de OpenAPI
Contiene la información de OpenAPI necesaria para invocar el entorno de ejecución.
El objeto de especificación de OpenAPI contiene las siguientes propiedades.
Propiedad | Tipo | Descripción |
---|---|---|
url |
Cadena | Opcional. Dirección URL para capturar la especificación de OpenAPI, a la que se llama con una solicitud GET. Este miembro es necesario a menos que api_description esté presente. |
api_description |
Cadena | Opcional. Cadena que contiene una descripción de OpenAPI. Si este miembro está presente, url no es necesario y se omite si está presente. |
progress_style |
Cadena | Opcional. Estilo de progreso que se usa para mostrar el progreso de la función. Los valores posibles son: None , ShowUsage , ShowUsageWithInput y ShowUsageWithInputAndOutput . |
Ejemplo de objeto de especificación de OpenAPI
{
"runtimes":
[
{
"type": "OpenApi",
"auth": {
"type": "None"
},
"spec": {
"url": "https://example.org/api/openapi.yaml",
}
}
]
}
Objeto de autenticación en tiempo de ejecución
Contiene información usada por el complemento para autenticarse en el entorno de ejecución.
El objeto de autenticación en tiempo de ejecución contiene las siguientes propiedades.
Propiedad | Tipo | Descripción |
---|---|---|
type |
Cadena | Opcional. Especifica el tipo de autenticación necesario para invocar una función. Los valores posibles son: None , OAuthPluginVault y ApiKeyPluginVault . |
reference_id |
Cadena | Opcional. Valor que se usa cuando type es OAuthPluginVault o ApiKeyPluginVault . El reference_id valor se adquiere de forma independiente al proporcionar los valores de configuración de autenticación necesarios. Este mecanismo existe para evitar la necesidad de almacenar valores secretos en el manifiesto del complemento. |
Ejemplo de objeto de autenticación en tiempo de ejecución
{
"type": "OAuthPluginVault",
"reference_id": "0123456-abcdef"
}
Objeto de funcionalidades del complemento
Describe las funcionalidades del complemento.
El objeto de funcionalidades del complemento contiene las siguientes propiedades.
Propiedad | Tipo | Descripción |
---|---|---|
conversation_starters |
Matriz del objeto de inicio de conversación | Opcional. Inicios de conversación que se pueden mostrar al usuario para obtener sugerencias sobre cómo invocar el complemento. |
Objeto de inicio de conversación
Ejemplo de una pregunta a la que el complemento puede responder.
El objeto de inicio de conversación contiene las siguientes propiedades.
Propiedad | Tipo | Descripción |
---|---|---|
text |
Cadena | Obligatorio. Texto del inicio de la conversación. Esta propiedad es localizable. |
title |
Cadena | Opcional. Título del inicio de la conversación. Esta propiedad es localizable. |
Ejemplo de objeto de inicio de conversación
{
"conversation_starters": [
{
"title": "Developer tasks",
"text": "What issues are assigned to me?"
}
]
}
Ejemplo de manifiesto
Este es un ejemplo de un archivo de manifiesto de complemento que usa la mayoría de las propiedades de manifiesto y las propiedades del objeto descritas en el artículo:
{
"schema_version": "v2.2",
"name_for_human": "Contoso Real Estate",
"description_for_human": "Find up-to-date, detailed real estate properties for sale on the market",
"description_for_model": "Plugin for finding properties for sale. Use it whenever a user asks about real estate properties for sale on the market. This plugin can be used to search for properties in a particular city, and with a given number of bedrooms, bathrooms, and amenities.",
"capabilities": {
"conversation_starters": [
{
"title": "Available listings",
"text": "What listings are available in my area?"
}
]
},
"functions": [
{
"name": "getListings",
"description": "Get a list of properties matching the specified criteria",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "The city to search properties in"
},
"bedrooms": {
"type": "number",
"description": "The number of bedrooms the property should have"
},
"bathrooms": {
"type": "number",
"description": "The number of bathrooms the property should have"
},
"amenities": {
"type": "array",
"description": "The list of amenities the property should have",
"items": {
"type": "string",
"description": "One amenity the property should have",
"enum": [
"air conditioning",
"balcony",
"dishwasher",
"elevator",
"fireplace",
"furniture",
"garden",
"gym",
"heating",
"jacuzzi",
"laundry room",
"microwave",
"no furniture",
"parking",
"patio",
"sauna",
"swimming pool",
"terrace",
"wi-fi"
]
}
}
}
},
"returns": {
"type": "string",
"description": "A list of properties"
},
"states": {
"reasoning": {
"description": "`getListings` returns a list of real estate properties for sale based on the specified criteria.",
"instructions": [
"If the user mentions a city in their question, only search in that city by using the city parameter.",
"If the user asks for properties with things like parking space, heating, jacuzzi, or similar amenities, use the amenities parameter to filter the results.",
"Only use the list of amenities provided in the amenities parameter enum. If the user asked for an amenity that is not in the list, find the closest match from the list, or ignore it if no match can be found.",
"Determine if the response contains an error field.",
"If an error is present, provide the error code and error message from the JSON response to the user.",
"If there is no error, extract and include as much relevant information as possible from the JSON response to meet the users needs."
]
}
},
"capabilities": {
"security_info": {
"data_handling": [
"GetPublicData",
"GetPrivateData"
]
}
}
},
{
"name": "saveSearch",
"description": "Save a search for properties for sale",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "The city to search in"
},
"bedrooms": {
"type": "number",
"description": "The number of bedrooms"
}
},
"required": [
"city"
]
},
"returns": {
"type": "string",
"description": "The unique ID for the saved search"
},
"states": {
"responding": {
"description": "`saveSearch` returns a unique ID that identifies the newly saved search.",
"instructions": [
"Examine the output of the `saveSearch` function.",
"Extract the unique ID integer from the output and include it in your response to the user."
]
}
},
"capabilities": {
"security_info": {
"data_handling": [
"ResourceStateUpdate"
]
}
}
},
{
"name": "deleteSavedSearch",
"description": "Delete a previously saved search",
"parameters": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The unique ID of the saved search"
}
},
"required": [
"id"
]
},
"returns": {
"type": "string",
"description": "True if the saved search was deleted, false otherwise"
},
"capabilities": {
"security_info": {
"data_handling": [
"ResourceStateUpdate"
]
}
}
}
],
"runtimes": [
{
"type": "OpenApi",
"auth": {
"type": "none"
},
"run_for_functions": [
"getListings",
"saveSearch",
"deleteSavedSearch"
],
"spec": {
"url": "http://contoso.com/openapi.yaml"
}
}
],
"logo_url": "http://contoso.com/logo.png",
"contact_email": "contact@contoso.com",
"legal_info_url": "https://contoso.com/legal/"
}