Skip to content

External Integrations ​

Source: extracted from project README, 2026-05-25.

SystemDirectionBound viaPurpose
GitHub sap-tutorials org (public)Build-timeGITHUB_TOKEN (rate-limit avoidance)Tutorial markdown source, discovered via discoverAllTutorials()
GitHub *-Contribution repos (private)Build-timeGITHUB_TOKEN (required)Validation quiz rules.vr files; QA channel content (ONLY_CONTRIBUTION_REPOS=true)
XSUAA / SAP IDPInboundtutorials-xsuaa (xsuaa/application)OAuth2 + JWT issuance; per-scope authorization (Admin, MobileApp, DisplayApp, Tutorial.Author, ConsolidationScope)
NGDS (legacy IMS analytics)Outboundtutorials-destination → ngds destinationPOST /ngds/developers/ims on tutorial/accomplishment completion. Failed sends persisted in NGDSFailedMessages; srv/jobs/ngds-retry.js replays them with backoff
Adobe AnalyticsOutboundDirect fetch — no bindingXML beacon event86 to sap.d1.sc.omtrdc.net (report suite sapdeveloperdev); see srv/lib/adobe-analytics.js
BTP MailOutboundtutorials-mail (mail/standard)Contributor + author notifications via srv/lib/mail-client.js; failed sends queued in FailedEmails
SAP AI CoreOutboundtutorials-aicore (aicore/extended, optional)Chat completions for ChatService + RAG; embedding generation for TutorialEmbedding. Degrades to 503 when unbound
SAP Audit LogOutboundtutorials-audit-log (auditlog/standard, optional)@PersonalData-driven access/modification events on Users/UserMetaData/TaskRecords; falls back to console sink when unbound
SAP Cloud LoggingOutboundtutorials-cloud-logging (cloud-logging/standard, optional, ingest_otlp.enabled=true)OTLP export from tutorials-srv backs cfLogsUrl virtual on PipelineLog/JobExecutionLog. Bound to tutorials-db-deployer/tutorials-db-qa-deployer (#257) so HDI deploy stdout is forwarded by the CF loggregator and persisted ~30 days. No-ops when unbound
SAP Cloud Foundry APIOutboundcf CLI inside migrate-from-hana.jsResolves cf service-key for cross-instance HANA migration (cutover only)

Identity is JWT-only on CAP ​

The Java IMS calls SCI (SAP Cloud Identity) over HTTPS to enrich user profiles after JWT validation. CAP does not — req.user.attr.email/given_name/family_name come straight from the XSUAA JWT's xs.user.attributes claims, eliminating that network hop and the corresponding destination binding. SCI lookups remain in scope only for the migrate-user-progress.js script during cutover, which talks to Java IMS REST endpoints that still go through SCI on the Java side.