basePath: /v1 definitions: entities.BillingUsage: properties: created_at: example: "2022-06-05T14:26:02.302718+03:00" type: string end_timestamp: example: "2022-01-31T23:59:59+00:00" type: string id: example: 32343a19-da5e-4b1b-a767-3298a73703cb type: string received_messages: example: 465 type: integer sent_messages: example: 321 type: integer start_timestamp: example: "2022-01-01T00:00:00+00:00" type: string total_cost: example: 0 type: integer updated_at: example: "2022-06-05T14:26:10.303278+03:00" type: string user_id: example: WB7DRDWrJZRGbYrv2CKGkqbzvqdC type: string required: - created_at - end_timestamp - id - received_messages - sent_messages - start_timestamp - total_cost - updated_at - user_id type: object entities.BulkMessage: properties: created_at: example: "2022-06-05T14:26:02.302718+03:00" type: string delivered_count: example: 25 type: integer expired_count: example: 3 type: integer failed_count: example: 5 type: integer pending_count: example: 30 type: integer request_id: example: bulk-csv-a1B2c3D4e5 type: string scheduled_count: example: 50 type: integer sent_count: example: 40 type: integer total: example: 150 type: integer required: - created_at - delivered_count - expired_count - failed_count - pending_count - request_id - scheduled_count - sent_count - total type: object entities.Discord: properties: created_at: example: "2022-06-05T14:26:02.302718+03:00" type: string id: example: 32343a19-da5e-4b1b-a767-3298a73703cb type: string incoming_channel_id: example: "1095780203256627291" type: string name: example: Game Server type: string server_id: example: "1095778291488653372" type: string updated_at: example: "2022-06-05T14:26:10.303278+03:00" type: string user_id: example: WB7DRDWrJZRGbYrv2CKGkqbzvqdC type: string required: - created_at - id - incoming_channel_id - name - server_id - updated_at - user_id type: object entities.Heartbeat: properties: charging: example: true type: boolean id: example: 32343a19-da5e-4b1b-a767-3298a73703cb type: string owner: example: "+18005550199" type: string timestamp: example: "2022-06-05T14:26:01.520828+03:00" type: string user_id: example: WB7DRDWrJZRGbYrv2CKGkqbzvqdC type: string version: example: 344c10f type: string required: - charging - id - owner - timestamp - user_id - version type: object entities.Message: properties: attachments: example: - https://example.com/image.jpg - https://example.com/video.mp4 items: type: string type: array contact: example: "+18005550100" type: string content: example: This is a sample text message type: string created_at: example: "2022-06-05T14:26:02.302718+03:00" type: string delivered_at: example: "2022-06-05T14:26:09.527976+03:00" type: string encrypted: example: false type: boolean expired_at: example: "2022-06-05T14:26:09.527976+03:00" type: string failed_at: example: "2022-06-05T14:26:09.527976+03:00" type: string failure_reason: example: UNKNOWN type: string id: example: 32343a19-da5e-4b1b-a767-3298a73703cb type: string last_attempted_at: example: "2022-06-05T14:26:09.527976+03:00" type: string max_send_attempts: example: 1 type: integer order_timestamp: example: "2022-06-05T14:26:09.527976+03:00" type: string owner: example: "+18005550199" type: string received_at: example: "2022-06-05T14:26:09.527976+03:00" type: string request_id: example: 153554b5-ae44-44a0-8f4f-7bbac5657ad4 type: string request_received_at: example: "2022-06-05T14:26:01.520828+03:00" type: string scheduled_at: example: "2022-06-05T14:26:09.527976+03:00" type: string scheduled_send_time: example: "2022-06-05T14:26:09.527976+03:00" type: string send_attempt_count: example: 0 type: integer send_time: description: SendDuration is the number of nanoseconds from when the request was received until when the mobile phone send the message example: 133414 type: integer sent_at: example: "2022-06-05T14:26:09.527976+03:00" type: string sim: allOf: - $ref: '#/definitions/entities.SIM' description: |- SIM is the SIM card to use to send the message * SMS1: use the SIM card in slot 1 * SMS2: use the SIM card in slot 2 * DEFAULT: used the default communication SIM card example: DEFAULT status: example: pending type: string type: example: mobile-terminated type: string updated_at: example: "2022-06-05T14:26:10.303278+03:00" type: string user_id: example: WB7DRDWrJZRGbYrv2CKGkqbzvqdC type: string required: - attachments - contact - content - created_at - encrypted - id - max_send_attempts - order_timestamp - owner - request_received_at - send_attempt_count - sim - status - type - updated_at - user_id type: object entities.MessageSendSchedule: properties: created_at: example: "2022-06-05T14:26:02.302718+03:00" type: string id: example: 32343a19-da5e-4b1b-a767-3298a73703cb type: string name: example: Business Hours type: string timezone: example: Europe/Tallinn type: string updated_at: example: "2022-06-05T14:26:10.303278+03:00" type: string user_id: example: WB7DRDWrJZRGbYrv2CKGkqbzvqdC type: string windows: items: $ref: '#/definitions/entities.MessageSendScheduleWindow' type: array required: - created_at - id - name - timezone - updated_at - user_id - windows type: object entities.MessageSendScheduleWindow: properties: day_of_week: example: 1 type: integer end_minute: example: 1020 type: integer start_minute: example: 540 type: integer required: - day_of_week - end_minute - start_minute type: object entities.MessageThread: properties: color: example: indigo type: string contact: example: "+18005550100" type: string created_at: example: "2022-06-05T14:26:09.527976+03:00" type: string id: example: 32343a19-da5e-4b1b-a767-3298a73703ca type: string is_archived: example: false type: boolean last_message_content: example: This is a sample message content type: string last_message_id: example: 32343a19-da5e-4b1b-a767-3298a73703ca type: string order_timestamp: example: "2022-06-05T14:26:09.527976+03:00" type: string owner: example: "+18005550199" type: string status: example: PENDING type: string updated_at: example: "2022-06-05T14:26:09.527976+03:00" type: string user_id: example: WB7DRDWrJZRGbYrv2CKGkqbzvqdC type: string required: - color - contact - created_at - id - is_archived - last_message_content - last_message_id - order_timestamp - owner - status - updated_at - user_id type: object entities.Phone: properties: created_at: example: "2022-06-05T14:26:02.302718+03:00" type: string fcm_token: example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzd..... type: string id: example: 32343a19-da5e-4b1b-a767-3298a73703cb type: string max_send_attempts: description: MaxSendAttempts determines how many times to retry sending an SMS message example: 2 type: integer message_expiration_seconds: description: MessageExpirationSeconds is the duration in seconds after sending a message when it is considered to be expired. type: integer message_send_schedule_id: example: 32343a19-da5e-4b1b-a767-3298a73703cb type: string messages_per_minute: example: 1 type: integer missed_call_auto_reply: example: This phone cannot receive calls. Please send an SMS instead. type: string phone_number: example: "+18005550199" type: string sim: $ref: '#/definitions/entities.SIM' updated_at: example: "2022-06-05T14:26:10.303278+03:00" type: string user_id: example: WB7DRDWrJZRGbYrv2CKGkqbzvqdC type: string required: - created_at - id - max_send_attempts - message_expiration_seconds - messages_per_minute - phone_number - sim - updated_at - user_id type: object entities.PhoneAPIKey: properties: api_key: example: pk_DGW8NwQp7mxKaSZ72Xq9v6xxxxx type: string created_at: example: "2022-06-05T14:26:02.302718+03:00" type: string id: example: 32343a19-da5e-4b1b-a767-3298a73703cb type: string name: example: Business Phone Key type: string phone_ids: example: - 32343a19-da5e-4b1b-a767-3298a73703cb - 32343a19-da5e-4b1b-a767-3298a73703cc items: type: string type: array phone_numbers: example: - "+18005550199" - "+18005550100" items: type: string type: array updated_at: example: "2022-06-05T14:26:02.302718+03:00" type: string user_email: example: user@gmail.com type: string user_id: example: WB7DRDWrJZRGbYrv2CKGkqbzvqdC type: string required: - api_key - created_at - id - name - phone_ids - phone_numbers - updated_at - user_email - user_id type: object entities.SIM: enum: - SIM1 - SIM2 type: string x-enum-varnames: - SIM1 - SIM2 entities.SubscriptionName: enum: - free - pro-monthly - pro-yearly - ultra-monthly - ultra-yearly - pro-lifetime - 20k-monthly - 100k-monthly - 50k-monthly - 200k-monthly - 20k-yearly type: string x-enum-varnames: - SubscriptionNameFree - SubscriptionNameProMonthly - SubscriptionNameProYearly - SubscriptionNameUltraMonthly - SubscriptionNameUltraYearly - SubscriptionNameProLifetime - SubscriptionName20KMonthly - SubscriptionName100KMonthly - SubscriptionName50KMonthly - SubscriptionName200KMonthly - SubscriptionName20KYearly entities.User: properties: active_phone_id: example: 32343a19-da5e-4b1b-a767-3298a73703cb type: string api_key: example: x-api-key type: string created_at: example: "2022-06-05T14:26:02.302718+03:00" type: string email: example: name@email.com type: string id: example: WB7DRDWrJZRGbYrv2CKGkqbzvqdC type: string notification_heartbeat_enabled: example: true type: boolean notification_message_status_enabled: example: true type: boolean notification_newsletter_enabled: example: true type: boolean notification_webhook_enabled: example: true type: boolean subscription_ends_at: example: "2022-06-05T14:26:02.302718+03:00" type: string subscription_id: example: 8f9c71b8-b84e-4417-8408-a62274f65a08 type: string subscription_name: allOf: - $ref: '#/definitions/entities.SubscriptionName' example: free subscription_renews_at: example: "2022-06-05T14:26:02.302718+03:00" type: string subscription_status: example: on_trial type: string timezone: example: Europe/Helsinki type: string updated_at: example: "2022-06-05T14:26:10.303278+03:00" type: string required: - api_key - created_at - email - id - notification_heartbeat_enabled - notification_message_status_enabled - notification_newsletter_enabled - notification_webhook_enabled - subscription_id - subscription_name - timezone - updated_at type: object entities.Webhook: properties: created_at: example: "2022-06-05T14:26:02.302718+03:00" type: string events: example: - message.phone.received items: type: string type: array id: example: 32343a19-da5e-4b1b-a767-3298a73703cb type: string phone_numbers: example: - "+18005550199" - "+18005550100" items: type: string type: array signing_key: example: DGW8NwQp7mxKaSZ72Xq9v67SLqSbWQvckzzmK8D6rvd7NywSEkdMJtuxKyEkYnCY type: string updated_at: example: "2022-06-05T14:26:10.303278+03:00" type: string url: example: https://example.com type: string user_id: example: WB7DRDWrJZRGbYrv2CKGkqbzvqdC type: string required: - created_at - events - id - phone_numbers - signing_key - updated_at - url - user_id type: object requests.DiscordStore: properties: incoming_channel_id: type: string name: type: string server_id: type: string required: - incoming_channel_id - name - server_id type: object requests.DiscordUpdate: properties: incoming_channel_id: type: string name: type: string server_id: type: string required: - incoming_channel_id - name - server_id type: object requests.HeartbeatStore: properties: charging: type: boolean phone_numbers: items: type: string type: array required: - charging - phone_numbers type: object requests.MessageAttachment: properties: content: description: Content is the base64-encoded attachment data example: base64data... type: string content_type: description: ContentType is the MIME type of the attachment example: image/jpeg type: string name: description: Name is the original filename of the attachment example: photo.jpg type: string required: - content - content_type - name type: object requests.MessageBulkSend: properties: attachments: description: Attachments are optional. When you provide a list of attachments, the message will be sent out as an MMS items: type: string type: array content: example: This is a sample text message type: string encrypted: description: Encrypted is used to determine if the content is end-to-end encrypted. Make sure to set the encryption key on the httpSMS mobile app example: false type: boolean from: example: "+18005550199" type: string request_id: description: RequestID is an optional parameter used to track a request from the client's perspective example: 153554b5-ae44-44a0-8f4f-7bbac5657ad4 type: string to: example: - "+18005550100" - "+18005550100" items: type: string type: array required: - content - from - to type: object requests.MessageCallMissed: properties: from: example: "+18005550199" type: string sim: example: SIM1 type: string timestamp: example: "2022-06-05T14:26:09.527976+03:00" type: string to: example: "+18005550100" type: string required: - from - sim - timestamp - to type: object requests.MessageEvent: properties: event_name: description: |- EventName is the type of event * SENT: is emitted when a message is sent by the mobile phone * FAILED: is event is emitted when the message could not be sent by the mobile phone * DELIVERED: is event is emitted when a delivery report has been received by the mobile phone example: SENT type: string reason: description: Reason is the exact error message in case the event is an error type: string timestamp: description: Timestamp is the time when the event was emitted, Please send the timestamp in UTC with as much precision as possible example: "2022-06-05T14:26:09.527976+03:00" type: string required: - event_name - reason - timestamp type: object requests.MessageReceive: properties: attachments: description: Attachments is the list of MMS attachments received with the message items: $ref: '#/definitions/requests.MessageAttachment' type: array content: example: This is a sample text message received on a phone type: string encrypted: description: Encrypted is used to determine if the content is end-to-end encrypted. Make sure to set the encryption key on the httpSMS mobile app example: false type: boolean from: example: "+18005550199" type: string sim: allOf: - $ref: '#/definitions/entities.SIM' description: SIM card that received the message example: SIM1 timestamp: description: Timestamp is the time when the event was emitted, Please send the timestamp in UTC with as much precision as possible example: "2022-06-05T14:26:09.527976+03:00" type: string to: example: "+18005550100" type: string required: - content - encrypted - from - sim - timestamp - to type: object requests.MessageSend: properties: attachments: description: Attachments are optional. When you provide a list of attachments, the message will be sent out as an MMS example: - https://example.com/image.jpg - https://example.com/video.mp4 items: type: string type: array content: example: This is a sample text message type: string encrypted: description: Encrypted is an optional parameter used to determine if the content is end-to-end encrypted. Make sure to set the encryption key on the httpSMS mobile app example: false type: boolean from: example: "+18005550199" type: string request_id: description: RequestID is an optional parameter used to track a request from the client's perspective example: 153554b5-ae44-44a0-8f4f-7bbac5657ad4 type: string send_at: description: SendAt is an optional parameter used to schedule a message to be sent in the future. The time is considered to be in your profile's local timezone and you can queue messages for up to 20 days (480 hours) in the future. example: "2025-12-19T16:39:57-08:00" type: string to: example: "+18005550100" type: string required: - content - from - to type: object requests.MessageSendScheduleStore: properties: name: type: string timezone: type: string windows: items: $ref: '#/definitions/requests.MessageSendScheduleWindow' type: array required: - name - timezone - windows type: object requests.MessageSendScheduleWindow: properties: day_of_week: type: integer end_minute: type: integer start_minute: type: integer required: - day_of_week - end_minute - start_minute type: object requests.MessageThreadUpdate: properties: is_archived: example: true type: boolean required: - is_archived type: object requests.PhoneAPIKeyStoreRequest: properties: name: example: My Phone API Key type: string required: - name type: object requests.PhoneFCMToken: properties: fcm_token: example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzd..... type: string phone_number: example: '[+18005550199]' type: string sim: description: SIM is the SIM slot of the phone in case the phone has more than 1 SIM slot example: SIM1 type: string required: - fcm_token - phone_number - sim type: object requests.PhoneUpsert: properties: fcm_token: example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzd..... type: string max_send_attempts: description: MaxSendAttempts is the number of attempts when sending an SMS message to handle the case where the phone is offline. example: 2 type: integer message_expiration_seconds: description: MessageExpirationSeconds is the duration in seconds after sending a message when it is considered to be expired. example: 12345 type: integer message_send_schedule_id: example: 32343a19-da5e-4b1b-a767-3298a73703cb type: string messages_per_minute: example: 1 type: integer missed_call_auto_reply: example: e.g. This phone cannot receive calls. Please send an SMS instead. type: string phone_number: example: "+18005550199" type: string sim: description: SIM is the SIM slot of the phone in case the phone has more than 1 SIM slot example: SIM1 type: string required: - fcm_token - max_send_attempts - message_expiration_seconds - messages_per_minute - missed_call_auto_reply - phone_number - sim type: object requests.UserNotificationUpdate: properties: heartbeat_enabled: example: true type: boolean message_status_enabled: example: true type: boolean newsletter_enabled: example: true type: boolean webhook_enabled: example: true type: boolean required: - heartbeat_enabled - message_status_enabled - newsletter_enabled - webhook_enabled type: object requests.UserPaymentInvoice: properties: address: example: 221B Baker Street, London type: string city: example: Los Angeles type: string country: example: US type: string name: example: Acme Corp type: string notes: example: Thank you for your business! type: string state: example: CA type: string zip_code: example: "9800" type: string required: - address - city - country - name - notes - state - zip_code type: object requests.UserUpdate: properties: active_phone_id: example: 32343a19-da5e-4b1b-a767-3298a73703cb type: string timezone: example: Europe/Helsinki type: string required: - active_phone_id - timezone type: object requests.WebhookStore: properties: events: items: type: string type: array phone_numbers: example: - "+18005550100" - "+18005550100" items: type: string type: array signing_key: type: string url: type: string required: - events - phone_numbers - signing_key - url type: object requests.WebhookUpdate: properties: events: items: type: string type: array phone_numbers: example: - "+18005550100" - "+18005550100" items: type: string type: array signing_key: type: string url: type: string required: - events - phone_numbers - signing_key - url type: object responses.BadRequest: properties: data: example: The request body is not a valid JSON string type: string message: example: The request isn't properly formed type: string status: example: error type: string required: - data - message - status type: object responses.BillingUsageResponse: properties: data: $ref: '#/definitions/entities.BillingUsage' message: example: Request handled successfully type: string status: example: success type: string required: - data - message - status type: object responses.BillingUsagesResponse: properties: data: items: $ref: '#/definitions/entities.BillingUsage' type: array message: example: Request handled successfully type: string status: example: success type: string required: - data - message - status type: object responses.BulkMessagesResponse: properties: data: items: $ref: '#/definitions/entities.BulkMessage' type: array message: example: Request handled successfully type: string status: example: success type: string required: - data - message - status type: object responses.DiscordResponse: properties: data: $ref: '#/definitions/entities.Discord' message: example: Request handled successfully type: string status: example: success type: string required: - data - message - status type: object responses.DiscordsResponse: properties: data: items: $ref: '#/definitions/entities.Discord' type: array message: example: Request handled successfully type: string status: example: success type: string required: - data - message - status type: object responses.HeartbeatResponse: properties: data: $ref: '#/definitions/entities.Heartbeat' message: example: Request handled successfully type: string status: example: success type: string required: - data - message - status type: object responses.HeartbeatsResponse: properties: data: items: $ref: '#/definitions/entities.Heartbeat' type: array message: example: Request handled successfully type: string status: example: success type: string required: - data - message - status type: object responses.InternalServerError: properties: message: example: We ran into an internal error while handling the request. type: string status: example: error type: string required: - message - status type: object responses.MessageResponse: properties: data: $ref: '#/definitions/entities.Message' message: example: Request handled successfully type: string status: example: success type: string required: - data - message - status type: object responses.MessageSendScheduleResponse: properties: data: $ref: '#/definitions/entities.MessageSendSchedule' message: example: Request handled successfully type: string status: example: success type: string required: - data - message - status type: object responses.MessageSendSchedulesResponse: properties: data: items: $ref: '#/definitions/entities.MessageSendSchedule' type: array message: example: Request handled successfully type: string status: example: success type: string required: - data - message - status type: object responses.MessageThreadsResponse: properties: data: items: $ref: '#/definitions/entities.MessageThread' type: array message: example: Request handled successfully type: string status: example: success type: string required: - data - message - status type: object responses.MessagesResponse: properties: data: items: $ref: '#/definitions/entities.Message' type: array message: example: Request handled successfully type: string status: example: success type: string required: - data - message - status type: object responses.NoContent: properties: message: example: action performed successfully type: string status: example: success type: string required: - message - status type: object responses.NotFound: properties: message: example: cannot find message with ID [32343a19-da5e-4b1b-a767-3298a73703ca] type: string status: example: error type: string required: - message - status type: object responses.OkString: properties: data: type: string message: example: Request handled successfully type: string status: example: success type: string required: - data - message - status type: object responses.PaymentRequired: properties: message: example: You have reached the maximum number of allowed resources. Please upgrade your plan. type: string status: example: error type: string required: - message - status type: object responses.PhoneAPIKeyResponse: properties: data: $ref: '#/definitions/entities.PhoneAPIKey' message: example: Request handled successfully type: string status: example: success type: string required: - data - message - status type: object responses.PhoneAPIKeysResponse: properties: data: items: $ref: '#/definitions/entities.PhoneAPIKey' type: array message: example: Request handled successfully type: string status: example: success type: string required: - data - message - status type: object responses.PhoneResponse: properties: data: $ref: '#/definitions/entities.Phone' message: example: Request handled successfully type: string status: example: success type: string required: - data - message - status type: object responses.PhonesResponse: properties: data: items: $ref: '#/definitions/entities.Phone' type: array message: example: Request handled successfully type: string status: example: success type: string required: - data - message - status type: object responses.Unauthorized: properties: data: example: Make sure your API key is set in the [X-API-Key] header in the request type: string message: example: You are not authorized to carry out this request. type: string status: example: error type: string required: - data - message - status type: object responses.UnprocessableEntity: properties: data: additionalProperties: items: type: string type: array type: object message: example: validation errors while handling request type: string status: example: error type: string required: - data - message - status type: object responses.UserResponse: properties: data: $ref: '#/definitions/entities.User' message: example: Request handled successfully type: string status: example: success type: string required: - data - message - status type: object responses.UserSubscriptionPaymentsResponse: properties: data: items: properties: attributes: properties: billing_reason: type: string card_brand: type: string card_last_four: type: string created_at: type: string currency: type: string currency_rate: type: string discount_total: type: integer discount_total_formatted: type: string discount_total_usd: type: integer refunded: type: boolean refunded_amount: type: integer refunded_amount_formatted: type: string refunded_amount_usd: type: integer refunded_at: {} status: type: string status_formatted: type: string subtotal: type: integer subtotal_formatted: type: string subtotal_usd: type: integer tax: type: integer tax_formatted: type: string tax_inclusive: type: boolean tax_usd: type: integer total: type: integer total_formatted: type: string total_usd: type: integer updated_at: type: string required: - billing_reason - card_brand - card_last_four - created_at - currency - currency_rate - discount_total - discount_total_formatted - discount_total_usd - refunded - refunded_amount - refunded_amount_formatted - refunded_amount_usd - refunded_at - status - status_formatted - subtotal - subtotal_formatted - subtotal_usd - tax - tax_formatted - tax_inclusive - tax_usd - total - total_formatted - total_usd - updated_at type: object id: type: string type: type: string required: - attributes - id - type type: object type: array message: example: Request handled successfully type: string status: example: success type: string required: - data - message - status type: object responses.WebhookResponse: properties: data: $ref: '#/definitions/entities.Webhook' message: example: Request handled successfully type: string status: example: success type: string required: - data - message - status type: object responses.WebhooksResponse: properties: data: items: $ref: '#/definitions/entities.Webhook' type: array message: example: Request handled successfully type: string status: example: success type: string required: - data - message - status type: object host: api.httpsms.com info: contact: email: support@httpsms.com name: support@httpsms.com description: Use your Android phone to send and receive SMS messages via a simple programmable API with end-to-end encryption. license: name: AGPL-3.0 url: https://raw.githubusercontent.com/NdoleStudio/http-sms-manager/main/LICENSE title: httpSMS API Reference version: "1.0" paths: /billing/usage: get: consumes: - application/json description: Get the summary of sent and received messages for a user in the current month produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/responses.BillingUsageResponse' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Get Billing Usage. tags: - Billing /billing/usage-history: get: consumes: - application/json description: Get billing usage records of sent and received messages for a user in the past. It will be sorted by timestamp in descending order. parameters: - description: number of heartbeats to skip in: query minimum: 0 name: skip type: integer - description: number of heartbeats to return in: query maximum: 100 minimum: 1 name: limit type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/responses.BillingUsagesResponse' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Get billing usage history. tags: - Billing /bulk-messages: get: consumes: - application/json description: Fetches the last 10 bulk message order summaries for the authenticated user showing counts per status. produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/responses.BulkMessagesResponse' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: List bulk message orders tags: - BulkSMS post: consumes: - multipart/form-data description: Sends bulk SMS messages to multiple users based on our [CSV template](https://httpsms.com/templates/httpsms-bulk.csv) or our [Excel template](https://httpsms.com/templates/httpsms-bulk.xlsx). parameters: - description: The Excel or CSV file containing the messages to be sent. in: formData name: document required: true type: file produces: - application/json responses: "202": description: Accepted schema: $ref: '#/definitions/responses.NoContent' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Store bulk SMS file tags: - BulkSMS /discord-integrations: get: consumes: - application/json description: Get the discord integrations of a user parameters: - description: number of discord integrations to skip in: query minimum: 0 name: skip type: integer - description: filter discord integrations containing query in: query name: query type: string - description: number of discord integrations to return in: query maximum: 20 minimum: 1 name: limit type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/responses.DiscordsResponse' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Get discord integrations of a user tags: - DiscordIntegration post: consumes: - application/json description: Store a discord integration for the authenticated user parameters: - description: Payload of the discord integration request in: body name: payload required: true schema: $ref: '#/definitions/requests.DiscordStore' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/responses.DiscordResponse' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Store discord integration tags: - DiscordIntegration /discord-integrations/{discordID}: delete: consumes: - application/json description: Delete a discord integration for a user parameters: - default: 32343a19-da5e-4b1b-a767-3298a73703ca description: ID of the discord integration in: path name: discordID required: true type: string produces: - application/json responses: "204": description: No Content schema: $ref: '#/definitions/responses.NoContent' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Delete discord integration tags: - Webhooks put: consumes: - application/json description: Update a discord integration for the currently authenticated user parameters: - default: 32343a19-da5e-4b1b-a767-3298a73703ca description: ID of the discord integration in: path name: discordID required: true type: string - description: Payload of discord integration to update in: body name: payload required: true schema: $ref: '#/definitions/requests.DiscordUpdate' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/responses.DiscordResponse' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Update a discord integration tags: - DiscordIntegration /discord/event: post: consumes: - application/json description: Publish a discord event to the registered listeners produces: - application/json responses: "204": description: No Content schema: $ref: '#/definitions/responses.NoContent' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' summary: Consume a discord event tags: - Discord /heartbeats: get: consumes: - application/json description: Get the last time a phone number requested for outstanding messages. It will be sorted by timestamp in descending order. parameters: - default: "+18005550199" description: the owner's phone number in: query name: owner required: true type: string - description: number of heartbeats to skip in: query minimum: 0 name: skip type: integer - description: filter containing query in: query name: query type: string - description: number of heartbeats to return in: query maximum: 20 minimum: 1 name: limit type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/responses.HeartbeatsResponse' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Get heartbeats of an owner phone number tags: - Heartbeats post: consumes: - application/json description: Store the heartbeat to make notify that a phone number is still active parameters: - description: Payload of the heartbeat request in: body name: payload required: true schema: $ref: '#/definitions/requests.HeartbeatStore' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/responses.HeartbeatResponse' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Register heartbeat of an owner phone number tags: - Heartbeats /integration/3cx/messages: post: consumes: - application/json description: Sends an SMS message from the 3CX platform produces: - application/json responses: "204": description: No Content schema: $ref: '#/definitions/responses.NoContent' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' summary: Sends a 3CX SMS message tags: - 3CXIntegration /message-threads: get: consumes: - application/json description: Get list of contacts which a phone number has communicated with (threads). It will be sorted by timestamp in descending order. parameters: - default: "+18005550199" description: owner phone number in: query name: owner required: true type: string - description: number of messages to skip in: query minimum: 0 name: skip type: integer - description: filter message threads containing query in: query name: query type: string - description: number of messages to return in: query maximum: 20 minimum: 1 name: limit type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/responses.MessageThreadsResponse' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Get message threads for a phone number tags: - MessageThreads /message-threads/{messageThreadID}: delete: consumes: - application/json description: Delete a message thread from the database and also deletes all the messages in the thread. parameters: - default: 32343a19-da5e-4b1b-a767-3298a73703ca description: ID of the message thread in: path name: messageThreadID required: true type: string produces: - application/json responses: "204": description: No Content schema: $ref: '#/definitions/responses.NoContent' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "404": description: Not Found schema: $ref: '#/definitions/responses.NotFound' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Delete a message thread from the database. tags: - MessageThreads put: consumes: - application/json description: Updates the details of a message thread parameters: - default: 32343a19-da5e-4b1b-a767-3298a73703ca description: ID of the message thread in: path name: messageThreadID required: true type: string - description: Payload of message thread details to update in: body name: payload required: true schema: $ref: '#/definitions/requests.MessageThreadUpdate' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/responses.PhoneResponse' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Update a message thread tags: - MessageThreads /messages: get: consumes: - application/json description: Get list of messages which are sent between 2 phone numbers. It will be sorted by timestamp in descending order. parameters: - default: "+18005550199" description: the owner's phone number in: query name: owner required: true type: string - default: "+18005550100" description: the contact's phone number in: query name: contact required: true type: string - description: number of messages to skip in: query minimum: 0 name: skip type: integer - description: filter messages containing query in: query name: query type: string - description: number of messages to return in: query maximum: 20 minimum: 1 name: limit type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/responses.MessagesResponse' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Get messages which are sent between 2 phone numbers tags: - Messages /messages/{messageID}: delete: consumes: - application/json description: Delete a message from the database and removes the message content from the list of threads. parameters: - default: 32343a19-da5e-4b1b-a767-3298a73703ca description: ID of the message in: path name: messageID required: true type: string produces: - application/json responses: "204": description: No Content schema: $ref: '#/definitions/responses.NoContent' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "404": description: Not Found schema: $ref: '#/definitions/responses.NotFound' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Delete a message from the database. tags: - Messages get: consumes: - application/json description: Get a message from the database by the message ID. parameters: - default: 32343a19-da5e-4b1b-a767-3298a73703ca description: ID of the message in: path name: messageID required: true type: string produces: - application/json responses: "204": description: No Content schema: $ref: '#/definitions/responses.MessageResponse' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "404": description: Not Found schema: $ref: '#/definitions/responses.NotFound' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Get a message from the database. tags: - Messages /messages/{messageID}/events: post: consumes: - application/json description: Use this endpoint to send events for a message when it is failed, sent or delivered by the mobile phone. parameters: - default: 32343a19-da5e-4b1b-a767-3298a73703ca description: ID of the message in: path name: messageID required: true type: string - description: Payload of the event emitted. in: body name: payload required: true schema: $ref: '#/definitions/requests.MessageEvent' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/responses.MessageResponse' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "404": description: Not Found schema: $ref: '#/definitions/responses.NotFound' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Upsert an event for a message on the mobile phone tags: - Messages /messages/bulk-send: post: consumes: - application/json description: Add bulk SMS messages to be sent by the android phone parameters: - description: Bulk send message request payload in: body name: payload required: true schema: $ref: '#/definitions/requests.MessageBulkSend' produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/responses.MessagesResponse' type: array "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Send bulk SMS messages tags: - Messages /messages/calls/missed: post: consumes: - application/json description: This endpoint is called by the httpSMS android app to register a missed call event on the mobile phone. parameters: - description: Payload of the missed call event. in: body name: payload required: true schema: $ref: '#/definitions/requests.MessageCallMissed' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/responses.MessageResponse' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "404": description: Not Found schema: $ref: '#/definitions/responses.NotFound' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Register a missed call event on the mobile phone tags: - Messages /messages/outstanding: get: consumes: - application/json description: Get an outstanding message to be sent by an android phone parameters: - default: 32343a19-da5e-4b1b-a767-3298a73703cb description: The ID of the message in: query name: message_id required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/responses.MessageResponse' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Get an outstanding message tags: - Messages /messages/receive: post: consumes: - application/json description: Add a new message received from a mobile phone parameters: - description: Received message request payload in: body name: payload required: true schema: $ref: '#/definitions/requests.MessageReceive' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/responses.MessageResponse' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Receive a new SMS message from a mobile phone tags: - Messages /messages/search: get: consumes: - application/json description: This returns the list of all messages based on the filter criteria including missed calls parameters: - description: Cloudflare turnstile token https://www.cloudflare.com/en-gb/application-services/products/turnstile/ in: header name: token required: true type: string - default: +18005550199,+18005550100 description: the owner's phone numbers in: query name: owners required: true type: string - description: number of messages to skip in: query minimum: 0 name: skip type: integer - description: filter messages containing query in: query name: query type: string - description: number of messages to return in: query maximum: 200 minimum: 1 name: limit type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/responses.MessagesResponse' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Search all messages of a user tags: - Messages /messages/send: post: consumes: - application/json description: Add a new SMS message to be sent by your Android phone parameters: - description: Send message request payload in: body name: payload required: true schema: $ref: '#/definitions/requests.MessageSend' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/responses.MessageResponse' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Send an SMS message tags: - Messages /phone-api-keys: get: consumes: - application/json description: Get list phone API keys which a user has registered on the httpSMS application parameters: - description: number of phone api keys to skip in: query minimum: 0 name: skip type: integer - description: filter phone api keys with name containing query in: query name: query type: string - description: number of phone api keys to return in: query maximum: 100 minimum: 1 name: limit type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/responses.PhoneAPIKeysResponse' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Get the phone API keys of a user tags: - PhoneAPIKeys post: consumes: - application/json description: Creates a new phone API key which can be used to log in to the httpSMS app on your Android phone parameters: - description: Payload of new phone API key. in: body name: payload required: true schema: $ref: '#/definitions/requests.PhoneAPIKeyStoreRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/responses.PhoneAPIKeyResponse' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "402": description: Payment Required schema: $ref: '#/definitions/responses.PaymentRequired' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Store phone API key tags: - PhoneAPIKeys /phone-api-keys/{phoneAPIKeyID}: delete: consumes: - application/json description: Delete a phone API Key from the database and cannot be used for authentication anymore. parameters: - default: 32343a19-da5e-4b1b-a767-3298a73703ca description: ID of the phone API key in: path name: phoneAPIKeyID required: true type: string produces: - application/json responses: "204": description: No Content schema: $ref: '#/definitions/responses.NoContent' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "404": description: Not Found schema: $ref: '#/definitions/responses.NotFound' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Delete a phone API key from the database. tags: - PhoneAPIKeys /phone-api-keys/{phoneAPIKeyID}/phones/{phoneID}: delete: consumes: - application/json description: You will need to login again to the httpSMS app on your Android phone with a new phone API key. parameters: - default: 32343a19-da5e-4b1b-a767-3298a73703ca description: ID of the phone API key in: path name: phoneAPIKeyID required: true type: string - default: 32343a19-da5e-4b1b-a767-3298a73703ca description: ID of the phone in: path name: phoneID required: true type: string produces: - application/json responses: "204": description: No Content schema: $ref: '#/definitions/responses.NoContent' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "404": description: Not Found schema: $ref: '#/definitions/responses.NotFound' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Remove the association of a phone from the phone API key. tags: - PhoneAPIKeys /phones: get: consumes: - application/json description: Get list of phones which a user has registered on the http sms application parameters: - description: number of heartbeats to skip in: query minimum: 0 name: skip type: integer - description: filter phones containing query in: query name: query type: string - description: number of phones to return in: query maximum: 20 minimum: 1 name: limit type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/responses.PhonesResponse' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Get phones of a user tags: - Phones put: consumes: - application/json description: Updates properties of a user's phone. If the phone with this number does not exist, a new one will be created. Think of this method like an 'upsert' parameters: - description: Payload of new phone number. in: body name: payload required: true schema: $ref: '#/definitions/requests.PhoneUpsert' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/responses.PhoneResponse' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Upsert Phone tags: - Phones /phones/{phoneID}: delete: consumes: - application/json description: Delete a phone that has been sored in the database parameters: - default: 32343a19-da5e-4b1b-a767-3298a73703ca description: ID of the phone in: path name: phoneID required: true type: string produces: - application/json responses: "204": description: No Content schema: $ref: '#/definitions/responses.NoContent' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Delete Phone tags: - Phones /phones/fcm-token: put: consumes: - application/json description: Updates the FCM token of a phone. If the phone with this number does not exist, a new one will be created. Think of this method like an 'upsert' parameters: - description: Payload of new FCM token. in: body name: payload required: true schema: $ref: '#/definitions/requests.PhoneFCMToken' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/responses.PhoneResponse' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Upserts the FCM token of a phone tags: - Phones /send-schedules: get: description: List all send schedules owned by the authenticated user. produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/responses.MessageSendSchedulesResponse' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: List send schedules tags: - SendSchedules post: consumes: - application/json description: Create a new send schedule for the authenticated user. parameters: - description: Payload of new send schedule. in: body name: payload required: true schema: $ref: '#/definitions/requests.MessageSendScheduleStore' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/responses.MessageSendScheduleResponse' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "402": description: Payment Required schema: $ref: '#/definitions/responses.PaymentRequired' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Create send schedule tags: - SendSchedules /send-schedules/{scheduleID}: delete: description: Delete a send schedule owned by the authenticated user. parameters: - description: Schedule ID in: path name: scheduleID required: true type: string produces: - application/json responses: "204": description: No Content "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "404": description: Not Found schema: $ref: '#/definitions/responses.NotFound' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Delete send schedule tags: - SendSchedules put: consumes: - application/json description: Update a send schedule owned by the authenticated user. parameters: - description: Schedule ID in: path name: scheduleID required: true type: string - description: Payload of updated send schedule. in: body name: payload required: true schema: $ref: '#/definitions/requests.MessageSendScheduleStore' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/responses.MessageSendScheduleResponse' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "404": description: Not Found schema: $ref: '#/definitions/responses.NotFound' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Update send schedule tags: - SendSchedules /users/{userID}/api-keys: delete: consumes: - application/json description: Rotate the user's API key in case the current API Key is compromised parameters: - default: 32343a19-da5e-4b1b-a767-3298a73703ca description: ID of the user to update in: path name: userID required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/responses.UserResponse' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Rotate the user's API Key tags: - Users /users/{userID}/notifications: put: consumes: - application/json description: Update the email notification settings for a user parameters: - default: 32343a19-da5e-4b1b-a767-3298a73703ca description: ID of the user to update in: path name: userID required: true type: string - description: User notification details to update in: body name: payload required: true schema: $ref: '#/definitions/requests.UserNotificationUpdate' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/responses.UserResponse' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Update notification settings tags: - Users /users/me: delete: consumes: - application/json description: Deletes the currently authenticated user together with all their data. produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/responses.NoContent' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Delete a user tags: - Users get: consumes: - application/json description: Get details of the currently authenticated user produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/responses.UserResponse' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Get current user tags: - Users put: consumes: - application/json description: Updates the details of the currently authenticated user parameters: - description: Payload of user details to update in: body name: payload required: true schema: $ref: '#/definitions/requests.UserUpdate' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/responses.PhoneResponse' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Update a user tags: - Users /users/subscription: delete: description: Cancel the subscription of the authenticated user. produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/responses.NoContent' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Cancel the user's subscription tags: - Users /users/subscription-update-url: get: description: Fetches the subscription URL of the authenticated user. produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/responses.OkString' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Currently authenticated user subscription update URL tags: - Users /users/subscription/invoices/{subscriptionInvoiceID}: post: consumes: - application/json description: Generates a new invoice PDF file for the given subscription payment with given parameters. parameters: - description: Generate subscription payment invoice parameters in: body name: payload required: true schema: $ref: '#/definitions/requests.UserPaymentInvoice' - description: ID of the subscription invoice to generate the PDF for in: path name: subscriptionInvoiceID required: true type: string produces: - application/pdf responses: "200": description: OK schema: type: file "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Generate a subscription payment invoice tags: - Users /users/subscription/payments: get: consumes: - application/json description: Subscription payments are generated throughout the lifecycle of a subscription, typically there is one at the time of purchase and then one for each renewal. produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/responses.UserSubscriptionPaymentsResponse' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Get the last 10 subscription payments. tags: - Users /v1/attachments/{userID}/{messageID}/{attachmentIndex}/{filename}: get: description: Download an MMS attachment by its path components parameters: - description: User ID in: path name: userID required: true type: string - description: Message ID in: path name: messageID required: true type: string - description: Attachment index in: path name: attachmentIndex required: true type: string - description: Filename with extension in: path name: filename required: true type: string produces: - application/octet-stream responses: "200": description: OK schema: type: file "404": description: Not Found schema: $ref: '#/definitions/responses.NotFound' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' summary: Download a message attachment tags: - Attachments /webhooks: get: consumes: - application/json description: Get the webhooks of a user parameters: - description: number of webhooks to skip in: query minimum: 0 name: skip type: integer - description: filter webhooks containing query in: query name: query type: string - description: number of webhooks to return in: query maximum: 20 minimum: 1 name: limit type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/responses.WebhooksResponse' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Get webhooks of a user tags: - Webhooks post: consumes: - application/json description: Store a webhook for the authenticated user parameters: - description: Payload of the webhook request in: body name: payload required: true schema: $ref: '#/definitions/requests.WebhookStore' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/responses.WebhookResponse' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Store a webhook tags: - Webhooks /webhooks/{webhookID}: delete: consumes: - application/json description: Delete a webhook for a user parameters: - default: 32343a19-da5e-4b1b-a767-3298a73703ca description: ID of the webhook in: path name: webhookID required: true type: string produces: - application/json responses: "204": description: No Content schema: $ref: '#/definitions/responses.NoContent' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Delete webhook tags: - Webhooks put: consumes: - application/json description: Update a webhook for the currently authenticated user parameters: - default: 32343a19-da5e-4b1b-a767-3298a73703ca description: ID of the webhook in: path name: webhookID required: true type: string - description: Payload of webhook details to update in: body name: payload required: true schema: $ref: '#/definitions/requests.WebhookUpdate' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/responses.WebhookResponse' "400": description: Bad Request schema: $ref: '#/definitions/responses.BadRequest' "401": description: Unauthorized schema: $ref: '#/definitions/responses.Unauthorized' "422": description: Unprocessable Entity schema: $ref: '#/definitions/responses.UnprocessableEntity' "500": description: Internal Server Error schema: $ref: '#/definitions/responses.InternalServerError' security: - ApiKeyAuth: [] summary: Update a webhook tags: - Webhooks schemes: - https securityDefinitions: ApiKeyAuth: in: header name: x-api-Key type: apiKey swagger: "2.0"