tommy sms API v1
Captures the SMS and MMS your code sends through a provider API instead of delivering them, and shows each one as a phone-style conversation with the segment count and encoding it would really cost on the wire.
These routes read back what tommy captured, in the shape this content type
wants: filters that only mean something here, and the parts that are bytes
rather than JSON. They read from the same store as the events API, so a
client that sends and immediately fetches sees its own write, and every
entry carries the id of the event behind it.
The events API - /api/v1/events, described in its own document - is the
generic view of the same captures, and is the one to use when what you are
asserting does not depend on the content type. The fake vendor endpoints are
described nowhere here: they are the vendors' specifications, not tommy's.
This document is generated from the server's route table. It cannot describe
a route that does not exist, and CI fails if the checked-in copy stops
matching the code.
Server
/api/v1/sms — This tommy's sms API.
Operations
GET
/messages
Every captured text message, newest first.
Parameters
| Name | In | Type | Description |
provider |
query |
string |
Only entries captured by this provider, such as mailjet. |
type |
query |
string |
Only entries of this event type, such as mail.message. |
search |
query |
string |
Case-insensitive substring over the summary and type. |
since |
query |
string |
RFC3339 timestamp, a duration such as 5m, or unix milliseconds. |
limit |
query |
integer |
Maximum number of entries to return. |
offset |
query |
integer |
How many entries to skip. |
to |
query |
string |
Substring of the recipient number. |
from |
query |
string |
Substring of the sender number. |
status |
query |
string |
Delivery status the provider reported, such as queued. |
direction |
query |
string |
outbound or inbound. |
encoding |
query |
string |
GSM-7 or UCS-2. |
mms |
query |
boolean |
Only messages that carry media, or only those that do not. |
Responses
| Status | Body | Description |
200 |
application/json · array of sms.MessageEnvelope
|
Success. |
400 |
application/json · api.Error
|
A query parameter could not be parsed - a malformed since, a negative limit. |
DELETE
/messages
Clear every captured text message.
Responses
| Status | Body | Description |
204 |
no body |
Done. No body. |
GET
/messages/{id}
One message, with its segment arithmetic and media references.
Parameters
| Name | In | Type | Description |
id required |
path |
string |
The event id, as returned by any listing. |
Responses
| Status | Body | Description |
200 |
application/json · sms.MessageEnvelope
|
Success. |
404 |
application/json · api.Error
|
No such resource, or it belongs to another plugin. |
Schemas
api.Error
| Property | Type |
error required | string |
blob.Ref
| Property | Type |
content_type | string |
filename | string |
id required | string |
size required | integer |
sms.Message
| Property | Type |
body required | string |
direction | string |
from | string |
media | array of sms.Media |
messaging_service | string |
segments required | sms.Segments |
status | string |
to required | string |
sms.MessageEnvelope
| Property | Type |
id required | string |
media | array of sms.MediaRef |
message required | sms.Message |
meta | object of any |
provider required | string |
received_at required | string (date-time) |
type required | string |
url | string |
sms.Segments
| Property | Type |
capacity required | integer |
count required | integer |
encoding required | string |
remaining required | integer |
units required | integer |