{"info":{"_postman_id":"remoteregister-v1-api-collection","name":"RemoteRegister Public REST API (v1.0.0)","description":"Comprehensive Postman Collection mapping all /api/v1/ endpoints of RemoteRegister evidence-first attendance and stipend compliance platform. Designed for South African Skills Development Providers (SDPs), LMS integrators, enterprise payroll bridges, and SETA/QCTO compliance monitors.","schema":"https://schema.getpostman.com/json/collection/v2.1.0/collection.json","version":"1.0.0"},"auth":{"type":"bearer","bearer":[{"key":"token","value":"{{bearerToken}}","type":"string"}]},"variable":[{"key":"baseUrl","value":"http://localhost:3000","type":"string","description":"Base URL for RemoteRegister API server (e.g., http://localhost:3000 or production edge URL)"},{"key":"bearerToken","value":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...","type":"string","description":"Active OAuth 2.0 Bearer JWT access token"},{"key":"clientId","value":"rr_client_apex_sdp_8819","type":"string","description":"Client ID provisioned for OAuth 2.0 Client Credentials Grant"},{"key":"clientSecret","value":"sec_apex_sdp_9f82d1c6","type":"string","description":"Client Secret provisioned for OAuth 2.0 Client Credentials Grant"},{"key":"tenantId","value":"tenant_apex_01","type":"string","description":"SDP Tenant ID context (X-Tenant-ID)"},{"key":"learnerId","value":"lrn_001","type":"string","description":"Target learner ID for testing"},{"key":"cohortId","value":"coh_ec_2026_01","type":"string","description":"Active cohort identifier"},{"key":"programmeId","value":"prog_qcto_software_01","type":"string","description":"Accredited programme ID"},{"key":"id","value":"rec_sample_01","type":"string","description":"Generic resource identifier parameter"},{"key":"period","value":"2026-10","type":"string","description":"Compliance period formatted as YYYY-MM"},{"key":"bank","value":"capitec","type":"string","description":"Commercial bank code for payout exports (capitec, fnb, standard, absa, nedbank)"},{"key":"runId","value":"run_2026_10","type":"string","description":"Stipend calculation run identifier"},{"key":"hash","value":"a819b4892d19f8e4091c849182394019a8492019481920394819029384910293","type":"string","description":"Cryptographic SHA-256 seal for ECTA s15 verification"},{"key":"provider","value":"YIBA_VERIFIED","type":"string","description":"LMS Provider identifier (YIBA_VERIFIED, WEMASOFT, MOODLE)"}],"item":[{"name":"01. OAuth 2.0 & API Credentials","description":"Machine-to-machine OAuth 2.0 token issuance, client credentials provisioning, rate limiting, and OpenAPI / Postman schemas.","item":[{"name":"Exchange Client Credentials for Bearer Token","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"grant_type\": \"client_credentials\",\n  \"client_id\": \"{{clientId}}\",\n  \"client_secret\": \"{{clientSecret}}\",\n  \"scope\": \"attendance:read learners:read stipends:read payouts:initiate webhooks:manage lms:sync audit:read\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/oauth/token","host":["{{baseUrl}}"],"path":["api","v1","oauth","token"]},"description":"Issue signed HS256 JWT bearer token for API authorization. RFC 6749 compliant. Token lifetime: 3600s."}},{"name":"List Tenant API Credentials","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/api-credentials","host":["{{baseUrl}}"],"path":["api","v1","api-credentials"]},"description":"List active API client credentials provisioned under the authenticated tenant context with masked secrets."}},{"name":"Provision New API Client Credential","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Sage 300 People Payroll Connector\",\n  \"scopes\": [\n    \"attendance:read\",\n    \"stipends:read\",\n    \"payouts:initiate\"\n  ],\n  \"rateLimitPerMinute\": 240\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/api-credentials","host":["{{baseUrl}}"],"path":["api","v1","api-credentials"]},"description":"Provision a new OAuth 2.0 API client credential set with specified scopes. Plaintext secret returned once."}},{"name":"Reveal Raw Secret (Single Session)","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/api-credentials/{{id}}/secret","host":["{{baseUrl}}"],"path":["api","v1","api-credentials","{{id}}","secret"]},"description":"Securely fetch plaintext secret for the client credential ID during onboarding."}},{"name":"Revoke API Client Credential","request":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/api-credentials/{{id}}","host":["{{baseUrl}}"],"path":["api","v1","api-credentials","{{id}}"]},"description":"Immediately revoke API credentials. Blocks subsequent token exchange requests and invalidates active grants."}},{"name":"List Available API Scopes","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/api-scopes","host":["{{baseUrl}}"],"path":["api","v1","api-scopes"]},"description":"Query all supported RemoteRegister API scopes, human-readable labels, and regulatory categories."}},{"name":"Fetch OpenAPI 3.1.0 Specification","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/v1/openapi.json","host":["{{baseUrl}}"],"path":["api","v1","openapi.json"]},"description":"Retrieve full OpenAPI 3.1.0 JSON specification document for SDK generators and API gateways."}},{"name":"Download Postman Collection JSON","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/v1/postman-collection.json","host":["{{baseUrl}}"],"path":["api","v1","postman-collection.json"]},"description":"Download this structured Postman Collection mapping all /api/v1/ routes in the RemoteRegister platform."}},{"name":"Query API Key Rate Limits & Tier Monitoring","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/monitoring/rate-limits","host":["{{baseUrl}}"],"path":["api","v1","monitoring","rate-limits"]},"description":"Query live rate limit metrics, sliding 60s window counters, platform tier ceilings, and warning statuses across all registered API keys."}},{"name":"Simulate Rate Limit Burst & Warning Threshold","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"clientId\": \"rr_client_apex_sdp_8819\",\n  \"count\": 25,\n  \"path\": \"/api/v1/attendance\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/monitoring/rate-limits/simulate","host":["{{baseUrl}}"],"path":["api","v1","monitoring","rate-limits","simulate"]},"description":"Simulate high-frequency API traffic bursts to evaluate proactive warning thresholds (70%+) or HTTP 429 throttling triggers."}},{"name":"Reset API Key Window Counter","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"clientId\": \"rr_client_apex_sdp_8819\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/monitoring/rate-limits/reset","host":["{{baseUrl}}"],"path":["api","v1","monitoring","rate-limits","reset"]},"description":"Testing utility to clear active sliding 60-second window request counters back to zero for a specific API credential."}},{"name":"Update API Key Platform Tier","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"tier\": \"ENTERPRISE\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/monitoring/rate-limits/{{clientId}}/tier?clientId=rr_client_apex_sdp_8819","host":["{{baseUrl}}"],"path":["api","v1","monitoring","rate-limits","{{clientId}}","tier"],"query":[{"key":"clientId","value":"rr_client_apex_sdp_8819","description":"API Client Identifier"}]},"description":"Dynamically switch an API key between platform tiers (COMMUNITY, STANDARD, ENTERPRISE, UNLIMITED) and adjust rate limits."}}]},{"name":"02. Tenant Lifecycle & Hierarchy","description":"SDP tenant profile management and PostgreSQL ltree regional campus hierarchical node traversal.","item":[{"name":"Get Active Tenant Details","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/tenant","host":["{{baseUrl}}"],"path":["api","v1","tenant"]},"description":"Query current tenant metadata: legal name, SDL number, SETA accreditation, and small-tenant mode status."}},{"name":"Get Organizational Hierarchy Tree","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/hierarchy","host":["{{baseUrl}}"],"path":["api","v1","hierarchy"]},"description":"Fetch tree structure using PostgreSQL ltree path conventions (e.g., khula.eastern_cape.or_tambo)."}}]},{"name":"03. Programmes & Cohorts","description":"SETA and QCTO accredited programmes, occupational qualifications, cohort schedules, and financial tranche ceilings.","item":[{"name":"List Accredited Programmes","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/programmes","host":["{{baseUrl}}"],"path":["api","v1","programmes"]},"description":"List registered learning programmes with SETA code, NQF level, tranche budgets, and unit standards."}},{"name":"List Active Learnership Cohorts","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/cohorts","host":["{{baseUrl}}"],"path":["api","v1","cohorts"]},"description":"Query cohorts with delivery dates, designated facilitator, assigned campus, and enrolled candidate count."}}]},{"name":"04. Learner Registry & POPIA Compliance","description":"Candidate registry, Modulo-10 Luhn validation, POPIA Section 35 minor consent, and Department of Home Affairs (DHA) verification.","item":[{"name":"List Enrolled Learners","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/learners","host":["{{baseUrl}}"],"path":["api","v1","learners"]},"description":"Query all enrolled learners with status, cohort linkage, DHA status, and AVS bank verification."}},{"name":"Enroll New Learner","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"firstName\": \"Sipho\",\n  \"lastName\": \"Ndlovu\",\n  \"nationalId\": \"0408155280087\",\n  \"email\": \"sipho.ndlovu@example.co.za\",\n  \"phoneNumber\": \"+27821234567\",\n  \"cohortId\": \"coh_ec_2026_01\",\n  \"programmeId\": \"prog_qcto_software_01\",\n  \"disability\": false,\n  \"gender\": \"MALE\",\n  \"race\": \"AFRICAN\",\n  \"banking\": {\n    \"bankName\": \"Capitec Bank\",\n    \"accountNumber\": \"1548902341\",\n    \"branchCode\": \"470010\",\n    \"accountType\": \"SAVINGS\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/learners","host":["{{baseUrl}}"],"path":["api","v1","learners"]},"description":"Enroll a single candidate into a cohort. Validates South African ID format, computes age, and flags minors (<18)."}},{"name":"Validate South African ID Number (Luhn)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"idNumber\": \"0205125800085\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/validate-id","host":["{{baseUrl}}"],"path":["api","v1","validate-id"]},"description":"Execute Modulo-10 Luhn checksum check, extract birth date, compute citizenship status, and verify checksum digit."}},{"name":"Preflight Validate Bulk CSV Batch","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"rows\": [\n    {\n      \"firstName\": \"Nomvula\",\n      \"lastName\": \"Khumalo\",\n      \"nationalId\": \"0301140800089\",\n      \"email\": \"nomvula@example.co.za\",\n      \"phoneNumber\": \"+27731234567\",\n      \"cohortId\": \"coh_ec_2026_01\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/learners/preflight-validate","host":["{{baseUrl}}"],"path":["api","v1","learners","preflight-validate"]},"description":"Statutory gatekeeper: checks for duplicate IDs, Luhn validity, minor consent requirements, and format errors."}},{"name":"Commit Bulk Learner Roster","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"learners\": [\n    {\n      \"firstName\": \"Nomvula\",\n      \"lastName\": \"Khumalo\",\n      \"nationalId\": \"0301140800089\",\n      \"email\": \"nomvula@example.co.za\",\n      \"phoneNumber\": \"+27731234567\",\n      \"cohortId\": \"coh_ec_2026_01\",\n      \"programmeId\": \"prog_qcto_software_01\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/learners/bulk-import","host":["{{baseUrl}}"],"path":["api","v1","learners","bulk-import"]},"description":"Commit pre-validated learner roster to the master store and append to the cryptographic audit trail."}},{"name":"Record POPIA s35 Guardian Consent for Minor","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"guardianName\": \"Mirriam Ndlovu\",\n  \"guardianIdNumber\": \"7503120890082\",\n  \"guardianPhone\": \"+27829988776\",\n  \"guardianRelationship\": \"Mother\",\n  \"consentGranted\": true,\n  \"consentMethod\": \"DIGITAL_SMS_OTP\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/learners/{{learnerId}}/guardian-consent","host":["{{baseUrl}}"],"path":["api","v1","learners","{{learnerId}}","guardian-consent"]},"description":"Statutory requirement under POPIA Act 4 of 2013 Section 35. Unlocks biometric enrollment for learners under 18."}},{"name":"Upload Physical Paper Consent Form Scan","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"guardianName\": \"Samuel Sithole\",\n  \"guardianIdNumber\": \"7108225890081\",\n  \"guardianPhone\": \"+27845551234\",\n  \"fileBase64\": \"data:application/pdf;base64,JVBERi0xLjQK...\",\n  \"fileName\": \"ConsentForm_Signed_Sithole.pdf\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/learners/{{learnerId}}/paper-consent-form","host":["{{baseUrl}}"],"path":["api","v1","learners","{{learnerId}}","paper-consent-form"]},"description":"Upload signed hard-copy parental consent form for rural SDP sites without SMS connectivity."}},{"name":"POPIA Section 35 18th Birthday Re-Consent","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"consentGranted\": true,\n  \"signatureType\": \"BIOMETRIC_AFFIRMATION\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/learners/{{learnerId}}/18th-birthday-reconsent","host":["{{baseUrl}}"],"path":["api","v1","learners","{{learnerId}}","18th-birthday-reconsent"]},"description":"Direct candidate re-consent upon turning 18 during active learnership, transferring data processing consent."}},{"name":"Update POPIA Data Processing Consent Choice","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"allowBiometrics\": true,\n  \"allowThirdPartySharing\": true\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/learners/{{learnerId}}/consent-choice","host":["{{baseUrl}}"],"path":["api","v1","learners","{{learnerId}}","consent-choice"]},"description":"Update opt-in consent for biometric clock-in and statutory reporting (SETA/SARS/QCTO)."}},{"name":"Verify Candidate with Home Affairs (HANIS/DHA)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"bypassCache\": false\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/dha/verify/{{learnerId}}","host":["{{baseUrl}}"],"path":["api","v1","dha","verify","{{learnerId}}"]},"description":"Execute Department of Home Affairs National Population Register identity match. Checks living status and photo."}},{"name":"Get DHA Verification & Token Cache Statistics","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/dha/stats","host":["{{baseUrl}}"],"path":["api","v1","dha","stats"]},"description":"Inspect cached verification token hit rates, avoiding per-event R10.00 bureau transaction fees."}},{"name":"Simulate DHA External Bureau Downtime","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"active\": true\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/dha/simulate-outage","host":["{{baseUrl}}"],"path":["api","v1","dha","simulate-outage"]},"description":"Toggle bureau downtime to exercise the DHA_PENDING fallback. Requires R1/R2 and only works while the DHA provider is in simulator mode (otherwise 409)."}}]},{"name":"05. Precision Biometrics & Liveness","description":"NIST MINEX III minutiae matching and ISO/IEC 30107-3 Presentation Attack Detection behind a vendor abstraction. Only SHA-256 template digests cross this boundary — the API never accepts or returns raw biometric media.","item":[{"name":"Match Fingerprint Minutiae (NIST MINEX III)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"learnerId\": \"lrn_001_ayanda\",\n  \"probeFinger\": \"RIGHT_THUMB\",\n  \"useTwoFingerFusion\": true,\n  \"simulateAbradedSkin\": false\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/biometrics/match-fingerprint","host":["{{baseUrl}}"],"path":["api","v1","biometrics","match-fingerprint"]},"description":"Scores an enrolled ISO/IEC 19794-2 candidate through the active matcher provider. Responses carry providerName, providerMode and certification so simulator evidence is never mistaken for a certified run."}},{"name":"Verify Facial Liveness (ISO 30107-3 PAD)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"learnerId\": \"lrn_001_ayanda\",\n  \"simulatedAttack\": \"LEVEL_2_SCREEN_REPLAY\",\n  \"activeChallenge\": \"EYE_BLINK_SEQUENCE\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/biometrics/verify-face-liveness","host":["{{baseUrl}}"],"path":["api","v1","biometrics","verify-face-liveness"]},"description":"1:1 face verification plus presentation attack detection against photo prints, replay screens and 3D silicone masks. `simulatedAttack` is a test-harness hint only; the platform holds no face image."}},{"name":"List Enrolled Template Digests","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/biometrics/learner-templates/{{learnerId}}","host":["{{baseUrl}}"],"path":["api","v1","biometrics","learner-templates","{{learnerId}}"]},"description":"Enrolment status and ISO/IEC 19794-2 template metadata (digest, NFIQ2 score, minutiae count). No image bytes and no reversible template material are ever returned."}},{"name":"Get Biometric Provider Status","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/biometrics/provider-status","host":["{{baseUrl}}"],"path":["api","v1","biometrics","provider-status"]},"description":"Active matcher and PAD vendor modes, certification text, missing configuration keys and the rawMediaStorageSupported: false guarantee."}},{"name":"Execute MINEX III Precision Benchmark","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/biometrics/benchmark-minex3","host":["{{baseUrl}}"],"path":["api","v1","biometrics","benchmark-minex3"]},"description":"Quality Gate 5.0 harness: 50 abraded manual-trade samples (single-finger vs two-finger fused FNMR) plus a 15-presentation PAD attack sweep. The report states its evidenceMode and searchSpeedSource."}}]},{"name":"06. Attendance Registers & Edge Sync","description":"Offline biometric terminal batch synchronization, device attestation, and attendance certificate generation.","item":[{"name":"Sync Offline Edge Clocking Batches","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"deviceId\": \"dev_jhb_tablet_01\",\n  \"syncCursor\": 1042,\n  \"clockingRecords\": [\n    {\n      \"learnerId\": \"lrn_001\",\n      \"timestamp\": \"2026-10-09T08:00:15Z\",\n      \"eventType\": \"CLOCK_IN\",\n      \"biometricType\": \"FINGERPRINT\",\n      \"matchScore\": 68,\n      \"latitude\": -26.1952,\n      \"longitude\": 28.0341,\n      \"hash\": \"sha256_record_hash_7719\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/sync/batches","host":["{{baseUrl}}"],"path":["api","v1","sync","batches"]},"description":"Ingest cryptographically signed attendance records from rural edge tablets with cursor reconciliation."}},{"name":"List Enrolled Edge Devices","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/devices","host":["{{baseUrl}}"],"path":["api","v1","devices"]},"description":"List registered biometrics terminals, TPM attestation status, enrolled campuses, and firmware versions."}},{"name":"Get Device Cohort Assignments","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/devices/{{id}}/assignments","host":["{{baseUrl}}"],"path":["api","v1","devices","{{id}}","assignments"]},"description":"Inspect active cohort and classroom roster mappings cached on a specific biometric device."}},{"name":"Revoke Compromised Edge Device","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"reason\": \"Hardware lost or reported stolen in transit\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/devices/{{id}}/revoke","host":["{{baseUrl}}"],"path":["api","v1","devices","{{id}}","revoke"]},"description":"Blacklist terminal certificate in KMS; rejects all subsequent batch sync attempts."}}]},{"name":"07. Verification Center & Maker-Checker","description":"Dual-custody verification queue, exception handling, and supervisor biometric override management.","item":[{"name":"List Pending Queue Items","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/verification-queue","host":["{{baseUrl}}"],"path":["api","v1","verification-queue"]},"description":"Query unresolved biometric overrides, minor consent verifications, and medical exception notes."}},{"name":"Approve Verification Item (Checker)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"reviewerName\": \"Nomsa Sithole (Verifier)\",\n  \"decisionNote\": \"Verified guardian ID book scan against DHA population register.\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/verification-queue/{{id}}/approve","host":["{{baseUrl}}"],"path":["api","v1","verification-queue","{{id}}","approve"]},"description":"Approve exception. Enforces Maker-Checker Separation of Duties (SoD) between Trainer and Verifier."}},{"name":"Reject Verification Item","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"reviewerName\": \"Nomsa Sithole (Verifier)\",\n  \"decisionNote\": \"Guardian phone number unresponsive; requires original signed document.\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/verification-queue/{{id}}/reject","host":["{{baseUrl}}"],"path":["api","v1","verification-queue","{{id}}","reject"]},"description":"Reject item back to facilitator with mandatory statutory rejection rationale."}}]},{"name":"08. Workplace Learning (WBL) & M7 Attestation","description":"Host employers, polygon geofences, QCTO digital logbooks, EISA readiness assessments, and mentor passwordless attestation.","item":[{"name":"List Host Employers","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/wbl/host-employers","host":["{{baseUrl}}"],"path":["api","v1","wbl","host-employers"]},"description":"Query accredited host employer workplaces where candidates undergo practical work-based learning."}},{"name":"Register Host Employer","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"companyName\": \"Sasol Synfuels Secunda\",\n  \"registrationNumber\": \"1979/003201/07\",\n  \"sdlNumber\": \"L720741234\",\n  \"contactPerson\": \"Johan van der Merwe\",\n  \"contactEmail\": \"johan.vdm@example.com\",\n  \"contactPhone\": \"+27832221199\",\n  \"industrySector\": \"Chemical & Energy\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/wbl/host-employers","host":["{{baseUrl}}"],"path":["api","v1","wbl","host-employers"]},"description":"Onboard host employer partner with legal entity details and SDL reference."}},{"name":"List Workplace Venues & Geofences","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/wbl/venues","host":["{{baseUrl}}"],"path":["api","v1","wbl","venues"]},"description":"Query training venues with geographic polygon coordinates for geofence validation."}},{"name":"Register Workplace Venue with Geofence","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"hostEmployerId\": \"he_01\",\n  \"venueName\": \"Secunda Gate 2 Engineering Workshop\",\n  \"latitude\": -26.5167,\n  \"longitude\": 29.1833,\n  \"radiusMeters\": 250,\n  \"polygonCoordinates\": [\n    [\n      -26.516,\n      29.1825\n    ],\n    [\n      -26.516,\n      29.1841\n    ],\n    [\n      -26.5174,\n      29.1841\n    ],\n    [\n      -26.5174,\n      29.1825\n    ]\n  ]\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/wbl/venues","host":["{{baseUrl}}"],"path":["api","v1","wbl","venues"]},"description":"Establish workplace geofence polygon boundary for anti-spoof location verification."}},{"name":"Validate Point-in-Polygon Geofence","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"venueId\": \"ven_secunda_01\",\n  \"latitude\": -26.5165,\n  \"longitude\": 29.183\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/wbl/validate-geofence","host":["{{baseUrl}}"],"path":["api","v1","wbl","validate-geofence"]},"description":"Compute ray-casting algorithm to verify if GPS coordinates fall inside approved employer premises."}},{"name":"List Digital Workplace Logbooks","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/wbl/logbooks","host":["{{baseUrl}}"],"path":["api","v1","wbl","logbooks"]},"description":"Retrieve learner logbook entries detailing practical task hours and QCTO curriculum alignment."}},{"name":"Submit Daily Logbook Entry","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"learnerId\": \"lrn_001\",\n  \"date\": \"2026-10-09\",\n  \"hoursSpent\": 7.5,\n  \"curriculumModuleCode\": \"KM-01-KT01\",\n  \"taskDescription\": \"Configured Cisco 2960 switch VLAN trunking and tested ping latencies.\",\n  \"evidenceUrl\": \"https://storage.remoteregister.co.za/evidence/logbook_ev_9912.pdf\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/wbl/logbooks","host":["{{baseUrl}}"],"path":["api","v1","wbl","logbooks"]},"description":"Submit daily practical learning entry for designated mentor review."}},{"name":"Approve Logbook Entry","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"mentorId\": \"men_johan_01\",\n  \"notes\": \"Task completed accurately under supervision.\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/wbl/logbooks/{{id}}/approve","host":["{{baseUrl}}"],"path":["api","v1","wbl","logbooks","{{id}}","approve"]},"description":"Sign off candidate workplace task entry. Increments verified logbook hours towards EISA gate."}},{"name":"Evaluate QCTO EISA Assessment Readiness","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/wbl/eisa-readiness","host":["{{baseUrl}}"],"path":["api","v1","wbl","eisa-readiness"]},"description":"Audit candidates against External Integrated Summative Assessment prerequisites (hours, logbooks, modules)."}},{"name":"Request Mentor Passwordless OTP","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"contactPhoneOrEmail\": \"+27832221199\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/wbl/mentor/auth/request-otp","host":["{{baseUrl}}"],"path":["api","v1","wbl","mentor","auth","request-otp"]},"description":"Dispatch 6-digit OTP to mentor mobile phone for zero-friction digital logbook sign-off."}},{"name":"Verify Mentor OTP","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"contact\": \"+27832221199\",\n  \"otpCode\": \"849102\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/wbl/mentor/auth/verify-otp","host":["{{baseUrl}}"],"path":["api","v1","wbl","mentor","auth","verify-otp"]},"description":"Authenticate workplace mentor session without requiring enterprise passwords."}},{"name":"Submit M7 Digital Attestation","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"cohortId\": \"coh_ec_2026_01\",\n  \"periodMonth\": \"2026-10\",\n  \"mentorId\": \"men_johan_01\",\n  \"totalDaysAttested\": 22,\n  \"digitalSignatureHash\": \"sha256_mentor_signature_9901\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/wbl/mentor/attestations","host":["{{baseUrl}}"],"path":["api","v1","wbl","mentor","attestations"]},"description":"Formal SETA M7 workplace mentor attestation certifying practical attendance for monthly stipend unlocking."}}]},{"name":"09. Deterministic Stipend Engine","description":"Sectoral Determination 5 (SD5) calculations, NMW 2026 GN R7083 rate schedules, and dual sign-off (SoD-5).","item":[{"name":"List Stipend Calculation Runs","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/stipends/runs","host":["{{baseUrl}}"],"path":["api","v1","stipends","runs"]},"description":"Inspect past and active monthly payroll stipend calculation runs across all programmes."}},{"name":"Calculate Monthly Stipends (SD5 / NMW)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"programmeId\": \"prog_qcto_software_01\",\n  \"periodMonth\": \"2026-10\",\n  \"hourlyRateZar\": 27.58,\n  \"standardDaysInMonth\": 22\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/stipends/calculate","host":["{{baseUrl}}"],"path":["api","v1","stipends","calculate"]},"description":"Execute deterministic 8-rule stipend calculation incorporating verified hours, certified sick leave, and deductions."}},{"name":"Primary Lock Stipend Run","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"lockedBy\": \"Finance Officer Sipho Dlamini\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/stipends/runs/{{id}}/lock","host":["{{baseUrl}}"],"path":["api","v1","stipends","runs","{{id}}","lock"]},"description":"Seal stipend run numbers. Enforces primary lock before routing to secondary sign-off or bank release."}},{"name":"Execute Secondary Dual Sign-Off (SoD-5)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"signedBy\": \"Thandi Molefe (Tenant Admin)\",\n  \"signerRole\": \"R2_TENANT_ADMIN\",\n  \"digitalKey\": \"ED25519-R2-TENANT-KEY-9842\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/stipends/runs/{{id}}/secondary-sign","host":["{{baseUrl}}"],"path":["api","v1","stipends","runs","{{id}}","secondary-sign"]},"description":"Mandatory secondary executive sign-off for high-value pay runs (>R50,000 threshold)."}},{"name":"Execute AVS-R Bank Account Verification","request":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/avs/check/{{learnerId}}","host":["{{baseUrl}}"],"path":["api","v1","avs","check","{{learnerId}}"]},"description":"Verifies the banking details already held on the learner record (no account data is accepted in the body). Duplicate-account collisions are detected locally before any paid bureau call, and only a salted account fingerprint plus a masked display value are retained."}},{"name":"List AVS Verification History","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/avs/history/{{learnerId}}","host":["{{baseUrl}}"],"path":["api","v1","avs","history","{{learnerId}}"]},"description":"Prior AVS outcomes for a learner: reason code, status, provider mode and masked account. Account numbers are never returned."}},{"name":"AVS Outcome Mix & Spend","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/avs/stats","host":["{{baseUrl}}"],"path":["api","v1","avs","stats"]},"description":"Verified/failed/pending mix, duplicate-review count, per-call cost and active provider mode."}},{"name":"Simulate AVS Bureau Downtime","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"active\": true\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/avs/simulate-outage","host":["{{baseUrl}}"],"path":["api","v1","avs","simulate-outage"]},"description":"Toggle bureau downtime so checks resolve to PENDING rather than passing. Requires R1/R2 and simulator mode (otherwise 409)."}},{"name":"Download Commercial Bank ACB Payout File","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/export/payout/{{bank}}/{{runId}}","host":["{{baseUrl}}"],"path":["api","v1","export","payout","{{bank}}","{{runId}}"]},"description":"Export strict formatted ACB/Netcash payout text file (Capitec, FNB, Standard Bank, Absa, Nedbank)."}}]},{"name":"10. Direct API Payouts & PayShap","description":"SARB Rapid Payments Programme (RPP), Netcash PayShap ISO 20022 real-time disbursements (<2.0s latency).","item":[{"name":"List Direct Payout Batches","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/payouts/batches","host":["{{baseUrl}}"],"path":["api","v1","payouts","batches"]},"description":"Query automated API stipend disbursement batches with real-time settlement receipts."}},{"name":"Get Payout Batch Details with Transactions","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/payouts/batches/{{id}}","host":["{{baseUrl}}"],"path":["api","v1","payouts","batches","{{id}}"]},"description":"Inspect itemized payout breakdown per candidate, ISO 20022 message IDs, and PayShap identifiers."}},{"name":"Preflight Validate Payout Requirements","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"runId\": \"run_2026_10\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/payouts/preflight-validate","host":["{{baseUrl}}"],"path":["api","v1","payouts","preflight-validate"]},"description":"Statutory preflight check: confirms Dual Sign-Off status, AVS pass rates (>=95%), and sufficient tranche budget."}},{"name":"Initiate Direct PayShap Payout","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"runId\": \"run_2026_10\",\n  \"provider\": \"NETCASH_PAYSHAP\",\n  \"scheduledDate\": \"2026-10-09\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/payouts/initiate","host":["{{baseUrl}}"],"path":["api","v1","payouts","initiate"]},"description":"Trigger immediate programmatic disbursement to candidate accounts via SARB PayShap rails."}}]},{"name":"11. Real-Time Webhooks Engine","description":"Asynchronous HTTPS callback subscriptions with HMAC-SHA256 request signatures and exponential backoff.","item":[{"name":"List Webhook Subscriptions","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/webhooks","host":["{{baseUrl}}"],"path":["api","v1","webhooks"]},"description":"Query active webhook endpoints configured to receive real-time event notifications."}},{"name":"Register Webhook Endpoint","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Enterprise ERP Event Listener\",\n  \"endpointUrl\": \"https://erp.apexacademy.co.za/api/v1/webhooks/remoteregister\",\n  \"events\": [\n    \"attendance.session_sealed\",\n    \"payout.dispatched\",\n    \"payout.cleared\",\n    \"learner.registered\",\n    \"compliance.flag_raised\"\n  ]\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/webhooks","host":["{{baseUrl}}"],"path":["api","v1","webhooks"]},"description":"Register HTTPS URL for automated callbacks. Auto-generates secret for X-RemoteRegister-Signature verification."}},{"name":"Dispatch Synthetic Test Event","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"event\": \"attendance.session_sealed\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/webhooks/{{id}}/test","host":["{{baseUrl}}"],"path":["api","v1","webhooks","{{id}}","test"]},"description":"Send test payload to verify TLS certificate, network latency, and customer HMAC receiver."}},{"name":"Delete Webhook Subscription","request":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/webhooks/{{id}}","host":["{{baseUrl}}"],"path":["api","v1","webhooks","{{id}}"]},"description":"Deactivate webhook subscription and cease event dispatch."}},{"name":"List Webhook Delivery Logs","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/webhooks/deliveries","host":["{{baseUrl}}"],"path":["api","v1","webhooks","deliveries"]},"description":"Query historical delivery attempts, HTTP response codes, latency in ms, and error logs."}},{"name":"Retry Failed Webhook Delivery","request":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/webhooks/deliveries/{{id}}/retry","host":["{{baseUrl}}"],"path":["api","v1","webhooks","deliveries","{{id}}","retry"]},"description":"Manually re-dispatch a failed webhook event delivery."}},{"name":"Simulate Real-Time Platform Event","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"event\": \"attendance.session_sealed\",\n  \"data\": {\n    \"sessionId\": \"sess_jhb_2026_10_09\",\n    \"cohortId\": \"coh_ec_2026_01\",\n    \"presentLearners\": 48,\n    \"absentLearners\": 2\n  }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/webhooks/simulate-event","host":["{{baseUrl}}"],"path":["api","v1","webhooks","simulate-event"]},"description":"Trigger synthetic event across all subscribed endpoints to test system integration."}}]},{"name":"12. Enterprise LMS Connectors","description":"Bidirectional sync bridges for Yiba Verified, Wemasoft, and Moodle Workplace learning management systems.","item":[{"name":"List LMS Connectors","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/integrations/lms/connectors","host":["{{baseUrl}}"],"path":["api","v1","integrations","lms","connectors"]},"description":"Query configuration status of LMS connectors (Yiba Verified, Wemasoft, Moodle)."}},{"name":"Update LMS Connector Config","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"apiUrl\": \"https://api.yibaverified.co.za/v2\",\n  \"apiKey\": \"yiba_live_sec_99812401\",\n  \"syncIntervalHours\": 6,\n  \"autoSyncRoster\": true,\n  \"autoPushAttendance\": true\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/integrations/lms/connectors/{{id}}","host":["{{baseUrl}}"],"path":["api","v1","integrations","lms","connectors","{{id}}"]},"description":"Update credentials and automated synchronization flags for the chosen LMS provider."}},{"name":"Test LMS Connection Handshake","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"provider\": \"YIBA_VERIFIED\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/integrations/lms/test-connection","host":["{{baseUrl}}"],"path":["api","v1","integrations","lms","test-connection"]},"description":"Verify connectivity, latency, and API key validity against the remote LMS service."}},{"name":"Bidirectionally Ingest LMS Roster","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"provider\": \"YIBA_VERIFIED\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/integrations/lms/sync-roster","host":["{{baseUrl}}"],"path":["api","v1","integrations","lms","sync-roster"]},"description":"Import enrolled learner records from LMS; reconcile South African ID numbers with RemoteRegister master registry."}},{"name":"Query Synced LMS Qualification Modules","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/integrations/lms/modules/{{provider}}","host":["{{baseUrl}}"],"path":["api","v1","integrations","lms","modules","{{provider}}"]},"description":"Fetch occupational curriculum modules synced from the LMS platform."}},{"name":"Push Sealed Attendance Hours to LMS","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"provider\": \"YIBA_VERIFIED\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/integrations/lms/push-attendance","host":["{{baseUrl}}"],"path":["api","v1","integrations","lms","push-attendance"]},"description":"Transmit verified daily biometric attendance hours directly into learner LMS gradebooks."}}]},{"name":"13. Tax Schedules & SARS Compliance","description":"SARS Section 12H learnership tax allowance calculations, ETI Employment Tax Incentive EMP201 ledgers, and B-BBEE evidence.","item":[{"name":"Calculate SARS Section 12H Allowances","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/tax/sars-s12h","host":["{{baseUrl}}"],"path":["api","v1","tax","sars-s12h"]},"description":"Calculate commencement and completion tax allowances (R40,000 / R60,000 disability) under Act 58 of 1962."}},{"name":"Lock Section 12H Claim Schedule","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"lockedBy\": \"Tax Consultant Annelize Smuts (CA SA)\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/tax/sars-s12h/lock-sign-off","host":["{{baseUrl}}"],"path":["api","v1","tax","sars-s12h","lock-sign-off"]},"description":"Freeze Section 12H schedules and generate cryptographic seal for corporate tax return IT14SD filing."}},{"name":"Monitor s12H Sunset Clause Status","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/tax/sunset-status","host":["{{baseUrl}}"],"path":["api","v1","tax","sunset-status"]},"description":"Audit registered learnership agreement dates against National Treasury Section 12H sunset deadline."}},{"name":"Download Section 12H Tax CSV Schedule","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/export/sars-s12h","host":["{{baseUrl}}"],"path":["api","v1","export","sars-s12h"]},"description":"Download itemized SARS Section 12H allowance spreadsheet for corporate tax filing."}},{"name":"Calculate Employment Tax Incentive (ETI)","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/tax/eti","host":["{{baseUrl}}"],"path":["api","v1","tax","eti"]},"description":"Compute youth wage subsidy claims (Act 26 of 2013) for eligible candidates aged 18–29."}},{"name":"Lock ETI Claim for EMP201 Filing","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"lockedBy\": \"Payroll Accountant\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/tax/eti/lock-sign-off","host":["{{baseUrl}}"],"path":["api","v1","tax","eti","lock-sign-off"]},"description":"Lock monthly ETI calculation for inclusion in SARS monthly PAYE EMP201 declaration."}},{"name":"Execute Gate 4 Statutory Reconciliation Suite","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/tax/gate4-test-suite","host":["{{baseUrl}}"],"path":["api","v1","tax","gate4-test-suite"]},"description":"Run 14-point audit reconciling attendance, stipends, PAYE, and tax allowances for auditor assurance."}},{"name":"Compute B-BBEE Series 300 Skills Spend","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/tax/bbbee","host":["{{baseUrl}}"],"path":["api","v1","tax","bbbee"]},"description":"Calculate B-BBEE scorecard points, training expenditure targets, and demographic weighting."}},{"name":"Flag Learner Absorption Post-Programme","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"absorptionType\": \"PERMANENT_EMPLOYMENT\",\n  \"employerName\": \"Apex Solutions (Pty) Ltd\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/tax/bbbee/absorption/{{learnerId}}","host":["{{baseUrl}}"],"path":["api","v1","tax","bbbee","absorption","{{learnerId}}"]},"description":"Record full-time employment absorption for bonus B-BBEE verification points."}},{"name":"Download B-BBEE Evidence Pack Archive","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/export/bbbee-evidence-pack","host":["{{baseUrl}}"],"path":["api","v1","export","bbbee-evidence-pack"]},"description":"Generate comprehensive verification agency audit package with attendance proof and ID registers."}}]},{"name":"14. SETA Compliance & MIS Bridges","description":"Tranche claim bundles, ECTA s15 public verification QR seals, SAQA NLRD files (27/28/29), and SETA MIS uploads.","item":[{"name":"Download Official SETA Pack Bundle","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/export/seta-pack/{{cohortId}}/{{period}}","host":["{{baseUrl}}"],"path":["api","v1","export","seta-pack","{{cohortId}}","{{period}}"]},"description":"Generate standardized PDF/CSV compliance packet required for SETA tranche claim payment release."}},{"name":"Verify Cryptographic Evidence Hash (ECTA s15)","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/v1/verify/{{hash}}","host":["{{baseUrl}}"],"path":["api","v1","verify","{{hash}}"]},"description":"Public verification endpoint verifying SHA-256 integrity hash printed on attendance certificates."}},{"name":"Get SETA Compliance Radar Summary","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/compliance/dashboard-summary","host":["{{baseUrl}}"],"path":["api","v1","compliance","dashboard-summary"]},"description":"High-level compliance score across attendance thresholds, guardian consents, and DHA checks."}},{"name":"List Supported SETA MIS Target Systems","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/seta-mis/targets","host":["{{baseUrl}}"],"path":["api","v1","seta-mis","targets"]},"description":"Query automated upload bridge specs for MICT SETA, Services SETA, W&RSETA, and TETA NSDMS."}},{"name":"Validate SAQA NLRD Data Standards","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/seta-mis/nlrd/validate","host":["{{baseUrl}}"],"path":["api","v1","seta-mis","nlrd","validate"]},"description":"Validate learner data against South African Qualifications Authority National Learners Records Database standards."}},{"name":"Download NLRD File 27 (Person Data)","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/seta-mis/nlrd/file27","host":["{{baseUrl}}"],"path":["api","v1","seta-mis","nlrd","file27"]},"description":"Download fixed-width SAQA NLRD File 27 containing demographic and identity records."}},{"name":"Download NLRD File 28 (Enrolment Data)","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/seta-mis/nlrd/file28","host":["{{baseUrl}}"],"path":["api","v1","seta-mis","nlrd","file28"]},"description":"Download SAQA NLRD File 28 detailing qualification registration and start dates."}},{"name":"Download NLRD File 29 (Achievement Data)","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/seta-mis/nlrd/file29","host":["{{baseUrl}}"],"path":["api","v1","seta-mis","nlrd","file29"]},"description":"Download SAQA NLRD File 29 containing unit standard and qualification completion statuses."}}]},{"name":"15. SDF Consultant Advisory Portal","description":"Skills Development Facilitator multi-client portfolio management, WSP/ATR generation, and commission accounting.","item":[{"name":"List SDF Client Tenant Portfolios","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/sdf/clients","host":["{{baseUrl}}"],"path":["api","v1","sdf","clients"]},"description":"Query client tenant organisations linked to the authenticated professional SDF consultant account."}},{"name":"Context Switch to Client Tenant","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"tenantId\": \"tenant_khula_02\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/sdf/switch-tenant","host":["{{baseUrl}}"],"path":["api","v1","sdf","switch-tenant"]},"description":"Assume client context with strict Row-Level Security data isolation."}},{"name":"Generate WSP / ATR Submission Matrix","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/sdf/wsp-atr/{{tenantId}}","host":["{{baseUrl}}"],"path":["api","v1","sdf","wsp-atr","{{tenantId}}"]},"description":"Compile Workplace Skills Plan (WSP) and Annual Training Report (ATR) statutory tables for SETA submission."}},{"name":"Get SDF Partner Commission Statement","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/sdf/reseller-statement","host":["{{baseUrl}}"],"path":["api","v1","sdf","reseller-statement"]},"description":"Inspect calculated monthly revenue-share commission earned on managed client tenant licenses."}}]},{"name":"16. SaaS Control Plane & Security","description":"Tenant lifecycle, emergency break-glass dual custody, South African sovereign residency daemon, and immutable audit ledger.","item":[{"name":"Query Immutable SHA-256 Audit Trail","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/audit-logs","host":["{{baseUrl}}"],"path":["api","v1","audit-logs"]},"description":"Query cryptographic audit log chain compliant with ECTA Section 15 and POPIA Section 14."}},{"name":"Export Cryptographically Sealed Audit Logs","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/export/audit-logs","host":["{{baseUrl}}"],"path":["api","v1","export","audit-logs"]},"description":"Export immutable tamper-evident audit logs with chained SHA-256 integrity hashes."}},{"name":"List SaaS Platform Tenants","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/saas/tenants","host":["{{baseUrl}}"],"path":["api","v1","saas","tenants"]},"description":"SuperAdmin management endpoint listing all active SDP tenants and resource quotas."}},{"name":"Initiate Emergency Break-Glass Access","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"tenantId\": \"tenant_apex_01\",\n  \"engineerStaffId\": \"eng_sipho_01\",\n  \"engineerName\": \"Sipho Dlamini\",\n  \"ticketReference\": \"INC-88912\",\n  \"statutoryJustification\": \"POPIA s32 access request blocked by a database index failure\",\n  \"requestedDurationMinutes\": 60\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/saas/break-glass/request","host":["{{baseUrl}}"],"path":["api","v1","saas","break-glass","request"]},"description":"Starts a time-boxed break-glass request and dispatches a single-use 6-digit authorisation OTP to the tenant Information Officer. The code is stored only as an HMAC digest and is never returned outside the local simulator."}},{"name":"Inspect POPIA Sovereign Data Residency Daemon","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/saas/sovereign-daemon","host":["{{baseUrl}}"],"path":["api","v1","saas","sovereign-daemon"]},"description":"Continuously monitors PostgreSQL, Redis, and Object Storage to guarantee af-south-1 South African soil residency."}},{"name":"Query SaaS Metered Billing Overview","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/saas/billing","host":["{{baseUrl}}"],"path":["api","v1","saas","billing"]},"description":"Inspect active tier, enrolled candidate meter, DHA R10 transaction pass-through, and current balance."}},{"name":"Generate SARS VAT-Compliant Tax Invoice","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/saas/billing/tax-invoice","host":["{{baseUrl}}"],"path":["api","v1","saas","billing","tax-invoice"]},"description":"Generate monthly subscription invoice detailing 15% South African VAT and supplier tax reference numbers."}},{"name":"Platform Microservices Health Check","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/saas/health","host":["{{baseUrl}}"],"path":["api","v1","saas","health"]},"description":"Liveness and readiness health probe for Kubernetes/Docker deployment orchestrators."}}]},{"name":"17. Notifications, OTP & POPIA s69 Consent","description":"SMS/WhatsApp dispatch with SERVICE vs MARKETING classification, opt-in enforcement, inbound STOP handling, delivery receipts and one-time passcodes for guardian consent, mentor sign-in and break-glass authorisation.","item":[{"name":"Read Notification Gateway Status","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/notifications/status","host":["{{baseUrl}}"],"path":["api","v1","notifications","status"]},"description":"Channel modes (simulator/sandbox/live), missing configuration keys, webhook secret presence, OTP TTL/attempt policy and dispatch statistics."}},{"name":"List Dispatched Messages","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/notifications/messages?learnerId=lrn_001_ayanda","host":["{{baseUrl}}"],"path":["api","v1","notifications","messages"],"query":[{"key":"learnerId","value":"lrn_001_ayanda","description":"Optional learner filter"}]},"description":"Message ledger. Bodies are stored only as a SHA-256 digest plus a redacted preview, and recipients are masked."}},{"name":"Read POPIA s69 Consent Register","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/notifications/consents","host":["{{baseUrl}}"],"path":["api","v1","notifications","consents"]},"description":"Per-learner, per-channel SERVICE/MARKETING consent records with proof hashes."}},{"name":"Record Notification Consent","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"learnerId\": \"lrn_001_ayanda\",\n  \"channel\": \"SMS\",\n  \"purposeClass\": \"MARKETING\",\n  \"status\": \"OPTED_IN\",\n  \"source\": \"REGISTRY_CONSENT_FORM\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/notifications/consents","host":["{{baseUrl}}"],"path":["api","v1","notifications","consents"]},"description":"Direct marketing may only be dispatched after an explicit opt-in for that learner and channel. Every write is audited under POPIA Section 69."}},{"name":"Dispatch a Notification","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"learnerId\": \"lrn_001_ayanda\",\n  \"channel\": \"SMS\",\n  \"to\": \"+27 78 412 9012\",\n  \"purpose\": \"GENERAL_SERVICE\",\n  \"templateName\": \"MANUAL_OPERATOR_MESSAGE\",\n  \"body\": \"RemoteRegister: your workplace verification session was rescheduled to 09:00.\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/notifications/send","host":["{{baseUrl}}"],"path":["api","v1","notifications","send"]},"description":"Returns 403 MARKETING_CONSENT_REQUIRED when a MARKETING purpose has no recorded opt-in. An unconfigured sandbox/live channel fails closed with 503 instead of simulating delivery."}},{"name":"List Delivery Receipts","request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"url":{"raw":"{{baseUrl}}/api/v1/notifications/receipts","host":["{{baseUrl}}"],"path":["api","v1","notifications","receipts"]},"description":"Inbound provider events with signature validity, payload digest and simulated flag."}},{"name":"Run 10:00 Roll-Call Alert Job","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"sessionDate\": \"2026-10-23\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/notifications/jobs/roll-call","host":["{{baseUrl}}"],"path":["api","v1","notifications","jobs","roll-call"]},"description":"Notifies every mentor with assigned learners. Idempotent per session date: a second run for the same date is skipped."}},{"name":"Run 18th-Birthday Re-Consent Job","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/notifications/jobs/reconsent-18","host":["{{baseUrl}}"],"path":["api","v1","notifications","jobs","reconsent-18"]},"description":"Prompts candidates who turned 18 during an active learnership to re-affirm, switch to a non-biometric method or withdraw consent."}},{"name":"Request Guardian Consent OTP","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"guardianName\": \"Nomsa Mthembu\",\n  \"guardianPhone\": \"+27 72 345 6789\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/learners/{{learnerId}}/guardian-consent/request-otp","host":["{{baseUrl}}"],"path":["api","v1","learners","{{learnerId}}","guardian-consent","request-otp"]},"description":"Issues a single-use 6-digit POPIA s35 guardian consent PIN. The response carries the challengeId; the code itself is stored only as an HMAC digest."}},{"name":"Record Guardian Consent With OTP","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"},{"key":"Authorization","value":"Bearer {{bearerToken}}","description":"HS256 OAuth 2.0 Access Token or Session Token"},{"key":"X-Tenant-ID","value":"{{tenantId}}","description":"Target SDP Tenant Context"}],"body":{"mode":"raw","raw":"{\n  \"method\": \"SMS_OTP\",\n  \"guardianName\": \"Nomsa Mthembu\",\n  \"guardianPhone\": \"+27 72 345 6789\",\n  \"challengeId\": \"otp_1761200000000_abc123def4\",\n  \"otpCode\": \"481920\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/learners/{{learnerId}}/guardian-consent","host":["{{baseUrl}}"],"path":["api","v1","learners","{{learnerId}}","guardian-consent"]},"description":"Consent is only recorded when the OTP verifies against its purpose, subject and attempt budget. PAPER_FORM is the audited offline alternative."}},{"name":"Receive Provider Delivery Webhook","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"x-notification-signature","value":"{{webhookSignature}}","description":"HMAC-SHA256 of the raw request body using NOTIFICATION_WEBHOOK_SECRET"}],"body":{"mode":"raw","raw":"{\n  \"eventType\": \"INBOUND_STOP\",\n  \"messageId\": \"SIM-SMS-A1B2C3D4E5F6\",\n  \"channel\": \"SMS\",\n  \"to\": \"+27 72 345 6789\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseUrl}}/api/v1/webhooks/inbound/notifications","host":["{{baseUrl}}"],"path":["api","v1","webhooks","inbound","notifications"]},"description":"Authenticity is verified over the raw bytes, never re-serialised JSON. A STOP withdraws MARKETING consent only; OTP and service messages continue to flow."}}]}]}