Retrieve a paginated list of links for the authenticated workspace.
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
T.nilable(Models::Operations::GetLinksResponse)
| 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 |
*/* |
Create a link for the authenticated workspace.
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
T.nilable(Models::Shared::LinkSchema)
| 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 |
*/* |
Retrieve the number of links for the authenticated workspace.
require 'dub'
Models = ::OpenApiSDK::Models
s = ::OpenApiSDK::Dub.new(
security: Models::Shared::Security.new(
token: 'DUB_API_KEY'
)
)
req = Models::Operations::GetLinksCountRequest.new
res = s.links.count(request: req)
unless res.nil?
# handle response
end
T.nilable(::Float)
| 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 |
*/* |
Retrieve the info for a link.
require 'dub'
Models = ::OpenApiSDK::Models
s = ::OpenApiSDK::Dub.new(
security: Models::Shared::Security.new(
token: 'DUB_API_KEY'
)
)
req = Models::Operations::GetLinkInfoRequest.new(
link_id: 'clux0rgak00011...',
external_id: '123456'
)
res = s.links.get(request: req)
unless res.nil?
# handle response
end
T.nilable(Models::Shared::LinkSchema)
| 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 |
*/* |
Delete a link for the authenticated workspace.
require 'dub'
Models = ::OpenApiSDK::Models
s = ::OpenApiSDK::Dub.new(
security: Models::Shared::Security.new(
token: 'DUB_API_KEY'
)
)
res = s.links.delete(link_id: '<id>')
unless res.nil?
# handle response
end
| Parameter |
Type |
Required |
Description |
link_id |
::String |
✔️ |
The id of the link to delete. You may use either linkId (obtained via /links/info endpoint) or externalId prefixed with ext_. |
T.nilable(Models::Operations::DeleteLinkResponseBody)
| 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 |
*/* |
Update a link for the authenticated workspace. If there's no change, returns it as it is.
require 'dub'
Models = ::OpenApiSDK::Models
s = ::OpenApiSDK::Dub.new(
security: Models::Shared::Security.new(
token: 'DUB_API_KEY'
)
)
res = s.links.update(link_id: '<id>', request_body: Models::Operations::UpdateLinkRequestBody.new(
url: 'https://google.com',
external_id: '123456',
tag_ids: [
'clux0rgak00011...',
],
test_variants: [
Models::Operations::UpdateLinkTestVariants.new(
url: 'https://example.com/variant-1',
percentage: 50.0
),
Models::Operations::UpdateLinkTestVariants.new(
url: 'https://example.com/variant-2',
percentage: 50.0
),
]
))
unless res.nil?
# handle response
end
T.nilable(Models::Shared::LinkSchema)
| 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 |
*/* |
Bulk create up to 100 links for the authenticated workspace.
require 'dub'
Models = ::OpenApiSDK::Models
s = ::OpenApiSDK::Dub.new(
security: Models::Shared::Security.new(
token: 'DUB_API_KEY'
)
)
req = [
Models::Operations::RequestBody.new(
url: 'https://google.com',
external_id: '123456',
tag_ids: [
'clux0rgak00011...',
],
test_variants: [
Models::Operations::BulkCreateLinksTestVariants.new(
url: 'https://example.com/variant-1',
percentage: 50.0
),
Models::Operations::BulkCreateLinksTestVariants.new(
url: 'https://example.com/variant-2',
percentage: 50.0
),
]
),
]
res = s.links.create_many(request: req)
unless res.nil?
# handle response
end
T.nilable(T::Array[T.any(Models::Shared::LinkSchema, Models::Shared::LinkErrorSchema)])
| 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 |
*/* |
Bulk delete up to 100 links for the authenticated workspace.
require 'dub'
Models = ::OpenApiSDK::Models
s = ::OpenApiSDK::Dub.new(
security: Models::Shared::Security.new(
token: 'DUB_API_KEY'
)
)
req = Models::Operations::BulkDeleteLinksRequest.new(
link_ids: [
'clux0rgak00011...',
'clux0rgak00022...',
]
)
res = s.links.delete_many(request: req)
unless res.nil?
# handle response
end
T.nilable(Models::Operations::BulkDeleteLinksResponseBody)
| 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 |
*/* |
Bulk update up to 100 links with the same data for the authenticated workspace.
require 'dub'
Models = ::OpenApiSDK::Models
s = ::OpenApiSDK::Dub.new(
security: Models::Shared::Security.new(
token: 'DUB_API_KEY'
)
)
req = Models::Operations::BulkUpdateLinksRequestBody.new(
data: Models::Operations::Data.new(
url: 'https://google.com',
tag_ids: [
'clux0rgak00011...',
],
test_variants: [
Models::Operations::BulkUpdateLinksTestVariants.new(
url: 'https://example.com/variant-1',
percentage: 50.0
),
Models::Operations::BulkUpdateLinksTestVariants.new(
url: 'https://example.com/variant-2',
percentage: 50.0
),
]
)
)
res = s.links.update_many(request: req)
unless res.nil?
# handle response
end
T.nilable(T::Array[Models::Shared::LinkSchema])
| 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 |
*/* |
Upsert a link for the authenticated workspace by its URL. If a link with the same URL already exists, return it (or update it if there are any changes). Otherwise, a new link will be created.
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
T.nilable(Models::Shared::LinkSchema)
| 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 |
*/* |