curl -X GET "https://api.tktchurch.com/v1/auth/users" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
const listUsers = async (accessToken) => {
const response = await fetch('https://api.tktchurch.com/v1/auth/users', {
method: 'GET',
headers: {
'Authorization': `Bearer ${accessToken}`
}
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.error.reason);
}
return response.json();
};
// Usage
try {
const users = await listUsers('eyJhbGciOiJIUzI1NiIs...');
console.log('Users:', users);
} catch (error) {
console.error('Failed to list users:', error.message);
}
func listUsers(accessToken: String) async throws -> [User] {
var urlRequest = URLRequest(url: URL(string: "https://api.tktchurch.com/v1/auth/users")!)
urlRequest.httpMethod = "GET"
urlRequest.setValue("Bearer \(accessToken)", forHTTPHeaderField: "Authorization")
let (data, response) = try await URLSession.shared.data(for: urlRequest)
guard let httpResponse = response as? HTTPURLResponse else {
throw URLError(.badServerResponse)
}
if httpResponse.statusCode != 200 {
let error = try JSONDecoder().decode(ErrorResponse.self, from: data)
throw error
}
return try JSONDecoder().decode([User].self, from: data)
}
// Usage
do {
let users = try await listUsers(accessToken: "eyJhbGciOiJIUzI1NiIs...")
print("Users:", users)
} catch {
print("Failed to list users: \(error.localizedDescription)")
}
class UserService(private val client: OkHttpClient) {
suspend fun listUsers(accessToken: String): List<User> {
val request = Request.Builder()
.url("https://api.tktchurch.com/v1/auth/users")
.get()
.header("Authorization", "Bearer $accessToken")
.build()
client.newCall(request).execute().use { response ->
if (!response.isSuccessful) {
val error = response.body?.string()?.fromJson<ErrorResponse>()
throw Exception(error?.reason ?: "Failed to list users")
}
return response.body?.string()?.fromJson<List<User>>()
?: throw Exception("Empty response")
}
}
}
// Usage
try {
val users = userService.listUsers("eyJhbGciOiJIUzI1NiIs...")
println("Users: $users")
} catch (e: Exception) {
println("Failed to list users: ${e.message}")
}
import axios from 'axios';
interface User {
id: string;
email: string;
firstName?: string;
lastName?: string;
status: 'active' | 'inactive' | 'suspended';
provider: 'local' | 'google' | 'facebook' | 'apple';
providerInfo?: {
providerId?: string;
displayName?: string;
photoUrl?: string;
email?: string;
};
lastLoginAt?: string;
createdAt: string;
}
const listUsers = async (accessToken: string): Promise<User[]> => {
try {
const response = await axios.get(
'https://api.tktchurch.com/v1/auth/users',
{
headers: {
'Authorization': `Bearer ${accessToken}`
},
}
);
return response.data;
} catch (error) {
if (axios.isAxiosError(error)) {
throw new Error(error.response?.data?.error?.reason || 'Failed to list users');
}
throw error;
}
};
// Usage
try {
const users = await listUsers('eyJhbGciOiJIUzI1NiIs...');
console.log('Users:', users);
} catch (error) {
console.error('Failed to list users:', error.message);
}
[
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"email": "[email protected]",
"firstName": "John",
"lastName": "Doe",
"status": "active",
"provider": "google",
"providerInfo": {
"providerId": "12345",
"displayName": "John Doe",
"photoUrl": "https://example.com/photo.jpg",
"email": "[email protected]"
},
"lastLoginAt": "2024-01-20T08:30:00Z",
"createdAt": "2024-01-01T00:00:00Z"
}
]
{
"error": {
"status": 401,
"reason": "Invalid or expired access token"
}
}
Users
List Users
List all users in the system
GET
/
auth
/
users
curl -X GET "https://api.tktchurch.com/v1/auth/users" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
const listUsers = async (accessToken) => {
const response = await fetch('https://api.tktchurch.com/v1/auth/users', {
method: 'GET',
headers: {
'Authorization': `Bearer ${accessToken}`
}
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.error.reason);
}
return response.json();
};
// Usage
try {
const users = await listUsers('eyJhbGciOiJIUzI1NiIs...');
console.log('Users:', users);
} catch (error) {
console.error('Failed to list users:', error.message);
}
func listUsers(accessToken: String) async throws -> [User] {
var urlRequest = URLRequest(url: URL(string: "https://api.tktchurch.com/v1/auth/users")!)
urlRequest.httpMethod = "GET"
urlRequest.setValue("Bearer \(accessToken)", forHTTPHeaderField: "Authorization")
let (data, response) = try await URLSession.shared.data(for: urlRequest)
guard let httpResponse = response as? HTTPURLResponse else {
throw URLError(.badServerResponse)
}
if httpResponse.statusCode != 200 {
let error = try JSONDecoder().decode(ErrorResponse.self, from: data)
throw error
}
return try JSONDecoder().decode([User].self, from: data)
}
// Usage
do {
let users = try await listUsers(accessToken: "eyJhbGciOiJIUzI1NiIs...")
print("Users:", users)
} catch {
print("Failed to list users: \(error.localizedDescription)")
}
class UserService(private val client: OkHttpClient) {
suspend fun listUsers(accessToken: String): List<User> {
val request = Request.Builder()
.url("https://api.tktchurch.com/v1/auth/users")
.get()
.header("Authorization", "Bearer $accessToken")
.build()
client.newCall(request).execute().use { response ->
if (!response.isSuccessful) {
val error = response.body?.string()?.fromJson<ErrorResponse>()
throw Exception(error?.reason ?: "Failed to list users")
}
return response.body?.string()?.fromJson<List<User>>()
?: throw Exception("Empty response")
}
}
}
// Usage
try {
val users = userService.listUsers("eyJhbGciOiJIUzI1NiIs...")
println("Users: $users")
} catch (e: Exception) {
println("Failed to list users: ${e.message}")
}
import axios from 'axios';
interface User {
id: string;
email: string;
firstName?: string;
lastName?: string;
status: 'active' | 'inactive' | 'suspended';
provider: 'local' | 'google' | 'facebook' | 'apple';
providerInfo?: {
providerId?: string;
displayName?: string;
photoUrl?: string;
email?: string;
};
lastLoginAt?: string;
createdAt: string;
}
const listUsers = async (accessToken: string): Promise<User[]> => {
try {
const response = await axios.get(
'https://api.tktchurch.com/v1/auth/users',
{
headers: {
'Authorization': `Bearer ${accessToken}`
},
}
);
return response.data;
} catch (error) {
if (axios.isAxiosError(error)) {
throw new Error(error.response?.data?.error?.reason || 'Failed to list users');
}
throw error;
}
};
// Usage
try {
const users = await listUsers('eyJhbGciOiJIUzI1NiIs...');
console.log('Users:', users);
} catch (error) {
console.error('Failed to list users:', error.message);
}
[
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"email": "[email protected]",
"firstName": "John",
"lastName": "Doe",
"status": "active",
"provider": "google",
"providerInfo": {
"providerId": "12345",
"displayName": "John Doe",
"photoUrl": "https://example.com/photo.jpg",
"email": "[email protected]"
},
"lastLoginAt": "2024-01-20T08:30:00Z",
"createdAt": "2024-01-01T00:00:00Z"
}
]
{
"error": {
"status": 401,
"reason": "Invalid or expired access token"
}
}
This endpoint requires authentication.
Response
Returns an array of users.string
User’s unique identifier (UUID)
string
User’s email address
string
User’s first name
string
User’s last name
string
User’s account status. One of:
active: User is active and can access the systeminactive: User is inactive (unverified email or deactivated account)suspended: User is temporarily suspended
string
Primary authentication provider. One of:
local: Local authentication using email and passwordgoogle: Google OAuth authenticationfacebook: Facebook OAuth authenticationapple: Apple Sign In authentication
object
string
Timestamp of last login
string
Account creation timestamp
Error Responses
object
Common error cases:
- 401 Unauthorized: Missing or invalid access token
curl -X GET "https://api.tktchurch.com/v1/auth/users" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
const listUsers = async (accessToken) => {
const response = await fetch('https://api.tktchurch.com/v1/auth/users', {
method: 'GET',
headers: {
'Authorization': `Bearer ${accessToken}`
}
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.error.reason);
}
return response.json();
};
// Usage
try {
const users = await listUsers('eyJhbGciOiJIUzI1NiIs...');
console.log('Users:', users);
} catch (error) {
console.error('Failed to list users:', error.message);
}
func listUsers(accessToken: String) async throws -> [User] {
var urlRequest = URLRequest(url: URL(string: "https://api.tktchurch.com/v1/auth/users")!)
urlRequest.httpMethod = "GET"
urlRequest.setValue("Bearer \(accessToken)", forHTTPHeaderField: "Authorization")
let (data, response) = try await URLSession.shared.data(for: urlRequest)
guard let httpResponse = response as? HTTPURLResponse else {
throw URLError(.badServerResponse)
}
if httpResponse.statusCode != 200 {
let error = try JSONDecoder().decode(ErrorResponse.self, from: data)
throw error
}
return try JSONDecoder().decode([User].self, from: data)
}
// Usage
do {
let users = try await listUsers(accessToken: "eyJhbGciOiJIUzI1NiIs...")
print("Users:", users)
} catch {
print("Failed to list users: \(error.localizedDescription)")
}
class UserService(private val client: OkHttpClient) {
suspend fun listUsers(accessToken: String): List<User> {
val request = Request.Builder()
.url("https://api.tktchurch.com/v1/auth/users")
.get()
.header("Authorization", "Bearer $accessToken")
.build()
client.newCall(request).execute().use { response ->
if (!response.isSuccessful) {
val error = response.body?.string()?.fromJson<ErrorResponse>()
throw Exception(error?.reason ?: "Failed to list users")
}
return response.body?.string()?.fromJson<List<User>>()
?: throw Exception("Empty response")
}
}
}
// Usage
try {
val users = userService.listUsers("eyJhbGciOiJIUzI1NiIs...")
println("Users: $users")
} catch (e: Exception) {
println("Failed to list users: ${e.message}")
}
import axios from 'axios';
interface User {
id: string;
email: string;
firstName?: string;
lastName?: string;
status: 'active' | 'inactive' | 'suspended';
provider: 'local' | 'google' | 'facebook' | 'apple';
providerInfo?: {
providerId?: string;
displayName?: string;
photoUrl?: string;
email?: string;
};
lastLoginAt?: string;
createdAt: string;
}
const listUsers = async (accessToken: string): Promise<User[]> => {
try {
const response = await axios.get(
'https://api.tktchurch.com/v1/auth/users',
{
headers: {
'Authorization': `Bearer ${accessToken}`
},
}
);
return response.data;
} catch (error) {
if (axios.isAxiosError(error)) {
throw new Error(error.response?.data?.error?.reason || 'Failed to list users');
}
throw error;
}
};
// Usage
try {
const users = await listUsers('eyJhbGciOiJIUzI1NiIs...');
console.log('Users:', users);
} catch (error) {
console.error('Failed to list users:', error.message);
}
[
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"email": "[email protected]",
"firstName": "John",
"lastName": "Doe",
"status": "active",
"provider": "google",
"providerInfo": {
"providerId": "12345",
"displayName": "John Doe",
"photoUrl": "https://example.com/photo.jpg",
"email": "[email protected]"
},
"lastLoginAt": "2024-01-20T08:30:00Z",
"createdAt": "2024-01-01T00:00:00Z"
}
]
{
"error": {
"status": 401,
"reason": "Invalid or expired access token"
}
}
