{"id":18810964,"url":"https://github.com/shipengine/shipengine-dotnet","last_synced_at":"2025-04-13T20:31:18.915Z","repository":{"id":43264170,"uuid":"333498887","full_name":"ShipEngine/shipengine-dotnet","owner":"ShipEngine","description":"The official ShipEngine SDK for C# and the .NET Framework","archived":false,"fork":false,"pushed_at":"2024-10-16T21:33:41.000Z","size":1521,"stargazers_count":11,"open_issues_count":19,"forks_count":11,"subscribers_count":19,"default_branch":"main","last_synced_at":"2024-10-18T21:12:48.069Z","etag":null,"topics":["address-normalization","address-validation","csharp","dhl-api","fedex-api","package-tracking","rest-api","sdk","shipment-tracking","shipping-api","shipping-cost","shipping-label","shipping-rates","ups-api","usps-api"],"latest_commit_sha":null,"homepage":"https://www.shipengine.com/docs/","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ShipEngine.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-01-27T16:59:47.000Z","updated_at":"2024-10-09T15:05:59.000Z","dependencies_parsed_at":"2024-04-29T22:48:51.498Z","dependency_job_id":"9faddd83-24c4-4c84-88f0-f66e7877a9cf","html_url":"https://github.com/ShipEngine/shipengine-dotnet","commit_stats":{"total_commits":137,"total_committers":8,"mean_commits":17.125,"dds":0.6496350364963503,"last_synced_commit":"4e926869d6295de193cee3206a38128c23ef2676"},"previous_names":[],"tags_count":49,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ShipEngine%2Fshipengine-dotnet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ShipEngine%2Fshipengine-dotnet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ShipEngine%2Fshipengine-dotnet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ShipEngine%2Fshipengine-dotnet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ShipEngine","download_url":"https://codeload.github.com/ShipEngine/shipengine-dotnet/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223603610,"owners_count":17172128,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["address-normalization","address-validation","csharp","dhl-api","fedex-api","package-tracking","rest-api","sdk","shipment-tracking","shipping-api","shipping-cost","shipping-label","shipping-rates","ups-api","usps-api"],"created_at":"2024-11-07T23:23:30.923Z","updated_at":"2025-04-13T20:31:18.874Z","avatar_url":"https://github.com/ShipEngine.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![ShipEngine](https://shipengine.github.io/img/shipengine-logo-wide.png)](https://shipengine.com)\n\n# ShipEngine .NET SDK\n\n### The official ShipEngine SDK for .NET\n\n![Nuget (with prereleases)](https://img.shields.io/nuget/vpre/ShipEngine)\n![GitHub](https://img.shields.io/github/license/ShipEngine/shipengine-dotnet)\n\n[![Build Status](https://github.com/ShipEngine/shipengine-dotnet/actions/workflows/ci-cd.yaml/badge.svg)](https://github.com/ShipEngine/shipengine-dotnet/actions/workflows/ci-cd.yaml)\n[![Coverage Status](https://coveralls.io/repos/github/ShipEngine/shipengine-dotnet/badge.svg?branch=main)](https://coveralls.io/github/ShipEngine/shipengine-dotnet?branch=main)\n\n[![OS Compatibility](https://shipengine.github.io/img/badges/os-badges.svg)](https://github.com/ShipEngine/shipengine-dotnet/actions)\n\n[Nuget Page](https://www.nuget.org/packages/ShipEngine/)\n\n## Quick Start\n\nInstall ShipEngine .NET SDK via the [.NET CLI](https://docs.microsoft.com/en-us/dotnet/core/tools/).\n\n```bash\ndotnet add package ShipEngine\n```\n\nThe only configuration requirement is an [API key](https://www.shipengine.com/docs/auth/#api-keys).\n\n```csharp\nusing ShipEngineSDK;\n\nvar shipengine = new ShipEngine(\"___YOUR_API_KEY_HERE__\");\n```\n\n\n## Overview\n\nThis C# SDK is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:\n\n- API version: 1.1.202503131403\n- SDK version: 3.0.0\n- Generator version: 7.7.0\n- Build package: org.openapitools.codegen.languages.CSharpClientCodegen\n    For more information, please visit [https://www.shipengine.com/contact/](https://www.shipengine.com/contact/)\n\n\u003ca id=\"frameworks-supported\"\u003e\u003c/a\u003e\n## Frameworks supported\n- .NET Standard \u003e=2.0\n- .NET Core \u003e=2.0\n- .NET Framework \u003e=4.6.2\n\n\u003ca id=\"documentation-for-api-endpoints\"\u003e\u003c/a\u003e\n## Methods\n\nAPI | Method | Description\n------------ | ------------- | -------------\n*Account* | [**CreateAccountImage**](docs//apis/AccountApi.md#createaccountimage) | Create an Account Image\n*Account* | [**DeleteAccountImageById**](docs//apis/AccountApi.md#deleteaccountimagebyid) | Delete Account Image By Id\n*Account* | [**GetAccountSettingsImagesById**](docs//apis/AccountApi.md#getaccountsettingsimagesbyid) | Get Account Image By ID\n*Account* | [**ListAccountImages**](docs//apis/AccountApi.md#listaccountimages) | List Account Images\n*Account* | [**ListAccountSettings**](docs//apis/AccountApi.md#listaccountsettings) | List Account Settings\n*Account* | [**UpdateAccountSettingsImagesById**](docs//apis/AccountApi.md#updateaccountsettingsimagesbyid) | Update Account Image By ID\n*Addresses* | [**ParseAddress**](docs//apis/AddressesApi.md#parseaddress) | Parse an address\n*Addresses* | [**ValidateAddress**](docs//apis/AddressesApi.md#validateaddress) | Validate An Address\n*Batches* | [**AddToBatch**](docs//apis/BatchesApi.md#addtobatch) | Add to a Batch\n*Batches* | [**CreateBatch**](docs//apis/BatchesApi.md#createbatch) | Create A Batch\n*Batches* | [**DeleteBatch**](docs//apis/BatchesApi.md#deletebatch) | Delete Batch By Id\n*Batches* | [**GetBatchByExternalId**](docs//apis/BatchesApi.md#getbatchbyexternalid) | Get Batch By External ID\n*Batches* | [**GetBatchById**](docs//apis/BatchesApi.md#getbatchbyid) | Get Batch By ID\n*Batches* | [**ListBatchErrors**](docs//apis/BatchesApi.md#listbatcherrors) | Get Batch Errors\n*Batches* | [**ListBatches**](docs//apis/BatchesApi.md#listbatches) | List Batches\n*Batches* | [**ProcessBatch**](docs//apis/BatchesApi.md#processbatch) | Process Batch ID Labels\n*Batches* | [**RemoveFromBatch**](docs//apis/BatchesApi.md#removefrombatch) | Remove From Batch\n*Batches* | [**UpdateBatch**](docs//apis/BatchesApi.md#updatebatch) | Update Batch By Id\n*CarrierAccounts* | [**ConnectCarrier**](docs//apis/CarrierAccountsApi.md#connectcarrier) | Connect a carrier account\n*CarrierAccounts* | [**DisconnectCarrier**](docs//apis/CarrierAccountsApi.md#disconnectcarrier) | Disconnect a carrier\n*CarrierAccounts* | [**GetCarrierSettings**](docs//apis/CarrierAccountsApi.md#getcarriersettings) | Get carrier settings\n*CarrierAccounts* | [**UpdateCarrierSettings**](docs//apis/CarrierAccountsApi.md#updatecarriersettings) | Update carrier settings\n*Carriers* | [**AddFundsToCarrier**](docs//apis/CarriersApi.md#addfundstocarrier) | Add Funds To Carrier\n*Carriers* | [**DisconnectCarrierById**](docs//apis/CarriersApi.md#disconnectcarrierbyid) | Disconnect Carrier by ID\n*Carriers* | [**GetCarrierById**](docs//apis/CarriersApi.md#getcarrierbyid) | Get Carrier By ID\n*Carriers* | [**GetCarrierOptions**](docs//apis/CarriersApi.md#getcarrieroptions) | Get Carrier Options\n*Carriers* | [**ListCarrierPackageTypes**](docs//apis/CarriersApi.md#listcarrierpackagetypes) | List Carrier Package Types\n*Carriers* | [**ListCarrierServices**](docs//apis/CarriersApi.md#listcarrierservices) | List Carrier Services\n*Carriers* | [**ListCarriers**](docs//apis/CarriersApi.md#listcarriers) | List Carriers\n*Downloads* | [**DownloadFile**](docs//apis/DownloadsApi.md#downloadfile) | Download File\n*Insurance* | [**AddFundsToInsurance**](docs//apis/InsuranceApi.md#addfundstoinsurance) | Add Funds To Insurance\n*Insurance* | [**ConnectInsurer**](docs//apis/InsuranceApi.md#connectinsurer) | Connect a Shipsurance Account\n*Insurance* | [**DisconnectInsurer**](docs//apis/InsuranceApi.md#disconnectinsurer) | Disconnect a Shipsurance Account\n*Insurance* | [**GetInsuranceBalance**](docs//apis/InsuranceApi.md#getinsurancebalance) | Get Insurance Funds Balance\n*Labels* | [**CreateCombinedLabelDocument**](docs//apis/LabelsApi.md#createcombinedlabeldocument) | Created Combined Label Document\n*Labels* | [**CreateLabel**](docs//apis/LabelsApi.md#createlabel) | Purchase Label\n*Labels* | [**CreateLabelFromRate**](docs//apis/LabelsApi.md#createlabelfromrate) | Purchase Label with Rate ID\n*Labels* | [**CreateLabelFromShipment**](docs//apis/LabelsApi.md#createlabelfromshipment) | Purchase Label with Shipment ID\n*Labels* | [**CreateReturnLabel**](docs//apis/LabelsApi.md#createreturnlabel) | Create a return label\n*Labels* | [**GetLabelByExternalShipmentId**](docs//apis/LabelsApi.md#getlabelbyexternalshipmentid) | Get Label By External Shipment ID\n*Labels* | [**GetLabelById**](docs//apis/LabelsApi.md#getlabelbyid) | Get Label By ID\n*Labels* | [**GetTrackingLogFromLabel**](docs//apis/LabelsApi.md#gettrackinglogfromlabel) | Get Label Tracking Information\n*Labels* | [**ListLabels**](docs//apis/LabelsApi.md#listlabels) | List labels\n*Labels* | [**VoidLabel**](docs//apis/LabelsApi.md#voidlabel) | Void a Label By ID\n*Manifests* | [**CreateManifest**](docs//apis/ManifestsApi.md#createmanifest) | Create Manifest\n*Manifests* | [**GetManifestById**](docs//apis/ManifestsApi.md#getmanifestbyid) | Get Manifest By Id\n*Manifests* | [**GetManifestRequestById**](docs//apis/ManifestsApi.md#getmanifestrequestbyid) | Get Manifest Request By Id\n*Manifests* | [**ListManifests**](docs//apis/ManifestsApi.md#listmanifests) | List Manifests\n*PackagePickups* | [**DeleteScheduledPickup**](docs//apis/PackagePickupsApi.md#deletescheduledpickup) | Delete a Scheduled Pickup\n*PackagePickups* | [**GetPickupById**](docs//apis/PackagePickupsApi.md#getpickupbyid) | Get Pickup By ID\n*PackagePickups* | [**ListScheduledPickups**](docs//apis/PackagePickupsApi.md#listscheduledpickups) | List Scheduled Pickups\n*PackagePickups* | [**SchedulePickup**](docs//apis/PackagePickupsApi.md#schedulepickup) | Schedule a Pickup\n*PackageTypes* | [**CreatePackageType**](docs//apis/PackageTypesApi.md#createpackagetype) | Create Custom Package Type\n*PackageTypes* | [**DeletePackageType**](docs//apis/PackageTypesApi.md#deletepackagetype) | Delete A Custom Package By ID\n*PackageTypes* | [**GetPackageTypeById**](docs//apis/PackageTypesApi.md#getpackagetypebyid) | Get Custom Package Type By ID\n*PackageTypes* | [**ListPackageTypes**](docs//apis/PackageTypesApi.md#listpackagetypes) | List Custom Package Types\n*PackageTypes* | [**UpdatePackageType**](docs//apis/PackageTypesApi.md#updatepackagetype) | Update Custom Package Type By ID\n*Rates* | [**CalculateRates**](docs//apis/RatesApi.md#calculaterates) | Get Shipping Rates\n*Rates* | [**CompareBulkRates**](docs//apis/RatesApi.md#comparebulkrates) | Get Bulk Rates\n*Rates* | [**EstimateRates**](docs//apis/RatesApi.md#estimaterates) | Estimate Rates\n*Rates* | [**GetRateById**](docs//apis/RatesApi.md#getratebyid) | Get Rate By ID\n*ServicePoints* | [**ServicePointsGetById**](docs//apis/ServicePointsApi.md#servicepointsgetbyid) | Get Service Point By ID\n*ServicePoints* | [**ServicePointsList**](docs//apis/ServicePointsApi.md#servicepointslist) | List Service Points\n*Shipments* | [**CancelShipments**](docs//apis/ShipmentsApi.md#cancelshipments) | Cancel a Shipment\n*Shipments* | [**CreateShipments**](docs//apis/ShipmentsApi.md#createshipments) | Create Shipments\n*Shipments* | [**GetShipmentByExternalId**](docs//apis/ShipmentsApi.md#getshipmentbyexternalid) | Get Shipment By External ID\n*Shipments* | [**GetShipmentById**](docs//apis/ShipmentsApi.md#getshipmentbyid) | Get Shipment By ID\n*Shipments* | [**ListShipmentRates**](docs//apis/ShipmentsApi.md#listshipmentrates) | Get Shipment Rates\n*Shipments* | [**ListShipments**](docs//apis/ShipmentsApi.md#listshipments) | List Shipments\n*Shipments* | [**ParseShipment**](docs//apis/ShipmentsApi.md#parseshipment) | Parse shipping info\n*Shipments* | [**ShipmentsListTags**](docs//apis/ShipmentsApi.md#shipmentslisttags) | Get Shipment Tags\n*Shipments* | [**ShipmentsUpdateTags**](docs//apis/ShipmentsApi.md#shipmentsupdatetags) | Update Shipments Tags\n*Shipments* | [**TagShipment**](docs//apis/ShipmentsApi.md#tagshipment) | Add Tag to Shipment\n*Shipments* | [**UntagShipment**](docs//apis/ShipmentsApi.md#untagshipment) | Remove Tag from Shipment\n*Shipments* | [**UpdateShipment**](docs//apis/ShipmentsApi.md#updateshipment) | Update Shipment By ID\n*Tags* | [**CreateTag**](docs//apis/TagsApi.md#createtag) | Create a New Tag\n*Tags* | [**CreateTag_0**](docs//apis/TagsApi.md#createtag_0) | Create a New Tag\n*Tags* | [**DeleteTag**](docs//apis/TagsApi.md#deletetag) | Delete Tag\n*Tags* | [**ListTags**](docs//apis/TagsApi.md#listtags) | Get Tags\n*Tags* | [**RenameTag**](docs//apis/TagsApi.md#renametag) | Update Tag Name\n*Tokens* | [**TokensGetEphemeralToken**](docs//apis/TokensApi.md#tokensgetephemeraltoken) | Get Ephemeral Token\n*Tracking* | [**GetTrackingLog**](docs//apis/TrackingApi.md#gettrackinglog) | Get Tracking Information\n*Tracking* | [**StartTracking**](docs//apis/TrackingApi.md#starttracking) | Start Tracking a Package\n*Tracking* | [**StopTracking**](docs//apis/TrackingApi.md#stoptracking) | Stop Tracking a Package\n*Warehouses* | [**CreateWarehouse**](docs//apis/WarehousesApi.md#createwarehouse) | Create Warehouse\n*Warehouses* | [**DeleteWarehouse**](docs//apis/WarehousesApi.md#deletewarehouse) | Delete Warehouse By ID\n*Warehouses* | [**GetWarehouseById**](docs//apis/WarehousesApi.md#getwarehousebyid) | Get Warehouse By Id\n*Warehouses* | [**ListWarehouses**](docs//apis/WarehousesApi.md#listwarehouses) | List Warehouses\n*Warehouses* | [**UpdateWarehouse**](docs//apis/WarehousesApi.md#updatewarehouse) | Update Warehouse By Id\n*Warehouses* | [**UpdateWarehouseSettings**](docs//apis/WarehousesApi.md#updatewarehousesettings) | Update Warehouse Settings\n*Webhooks* | [**CreateWebhook**](docs//apis/WebhooksApi.md#createwebhook) | Create a Webhook\n*Webhooks* | [**DeleteWebhook**](docs//apis/WebhooksApi.md#deletewebhook) | Delete Webhook By ID\n*Webhooks* | [**GetWebhookById**](docs//apis/WebhooksApi.md#getwebhookbyid) | Get Webhook By ID\n*Webhooks* | [**ListWebhooks**](docs//apis/WebhooksApi.md#listwebhooks) | List Webhooks\n*Webhooks* | [**UpdateWebhook**](docs//apis/WebhooksApi.md#updatewebhook) | Update a Webhook\n\n\n## Legacy Methods\n\nThese methods have been deprecated in favor of the methods listed above, but are still in the SDK.\n\n- [`CreateLabelFromRate`](./docs/legacy/CreateLabelFromRate.md) - When retrieving rates for shipments using the `GetRatesWithShipmentDetails` method, the returned information contains a `RateId` property that can be used to purchase a label without having to refill in the shipment information repeatedly.\n- [`CreateLabelFromShipmentDetails`](./docs/legacy/CreateLabelFromShipmentDetails.md) - Purchase and print a label for shipment.\n- [`GetRatesWithShipmentDetails`](./docs/legacy/GetRatesWithShipmentDetails.md) - Given some shipment details and rate options, this method returns a list of rate quotes.\n- [`ListCarriers`](./docs/legacy/ListCarriers.md) - Returns a list of carrier accounts that have been connected through\n  the [ShipEngine dashboard](https://www.shipengine.com/docs/carriers/setup/).\n- [`TrackUsingLabelId`](./docs/legacy/TrackUsingLabelId.md) - Track a package by its associated label ID.\n- [`TrackUsingCarrierCodeAndTrackingNumber`](./docs/legacy/TrackUsingCarrierCodeAndTrackingNumber.md) - Track a package for a given carrier and tracking number.\n- [`ValidateAddresses`](./docs/legacy/ValidateAddresses.md) - Indicates whether the provided addresses are valid. If the addresses are valid, the method returns a normalized version based on the standards of the country in which the address resides. If an address cannot be normalized, an error is returned.\n- [`VoidLabelWithLabelId`](./docs/legacy/VoidLabelWithLabelId.md) - Void a label with its Label ID.\n- [`CreateManifests`](./docs/legacy/CreateManifest.md) - Create a shipment manifest.\n\n## Contributing\n\nContributions, enhancements, and bug-fixes are welcome! [Open an issue](https://github.com/ShipEngine/shipengine-dotnet/issues) on GitHub and [submit a pull request](https://github.com/ShipEngine/shipengine-dotnet/pulls).\n\n### Building\n\nTo build the project locally on your computer:\n\n1. **Clone this repo**\u003cbr\u003e\n   `git clone https://github.com/ShipEngine/shipengine-dotnet.git`\n\n2. **Install [.NET 8.x](https://dotnet.microsoft.com/download)**\n\n3. **Install dependencies**\u003cbr\u003e\n   `dotnet restore`\n\n4. **Build the code**\u003cbr\u003e\n   `dotnet build`\n\n5. **Format the code**\u003cbr\u003e\n   `dotnet format`\n\n6. **Run the tests**\u003cbr\u003e\n   `dotnet test`\u003cbr\u003e\u003cbr\u003e\n   By default, the test project targets all supported frameworks, if your environment only supports a subset then you can specify in the CLI. \u003cbr\u003e\u003cbr\u003e\n   `dotnet test -f net8.0`\n\n### Generating from OpenAPI\n\nTo regenerate the SDK from the OpenAPI spec, you will first need to get the latest version of the spec.  It can be downloaded from the [online documentation](https://shipengine.github.io/shipengine-openapi/)\nand should be saved to `./generation/swagger.json`.  Then run `npm run generate` from the command line.  This will regenerate all the API calls and models, but not docs or tests.\n\nThe templates for autogeneration were extracted using the command:\n```bash\nnpx @openapitools/openapi-generator-cli author template -g csharp -o generation/templates\n```\n\n## Release\nCreate a [fork](https://docs.github.com/en/get-started/quickstart/contributing-to-projects) for your changes.\n\nUpdate the [Changelog](./CHANGELOG.md) with any relevant new features or bug fixes and modify the `packageVersion` property in the `.openapitools.json` file to match the new version.\n\nIn the `ShipEngine.csproj` file, update to the desired version (using [semantic versioning](https://semver.org/)) and push to your fork.\n\nRun `dotnet format`\n\nCreate a pull request.\n\nOnce a member of the ShipEngine team reviews your PR and it's merged to main, the build pipeline will handle all the necessary github tags and nuget packaging and publishing.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshipengine%2Fshipengine-dotnet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshipengine%2Fshipengine-dotnet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshipengine%2Fshipengine-dotnet/lists"}