curl --request POST \
--url https://api.lumos.com/v1/apps/{app_uuid}:sync \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"sync_type": "full-sync"
}
'import requests
url = "https://api.lumos.com/v1/apps/{app_uuid}:sync"
payload = { "sync_type": "full-sync" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({sync_type: 'full-sync'})
};
fetch('https://api.lumos.com/v1/apps/{app_uuid}:sync', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.lumos.com/v1/apps/{app_uuid}:sync",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'sync_type' => 'full-sync'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.lumos.com/v1/apps/{app_uuid}:sync"
payload := strings.NewReader("{\n \"sync_type\": \"full-sync\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.lumos.com/v1/apps/{app_uuid}:sync")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"sync_type\": \"full-sync\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lumos.com/v1/apps/{app_uuid}:sync")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"sync_type\": \"full-sync\"\n}"
response = http.request(request)
puts response.read_body{
"operation": {
"id": "<string>",
"done": true,
"result": {},
"error": {
"code": "<string>",
"message": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
},
"metadata": {}
}
}{
"error": {
"detail": "<string>",
"type": "validation",
"code": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"detail": "<string>",
"type": "validation",
"code": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"detail": "<string>",
"type": "validation",
"code": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"detail": "<string>",
"type": "validation",
"code": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"detail": "<string>",
"type": "validation",
"code": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"detail": "<string>",
"type": "validation",
"code": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"detail": "<string>",
"type": "validation",
"code": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"detail": "<string>",
"type": "validation",
"code": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"detail": "<string>",
"type": "validation",
"code": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"detail": "<string>",
"type": "validation",
"code": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}
}Trigger App Sync
Triggers a sync for a connected app. The sync runs asynchronously: the request returns 202 Accepted with an operation. Poll GET /v1/operations/{id} until done is true to follow its status.
curl --request POST \
--url https://api.lumos.com/v1/apps/{app_uuid}:sync \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"sync_type": "full-sync"
}
'import requests
url = "https://api.lumos.com/v1/apps/{app_uuid}:sync"
payload = { "sync_type": "full-sync" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({sync_type: 'full-sync'})
};
fetch('https://api.lumos.com/v1/apps/{app_uuid}:sync', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.lumos.com/v1/apps/{app_uuid}:sync",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'sync_type' => 'full-sync'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.lumos.com/v1/apps/{app_uuid}:sync"
payload := strings.NewReader("{\n \"sync_type\": \"full-sync\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.lumos.com/v1/apps/{app_uuid}:sync")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"sync_type\": \"full-sync\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lumos.com/v1/apps/{app_uuid}:sync")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"sync_type\": \"full-sync\"\n}"
response = http.request(request)
puts response.read_body{
"operation": {
"id": "<string>",
"done": true,
"result": {},
"error": {
"code": "<string>",
"message": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
},
"metadata": {}
}
}{
"error": {
"detail": "<string>",
"type": "validation",
"code": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"detail": "<string>",
"type": "validation",
"code": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"detail": "<string>",
"type": "validation",
"code": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"detail": "<string>",
"type": "validation",
"code": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"detail": "<string>",
"type": "validation",
"code": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"detail": "<string>",
"type": "validation",
"code": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"detail": "<string>",
"type": "validation",
"code": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"detail": "<string>",
"type": "validation",
"code": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"detail": "<string>",
"type": "validation",
"code": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"detail": "<string>",
"type": "validation",
"code": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
The app's ID, which GET /v1/apps returns as id.
Body
Body of POST /v1/apps/{app_uuid}:sync.
Which sync to run. Required. Today only full-sync (a full integration sync that re-pulls accounts, groups, and entitlements) is supported; any other value is rejected with 400. The field is required even with one value so the contract stays stable as more sync kinds are added.
full-sync Set to true to start the app's first sync without an admin reviewing its match rules. A newly connected app's first sync is held for that review and stays deferred until it's started from the Lumos UI or with this flag, so without the flag the request returns 409. It has no effect once the app has completed a sync successfully; a retry after a failed first sync is held for review again and needs the flag once more.
Response
Successful Response
202 response body for endpoints that launch an operation.
The launched operation.
Show child attributes
Show child attributes
Was this page helpful?