newOS for Developers
Create Account
Register a new user with Firebase token exchange
beginner1 endpointauth
When to Use
- • First-time user signup after phone verification
- • Creating accounts from OAuth providers (Twitter, Instagram)
- • Programmatic user creation for onboarding flows
Prerequisites
- • Valid Firebase ID token (from phone auth or OAuth)
- •
newgraphClientManagerinitialized - • User does not already exist in the system
API Endpoint
| Endpoint | Method | Auth | Description |
|---|---|---|---|
| /user | POST | Firebase Token | Create new user account |
Request & Response Types
// Request Body (from auth.ts)
interface UserCreateRequest {
username?: string; // Unique username
displayName?: string; // Display name
fullName?: string; // Full name
description?: string; // Bio/description
email?: string; // Email address
phone?: string; // Phone number (from Firebase)
}
// Response
interface UserReadPrivateResponse {
id: string;
username: string;
displayName?: string;
created: string;
updated: string;
// ... other private fields
}Step-by-Step Implementation
1
Get Firebase Token
// After Firebase phone auth completes
const firebaseUser = await signInWithPhoneNumber(auth, phone, verifier);
const firebaseToken = await firebaseUser.user.getIdToken();2
Create User with Token
import { create } from "newgraph-signals/actions/auth";
import { newgraphClientManager } from "newgraph-signals";
// Set Firebase token on client manager
newgraphClientManager.updateToken(firebaseToken);
// Create user with profile data
const newUser = await create(firebaseToken, {
username: "myusername",
displayName: "My Display Name",
description: "Bio description",
});
console.log("Created user:", newUser.id);3
Complete Sign-In Flow
// After account creation, get a session token
import { signIn } from "newgraph-signals/actions/auth";
const jwt = await signIn(firebaseToken);
// Now the user is fully authenticated⚠️ Important: After creating the account, you must call
signIn() to get a session token for subsequent API calls.Complete Example
// Full account creation flow (from auth.ts)
import { newgraphClientManager, newgraphClient } from "newgraph-signals";
import { UserReadPrivateResponse } from "@newstackdev/iosdk-newgraph-client-js";
export const create = async (
firebaseToken: string,
user: Partial<UserReadPrivateResponse>
) => {
// Set Firebase token for authentication
newgraphClientManager.updateToken(firebaseToken);
try {
// Call user creation endpoint
const newUser: UserReadPrivateResponse = (
await newgraphClient.api.user.userCreate(user)
).data;
return newUser;
} catch (ex) {
console.error("Account creation failed:", ex);
throw ex;
}
};
// Usage:
const user = await create(firebaseToken, {
username: "newuser123",
displayName: "New User",
description: "Hello world!",
});Edge Cases
Username Already Taken
The API returns 409 Conflict if the username is already in use. Prompt the user to choose a different username.
Invalid Firebase Token
Returns 401 Unauthorized. Ensure the Firebase token is fresh and valid.
User Already Exists
If the Firebase UID is already linked to an account, use signIn() instead of create().
🧪 Quick Test
Sign in to Test
Use the sidebar to sign in with your phone number