{"openapi":"3.1.0","info":{"title":"TrustNG","description":"TrustNG transaction risk and policy infrastructure","version":"1.0.0"},"paths":{"/":{"get":{"summary":"Home","operationId":"home__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/dashboard":{"get":{"summary":"Browser Dashboard","operationId":"browser_dashboard_dashboard_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]}},"/v1/dashboard/summary":{"get":{"summary":"Dashboard Summary","description":"Read-only operational and research summary.","operationId":"dashboard_summary_v1_dashboard_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/dashboard/research":{"get":{"summary":"Dashboard Research","description":"Read-only ranked research candidates.","operationId":"dashboard_research_v1_dashboard_research_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/research/candidates/{candidate_id}/review":{"post":{"summary":"Review Research Candidate","description":"Record a human review without triggering implementation.","operationId":"review_research_candidate_v1_research_candidates__candidate_id__review_post","parameters":[{"name":"candidate_id","in":"path","required":true,"schema":{"type":"string","title":"Candidate Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResearchCandidateReview"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/research/candidates/{candidate_id}/promote":{"post":{"summary":"Promote Research Candidate","description":"Promote eligible research after human review and verification.","operationId":"promote_research_candidate_v1_research_candidates__candidate_id__promote_post","parameters":[{"name":"candidate_id","in":"path","required":true,"schema":{"type":"string","title":"Candidate Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/dashboard/proposals":{"get":{"summary":"Dashboard Proposals","description":"Read-only list of improvement proposals.","operationId":"dashboard_proposals_v1_dashboard_proposals_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/dashboard/benchmarks":{"get":{"summary":"Dashboard Benchmarks","description":"Read-only list of architecture benchmarks.","operationId":"dashboard_benchmarks_v1_dashboard_benchmarks_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/evaluate":{"post":{"summary":"Evaluate","operationId":"evaluate_evaluate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Transaction"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/reconciliation/pending":{"get":{"summary":"List Pending Reconciliation","description":"List aged PENDING execution records for investigation.","operationId":"list_pending_reconciliation_v1_reconciliation_pending_get","parameters":[{"name":"older_than_minutes","in":"query","required":false,"schema":{"type":"integer","default":5,"title":"Older Than Minutes"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/fraud-cases":{"get":{"summary":"Get All Fraud Cases","operationId":"get_all_fraud_cases_fraud_cases_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","title":"Status"}},{"name":"severity","in":"query","required":false,"schema":{"type":"string","title":"Severity"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/fraud-cases/statistics":{"get":{"summary":"Fraud Case Statistics","operationId":"fraud_case_statistics_fraud_cases_statistics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/fraud-cases/{case_id}":{"get":{"summary":"Get Single Fraud Case","operationId":"get_single_fraud_case_fraud_cases__case_id__get","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/transactions/{transaction_id}/fraud-cases":{"get":{"summary":"Get Transaction Fraud Cases","operationId":"get_transaction_fraud_cases_transactions__transaction_id__fraud_cases_get","parameters":[{"name":"transaction_id","in":"path","required":true,"schema":{"type":"string","title":"Transaction Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/fraud-cases/{case_id}/notes":{"post":{"summary":"Add Case Note","operationId":"add_case_note_fraud_cases__case_id__notes_post","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}},{"name":"note","in":"query","required":true,"schema":{"type":"string","title":"Note"}},{"name":"investigator","in":"query","required":false,"schema":{"type":"string","title":"Investigator"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/fraud-cases/{case_id}/actions":{"post":{"summary":"Add Case Action","operationId":"add_case_action_fraud_cases__case_id__actions_post","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}},{"name":"action","in":"query","required":true,"schema":{"type":"string","title":"Action"}},{"name":"investigator","in":"query","required":false,"schema":{"type":"string","title":"Investigator"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/fraud-cases/{case_id}/resolve":{"post":{"summary":"Resolve Case","operationId":"resolve_case_fraud_cases__case_id__resolve_post","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}},{"name":"resolution","in":"query","required":true,"schema":{"type":"string","title":"Resolution"}},{"name":"investigator","in":"query","required":false,"schema":{"type":"string","title":"Investigator"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/fraud-cases/{case_id}/dismiss":{"post":{"summary":"Dismiss Case","operationId":"dismiss_case_fraud_cases__case_id__dismiss_post","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}},{"name":"reason","in":"query","required":true,"schema":{"type":"string","title":"Reason"}},{"name":"investigator","in":"query","required":false,"schema":{"type":"string","title":"Investigator"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/fraud-cases/{case_id}/audit":{"get":{"summary":"Get Fraud Case Audit","operationId":"get_fraud_case_audit_fraud_cases__case_id__audit_get","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","title":"Case Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/audit/integrity":{"get":{"summary":"Verify Audit Integrity","operationId":"verify_audit_integrity_audit_integrity_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/recipients/verification/start":{"post":{"summary":"Recipient Email Verification Start","description":"Start dual email and assigned-phone ownership verification.","operationId":"recipient_email_verification_start_v1_recipients_verification_start_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipientEmailVerificationStartRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/recipients/verification/confirm":{"post":{"summary":"Recipient Email Verification Confirm","description":"Confirm both email and assigned-phone ownership codes.","operationId":"recipient_email_verification_confirm_v1_recipients_verification_confirm_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipientEmailVerificationConfirmRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/recipients/register":{"post":{"summary":"Recipient Email Register","description":"Register an email alias; this does not verify ownership.","operationId":"recipient_email_register_v1_recipients_register_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipientRegistrationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/recipients/lookup":{"post":{"summary":"Recipient Email Lookup","operationId":"recipient_email_lookup_v1_recipients_lookup_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipientLookupRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/transactions/check-by-email":{"post":{"summary":"Developer Transaction Check By Email","description":"Resolve a sandbox recipient email and assess transaction risk only.","operationId":"developer_transaction_check_by_email_v1_transactions_check_by_email_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailTransactionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/payment-requests/by-email":{"post":{"summary":"Create Payment Request By Email","description":"Create a persistent email-linked sandbox request; never execute payment.","operationId":"create_payment_request_by_email_v1_payment_requests_by_email_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailPaymentRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/account-trust/otp/start":{"post":{"summary":"Account Trust Otp Start","operationId":"account_trust_otp_start_v1_account_trust_otp_start_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountTrustOTPStartRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/account-trust/otp/verify":{"post":{"summary":"Account Trust Otp Verify","operationId":"account_trust_otp_verify_v1_account_trust_otp_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountTrustOTPVerifyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/account-trust/check":{"post":{"summary":"Account Trust Check Endpoint","operationId":"account_trust_check_endpoint_v1_account_trust_check_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountTrustCheckRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/health":{"get":{"summary":"Developer Api Health","operationId":"developer_api_health_v1_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[]}},"/v1/transactions/check":{"post":{"summary":"Developer Transaction Check","operationId":"developer_transaction_check_v1_transactions_check_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Transaction"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"401":{"description":"Missing or invalid X-API-Key."},"409":{"description":"Transaction ID conflict or evaluation is still processing."},"503":{"description":"API key configuration is missing or evaluation requires reconciliation before completion."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/terminal/corridors":{"get":{"summary":"Terminal Corridors","description":"Return aggregated, read-only transaction corridor intelligence.","operationId":"terminal_corridors_v1_terminal_corridors_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/terminal/transactions":{"get":{"summary":"Terminal Transactions","description":"Return a bounded, read-only and redacted transaction activity feed.","operationId":"terminal_transactions_v1_terminal_transactions_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/partnership-enquiries":{"post":{"summary":"Submit Partnership Enquiry","description":"Accept and securely store a DIJUANG partnership enquiry.","operationId":"submit_partnership_enquiry_v1_partnership_enquiries_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[]}},"/v1/admin/partnership-enquiries":{"get":{"summary":"Admin List Partnership Enquiries","description":"List DIJUANG partnership enquiries; protected by the API-key middleware.","operationId":"admin_list_partnership_enquiries_v1_admin_partnership_enquiries_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}}},"components":{"schemas":{"AccountTrustCheckRequest":{"properties":{"country":{"type":"string","maxLength":2,"minLength":2,"title":"Country","default":"NG"},"account_identifier":{"type":"string","maxLength":64,"minLength":5,"title":"Account Identifier"},"phone_number":{"type":"string","maxLength":20,"minLength":7,"title":"Phone Number"},"verification_id":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Verification Id"}},"type":"object","required":["account_identifier","phone_number"],"title":"AccountTrustCheckRequest"},"AccountTrustOTPStartRequest":{"properties":{"phone_number":{"type":"string","maxLength":20,"minLength":7,"title":"Phone Number"}},"type":"object","required":["phone_number"],"title":"AccountTrustOTPStartRequest"},"AccountTrustOTPVerifyRequest":{"properties":{"verification_id":{"type":"string","maxLength":100,"minLength":20,"title":"Verification Id"},"code":{"type":"string","pattern":"^[0-9]{6}$","title":"Code"}},"type":"object","required":["verification_id","code"],"title":"AccountTrustOTPVerifyRequest"},"EmailPaymentRequest":{"properties":{"request_id":{"type":"string","maxLength":200,"minLength":1,"title":"Request Id"},"sender":{"type":"string","maxLength":200,"minLength":1,"title":"Sender"},"recipient_email":{"type":"string","maxLength":254,"minLength":3,"title":"Recipient Email"},"asset":{"type":"string","maxLength":30,"minLength":1,"title":"Asset"},"amount":{"type":"number","exclusiveMinimum":0.0,"title":"Amount"},"channel":{"type":"string","maxLength":50,"minLength":1,"title":"Channel"},"country":{"type":"string","maxLength":3,"minLength":2,"title":"Country"},"device_id":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Device Id"},"sender_country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sender Country"},"receiver_country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Receiver Country"}},"type":"object","required":["request_id","sender","recipient_email","asset","amount","channel","country"],"title":"EmailPaymentRequest"},"EmailTransactionRequest":{"properties":{"transaction_id":{"type":"string","maxLength":200,"minLength":1,"title":"Transaction Id"},"sender":{"type":"string","maxLength":200,"minLength":1,"title":"Sender"},"recipient_email":{"type":"string","maxLength":254,"minLength":3,"title":"Recipient Email"},"asset":{"type":"string","maxLength":30,"minLength":1,"title":"Asset"},"amount":{"type":"number","exclusiveMinimum":0.0,"title":"Amount"},"channel":{"type":"string","maxLength":50,"minLength":1,"title":"Channel"},"country":{"type":"string","maxLength":3,"minLength":2,"title":"Country"},"device_id":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Device Id"},"sender_country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sender Country"},"receiver_country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Receiver Country"}},"type":"object","required":["transaction_id","sender","recipient_email","asset","amount","channel","country"],"title":"EmailTransactionRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"RecipientEmailVerificationConfirmRequest":{"properties":{"email":{"type":"string","maxLength":254,"minLength":3,"title":"Email"},"email_code":{"type":"string","maxLength":6,"minLength":6,"pattern":"^[0-9]{6}$","title":"Email Code"},"phone_code":{"type":"string","maxLength":6,"minLength":6,"pattern":"^[0-9]{6}$","title":"Phone Code"}},"additionalProperties":false,"type":"object","required":["email","email_code","phone_code"],"title":"RecipientEmailVerificationConfirmRequest"},"RecipientEmailVerificationStartRequest":{"properties":{"email":{"type":"string","maxLength":254,"minLength":3,"title":"Email"}},"additionalProperties":false,"type":"object","required":["email"],"title":"RecipientEmailVerificationStartRequest"},"RecipientLookupRequest":{"properties":{"email":{"type":"string","maxLength":254,"minLength":3,"title":"Email"}},"type":"object","required":["email"],"title":"RecipientLookupRequest"},"RecipientRegistrationRequest":{"properties":{"email":{"type":"string","maxLength":254,"minLength":3,"title":"Email"},"recipient_id":{"type":"string","maxLength":200,"minLength":1,"title":"Recipient Id"},"display_name":{"type":"string","maxLength":120,"minLength":1,"title":"Display Name"},"phone_number":{"type":"string","maxLength":20,"minLength":7,"title":"Phone Number"},"source":{"type":"string","pattern":"^SANDBOX$","title":"Source","default":"SANDBOX"}},"type":"object","required":["email","recipient_id","display_name","phone_number"],"title":"RecipientRegistrationRequest"},"ResearchCandidateReview":{"properties":{"reviewer":{"type":"string","maxLength":120,"minLength":1,"title":"Reviewer"},"notes":{"type":"string","maxLength":4000,"minLength":1,"title":"Notes"},"evidence_status":{"type":"string","enum":["not_verified","partially_verified","independently_verified","rejected"],"title":"Evidence Status"},"trustng_relevance":{"type":"integer","maximum":5.0,"minimum":1.0,"title":"Trustng Relevance"},"lesson_for_africa":{"type":"string","maxLength":4000,"minLength":1,"title":"Lesson For Africa"}},"type":"object","required":["reviewer","notes","evidence_status","trustng_relevance","lesson_for_africa"],"title":"ResearchCandidateReview"},"Transaction":{"properties":{"transaction_id":{"type":"string","title":"Transaction Id"},"sender":{"type":"string","title":"Sender"},"receiver":{"type":"string","title":"Receiver"},"asset":{"type":"string","title":"Asset"},"amount":{"type":"number","title":"Amount"},"channel":{"type":"string","title":"Channel"},"country":{"type":"string","title":"Country"},"device_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Device Id"},"sender_country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sender Country"},"receiver_country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Receiver Country"}},"type":"object","required":["transaction_id","sender","receiver","asset","amount","channel","country"],"title":"Transaction"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"APIKeyHeader":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Required for protected endpoints. Use the API key supplied by the TrustNG operator."}}}}