// SPDX-License-Identifier: Apache-2.0 // Copyright (c) 2025 Matter Labs //! Intel API Client //! //! This module provides an API client for interacting with the Intel API for Trusted Services. //! The API follows the documentation found at [Intel API Documentation](https://api.portal.trustedservices.intel.com/content/documentation.html). //! //! Create an [`ApiClient`] to interface with the Intel API. //! //! # Rate Limiting //! //! The Intel API implements rate limiting and may return HTTP 429 (Too Many Requests) responses. //! This client automatically handles rate limiting by retrying requests up to 3 times by default, //! waiting for the duration specified in the `Retry-After` header. You can configure the retry //! behavior using [`ApiClient::set_max_retries`]. If all retries are exhausted, the client //! returns an [`IntelApiError::TooManyRequests`] error. //! //! Example //! ```rust,no_run //! use intel_dcap_api::{ApiClient, IntelApiError, TcbInfoResponse}; //! //! #[tokio::main] //! async fn main() -> Result<(), IntelApiError> { //! let client = ApiClient::new()?; //! //! // Example: Get SGX TCB Info //! let fmspc_example = "00606A000000"; // Example FMSPC from docs //! match client.get_sgx_tcb_info(fmspc_example, None, None).await { //! Ok(TcbInfoResponse { //! tcb_info_json, //! issuer_chain, //! }) => println!( //! "SGX TCB Info for {}:\n{}\nIssuer Chain: {}", //! fmspc_example, tcb_info_json, issuer_chain //! ), //! Err(e) => eprintln!("Error getting SGX TCB info: {}", e), //! } //! //! Ok(()) //! } //! ``` #![deny(missing_docs)] #![deny(clippy::all)] mod client; mod error; mod requests; mod responses; mod types; // Re-export public items pub use client::ApiClient; pub use error::IntelApiError; pub use responses::{ AddPackageResponse, EnclaveIdentityJson, EnclaveIdentityResponse, FmspcJsonResponse, PckCertificateResponse, PckCertificatesResponse, PckCrlResponse, TcbEvaluationDataNumbersJson, TcbEvaluationDataNumbersResponse, TcbInfoJson, TcbInfoResponse, }; pub use types::{ApiVersion, CaType, CrlEncoding, PlatformFilter, UpdateType};