evolution-api/src/docs/swagger.yaml
Davidson Gomes e1ac29683d wip: swagger
2023-10-02 09:24:53 -03:00

1282 lines
41 KiB
YAML

openapi: 3.0.0
info:
title: Evolution API
description: |
</br>
<hr style="height: 5px;background: #007500;margin: 20px 0;box-shadow: 0px 3px 5px 0px rgb(204 204 204);">
<div align="center">
[![Whatsapp Group](https://img.shields.io/badge/Group-WhatsApp-%2322BC18)](https://evolution-api.com/whatsapp)
[![Discord Community](https://img.shields.io/badge/Discord-Community-blue)](https://evolution-api.com/discord)
[![Postman Collection](https://img.shields.io/badge/Postman-Collection-orange)](https://evolution-api.com/postman)
[![Documentation](https://img.shields.io/badge/Documentation-Official-green)](https://doc.evolution-api.com)
[![License](https://img.shields.io/badge/license-GPL--3.0-orange)](./LICENSE)
[![Support](https://img.shields.io/badge/Donation-picpay-green)](https://app.picpay.com/user/davidsongomes1998)
[![Support](https://img.shields.io/badge/Buy%20me-coffe-orange)](https://bmc.link/evolutionapi)
</div>
<div align="center"><img src="https://raw.githubusercontent.com/EvolutionAPI/evolution-api/main/public/images/cover.png"></div>
<font size='3'>
This project is based on the [evolution](https://github.com/code-chat-br/whatsapp-api). The original project is an implementation of [Baileys](https://github.com/WhiskeySockets/Baileys), serving as a Restful API service that controls WhatsApp functions.</br>
The code allows the creation of multiservice chats, service bots, or any other system that utilizes WhatsApp. The documentation provides instructions on how to set up and use the project, as well as additional information about its features and configuration options.
</font>
[![Run in Postman](https://run.pstmn.io/button.svg)](https://god.gw.postman.com/run-collection/26869335-5546d063-156b-4529-915f-909dd628c090?action=collection%2Ffork&source=rip_markdown&collection-url=entityId%3D26869335-5546d063-156b-4529-915f-909dd628c090%26entityType%3Dcollection%26workspaceId%3D339a4ee7-378b-45c9-b5b8-fd2c0a9c2442)
version: 1.5.2
contact:
name: DavidsonGomes
email: contato@agenciadgcode.com
url: https://img.shields.io/badge/license-GPL--3.0-orange
license:
name: GNU General Public License v3.0
url: https://github.com/EvolutionAPI/evolution-api/blob/main/LICENSE
servers: []
components:
securitySchemes:
apikeyAuth:
type: apiKey
in: header
name: apikey
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
security:
- bearerAuth: []
tags:
- name: Instance Controller
- name: Send Message Controller
- name: Chat Controller
- name: Group Controller
- name: Profile Settings
- name: JWT
- name: Settings
- name: Webhook
- name: Websocket
- name: RabbitMQ
- name: Chatwoot
- name: Typebot
- name: Proxy
- name: Chama AI
paths:
/instance/create:
post:
tags:
- Instance Controller
summary: Create Instance
requestBody:
content:
application/json:
schema:
type: object
properties:
instanceName:
type: string
description: Name of the instance (optional).
token:
type: string
description: Token of the instance (optional).
qrcode:
type: boolean
description: QR Code of the instance (optional).
example:
instanceName: 'exampleInstance'
token: '87F3F7D0-4B8A-45D0-8618-7399E4AD6469'
qrcode: true
security:
- apikeyAuth: []
responses:
'200':
description: Successful response
content:
application/json: {}
/instance/fetchInstances:
get:
tags:
- Instance Controller
summary: Fetch Instances
security:
- apikeyAuth: []
parameters:
- name: instanceName
in: query
schema:
type: string
description: Retrieve one or all instances (optional).
example: 'evolution'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: array
items:
type: object
properties:
instance:
type: object
properties:
instanceName:
type: string
owner:
type: string
profileName:
type: string
profilePictureUrl:
type: string
profileStatus:
type: string
status:
type: string
serverUrl:
type: string
apikey:
type: string
/instance/connect/{instanceName}:
get:
tags:
- Instance Controller
summary: Instance Connect
parameters:
- name: instanceName
in: path
required: true
schema:
type: string
description: Connect to your instance.
example: 'evolution'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
code:
type: string
base64:
type: string
description: The QR Code as a string.
/instance/connectionState/{instanceName}:
get:
tags:
- Instance Controller
summary: Connection Status
parameters:
- name: instanceName
in: path
required: true
schema:
type: string
description: Check the connection state of your instance.
example: 'evolution'
responses:
'200':
description: Successful response
content:
application/json: {}
/instance/logout/{instanceName}:
delete:
tags:
- Instance Controller
summary: Logout Instance
parameters:
- name: instanceName
in: path
required: true
schema:
type: string
description: Logout from your instance.
example: 'evolution'
responses:
'200':
description: Successful response
content:
application/json: {}
/instance/delete/{instanceName}:
delete:
tags:
- Instance Controller
summary: Delete Instance
parameters:
- name: instanceName
in: path
required: true
schema:
type: string
description: Delete your instance.
example: 'evolution'
responses:
'200':
description: Successful response
content:
application/json: {}
/message/sendText/{instanceName}:
post:
tags:
- Send Message Controller
summary: Send a text message to a specified instance.
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
number:
type: string
description: The recipient's phone number.
example: '1234567890'
textMessage:
type: object
properties:
text:
type: string
description: The content of the text message.
example: 'Hello, World!'
options:
type: object
properties:
delay:
type: integer
description: Delay time before sending the message.
presence:
type: string
enum: ['composing', 'recording', 'paused']
description: Indicates the sender's action/status.
required:
- number
- textMessage
parameters:
- name: instanceName
in: path
required: true
schema:
type: string
description: The name of the instance to which the message should be sent.
example: 'evolution'
responses:
'200':
description: Successful response
content:
application/json: {}
/message/sendMedia/{instanceName}:
post:
tags:
- Send Message Controller
summary: Send a media message (image, video, document, audio) to a specified instance.
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
number:
type: string
description: The recipient's phone number.
example: '1234567890'
mediaMessage:
type: object
properties:
mediatype:
type: string
enum: ['image', 'document', 'video', 'audio']
description: Type of the media content.
fileName:
type: string
description: Name of the media file (optional).
caption:
type: string
description: Caption to accompany the media.
media:
type: string
description: URL of the media content.
required:
- mediatype
- media
options:
type: object
properties:
delay:
type: integer
description: Delay time before sending the message.
presence:
type: string
enum: ['composing', 'recording', 'paused']
description: Indicates the sender's action/status.
parameters:
- name: instanceName
in: path
required: true
schema:
type: string
description: The name of the instance to which the media message should be sent.
example: 'evolution'
responses:
'200':
description: Successful response
content:
application/json: {}
/message/sendMediaFile/{instanceName}:
post:
tags:
- Send Message Controller
summary: Send a media file (image, video, document, audio) directly to a specified instance.
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
number:
type: string
description: The recipient's phone number.
example: '1234567890'
caption:
type: string
description: Caption to accompany the media (optional).
attachment:
type: string
format: binary
description: The media file to be sent.
mediatype:
type: string
enum: ['image', 'document', 'video', 'audio']
description: Type of the media content.
presence:
type: string
enum: ['composing', 'recording', 'paused']
description: Indicates the sender's action/status (optional).
delay:
type: integer
description: Delay time before sending the message (optional).
required:
- number
- attachment
- mediatype
parameters:
- name: instanceName
in: path
required: true
schema:
type: string
description: The name of the instance to which the media file should be sent.
example: 'evolution'
responses:
'200':
description: Successful response
content:
application/json: {}
/message/sendLocation/{instanceName}:
post:
tags:
- Send Message Controller
summary: Send a location to a specified instance.
description: This endpoint allows users to share a location message.
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
number:
type: string
description: The recipient's phone number.
example: '1234567890'
locationMessage:
type: object
properties:
name:
type: string
description: Name or title of the location.
address:
type: string
description: Detailed address of the location.
latitude:
type: number
description: Latitude of the location.
format: float
longitude:
type: number
description: Longitude of the location.
format: float
options:
type: object
properties:
delay:
type: integer
description: Delay time before sending the message.
presence:
type: string
enum: ['composing', 'recording', 'paused']
description: Indicates the sender's action/status.
required:
- number
- locationMessage.latitude
- locationMessage.longitude
parameters:
- name: instanceName
in: path
required: true
schema:
type: string
description: The name of the instance to which the location should be sent.
example: 'evolution'
responses:
'200':
description: Successful response
content:
application/json: {}
/message/sendContact/{instanceName}:
post:
tags:
- Send Message Controller
summary: Send contact details to a specified instance.
description: This endpoint allows users to share one or multiple contact details.
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
number:
type: string
description: The recipient's phone number.
example: '1234567890'
contactMessage:
type: array
items:
type: object
properties:
fullName:
type: string
description: Full name of the contact.
wuid:
type: string
description: Unique identifier for the contact.
phoneNumber:
type: string
description: Phone number of the contact.
required:
- fullName
- wuid
- phoneNumber
options:
type: object
properties:
delay:
type: integer
description: Delay time before sending the contact.
presence:
type: string
enum: ['composing', 'recording', 'paused']
description: Indicates the sender's action/status.
required:
- number
parameters:
- name: instanceName
in: path
required: true
schema:
type: string
description: The name of the instance to which the contacts should be sent.
example: 'evolution'
responses:
'200':
description: Successful response
content:
application/json: {}
/message/sendReaction/{instanceName}:
post:
tags:
- Send Message Controller
summary: Send a reaction to a specified instance.
description: This endpoint allows users to send a reaction to a message.
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
reactionMessage:
type: object
properties:
key:
type: object
properties:
remoteJid:
type: string
description: The ID of the recipient of the original message.
fromMe:
type: boolean
description: Indicates if the reaction was sent from the user.
id:
type: string
description: The ID of the original message.
reaction:
type: string
maxLength: 1
description: Reaction character (e.g., emoji).
required:
- key.remoteJid
- key.fromMe
- key.id
- reaction
parameters:
- name: instanceName
in: path
required: true
schema:
type: string
description: The name of the instance to which the reaction should be sent.
example: 'evolution'
responses:
'200':
description: Successful response
content:
application/json: {}
/message/sendWhatsAppAudio/{instanceName}:
post:
tags:
- Send Message Controller
summary: Send an audio message via WhatsApp to a specified instance.
description: This endpoint allows users to share an audio message.
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
number:
type: string
description: The recipient's phone number.
example: '1234567890'
audioMessage:
type: object
properties:
audio:
type: string
description: URL of the audio file to be sent.
required:
- audio
options:
type: object
properties:
delay:
type: integer
description: Delay time before sending the audio message.
required:
- number
- audioMessage.audio
parameters:
- name: instanceName
in: path
required: true
schema:
type: string
description: The name of the instance to which the audio should be sent.
example: 'evolution'
responses:
'200':
description: Successful response
content:
application/json: {}
/message/sendWhatsAppAudioFile/{instanceName}:
post:
tags:
- Send Message Controller
summary: Upload and send a WhatsApp audio file to a specified instance.
description: This endpoint allows users to upload and send an audio file via WhatsApp.
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
number:
type: string
description: The recipient's phone number.
example: '1234567890'
attachment:
type: string
description: Audio file to be sent.
format: binary
delay:
type: integer
description: Delay time before sending the audio message.
example: 5
required:
- number
- attachment
parameters:
- name: instanceName
in: path
required: true
schema:
type: string
description: The name of the instance to which the reaction should be sent.
example: 'evolution'
responses:
'200':
description: Successful response
content:
application/json: {}
/chat/whatsappNumbers/{instanceName}:
post:
tags:
- Chat Controller
summary: Provide a list of WhatsApp numbers associated with a given instance.
description: This endpoint returns information on the WhatsApp numbers associated with the specified instance.
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
numbers:
type: array
items:
type: string
description: WhatsApp phone number.
example:
- '1234567890'
required:
- numbers
parameters:
- name: instanceName
in: path
required: true
schema:
type: string
description: The name of the instance to which the reaction should be sent.
example: 'evolution'
responses:
'200':
description: Successful response
content:
application/json: {}
/chat/markMessageAsRead/{instanceName}:
put:
tags:
- Chat Controller
summary: Mark specific messages as read for a given instance.
description: This endpoint allows users to mark messages as read for a particular instance.
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
readMessages:
type: array
items:
type: object
properties:
remoteJid:
type: string
description: ID of the recipient of the message.
fromMe:
type: boolean
description: Indicates if the message was sent from the user.
id:
type: string
description: Unique ID of the message.
required:
- remoteJid
- fromMe
- id
required:
- readMessages
parameters:
- name: instanceName
in: path
required: true
schema:
type: string
description: The name of the instance to which the reaction should be sent.
example: 'evolution'
responses:
'200':
description: Successful response
content:
application/json: {}
/chat/archiveChat/{instanceName}:
put:
tags:
- Chat Controller
summary: Archive specific chats for a given instance.
description: This endpoint allows users to archive specific chats based on the last message.
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
lastMessage:
type: object
properties:
key:
type: object
properties:
remoteJid:
type: string
description: ID of the recipient of the last message.
fromMe:
type: boolean
description: Indicates if the last message was sent from the user.
id:
type: string
description: Unique ID of the last message.
required:
- remoteJid
- fromMe
- id
archive:
type: boolean
description: Indicates whether to archive the chat.
example: true
required:
- lastMessage
- archive
parameters:
- name: instanceName
in: path
required: true
schema:
type: string
description: The name of the instance to which the reaction should be sent.
example: 'evolution'
responses:
'200':
description: Successful response
content:
application/json: {}
/chat/deleteMessageForEveryone/{instanceName}:
delete:
tags:
- Chat Controller
summary: Delete a message for everyone in a given instance.
description: This endpoint allows users to delete a message for everyone in the chat.
parameters:
- name: instanceName
in: path
required: true
schema:
type: string
description: The name of the instance to which the reaction should be sent.
example: 'evolution'
responses:
'200':
description: Successful response
content:
application/json: {}
/chat/fetchProfilePictureUrl/{instanceName}:
post:
tags:
- Chat Controller
summary: Retrieve the profile picture URL of a specific number.
description: This endpoint fetches the profile picture URL associated with the given phone number for the specified instance.
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
number:
type: string
description: WhatsApp phone number whose profile picture URL needs to be fetched.
required:
- number
parameters:
- name: instanceName
in: path
required: true
schema:
type: string
description: The name of the instance to which the reaction should be sent.
example: 'evolution'
responses:
'200':
description: Successful response
content:
application/json: {}
/chat/findContacts/{instanceName}:
post:
tags:
- Chat Controller
summary: Retrieve contact details using an ID.
description: This endpoint retrieves contact details associated with the given ID for the specified instance.
requestBody:
content:
application/json:
schema:
type: object
properties:
where:
type: object
properties:
id:
type: string
description: Unique ID of the contact to be fetched.
required:
- id
parameters:
- name: instanceName
in: path
required: true
schema:
type: string
description: The name of the instance to which the reaction should be sent.
example: 'evolution'
responses:
'200':
description: Successful response
content:
application/json: {}
/chat/getBase64FromMediaMessage/{instanceName}:
post:
tags:
- Chat Controller
summary: Convert media message content to Base64.
description: This endpoint retrieves the Base64 representation of the content of a media message for the specified instance.
requestBody:
content:
application/json:
schema:
type: object
properties:
key:
type: object
properties:
id:
type: string
description: Unique ID of the media message to be converted.
required:
- id
parameters:
- name: instanceName
in: path
required: true
schema:
type: string
description: The name of the instance to which the reaction should be sent.
example: 'evolution'
responses:
'200':
description: Successful response
content:
application/json: {}
/chat/findMessages/{instanceName}:
post:
tags:
- Chat Controller
summary: Search for messages based on specific criteria.
description: This endpoint retrieves messages that match the provided criteria for the specified instance.
requestBody:
content:
application/json:
schema:
type: object
properties:
where:
type: object
properties:
key:
type: object
properties:
remoteJid:
type: string
description: ID of the recipient of the message.
fromMe:
type: boolean
description: Indicates if the message was sent from the user.
id:
type: string
description: Unique ID of the message.
required:
- remoteJid
- fromMe
- id
message:
type: object
required:
- key
limit:
type: integer
description: Maximum number of messages to retrieve.
parameters:
- name: instanceName
in: path
required: true
schema:
type: string
description: The name of the instance to which the reaction should be sent.
example: 'evolution'
responses:
'200':
description: Successful response
content:
application/json: {}
/chat/findStatusMessage/{instanceName}:
post:
tags:
- Chat Controller
summary: Search for status messages using an ID.
description: This endpoint retrieves status messages associated with the given ID for the specified instance.
requestBody:
content:
application/json:
schema:
type: object
properties:
where:
type: object
properties:
id:
type: string
description: Unique ID of the status message to be fetched.
required:
- id
parameters:
- name: instanceName
in: path
required: true
schema:
type: string
description: The name of the instance to which the reaction should be sent.
example: 'evolution'
responses:
'200':
description: Successful response
content:
application/json: {}
/chat/findChats/{instanceName}:
get:
tags:
- Chat Controller
summary: List all chats associated with a specific instance.
description: This endpoint retrieves a list of all chats associated with the specified instance.
parameters:
- name: instanceName
in: path
required: true
schema:
type: string
description: The name of the instance to which the reaction should be sent.
example: 'evolution'
responses:
'200':
description: Successful response
content:
application/json: {}
/group/create/{instanceName}:
post:
tags:
- Group Controller
summary: Create a new WhatsApp group.
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
subject:
type: string
description: '- required - The name of the group.'
description:
type: string
description: '- optional - A brief description or summary of the group.'
participants:
type: array
items:
type: string
description: '- required - List of participant phone numbers.'
parameters:
- name: instanceName
in: path
schema:
type: string
required: true
description: '- required'
example: 'evolution'
responses:
'200':
description: Successful response
content:
application/json: {}
/group/updateGroupPicture/{instanceName}:
put:
tags:
- Group Controller
summary: Update the group's display picture.
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
image:
type: string
description: '- required - URL of the new group picture.'
parameters:
- name: groupJid
in: query
schema:
type: string
description: '- required - The unique identifier of the group.'
example: '120363046555718472@g.us'
- name: instanceName
in: path
schema:
type: string
required: true
description: '- required'
example: 'evolution'
responses:
'200':
description: Successful response
content:
application/json: {}
/group/findGroupInfos/{instanceName}:
get:
tags:
- Group Controller
summary: Retrieve details about a specific group.
parameters:
- name: groupJid
in: query
schema:
type: string
description: '- required - The unique identifier of the group.'
example: '120363046555718472@g.us'
- name: instanceName
in: path
schema:
type: string
required: true
description: '- required'
example: 'evolution'
responses:
'200':
description: Successful response
content:
application/json: {}
/group/participants/{instanceName}:
get:
tags:
- Group Controller
summary: Retrieve a list of participants in a specific group.
parameters:
- name: groupJid
in: query
schema:
type: string
description: '- required - The unique identifier of the group.'
example: '120363046555718472@g.us'
- name: instanceName
in: path
schema:
type: string
required: true
description: '- required'
example: 'evolution'
responses:
'200':
description: Successful response
content:
application/json: {}
/group/inviteCode/{instanceName}:
get:
tags:
- Group Controller
summary: Retrieve the group's invite link.
parameters:
- name: groupJid
in: query
schema:
type: string
description: '- required - The unique identifier of the group.'
example: '120363046555718472@g.us'
- name: instanceName
in: path
schema:
type: string
required: true
description: '- required'
example: 'evolution'
responses:
'200':
description: Successful response
content:
application/json: {}
/group/revokeInviteCode/{instanceName}:
put:
tags:
- Group Controller
summary: Invalidate the existing group invite link.
requestBody:
content: {}
parameters:
- name: groupJid
in: query
schema:
type: string
description: '- required - The unique identifier of the group.'
example: '120363046555718472@g.us'
- name: instanceName
in: path
schema:
type: string
required: true
description: '- required'
example: 'evolution'
responses:
'200':
description: Successful response
content:
application/json: {}
/group/updateParticipant/{instanceName}:
put:
tags:
- Group Controller
summary: Update the status or role of a participant in the group.
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
action:
type: string
enum: ['add', 'remove', 'promote', 'demote']
description: '- required - The action to be taken on the participant.'
participants:
type: array
items:
type: string
description: '- required - List of participant phone numbers to be updated.'
parameters:
- name: instanceName
in: path
schema:
type: string
required: true
description: '- required'
example: 'evolution'
responses:
'200':
description: Successful response
content:
application/json: {}
/group/leaveGroup/{instanceName}:
delete:
tags:
- Group Controller
summary: Exit from the specified WhatsApp group.
parameters:
- name: instanceName
in: path
schema:
type: string
required: true
description: '- required'
example: 'evolution'
responses:
'200':
description: Successful response
content:
application/json: {}
/instance/refreshToken/:
put:
tags:
- JWT
summary: Refresh an expired JWT token.
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
oldToken:
type: string
description: '- required - The expired JWT token.'
responses:
'200':
description: Successful response
content:
application/json: {}
/webhook/set/{instanceName}:
post:
tags:
- Webhook
summary: Set up or modify the webhook for an instance.
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
enabled:
type: boolean
description: 'Indicates whether the webhook is active.'
url:
type: string
format: uri
description: 'The endpoint URL where the webhook data will be sent.'
parameters:
- name: instanceName
in: path
schema:
type: string
required: true
description: '- required'
example: 'evolution'
responses:
'200':
description: Successful response
content:
application/json: {}
/webhook/find/{instanceName}:
get:
tags:
- Webhook
summary: Retrieve the webhook settings for a specific instance.
parameters:
- name: instanceName
in: path
schema:
type: string
required: true
description: '- required'
example: 'evolution'
responses:
'200':
description: Successful response
content:
application/json: {}