スケジュールの一括削除
1つまたは複数の課金スケジュールを単一のリクエストで完全に削除します。削除されたスケジュールは今後の実行を行わず、復元することはできません。過去の実行と関連する課金は履歴記録として保持されます。
API認証情報
リクエストパラメータ
必須 - 1フィールド必須パラメータ
`schedule_ids`ARRAY(required)
削除するスケジュールIDの配列。各IDはschd_で始まる必要があります。リクエスト当たり最大100 ID。
レスポンス
200
スケジュール削除各スケジュールの詳細を含む一括削除操作のサマリーを返します。
レスポンスに含まれる内容:
object- 常に "bulk_operation"operation- "delete"total_count- 提供されたスケジュールIDの総数successful_count- 正常に削除されたスケジュール数failed_count- 削除に失敗したスケジュール数results- 各スケジュールの結果オブジェクトの配列
schedule_id- スケジュールIDstatus- "success" または "failed"schedule- deleted=trueの削除されたスケジュールオブジェクト(成功時)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_delete \
-X DELETE \
-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_delete')
request = Net::HTTP::Delete.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 "Deleted: #{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.delete(
'https://api.omise.co/schedules/bulk_delete',
auth=(omise.api_secret, ''),
json={'schedule_ids': schedule_ids}
)
result = response.json()
print(f"Deleted: {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.delete(
'https://api.omise.co/schedules/bulk_delete',
{
auth: {
username: 'skey_test_5xuy4w91xqz7d1w9u0t',
password: ''
},
data: { schedule_ids: scheduleIds }
}
);
console.log(`Deleted: ${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_delete',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'DELETE',
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 "Deleted: {$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_delete"))
.header("Authorization", "Basic " + auth)
.header("Content-Type", "application/json")
.method("DELETE", 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(HttpMethod.Delete,
"https://api.omise.co/schedules/bulk_delete")
{
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("DELETE",
"https://api.omise.co/schedules/bulk_delete",
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("Deleted: %.0f / %.0f\n",
result["successful_count"], result["total_count"])
}