Copy shifts
Needs: Roster, Read-write
Copies up to 50 shifts to another date, for example a week forward. The copies keep their relative days and times.
Note:
resultshassingle_client_shiftsandgroup_shiftsentries for whichever kinds were copied. A kind that failed has anerror, and copied entries can listfailures.
curl -X POST "https://app.imploy.com.au/api/integrations/v1/shifts/copy" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-d '{
"refs": [
"a:123",
"a:124"
],
"target_date": "2026-03-09"
}'
import requests
import json
url = "https://app.imploy.com.au/api/integrations/v1/shifts/copy"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN"
}
data = {
"refs": [
"a:123",
"a:124"
],
"target_date": "2026-03-09"
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
const response = await fetch("https://app.imploy.com.au/api/integrations/v1/shifts/copy", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN"
},
body: JSON.stringify({
"refs": [
"a:123",
"a:124"
],
"target_date": "2026-03-09"
})
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
"bytes"
"encoding/json"
)
func main() {
data := []byte(`{
"refs": [
"a:123",
"a:124"
],
"target_date": "2026-03-09"
}`)
req, err := http.NewRequest("POST", "https://app.imploy.com.au/api/integrations/v1/shifts/copy", bytes.NewBuffer(data))
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer YOUR_API_TOKEN")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println("Response Status:", resp.Status)
}
require 'net/http'
require 'json'
uri = URI('https://app.imploy.com.au/api/integrations/v1/shifts/copy')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request['Authorization'] = 'Bearer YOUR_API_TOKEN'
request.body = '{
"refs": [
"a:123",
"a:124"
],
"target_date": "2026-03-09"
}'
response = http.request(request)
puts response.body
{
"target_date": "2026-03-09",
"results": {
"single_client_shifts": {
"message": "...",
"copied": 2
}
}
}
{
"message": "Invalid or expired access token."
}
{
"message": "Access token does not permit this action."
}
{
"message": "Too many requests."
}
/shifts/copy
Target server for requests. Edit to use your own host.
An organisation access token that starts with imp_at_. Send it as Authorization: Bearer imp_at_XXXX.
imp_at_. Send it as Authorization: Bearer imp_at_XXXX.The media type of the request body
1 to 50 shift refs.
YYYY-MM-DD. The earliest copied shift moves to this date, and the others keep their relative days.
Request Preview
Response
Response will appear here after sending the request
Authentication
Bearer token. An organisation access token that starts with imp_at_. Send it as Authorization: Bearer imp_at_XXXX.
Body
1 to 50 shift refs.
YYYY-MM-DD. The earliest copied shift moves to this date, and the others keep their relative days.