API使用例¶
[公開: 2020年9月24日] [更新: 2024年5月23日]
「ショートメッセージ」関連のAPIの使用例です。
重要
さくらのクラウドAPIの利用方法など、一般的な情報については APIドキュメント を参照ください。
また、基本的なアプライアンスの操作については アプライアンス関連API をご参照ください。
SMS関連¶
ヒント
ショートメッセージサービスのようなゾーン共通リソースのAPIは石狩第1ゾーン(is1a)のエンドポイントの利用を推奨します。
ショートメッセージサービス一覧の取得¶
curlコマンド例
curl -u "$SAKURACLOUD_ACCESS_TOKEN:$SAKURACLOUD_ACCESS_TOKEN_SECRET" \
https://secure.sakura.ad.jp/cloud/zone/is1a/api/cloud/1.1/commonserviceitem
レスポンス例
{
"From": 0,
"Count": 1,
"Total": 1,
"CommonServiceItems": [{
"Index": 0,
"ID": "xxxxxxxxxxxx",
"Name": "exmample-sms",
"Description": "example-desc",
"Settings": null,
"SettingsHash": null,
"Status": null,
"ServiceClass": "cloud/esme/1",
"Availability": "available",
"CreatedAt": "2020-09-02T18:21:06+09:00",
"ModifiedAt": "2020-09-02T18:21:06+09:00",
"Provider": {
"ID": 5080001,
"Class": "esme",
"Name": "esme",
"ServiceClass": "cloud/esme"
},
"Icon": null,
"Tags": []
}],
"is_ok": true
}
ショートメッセージサービス情報の取得¶
curlコマンド例
curl -u "$SAKURACLOUD_ACCESS_TOKEN:$SAKURACLOUD_ACCESS_TOKEN_SECRET" \
-X GET \
https://secure.sakura.ad.jp/cloud/zone/is1a/api/cloud/1.1/commonserviceitem/$SMS_ID
レスポンス例
{
"CommonServiceItem": {
"ID": "xxxxxxxxxxxx",
"Name": "example-sms",
"Description": "example-description",
"Settings": null,
"SettingsHash": null,
"Status": null,
"ServiceClass": "cloud/esme/1",
"Availability": "available",
"CreatedAt": "2020-09-02T18:21:06+09:00",
"ModifiedAt": "2020-09-02T18:21:06+09:00",
"Provider": {
"ID": 5080001,
"Class": "esme",
"Name": "esme",
"ServiceClass": "cloud/esme"
},
"Icon": null,
"Tags": []
},
"is_ok": true
}
ショートメッセージサービスの送信ログの取得¶
curlコマンド例
curl -u "$SAKURACLOUD_ACCESS_TOKEN:$SAKURACLOUD_ACCESS_TOKEN_SECRET" \
-X GET \
https://secure.sakura.ad.jp/cloud/zone/is1a/api/cloud/1.1/commonserviceitem/$SMS_ID/esme/logs
レスポンス例
{
"ESME": {
"logs": [
{
"messageId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"status": "Delivered",
"otp": "xxxxxx",
"destination": "81xxxxxxxxxx",
"sentAt": "2020-09-09T02:14:24.899294Z",
"doneAt": "2020-09-09T02:14:31.841411Z",
"retryCount": 0
},
{
"messageId": "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy",
"status": "Accepted",
"otp": "yyyyyy",
"destination": "81yyyyyyyyyy",
"sentAt": "2020-09-02T09:22:18.860250Z",
"doneAt": "2020-09-02T09:22:24.841323Z",
"retryCount": 0
},
{
"messageId": "zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz",
"status": "Failed",
"otp": "zzzzzz",
"destination": "81zzzzzzzzzz",
"sentAt": "2020-09-02T10:10:11.195837Z",
"doneAt": "2020-09-02T10:10:13.102934Z",
"retryCount": 0
}
],
"Count": 3
},
"is_ok": true
}
ショートメッセージサービスの作成¶
curlコマンド例
curl -u "$SAKURACLOUD_ACCESS_TOKEN:$SAKURACLOUD_ACCESS_TOKEN_SECRET" \
-X POST \
https://secure.sakura.ad.jp/cloud/zone/is1a/api/cloud/1.1/commonserviceitem \
-d '{
"CommonServiceItem": {
"Name": "example-sms",
"Description": "example-description",
"Tags": [],
"Icon": {},
"Provider": {
"Class": "esme"
}
}
}'
レスポンス例
{
"CommonServiceItem": {
"ID": "xxxxxxxxxxxx",
"Name": "example-sms",
"Description": "example-description",
"Settings": null,
"SettingsHash": null,
"Status": null,
"ServiceClass": "cloud\/esme\/1",
"Availability": "available",
"CreatedAt": "2020-09-11T13:44:23+09:00",
"ModifiedAt": "2020-09-11T13:44:23+09:00",
"Provider": {
"ID": 5080001,
"Class": "esme",
"Name": "esme",
"ServiceClass": "cloud\/esme"
},
"Icon": null,
"Tags": []
},
"Success": true,
"is_ok": true
}
ショートメッセージサービスの削除¶
curlコマンド例
curl -u "$SAKURACLOUD_ACCESS_TOKEN:$SAKURACLOUD_ACCESS_TOKEN_SECRET" \
-X DELETE \
https://secure.sakura.ad.jp/cloud/zone/is1a/api/cloud/1.1/commonserviceitem/$SMS_ID \
-d '{
"CommonServiceItem": {
"Name": "example-sms",
"Description": "example-description",
"Tags": [],
"Icon": {},
"Provider": {
"Class": "esme"
}
}
}'
レスポンス例
{
"CommonServiceItem": {
"ID": "xxxxxxxxxxxx",
"Name": "example-sms",
"Description": "example-description",
"Settings": null,
"SettingsHash": null,
"Status": null,
"ServiceClass": "cloud\/esme\/1",
"Availability": "discontinued",
"CreatedAt": "2020-09-10T18:31:52+09:00",
"ModifiedAt": "2020-09-10T18:31:52+09:00",
"Provider": {
"ID": 5080001,
"Class": "esme",
"Name": "esme",
"ServiceClass": "cloud\/esme"
},
"Icon": null,
"Tags": []
},
"Success": true,
"is_ok": true
}
OTPを生成して二要素認証SMSの送信¶
curlコマンド例
curl -u "$SAKURACLOUD_ACCESS_TOKEN:$SAKURACLOUD_ACCESS_TOKEN_SECRET" \
-X PUT \
https://secure.sakura.ad.jp/cloud/zone/is1a/api/cloud/1.1/commonserviceitem/$SMS_ID/esme/2fa/otp \
-d '{
"ESME": {
"destination": "81zzzzzzzzzz",
"sender": "test",
"otpOperation": "generate"
}
}'
Web OTP APIに対応したフォーマットで送信する場合は、リクエストボディに domain_name フィールドを追加してください。
curl -u "$SAKURACLOUD_ACCESS_TOKEN:$SAKURACLOUD_ACCESS_TOKEN_SECRET" \
-X PUT \
https://secure.sakura.ad.jp/cloud/zone/is1a/api/cloud/1.1/commonserviceitem/$SMS_ID/esme/2fa/otp \
-d '{
"ESME": {
"destination": "81zzzzzzzzzz",
"sender": "test",
"otpOperation": "generate",
"domain_name": "sms.example.com"
}
}'
レスポンス例
{
"ESME": {
"messageId": "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy",
"otp": "yyyyyy",
"status": "Accepted"
},
"is_ok": true
}
OTPを渡して二要素認証SMSの送信¶
curlコマンド例
curl -u "$SAKURACLOUD_ACCESS_TOKEN:$SAKURACLOUD_ACCESS_TOKEN_SECRET" \
-X PUT \
https://secure.sakura.ad.jp/cloud/zone/is1a/api/cloud/1.1/commonserviceitem/$SMS_ID/esme/2fa \
-d '{
"ESME": {
"otp": "yyyyyy",
"destination": "81zzzzzzzzzz",
"sender": "test",
"otpOperation": "input"
}
}'
Web OTP APIに対応したフォーマットで送信する場合は、リクエストボディに domain_name フィールドを追加してください。
curl -u "$SAKURACLOUD_ACCESS_TOKEN:$SAKURACLOUD_ACCESS_TOKEN_SECRET" \
-X PUT \
https://secure.sakura.ad.jp/cloud/zone/is1a/api/cloud/1.1/commonserviceitem/$SMS_ID/esme/2fa \
-d '{
"ESME": {
"otp": "yyyyyy",
"destination": "81zzzzzzzzzz",
"sender": "test",
"otpOperation": "input",
"domain_name": "sms.example.com"
}
}'
レスポンス例
{
"ESME": {
"messageId": "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy",
"otp": "yyyyyy",
"status": "Accepted"
},
"is_ok": true
}