1. clima (JSON)
{
"openapi": "3.1.0",
"info": {
"title": "Get weather data",
"description": "Retrieves current weather data for a location.",
"version": "v1.0.0"
},
"servers": [
{
"url": "https://weather.example.com"
}
],
"paths": {
"/location": {
"get": {
"description": "Get temperature for a specific location",
"operationId": "GetCurrentWeather",
"parameters": [
{
"name": "location",
"in": "query",
"description": "The city and state to retrieve the weather for",
"required": true,
"schema": {
"type": "string"
}
}
],
"deprecated": false
}
}
},
"components": {
"schemas": {}
}
}
Esse código é um arquivo JSON da especificação OpenAPI que descreve uma API para obter dados meteorológicos. Em resumo, a API permite que o usuário consulte os dados meteorológicos de um local específico.
"openapi": "3.1.0"
Versão da especificação OpenAPI: Indica que a versão da especificação OpenAPI usada é a 3.1.0."info"
API: Esta seção fornece informações básicas sobre a API, incluindo título, descrição e versão."servers"
URLs do servidor: Esta seção lista os URLs do servidor para a API."paths"
API: Esta seção define os caminhos e as operações da API. Neste exemplo, há uma operação GET com um caminho de/location
que é usado para obter o clima em um local específico. Essa operação requer um arquivo chamadolocation
O parâmetro de consulta, que é obrigatório, é do tipo string."components"
: Esta seção é usada para definir os padrões usados na API, mas, neste exemplo, ela está vazia.
Na especificação da OpenAPI, oparameters
é uma matriz que define os parâmetros de entrada para operações de API.parameters
define um arquivo chamadolocation
O parâmetro de consulta, que é obrigatório, é do tipo string. Cada parâmetro é um objeto que contém as seguintes propriedades:
"name"
Nome do parâmetro: O nome do parâmetro."in"
Localização do parâmetro: A localização do parâmetro. Pode ser"query"
,"header"
,"path"
talvez"cookie"
."description"
Descrição do parâmetro: Descrição do parâmetro."required"
: Se paratrue
Esse parâmetro é necessário se o"schema"
Tipo de dados: O tipo de dados do parâmetro.
Com foco na posição dos parâmetros, os quatro casos são mostrados abaixo:
- para passar a chave de API no cabeçalho da solicitação.
- path para especificar a ID do objeto a ser recuperado no caminho do URL.
- O parâmetro cookie, usado para passar o ID da sessão do usuário em um cookie.
- O parâmetro de consulta, anexado ao URL, geralmente é usado para fornecer filtragem de informações.
Criar uma interface de ferramenta personalizada:
Interface da ferramenta de teste:
2. loja de animais de estimação (YAML)
# Taken from https://github.com/OAI/OpenAPI-Specification/blob/main/examples/v3.0/petstore.yaml
openapi: "3.0.0"
info:
version: 1.0.0
title: Swagger Petstore
license:
name: MIT
servers:
- url: https://petstore.swagger.io/v1
paths:
/pets:
get:
summary: List all pets
operationId: listPets
tags:
- pets
parameters:
- name: limit
in: query
description: How many items to return at one time (max 100)
required: false
schema:
type: integer
maximum: 100
format: int32
responses:
'200':
description: A paged array of pets
headers:
x-next:
description: A link to the next page of responses
schema:
type: string
content:
application/json:
schema:
$ref: "#/components/schemas/Pets"
default:
description: unexpected error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
post:
summary: Create a pet
operationId: createPets
tags:
- pets
responses:
'201':
description: Null response
default:
description: unexpected error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
/pets/{petId}:
get:
summary: Info for a specific pet
operationId: showPetById
tags:
- pets
parameters:
- name: petId
in: path
required: true
description: The id of the pet to retrieve
schema:
type: string
responses:
'200':
description: Expected response to a valid request
content:
application/json:
schema:
$ref: "#/components/schemas/Pet"
default:
description: unexpected error
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
components:
schemas:
Pet:
type: object
required:
- id
- name
properties:
id:
type: integer
format: int64
name:
type: string
tag:
type: string
Pets:
type: array
maxItems: 100
items:
$ref: "#/components/schemas/Pet"
Error:
type: object
required:
- code
- message
properties:
code:
type: integer
format: int32
message:
type: string
pet.yaml
é um arquivo de especificação OpenAPI que descreve e define a interface para uma API chamada "Swagger Petstore". Esse arquivo usa o formato YAML, que é um padrão de serialização de dados legível por humanos para gravar arquivos de configuração. Esse arquivo fornece uma definição clara da interface da API para que os desenvolvedores saibam como interagir com a API "Swagger Petstore". As partes principais do arquivo incluem:
openapi
Versão da especificação OpenAPI: Este campo especifica a versão da especificação OpenAPI usada, neste caso "3.0.0".info
Esta seção fornece informações básicas sobre a API, incluindo versão, título e licença.servers
URL do servidor: Esta seção define o URL do servidor para a API.paths
API: Esta seção define todos os caminhos e operações da API. Por exemplo./pets
O caminho tem duas operações:get
responder cantandopost
.get
é usada para listar todos os animais de estimação.post
As operações são usadas para criar um novo animal de estimação. Cada operação tem seus próprios parâmetros, respostas e outros detalhes.components
Esta seção define esquemas reutilizáveis que podem ser usados nopaths
Citado na seção. Por exemplo.Pet
ePets
responder cantandoError
Modo.
Converta o arquivo YAML acima para o formato JSON:
{
"openapi": "3.0.0",
"info": {
"version": "1.0.0",
"title": "Swagger Petstore",
"license": {
"name": "MIT"
}
},
"servers": [
{
"url": "https://petstore.swagger.io/v1"
}
],
"paths": {
"/pets": {
"get": {
"summary": "List all pets",
"operationId": "listPets",
"tags": ["pets"],
"parameters": [
{
"name": "limit",
"in": "query",
"description": "How many items to return at one time (max 100)",
"required": false,
"schema": {
"type": "integer",
"maximum": 100,
"format": "int32"
}
}
],
"responses": {
"200": {
"description": "A paged array of pets",
"headers": {
"x-next": {
"description": "A link to the next page of responses",
"schema": {
"type": "string"
}
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Pets"
}
}
}
},
"default": {
"description": "unexpected error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
},
"post": {
"summary": "Create a pet",
"operationId": "createPets",
"tags": ["pets"],
"responses": {
"201": {
"description": "Null response"
},
"default": {
"description": "unexpected error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/pets/{petId}": {
"get": {
"summary": "Info for a specific pet",
"operationId": "showPetById",
"tags": ["pets"],
"parameters": [
{
"name": "petId",
"in": "path",
"required": true,
"description": "The id of the pet to retrieve",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Expected response to a valid request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Pet"
}
}
}
},
"default": {
"description": "unexpected error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
}
},
"components": {
"schemas": {
"Pet": {
"type": "object",
"required": ["id", "name"],
"properties": {
"id": {
"type": "integer",
"format": "int64"
},
"name": {
"type": "string"
},
"tag": {
"type": "string"
}
}
},
"Pets": {
"type": "array",
"maxItems": 100,
"items": {
"$ref": "#/components/schemas/Pet"
}
},
"Error": {
"type": "object",
"required": ["code", "message"],
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
}
}
}
}
}
}
3. modelo em branco
{
"openapi": "3.1.0",
"info": {
"title": "Untitled",
"description": "Your OpenAPI specification",
"version": "v1.0.0"
},
"servers": [
{
"url": ""
}
],
"paths": {},
"components": {
"schemas": {}
}
}
Observação: Parece que o formato JSON é mais intuitivo.
Tutorial de saída estruturada:Como usar o objeto jsonarray no Dify?