ZATCA API Client¶
The HTTP client is the main way to contact ZATCA's official fatoora platform API. Please do read the ZATCA Official API Gateway for more details.
ZatcaClient¶
new¶
Create client
ZatcaClient::new(config: Config) -> Result<ZatcaClient, ZatcaError>
ZatcaClient(config: Config)
FfiResult_FfiZatcaClient fatoora_zatca_client_new(FfiConfig* config);
post_csr_for_ccsid¶
Issue compliance CSID
ZatcaClient::post_csr_for_ccsid(csr: &Csr, otp: &str) -> Result<CsidCredentials<Compliance>, ZatcaError>
ZatcaClient.post_csr_for_ccsid(csr: Csr, otp: str) -> CsidCompliance
FfiResult_FfiCsidCompliance fatoora_zatca_post_csr_for_ccsid(FfiZatcaClient* client, FfiCsr* csr, const char* otp);
post_ccsid_for_pcsid¶
Issue production CSID
ZatcaClient::post_ccsid_for_pcsid(ccsid: &CsidCredentials<Compliance>) -> Result<CsidCredentials<Production>, ZatcaError>
ZatcaClient.post_ccsid_for_pcsid(ccsid: CsidCompliance) -> CsidProduction
FfiResult_FfiCsidProduction fatoora_zatca_post_ccsid_for_pcsid(FfiZatcaClient* client, FfiCsidCompliance* ccsid);
renew_csid¶
Renew production CSID
ZatcaClient::renew_csid(pcsid: &CsidCredentials<Production>, csr: &Csr, otp: &str, accept_language: Option<&str>) -> Result<CsidCredentials<Production>, ZatcaError>
ZatcaClient.renew_csid(pcsid: CsidProduction, csr: Csr, otp: str, accept_language: Optional[str]) -> CsidProduction
FfiResult_FfiCsidProduction fatoora_zatca_renew_csid(FfiZatcaClient* client, FfiCsidProduction* pcsid, FfiCsr* csr, const char* otp, const char* accept_language);
check_invoice_compliance¶
Check invoice compliance
ZatcaClient::check_invoice_compliance(invoice: &SignedInvoice, credentials: &CsidCredentials<Compliance>) -> Result<ValidationResponse, ZatcaError>
ZatcaClient.check_invoice_compliance(invoice: SignedInvoice, ccsid: CsidCompliance) -> ValidationResponse
FfiResult_FfiValidationResponse fatoora_zatca_check_invoice_compliance(FfiZatcaClient* client, FfiSignedInvoice* invoice, FfiCsidCompliance* ccsid);
report_simplified_invoice¶
Report simplified invoice
ZatcaClient::report_simplified_invoice(invoice: &SignedInvoice, credentials: &CsidCredentials<Production>, clearance_status: bool, accept_language: Option<&str>) -> Result<ValidationResponse, ZatcaError>
ZatcaClient.report_simplified_invoice(invoice: SignedInvoice, pcsid: CsidProduction, clearance_status: bool, accept_language: Optional[str]) -> ValidationResponse
FfiResult_FfiValidationResponse fatoora_zatca_report_simplified_invoice(FfiZatcaClient* client, FfiSignedInvoice* invoice, FfiCsidProduction* pcsid, bool clearance_status, const char* accept_language);
clear_standard_invoice¶
Clear standard invoice
ZatcaClient::clear_standard_invoice(invoice: &SignedInvoice, credentials: &CsidCredentials<Production>, clearance_status: bool, accept_language: Option<&str>) -> Result<ValidationResponse, ZatcaError>
ZatcaClient.clear_standard_invoice(invoice: SignedInvoice, pcsid: CsidProduction, clearance_status: bool, accept_language: Optional[str]) -> ValidationResponse
FfiResult_FfiValidationResponse fatoora_zatca_clear_standard_invoice(FfiZatcaClient* client, FfiSignedInvoice* invoice, FfiCsidProduction* pcsid, bool clearance_status, const char* accept_language);
CsidCredentials / CsidCompliance / CsidProduction¶
new¶
Create credential handle
CsidCredentials::new(env: EnvironmentType, request_id: Option<String>, token: impl Into<String>, secret: impl Into<String>) -> CsidCredentials<T>
CsidCompliance.new(env: Environment, token: str, secret: str, request_id: Optional[str] = None) -> CsidCompliance
CsidProduction.new(env: Environment, token: str, secret: str, request_id: Optional[str] = None) -> CsidProduction
FfiResult_FfiCsidCompliance fatoora_csid_compliance_new(FfiEnvironment env, const char* request_id, const char* token, const char* secret);
FfiResult_FfiCsidProduction fatoora_csid_production_new(FfiEnvironment env, const char* request_id, const char* token, const char* secret);
env¶
Read credential environment
CsidCredentials::env(&self) -> EnvironmentType
CsidCompliance.env() -> Environment
CsidProduction.env() -> Environment
FfiResult_FfiEnvironment fatoora_csid_compliance_env(FfiCsidCompliance* creds);
FfiResult_FfiEnvironment fatoora_csid_production_env(FfiCsidProduction* creds);
request_id¶
Read optional request id
CsidCredentials::request_id(&self) -> Option<&str>
CsidCompliance.request_id() -> str
CsidProduction.request_id() -> str
FfiResult_FfiString fatoora_csid_compliance_request_id(FfiCsidCompliance* creds);
FfiResult_FfiString fatoora_csid_production_request_id(FfiCsidProduction* creds);
binary_security_token¶
Read token
CsidCredentials::binary_security_token(&self) -> &str
CsidCompliance.binary_security_token() -> str
CsidProduction.binary_security_token() -> str
FfiResult_FfiString fatoora_csid_compliance_binary_security_token(FfiCsidCompliance* creds);
FfiResult_FfiString fatoora_csid_production_binary_security_token(FfiCsidProduction* creds);
secret¶
Read credential secret
CsidCredentials::secret(&self) -> &str
CsidCompliance.secret() -> str
CsidProduction.secret() -> str
FfiResult_FfiString fatoora_csid_compliance_secret(FfiCsidCompliance* creds);
FfiResult_FfiString fatoora_csid_production_secret(FfiCsidProduction* creds);
Response Types¶
Response shapes
ValidationResponseexposesvalidation_results(),reporting_status(),clearance_status(), and QR status fields.ValidationResultsexposesinfo_messages(),warning_messages(),error_messages(), andstatus().ValidationMessageexposes type, code, category, message, and status fields.MessageListnormalizes info messages that may be one, many, or empty.UnauthorizedResponseandServerErrorResponseprovide structured error bodies.
Errors¶
Errors
ZatcaErroris returned for HTTP failures, invalid responses, unauthorized/server errors, and client-state mismatches (environment, invoice type, etc.).
See also: API Client Guide