48 lines
1.5 KiB
TypeScript
48 lines
1.5 KiB
TypeScript
// Hand-written shared types.
|
|
//
|
|
// Per-endpoint request/response types come from the generated OpenAPI types
|
|
// (see ./generated/openapi.d.ts after running `sync-spec`). The shapes here
|
|
// are the ones that exist *around* every request — wrappers, pagination,
|
|
// auth payloads — and don't belong to any one endpoint.
|
|
|
|
/** Successful response envelope used by most v1 endpoints. */
|
|
export interface ArcadiaEnvelope<T> {
|
|
data: T;
|
|
meta?: ArcadiaMeta;
|
|
}
|
|
|
|
/** Optional metadata block on list responses (pagination, totals, etc). */
|
|
export interface ArcadiaMeta {
|
|
page?: number;
|
|
per_page?: number;
|
|
total?: number;
|
|
total_pages?: number;
|
|
request_id?: string;
|
|
[key: string]: unknown;
|
|
}
|
|
|
|
/** Auth-token pair returned by /auth/login, /auth/refresh, OAuth callbacks.
|
|
* `expires_in` is seconds-from-now (Phoenix Guardian default); compute the
|
|
* absolute expiry on the client if needed. */
|
|
export interface ArcadiaAuthTokens {
|
|
access_token: string;
|
|
refresh_token?: string;
|
|
expires_in?: number;
|
|
token_type?: "Bearer";
|
|
}
|
|
|
|
/** Minimal user shape used by useArcadia / auth-ui until generated types
|
|
* cover the whole User schema. Apps should prefer generated types when
|
|
* available. */
|
|
export interface ArcadiaUser {
|
|
id: string;
|
|
email: string;
|
|
name?: string;
|
|
tenant_id?: string;
|
|
roles?: string[];
|
|
}
|
|
|
|
/** Tenant identifier — either a UUID string, or a slug if the deployment
|
|
* uses friendly tenant slugs. The client doesn't enforce a format. */
|
|
export type ArcadiaTenantId = string;
|