import { ITGlueClient } from '../client'; import { QueryUtilOptions, QueryParams, BaseListResponse, BaseItemResponse, ExpirationResource } from '../types'; /** * Expirations resource module for IT Glue API * * Provides methods to interact with the /expirations endpoint. * Expirations represent items with expiration dates that require monitoring * and renewal management, such as domain names, SSL certificates, licenses, * warranties, contracts, and other time-sensitive assets. This read-only * resource helps organizations track and manage upcoming expirations to * prevent service disruptions and maintain compliance. * * **Note: This is a read-only resource. Expirations cannot be created, updated, or deleted.** * Expiration entries are automatically generated and maintained by IT Glue based on * expiration dates found in various resources throughout the system. * * ## Related Resources * Expirations are commonly used with: * - {@link Domains} - Domain registration expiration dates and renewal tracking * - {@link FlexibleAssets} - Custom expiration tracking for licenses and warranties * - {@link Configurations} - Hardware warranty and support contract expiration dates * - {@link Documents} - Contract documents and policy expiration dates * - {@link Organizations} - Organizations responsible for managing renewals * - {@link Contacts} - People responsible for renewal management and notifications * - {@link Passwords} - Service account credentials with expiration dates * - {@link Attachments} - Store certificates, licenses, and renewal documentation * - {@link Tags} - Categorize expirations by type, priority, or department * - {@link Locations} - Physical locations affected by expiring assets or services * - {@link Exports} - Export expiration data for compliance and planning reports * - {@link RelatedItems} - Create relationships between expirations and assets * * @see {@link Domains#list} for retrieving domain expiration information * @see {@link FlexibleAssets#list} for retrieving custom expiration tracking * @see {@link Configurations#list} for retrieving hardware warranty expiration dates * @see {@link Documents#list} for retrieving contract and policy documents * * @example * import { ITGlueClient } from '../client'; * import { Expirations } from './resources/expirations'; * * const client = new ITGlueClient({ apiKey: 'your-api-key' }); * const expirations = new Expirations(client); * * // List expirations * const list = await expirations.list(); * * // Get a single expiration * const expiration = await expirations.get('123'); * * // List expirations expiring soon * const expiringSoon = await expirations.list({ * filter: { expiration_date: '2024-12-31' } * }); * * @category System & Audit */ export declare class Expirations { private client; private basePath; private paginationUtil; /** * Create an Expirations resource instance * @param {ITGlueClient} client - ITGlueClient instance */ constructor(client: ITGlueClient); /** * List all expirations * * Retrieves a comprehensive list of items with expiration dates across your * IT Glue organization. This read-only endpoint provides access to all tracked * expirations, including domains, certificates, licenses, warranties, and contracts. * Use filtering options to focus on specific expiration types, date ranges, or * urgency levels for proactive renewal management. * * Expirations are automatically aggregated from various resources throughout * IT Glue and provide a centralized view of all time-sensitive items requiring * attention. This helps prevent service disruptions and ensures compliance * with renewal requirements. * * @param {QueryUtilOptions} [options] - Optional query parameters (filter, sort, page, etc.) * @param {boolean} [allPages=false] - If true, fetches all pages automatically * @returns {Promise>} List of expiration entries and pagination metadata * @throws {Error} When access denied (403) or invalid filter parameters (422) * @example * // List all expirations (default sorting by expiration date) * await expirations.list(); * @example * // List expirations expiring within the next 30 days * const thirtyDaysFromNow = new Date(); * thirtyDaysFromNow.setDate(thirtyDaysFromNow.getDate() + 30); * await expirations.list({ * filter: { * expiration_date: `..${thirtyDaysFromNow.toISOString().split('T')[0]}` * }, * sort: 'expiration_date', * include: ['resource'] * }); * @example * // Filter expirations by type and status * await expirations.list({ * filter: { * resource_type: 'Domain', * status: 'expiring_soon' * }, * sort: 'expiration_date', * page: { number: 1, size: 50 } * }); * @example * // Monitor critical expirations (certificates and licenses) * await expirations.list({ * filter: { * resource_type: ['Certificate', 'License'], * expiration_date: '2024-01-01..', * priority: 'high' * }, * sort: 'expiration_date' * }); * @example * // Error handling for expiration access * try { * const expirations = await expirations.list({ * filter: { invalid_field: 'value' } * }); * } catch (error) { * if (error.response?.status === 403) { * console.log('Insufficient permissions to access expirations'); * } else if (error.response?.status === 422) { * console.log('Invalid filter parameters:', error.response.data.errors); * } * } * @example * // Compliance reporting - export all expirations for audit * const complianceExpirations = await expirations.list({ * filter: { * expiration_date: '2024-01-01..2024-12-31' * }, * sort: 'expiration_date', * include: ['resource', 'organization'] * }, true); // Fetch all pages for complete report */ list(options?: QueryUtilOptions, allPages?: boolean): Promise>; /** * Get a single expiration by ID * * Retrieves detailed information about a specific expiration entry, including * the associated resource, expiration date, renewal status, and related metadata. * This is useful for examining specific expiration details and planning renewal * activities for individual items. * * @param {string} id - Expiration ID (required) * @param {QueryParams} [params] - Optional query parameters * @returns {Promise>} Expiration resource * @throws {Error} When expiration not found (404) or access denied (403) * @example * // Get a specific expiration * await expirations.get('123'); * @example * // Get expiration with associated resource details * await expirations.get('123', { * include: ['resource', 'organization', 'renewal_history'] * }); * @example * // Error handling for expiration retrieval * try { * const expiration = await expirations.get('invalid-id'); * } catch (error) { * if (error.response?.status === 404) { * console.log('Expiration not found'); * } else if (error.response?.status === 403) { * console.log('Access denied to expiration'); * } * } * @example * // Check expiration details for renewal planning * const expiration = await expirations.get('123', { * include: ['resource'] * }); * * const daysUntilExpiration = Math.ceil( * (new Date(expiration.data.attributes.expiration_date) - new Date()) / * (1000 * 60 * 60 * 24) * ); * * if (daysUntilExpiration <= 30) { * console.log(`Urgent: ${expiration.data.attributes.resource_name} expires in ${daysUntilExpiration} days`); * } */ get(id: string, params?: QueryParams): Promise>; }