Dub.co Ruby SDK to interact with APIs.

Dub.co Ruby SDK


Learn more about the Dub.co Ruby SDK in the [official documentation](https://dub.co/docs/sdks/ruby/overview). ## Summary Dub API: Dub is the modern link attribution platform for short links, conversion tracking, and affiliate programs. ## Table of Contents * [SDK Installation](#sdk-installation) * [SDK Example Usage](#sdk-example-usage) * [Authentication](#authentication) * [Available Resources and Operations](#available-resources-and-operations) * [Error Handling](#error-handling) * [Server Selection](#server-selection) * [Development](#development) * [Contributions](#contributions) ## SDK Installation The SDK can be installed using [RubyGems](https://rubygems.org/): ```bash gem install dub ``` ## SDK Example Usage ### Example 1 ```ruby require 'dub' Models = ::OpenApiSDK::Models s = ::OpenApiSDK::Dub.new( security: Models::Shared::Security.new( token: 'DUB_API_KEY' ) ) req = Models::Operations::CreateLinkRequestBody.new( url: 'https://google.com', external_id: '123456', tag_ids: [ 'clux0rgak00011...', ], test_variants: [ Models::Operations::TestVariants.new( url: 'https://example.com/variant-1', percentage: 50.0 ), Models::Operations::TestVariants.new( url: 'https://example.com/variant-2', percentage: 50.0 ), ] ) res = s.links.create(request: req) unless res.nil? # handle response end ``` ### Example 2 ```ruby require 'dub' Models = ::OpenApiSDK::Models s = ::OpenApiSDK::Dub.new( security: Models::Shared::Security.new( token: 'DUB_API_KEY' ) ) req = Models::Operations::UpsertLinkRequestBody.new( url: 'https://google.com', external_id: '123456', tag_ids: [ 'clux0rgak00011...', ], test_variants: [ Models::Operations::UpsertLinkTestVariants.new( url: 'https://example.com/variant-1', percentage: 50.0 ), Models::Operations::UpsertLinkTestVariants.new( url: 'https://example.com/variant-2', percentage: 50.0 ), ] ) res = s.links.upsert(request: req) unless res.nil? # handle response end ``` ## Authentication ### Per-Client Security Schemes This SDK supports the following security scheme globally: | Name | Type | Scheme | | ------- | ---- | ----------- | | `token` | http | HTTP Bearer | You can set the security parameters through the `security` optional parameter when initializing the SDK client instance. For example: ```ruby require 'dub' Models = ::OpenApiSDK::Models s = ::OpenApiSDK::Dub.new( security: Models::Shared::Security.new( token: 'DUB_API_KEY' ) ) req = Models::Operations::GetLinksRequest.new( ending_before: 'link_1KAP4CDPBSVMMBMH9XX3YZZ0Z...', starting_after: 'link_1KAP4CDPBSVMMBMH9XX3YZZ0Z...', page: 1.0, page_size: 50.0 ) res = s.links.list(request: req) unless res.nil? # handle response end ``` ## Available Resources and Operations
Available methods ### [Analytics](docs/sdks/analytics/README.md) * [retrieve](docs/sdks/analytics/README.md#retrieve) - Retrieve analytics for a link, a domain, or the authenticated workspace. ### [Bounties](docs/sdks/bounties/README.md) * [list_submissions](docs/sdks/bounties/README.md#list_submissions) - List bounty submissions * [approve_submission](docs/sdks/bounties/README.md#approve_submission) - Approve a bounty submission * [reject_submission](docs/sdks/bounties/README.md#reject_submission) - Reject a bounty submission ### [Commissions](docs/sdks/commissions/README.md) * [list](docs/sdks/commissions/README.md#list) - List all commissions * [create](docs/sdks/commissions/README.md#create) - Create commission * [update](docs/sdks/commissions/README.md#update) - Update a commission * [update_many](docs/sdks/commissions/README.md#update_many) - Bulk update commissions ### [Customers](docs/sdks/customers/README.md) * [list](docs/sdks/customers/README.md#list) - List all customers * [get](docs/sdks/customers/README.md#get) - Retrieve a customer * [delete](docs/sdks/customers/README.md#delete) - Delete a customer * [update](docs/sdks/customers/README.md#update) - Update a customer ### [Domains](docs/sdks/domains/README.md) * [list](docs/sdks/domains/README.md#list) - List all domains * [create](docs/sdks/domains/README.md#create) - Create a domain * [delete](docs/sdks/domains/README.md#delete) - Delete a domain * [update](docs/sdks/domains/README.md#update) - Update a domain * [register](docs/sdks/domains/README.md#register) - Register a domain * [check_status](docs/sdks/domains/README.md#check_status) - Check the availability of one or more domains ### [EmbedTokens](docs/sdks/embedtokens/README.md) * [referrals](docs/sdks/embedtokens/README.md#referrals) - Create a referrals embed token ### [Events](docs/sdks/events/README.md) * [list](docs/sdks/events/README.md#list) - List all events ### [Folders](docs/sdks/folders/README.md) * [list](docs/sdks/folders/README.md#list) - List all folders * [create](docs/sdks/folders/README.md#create) - Create a folder * [delete](docs/sdks/folders/README.md#delete) - Delete a folder * [update](docs/sdks/folders/README.md#update) - Update a folder ### [Links](docs/sdks/links/README.md) * [list](docs/sdks/links/README.md#list) - List all links * [create](docs/sdks/links/README.md#create) - Create a link * [count](docs/sdks/links/README.md#count) - Retrieve links count * [get](docs/sdks/links/README.md#get) - Retrieve a link * [delete](docs/sdks/links/README.md#delete) - Delete a link * [update](docs/sdks/links/README.md#update) - Update a link * [create_many](docs/sdks/links/README.md#create_many) - Bulk create links * [delete_many](docs/sdks/links/README.md#delete_many) - Bulk delete links * [update_many](docs/sdks/links/README.md#update_many) - Bulk update links * [upsert](docs/sdks/links/README.md#upsert) - Upsert a link ### [PartnerApplications](docs/sdks/partnerapplications/README.md) * [list](docs/sdks/partnerapplications/README.md#list) - List all pending partner applications * [approve](docs/sdks/partnerapplications/README.md#approve) - Approve a partner application * [reject](docs/sdks/partnerapplications/README.md#reject) - Reject a partner application ### [Partners](docs/sdks/partners/README.md) * [list](docs/sdks/partners/README.md#list) - List all partners * [create](docs/sdks/partners/README.md#create) - Create or update a partner * [retrieve_links](docs/sdks/partners/README.md#retrieve_links) - Retrieve a partner's links. * [create_link](docs/sdks/partners/README.md#create_link) - Create a link for a partner * [upsert_link](docs/sdks/partners/README.md#upsert_link) - Upsert a link for a partner * [analytics](docs/sdks/partners/README.md#analytics) - Retrieve analytics for a partner * [ban](docs/sdks/partners/README.md#ban) - Ban a partner * [deactivate](docs/sdks/partners/README.md#deactivate) - Deactivate a partner ### [Payouts](docs/sdks/payouts/README.md) * [list](docs/sdks/payouts/README.md#list) - List all payouts ### [QRCodes](docs/sdks/qrcodes/README.md) * [get](docs/sdks/qrcodes/README.md#get) - Retrieve a QR code ### [Tags](docs/sdks/tags/README.md) * [list](docs/sdks/tags/README.md#list) - List all tags * [create](docs/sdks/tags/README.md#create) - Create a tag * [delete](docs/sdks/tags/README.md#delete) - Delete a tag * [update](docs/sdks/tags/README.md#update) - Update a tag ### [Track](docs/sdks/track/README.md) * [lead](docs/sdks/track/README.md#lead) - Track a lead * [sale](docs/sdks/track/README.md#sale) - Track a sale
## Error Handling Handling errors in this SDK should largely match your expectations. All operations return a response object or raise an error. By default an API error will raise a `Errors::APIError`, which has the following properties: | Property | Type | Description | |----------------|-----------------------------------------|-----------------------| | `message` | *string* | The error message | | `status_code` | *int* | The HTTP status code | | `raw_response` | *Faraday::Response* | The raw HTTP response | | `body` | *string* | The response content | When custom error responses are specified for an operation, the SDK may also throw their associated exception. You can refer to respective *Errors* tables in SDK docs for more details on possible exception types for each operation. For example, the `list` method throws the following exceptions: | Error Type | Status Code | Content Type | | ----------------------------------- | ----------- | ---------------- | | Models::Errors::BadRequest | 400 | application/json | | Models::Errors::Unauthorized | 401 | application/json | | Models::Errors::Forbidden | 403 | application/json | | Models::Errors::NotFound | 404 | application/json | | Models::Errors::Conflict | 409 | application/json | | Models::Errors::InviteExpired | 410 | application/json | | Models::Errors::UnprocessableEntity | 422 | application/json | | Models::Errors::RateLimitExceeded | 429 | application/json | | Models::Errors::InternalServerError | 500 | application/json | | Errors::APIError | 4XX, 5XX | \*/\* | ### Example ```ruby require 'dub' Models = ::OpenApiSDK::Models s = ::OpenApiSDK::Dub.new( security: Models::Shared::Security.new( token: 'DUB_API_KEY' ) ) begin req = Models::Operations::GetLinksRequest.new( ending_before: 'link_1KAP4CDPBSVMMBMH9XX3YZZ0Z...', starting_after: 'link_1KAP4CDPBSVMMBMH9XX3YZZ0Z...', page: 1.0, page_size: 50.0 ) res = s.links.list(request: req) unless res.nil? # handle response end rescue Models::Errors::BadRequest => e # handle e.container data raise e rescue Models::Errors::Unauthorized => e # handle e.container data raise e rescue Models::Errors::Forbidden => e # handle e.container data raise e rescue Models::Errors::NotFound => e # handle e.container data raise e rescue Models::Errors::Conflict => e # handle e.container data raise e rescue Models::Errors::InviteExpired => e # handle e.container data raise e rescue Models::Errors::UnprocessableEntity => e # handle e.container data raise e rescue Models::Errors::RateLimitExceeded => e # handle e.container data raise e rescue Models::Errors::InternalServerError => e # handle e.container data raise e rescue Errors::APIError => e # handle default exception raise e end ``` ## Server Selection ### Override Server URL Per-Client The default server can be overridden globally by passing a URL to the `server_url (String)` optional parameter when initializing the SDK client instance. For example: ```ruby require 'dub' Models = ::OpenApiSDK::Models s = ::OpenApiSDK::Dub.new( server_url: 'https://api.dub.co', security: Models::Shared::Security.new( token: 'DUB_API_KEY' ) ) req = Models::Operations::GetLinksRequest.new( ending_before: 'link_1KAP4CDPBSVMMBMH9XX3YZZ0Z...', starting_after: 'link_1KAP4CDPBSVMMBMH9XX3YZZ0Z...', page: 1.0, page_size: 50.0 ) res = s.links.list(request: req) unless res.nil? # handle response end ``` # Development ## Contributions While we value open-source contributions to this SDK, this library is generated programmatically. Feel free to open a PR or a Github issue as a proof of concept and we'll do our best to include it in a future release! ### SDK Created by [Speakeasy](https://docs.speakeasyapi.dev/docs/using-speakeasy/client-sdks)