UNPKG

@swoft/party-manager

Version:
1 lines • 51.2 kB
{"version":3,"sources":["../src/integration/contracts/zodios-api.ts","../src/integration/contracts/person-api-contract.ts","../src/integration/contracts/organisation-api-contract.ts"],"sourcesContent":["/**\n * Party Manager Domain - Zodios API Definitions\n * \n * Type-safe API contracts using Zodios to ensure backend, frontend,\n * and MCP clients always stay in sync. Single source of truth!\n */\n\nimport { makeApi } from '@zodios/core';\nimport { z } from 'zod';\n\n// Zod schemas based on existing Party Manager contracts\n\n// Person Schemas\nexport const PersonSummarySchema = z.object({\n personId: z.string().describe('Unique person identifier'),\n email: z.string().email().describe('Person email address'),\n firstName: z.string().describe('Person first name'),\n lastName: z.string().describe('Person last name'),\n displayName: z.string().describe('Person display name'),\n roleType: z.enum(['Human', 'AiAgent']).describe('Type of person'),\n isActive: z.boolean().describe('Whether person is active'),\n contactInfo: z.object({\n phone: z.string().optional(),\n preferredName: z.string().optional()\n }),\n professionalInfo: z.object({\n department: z.string().optional(),\n jobTitle: z.string().optional(),\n managerId: z.string().optional(),\n managerName: z.string().optional(),\n location: z.string().optional(),\n hireDate: z.string().optional() // ISO date\n }),\n organizationContext: z.object({\n organizationId: z.string(),\n organizationName: z.string(),\n organizationType: z.string()\n }).optional(),\n profileMetrics: z.object({\n directReportsCount: z.number(),\n accountCreatedAt: z.string(),\n lastLoginAt: z.string().optional(),\n totalLoginCount: z.number()\n }),\n securityProfile: z.object({\n mfaEnabled: z.boolean(),\n accountLocked: z.boolean(),\n failedLoginAttempts: z.number(),\n lastPasswordChange: z.string().optional()\n }),\n auditInfo: z.object({\n createdAt: z.string(),\n updatedAt: z.string()\n })\n});\n\nexport const PersonQueryCriteriaSchema = z.object({\n searchTerm: z.string().optional().describe('Search across name, email, and other text fields'),\n email: z.string().optional().describe('Exact email match'),\n firstName: z.string().optional().describe('Exact or partial first name'),\n lastName: z.string().optional().describe('Exact or partial last name'),\n roleType: z.enum(['Human', 'AiAgent', 'all']).optional(),\n isActive: z.boolean().optional(),\n department: z.string().optional(),\n jobTitle: z.string().optional(),\n managerId: z.string().optional(),\n organizationId: z.string().optional(),\n hasManager: z.boolean().optional(),\n hasDirectReports: z.boolean().optional(),\n locationFilter: z.object({\n country: z.string().optional(),\n region: z.string().optional(),\n city: z.string().optional()\n }).optional(),\n securityFilters: z.object({\n mfaEnabled: z.boolean().optional(),\n accountLocked: z.boolean().optional(),\n hasFailedLogins: z.boolean().optional(),\n passwordExpired: z.boolean().optional()\n }).optional(),\n pagination: z.object({\n limit: z.number().optional(),\n offset: z.number().optional(),\n sortBy: z.enum(['name', 'email', 'createdAt', 'lastLogin', 'department']).optional(),\n sortOrder: z.enum(['asc', 'desc']).optional()\n }).optional()\n});\n\nexport const CreatePersonRequestSchema = z.object({\n email: z.string().email().describe('Person email address'),\n firstName: z.string().describe('Person first name'),\n lastName: z.string().describe('Person last name'),\n roleType: z.enum(['Human', 'AiAgent']).describe('Type of person'),\n organizationId: z.string().optional().describe('Organization ID'),\n departmentId: z.string().optional().describe('Department ID'),\n jobTitle: z.string().optional().describe('Job title'),\n managerId: z.string().optional().describe('Manager person ID'),\n contactInfo: z.object({\n phone: z.string().optional(),\n preferredName: z.string().optional()\n }).optional()\n});\n\n// Organization Schemas\nexport const OrganizationSummarySchema = z.object({\n organizationId: z.string().describe('Unique organization identifier'),\n legalName: z.string().describe('Legal organization name'),\n displayName: z.string().optional().describe('Display name'),\n tradingName: z.string().optional().describe('Trading name'),\n businessProfile: z.object({\n industry: z.string(),\n organizationType: z.string(),\n organizationSize: z.enum(['startup', 'small', 'medium', 'large', 'enterprise']),\n foundedYear: z.number().optional()\n }),\n contactDetails: z.object({\n primaryEmail: z.string().optional(),\n primaryPhone: z.string().optional(),\n website: z.string().optional()\n }),\n locationInfo: z.object({\n headquartersCountry: z.string().optional(),\n headquartersRegion: z.string().optional(),\n headquartersCity: z.string().optional(),\n operatingRegions: z.array(z.string())\n }),\n employeeMetrics: z.object({\n totalEmployees: z.number(),\n humanEmployees: z.number(),\n aiAgents: z.number(),\n recentHires: z.number(),\n departmentCount: z.number()\n }),\n operationalStatus: z.object({\n isActive: z.boolean(),\n operationalSince: z.string().optional(),\n lastActivityDate: z.string().optional()\n }),\n auditInfo: z.object({\n createdAt: z.string(),\n updatedAt: z.string()\n })\n});\n\nexport const OrganizationQueryCriteriaSchema = z.object({\n searchTerm: z.string().optional(),\n legalName: z.string().optional(),\n industry: z.string().optional(),\n organizationType: z.string().optional(),\n organizationSize: z.enum(['startup', 'small', 'medium', 'large', 'enterprise', 'all']).optional(),\n isActive: z.boolean().optional(),\n pagination: z.object({\n limit: z.number().optional(),\n offset: z.number().optional(),\n sortBy: z.enum(['name', 'industry', 'size', 'createdAt', 'employeeCount']).optional(),\n sortOrder: z.enum(['asc', 'desc']).optional()\n }).optional()\n});\n\n// Authentication Schemas\nexport const AuthenticationSummarySchema = z.object({\n personId: z.string(),\n authenticationId: z.string(),\n email: z.string(),\n accountStatus: z.object({\n status: z.enum(['active', 'locked', 'suspended', 'pending_activation']),\n isEmailVerified: z.boolean(),\n accountCreationDate: z.string(),\n lastStatusChange: z.string().optional()\n }),\n sessionMetrics: z.object({\n hasActiveSession: z.boolean(),\n activeSessionCount: z.number(),\n lastLoginAt: z.string().optional(),\n lastLoginIP: z.string().optional(),\n totalLoginCount: z.number(),\n averageSessionDuration: z.number()\n }),\n securitySettings: z.object({\n mfaEnabled: z.boolean(),\n mfaMethod: z.enum(['totp', 'sms', 'email']).optional(),\n passwordLastChanged: z.string().optional(),\n passwordStrength: z.enum(['weak', 'medium', 'strong']),\n failedLoginAttempts: z.number(),\n lockoutExpiresAt: z.string().optional()\n }),\n auditInfo: z.object({\n createdAt: z.string(),\n updatedAt: z.string()\n })\n});\n\n// Party Manager Domain API using Zodios\nexport const partyManagerApi = makeApi([\n // Person Management\n {\n method: 'get',\n path: '/api/persons',\n alias: 'getPersons',\n description: 'Get persons with optional filtering and pagination',\n parameters: [\n {\n name: 'query',\n type: 'Query',\n schema: PersonQueryCriteriaSchema\n }\n ],\n response: z.object({\n items: z.array(PersonSummarySchema),\n total: z.number(),\n hasMore: z.boolean(),\n pagination: z.object({\n limit: z.number(),\n offset: z.number(),\n totalPages: z.number()\n })\n })\n },\n {\n method: 'get',\n path: '/api/persons/:id',\n alias: 'getPerson',\n description: 'Get a specific person by ID',\n parameters: [\n {\n name: 'id',\n type: 'Path',\n schema: z.string()\n }\n ],\n response: PersonSummarySchema\n },\n {\n method: 'post',\n path: '/api/persons',\n alias: 'createPerson',\n description: 'Create a new person',\n parameters: [\n {\n name: 'body',\n type: 'Body',\n schema: CreatePersonRequestSchema\n }\n ],\n response: PersonSummarySchema\n },\n {\n method: 'put',\n path: '/api/persons/:id',\n alias: 'updatePerson',\n description: 'Update an existing person',\n parameters: [\n {\n name: 'id',\n type: 'Path',\n schema: z.string()\n },\n {\n name: 'body',\n type: 'Body',\n schema: CreatePersonRequestSchema.partial()\n }\n ],\n response: PersonSummarySchema\n },\n \n // Organization Management\n {\n method: 'get',\n path: '/api/organizations',\n alias: 'getOrganizations',\n description: 'Get organizations with optional filtering',\n parameters: [\n {\n name: 'query',\n type: 'Query',\n schema: OrganizationQueryCriteriaSchema\n }\n ],\n response: z.object({\n items: z.array(OrganizationSummarySchema),\n total: z.number(),\n hasMore: z.boolean()\n })\n },\n {\n method: 'get',\n path: '/api/organizations/:id',\n alias: 'getOrganization',\n description: 'Get a specific organization by ID',\n parameters: [\n {\n name: 'id',\n type: 'Path',\n schema: z.string()\n }\n ],\n response: OrganizationSummarySchema\n },\n \n // Authentication Management\n {\n method: 'get',\n path: '/api/authentication',\n alias: 'getAuthenticationRecords',\n description: 'Get authentication records for security analysis',\n parameters: [\n {\n name: 'query',\n type: 'Query',\n schema: z.object({\n personId: z.string().optional(),\n email: z.string().optional(),\n accountStatus: z.enum(['active', 'locked', 'suspended', 'pending_activation', 'all']).optional(),\n organizationId: z.string().optional(),\n limit: z.number().optional(),\n offset: z.number().optional()\n })\n }\n ],\n response: z.object({\n items: z.array(AuthenticationSummarySchema),\n total: z.number(),\n hasMore: z.boolean()\n })\n },\n {\n method: 'get',\n path: '/api/authentication/:personId',\n alias: 'getAuthenticationByPerson',\n description: 'Get authentication record for a specific person',\n parameters: [\n {\n name: 'personId',\n type: 'Path',\n schema: z.string()\n }\n ],\n response: AuthenticationSummarySchema\n },\n \n // Health/Status endpoints\n {\n method: 'get',\n path: '/api/party-manager/health',\n alias: 'getHealthStatus',\n description: 'Get Party Manager domain health status',\n response: z.object({\n status: z.enum(['healthy', 'degraded', 'unhealthy']),\n version: z.string(),\n timestamp: z.string(),\n checks: z.object({\n database: z.boolean(),\n authentication: z.boolean(),\n cache: z.boolean()\n })\n })\n }\n]);\n\n// Export types inferred from Zodios API\nexport type PartyManagerApi = typeof partyManagerApi;\nexport type PersonSummary = z.infer<typeof PersonSummarySchema>;\nexport type PersonQueryCriteria = z.infer<typeof PersonQueryCriteriaSchema>;\nexport type CreatePersonRequest = z.infer<typeof CreatePersonRequestSchema>;\nexport type OrganizationSummary = z.infer<typeof OrganizationSummarySchema>;\nexport type OrganizationQueryCriteria = z.infer<typeof OrganizationQueryCriteriaSchema>;\nexport type AuthenticationSummary = z.infer<typeof AuthenticationSummarySchema>;","/**\n * Party Person API Contract\n * \n * This contract defines the API interface for person operations.\n * It lives in the domain package to maintain proper dependency direction.\n * \n * Platform → Domains (never reverse)\n */\n\nimport { z } from 'zod';\n\n// ============================================================================\n// Core Schemas\n// ============================================================================\n\n/**\n * Person role type enumeration\n */\nexport const PersonRoleTypeSchema = z.enum(['Human', 'AiAgent']);\n\n/**\n * Core person schema - unified data structure\n */\nexport const PersonSchema = z.object({\n // Identity\n partyId: z.string().uuid(),\n \n // Names\n firstName: z.string().min(1),\n lastName: z.string().min(1),\n displayName: z.string().optional(), // Computed from first/last\n \n // Contact\n email: z.string().email(),\n phone: z.string().optional(),\n \n // Classification\n roleType: PersonRoleTypeSchema,\n \n // Professional\n jobTitle: z.string().optional(),\n department: z.string().optional(),\n organizationId: z.string().uuid().optional(),\n organizationName: z.string().optional(),\n managerId: z.string().uuid().optional(),\n managerName: z.string().optional(),\n \n // Status\n isActive: z.boolean().default(true),\n \n // Metrics\n directReportsCount: z.number().int().min(0).default(0),\n \n // Security\n mfaEnabled: z.boolean().default(false),\n accountLocked: z.boolean().default(false),\n \n // Timestamps\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n});\n\n/**\n * Person list item - optimized for list views\n */\nexport const PersonListItemSchema = PersonSchema.pick({\n partyId: true,\n firstName: true,\n lastName: true,\n email: true,\n roleType: true,\n jobTitle: true,\n department: true,\n isActive: true,\n organizationName: true,\n createdAt: true,\n updatedAt: true,\n});\n\n/**\n * Person detail view - includes computed fields\n */\nexport const PersonDetailSchema = PersonSchema.extend({\n // Full organization context\n organizationContext: z.object({\n organizationId: z.string().uuid(),\n organizationName: z.string(),\n organizationType: z.string(),\n department: z.string().optional(),\n }).optional(),\n \n // Management hierarchy\n managementInfo: z.object({\n managerId: z.string().uuid().optional(),\n managerName: z.string().optional(),\n directReports: z.array(z.object({\n partyId: z.string().uuid(),\n displayName: z.string(),\n jobTitle: z.string().optional(),\n })),\n }).optional(),\n \n // Security profile\n securityProfile: z.object({\n mfaEnabled: z.boolean(),\n accountLocked: z.boolean(),\n failedLoginAttempts: z.number().int().min(0),\n lastLoginAt: z.string().datetime().optional(),\n totalLoginCount: z.number().int().min(0),\n }).optional(),\n});\n\n// ============================================================================\n// Request/Response Schemas\n// ============================================================================\n\n/**\n * Search criteria for filtering persons\n */\nexport const PersonSearchCriteriaSchema = z.object({\n // Pagination\n page: z.number().int().min(1).default(1),\n limit: z.number().int().min(1).max(100).default(10),\n \n // Filters\n searchTerm: z.string().optional(),\n email: z.string().optional(),\n firstName: z.string().optional(),\n lastName: z.string().optional(),\n roleType: PersonRoleTypeSchema.optional(),\n isActive: z.boolean().optional(),\n department: z.string().optional(),\n jobTitle: z.string().optional(),\n organizationId: z.string().uuid().optional(),\n managerId: z.string().uuid().optional(),\n \n // Sorting\n sortBy: z.enum(['firstName', 'lastName', 'email', 'createdAt', 'updatedAt', 'department']).default('firstName'),\n sortOrder: z.enum(['asc', 'desc']).default('asc'),\n});\n\n/**\n * Person list response\n */\nexport const PersonListResponseSchema = z.object({\n success: z.boolean(),\n data: z.array(PersonListItemSchema),\n metadata: z.object({\n total: z.number().int().min(0),\n page: z.number().int().min(1),\n limit: z.number().int().min(1),\n hasMore: z.boolean(),\n }),\n timestamp: z.string().datetime(),\n});\n\n/**\n * Single person response\n */\nexport const PersonDetailResponseSchema = z.object({\n success: z.boolean(),\n data: PersonDetailSchema,\n timestamp: z.string().datetime(),\n});\n\n/**\n * Create person request\n */\nexport const CreatePersonRequestSchema = z.object({\n firstName: z.string().min(1),\n lastName: z.string().min(1),\n email: z.string().email(),\n roleType: PersonRoleTypeSchema,\n phone: z.string().optional(),\n jobTitle: z.string().optional(),\n department: z.string().optional(),\n organizationId: z.string().uuid().optional(),\n managerId: z.string().uuid().optional(),\n});\n\n/**\n * Update person request\n */\nexport const UpdatePersonRequestSchema = CreatePersonRequestSchema.partial();\n\n/**\n * Error response schema\n */\nexport const PersonErrorResponseSchema = z.object({\n success: z.literal(false),\n error: z.object({\n code: z.string(),\n message: z.string(),\n details: z.any().optional(),\n }),\n timestamp: z.string().datetime(),\n});\n\n// ============================================================================\n// Contract Definition\n// ============================================================================\n\n/**\n * Complete person API contract\n */\nexport const PersonContract = {\n /**\n * List persons with filtering and pagination\n */\n list: {\n method: 'GET' as const,\n path: '/api/party/persons',\n queryParams: PersonSearchCriteriaSchema,\n response: PersonListResponseSchema,\n errorResponse: PersonErrorResponseSchema,\n },\n \n /**\n * Get single person by ID\n */\n get: {\n method: 'GET' as const,\n path: '/api/party/persons/:partyId',\n params: z.object({ partyId: z.string().uuid() }),\n response: PersonDetailResponseSchema,\n errorResponse: PersonErrorResponseSchema,\n },\n \n /**\n * Create new person\n */\n create: {\n method: 'POST' as const,\n path: '/api/party/persons',\n body: CreatePersonRequestSchema,\n response: PersonDetailResponseSchema,\n errorResponse: PersonErrorResponseSchema,\n },\n \n /**\n * Update existing person\n */\n update: {\n method: 'PUT' as const,\n path: '/api/party/persons/:partyId',\n params: z.object({ partyId: z.string().uuid() }),\n body: UpdatePersonRequestSchema,\n response: PersonDetailResponseSchema,\n errorResponse: PersonErrorResponseSchema,\n },\n \n /**\n * Delete person (soft delete)\n */\n delete: {\n method: 'DELETE' as const,\n path: '/api/party/persons/:partyId',\n params: z.object({ partyId: z.string().uuid() }),\n response: z.object({\n success: z.boolean(),\n message: z.string(),\n timestamp: z.string().datetime(),\n }),\n errorResponse: PersonErrorResponseSchema,\n },\n};\n\n// ============================================================================\n// Type Exports\n// ============================================================================\n\nexport type Person = z.infer<typeof PersonSchema>;\nexport type PersonListItem = z.infer<typeof PersonListItemSchema>;\nexport type PersonDetail = z.infer<typeof PersonDetailSchema>;\nexport type PersonSearchCriteria = z.infer<typeof PersonSearchCriteriaSchema>;\nexport type PersonListResponse = z.infer<typeof PersonListResponseSchema>;\nexport type PersonDetailResponse = z.infer<typeof PersonDetailResponseSchema>;\nexport type CreatePersonRequest = z.infer<typeof CreatePersonRequestSchema>;\nexport type UpdatePersonRequest = z.infer<typeof UpdatePersonRequestSchema>;\nexport type PersonErrorResponse = z.infer<typeof PersonErrorResponseSchema>;\n\n// ============================================================================\n// Validation Helpers\n// ============================================================================\n\n/**\n * Validate person list response\n */\nexport function validatePersonListResponse(data: unknown): data is PersonListResponse {\n return PersonListResponseSchema.safeParse(data).success;\n}\n\n/**\n * Validate person detail response\n */\nexport function validatePersonDetailResponse(data: unknown): data is PersonDetailResponse {\n return PersonDetailResponseSchema.safeParse(data).success;\n}\n\n/**\n * Validate and parse person list response\n */\nexport function parsePersonListResponse(data: unknown): PersonListResponse {\n return PersonListResponseSchema.parse(data);\n}\n\n/**\n * Validate and parse person detail response\n */\nexport function parsePersonDetailResponse(data: unknown): PersonDetailResponse {\n return PersonDetailResponseSchema.parse(data);\n}","/**\n * Party Organisation API Contract\n * \n * This contract defines the API interface for organisation operations.\n * It lives in the domain package to maintain proper dependency direction.\n * \n * Platform → Domains (never reverse)\n */\n\nimport { z } from 'zod';\n\n// ============================================================================\n// Core Schemas\n// ============================================================================\n\n/**\n * Organisation type enumeration\n */\nexport const OrganisationTypeSchema = z.enum([\n 'Corporation',\n 'LLC',\n 'Partnership',\n 'SoleProprietorship',\n 'NonProfit',\n 'Government',\n 'Other'\n]);\n\n/**\n * Organisation size categories\n */\nexport const OrganisationSizeSchema = z.enum([\n 'Micro', // 1-9 employees\n 'Small', // 10-49 employees\n 'Medium', // 50-249 employees\n 'Large', // 250-999 employees\n 'Enterprise' // 1000+ employees\n]);\n\n/**\n * Core organisation schema - unified data structure\n */\nexport const OrganisationSchema = z.object({\n // Identity\n partyId: z.string().uuid(),\n \n // Names - simplified from complex DDD structure\n name: z.string().min(1), // Display name (computed)\n legalName: z.string().min(1), // Official registered name\n tradingName: z.string().optional(), // DBA/Trading as\n \n // Classification\n organisationType: OrganisationTypeSchema,\n organisationSize: OrganisationSizeSchema,\n industry: z.string().optional(),\n \n // Details\n description: z.string().optional(),\n website: z.string().url().optional(),\n contactEmail: z.string().email().optional(),\n foundedYear: z.number().int().min(1800).max(new Date().getFullYear()).optional(),\n \n // Location\n headquarters: z.string().optional(),\n \n // Metrics\n employeeCount: z.number().int().min(0).optional(),\n revenue: z.number().min(0).optional(),\n stockSymbol: z.string().optional(),\n \n // Relationships\n parentOrganisationId: z.string().uuid().optional(),\n parentOrganisationName: z.string().optional(),\n subsidiaryCount: z.number().int().min(0).default(0),\n \n // Status\n isActive: z.boolean().default(true),\n \n // Timestamps\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n});\n\n/**\n * Organisation list item - optimized for list views\n */\nexport const OrganisationListItemSchema = OrganisationSchema.pick({\n partyId: true,\n name: true,\n legalName: true,\n organisationType: true,\n organisationSize: true,\n industry: true,\n isActive: true,\n headquarters: true,\n employeeCount: true,\n createdAt: true,\n updatedAt: true,\n});\n\n/**\n * Organisation detail view - includes computed fields\n */\nexport const OrganisationDetailSchema = OrganisationSchema.extend({\n // Employee statistics\n employeeStats: z.object({\n totalEmployees: z.number().int().min(0),\n recentHires: z.number().int().min(0),\n departmentBreakdown: z.array(z.object({\n department: z.string(),\n count: z.number().int().min(0),\n })),\n }).optional(),\n \n // Data quality indicator\n dataCompleteness: z.object({\n percentage: z.number().min(0).max(100),\n missingFields: z.array(z.string()),\n }).optional(),\n});\n\n// ============================================================================\n// Request/Response Schemas\n// ============================================================================\n\n/**\n * Search criteria for filtering organisations\n */\nexport const OrganisationSearchCriteriaSchema = z.object({\n // Pagination\n page: z.number().int().min(1).default(1),\n limit: z.number().int().min(1).max(100).default(10),\n \n // Filters\n searchTerm: z.string().optional(),\n organisationType: OrganisationTypeSchema.optional(),\n organisationSize: OrganisationSizeSchema.optional(),\n industry: z.string().optional(),\n isActive: z.boolean().optional(),\n parentOrganisationId: z.string().uuid().optional(),\n \n // Sorting\n sortBy: z.enum(['name', 'legalName', 'createdAt', 'updatedAt', 'employeeCount']).default('name'),\n sortOrder: z.enum(['asc', 'desc']).default('asc'),\n});\n\n/**\n * Organisation list response\n */\nexport const OrganisationListResponseSchema = z.object({\n success: z.boolean(),\n data: z.array(OrganisationListItemSchema),\n metadata: z.object({\n total: z.number().int().min(0),\n page: z.number().int().min(1),\n limit: z.number().int().min(1),\n hasMore: z.boolean(),\n }),\n timestamp: z.string().datetime(),\n});\n\n/**\n * Single organisation response\n */\nexport const OrganisationDetailResponseSchema = z.object({\n success: z.boolean(),\n data: OrganisationDetailSchema,\n timestamp: z.string().datetime(),\n});\n\n/**\n * Create organisation request\n */\nexport const CreateOrganisationRequestSchema = z.object({\n legalName: z.string().min(1),\n tradingName: z.string().optional(),\n organisationType: OrganisationTypeSchema,\n organisationSize: OrganisationSizeSchema,\n industry: z.string().optional(),\n description: z.string().optional(),\n website: z.string().url().optional(),\n contactEmail: z.string().email().optional(),\n foundedYear: z.number().int().min(1800).max(new Date().getFullYear()).optional(),\n headquarters: z.string().optional(),\n employeeCount: z.number().int().min(0).optional(),\n});\n\n/**\n * Update organisation request\n */\nexport const UpdateOrganisationRequestSchema = CreateOrganisationRequestSchema.partial();\n\n/**\n * Error response schema\n */\nexport const OrganisationErrorResponseSchema = z.object({\n success: z.literal(false),\n error: z.object({\n code: z.string(),\n message: z.string(),\n details: z.any().optional(),\n }),\n timestamp: z.string().datetime(),\n});\n\n// ============================================================================\n// Contract Definition\n// ============================================================================\n\n/**\n * Complete organisation API contract\n */\nexport const OrganisationContract = {\n /**\n * List organisations with filtering and pagination\n */\n list: {\n method: 'GET' as const,\n path: '/api/party/organisations',\n queryParams: OrganisationSearchCriteriaSchema,\n response: OrganisationListResponseSchema,\n errorResponse: OrganisationErrorResponseSchema,\n },\n \n /**\n * Get single organisation by ID\n */\n get: {\n method: 'GET' as const,\n path: '/api/party/organisations/:partyId',\n params: z.object({ partyId: z.string().uuid() }),\n response: OrganisationDetailResponseSchema,\n errorResponse: OrganisationErrorResponseSchema,\n },\n \n /**\n * Create new organisation\n */\n create: {\n method: 'POST' as const,\n path: '/api/party/organisations',\n body: CreateOrganisationRequestSchema,\n response: OrganisationDetailResponseSchema,\n errorResponse: OrganisationErrorResponseSchema,\n },\n \n /**\n * Update existing organisation\n */\n update: {\n method: 'PUT' as const,\n path: '/api/party/organisations/:partyId',\n params: z.object({ partyId: z.string().uuid() }),\n body: UpdateOrganisationRequestSchema,\n response: OrganisationDetailResponseSchema,\n errorResponse: OrganisationErrorResponseSchema,\n },\n \n /**\n * Delete organisation (soft delete)\n */\n delete: {\n method: 'DELETE' as const,\n path: '/api/party/organisations/:partyId',\n params: z.object({ partyId: z.string().uuid() }),\n response: z.object({\n success: z.boolean(),\n message: z.string(),\n timestamp: z.string().datetime(),\n }),\n errorResponse: OrganisationErrorResponseSchema,\n },\n};\n\n// ============================================================================\n// Type Exports\n// ============================================================================\n\nexport type Organisation = z.infer<typeof OrganisationSchema>;\nexport type OrganisationListItem = z.infer<typeof OrganisationListItemSchema>;\nexport type OrganisationDetail = z.infer<typeof OrganisationDetailSchema>;\nexport type OrganisationSearchCriteria = z.infer<typeof OrganisationSearchCriteriaSchema>;\nexport type OrganisationListResponse = z.infer<typeof OrganisationListResponseSchema>;\nexport type OrganisationDetailResponse = z.infer<typeof OrganisationDetailResponseSchema>;\nexport type CreateOrganisationRequest = z.infer<typeof CreateOrganisationRequestSchema>;\nexport type UpdateOrganisationRequest = z.infer<typeof UpdateOrganisationRequestSchema>;\nexport type OrganisationErrorResponse = z.infer<typeof OrganisationErrorResponseSchema>;\n\n// ============================================================================\n// Validation Helpers\n// ============================================================================\n\n/**\n * Validate organisation list response\n */\nexport function validateOrganisationListResponse(data: unknown): data is OrganisationListResponse {\n return OrganisationListResponseSchema.safeParse(data).success;\n}\n\n/**\n * Validate organisation detail response\n */\nexport function validateOrganisationDetailResponse(data: unknown): data is OrganisationDetailResponse {\n return OrganisationDetailResponseSchema.safeParse(data).success;\n}\n\n/**\n * Validate and parse organisation list response\n */\nexport function parseOrganisationListResponse(data: unknown): OrganisationListResponse {\n return OrganisationListResponseSchema.parse(data);\n}\n\n/**\n * Validate and parse organisation detail response\n */\nexport function parseOrganisationDetailResponse(data: unknown): OrganisationDetailResponse {\n return OrganisationDetailResponseSchema.parse(data);\n}"],"mappings":"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","names":["makeApi","z","PersonSummarySchema","object","personId","string","describe","email","firstName","lastName","displayName","roleType","enum","isActive","boolean","contactInfo","phone","optional","preferredName","professionalInfo","department","jobTitle","managerId","managerName","location","hireDate","organizationContext","organizationId","organizationName","organizationType","profileMetrics","directReportsCount","number","accountCreatedAt","lastLoginAt","totalLoginCount","securityProfile","mfaEnabled","accountLocked","failedLoginAttempts","lastPasswordChange","auditInfo","createdAt","updatedAt","PersonQueryCriteriaSchema","searchTerm","hasManager","hasDirectReports","locationFilter","country","region","city","securityFilters","hasFailedLogins","passwordExpired","pagination","limit","offset","sortBy","sortOrder","CreatePersonRequestSchema","departmentId","OrganizationSummarySchema","legalName","tradingName","businessProfile","industry","organizationSize","foundedYear","contactDetails","primaryEmail","primaryPhone","website","locationInfo","headquartersCountry","headquartersRegion","headquartersCity","operatingRegions","array","employeeMetrics","totalEmployees","humanEmployees","aiAgents","recentHires","departmentCount","operationalStatus","operationalSince","lastActivityDate","OrganizationQueryCriteriaSchema","AuthenticationSummarySchema","authenticationId","accountStatus","status","isEmailVerified","accountCreationDate","lastStatusChange","sessionMetrics","hasActiveSession","activeSessionCount","lastLoginIP","averageSessionDuration","securitySettings","mfaMethod","passwordLastChanged","passwordStrength","lockoutExpiresAt","partyManagerApi","method","path","alias","description","parameters","name","type","schema","response","items","total","hasMore","totalPages","partial","version","timestamp","checks","database","authentication","cache","z","PersonRoleTypeSchema","z","enum","PersonSchema","object","partyId","string","uuid","firstName","min","lastName","displayName","optional","email","phone","roleType","jobTitle","department","organizationId","organizationName","managerId","managerName","isActive","boolean","default","directReportsCount","number","int","mfaEnabled","accountLocked","createdAt","datetime","updatedAt","PersonListItemSchema","pick","PersonDetailSchema","extend","organizationContext","organizationType","managementInfo","directReports","array","securityProfile","failedLoginAttempts","lastLoginAt","totalLoginCount","PersonSearchCriteriaSchema","page","limit","max","searchTerm","sortBy","sortOrder","PersonListResponseSchema","success","data","metadata","total","hasMore","timestamp","PersonDetailResponseSchema","CreatePersonRequestSchema","UpdatePersonRequestSchema","partial","PersonErrorResponseSchema","literal","error","code","message","details","any","PersonContract","list","method","path","queryParams","response","errorResponse","get","params","create","body","update","delete","z","OrganisationTypeSchema","z","enum","OrganisationSizeSchema","Organisat