List all partners for a partner program.
require 'dub'
Models = ::OpenApiSDK::Models
s = ::OpenApiSDK::Dub.new(
security: Models::Shared::Security.new(
token: 'DUB_API_KEY'
)
)
req = Models::Operations::ListPartnersRequest.new(
group_id: 'grp_123',
status: Models::Operations::ListPartnersQueryParamStatus::APPROVED,
country: 'US',
email: '[email protected]',
tenant_id: '1K0NM7HCN944PEMZ3CQPH43H8',
search: 'john',
page: 1.0,
page_size: 50.0
)
res = s.partners.list(request: req)
unless res.nil?
# handle response
end
T.nilable(T::Array[Models::Operations::ListPartnersResponseBody])
| 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 |
*/* |
Creates or updates a partner record (upsert behavior). If a partner with the same email already exists, their program enrollment will be updated with the provided tenantId. If no existing partner is found, a new partner will be created using the supplied information.
require 'dub'
Models = ::OpenApiSDK::Models
s = ::OpenApiSDK::Dub.new(
security: Models::Shared::Security.new(
token: 'DUB_API_KEY'
)
)
req = Models::Operations::CreatePartnerRequestBody.new(
email: '[email protected]',
link_props: Models::Operations::LinkProps.new(
external_id: '123456',
tag_ids: [
'clux0rgak00011...',
],
test_variants: [
Models::Operations::CreatePartnerTestVariants.new(
url: 'https://example.com/variant-1',
percentage: 50.0
),
Models::Operations::CreatePartnerTestVariants.new(
url: 'https://example.com/variant-2',
percentage: 50.0
),
]
)
)
res = s.partners.create(request: req)
unless res.nil?
# handle response
end
T.nilable(Models::Operations::CreatePartnerResponseBody)
| 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 a partner's links by their partner ID or tenant ID.
require 'dub'
Models = ::OpenApiSDK::Models
s = ::OpenApiSDK::Dub.new(
security: Models::Shared::Security.new(
token: 'DUB_API_KEY'
)
)
req = Models::Operations::RetrieveLinksRequest.new
res = s.partners.retrieve_links(request: req)
unless res.nil?
# handle response
end
T.nilable(T::Array[Models::Operations::RetrieveLinksResponseBody])
| 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 a partner that is enrolled in your program.
require 'dub'
Models = ::OpenApiSDK::Models
s = ::OpenApiSDK::Dub.new(
security: Models::Shared::Security.new(
token: 'DUB_API_KEY'
)
)
req = Models::Operations::CreatePartnerLinkRequestBody.new(
link_props: Models::Operations::CreatePartnerLinkLinkProps.new(
external_id: '123456',
tag_ids: [
'clux0rgak00011...',
],
test_variants: [
Models::Operations::CreatePartnerLinkTestVariants.new(
url: 'https://example.com/variant-1',
percentage: 50.0
),
Models::Operations::CreatePartnerLinkTestVariants.new(
url: 'https://example.com/variant-2',
percentage: 50.0
),
]
)
)
res = s.partners.create_link(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 |
*/* |
Upsert a link for a partner that is enrolled in your program. 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::UpsertPartnerLinkRequestBody.new(
url: 'https://bad-intent.org/',
link_props: Models::Operations::UpsertPartnerLinkLinkProps.new(
external_id: '123456',
tag_ids: [
'clux0rgak00011...',
],
test_variants: [
Models::Operations::UpsertPartnerLinkTestVariants.new(
url: 'https://example.com/variant-1',
percentage: 50.0
),
Models::Operations::UpsertPartnerLinkTestVariants.new(
url: 'https://example.com/variant-2',
percentage: 50.0
),
]
)
)
res = s.partners.upsert_link(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 analytics for a partner within a program. The response type vary based on the groupBy query parameter.
require 'dub'
Models = ::OpenApiSDK::Models
s = ::OpenApiSDK::Dub.new(
security: Models::Shared::Security.new(
token: 'DUB_API_KEY'
)
)
req = Models::Operations::RetrievePartnerAnalyticsRequest.new(
timezone: 'America/New_York',
query: 'metadata[\'key\']:\'value\''
)
res = s.partners.analytics(request: req)
unless res.nil?
# handle response
end
T.nilable(T.any(Models::Shared::PartnerAnalyticsCount, T::Array[Models::Shared::PartnerAnalyticsTimeseries], T::Array[Models::Shared::PartnerAnalyticsTopLinks]))
| 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 |
*/* |
Ban a partner from your program. This will disable all links and mark all commissions as canceled.
require 'dub'
Models = ::OpenApiSDK::Models
s = ::OpenApiSDK::Dub.new(
security: Models::Shared::Security.new(
token: 'DUB_API_KEY'
)
)
req = nil
res = s.partners.ban(request: req)
unless res.nil?
# handle response
end
T.nilable(Models::Operations::BanPartnerResponseBody)
| 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 |
*/* |
This will deactivate the partner from your program and disable all their active links. Their commissions and payouts will remain intact. You can reactivate them later if needed.
require 'dub'
Models = ::OpenApiSDK::Models
s = ::OpenApiSDK::Dub.new(
security: Models::Shared::Security.new(
token: 'DUB_API_KEY'
)
)
req = nil
res = s.partners.deactivate(request: req)
unless res.nil?
# handle response
end
T.nilable(Models::Operations::DeactivatePartnerResponseBody)
| 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 |
*/* |