@tratto/angular 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tratto-angular.mjs","sources":["../../src/tratto.config.ts","../../src/services/base.service.ts","../../src/services/emails.service.ts","../../src/services/contacts.service.ts","../../src/services/audiences.service.ts","../../src/services/campaigns.service.ts","../../src/services/templates.service.ts","../../src/services/webhooks.service.ts","../../src/services/domains.service.ts","../../src/services/api-keys.service.ts","../../src/services/analytics.service.ts","../../src/services/flows.service.ts","../../src/services/workspace.service.ts","../../src/tratto.service.ts","../../src/tratto.module.ts","../../src/index.ts","../../src/tratto-angular.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\n/**\n * Configuration options for the Tratto Angular SDK.\n *\n * Provide it once at the root level via {@link provideTratt} (standalone apps)\n * or {@link TrattoModule.forRoot} (NgModule apps).\n */\nexport interface TrattoConfig {\n /**\n * API key used to authenticate every request.\n * Obtain one at https://app.tratto.email/settings/api-keys.\n * Supports both live (`tratto_live_...`) and test (`tratto_test_...`) keys.\n */\n apiKey: string;\n /**\n * Base URL of the Tratto REST API.\n * @default 'https://api.tratto.email'\n */\n baseUrl?: string;\n}\n\n/** DI injection token that holds the {@link TrattoConfig}. */\nexport const TRATTO_CONFIG = new InjectionToken<TrattoConfig>('TRATTO_CONFIG');\n","import { inject } from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Observable, OperatorFunction } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { TRATTO_CONFIG } from '../tratto.config';\n\n/**\n * Abstract base class shared by all Tratto resource services.\n * Provides the `HttpClient`, config injection, and auth-header helpers.\n */\nexport abstract class BaseService {\n protected readonly http = inject(HttpClient);\n protected readonly config = inject(TRATTO_CONFIG);\n\n /** Root API URL without trailing slash (e.g. `https://api.tratto.email`). */\n protected readonly apiBaseUrl = (\n this.config.baseUrl ?? 'https://api.tratto.email'\n ).replace(/\\/$/, '');\n\n /**\n * Returns an `HttpHeaders` instance pre-populated with the `Authorization` header.\n * Pass `extra` to merge additional headers (e.g. `Idempotency-Key`).\n */\n protected authHeaders(extra?: Record<string, string>): HttpHeaders {\n return new HttpHeaders({ Authorization: `Bearer ${this.config.apiKey}`, ...extra });\n }\n\n /**\n * Builds an `HttpParams` object from a plain object, skipping `null`/`undefined` values.\n * `Date` values are serialised to ISO strings.\n */\n protected buildParams(\n params: Record<string, string | number | boolean | Date | null | undefined>,\n ): HttpParams {\n return Object.entries(params).reduce((p, [key, val]) => {\n if (val == null) return p;\n if (val instanceof Date) return p.set(key, val.toISOString());\n return p.set(key, String(val));\n }, new HttpParams());\n }\n\n /**\n * RxJS operator that unwraps the `{ data: T }` envelope returned by every\n * Tratto API endpoint.\n */\n protected unwrap<T>(): OperatorFunction<{ data: T }, T> {\n return map((r) => r.data);\n }\n\n /**\n * Sends a DELETE/PATCH/POST that returns HTTP 204 (no body).\n * Uses `responseType: 'text'` to avoid JSON-parse errors on an empty body.\n */\n protected voidRequest(\n method: 'DELETE' | 'PATCH' | 'POST',\n url: string,\n body?: unknown,\n ): Observable<void> {\n return this.http\n .request(method, url, {\n headers: this.authHeaders(),\n responseType: 'text',\n ...(body !== undefined ? { body } : {}),\n })\n .pipe(map(() => void 0));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { BaseService } from './base.service';\nimport type {\n SendEmailParams,\n EmailSummary,\n EmailDetail,\n EmailEvent,\n ListEmailsParams,\n PaginatedResponse,\n} from '../tratto.types';\n\n/** Service for sending transactional emails and inspecting their delivery. */\n@Injectable()\nexport class EmailsService extends BaseService {\n private readonly url = `${this.apiBaseUrl}/v1/emails`;\n\n /**\n * Send a transactional email (`POST /v1/emails`).\n * At least one of `html`, `text`, or `templateId` is required.\n *\n * @param params Email parameters.\n * @param idempotencyKey Optional key that guarantees exactly-once delivery.\n * If the same key is re-used within 24 hours the original response is returned.\n * @returns Observable that emits the created email `id`.\n */\n send(params: SendEmailParams, idempotencyKey?: string): Observable<{ id: string }> {\n const headers = this.authHeaders(\n idempotencyKey ? { 'Idempotency-Key': idempotencyKey } : undefined,\n );\n return this.http\n .post<{ data: { id: string } }>(this.url, params, { headers })\n .pipe(this.unwrap());\n }\n\n /**\n * List emails with optional filters (`GET /v1/emails`).\n * Results are ordered by creation date descending.\n */\n list(params?: ListEmailsParams): Observable<PaginatedResponse<EmailSummary>> {\n return this.http.get<PaginatedResponse<EmailSummary>>(this.url, {\n headers: this.authHeaders(),\n params: this.buildParams({\n after: params?.after,\n limit: params?.limit,\n status: params?.status,\n domainId: params?.domainId,\n tags: params?.tags,\n dateFrom: params?.dateFrom,\n dateTo: params?.dateTo,\n }),\n });\n }\n\n /**\n * Get a single email with full details and inline events (`GET /v1/emails/:id`).\n */\n get(id: string): Observable<EmailDetail> {\n return this.http\n .get<{ data: EmailDetail }>(`${this.url}/${id}`, { headers: this.authHeaders() })\n .pipe(this.unwrap());\n }\n\n /**\n * List all delivery events for a specific email (`GET /v1/emails/:id/events`).\n */\n listEvents(id: string): Observable<EmailEvent[]> {\n return this.http\n .get<{ data: EmailEvent[] }>(`${this.url}/${id}/events`, { headers: this.authHeaders() })\n .pipe(this.unwrap());\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpHeaders } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { BaseService } from './base.service';\nimport type {\n Contact,\n CreateContactParams,\n UpdateContactParams,\n ListContactsParams,\n ImportJobStatus,\n PaginatedResponse,\n} from '../tratto.types';\n\n/** Service for managing contacts and running CSV imports. */\n@Injectable()\nexport class ContactsService extends BaseService {\n private readonly url = `${this.apiBaseUrl}/v1/contacts`;\n\n /**\n * Create a single contact (`POST /v1/contacts`).\n * Returns a conflict error if the email address is already registered.\n */\n create(params: CreateContactParams): Observable<{ id: string }> {\n return this.http\n .post<{ data: { id: string } }>(this.url, params, { headers: this.authHeaders() })\n .pipe(this.unwrap());\n }\n\n /**\n * List contacts with optional filters (`GET /v1/contacts`).\n * Results are ordered by creation date descending.\n */\n list(params?: ListContactsParams): Observable<PaginatedResponse<Contact>> {\n return this.http.get<PaginatedResponse<Contact>>(this.url, {\n headers: this.authHeaders(),\n params: this.buildParams({\n status: params?.status,\n audienceId: params?.audienceId,\n tag: params?.tag,\n after: params?.after,\n limit: params?.limit,\n }),\n });\n }\n\n /**\n * Update a contact's details (`PATCH /v1/contacts/:id`).\n * Only supplied fields are updated.\n */\n update(id: string, params: UpdateContactParams): Observable<{ id: string }> {\n return this.http\n .patch<{ data: { id: string } }>(`${this.url}/${id}`, params, {\n headers: this.authHeaders(),\n })\n .pipe(this.unwrap());\n }\n\n /**\n * Start an asynchronous CSV import job (`POST /v1/contacts/import`).\n *\n * The CSV must have an `email` column. Optional columns:\n * `first_name` / `firstname`, `last_name` / `lastname`, `status`,\n * `tags` (semicolon-separated values).\n *\n * Maximum 50 000 rows per import. Poll {@link getImportJob} to track progress.\n *\n * @returns Observable that emits the new `jobId` and total row count.\n */\n importCsv(csvText: string): Observable<{ jobId: string; totalRows: number }> {\n return this.http\n .post<{ data: { jobId: string; totalRows: number } }>(\n `${this.url}/import`,\n csvText,\n {\n headers: new HttpHeaders({\n Authorization: `Bearer ${this.config.apiKey}`,\n 'Content-Type': 'text/csv',\n }),\n },\n )\n .pipe(this.unwrap());\n }\n\n /**\n * Poll the status of a CSV import job (`GET /v1/contacts/import/:jobId`).\n */\n getImportJob(jobId: string): Observable<ImportJobStatus> {\n return this.http\n .get<{ data: ImportJobStatus }>(`${this.url}/import/${jobId}`, {\n headers: this.authHeaders(),\n })\n .pipe(this.unwrap());\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { BaseService } from './base.service';\nimport type {\n Audience,\n CreateAudienceParams,\n ListAudiencesParams,\n AddContactsToAudienceResult,\n PaginatedResponse,\n} from '../tratto.types';\n\n/** Service for managing contact audiences. */\n@Injectable()\nexport class AudiencesService extends BaseService {\n private readonly url = `${this.apiBaseUrl}/v1/audiences`;\n\n /**\n * Create an audience (`POST /v1/audiences`).\n * Optionally supply filter `rules` to make it a dynamic segment.\n */\n create(params: CreateAudienceParams): Observable<{ id: string }> {\n return this.http\n .post<{ data: { id: string } }>(this.url, params, { headers: this.authHeaders() })\n .pipe(this.unwrap());\n }\n\n /**\n * List audiences (`GET /v1/audiences`).\n * Results are ordered by creation date descending.\n */\n list(params?: ListAudiencesParams): Observable<PaginatedResponse<Audience>> {\n return this.http.get<PaginatedResponse<Audience>>(this.url, {\n headers: this.authHeaders(),\n params: this.buildParams({ after: params?.after, limit: params?.limit }),\n });\n }\n\n /**\n * Get a single audience by ID (`GET /v1/audiences/:id`).\n */\n get(id: string): Observable<Audience> {\n return this.http\n .get<{ data: Audience }>(`${this.url}/${id}`, { headers: this.authHeaders() })\n .pipe(this.unwrap());\n }\n\n /**\n * Add contacts to an audience (`POST /v1/audiences/:id/contacts`).\n * Accepts up to 500 contact IDs per call.\n */\n addContacts(\n audienceId: string,\n contactIds: string[],\n ): Observable<AddContactsToAudienceResult> {\n return this.http\n .post<{ data: AddContactsToAudienceResult }>(\n `${this.url}/${audienceId}/contacts`,\n { contactIds },\n { headers: this.authHeaders() },\n )\n .pipe(this.unwrap());\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { BaseService } from './base.service';\nimport type {\n Campaign,\n CampaignStatsDetail,\n CreateCampaignParams,\n ListCampaignsParams,\n SendCampaignParams,\n PaginatedResponse,\n} from '../tratto.types';\n\n/** Service for managing and sending email campaigns. */\n@Injectable()\nexport class CampaignsService extends BaseService {\n private readonly url = `${this.apiBaseUrl}/v1/campaigns`;\n\n /**\n * Create a campaign in `draft` status (`POST /v1/campaigns`).\n * Call {@link send} to dispatch it.\n */\n create(params: CreateCampaignParams): Observable<{ id: string }> {\n return this.http\n .post<{ data: { id: string } }>(this.url, params, { headers: this.authHeaders() })\n .pipe(this.unwrap());\n }\n\n /**\n * List campaigns with optional status filter (`GET /v1/campaigns`).\n * Results are ordered by creation date descending.\n */\n list(params?: ListCampaignsParams): Observable<PaginatedResponse<Campaign>> {\n return this.http.get<PaginatedResponse<Campaign>>(this.url, {\n headers: this.authHeaders(),\n params: this.buildParams({ status: params?.status, after: params?.after, limit: params?.limit }),\n });\n }\n\n /**\n * Get a single campaign by ID (`GET /v1/campaigns/:id`).\n */\n get(id: string): Observable<Campaign> {\n return this.http\n .get<{ data: Campaign }>(`${this.url}/${id}`, { headers: this.authHeaders() })\n .pipe(this.unwrap());\n }\n\n /**\n * Get delivery statistics for a campaign (`GET /v1/campaigns/:id/stats`).\n */\n getStats(id: string): Observable<CampaignStatsDetail> {\n return this.http\n .get<{ data: CampaignStatsDetail }>(`${this.url}/${id}/stats`, {\n headers: this.authHeaders(),\n })\n .pipe(this.unwrap());\n }\n\n /**\n * Send or schedule a campaign (`POST /v1/campaigns/:id/send`).\n * Only `draft` or `paused` campaigns can be sent.\n *\n * @param id Campaign ID.\n * @param params Optional `scheduledAt` to defer sending.\n * @returns Observable emitting the new campaign status.\n */\n send(id: string, params?: SendCampaignParams): Observable<{ status: string }> {\n const body: Record<string, unknown> = {};\n if (params?.scheduledAt) {\n body['scheduledAt'] =\n params.scheduledAt instanceof Date\n ? params.scheduledAt.toISOString()\n : params.scheduledAt;\n }\n return this.http\n .post<{ data: { status: string } }>(`${this.url}/${id}/send`, body, {\n headers: this.authHeaders(),\n })\n .pipe(this.unwrap());\n }\n\n /**\n * Pause a `sending` or `scheduled` campaign (`POST /v1/campaigns/:id/pause`).\n */\n pause(id: string): Observable<{ status: string }> {\n return this.http\n .post<{ data: { status: string } }>(`${this.url}/${id}/pause`, {}, {\n headers: this.authHeaders(),\n })\n .pipe(this.unwrap());\n }\n\n /**\n * Send a test email for this campaign to a specific address\n * (`POST /v1/campaigns/:id/test-send`).\n *\n * @param id Campaign ID.\n * @param to Recipient email address for the test.\n * @returns Observable emitting the created test email ID.\n */\n testSend(id: string, to: string): Observable<{ emailId: string }> {\n return this.http\n .post<{ data: { emailId: string } }>(`${this.url}/${id}/test-send`, { to }, {\n headers: this.authHeaders(),\n })\n .pipe(this.unwrap());\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { BaseService } from './base.service';\nimport type {\n Template,\n TemplateSummary,\n TemplateVersion,\n TemplateVersionSummary,\n CreateTemplateParams,\n UpdateTemplateParams,\n ListTemplatesParams,\n PaginatedResponse,\n} from '../tratto.types';\n\n/** Service for managing email templates and their version history. */\n@Injectable()\nexport class TemplatesService extends BaseService {\n private readonly url = `${this.apiBaseUrl}/v1/templates`;\n\n /**\n * List templates (`GET /v1/templates`).\n * Results are ordered by creation date descending.\n */\n list(params?: ListTemplatesParams): Observable<PaginatedResponse<TemplateSummary>> {\n return this.http.get<PaginatedResponse<TemplateSummary>>(this.url, {\n headers: this.authHeaders(),\n params: this.buildParams({ limit: params?.limit, after: params?.after, status: params?.status }),\n });\n }\n\n /**\n * Create a new template (`POST /v1/templates`).\n * The template starts in `draft` status.\n */\n create(params: CreateTemplateParams): Observable<Template> {\n return this.http\n .post<{ data: Template }>(this.url, params, { headers: this.authHeaders() })\n .pipe(this.unwrap());\n }\n\n /**\n * Get a single template by ID (`GET /v1/templates/:id`).\n */\n get(id: string): Observable<Template> {\n return this.http\n .get<{ data: Template }>(`${this.url}/${id}`, { headers: this.authHeaders() })\n .pipe(this.unwrap());\n }\n\n /**\n * Update a template's name, HTML, or status (`PATCH /v1/templates/:id`).\n * Changing `html` automatically creates a new version entry.\n */\n update(id: string, params: UpdateTemplateParams): Observable<Template> {\n return this.http\n .patch<{ data: Template }>(`${this.url}/${id}`, params, { headers: this.authHeaders() })\n .pipe(this.unwrap());\n }\n\n /**\n * Permanently delete a template (`DELETE /v1/templates/:id`).\n */\n delete(id: string): Observable<void> {\n return this.voidRequest('DELETE', `${this.url}/${id}`);\n }\n\n /**\n * List the version history of a template (`GET /v1/templates/:id/versions`).\n * Returns up to the 20 most recent versions, newest first.\n */\n listVersions(id: string): Observable<TemplateVersionSummary[]> {\n return this.http\n .get<{ data: TemplateVersionSummary[] }>(`${this.url}/${id}/versions`, {\n headers: this.authHeaders(),\n })\n .pipe(this.unwrap());\n }\n\n /**\n * Get the HTML of a specific template version (`GET /v1/templates/:id/versions/:version`).\n */\n getVersion(id: string, version: number): Observable<TemplateVersion> {\n return this.http\n .get<{ data: TemplateVersion }>(`${this.url}/${id}/versions/${version}`, {\n headers: this.authHeaders(),\n })\n .pipe(this.unwrap());\n }\n\n /**\n * Send a test email using this template (`POST /v1/templates/:id/test-send`).\n *\n * @param id Template ID.\n * @param to Recipient address for the test.\n * @param variables Variables to substitute inside the template.\n */\n testSend(\n id: string,\n to: string,\n variables: Record<string, string> = {},\n ): Observable<{ queued: boolean }> {\n return this.http\n .post<{ data: { queued: boolean } }>(\n `${this.url}/${id}/test-send`,\n { to, variables },\n { headers: this.authHeaders() },\n )\n .pipe(this.unwrap());\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { BaseService } from './base.service';\nimport type {\n Webhook,\n WebhookDelivery,\n CreateWebhookParams,\n ListWebhookDeliveriesParams,\n PaginatedResponse,\n} from '../tratto.types';\n\n/** Service for managing webhook endpoints and inspecting delivery history. */\n@Injectable()\nexport class WebhooksService extends BaseService {\n private readonly url = `${this.apiBaseUrl}/v1/webhooks`;\n\n /**\n * Register a new webhook endpoint (`POST /v1/webhooks`).\n *\n * The returned `secret` is shown only once — store it securely and use it\n * to verify the `X-Tratto-Signature` header on incoming events.\n *\n * @returns Observable emitting the new webhook `id` and HMAC signing `secret`.\n */\n create(params: CreateWebhookParams): Observable<{ id: string; secret: string }> {\n return this.http\n .post<{ data: { id: string; secret: string } }>(this.url, params, {\n headers: this.authHeaders(),\n })\n .pipe(this.unwrap());\n }\n\n /**\n * List all registered webhooks (`GET /v1/webhooks`).\n * Results are ordered by creation date descending.\n */\n list(): Observable<Webhook[]> {\n return this.http\n .get<{ data: Webhook[] }>(this.url, { headers: this.authHeaders() })\n .pipe(this.unwrap());\n }\n\n /**\n * Delete a webhook endpoint (`DELETE /v1/webhooks/:id`).\n */\n delete(id: string): Observable<void> {\n return this.voidRequest('DELETE', `${this.url}/${id}`);\n }\n\n /**\n * List delivery attempts for a webhook (`GET /v1/webhooks/:id/deliveries`).\n * Results are ordered by attempt date descending.\n */\n listDeliveries(\n id: string,\n params?: ListWebhookDeliveriesParams,\n ): Observable<PaginatedResponse<WebhookDelivery>> {\n return this.http.get<PaginatedResponse<WebhookDelivery>>(`${this.url}/${id}/deliveries`, {\n headers: this.authHeaders(),\n params: this.buildParams({ after: params?.after, limit: params?.limit }),\n });\n }\n\n /**\n * Send a test event to a webhook endpoint (`POST /v1/webhooks/:id/test`).\n * Useful for verifying connectivity and signature verification logic.\n */\n test(id: string): Observable<{ queued: boolean }> {\n return this.http\n .post<{ data: { queued: boolean } }>(`${this.url}/${id}/test`, {}, {\n headers: this.authHeaders(),\n })\n .pipe(this.unwrap());\n }\n\n /**\n * Rotate the signing secret for a webhook (`POST /v1/webhooks/:id/rotate-secret`).\n * The new secret is returned once — store it securely.\n * Also resets the failure counter and re-enables a disabled webhook.\n */\n rotateSecret(id: string): Observable<{ secret: string }> {\n return this.http\n .post<{ data: { secret: string } }>(`${this.url}/${id}/rotate-secret`, {}, {\n headers: this.authHeaders(),\n })\n .pipe(this.unwrap());\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { BaseService } from './base.service';\nimport type {\n Domain,\n DomainSummary,\n ListDomainsParams,\n PaginatedResponse,\n} from '../tratto.types';\n\n/** Service for adding and verifying sender domains. */\n@Injectable()\nexport class DomainsService extends BaseService {\n private readonly url = `${this.apiBaseUrl}/v1/domains`;\n\n /**\n * Add a domain and generate its DKIM keypair (`POST /v1/domains`).\n * The response contains the DNS records that must be published before calling {@link verify}.\n *\n * @param domain Bare domain name, e.g. `\"mail.acme.com\"`.\n */\n add(domain: string): Observable<Domain> {\n return this.http\n .post<{ data: Domain }>(this.url, { domain }, { headers: this.authHeaders() })\n .pipe(this.unwrap());\n }\n\n /**\n * List domains (`GET /v1/domains`).\n * Results are ordered by creation date descending.\n */\n list(params?: ListDomainsParams): Observable<PaginatedResponse<DomainSummary>> {\n return this.http.get<PaginatedResponse<DomainSummary>>(this.url, {\n headers: this.authHeaders(),\n params: this.buildParams({ after: params?.after, limit: params?.limit }),\n });\n }\n\n /**\n * Get full domain details including DNS records (`GET /v1/domains/:id`).\n */\n get(id: string): Observable<Domain> {\n return this.http\n .get<{ data: Domain }>(`${this.url}/${id}`, { headers: this.authHeaders() })\n .pipe(this.unwrap());\n }\n\n /**\n * Trigger DNS verification for a domain (`POST /v1/domains/:id/verify`).\n * Checks SPF, DKIM, and DMARC records in real time and updates the domain status.\n * The domain must be `verified` before it can be used as a sender.\n */\n verify(id: string): Observable<Domain> {\n return this.http\n .post<{ data: Domain }>(`${this.url}/${id}/verify`, {}, { headers: this.authHeaders() })\n .pipe(this.unwrap());\n }\n\n /**\n * Remove a domain and delete its DKIM private key (`DELETE /v1/domains/:id`).\n *\n * @returns Observable emitting the deleted domain `id` and `deletedAt` timestamp.\n */\n delete(id: string): Observable<{ id: string; deletedAt: string }> {\n return this.http\n .delete<{ data: { id: string; deletedAt: string } }>(`${this.url}/${id}`, {\n headers: this.authHeaders(),\n })\n .pipe(this.unwrap());\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { BaseService } from './base.service';\nimport type {\n ApiKey,\n ApiKeyCreated,\n CreateApiKeyParams,\n ListApiKeysParams,\n PaginatedResponse,\n} from '../tratto.types';\n\n/** Service for creating and revoking API keys. */\n@Injectable()\nexport class ApiKeysService extends BaseService {\n private readonly url = `${this.apiBaseUrl}/v1/api-keys`;\n\n /**\n * Create a new API key (`POST /v1/api-keys`).\n *\n * The full raw key in the response is shown **only once** — store it securely.\n *\n * @param params Key name, environment and permission scopes.\n * @param idempotencyKey Optional key to prevent accidental duplicates.\n * @returns Observable emitting the created key including the raw token.\n */\n create(params: CreateApiKeyParams, idempotencyKey?: string): Observable<ApiKeyCreated> {\n const headers = this.authHeaders(\n idempotencyKey ? { 'Idempotency-Key': idempotencyKey } : undefined,\n );\n return this.http\n .post<{ data: ApiKeyCreated }>(this.url, params, { headers })\n .pipe(this.unwrap());\n }\n\n /**\n * List API keys (without the raw token) (`GET /v1/api-keys`).\n * Results are ordered by creation date descending.\n */\n list(params?: ListApiKeysParams): Observable<PaginatedResponse<ApiKey>> {\n return this.http.get<PaginatedResponse<ApiKey>>(this.url, {\n headers: this.authHeaders(),\n params: this.buildParams({ after: params?.after, limit: params?.limit }),\n });\n }\n\n /**\n * Revoke (soft-delete) an API key (`DELETE /v1/api-keys/:id`).\n * Revoked keys are immediately rejected by the API.\n *\n * @returns Observable emitting the key `id` and `revokedAt` timestamp.\n */\n revoke(id: string): Observable<{ id: string; revokedAt: string }> {\n return this.http\n .delete<{ data: { id: string; revokedAt: string } }>(`${this.url}/${id}`, {\n headers: this.authHeaders(),\n })\n .pipe(this.unwrap());\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { BaseService } from './base.service';\nimport type { AnalyticsPeriod, AnalyticsSummary, TimeseriesPoint } from '../tratto.types';\n\n/** Service for querying email analytics and delivery metrics. */\n@Injectable()\nexport class AnalyticsService extends BaseService {\n private readonly url = `${this.apiBaseUrl}/v1/analytics`;\n\n /**\n * Get aggregated email metrics for a time period (`GET /v1/analytics/summary`).\n * Results are cached server-side for one hour.\n *\n * @param period Lookback window. Defaults to `'30d'`.\n */\n getSummary(period: AnalyticsPeriod = '30d'): Observable<AnalyticsSummary> {\n return this.http\n .get<{ data: AnalyticsSummary }>(`${this.url}/summary`, {\n headers: this.authHeaders(),\n params: this.buildParams({ period }),\n })\n .pipe(this.unwrap());\n }\n\n /**\n * Get daily email metrics for a time period (`GET /v1/analytics/timeseries`).\n * Returns one data point per day for the chosen window.\n * Results are cached server-side for one hour.\n *\n * @param period Lookback window. Defaults to `'30d'`.\n */\n getTimeseries(period: AnalyticsPeriod = '30d'): Observable<TimeseriesPoint[]> {\n return this.http\n .get<{ data: TimeseriesPoint[] }>(`${this.url}/timeseries`, {\n headers: this.authHeaders(),\n params: this.buildParams({ period }),\n })\n .pipe(this.unwrap());\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { BaseService } from './base.service';\nimport type {\n Flow,\n CreateFlowParams,\n UpdateFlowParams,\n ListFlowsParams,\n PaginatedResponse,\n} from '../tratto.types';\n\n/** Service for managing email automation flows. */\n@Injectable()\nexport class FlowsService extends BaseService {\n private readonly url = `${this.apiBaseUrl}/v1/flows`;\n\n /**\n * List automation flows (`GET /v1/flows`).\n * Results are ordered by creation date descending.\n */\n list(params?: ListFlowsParams): Observable<PaginatedResponse<Flow>> {\n return this.http.get<PaginatedResponse<Flow>>(this.url, {\n headers: this.authHeaders(),\n params: this.buildParams({ after: params?.after, limit: params?.limit }),\n });\n }\n\n /**\n * Create a flow in `draft` status (`POST /v1/flows`).\n * Configure the trigger and steps via {@link update} before activating.\n */\n create(params: CreateFlowParams): Observable<{ id: string }> {\n return this.http\n .post<{ data: { id: string } }>(this.url, params, { headers: this.authHeaders() })\n .pipe(this.unwrap());\n }\n\n /**\n * Get a single flow by ID (`GET /v1/flows/:id`).\n */\n get(id: string): Observable<Flow> {\n return this.http\n .get<{ data: Flow }>(`${this.url}/${id}`, { headers: this.authHeaders() })\n .pipe(this.unwrap());\n }\n\n /**\n * Update a flow's name, trigger, or steps (`PATCH /v1/flows/:id`).\n * Steps cannot be changed while the flow is active — call {@link deactivate} first.\n */\n update(id: string, params: UpdateFlowParams): Observable<Flow> {\n return this.http\n .patch<{ data: Flow }>(`${this.url}/${id}`, params, { headers: this.authHeaders() })\n .pipe(this.unwrap());\n }\n\n /**\n * Delete a flow (`DELETE /v1/flows/:id`).\n * Only `draft` or `inactive` flows can be deleted.\n */\n delete(id: string): Observable<{ id: string }> {\n return this.http\n .delete<{ data: { id: string } }>(`${this.url}/${id}`, { headers: this.authHeaders() })\n .pipe(this.unwrap());\n }\n\n /**\n * Activate a flow, enabling it to enroll contacts (`POST /v1/flows/:id/activate`).\n */\n activate(id: string): Observable<Flow> {\n return this.http\n .post<{ data: Flow }>(`${this.url}/${id}/activate`, {}, { headers: this.authHeaders() })\n .pipe(this.unwrap());\n }\n\n /**\n * Deactivate a flow (`POST /v1/flows/:id/deactivate`).\n * Contacts already enrolled continue through their current steps.\n * No new enrollments are accepted until the flow is re-activated.\n */\n deactivate(id: string): Observable<Flow> {\n return this.http\n .post<{ data: Flow }>(`${this.url}/${id}/deactivate`, {}, { headers: this.authHeaders() })\n .pipe(this.unwrap());\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { BaseService } from './base.service';\nimport type {\n Workspace,\n WorkspaceMember,\n WorkspacePreferences,\n UpdateWorkspaceParams,\n UpdateWorkspacePreferencesParams,\n InviteMemberParams,\n UpdateMemberParams,\n} from '../tratto.types';\n\n/** Service for managing workspace settings and team members. */\n@Injectable()\nexport class WorkspaceService extends BaseService {\n private readonly url = `${this.apiBaseUrl}/v1/workspace`;\n\n /**\n * Get the current workspace (`GET /v1/workspace`).\n * Creates a workspace with default settings on first access if none exists.\n */\n get(): Observable<Workspace> {\n return this.http\n .get<{ data: Workspace }>(this.url, { headers: this.authHeaders() })\n .pipe(this.unwrap());\n }\n\n /**\n * Update workspace settings (`PATCH /v1/workspace`).\n * Only supplied fields are changed.\n */\n update(params: UpdateWorkspaceParams): Observable<Workspace> {\n return this.http\n .patch<{ data: Workspace }>(this.url, params, { headers: this.authHeaders() })\n .pipe(this.unwrap());\n }\n\n /**\n * Schedule the workspace for deletion (`DELETE /v1/workspace`).\n * Only the workspace owner can perform this action.\n */\n delete(): Observable<void> {\n return this.voidRequest('DELETE', this.url);\n }\n\n /**\n * Update workspace preferences such as locale and notification settings\n * (`PATCH /v1/workspace/preferences`).\n */\n updatePreferences(params: UpdateWorkspacePreferencesParams): Observable<WorkspacePreferences> {\n return this.http\n .patch<{ data: WorkspacePreferences }>(`${this.url}/preferences`, params, {\n headers: this.authHeaders(),\n })\n .pipe(this.unwrap());\n }\n\n /**\n * Invite a new member to the workspace (`POST /v1/workspace/members/invite`).\n * The invite is accepted automatically when the user first logs in.\n */\n inviteMember(params: InviteMemberParams): Observable<WorkspaceMember> {\n return this.http\n .post<{ data: WorkspaceMember }>(`${this.url}/members/invite`, params, {\n headers: this.authHeaders(),\n })\n .pipe(this.unwrap());\n }\n\n /**\n * Update a member's role (`PATCH /v1/workspace/members/:userId`).\n */\n updateMember(userId: string, params: UpdateMemberParams): Observable<WorkspaceMember> {\n return this.http\n .patch<{ data: WorkspaceMember }>(`${this.url}/members/${userId}`, params, {\n headers: this.authHeaders(),\n })\n .pipe(this.unwrap());\n }\n\n /**\n * Remove a member from the workspace (`DELETE /v1/workspace/members/:userId`).\n * The workspace owner cannot be removed.\n */\n removeMember(userId: string): Observable<void> {\n return this.voidRequest('DELETE', `${this.url}/members/${userId}`);\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { EmailsService } from './services/emails.service';\nimport { ContactsService } from './services/contacts.service';\nimport { AudiencesService } from './services/audiences.service';\nimport { CampaignsService } from './services/campaigns.service';\nimport { TemplatesService } from './services/templates.service';\nimport { WebhooksService } from './services/webhooks.service';\nimport { DomainsService } from './services/domains.service';\nimport { ApiKeysService } from './services/api-keys.service';\nimport { AnalyticsService } from './services/analytics.service';\nimport { FlowsService } from './services/flows.service';\nimport { WorkspaceService } from './services/workspace.service';\n\n/**\n * Top-level facade that aggregates all Tratto resource services.\n *\n * Inject `TrattoService` for a single entry-point into the SDK, or inject\n * individual resource services (e.g. `EmailsService`) directly for\n * better tree-shaking in large applications.\n *\n * @example\n * ```ts\n * // app.component.ts\n * export class AppComponent {\n * private tratto = inject(TrattoService);\n *\n * sendWelcome() {\n * this.tratto.emails\n * .send({ from: 'hello@acme.com', to: 'user@example.com', subject: 'Welcome!' })\n * .subscribe(({ id }) => console.log('Sent:', id));\n * }\n * }\n * ```\n */\n@Injectable()\nexport class TrattoService {\n /** Access email sending and inspection methods. */\n readonly emails = inject(EmailsService);\n /** Access contact management and CSV import methods. */\n readonly contacts = inject(ContactsService);\n /** Access audience creation and membership methods. */\n readonly audiences = inject(AudiencesService);\n /** Access campaign creation, scheduling, and statistics methods. */\n readonly campaigns = inject(CampaignsService);\n /** Access template CRUD and version history methods. */\n readonly templates = inject(TemplatesService);\n /** Access webhook registration and delivery history methods. */\n readonly webhooks = inject(WebhooksService);\n /** Access domain onboarding and DNS verification methods. */\n readonly domains = inject(DomainsService);\n /** Access API key creation and revocation methods. */\n readonly apiKeys = inject(ApiKeysService);\n /** Access email analytics summary and time-series methods. */\n readonly analytics = inject(AnalyticsService);\n /** Access automation flow management methods. */\n readonly flows = inject(FlowsService);\n /** Access workspace settings and team member methods. */\n readonly workspace = inject(WorkspaceService);\n}\n","import { NgModule, ModuleWithProviders, EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { TRATTO_CONFIG } from './tratto.config';\nimport type { TrattoConfig } from './tratto.config';\nimport { TrattoService } from './tratto.service';\nimport { EmailsService } from './services/emails.service';\nimport { ContactsService } from './services/contacts.service';\nimport { AudiencesService } from './services/audiences.service';\nimport { CampaignsService } from './services/campaigns.service';\nimport { TemplatesService } from './services/templates.service';\nimport { WebhooksService } from './services/webhooks.service';\nimport { DomainsService } from './services/domains.service';\nimport { ApiKeysService } from './services/api-keys.service';\nimport { AnalyticsService } from './services/analytics.service';\nimport { FlowsService } from './services/flows.service';\nimport { WorkspaceService } from './services/workspace.service';\n\n/** All injectable services exported by this SDK. */\nconst TRATTO_PROVIDERS = [\n EmailsService,\n ContactsService,\n AudiencesService,\n CampaignsService,\n TemplatesService,\n WebhooksService,\n DomainsService,\n ApiKeysService,\n AnalyticsService,\n FlowsService,\n WorkspaceService,\n TrattoService,\n];\n\n/**\n * Provides all Tratto services for **standalone** Angular applications.\n *\n * Add this to your `ApplicationConfig` providers array alongside\n * `provideHttpClient()`. The SDK uses `HttpClient` internally; if your app\n * has not already provided it, include `provideHttpClient()` as well.\n *\n * @example\n * ```ts\n * // app.config.ts\n * import { provideHttpClient } from '@angular/common/http';\n * import { provideTratt } from '@tratto/angular';\n *\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideHttpClient(),\n * provideTratt({ apiKey: 'tratto_live_...' }),\n * ],\n * };\n * ```\n */\nexport function provideTratt(config: TrattoConfig): EnvironmentProviders {\n return makeEnvironmentProviders([\n { provide: TRATTO_CONFIG, useValue: config },\n ...TRATTO_PROVIDERS,\n ]);\n}\n\n/**\n * Angular module that registers all Tratto services.\n *\n * For Angular 14+ **standalone** applications prefer {@link provideTratt}.\n * For **NgModule**-based applications use `TrattoModule.forRoot()`.\n *\n * > **Note:** `HttpClientModule` (or `provideHttpClient()`) must be imported\n * > in your application before importing `TrattoModule`.\n *\n * @example\n * ```ts\n * // app.module.ts\n * import { HttpClientModule } from '@angular/common/http';\n * import { TrattoModule } from '@tratto/angular';\n *\n * @NgModule({\n * imports: [\n * HttpClientModule,\n * TrattoModule.forRoot({ apiKey: 'tratto_live_...' }),\n * ],\n * })\n * export class AppModule {}\n * ```\n */\n@NgModule({})\nexport class TrattoModule {\n static forRoot(config: TrattoConfig): ModuleWithProviders<TrattoModule> {\n return {\n ngModule: TrattoModule,\n providers: [\n { provide: TRATTO_CONFIG, useValue: config },\n ...TRATTO_PROVIDERS,\n ],\n };\n }\n}\n","// ── Configuration ─────────────────────────────────────────────────────────────\nexport { TrattoConfig, TRATTO_CONFIG } from './tratto.config';\n\n// ── Module & standalone provider ──────────────────────────────────────────────\nexport { TrattoModule, provideTratt } from './tratto.module';\n\n// ── Facade service ────────────────────────────────────────────────────────────\nexport { TrattoService } from './tratto.service';\n\n// ── Resource services ─────────────────────────────────────────────────────────\nexport { EmailsService } from './services/emails.service';\nexport { ContactsService } from './services/contacts.service';\nexport { AudiencesService } from './services/audiences.service';\nexport { CampaignsService } from './services/campaigns.service';\nexport { TemplatesService } from './services/templates.service';\nexport { WebhooksService } from './services/webhooks.service';\nexport { DomainsService } from './services/domains.service';\nexport { ApiKeysService } from './services/api-keys.service';\nexport { AnalyticsService } from './services/analytics.service';\nexport { FlowsService } from './services/flows.service';\nexport { WorkspaceService } from './services/workspace.service';\n\n// ── Types ─────────────────────────────────────────────────────────────────────\nexport type {\n // Shared\n Pagination,\n PaginatedResponse,\n // Emails\n SendEmailParams,\n ListEmailsParams,\n EmailSummary,\n EmailEvent,\n EmailDetail,\n // Contacts\n ContactStatus,\n Contact,\n CreateContactParams,\n UpdateContactParams,\n ListContactsParams,\n ImportJobStatus,\n // Audiences\n AudienceRuleOperator,\n AudienceRule,\n Audience,\n CreateAudienceParams,\n ListAudiencesParams,\n AddContactsToAudienceResult,\n // Campaigns\n CampaignStatus,\n CampaignStats,\n Campaign,\n CampaignStatsDetail,\n CreateCampaignParams,\n ListCampaignsParams,\n SendCampaignParams,\n // Templates\n TemplateStatus,\n TemplateSummary,\n Template,\n CreateTemplateParams,\n UpdateTemplateParams,\n ListTemplatesParams,\n TemplateVersionSummary,\n TemplateVersion,\n // Webhooks\n WebhookEventType,\n WebhookStatus,\n WebhookDeliveryStatus,\n Webhook,\n WebhookDelivery,\n CreateWebhookParams,\n ListWebhookDeliveriesParams,\n // Domains\n DomainStatus,\n DomainRecord,\n DomainSummary,\n Domain,\n ListDomainsParams,\n // API Keys\n ApiKeyEnv,\n ApiKey,\n ApiKeyCreated,\n CreateApiKeyParams,\n ListApiKeysParams,\n // Analytics\n AnalyticsPeriod,\n AnalyticsSummary,\n TimeseriesPoint,\n // Flows\n FlowStatus,\n FlowTriggerType,\n FlowStepType,\n FlowTrigger,\n FlowStep,\n Flow,\n CreateFlowParams,\n UpdateFlowParams,\n ListFlowsParams,\n // Workspace\n WorkspacePlan,\n WorkspaceMemberRole,\n WorkspaceLocale,\n Workspace,\n WorkspaceMember,\n WorkspacePreferences,\n UpdateWorkspaceParams,\n UpdateWorkspacePreferencesParams,\n InviteMemberParams,\n UpdateMemberParams,\n} from './tratto.types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,35 @@
1
+ {
2
+ "name": "@tratto/angular",
3
+ "version": "0.1.0",
4
+ "description": "Angular integration for Tratto email platform",
5
+ "author": "Tratto <hello@tratto.email>",
6
+ "license": "MIT",
7
+ "homepage": "https://tratto.email",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/tratto-email/tratto-angular.git"
11
+ },
12
+ "bugs": {
13
+ "url": "https://github.com/tratto-email/tratto-angular/issues"
14
+ },
15
+ "sideEffects": false,
16
+ "peerDependencies": {
17
+ "@angular/common": ">=22",
18
+ "@angular/core": ">=22"
19
+ },
20
+ "module": "fesm2022/tratto-angular.mjs",
21
+ "typings": "types/tratto-angular.d.ts",
22
+ "exports": {
23
+ "./package.json": {
24
+ "default": "./package.json"
25
+ },
26
+ ".": {
27
+ "types": "./types/tratto-angular.d.ts",
28
+ "default": "./fesm2022/tratto-angular.mjs"
29
+ }
30
+ },
31
+ "type": "module",
32
+ "dependencies": {
33
+ "tslib": "^2.3.0"
34
+ }
35
+ }