2025-08-29 09:33:57 +07:00

1603 lines
56 KiB
Go

// Package openapi Code generated by swaggo/swag. DO NOT EDIT
package openapi
import "github.com/swaggo/swag"
const docTemplate = `{
"schemes": {{ marshal .Schemes }},
"swagger": "2.0",
"info": {
"description": "{{escape .Description}}",
"title": "{{.Title}}",
"contact": {
"name": "SMSGate Support",
"email": "support@sms-gate.app"
},
"version": "{{.Version}}"
},
"host": "{{.Host}}",
"basePath": "{{.BasePath}}",
"paths": {
"/3rdparty/v1/devices": {
"get": {
"security": [
{
"ApiAuth": []
}
],
"description": "Returns list of registered devices",
"produces": [
"application/json"
],
"tags": [
"User",
"Devices"
],
"summary": "List devices",
"responses": {
"200": {
"description": "Device list",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/smsgateway.Device"
}
}
},
"400": {
"description": "Invalid request",
"schema": {
"$ref": "#/definitions/smsgateway.ErrorResponse"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/smsgateway.ErrorResponse"
}
},
"500": {
"description": "Internal server error",
"schema": {
"$ref": "#/definitions/smsgateway.ErrorResponse"
}
}
}
}
},
"/3rdparty/v1/devices/{id}": {
"delete": {
"security": [
{
"ApiAuth": []
}
],
"description": "Removes device",
"produces": [
"application/json"
],
"tags": [
"User",
"Devices"
],
"summary": "Remove device",
"parameters": [
{
"type": "string",
"description": "Device ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"204": {
"description": "Successfully removed"
},
"400": {
"description": "Invalid request",
"schema": {
"$ref": "#/definitions/smsgateway.ErrorResponse"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/smsgateway.ErrorResponse"
}
},
"404": {
"description": "Device not found",
"schema": {
"$ref": "#/definitions/smsgateway.ErrorResponse"
}
},
"500": {
"description": "Internal server error",
"schema": {
"$ref": "#/definitions/smsgateway.ErrorResponse"
}
}
}
}
},
"/3rdparty/v1/health": {
"get": {
"description": "Checks if service is healthy",
"produces": [
"application/json"
],
"tags": [
"System"
],
"summary": "Health check",
"responses": {
"200": {
"description": "Health check result",
"schema": {
"$ref": "#/definitions/smsgateway.HealthResponse"
}
},
"500": {
"description": "Service is unhealthy",
"schema": {
"$ref": "#/definitions/smsgateway.HealthResponse"
}
}
}
}
},
"/3rdparty/v1/inbox/export": {
"post": {
"security": [
{
"ApiAuth": []
}
],
"description": "Initiates process of inbox messages export via webhooks. For each message the ` + "`" + `sms:received` + "`" + ` webhook will be triggered. The webhooks will be triggered without specific order.",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"User",
"Messages"
],
"summary": "Request inbox messages export",
"parameters": [
{
"description": "Export inbox request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/smsgateway.MessagesExportRequest"
}
}
],
"responses": {
"202": {
"description": "Inbox export request accepted",
"schema": {
"type": "object"
}
},
"400": {
"description": "Invalid request",
"schema": {
"$ref": "#/definitions/smsgateway.ErrorResponse"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/smsgateway.ErrorResponse"
}
},
"500": {
"description": "Internal server error",
"schema": {
"$ref": "#/definitions/smsgateway.ErrorResponse"
}
}
}
}
},
"/3rdparty/v1/logs": {
"get": {
"security": [
{
"ApiAuth": []
}
],
"description": "Retrieve a list of log entries within a specified time range.",
"produces": [
"application/json"
],
"tags": [
"System",
"Logs"
],
"summary": "Get logs",
"parameters": [
{
"type": "string",
"format": "date-time",
"description": "The start of the time range for the logs to retrieve. Logs created after this timestamp will be included.",
"name": "from",
"in": "query"
},
{
"type": "string",
"format": "date-time",
"description": "The end of the time range for the logs to retrieve. Logs created before this timestamp will be included.",
"name": "to",
"in": "query"
}
],
"responses": {
"200": {
"description": "Log entries",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/smsgateway.LogEntry"
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/smsgateway.ErrorResponse"
}
},
"500": {
"description": "Internal server error",
"schema": {
"$ref": "#/definitions/smsgateway.ErrorResponse"
}
},
"501": {
"description": "Not implemented",
"schema": {
"$ref": "#/definitions/smsgateway.ErrorResponse"
}
}
}
}
},
"/3rdparty/v1/messages": {
"get": {
"security": [
{
"ApiAuth": []
}
],
"description": "Retrieves a list of messages with filtering and pagination",
"produces": [
"application/json"
],
"tags": [
"User",
"Messages"
],
"summary": "Get messages",
"parameters": [
{
"type": "string",
"format": "date-time",
"description": "Start date in RFC3339 format",
"name": "from",
"in": "query"
},
{
"type": "string",
"format": "date-time",
"description": "End date in RFC3339 format",
"name": "to",
"in": "query"
},
{
"type": "string",
"description": "Filter messages by processing state",
"name": "state",
"in": "query"
},
{
"type": "string",
"description": "Filter by device ID",
"name": "deviceId",
"in": "query"
},
{
"type": "integer",
"default": 50,
"description": "Pagination limit",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"default": 0,
"description": "Pagination offset",
"name": "offset",
"in": "query"
}
],
"responses": {
"200": {
"description": "A list of messages",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/smsgateway.MessageState"
}
}
},
"400": {
"description": "Invalid request",
"schema": {
"$ref": "#/definitions/smsgateway.ErrorResponse"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/smsgateway.ErrorResponse"
}
},
"500": {
"description": "Internal server error",
"schema": {
"$ref": "#/definitions/smsgateway.ErrorResponse"
}
}
}
},
"post": {
"security": [
{
"ApiAuth": []
}
],
"description": "Enqueues a message for sending. If ` + "`" + `deviceId` + "`" + ` is set, the specified device is used; otherwise a random registered device is chosen.",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"User",
"Messages"
],
"summary": "Enqueue message",
"parameters": [
{
"type": "boolean",
"description": "Skip phone validation",
"name": "skipPhoneValidation",
"in": "query"
},
{
"minimum": 0,
"type": "integer",
"default": 0,
"description": "Filter devices active within the specified number of hours",
"name": "deviceActiveWithin",
"in": "query"
},
{
"description": "Send message request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/smsgateway.Message"
}
}
],
"responses": {
"202": {
"description": "Message enqueued",
"schema": {
"$ref": "#/definitions/smsgateway.GetMessageResponse"
},
"headers": {
"Location": {
"type": "string",
"description": "Get message state URL"
}
}
},
"400": {
"description": "Invalid request",
"schema": {
"$ref": "#/definitions/smsgateway.ErrorResponse"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/smsgateway.ErrorResponse"
}
},
"409": {
"description": "Message with such ID already exists",
"schema": {
"$ref": "#/definitions/smsgateway.ErrorResponse"
}
},
"500": {
"description": "Internal server error",
"schema": {
"$ref": "#/definitions/smsgateway.ErrorResponse"
}
}
}
}
},
"/3rdparty/v1/messages/{id}": {
"get": {
"security": [
{
"ApiAuth": []
}
],
"description": "Returns message state by ID",
"produces": [
"application/json"
],
"tags": [
"User",
"Messages"
],
"summary": "Get message state",
"parameters": [
{
"type": "string",
"description": "Message ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "Message state",
"schema": {
"$ref": "#/definitions/smsgateway.GetMessageResponse"
}
},
"400": {
"description": "Invalid request",
"schema": {
"$ref": "#/definitions/smsgateway.ErrorResponse"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/smsgateway.ErrorResponse"
}
},
"500": {
"description": "Internal server error",
"schema": {
"$ref": "#/definitions/smsgateway.ErrorResponse"
}
}
}
}
},
"/3rdparty/v1/settings": {
"get": {
"security": [
{
"ApiAuth": []
}
],
"description": "Returns settings for a specific user",
"produces": [
"application/json"
],
"tags": [
"User",
"Settings"
],
"summary": "Get settings",
"responses": {
"200": {
"description": "Settings",
"schema": {
"$ref": "#/definitions/smsgateway.DeviceSettings"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/smsgateway.ErrorResponse"
}
},
"500": {
"description": "Internal server error",
"schema": {
"$ref": "#/definitions/smsgateway.ErrorResponse"
}
}
}
},
"put": {
"security": [
{
"ApiAuth": []
}
],
"description": "Replaces settings",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"User",
"Settings"
],
"summary": "Replace settings",
"parameters": [
{
"description": "Settings",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/smsgateway.DeviceSettings"
}
}
],
"responses": {
"200": {
"description": "Settings updated",
"schema": {
"type": "object"
}
},
"400": {
"description": "Invalid request",
"schema": {
"$ref": "#/definitions/smsgateway.ErrorResponse"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/smsgateway.ErrorResponse"
}
},
"500": {
"description": "Internal server error",
"schema": {
"$ref": "#/definitions/smsgateway.ErrorResponse"
}
}
}
},
"patch": {
"security": [
{
"ApiAuth": []
}
],
"description": "Partially updates settings for a specific user",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"User",
"Settings"
],
"summary": "Partially update settings",
"parameters": [
{
"description": "Settings",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/smsgateway.DeviceSettings"
}
}
],
"responses": {
"200": {
"description": "Settings updated",
"schema": {
"type": "object"
}
},
"400": {
"description": "Invalid request",
"schema": {
"$ref": "#/definitions/smsgateway.ErrorResponse"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/smsgateway.ErrorResponse"
}
},
"500": {
"description": "Internal server error",
"schema": {
"$ref": "#/definitions/smsgateway.ErrorResponse"
}
}
}
}
},
"/3rdparty/v1/webhooks": {
"get": {
"security": [
{
"ApiAuth": []
}
],
"description": "Returns list of registered webhooks",
"produces": [
"application/json"
],
"tags": [
"User",
"Webhooks"
],
"summary": "List webhooks",
"responses": {
"200": {
"description": "Webhook list",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/smsgateway.Webhook"
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/smsgateway.ErrorResponse"
}
},
"500": {
"description": "Internal server error",
"schema": {
"$ref": "#/definitions/smsgateway.ErrorResponse"
}
}
}
},
"post": {
"security": [
{
"ApiAuth": []
}
],
"description": "Registers webhook. If webhook with same ID already exists, it will be replaced",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"User",
"Webhooks"
],
"summary": "Register webhook",
"parameters": [
{
"description": "Webhook",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/smsgateway.Webhook"
}
}
],
"responses": {
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/smsgateway.Webhook"
}
},
"400": {
"description": "Invalid request",
"schema": {
"$ref": "#/definitions/smsgateway.ErrorResponse"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/smsgateway.ErrorResponse"
}
},
"500": {
"description": "Internal server error",
"schema": {
"$ref": "#/definitions/smsgateway.ErrorResponse"
}
}
}
}
},
"/3rdparty/v1/webhooks/{id}": {
"delete": {
"security": [
{
"ApiAuth": []
}
],
"description": "Deletes webhook",
"produces": [
"application/json"
],
"tags": [
"User",
"Webhooks"
],
"summary": "Delete webhook",
"parameters": [
{
"type": "string",
"description": "Webhook ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"204": {
"description": "Webhook deleted",
"schema": {
"type": "object"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/smsgateway.ErrorResponse"
}
},
"500": {
"description": "Internal server error",
"schema": {
"$ref": "#/definitions/smsgateway.ErrorResponse"
}
}
}
}
}
},
"definitions": {
"smsgateway.DataMessage": {
"type": "object",
"required": [
"data",
"port"
],
"properties": {
"data": {
"description": "Base64-encoded payload",
"type": "string",
"format": "byte",
"maxLength": 65535,
"minLength": 4,
"example": "SGVsbG8gV29ybGQh"
},
"port": {
"description": "Destination port",
"type": "integer",
"maximum": 65535,
"minimum": 1,
"example": 53739
}
}
},
"smsgateway.Device": {
"type": "object",
"properties": {
"createdAt": {
"description": "Created at (read only)",
"type": "string",
"example": "2020-01-01T00:00:00Z"
},
"deletedAt": {
"description": "Deleted at (read only)",
"type": "string",
"example": "2020-01-01T00:00:00Z"
},
"id": {
"description": "ID",
"type": "string",
"example": "PyDmBQZZXYmyxMwED8Fzy"
},
"lastSeen": {
"description": "Last seen at (read only)",
"type": "string",
"example": "2020-01-01T00:00:00Z"
},
"name": {
"description": "Name",
"type": "string",
"example": "My Device"
},
"updatedAt": {
"description": "Updated at (read only)",
"type": "string",
"example": "2020-01-01T00:00:00Z"
}
}
},
"smsgateway.DeviceSettings": {
"type": "object",
"properties": {
"encryption": {
"description": "Encryption contains settings related to message encryption.",
"allOf": [
{
"$ref": "#/definitions/smsgateway.SettingsEncryption"
}
]
},
"logs": {
"description": "Logs contains settings related to logging.",
"allOf": [
{
"$ref": "#/definitions/smsgateway.SettingsLogs"
}
]
},
"messages": {
"description": "Messages contains settings related to message handling.",
"allOf": [
{
"$ref": "#/definitions/smsgateway.SettingsMessages"
}
]
},
"ping": {
"description": "Ping contains settings related to ping functionality.",
"allOf": [
{
"$ref": "#/definitions/smsgateway.SettingsPing"
}
]
},
"webhooks": {
"description": "Webhooks contains settings related to webhook functionality.",
"allOf": [
{
"$ref": "#/definitions/smsgateway.SettingsWebhooks"
}
]
}
}
},
"smsgateway.ErrorResponse": {
"type": "object",
"properties": {
"code": {
"description": "Error code",
"type": "integer"
},
"data": {
"description": "Error context"
},
"message": {
"description": "Error message",
"type": "string",
"example": "An error occurred"
}
}
},
"smsgateway.GetMessageResponse": {
"type": "object",
"required": [
"deviceId",
"id",
"recipients",
"state"
],
"properties": {
"deviceId": {
"description": "Device ID",
"type": "string",
"maxLength": 21,
"example": "PyDmBQZZXYmyxMwED8Fzy"
},
"id": {
"description": "Message ID",
"type": "string",
"maxLength": 36,
"example": "PyDmBQZZXYmyxMwED8Fzy"
},
"isEncrypted": {
"description": "Encrypted",
"type": "boolean",
"example": false
},
"isHashed": {
"description": "Hashed",
"type": "boolean",
"example": false
},
"recipients": {
"description": "Recipients states",
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/definitions/smsgateway.RecipientState"
}
},
"state": {
"description": "State",
"allOf": [
{
"$ref": "#/definitions/smsgateway.ProcessingState"
}
],
"example": "Pending"
},
"states": {
"description": "History of states",
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
},
"smsgateway.HealthCheck": {
"type": "object",
"properties": {
"description": {
"description": "A human-readable description of the check.",
"type": "string"
},
"observedUnit": {
"description": "Unit of measurement for the observed value.",
"type": "string"
},
"observedValue": {
"description": "Observed value of the check.",
"type": "integer"
},
"status": {
"description": "Status of the check.\nIt can be one of the following values: \"pass\", \"warn\", or \"fail\".",
"allOf": [
{
"$ref": "#/definitions/smsgateway.HealthStatus"
}
]
}
}
},
"smsgateway.HealthChecks": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/smsgateway.HealthCheck"
}
},
"smsgateway.HealthResponse": {
"type": "object",
"properties": {
"checks": {
"description": "A map of check names to their respective details.",
"allOf": [
{
"$ref": "#/definitions/smsgateway.HealthChecks"
}
]
},
"releaseId": {
"description": "Release ID of the application.\nIt is used to identify the version of the application.",
"type": "integer"
},
"status": {
"description": "Overall status of the application.\nIt can be one of the following values: \"pass\", \"warn\", or \"fail\".",
"allOf": [
{
"$ref": "#/definitions/smsgateway.HealthStatus"
}
]
},
"version": {
"description": "Version of the application.",
"type": "string"
}
}
},
"smsgateway.HealthStatus": {
"type": "string",
"enum": [
"pass",
"warn",
"fail"
],
"x-enum-varnames": [
"HealthStatusPass",
"HealthStatusWarn",
"HealthStatusFail"
]
},
"smsgateway.LimitPeriod": {
"type": "string",
"enum": [
"Disabled",
"PerMinute",
"PerHour",
"PerDay"
],
"x-enum-varnames": [
"Disabled",
"PerMinute",
"PerHour",
"PerDay"
]
},
"smsgateway.LogEntry": {
"type": "object",
"properties": {
"context": {
"description": "Additional context information related to the log entry, typically including data relevant to the log event.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"createdAt": {
"description": "The timestamp when this log entry was created.",
"type": "string"
},
"id": {
"description": "A unique identifier for the log entry.",
"type": "integer"
},
"message": {
"description": "A message describing the log event.",
"type": "string"
},
"module": {
"description": "The module or component of the system that generated the log entry.",
"type": "string"
},
"priority": {
"description": "The priority level of the log entry.",
"allOf": [
{
"$ref": "#/definitions/smsgateway.LogEntryPriority"
}
]
}
}
},
"smsgateway.LogEntryPriority": {
"type": "string",
"enum": [
"DEBUG",
"INFO",
"WARN",
"ERROR"
],
"x-enum-varnames": [
"LogEntryPriorityDebug",
"LogEntryPriorityInfo",
"LogEntryPriorityWarn",
"LogEntryPriorityError"
]
},
"smsgateway.Message": {
"type": "object",
"required": [
"phoneNumbers"
],
"properties": {
"dataMessage": {
"description": "Data message",
"allOf": [
{
"$ref": "#/definitions/smsgateway.DataMessage"
}
]
},
"deviceId": {
"description": "Optional device ID for explicit selection",
"type": "string",
"maxLength": 21,
"example": "PyDmBQZZXYmyxMwED8Fzy"
},
"id": {
"description": "ID (if not set - will be generated)",
"type": "string",
"maxLength": 36,
"example": "PyDmBQZZXYmyxMwED8Fzy"
},
"isEncrypted": {
"description": "Is encrypted",
"type": "boolean",
"example": true
},
"message": {
"description": "Message content\nDeprecated: use TextMessage instead",
"type": "string",
"maxLength": 65535,
"example": "Hello World!"
},
"phoneNumbers": {
"description": "Recipients (phone numbers)",
"type": "array",
"maxItems": 100,
"minItems": 1,
"items": {
"type": "string"
},
"example": [
"79990001234"
]
},
"priority": {
"description": "Priority, messages with values greater than ` + "`" + `99` + "`" + ` will bypass limits and delays",
"default": 0,
"maximum": 127,
"minimum": -128,
"allOf": [
{
"$ref": "#/definitions/smsgateway.MessagePriority"
}
],
"example": 0
},
"simNumber": {
"description": "SIM card number (1-3), if not set - default SIM will be used",
"type": "integer",
"maximum": 3,
"example": 1
},
"textMessage": {
"description": "Text message",
"allOf": [
{
"$ref": "#/definitions/smsgateway.TextMessage"
}
]
},
"ttl": {
"description": "Time to live in seconds (conflicts with ` + "`" + `validUntil` + "`" + `)",
"type": "integer",
"minimum": 5,
"example": 86400
},
"validUntil": {
"description": "Valid until (conflicts with ` + "`" + `ttl` + "`" + `)",
"type": "string",
"example": "2020-01-01T00:00:00Z"
},
"withDeliveryReport": {
"description": "With delivery report",
"type": "boolean",
"example": true
}
}
},
"smsgateway.MessagePriority": {
"type": "integer",
"enum": [
-128,
0,
100,
127
],
"x-enum-comments": {
"PriorityBypassThreshold": "Threshold at which messages bypass limits and delays"
},
"x-enum-varnames": [
"PriorityMinimum",
"PriorityDefault",
"PriorityBypassThreshold",
"PriorityMaximum"
]
},
"smsgateway.MessageState": {
"type": "object",
"required": [
"deviceId",
"id",
"recipients",
"state"
],
"properties": {
"deviceId": {
"description": "Device ID",
"type": "string",
"maxLength": 21,
"example": "PyDmBQZZXYmyxMwED8Fzy"
},
"id": {
"description": "Message ID",
"type": "string",
"maxLength": 36,
"example": "PyDmBQZZXYmyxMwED8Fzy"
},
"isEncrypted": {
"description": "Encrypted",
"type": "boolean",
"example": false
},
"isHashed": {
"description": "Hashed",
"type": "boolean",
"example": false
},
"recipients": {
"description": "Recipients states",
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/definitions/smsgateway.RecipientState"
}
},
"state": {
"description": "State",
"allOf": [
{
"$ref": "#/definitions/smsgateway.ProcessingState"
}
],
"example": "Pending"
},
"states": {
"description": "History of states",
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
},
"smsgateway.MessagesExportRequest": {
"type": "object",
"required": [
"deviceId",
"since",
"until"
],
"properties": {
"deviceId": {
"description": "DeviceID is the ID of the device to export messages for.",
"type": "string",
"maxLength": 21,
"example": "PyDmBQZZXYmyxMwED8Fzy"
},
"since": {
"description": "Since is the start of the time range to export.",
"type": "string",
"example": "2024-01-01T00:00:00Z"
},
"until": {
"description": "Until is the end of the time range to export.",
"type": "string",
"example": "2024-01-01T23:59:59Z"
}
}
},
"smsgateway.MessagesProcessingOrder": {
"type": "string",
"enum": [
"LIFO",
"FIFO"
],
"x-enum-varnames": [
"LIFO",
"FIFO"
]
},
"smsgateway.ProcessingState": {
"type": "string",
"enum": [
"Pending",
"Processed",
"Sent",
"Delivered",
"Failed"
],
"x-enum-comments": {
"ProcessingStateDelivered": "Delivered",
"ProcessingStateFailed": "Failed",
"ProcessingStatePending": "Pending",
"ProcessingStateProcessed": "Processed (received by device)",
"ProcessingStateSent": "Sent"
},
"x-enum-varnames": [
"ProcessingStatePending",
"ProcessingStateProcessed",
"ProcessingStateSent",
"ProcessingStateDelivered",
"ProcessingStateFailed"
]
},
"smsgateway.RecipientState": {
"type": "object",
"required": [
"phoneNumber",
"state"
],
"properties": {
"error": {
"description": "Error (for ` + "`" + `Failed` + "`" + ` state)",
"type": "string",
"example": "timeout"
},
"phoneNumber": {
"description": "Phone number or first 16 symbols of SHA256 hash",
"type": "string",
"maxLength": 128,
"minLength": 1,
"example": "79990001234"
},
"state": {
"description": "State",
"allOf": [
{
"$ref": "#/definitions/smsgateway.ProcessingState"
}
],
"example": "Pending"
}
}
},
"smsgateway.SettingsEncryption": {
"type": "object",
"properties": {
"passphrase": {
"description": "Passphrase is the encryption passphrase. If nil or empty, encryption is disabled.",
"type": "string"
}
}
},
"smsgateway.SettingsLogs": {
"type": "object",
"properties": {
"lifetime_days": {
"description": "LifetimeDays is the number of days to retain logs.\nMust be at least 1 when provided.",
"type": "integer",
"minimum": 1
}
}
},
"smsgateway.SettingsMessages": {
"type": "object",
"properties": {
"limit_period": {
"description": "LimitPeriod defines the period for message sending limits.\nValid values are \"Disabled\", \"PerMinute\", \"PerHour\", or \"PerDay\".",
"enum": [
"Disabled",
"PerMinute",
"PerHour",
"PerDay"
],
"allOf": [
{
"$ref": "#/definitions/smsgateway.LimitPeriod"
}
]
},
"limit_value": {
"description": "LimitValue is the maximum number of messages allowed per limit period.\nMust be at least 1 when provided.",
"type": "integer",
"minimum": 1
},
"log_lifetime_days": {
"description": "LogLifetimeDays is the number of days to retain message logs.\nMust be at least 1 when provided.",
"type": "integer",
"minimum": 1
},
"processing_order": {
"description": "MessagesProcessingOrder defines the order in which messages are processed.\nValid values are \"LIFO\" or \"FIFO\".",
"enum": [
"LIFO",
"FIFO"
],
"allOf": [
{
"$ref": "#/definitions/smsgateway.MessagesProcessingOrder"
}
]
},
"send_interval_max": {
"description": "SendIntervalMax is the maximum interval between message sends (in seconds).\nMust be at least 1 when provided and greater than or equal to SendIntervalMin.",
"type": "integer",
"minimum": 1
},
"send_interval_min": {
"description": "SendIntervalMin is the minimum interval between message sends (in seconds).\nMust be at least 1 when provided.",
"type": "integer",
"minimum": 1
},
"sim_selection_mode": {
"description": "SimSelectionMode defines how SIM cards are selected for sending messages.\nValid values are \"OSDefault\", \"RoundRobin\", or \"Random\".",
"enum": [
"OSDefault",
"RoundRobin",
"Random"
],
"allOf": [
{
"$ref": "#/definitions/smsgateway.SimSelectionMode"
}
]
}
}
},
"smsgateway.SettingsPing": {
"type": "object",
"properties": {
"interval_seconds": {
"description": "IntervalSeconds is the interval between ping requests (in seconds).\nMust be at least 1 when provided.",
"type": "integer",
"minimum": 1
}
}
},
"smsgateway.SettingsWebhooks": {
"type": "object",
"properties": {
"internet_required": {
"description": "InternetRequired indicates whether internet access is required for webhooks.",
"type": "boolean"
},
"retry_count": {
"description": "RetryCount is the number of times to retry failed webhook deliveries.\nMust be at least 1 when provided.",
"type": "integer",
"minimum": 1
},
"signing_key": {
"description": "SigningKey is the secret key used for signing webhook payloads.",
"type": "string"
}
}
},
"smsgateway.SimSelectionMode": {
"type": "string",
"enum": [
"OSDefault",
"RoundRobin",
"Random"
],
"x-enum-varnames": [
"OSDefault",
"RoundRobin",
"Random"
]
},
"smsgateway.TextMessage": {
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"description": "Message text",
"type": "string",
"maxLength": 65535,
"minLength": 1,
"example": "Hello World!"
}
}
},
"smsgateway.Webhook": {
"type": "object",
"required": [
"event",
"url"
],
"properties": {
"deviceId": {
"description": "The unique identifier of the device the webhook is associated with.",
"type": "string",
"maxLength": 21,
"example": "PyDmBQZZXYmyxMwED8Fzy"
},
"event": {
"description": "The type of event the webhook is triggered for.",
"allOf": [
{
"$ref": "#/definitions/smsgateway.WebhookEvent"
}
],
"example": "sms:received"
},
"id": {
"description": "The unique identifier of the webhook.",
"type": "string",
"maxLength": 36,
"example": "123e4567-e89b-12d3-a456-426614174000"
},
"url": {
"description": "The URL the webhook will be sent to.",
"type": "string",
"example": "https://example.com/webhook"
}
}
},
"smsgateway.WebhookEvent": {
"type": "string",
"enum": [
"sms:received",
"sms:data-received",
"sms:sent",
"sms:delivered",
"sms:failed",
"system:ping"
],
"x-enum-varnames": [
"WebhookEventSmsReceived",
"WebhookEventSmsDataReceived",
"WebhookEventSmsSent",
"WebhookEventSmsDelivered",
"WebhookEventSmsFailed",
"WebhookEventSystemPing"
]
}
},
"securityDefinitions": {
"ApiAuth": {
"type": "basic"
},
"MobileToken": {
"description": "Mobile device token",
"type": "apiKey",
"name": "Authorization",
"in": "header"
},
"ServerKey": {
"description": "Private server authentication",
"type": "apiKey",
"name": "Authorization",
"in": "header"
},
"UserCode": {
"description": "User one-time code authentication",
"type": "apiKey",
"name": "Authorization",
"in": "header"
}
}
}`
// SwaggerInfo holds exported Swagger Info so clients can modify it
var SwaggerInfo = &swag.Spec{
Version: "{APP_VERSION}",
Host: "api.sms-gate.app",
BasePath: "",
Schemes: []string{"https"},
Title: "SMS Gateway for Android™ API",
Description: "This API provides programmatic access to sending SMS messages on Android devices. Features include sending SMS, checking message status, device management, webhook configuration, and system health checks.",
InfoInstanceName: "swagger",
SwaggerTemplate: docTemplate,
LeftDelim: "{{",
RightDelim: "}}",
}
func init() {
swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo)
}