AEROSMS(エアロスムス)はAPI経由でスマホやガラケーにSMS(ショートメッセージサービス)を送信することができます。
おもにウェブアプリやスマホアプリの開発者向けに、簡単に、お手軽に、低価格でサービスを提供します。
AEROSMS API は REST を基本に構成し、SMS送信やSMS送信ステータスなど、外部のプログラムから AEROSMS の機能を簡単に使用することを可能にしています。
AEROSMS API は、リクエスト、レスポンスおよびエラー含め、すべて、JSON 形式でやりとりを行います。
AEROSMS API は、RAML (RESTful API Modeling Language) をもとに、設計・管理を行っています。
RAMLはRESTful APIを設計するための定義を YAML ベースでまとめた仕様となっているため、プログラム的にAPI設計を簡易に読み出すことができます。
#%RAML 0.8 title: AEROSMS API baseUri: https://aerosms.net/api/{version} version: v1 mediaType: application/json /message: /send: post: description: "1つの宛先に対して、SMSを送信する" body: application/json schema: sendRequest example: | { "email": "example@aerosms.net" "apikey": "5b8f2433314f1c04e4fb8821c1a0ad78", "message": "1宛先送信テストです。", "label": "○月○日:送信テスト", "to": [ { "number": "090-1234-5678", "tags": [ "customer", "123" ] } ] } responses: 200: body: application/json: schema: sendResponse example: | { "id": 101, "status": "sent", "message": "1宛先送信テストです。", "label": "○月○日:送信テスト", "created_at": "2016-04-01 09:00:00", "send_at": "2016-04-01 09:00:01", "sent_at": "2016-04-01 09:00:04", "duration": "3", "expires_at": "2016-04-01 09:00:10", "to": [ { "id": 201, "number": "09012345678", "tags": [ "customer", "123" ] } ] } 400: body: application/json: schema: !include message.json schemas: - sendRequest: | { "description": "SMS送信用データ", "type": "object", "properties": { "email": { "description": "AEROSMSのログインメールアドレス", "type": "string", "required": true }, "apikey": { "description": "APIキー", "type": "string", "required": true }, "message": { "description": "送信するメッセージ", "type": "string", "required": true, "maxLength": 70, "minLength": 1 }, "label": { "description": "本SMS送信に関するラベル", "type": "string", "required": false, "maxLength": 255 }, "to": [ { "number": { "description": "宛先の携帯番号", "type": "string", "required": true, "pattern": "[090|080|070][\-\d{4}\-\d{4}|\d{8}]" }, "tags": [ "description": "宛先に設定するタグ文字列", "type": "string", "required": false "maxLength": 255 ], "register": { "description": "AEROSMSに宛先を登録するか否か", "type": "boolean", "required": false, "default": true } } ], "expires": { "description": "SMS送信期限(秒)、送信期限がきたらステータスはfailedとなる", "type": "integer", "minimum": 8, "maximum": 16, "required": false, "default": 10 }, "retry": { "description": "リトライ回数、ステータスがfailedになった時点でリトライ開始", "type": "integer", "minimum": 1, "maximum": 3, "required": false, "default": false }, "callback": { "description": "SMS送信結果を受け取るコールバックURL、初回送信およびステータスがsent/failedになった時点でコールバック", "type": "string", "required": false, "pattern": "https?://[\w/:%#\$&\?\(\)~\.=\+\-]+", "maxLength": 1024 }, "dryrun": { "description": "SMS送信が正しく実行されるかの検査(実際にはSMS送信されません)", "type": "boolean", "required": false, "default": false } } } } - sendResponse: | { "description": "SMS送信後の返却データ", "type": "object", "properties": { "id": { "description": "SMS送信時のAEROSMSが管理するID", "type": "integer" }, "code": { "description": "SMS送信時のステータスコード", "type": "integer", "enum": [ 200, 400 ] }, "status": { "description": "SMS送信時のステータス", "type": "string", "enum": [ "pending", "sent", "queued", "failed" ] }, "message": { "description": "送信したメッセージ", "type": "string" }, "label": { "description": "本SMS送信に関するラベル", "type": "string" }, "created_at": { "description": "送信受付日時", "type": "string" }, "send_at": { "description": "送信開始日時", "type": "string" }, "sent_at": { "description": "送信完了日時", "type": "string" }, "duration": { "description": "送信所要時間(秒)", "type": "string" }, "expires_at": { "description": "送信期限", "type": "string" }, "failed_at": { "description": "送信失敗日時", "type": "string" }, "to": [ { "id": { "description": "送信した宛先をAEROSMSが管理するID", "type": "integer" }, "number": { "description": "送信した宛先の携帯番号", "type": "string", "pattern": "\d{11}", }, "tags": [ "description": "送信した宛先に設定したタグ文字列", "type": "string" ], "register": { "description": "AEROSMSに宛先を登録するか否か", "type": "boolean" } } ], "retry": { "description": "リトライ回数", "type": "integer" }, "callback": { "description": "SMS送信結果を受け取るコールバックURL", "type": "string" }, "dryrun": { "description": "SMS送信が正しく実行されるかの検査(実際にはSMS送信されません)", "type": "integer" }, } } }
AEROSMS API で返却するメッセージの仕様です。
すべて、JSON 形式で返却されます。
以下は、300 のメッセージが返却された例です。
{"code":300,"message":{"en":"Mobile number is not correct","ja":"\u9001\u4fe1\u5148\u306e\u643a\u5e2f\u756a\u53f7\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093"}}
200: ja: SMS送信に成功しました en: SMS transmission succeeded 201: ja: SMS送信のドライランに成功しました en: SMS transmission succeeded by dryrun 300: ja: 送信先の携帯番号が正しくありません en: Mobile number is not correct 301: ja: 送信メッセージの文字数が上限を超えています en: The number of characters in the message exceeds the limit 302: ja: 通数の上限を超えています en: Exceeded the limit on the number of SMS transmission 400: ja: SMS送信に失敗しました en: SMS transmission failed 401: ja: 認証が必要です en: Unauthorized 402: ja: SMS送信がタイムアウトしました en: SMS transmission has timed out 403: ja: データベースエラー en: Database Error 404: ja: ファイルシステムエラー en: Filesystem Error 405: ja: 不明なエラーです en: Unknown Error 406: ja: 送信期限までのSMS送信に失敗しました en: SMS transmission failed until deadline