スケジュールの一括一時停止
1つまたは複数のアクティブな課金スケジュールを単一のリクエストで一時停止します。一時停止されたスケジュールは再開されるまで実行されません。これは、顧客の紛争中、アカウント保留中、または季節的な一時停止中に定期課金を一時的に停止する場合に便利です。
API認証情報
リクエストパラメータ
必須 - 1フィールド必須パラメータ
`schedule_ids`ARRAY(required)
一時停止するスケジュールIDの配列。各IDはschd_で始まる必要があります。リクエスト当たり最大100 ID。
レスポンス
200
スケジュール一時停止各スケジュールの詳細を含む一括一時停止操作のサマリーを返します。
レスポンスに含まれる内容:
object- 常に "bulk_operation"operation- "pause"total_count- 提供されたスケジュールIDの総数successful_count- 正常に一時停止されたスケジュール数failed_count- 一時停止に失敗したスケジュール数results- 各スケジュールの結果オブジェクトの配列
schedule_id- スケジュールIDstatus- "success" または "failed"schedule- 更新されたスケジュールオブジェクト(成功時)error_code- エラーコード(失敗時)error_message- エラーの説明(失敗時)
400
不正なリクエストリクエストの検証に失敗しました。詳細はエラーメッセージを確認してください。
一般的な原因:
- schedule_idsパラメータが欠落
- schedule_idsが配列ではない
- 空のschedule_ids配列
- 100を超えるスケジュールIDが提供された
- 無効なスケジュールID形式
401
認証エラー認証に失敗しました。APIキーが無効または欠落しています。
一般的な原因:
- Authorizationヘッダーが欠落
- 無効なシークレットキ ー
- シークレットキーの代わりにパブリックキーを使用
- HTTP Basic Auth形式が不正
404
見つかりませんエンドポイントが見つからないか、機能が有効になっていません。
一般的な原因:
- アカウントで一括操作機能が有効になっていない
- APIエンドポイントURLが不正
5xx
サーバーエラーサーバー側でエラーが発生しました。これらは稀ですが、適切に処理する必要があります。
対処方法:
- 指数バックオフでリクエストをリトライ
- status.omise.coでサービスインシデントを確認
- 詳細なガイダンスはエラー処理を参照
コードサンプル
- cURL
- Ruby
- Python
- Node.js
- PHP
- Java
- C#
- Go
# 複数のスケジュールを一時停止
curl https://api.omise.co/schedules/bulk_pause \
-X PATCH \
-u skey_test_5xuy4w91xqz7d1w9u0t: \
-H "Content-Type: application/json" \
-d '{
"schedule_ids": [
"schd_test_5xuy4w91xqz7d1w9u0t",
"schd_test_5xuy4w91xqz7d1w9u0s",
"schd_test_5xuy4w91xqz7d1w9u0r"
]
}'
require 'omise'
require 'net/http'
require 'uri'
require 'json'
Omise.api_key = 'skey_test_5xuy4w91xqz7d1w9u0t'
schedule_ids = [
'schd_test_5xuy4w91xqz7d1w9u0t',
'schd_test_5xuy4w91xqz7d1w9u0s',
'schd_test_5xuy4w91xqz7d1w9u0r'
]
uri = URI('https://api.omise.co/schedules/bulk_pause')
request = Net::HTTP::Patch.new(uri)
request.basic_auth(Omise.api_key, '')
request['Content-Type'] = 'application/json'
request.body = { schedule_ids: schedule_ids }.to_json
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
result = JSON.parse(response.body)
puts "Paused: #{result['successful_count']} / #{result['total_count']}"
import omise
import requests
omise.api_secret = 'skey_test_5xuy4w91xqz7d1w9u0t'
schedule_ids = [
'schd_test_5xuy4w91xqz7d1w9u0t',
'schd_test_5xuy4w91xqz7d1w9u0s',
'schd_test_5xuy4w91xqz7d1w9u0r'
]
response = requests.patch(
'https://api.omise.co/schedules/bulk_pause',
auth=(omise.api_secret, ''),
json={'schedule_ids': schedule_ids}
)
result = response.json()
print(f"Paused: {result['successful_count']} / {result['total_count']}")
# 失敗を確認
for item in result['results']:
if item['status'] == 'failed':
print(f"Failed: {item['schedule_id']} - {item['error_message']}")
const omise = require('omise')({
secretKey: 'skey_test_5xuy4w91xqz7d1w9u0t'
});
const axios = require('axios');
const scheduleIds = [
'schd_test_5xuy4w91xqz7d1w9u0t',
'schd_test_5xuy4w91xqz7d1w9u0s',
'schd_test_5xuy4w91xqz7d1w9u0r'
];
const response = await axios.patch(
'https://api.omise.co/schedules/bulk_pause',
{ schedule_ids: scheduleIds },
{
auth: {
username: 'skey_test_5xuy4w91xqz7d1w9u0t',
password: ''
}
}
);
console.log(`Paused: ${response.data.successful_count} / ${response.data.total_count}`);
// 失敗を確認
response.data.results.forEach(item => {
if (item.status === 'failed') {
console.log(`Failed: ${item.schedule_id} - ${item.error_message}`);
}
});
<?php
define('OMISE_SECRET_KEY', 'skey_test_5xuy4w91xqz7d1w9u0t');
$schedule_ids = [
'schd_test_5xuy4w91xqz7d1w9u0t',
'schd_test_5xuy4w91xqz7d1w9u0s',
'schd_test_5xuy4w91xqz7d1w9u0r'
];
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.omise.co/schedules/bulk_pause',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PATCH',
CURLOPT_USERPWD => OMISE_SECRET_KEY . ':',
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode(['schedule_ids' => $schedule_ids])
]);
$response = curl_exec($curl);
curl_close($curl);
$result = json_decode($response, true);
echo "Paused: {$result['successful_count']} / {$result['total_count']}\n";
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.Base64;
HttpClient client = HttpClient.newHttpClient();
String auth = Base64.getEncoder().encodeToString("skey_test_5xuy4w91xqz7d1w9u0t:".getBytes());
String jsonBody = """
{
"schedule_ids": [
"schd_test_5xuy4w91xqz7d1w9u0t",
"schd_test_5xuy4w91xqz7d1w9u0s",
"schd_test_5xuy4w91xqz7d1w9u0r"
]
}
""";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.omise.co/schedules/bulk_pause"))
.header("Authorization", "Basic " + auth)
.header("Content-Type", "application/json")
.method("PATCH", HttpRequest.BodyPublishers.ofString(jsonBody))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;
var client = new HttpClient();
var credentials = Convert.ToBase64String(
Encoding.ASCII.GetBytes("skey_test_5xuy4w91xqz7d1w9u0t:")
);
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Basic", credentials);
var scheduleIds = new[] {
"schd_test_5xuy4w91xqz7d1w9u0t",
"schd_test_5xuy4w91xqz7d1w9u0s",
"schd_test_5xuy4w91xqz7d1w9u0r"
};
var content = new StringContent(
JsonSerializer.Serialize(new { schedule_ids = scheduleIds }),
Encoding.UTF8,
"application/json"
);
var request = new HttpRequestMessage(new HttpMethod("PATCH"),
"https://api.omise.co/schedules/bulk_pause")
{
Content = content
};
var response = await client.SendAsync(request);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
)
func main() {
scheduleIds := []string{
"schd_test_5xuy4w91xqz7d1w9u0t",
"schd_test_5xuy4w91xqz7d1w9u0s",
"schd_test_5xuy4w91xqz7d1w9u0r",
}
body, _ := json.Marshal(map[string][]string{
"schedule_ids": scheduleIds,
})
req, _ := http.NewRequest("PATCH",
"https://api.omise.co/schedules/bulk_pause",
bytes.NewBuffer(body))
req.SetBasicAuth("skey_test_5xuy4w91xqz7d1w9u0t", "")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
var result map[string]interface{}
json.NewDecoder(resp.Body).Decode(&result)
fmt.Printf("Paused: %.0f / %.0f\n",
result["successful_count"], result["total_count"])
}
エラーと結果コード
一般的なエラーコード
| コード | 説明 | 解決方法 |
|---|---|---|
authentication_failure | 無効なAPIキー | シークレットキーが正しいことを確認 |
invalid_schedule_ids | 無効または欠落したschedule_ids | 有効なスケジュールID配列を提供 |
too_many_ids | 100を超えるIDが提供された | 複数のリクエストに分割 |
スケジュール別エラーコード
| コード | 説明 | 解決方法 |
|---|---|---|
schedule_not_found | スケジュールIDが存在しない | スケジュールIDが正しいことを確認 |
schedule_not_active | スケジュールがアクティブステータスではない | アクティブなスケジュールのみ一時停止可能 |
schedule_already_paused | スケジュールは既に一時停止中 | アクション不要 |
schedule_deleted | スケジュールは削除済み | 削除されたスケジュールは一時停止不可 |
一時停止後のスケジュールステータス
| フィールド | 値 |
|---|---|
status | suspended |
active | false |
試してみる
必須 - 1項目
あなたのIP:
...読み込み中...