API使用例

[公開: 2020年9月24日] [更新: 2021年3月25日]

「ショートメッセージ」関連の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
}