Skip to content

Dependencies

PdfAPI depends on two same-repo project references for its PDF processing surface, a set of SAIF framework NuGet packages for hosting, dependency injection, and data access, and a small number of third-party libraries for JSON, Swagger, and PDF format handling. It has no downstream API dependencies; its only outbound integrations are an Oracle database connection and outbound SMTP email.

Internal dependencies

Dependency Reference Type Project path Usage
PdfAPI.Core Project Reference PdfAPI.Core\PdfAPI.Core.csproj Shared request/response contract assembly (ConvertRequest, ExtractPagesRequest, MergeRequest, PdfResult, PdfTrackingInfo, PdfOptions, PageRange, Document) and PdfClientService (iTextSharp-based validation/inspection)
PdfAPI.SyncFusionCore Project Reference PdfApi.SyncFusionCore\PdfAPI.SyncFusionCore.csproj Syncfusion licensing (LicenseHelper.LicenseSyncfusion) and the three format operations on the default processor path (ConverterFactory.Convert, PdfMerger.Merge, PdfExtractor.Extract) plus PdfHelper form-field helpers; also transitively references PdfAPI.Core
SAIF.Web.API NuGet Package — Supplies ApiResponseHandler, the global message handler wrapping every request/response (envelope shape produced inside the package — not visible in this repository)
SAIF.Web.API.Core NuGet Package — Supplies BuildInfo.GetBuildInfo, used by GET buildVersion
SAIF.Framework.Web.Mvc / SAIF.Web.Mvc (1.0.16263.1-alpha) NuGet Package — Both resolve MVC extension surface, including RegisterCommonDependencies; the package reference is a legacy, pre-release (alpha) package id/version coexisting with the current SAIF.Framework.* 2.0.22xxx package family — see Tech debt
SAIF.Framework.Common NuGet Package — IEnvironmentService, ILogService contracts; concrete implementations resolved by RegisterCommonDependencies, not visible in this repository
SAIF.Framework.Data.NHibernate NuGet Package — IUnitOfWorkFactory, IUnitOfWork, DbConnectionManager, EnvironmentConfigKeys; used exclusively in the composition root (IocConfig.cs) and PdfTrackingService
SAIF.Data.Model.PDF NuGet Package — NHibernate entities PDFTracking, PDFStatusCode, PDFTrackingCode, PDFApplicationErrorCode and their ClassMap<T> mappings; not vendored in this repository — table/column names are unknown** (see Data model)

External dependencies

Dependency Version Usage
Autofac 3.5.0 (redirected) Dependency injection container — composition root (IocConfig.cs, Global.asax.cs)
NHibernate 4.0.3.4000 ORM used by IUnitOfWork (PdfTrackingService, via SAIF.Framework.Data.NHibernate)
Oracle.ManagedDataAccess 21.5.0 Oracle ADO.NET provider; underlies the NHibernate Oracle dialect used by the tracking connection
Newtonsoft.Json 8.0.3 (redirected to 8.0.0.0 binding) JSON request/response serialization for every JSON-formatted endpoint response
Swashbuckle / Swashbuckle.Core 5.3.2 Swagger document and UI generation via SwaggerConfig.cs, live via PreApplicationStartMethod
WebActivatorEx 2.0 Enables the PreApplicationStartMethod attribute used to register Swagger (SwaggerConfig.cs)
log4net 2.0.5 Logging backend behind ILogService; referenced transitively, not called directly in application code*
iTextSharp 5.5.11 PDF inspection/validation client used by the v1/info/* byte-array endpoints (PdfAPI.Core\Services\PdfClientService.cs)
Syncfusion.* (multiple packages, e.g. Syncfusion.Compression.Base) 18.3460.0.53 (redirected) Convert/merge/extract/flatten format operations on the default processor path (PdfApi.SyncFusionCore)
RestSharp 106.12.0 HTTP client library referenced by the solution closure; not called directly from PdfAPI\ application code*
Microsoft.AspNet.WebApi.HelpPage 5.2.3 Scaffolded API help-page area; not an application surface — see Overview: Non-documented artifacts

Transitive dependencies

Dependencies in this section are inherited from framework packages and are not referenced directly by this service, but are required at runtime.

Dependency Source framework Type Usage
SAIF.Data.Model.PDF SAIF.Framework.Data.NHibernate Transitive Supplies the four persistence entities used by PdfTrackingService; mappings are entirely external to this repository

Produced packages

Two NuGet packages are produced from this repository by dedicated pipelines, each evaluated against the two-condition API-client test: does the .nuspec declare a SAIF.Web.API.Clients dependency, and does the packaged source call this API over HTTP via JsonHttpClient/ClientInfo?

Package Manifest Pipeline Packaged content API-client test Disposition
PdfAPI.Client Scripts\PdfAPI.Client\PdfAPI.Client.nuspec Pipelines\build-vars-client.yml (AppType: nuget, IncludeReferencedProjects: true) PdfAPI.Client.dll + PdfAPI.Core.dll and sources Passes both conditions — the manifest declares a SAIF.Web.API.Clients dependency, and PdfAPI.Client\PdfClient.cs (PdfClient : IPdfClient) builds a JsonHttpClient against {url}/v1/ and issues PostJson<>/GetResult<> calls Genuine API client for this service
Pdf.Local.Client Scripts\Pdf.Local.Client\Pdf.Local.Client.nuspec Pipelines\build-vars-local-nuget.yml (AppType: nuget) PdfAPI.Core.dll + PdfAPI.SyncFusionCore.dll Fails — no SAIF.Web.API.Clients dependency and no HTTP usage of any kind Not an API client — an in-process PDF library distribution for local conversion/merge/extract without calling this service

The deployed API application itself (Pipelines\build-vars.yml, AppType: api) is deployed to IIS and is not packaged as a NuGet artifact.

API dependencies

None identified. No call to another SAIF-hosted API (via JsonHttpClient, SAIF.Web.API.Clients, or an equivalent HTTP client pattern) was found anywhere in PdfAPI\. PdfAPI is a leaf service from the perspective of outbound API calls; its only outbound integrations are the Oracle database connection and outbound SMTP email (see below).

Database connections

Database Schema Access method Resolved by Usage
Oracle IMG NHibernate IUnitOfWorkFactory("oracle") DbConnectionManager.GetOracleConnectionString(IEnvironmentService, EnvironmentConfigKeys.OracleDatabase, "IMG") — composed at run time, no <connectionStrings> element present PDF tracking persistence (PdfTrackingService) — see Configuration: Runtime-resolved database connections for full detail

Dependency risks and notes

  • Assembly binding redirects: PdfAPI\Web.config declares roughly 60 <runtime><assemblyBinding> version redirects (e.g. Autofac 3.5.0, Newtonsoft.Json 8.0.0.0, System.Web.Http 5.2.3, Syncfusion.Compression.Base 18.3460.0.53). These are configuration entries, not a dependency relationship in their own right, and are recorded here rather than in the transitive-dependency table above.
  • Legacy pre-release MVC package: SAIF.Web.Mvc 1.0.16263.1-alpha coexists with current SAIF.Framework.Web.Mvc assembly reference and current SAIF.Framework.* 2.0.22xxx packages — see Tech debt.
  • Envelope shape opacity: ApiResponseHandler's response envelope is implemented entirely inside SAIF.Web.API and is not visible from this repository; any consumer-facing documentation of the exact response wrapper must be resolved from that package.
  • External persistence model: SAIF.Data.Model.PDF owns all ClassMap<T> mappings for the tracking entities; a change to that package's schema is invisible to this repository until a compile/runtime failure occurs.
  • Unbounded PDF/format engine surface: iTextSharp 5.5.11 and multiple Syncfusion.* 18.3460.0.53 packages parse untrusted, unauthenticated document uploads (see Authentication and authorization).
  • Outbound SMTP integration: System.Net.Mail.SmtpClient("mail.saif.com") (hard-coded host) sends an incident email on processing failure when SendHeatEmailOnFailure is set (BR-PDFAPI-015); this is the only other outbound integration besides the Oracle connection above.

Note: Statements marked with * were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts. Statements marked with ** could not be confirmed; treat as unknown until verified.

Sources

  • PdfAPI\PdfAPI.csproj
  • PdfAPI\packages.config
  • PdfAPI\Web.config
  • PdfAPI\App_Start\IocConfig.cs
  • PdfAPI\App_Start\WebApiConfig.cs
  • PdfAPI\App_Start\SwaggerConfig.cs
  • PdfAPI\Global.asax.cs
  • PdfAPI\Services\PdfTrackingService.cs
  • PdfAPI\Services\PdfService.cs
  • PdfAPI\Controllers\v1\ApiInfoController.cs
  • Scripts\PdfAPI.Client\PdfAPI.Client.nuspec
  • Scripts\Pdf.Local.Client\Pdf.Local.Client.nuspec
  • Pipelines\build-vars-client.yml
  • Pipelines\build-vars-local-nuget.yml
  • Pipelines\build-vars.yml
  • PdfAPI.Client\PdfClient.cs