diff --git a/docker/logto-bootstrap.sh b/docker/logto-bootstrap.sh index f2bcd38..73da618 100644 --- a/docker/logto-bootstrap.sh +++ b/docker/logto-bootstrap.sh @@ -121,6 +121,18 @@ TOKEN=$(echo "$TOKEN_RESPONSE" | jq -r '.access_token' 2>/dev/null) [ -z "$TOKEN" ] || [ "$TOKEN" = "null" ] && { log "ERROR: Failed to get token"; exit 1; } log "Got Management API token." +# Verify Management API is fully ready (Logto may still be initializing internally) +log "Verifying Management API is responsive..." +for i in $(seq 1 30); do + VERIFY_RESPONSE=$(curl -s -H "Authorization: Bearer $TOKEN" -H "Host: ${HOST}" "${LOGTO_ENDPOINT}/api/roles" 2>/dev/null) + if echo "$VERIFY_RESPONSE" | jq -e 'type == "array"' >/dev/null 2>&1; then + log "Management API is ready." + break + fi + [ "$i" -eq 30 ] && { log "ERROR: Management API not responsive after 30s"; exit 1; } + sleep 1 +done + # --- Helper: Logto API calls --- api_get() { curl -s -H "Authorization: Bearer $TOKEN" -H "Host: ${HOST}" "${LOGTO_ENDPOINT}${1}" 2>/dev/null || echo "[]"