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.configdeclares roughly 60<runtime><assemblyBinding>version redirects (e.g.Autofac3.5.0,Newtonsoft.Json8.0.0.0,System.Web.Http5.2.3,Syncfusion.Compression.Base18.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-alphacoexists with currentSAIF.Framework.Web.Mvcassembly reference and currentSAIF.Framework.*2.0.22xxx packages — see Tech debt. - Envelope shape opacity:
ApiResponseHandler's response envelope is implemented entirely insideSAIF.Web.APIand 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.PDFowns allClassMap<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.11and multipleSyncfusion.*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 whenSendHeatEmailOnFailureis set (BR-PDFAPI-015); this is the only other outbound integration besides the Oracle connection above.
Related documentation¶
- API index
- Overview
- Architecture
- Endpoints
- Authentication and authorization
- Configuration
- Operations and processes
- Business rules
- Data model
- Operational runbook
- Tech debt
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