Skip to content

MEP : FlySharp SDK — Account, Customer, DID & Trunk domain expansion#2

Open
Yekuuun wants to merge 8 commits into
mainfrom
develop
Open

MEP : FlySharp SDK — Account, Customer, DID & Trunk domain expansion#2
Yekuuun wants to merge 8 commits into
mainfrom
develop

Conversation

@Yekuuun

@Yekuuun Yekuuun commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

Summary

Expands the FlySharp SDK with full coverage of the Trunks, Trunk Connections, Account creation, Customer, and DID domains from the FlySIP XML-RPC API, plus a defensive dispose fix and Claude Code project setup.

Account Domain

  • Add trunk management: createTrunk, updateTrunk, deleteTrunk, getTrunkInfo, getTrunksList — full models, DTOs, builder, and IAccountClient wiring
  • Add trunk connections management: createTrunkConnection, updateTrunkConnection, deleteTrunkConnection, getTrunkConnectionInfo, getTrunkConnectionsList
  • Add createAccount with full required/optional field set (~80 fields across 6 regions)

Customer Domain

  • Expand AddCustomerRequest / UpdateCustomerRequest to include all FlySIP optional fields (billing, management rights, personal info, features, preferences)
  • Add DeleteCustomerAsync()deleteCustomer()
  • Add AuthCustomerAsync()authCustomer() with AuthCustomerResponse

DID Domain (new standalone client)

  • New DidClient with three regions: DIDS (add/update/delete/get/list), CHARGING_GROUPS, DELEGATIONS (add/update/delete)
  • Adds Did and DidChargingGroup models, full Http/Did DTOs, and ListDidsRequestBuilder with fluent filters

Infrastructure & Tooling

  • Guard null HttpClient on BaseClient.Dispose() to prevent NullReferenceException
  • Add root CLAUDE.md and .claude/ project config (hooks, skills, commands)

Test plan

  • dotnet build passes with no warnings
  • Run integration tester (cd FlySharp.Tester && dotnet run) and verify trunk CRUD calls succeed against FlySIP sandbox
  • Verify trunk connections CRUD calls round-trip correctly
  • Call createAccount with minimal required fields; confirm BaseResponse.Result == "OK"
  • Call authCustomer with valid credentials; confirm AuthCustomerResponse fields populated
  • Call deleteCustomer and confirm account is removed
  • Exercise DID listing with NotAssignedOnly() filter; verify pagination (offset/limit)
  • Call a DID delegation method and confirm response shape matches BaseResponse
  • Dispose a BaseClient instance with an uninitialized HttpClient; confirm no exception

🤖 Generated with Claude Code

Yekuuun added 8 commits June 30, 2026 10:53
Prevents NullReferenceException if _httpClient was never initialized.
Initial Claude Code setup: root CLAUDE.md documenting SDK architecture,
folder structure, build/release workflow, and active skill references.
Includes .claude/ config with settings, hooks, skills, and commands.
Implements the 5 trunk XML-RPC actions (createTrunk, updateTrunk,
deleteTrunk, getTrunkInfo, getTrunksList) on AccountClient.

Adds Trunk model, Request/Response DTOs under Http/Trunk/,
ListTrunksRequestBuilder, and wires the TRUNKS region in
IAccountClient + AccountClient.
Implements the 5 trunk connection XML-RPC actions (createTrunkConnection,
updateTrunkConnection, deleteTrunkConnection, getTrunkConnectionInfo,
getTrunkConnectionsList) on AccountClient.

Adds TrunkConnection model, Request/Response DTOs under Http/Trunk/,
ListTrunkConnectionsRequestBuilder, and wires the TRUNK_CONNECTIONS
region in IAccountClient + AccountClient.
Implements createAccount() XML-RPC action with all required and optional
fields organized into logical regions (credentials, session/billing,
call settings, payment, voicemail, personal info, optional).

preferred_codec and on_payment_action are int? to allow explicit null
as per the FlySIP API spec. i_routing_group is int? as it is only
required for root customer accounts.
Expands AddCustomerRequest with full optional field set from the FlySIP
doc (billing, management rights, personal info, features, preferences).
UpdateCustomerRequest inherits all new fields automatically.

Adds two missing methods:
- DeleteCustomerAsync() -> deleteCustomer()
- AuthCustomerAsync() -> authCustomer() + AuthCustomerResponse
  (i_customer, i_web_user, i_access_level)
Creates DidClient with 3 dedicated regions:
- DIDS: add, update, delete (by id/number), get (by id/number), list
- CHARGING_GROUPS: getDIDChargingGroupInfo
- DELEGATIONS: add, update, delete DID delegation

Adds Did and DidChargingGroup models, full Http/Did Request/Response
DTOs, ListDidsRequestBuilder (extends BaseListRequestBuilder) with
fluent filters including NotAssignedOnly().
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant