Skip to content

Latest commit

 

History

History
487 lines (372 loc) · 28.4 KB

File metadata and controls

487 lines (372 loc) · 28.4 KB

Partners

Overview

Available Operations

list

List all partners for a partner program.

Example Usage

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

Parameters

Parameter Type Required Description
request Models::Operations::ListPartnersRequest ✔️ The request object to use for the request.

Response

T.nilable(T::Array[Models::Operations::ListPartnersResponseBody])

Errors

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

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.

Example Usage

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

Parameters

Parameter Type Required Description
request Models::Operations::CreatePartnerRequestBody ✔️ The request object to use for the request.

Response

T.nilable(Models::Operations::CreatePartnerResponseBody)

Errors

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_links

Retrieve a partner's links by their partner ID or tenant ID.

Example Usage

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

Parameters

Parameter Type Required Description
request Models::Operations::RetrieveLinksRequest ✔️ The request object to use for the request.

Response

T.nilable(T::Array[Models::Operations::RetrieveLinksResponseBody])

Errors

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_link

Create a link for a partner that is enrolled in your program.

Example Usage

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

Parameters

Parameter Type Required Description
request Models::Operations::CreatePartnerLinkRequestBody ✔️ The request object to use for the request.

Response

T.nilable(Models::Shared::LinkSchema)

Errors

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_link

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.

Example Usage

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

Parameters

Parameter Type Required Description
request Models::Operations::UpsertPartnerLinkRequestBody ✔️ The request object to use for the request.

Response

T.nilable(Models::Shared::LinkSchema)

Errors

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 */*

analytics

Retrieve analytics for a partner within a program. The response type vary based on the groupBy query parameter.

Example Usage

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

Parameters

Parameter Type Required Description
request Models::Operations::RetrievePartnerAnalyticsRequest ✔️ The request object to use for the request.

Response

T.nilable(T.any(Models::Shared::PartnerAnalyticsCount, T::Array[Models::Shared::PartnerAnalyticsTimeseries], T::Array[Models::Shared::PartnerAnalyticsTopLinks]))

Errors

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

Ban a partner from your program. This will disable all links and mark all commissions as canceled.

Example Usage

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

Parameters

Parameter Type Required Description
request Models::Operations::BanPartnerRequestBody ✔️ The request object to use for the request.

Response

T.nilable(Models::Operations::BanPartnerResponseBody)

Errors

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 */*

deactivate

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.

Example Usage

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

Parameters

Parameter Type Required Description
request Models::Operations::DeactivatePartnerRequestBody ✔️ The request object to use for the request.

Response

T.nilable(Models::Operations::DeactivatePartnerResponseBody)

Errors

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 */*