Skip to content

Latest commit

 

History

History
493 lines (382 loc) · 38.9 KB

File metadata and controls

493 lines (382 loc) · 38.9 KB

Fingerprint Server API Dotnet SDK

7.1.0

Minor Changes

  • Add relay detection method to the VPN Detection Smart Signal (e5f305d)
  • events: Add a suspect field to the identification product schema (e5f305d)

7.0.0

Major Changes

The underlying Server API hasn’t changed, but we made SDK type and class generation more precise, resulting in small breaking changes for the SDK itself. This change should make the SDK API a lot more stable going forward

  • Replace ProductError.CodeEnum and IdentificationError.CodeEnum with ErrorCode (32afba9)
    • Remove the BrowserDetails field botProbability.
    • Update the IdentificationConfidence field score type format: float -> double.
    • Make the RawDeviceAttributeError field name optional .
    • Make the RawDeviceAttributeError field message optional .
    • events: Remove the EventsResponse field error.
      • [note]: The errors are represented by ErrorResponse model.
    • events: Update the HighActivity field dailyRequests type format: number -> int64.
    • events: Specify the Tampering field anomalyScore type format: double.
    • webhook: Make the Webhook fields optional: visitorId, visitorFound, firstSeenAt, lastSeenAt, browserDetails, incognito.
    • webhook: Make the WebhookClonedApp field result optional.
    • webhook: Make the WebhookDeveloperTools field result optional.
    • webhook: Make the WebhookEmulator field result optional.
    • webhook: Make the WebhookFactoryReset fields time and timestamp optional.
    • webhook: Make the WebhookFrida field result optional.
    • webhook: Update the WebhookHighActivity field dailyRequests type format: number -> int64.
    • webhook: Make the WebhookIPBlocklist fields result and details optional.
    • webhook: Make the WebhookJailbroken field result optional.
    • webhook: Make the WebhookLocationSpoofing field result optional.
    • webhook: Make the WebhookPrivacySettings field result optional.
    • webhook: Make the WebhookProxy field result optional.
    • webhook: Make the WebhookRemoteControl field result optional.
    • webhook: Make the WebhookRootApps field result optional.
    • webhook: Make the WebhookSuspectScore field result optional.
    • webhook: Make the WebhookTampering fields result, anomalyScore and antiDetectBrowser optional.
    • webhook: Specify the WebhookTampering field anomalyScore type format: double.
    • webhook: Make the WebhookTor field result optional.
    • webhook: Make the WebhookVelocity fields optional: distinctIp, distinctLinkedId, distinctCountry, events, ipEvents, distinctIpByLinkedId, distinctVisitorIdByLinkedId.
    • webhook: Make the WebhookVirtualMachine field result optional.
    • webhook: Make the WebhookVPN fields optional: result, confidence, originTimezone, methods. (9400768)
  • Rename errors models related to visits:
    • rename ErrorVisitsDelete400Response to ErrorVisitor400Response
    • rename ErrorVisitsDelete404ResponseError to ErrorVisitor404ResponseError
    • rename ErrorVisitsDelete404Response to ErrorVisitor404Response (c32807b)
  • Rename IsValidWebhookSignature to IsValidSignature in WebhookValidation (a8058e2)
    • Rename BotdResult -> Botd.
    • Rename BotdDetectionResult -> BotdBot:
      • Extract result type as BotdBotResult.
    • Rename ClonedAppResult -> ClonedApp.
    • Rename DeveloperToolsResult -> DeveloperTools.
    • Rename EmulatorResult -> Emulator.
    • Refactor error models:
      • Remove ErrorCommon403Response, ErrorCommon429Response, ErrorEvent404Response, TooManyRequestsResponse, ErrorVisits403, ErrorUpdateEvent400Response, ErrorUpdateEvent409Response, ErrorVisitor400Response, ErrorVisitor404Response, IdentificationError, ProductError.
      • Introduce ErrorResponse and ErrorPlainResponse.
        • [note]: ErrorPlainResponse has a different format { "error": string } and it is used only in GET /visitors.
      • Extract error type as Error.
      • Extract error.code type as ErrorCode.
    • Rename EventResponse -> EventsGetResponse.
    • Rename EventUpdateRequest -> EventsUpdateRequest.
    • Rename FactoryResetResult -> FactoryReset.
    • Rename FridaResult -> Frida.
    • Rename IPLocation -> Geolocation:
      • Rename IPLocationCity -> GeolocationCity.
      • Extract subdivisions type as GeolocationSubdivisions.
      • Rename Location -> GeolocationContinent:
      • Introduce a dedicated type GeolocationCountry.
      • Rename Subdivision -> GeolocationSubdivision.
    • Rename HighActivityResult -> HighActivity.
    • Rename Confidence -> IdentificationConfidence.
    • Rename SeenAt -> IdentificationSeenAt.
    • Rename IncognitoResult -> Incognito.
    • Rename IpBlockListResult -> IPBlocklist:
      • Extract details type as IPBlocklistDetails.
    • Rename IpInfoResult -> IPInfo:
      • Rename IpInfoResultV4 -> IPInfoV4.
      • Rename IpInfoResultV6 -> IPInfoV6.
      • Rename ASN -> IPInfoASN.
      • Rename DataCenter -> IPInfoDataCenter.
    • Rename JailbrokenResult -> Jailbroken.
    • Rename LocationSpoofingResult -> LocationSpoofing.
    • Rename PrivacySettingsResult -> PrivacySettings.
    • Rename ProductsResponse -> Products:
      • Rename inner types: ProductsResponseIdentification -> ProductIdentification, ProductsResponseIdentificationData -> Identification, ProductsResponseBotd -> ProductBotd, SignalResponseRootApps -> ProductRootApps, SignalResponseEmulator -> ProductEmulator, SignalResponseIpInfo -> ProductIPInfo, SignalResponseIpBlocklist -> ProductIPBlocklist, SignalResponseTor -> ProductTor, SignalResponseVpn -> ProductVPN, SignalResponseProxy -> ProductProxy, ProxyResult -> Proxy, SignalResponseIncognito -> ProductIncognito, SignalResponseTampering -> ProductTampering, SignalResponseClonedApp -> ProductClonedApp, SignalResponseFactoryReset -> ProductFactoryReset, SignalResponseJailbroken -> ProductJailbroken, SignalResponseFrida -> ProductFrida, SignalResponsePrivacySettings -> ProductPrivacySettings, SignalResponseVirtualMachine -> ProductVirtualMachine, SignalResponseRawDeviceAttributes -> ProductRawDeviceAttributes, RawDeviceAttributesResultValue -> RawDeviceAttributes, SignalResponseHighActivity -> ProductHighActivity, SignalResponseLocationSpoofing -> ProductLocationSpoofing, SignalResponseSuspectScore -> ProductSuspectScore, SignalResponseRemoteControl -> ProductRemoteControl, SignalResponseVelocity -> ProductVelocity, SignalResponseDeveloperTools -> ProductDeveloperTools.
      • Extract identification.data type as Identification.
    • Rename RawDeviceAttributesResult -> RawDeviceAttributes:
      • Extract item type as RawDeviceAttribute.
      • Extract error type as RawDeviceAttributeError.
    • Rename RemoteControlResult -> RemoteControl.
    • Rename RootAppsResult -> RootApps.
    • Rename SuspectScoreResult -> SuspectScore.
    • Extract new model Tag.
    • Rename TamperingResult -> Tampering.
    • Rename TorResult -> Tor.
    • Rename VelocityResult -> Velocity:
      • Rename VelocityIntervals -> VelocityData.
      • Rename VelocityIntervalResult -> VelocityIntervals.
    • Rename VirtualMachineResult -> VirtualMachine.
    • Rename the Visit field ipLocation type DeprecatedIPLocation -> DeprecatedGeolocation.
      • Instead of DeprecatedIPLocationCity use common GeolocationCity
    • Rename Response -> VisitorsGetResponse.
      • Omit extra inner type ResponseVisits
    • Rename VpnResult -> VPN.
      • Extract confidence type as VPNConfidence.
      • Extract methods type as VPNMethods.
    • Rename WebhookVisit -> Webhook.
      • Introduce new inner types: WebhookRootApps, WebhookEmulator, WebhookIPInfo, WebhookIPBlocklist, WebhookTor, WebhookVPN, WebhookProxy, WebhookTampering, WebhookClonedApp, WebhookFactoryReset, WebhookJailbroken, WebhookFrida, WebhookPrivacySettings, WebhookVirtualMachine, WebhookRawDeviceAttributes, WebhookHighActivity, WebhookLocationSpoofing, WebhookSuspectScore, WebhookRemoteControl, WebhookVelocity, WebhookDeveloperTools. (9400768)
  • Drop support for .NET6 and .NET7 because they reached EOL (d9febcb)
  • Store ErrorCode enum in ErrorCode property in ApiException. Http code in now available in HttpCode property. (d197f29)
  • Rename Webhook class to WebhookValidation. Right now, Webhook class points to the actual data model. (77e0c16)
  • Expose actual error message in ApiException.Message if available (d197f29)

Minor Changes

  • Update System.Text.Json to 8.0.5 (606c84a)
  • related-visitors: Add GET /related-visitors endpoint (36ed522)
  • Added new ipEvents, distinctIpByLinkedId, and distinctVisitorIdByLinkedId fields to the velocity Smart Signal. (9400768)
    • Make the GeolocationCity field name required.
    • Make the GeolocationSubdivision field isoCode required.
    • Make the GeolocationSubdivision field name required.
    • Make the IPInfoASN field name required .
    • Make the IPInfoDataCenter field name required.
    • Add optional IdentificationConfidence field comment.
    • events: Add optional Botd field meta.
    • events: Add optional Identification field components.
    • events: Make the VPN field originCountry required.
    • visitors: Add optional Visit field components.
    • webhook: Add optional Webhook field components. (9400768)
  • visitors: Add the confidence field to the VPN Detection Smart Signal (36ed522)
  • Remove ipv4 format from ip field in Botd, Identification, Visit and Webhook models. (0cceba7)
  • events: Add antiDetectBrowser detection method to the tampering Smart Signal. (36ed522)
  • events: Introduce PUT endpoint for /events API (b2c086c)

Patch Changes

  • related-visitors: Add mention that the API is billable (36ed522)

7.0.0-test.1

Major Changes

  • Replace ProductError.CodeEnum and IdentificationError.CodeEnum with ErrorCode (32afba9)
    • Remove the BrowserDetails field botProbability.
    • Update the IdentificationConfidence field score type format: float -> double.
    • Make the RawDeviceAttributeError field name optional .
    • Make the RawDeviceAttributeError field message optional .
    • events: Remove the EventsResponse field error.
      • [note]: The errors are represented by ErrorResponse model.
    • events: Update the HighActivity field dailyRequests type format: number -> int64.
    • events: Specify the Tampering field anomalyScore type format: double.
    • webhook: Make the Webhook fields optional: visitorId, visitorFound, firstSeenAt, lastSeenAt, browserDetails, incognito.
    • webhook: Make the WebhookClonedApp field result optional.
    • webhook: Make the WebhookDeveloperTools field result optional.
    • webhook: Make the WebhookEmulator field result optional.
    • webhook: Make the WebhookFactoryReset fields time and timestamp optional.
    • webhook: Make the WebhookFrida field result optional.
    • webhook: Update the WebhookHighActivity field dailyRequests type format: number -> int64.
    • webhook: Make the WebhookIPBlocklist fields result and details optional.
    • webhook: Make the WebhookJailbroken field result optional.
    • webhook: Make the WebhookLocationSpoofing field result optional.
    • webhook: Make the WebhookPrivacySettings field result optional.
    • webhook: Make the WebhookProxy field result optional.
    • webhook: Make the WebhookRemoteControl field result optional.
    • webhook: Make the WebhookRootApps field result optional.
    • webhook: Make the WebhookSuspectScore field result optional.
    • webhook: Make the WebhookTampering fields result, anomalyScore and antiDetectBrowser optional.
    • webhook: Specify the WebhookTampering field anomalyScore type format: double.
    • webhook: Make the WebhookTor field result optional.
    • webhook: Make the WebhookVelocity fields optional: distinctIp, distinctLinkedId, distinctCountry, events, ipEvents, distinctIpByLinkedId, distinctVisitorIdByLinkedId.
    • webhook: Make the WebhookVirtualMachine field result optional.
    • webhook: Make the WebhookVPN fields optional: result, confidence, originTimezone, methods. (9400768)
  • Rename IsValidWebhookSignature to IsValidSignature in WebhookValidation (a8058e2)
    • Rename BotdResult -> Botd.
    • Rename BotdDetectionResult -> BotdBot:
      • Extract result type as BotdBotResult.
    • Rename ClonedAppResult -> ClonedApp.
    • Rename DeveloperToolsResult -> DeveloperTools.
    • Rename EmulatorResult -> Emulator.
    • Refactor error models:
      • Remove ErrorCommon403Response, ErrorCommon429Response, ErrorEvent404Response, TooManyRequestsResponse, ErrorVisits403, ErrorUpdateEvent400Response, ErrorUpdateEvent409Response, ErrorVisitor400Response, ErrorVisitor404Response, IdentificationError, ProductError.
      • Introduce ErrorResponse and ErrorPlainResponse.
        • [note]: ErrorPlainResponse has a different format { "error": string } and it is used only in GET /visitors.
      • Extract error type as Error.
      • Extract error.code type as ErrorCode.
    • Rename EventResponse -> EventsGetResponse.
    • Rename EventUpdateRequest -> EventsUpdateRequest.
    • Rename FactoryResetResult -> FactoryReset.
    • Rename FridaResult -> Frida.
    • Rename IPLocation -> Geolocation:
      • Rename IPLocationCity -> GeolocationCity.
      • Extract subdivisions type as GeolocationSubdivisions.
      • Rename Location -> GeolocationContinent:
      • Introduce a dedicated type GeolocationCountry.
      • Rename Subdivision -> GeolocationSubdivision.
    • Rename HighActivityResult -> HighActivity.
    • Rename Confidence -> IdentificationConfidence.
    • Rename SeenAt -> IdentificationSeenAt.
    • Rename IncognitoResult -> Incognito.
    • Rename IpBlockListResult -> IPBlocklist:
      • Extract details type as IPBlocklistDetails.
    • Rename IpInfoResult -> IPInfo:
      • Rename IpInfoResultV4 -> IPInfoV4.
      • Rename IpInfoResultV6 -> IPInfoV6.
      • Rename ASN -> IPInfoASN.
      • Rename DataCenter -> IPInfoDataCenter.
    • Rename JailbrokenResult -> Jailbroken.
    • Rename LocationSpoofingResult -> LocationSpoofing.
    • Rename PrivacySettingsResult -> PrivacySettings.
    • Rename ProductsResponse -> Products:
      • Rename inner types: ProductsResponseIdentification -> ProductIdentification, ProductsResponseIdentificationData -> Identification, ProductsResponseBotd -> ProductBotd, SignalResponseRootApps -> ProductRootApps, SignalResponseEmulator -> ProductEmulator, SignalResponseIpInfo -> ProductIPInfo, SignalResponseIpBlocklist -> ProductIPBlocklist, SignalResponseTor -> ProductTor, SignalResponseVpn -> ProductVPN, SignalResponseProxy -> ProductProxy, ProxyResult -> Proxy, SignalResponseIncognito -> ProductIncognito, SignalResponseTampering -> ProductTampering, SignalResponseClonedApp -> ProductClonedApp, SignalResponseFactoryReset -> ProductFactoryReset, SignalResponseJailbroken -> ProductJailbroken, SignalResponseFrida -> ProductFrida, SignalResponsePrivacySettings -> ProductPrivacySettings, SignalResponseVirtualMachine -> ProductVirtualMachine, SignalResponseRawDeviceAttributes -> ProductRawDeviceAttributes, RawDeviceAttributesResultValue -> RawDeviceAttributes, SignalResponseHighActivity -> ProductHighActivity, SignalResponseLocationSpoofing -> ProductLocationSpoofing, SignalResponseSuspectScore -> ProductSuspectScore, SignalResponseRemoteControl -> ProductRemoteControl, SignalResponseVelocity -> ProductVelocity, SignalResponseDeveloperTools -> ProductDeveloperTools.
      • Extract identification.data type as Identification.
    • Rename RawDeviceAttributesResult -> RawDeviceAttributes:
      • Extract item type as RawDeviceAttribute.
      • Extract error type as RawDeviceAttributeError.
    • Rename RemoteControlResult -> RemoteControl.
    • Rename RootAppsResult -> RootApps.
    • Rename SuspectScoreResult -> SuspectScore.
    • Extract new model Tag.
    • Rename TamperingResult -> Tampering.
    • Rename TorResult -> Tor.
    • Rename VelocityResult -> Velocity:
      • Rename VelocityIntervals -> VelocityData.
      • Rename VelocityIntervalResult -> VelocityIntervals.
    • Rename VirtualMachineResult -> VirtualMachine.
    • Rename the Visit field ipLocation type DeprecatedIPLocation -> DeprecatedGeolocation.
      • Instead of DeprecatedIPLocationCity use common GeolocationCity
    • Rename Response -> VisitorsGetResponse.
      • Omit extra inner type ResponseVisits
    • Rename VpnResult -> VPN.
      • Extract confidence type as VPNConfidence.
      • Extract methods type as VPNMethods.
    • Rename WebhookVisit -> Webhook.
      • Introduce new inner types: WebhookRootApps, WebhookEmulator, WebhookIPInfo, WebhookIPBlocklist, WebhookTor, WebhookVPN, WebhookProxy, WebhookTampering, WebhookClonedApp, WebhookFactoryReset, WebhookJailbroken, WebhookFrida, WebhookPrivacySettings, WebhookVirtualMachine, WebhookRawDeviceAttributes, WebhookHighActivity, WebhookLocationSpoofing, WebhookSuspectScore, WebhookRemoteControl, WebhookVelocity, WebhookDeveloperTools. (9400768)
  • Drop support for .NET6 and .NET7 because they reached EOL (d9febcb)
  • Store ErrorCode enum in ErrorCode property in ApiException. Http code in now available in HttpCode property. (d197f29)
  • Rename Webhook class to WebhookValidation. Right now, Webhook class points to the actual data model. (77e0c16)
  • Expose actual error message in ApiException.Message if available (d197f29)

Minor Changes

  • Update System.Text.Json to 8.0.5 (606c84a)
  • related-visitors: Add GET /related-visitors endpoint (36ed522)
  • Added new ipEvents, distinctIpByLinkedId, and distinctVisitorIdByLinkedId fields to the velocity Smart Signal. (9400768)
    • Make the GeolocationCity field name required.
    • Make the GeolocationSubdivision field isoCode required.
    • Make the GeolocationSubdivision field name required.
    • Make the IPInfoASN field name required .
    • Make the IPInfoDataCenter field name required.
    • Add optional IdentificationConfidence field comment.
    • events: Add optional Botd field meta.
    • events: Add optional Identification field components.
    • events: Make the VPN field originCountry required.
    • visitors: Add optional Visit field components.
    • webhook: Add optional Webhook field components. (9400768)
  • visitors: Add the confidence field to the VPN Detection Smart Signal (36ed522)
  • Remove ipv4 format from ip field in Botd, Identification, Visit and Webhook models. (0cceba7)
  • events: Add antiDetectBrowser detection method to the tampering Smart Signal. (36ed522)

Patch Changes

  • related-visitors: Add mention that the API is billable (36ed522)

7.0.0-test.0

Major Changes

  • Rename errors models related to visits:
    • rename ErrorVisitsDelete400Response to ErrorVisitor400Response
    • rename ErrorVisitsDelete404ResponseError to ErrorVisitor404ResponseError
    • rename ErrorVisitsDelete404Response to ErrorVisitor404Response (c32807b)

Minor Changes

  • events: Introduce PUT endpoint for /events API (b2c086c)

6.2.2 (2024-09-17)

Bug Fixes

  • fallback to Configuration.BasePath it HttpClient is provided with null BaseAddress (1c69113)

6.2.1 (2024-09-16)

Bug Fixes

  • avoid making direct changes to passed HttpClient (cee0146)
  • correctly pass Configuration.Timeout when creating HttpClient (4edd39a)

6.2.0 (2024-09-12)

Features

  • introduce HttpClient parameter to the Configuration (41dafb3)

Bug Fixes

  • correctly set default headers in HttpClient using Configuration.DefaultHeader (b057874)

6.1.0 (2024-08-05)

Features

  • add remoteControl, velocity and developerTools signals (cb04c99)

Bug Fixes

  • make tag field optional for Webhook (acae9de)

6.0.2 (2024-07-10)

Build System

  • deps: update System.Text.Json to 8.0.4 (2c4939b)

6.0.1 (2024-06-28)

Bug Fixes

  • remove usage of Newtonsoft.Json in Sealed class (25a26ed)

Build System

  • deps: update BouncyCastle.Cryptography to 2.4.0 (a1d63ba)

6.0.0 (2024-06-28)

⚠ BREAKING CHANGES

  • rename ManyRequestsResponse to TooManyRequestsResponse
  • drop support for netcoreapp3.1 and older,

Features

  • add Webhook.IsValidWebhookSignature function for validating webhook signature (7b4a7fb)
  • add DELETE API (6a457b7)
  • add os Mismatch (85ec77b)
  • add revision string field to confidence object (d2af0ac)
  • drop support for frameworks that reached EOL (a39d863)
  • migrate swagger generated code in request logic to manual implementation (b7e60c0)
  • remove usage of Newtonsoft.Json and RestSharp (77eed3d)
  • rename ManyRequestsResponse to TooManyRequestsResponse (8eae642)

Bug Fixes

  • add JsonDeserializeException when json deserialization fails (7aab037)
  • use correct error type for incognito, rawDeviceAttributes and tampering in the GetEvent method (4b4120e)

Documentation

  • README: mention how to access raw HTTP response (fd324e1)
  • README: remove dependencies section (9d7ae2a)

5.0.0 (2024-03-28)

⚠ BREAKING CHANGES

  • now only .NET >= 6 is supported

Features

4.0.0 (2024-03-18)

⚠ BREAKING CHANGES

  • make identification field confidence optional
  • deprecated ipLocation field uses DeprecatedIpLocation model
  • change models for the most smart signals

Features

  • add linkedId field to the BotdResult type (cddcd3c)
  • add originCountry field to the vpn signal (a8d9c42)
  • add SuspectScore smart signal support (36bcf07)
  • fix ipLocation deprecation (ca56d40)
  • make identification field tag required (a2ba563)
  • use shared structures for webhooks and event (a0adeff)

Bug Fixes

  • make fields required according to real API response (461797e)

3.1.0 (2024-02-13)

Features

  • add method for decoding sealed results (763b940)

3.0.0 (2024-01-12)

⚠ BREAKING CHANGES

  • IpInfo field DataCenter renamed to Datacenter

Features

  • deprecate IPLocation (0ffeeb9)
  • use datacenter instead of the wrong dataCenter (308b5e2)

2.4.0 (2023-11-23)

Features

  • add highActivity and locationSpoofing signals, support originTimezone for vpn signal (8f80f28)

2.3.2 (2023-10-20)

Bug Fixes

  • change package author to Fingerprint (721e91c)

Documentation

  • README: add requirements and license mention INTER-283 (0caaccc)

2.3.1 (2023-09-25)

Bug Fixes

  • update OpenAPI Schema with asn and dataCenter signals (210b79a)
  • update OpenAPI Schema with auxiliaryMobile method for VPN signal (fcf0cf5)

2.3.0 (2023-07-31)

Features

  • add rawDeviceAttributes signal as generic JObject (40f5022)
  • add smart signals support (053779d)

2.2.1 (2023-07-11)

Bug Fixes

  • ensure that SeenAt properties are correctly set in constructor (9bd9e14)

2.2.0 (2023-06-01)

Features

  • update schema with correct IpLocation format and doc updates (4ddae4d)

Bug Fixes

  • fix backtick problem in comments and documentation (a12e9a3)

2.1.0 (2023-05-16)

Features

2.0.0 (2023-01-30)

⚠ BREAKING CHANGES

  • changed before parameter type from int to long

Features

  • change before parameter type in /visits endpoint (c9234aa)

1.0.0 (2023-01-23)

Features

  • add identification error to events response (a0afe34)
  • bump RestSharp to 108.0.3 (a36615f)
  • change namespace from Fingerprint.Sdk to Fingerprint.ServerSdk (250b756)
  • introduce TooManyRequestsException (bd94cf8)
  • rename package to match new root namespace (e457a69)
  • require passing api key in Configuration constructor, remove default configuration (b7b6e0f)
  • send "ii" parameter (c09dab0)
  • support other API regions (ccc9250)
  • support other dotenv frameworks as well (692f1bc)
  • update client to latest schema version (29e1d24)

Documentation

  • README: add badges (c3a7f87)
  • README: add install command and fix style problems (4798730)
  • README: add logo (55f72fb)
  • README: add separate readme to package (6572a05)
  • README: include readme and license (6102d58)
  • README: update readme and license (074fa61)