Revision history for Net-Async-Zitadel

0.001     2026-03-14 05:01:52Z

  - Initial release
  - Async OIDC client (Net::Async::Zitadel::OIDC):
    - discovery_f, jwks_f, verify_token_f, userinfo_f, introspect_f
    - token_f, client_credentials_token_f, refresh_token_f,
      exchange_authorization_code_f
    - TTL-based caching: discovery_ttl (default 3600s), jwks_ttl (default 300s)
    - JWKS in-flight coalescing: concurrent refresh requests share one Future
    - Automatic JWKS refresh retry on token verification failure (key rotation)
  - Async Management API client (Net::Async::Zitadel::Management):
    - Human users: list_users_f, get_user_f, create_human_user_f, update_user_f,
      deactivate_user_f, reactivate_user_f, delete_user_f
    - Passwords: set_password_f, request_password_reset_f
    - User metadata: set_user_metadata_f, get_user_metadata_f, list_user_metadata_f
    - Service users: create_service_user_f, list_service_users_f,
      get_service_user_f, delete_service_user_f
    - Machine keys: add_machine_key_f, list_machine_keys_f, remove_machine_key_f
    - Projects: list_projects_f, get_project_f, create_project_f,
      update_project_f, delete_project_f
    - Apps: list_apps_f, get_app_f, create_oidc_app_f, update_oidc_app_f,
      delete_app_f
    - Orgs: get_org_f, create_org_f, list_orgs_f, update_org_f, deactivate_org_f
    - Roles: add_project_role_f, list_project_roles_f
    - Grants: create_user_grant_f, list_user_grants_f
    - Identity Providers: create_oidc_idp_f, list_idps_f, get_idp_f,
      update_idp_f, delete_idp_f, activate_idp_f, deactivate_idp_f
  - Structured exception hierarchy (Net::Async::Zitadel::Error):
    - ::Validation, ::Network, ::API (with http_status, api_message)
  - Full BUILD validation for empty issuer/base_url
  - Examples: examples/verify_token.pl, client_credentials.pl, manage_users.pl
  - Integration test skeleton: t/10-integration.t (skipped without ZITADEL_ISSUER)
