import { AptlyModules, AptlyScopeSchema } from '../core/index.js'; import { AptlyOrganizationRoles, AptlyAppScope, AptlySignageSchema } from '../core/index.js'; import { AptlyOrganizationStatus, AptlyOrganizationType } from '../enums/index.js'; import { AptlyAddress } from './address.js'; import { AptlyDocumentSchema } from './document.js'; import { AptlyInviteSchema } from './invite.js'; import { AptlyModuleItemSchema } from './module.js'; import { AptlyPlanInstalledSchema } from './plan.js'; import { AptlyProjectSchema } from './project.js'; import { AptlyUserSchema } from './user.js'; import { AptlyMediaSrcSchema } from './media.js'; import { AptlyBaseSchema, AptlyHistorySchema } from './extends.js'; import { AptlyDepartmentGeneric } from './department.js'; import { AptlyProducerSchema } from './producer.js'; import { AptlyAppSchema } from './app.js'; import { AptlyAlgorithmSchema } from './algorithm.js'; export type AptlyOrganizationContent = AptlyOrganizationContentSchema; export type AptlyOrganizationContentSchema = Pick, '_id' | 'name' | 'logoMedia' | 'logo'>; export type AptlyOrganization = AptlyOrganizationSchema; export interface AptlyOrganizationSchema extends AptlyBaseSchema, AptlyHistorySchema { slug: string; slugs: string[]; number: string; vat?: string; logo?: string | null; logoMedia?: AptlyMediaSrcSchema | null; negativeLogoMedia?: AptlyMediaSrcSchema | null; projectLogoMedia?: AptlyMediaSrcSchema | null; address: { billing: AptlyAddress; visit: AptlyAddress; post: AptlyAddress; }; phone: string; email: string; complaintEmail?: string; invoiceEmail?: string; algorithms: AptlyAlgorithmSchema[]; members: AptlyOrganizationMemberSchema[]; modules: AptlyModules[]; contractSign?: AptlySignageSchema; integrations: AptlyOrganizationIntegrationsSchema[]; invites: AptlyOrganizationInviteSchema[]; apps: AptlyOrganizationAppConfigSchema[]; storageId?: string; producer?: ID | AptlyProducerSchema | null; defaultProject?: ID | null; installedModules: AptlyModuleItemSchema[]; status?: AptlyOrganizationStatus; type?: AptlyOrganizationType[]; algorithm: ID | null; priceAlgorithm: ID | null; paymentApp?: ID | AptlyAppSchema | null; signApp?: ID | AptlyAppSchema | null; signMembers?: (ID | AptlyUserSchema)[]; termsDocument?: ID | AptlyDocumentSchema | null; offerDocument?: ID | AptlyDocumentSchema | null; plan: ID | AptlyPlanInstalledSchema | null; tripletexCustomer?: { id: number; name: string; }; databases: string[]; producers: ID[]; wholesalers: ID[]; scope?: AptlyScopeSchema; hidePrices?: boolean; created: DATE; fixedVariants?: boolean; } export type AptlyOrganizationIntegrations = AptlyOrganizationIntegrationsSchema; export interface AptlyOrganizationIntegrationsSchema { _id: ID; integration: string; apiKey: string; organization: string; } export type AptlyOrganizationMember = AptlyOrganizationMemberSchema; export interface AptlyOrganizationMemberSchema { _id: ID; user: AptlyUserSchema | ID; permissions: AptlyOrganizationRoles[]; position?: AptlyOrganizationMemberPosition; projects?: (ID | AptlyProjectSchema)[] | null; departments?: (ID | AptlyDepartmentGeneric)[] | null; createdAt?: DATE; } export declare enum AptlyOrganizationMemberPosition { Owner = 0, Admin = 1, Accounting = 2, User = 10 } export type AptlyOrganizationInvite = AptlyOrganizationInviteSchema; export interface AptlyOrganizationInviteSchema extends AptlyInviteSchema { permissions?: AptlyOrganizationRoles[]; projects?: ID[] | null; departments?: ID[] | null; position?: AptlyOrganizationMemberPosition; clickCount: number; } export type AptlyOrganizationAppConfig = AptlyOrganizationAppConfigSchema; export interface AptlyOrganizationAppConfigSchema extends Omit, 'name' | 'archived'> { app: ID | AptlyAppSchema; scope: AptlyAppScope[]; settings: S; }