Mobile client
Mobile menggunakan EXPO_PUBLIC_AORI_API_URL dan bearer/session client. Proxy secret tidak pernah dikompilasi ke aplikasi. Mobile tidak memakai @contracts/*; kontrak global auth tetap berasal dari @repo/auth.
await fetch(`${API_URL}/api/organization/${organizationId}`, {
headers: { Accept: 'application/json', Authorization: `Bearer ${token}` }
});Simpan session di secure storage, refresh saat app aktif kembali, dan tangani 401 dengan sign-in flow. Upload media sebaiknya menggunakan signed upload endpoint, bukan provider credential langsung. Semua mutation mengikuti validasi dan ownership API yang sama dengan web.