smbcloud-ascapi-frontend 0.4.0

Shared operations behind the asc command line and MCP surfaces: credential resolution, result shaping, certificate issuance, and altool uploads.
Documentation
//! Operations shared by the `asc` command line and its MCP server.
//!
//! Both surfaces need the same things: resolve credentials, call the App
//! Store Connect client, and shape the result into something worth showing
//! a human or handing a model. Putting that here means the two front ends
//! cannot drift, and in particular that the ordering guarantee in
//! [`certificates::issue_certificate`] (private key written before the
//! network call) has exactly one implementation.
//!
//! Two rules the result types are built around, because one of the
//! consumers is a language model:
//!
//! - **No key material in a result.** [`certificates::IssuedCertificate`]
//!   carries the path a key was written to, never the key. Enforced by
//!   construction rather than filtered at the edge, since a filter is one
//!   refactor away from being bypassed.
//! - **No certificate bodies either.** They are large, never needed to
//!   decide what to do next, and would otherwise land in a transcript.
//!   [`profiles::ProfileSummary`] applies the same rule to
//!   `profileContent`, and [`profiles::download_profile`] returns the path
//!   it wrote instead.

pub mod attach_build;
pub mod await_processing;
pub mod certificates;
pub mod enums;
pub mod env;
#[cfg(target_os = "macos")]
pub mod keychain;
pub mod profiles;
pub mod review;
pub mod time;
pub mod upload;

pub use attach_build::{attach_build, AttachedBuild};
pub use await_processing::{
    await_processing, classify, AwaitConfig, AwaitOutcome, ProcessingClass,
};
pub use certificates::{
    certificate_type_from_str, issue_certificate, CertificateSummary, IssuedCertificate,
};
pub use enums::{bundle_id_platform_from_str, display_type_from_str, platform_from_str};
pub use env::api_key_from_env;
#[cfg(target_os = "macos")]
pub use keychain::{run_doctor, DoctorCertificate, DoctorReport};
pub use profiles::{download_profile, profile_type_from_str, DownloadedProfile, ProfileSummary};
pub use review::{plan_submission, submit_for_review, SubmissionPlan, SubmittedReview};
pub use time::{is_expired, now_iso8601};
pub use upload::{upload_package, AltoolAuth, UploadOutcome};