Bulk resume schedules
Resume one or multiple paused charge schedules in a single request. Resumed schedules will return to active status and begin executing on their next scheduled occurrence. This is useful for reactivating schedules after temporary holds or seasonal pauses.
Request Parametersโ
Required - 1 fieldRequired Parameters
`schedule_ids`ARRAY(required)
Array of schedule IDs to resume. Each ID must start with schd_. Maximum 100 IDs per request.
Responsesโ
200
Schedules resumedReturns a summary of the bulk resume operation with details for each schedule.
Response includes:
object- Always "bulk_operation"operation- "resume"total_count- Total number of schedule IDs providedsuccessful_count- Number of schedules successfully resumedfailed_count- Number of schedules that failed to resumeresults- Array of result objects for each schedule
schedule_id- The schedule IDstatus- "success" or "failed"schedule- Updated schedule object (if successful)error_code- Error code (if failed)error_message- Error description (if failed)
400
Bad requestRequest validation failed. Check the error message for details.
Common causes:
- Missing schedule_ids parameter
- schedule_ids is not an array
- Empty schedule_ids array
- More than 100 schedule IDs provided
- Invalid schedule ID format
401
UnauthorizedAuthentication failed. Invalid or missing API key.
Common causes:
- Missing Authorization header
- Invalid secret key
- Using public key instead of secret key
- Incorrect HTTP Basic Auth format
404
Not foundEndpoint not found or feature not enabled.
Common causes:
- Bulk operations feature not enabled for account
- Incorrect API endpoint URL
5xx
Server errorServer-side error occurred. These are rare but should be handled gracefully.
How to handle:
- Retry the request with exponential backoff
- Check status.omise.co for service incidents
- See Error Handling for detailed guidance
Code samplesโ
- cURL
- Ruby
- Python
- Node.js
- PHP
- Java
- C#
- Go
# Resume multiple paused schedules
curl https://api.omise.co/schedules/bulk_resume \
-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_resume')
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 "Resumed: #{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_resume',
auth=(omise.api_secret, ''),
json={'schedule_ids': schedule_ids}
)
result = response.json()
print(f"Resumed: {result['successful_count']} / {result['total_count']}")
# Check for any failures
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_resume',
{ schedule_ids: scheduleIds },
{
auth: {
username: 'skey_test_5xuy4w91xqz7d1w9u0t',
password: ''
}
}
);
console.log(`Resumed: ${response.data.successful_count} / ${response.data.total_count}`);
// Check for any failures
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_resume',
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 "Resumed: {$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_resume"))
.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_resume")
{
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_resume",
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("Resumed: %.0f / %.0f\n",
result["successful_count"], result["total_count"])
}
Error and result codesโ
Common Error Codesโ
| Code | Description | Resolution |
|---|---|---|
authentication_failure | Invalid API key | Verify your secret key is correct |
invalid_schedule_ids | Invalid or missing schedule_ids | Provide valid array of schedule IDs |
too_many_ids | More than 100 IDs provided | Split into multiple requests |
Per-Schedule Error Codesโ
| Code | Description | Resolution |
|---|---|---|
schedule_not_found | Schedule ID does not exist | Verify schedule ID is correct |
schedule_not_suspended | Schedule is not in suspended status | Only paused schedules can be resumed |
schedule_already_active | Schedule is already active | No action needed |
schedule_deleted | Schedule has been deleted | Cannot resume deleted schedules |
schedule_expired | Schedule has passed its end date | Create a new schedule |
Schedule Status After Resumeโ
| Field | Value |
|---|---|
status | active |
active | true |
API Credentials
Try it outโ
Required - 1 fields
Your IP:
...Loading...