@upsales/schemas
v0.3.0
Published
Shared Zod schemas and TypeScript types for Upsales CRM entities
Maintainers
Keywords
Readme
@upsales/schemas
Shared Zod schemas and TypeScript types for the Upsales CRM API. Use them to validate data at runtime and get full type safety in your integrations.
Install
npm install @upsales/schemasUsage
import { ClientSchema, CreateClientSchema } from '@upsales/schemas';
import type { Client, CreateClient } from '@upsales/schemas';
// Validate an API response
const response = await fetch('https://power.upsales.com/api/v2/clients/123', {
headers: { Authorization: 'Bearer YOUR_TOKEN' }
});
const json = await response.json();
const client: Client = ClientSchema.parse(json.data);
// Validate before creating
const input: CreateClient = CreateClientSchema.parse({
name: 'Acme Corp',
phone: '+46701234567'
});What's included
Every entity has three schemas:
| Schema | Purpose |
|--------|---------|
| EntitySchema | Full API response shape (GET) |
| CreateEntitySchema | What POST accepts |
| UpdateEntitySchema | What PUT accepts (all fields optional except id) |
Each schema also exports its inferred TypeScript type:
import type { Client, CreateClient, UpdateClient } from '@upsales/schemas';Available entities
Core
Client, Contact, Order, Opportunity, Activity, Appointment, Agreement, Lead, Mail, Ticket
Marketing
Flow, Form, FormSubmit, MailCampaign, MailTemplate, Segment, BannerGroup, SocialEvent
Organization
User, Role, Project, ProjectPlan, Label, Currency
Pipeline & Products
OrderStages, OrderedProduct, Product, SalesQuota
Configuration
ActivityType, AppointmentType, ClientCategory, ContactCategory, CustomFieldDefinition, FieldTranslation, ClientParam, PageScoreRule, ConnectedClient, UserDefinedObject
Events & Tracking
Event, Visit, Notification, PhoneCall, Scoreboard, OtherEvent
Other
AccountProfile, BusinessEmail, DeleteLog, DocumentTemplate, Esign, FileMetadata, Import, Link, MarketRejectlist, SalesboardCard
Integrations
LookerDashboard, LookerExplore, LookerLook, SoliditetClient
Shared types
Address, IdName, Category, CustomField, Quota, OrderStage, ConnectedClient, EntityCategory
Validation examples
Safe parsing (no throw)
const result = CreateClientSchema.safeParse(data);
if (!result.success) {
console.error(result.error.issues);
} else {
// result.data is typed as CreateClient
}Partial validation for updates
import { UpdateClientSchema } from '@upsales/schemas';
// Only id is required, everything else is optional
const update = UpdateClientSchema.parse({
id: 123,
name: 'New Name'
});Custom field handling
import type { CustomField } from '@upsales/schemas';
const fields: CustomField[] = [
{ fieldId: 100, value: 'Gold' },
{ fieldId: 101, value: 42 }
];API reference
This package mirrors the Upsales REST API. Field names in the schemas match the API response keys exactly.
License
ISC
