Dub

Dub Partner Applications API

The Partner Applications API from Dub — 3 operation(s) for partner applications.

OpenAPI Specification

dub-partner-applications-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Dub Analytics Partner Applications API
  description: Dub is the modern link attribution platform for short links, conversion tracking, and affiliate programs.
  version: 0.0.1
  contact:
    name: Dub Support
    email: support@dub.co
    url: https://dub.co/support
  license:
    name: AGPL-3.0 license
    url: https://github.com/dubinc/dub/blob/main/LICENSE.md
servers:
- url: https://api.dub.co
  description: Production API
tags:
- name: Partner Applications
paths:
  /partners/applications:
    get:
      operationId: listPartnerApplications
      x-speakeasy-name-override: list
      summary: List all pending partner applications
      description: Retrieve a paginated list of pending applications for your partner program.
      tags:
      - Partner Applications
      security:
      - token: []
      parameters:
      - in: query
        name: country
        schema:
          description: A filter on the list based on the partner's `country` field.
          example: US
          type: string
        description: A filter on the list based on the partner's `country` field.
      - in: query
        name: groupId
        schema:
          description: A filter on the list based on the partner's `groupId` field.
          example: grp_123
          type: string
        description: A filter on the list based on the partner's `groupId` field.
      - in: query
        name: page
        schema:
          description: The page number for pagination.
          example: 1
          deprecated: false
          type: number
          minimum: 0
          exclusiveMinimum: true
        description: The page number for pagination.
      - in: query
        name: pageSize
        schema:
          default: 100
          description: The number of items per page.
          example: 50
          type: number
          minimum: 0
          exclusiveMinimum: true
          maximum: 100
        description: The number of items per page.
      responses:
        '200':
          description: The list of pending partner applications.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                    createdAt:
                      type: string
                    partner:
                      type: object
                      properties:
                        id:
                          type: string
                          description: The partner's unique ID on Dub.
                        name:
                          type: string
                          maxLength: 190
                          description: The partner's full legal name.
                        companyName:
                          nullable: true
                          description: If the partner profile type is a company, this is the partner's legal company name.
                          type: string
                          maxLength: 190
                        email:
                          nullable: true
                          description: The partner's email address. Should be a unique value across Dub.
                          type: string
                          maxLength: 190
                        image:
                          nullable: true
                          description: The partner's avatar image.
                          type: string
                        description:
                          description: A brief description of the partner and their background.
                          nullable: true
                          type: string
                          maxLength: 5000
                        country:
                          nullable: true
                          description: The partner's country (required for tax purposes).
                          type: string
                        groupId:
                          description: The partner's group ID on Dub.
                          nullable: true
                          type: string
                        status:
                          type: string
                          enum:
                          - pending
                          - approved
                          - rejected
                          - invited
                          - declined
                          - deactivated
                          - banned
                          - archived
                          description: The status of the partner's enrollment in the program.
                        website:
                          description: The partner's website URL (including the https protocol).
                          nullable: true
                          type: string
                        youtube:
                          description: The partner's YouTube channel username (e.g. `johndoe`).
                          nullable: true
                          type: string
                        twitter:
                          description: The partner's Twitter username (e.g. `johndoe`).
                          nullable: true
                          type: string
                        linkedin:
                          description: The partner's LinkedIn username (e.g. `johndoe`).
                          nullable: true
                          type: string
                        instagram:
                          description: The partner's Instagram username (e.g. `johndoe`).
                          nullable: true
                          type: string
                        tiktok:
                          description: The partner's TikTok username (e.g. `johndoe`).
                          nullable: true
                          type: string
                      required:
                      - id
                      - name
                      - companyName
                      - email
                      - image
                      - country
                      - status
                      additionalProperties: false
                    applicationFormData:
                      nullable: true
                      type: array
                      items:
                        type: object
                        properties:
                          label:
                            type: string
                          value:
                            nullable: true
                            type: string
                        required:
                        - label
                        - value
                        additionalProperties: false
                  required:
                  - id
                  - createdAt
                  - partner
                  - applicationFormData
                  additionalProperties: false
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          $ref: '#/components/responses/409'
        '410':
          $ref: '#/components/responses/410'
        '422':
          $ref: '#/components/responses/422'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
  /partners/applications/approve:
    post:
      operationId: approvePartnerApplication
      x-speakeasy-name-override: approve
      summary: Approve a partner application
      description: Approve a pending partner application to your program. The partner will be enrolled in the specified group and notified of the approval.
      tags:
      - Partner Applications
      security:
      - token: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                partnerId:
                  type: string
                  description: The ID of the partner to approve.
                groupId:
                  description: The ID of the group to assign the partner to. If not provided, the partner will be assigned to the group they applied to, or the program's default group if no application group is set.
                  nullable: true
                  type: string
              required:
              - partnerId
      responses:
        '200':
          description: The approved partner
          content:
            application/json:
              schema:
                type: object
                properties:
                  partnerId:
                    type: string
                    description: The ID of the approved partner.
                required:
                - partnerId
                additionalProperties: false
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          $ref: '#/components/responses/409'
        '410':
          $ref: '#/components/responses/410'
        '422':
          $ref: '#/components/responses/422'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
  /partners/applications/reject:
    post:
      operationId: rejectPartnerApplication
      x-speakeasy-name-override: reject
      summary: Reject a partner application
      description: Reject a pending partner application to your program. The partner will be notified via email that their application was not approved.
      tags:
      - Partner Applications
      security:
      - token: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                partnerId:
                  type: string
                  description: The ID of the partner to reject.
                rejectionReason:
                  description: The reason for rejecting the partner application. This will be shared with the partner via email.
                  type: string
                  enum:
                  - needsMoreDetail
                  - doesNotMeetRequirements
                  - notTheRightFit
                  - other
                rejectionNote:
                  description: Additional details about the rejection. This will be shared with the partner via email.
                  type: string
                  maxLength: 500
                reapplicationTimeframe:
                  default: standard
                  description: 'The mode for reapplying for the program. `instant`: The partner can reapply immediately. `standard`: The partner can reapply after 30 days. `never`: The partner can never reapply for the program. Defaults to `standard` if undefined.'
                  type: string
                  enum:
                  - instant
                  - standard
                  - never
                flagForFraud:
                  description: 'Whether to flag the partner for fraud review by the Dub team. Cannot be combined with `reapplicationTimeframe: instant`.'
                  type: boolean
                flagForFraudReason:
                  description: The reason for flagging the partner for fraud. Required when flagForFraud is true.
                  type: string
                  maxLength: 2000
              required:
              - partnerId
      responses:
        '200':
          description: The rejected partner
          content:
            application/json:
              schema:
                type: object
                properties:
                  partnerId:
                    type: string
                    description: The ID of the rejected partner.
                required:
                - partnerId
                additionalProperties: false
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          $ref: '#/components/responses/409'
        '410':
          $ref: '#/components/responses/410'
        '422':
          $ref: '#/components/responses/422'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
components:
  responses:
    '500':
      description: The server has encountered a situation it does not know how to handle.
      content:
        application/json:
          schema:
            x-speakeasy-name-override: InternalServerError
            type: object
            properties:
              error:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                    - internal_server_error
                    description: A short code indicating the error code returned.
                    example: internal_server_error
                  message:
                    x-speakeasy-error-message: true
                    type: string
                    description: A human readable explanation of what went wrong.
                    example: The requested resource was not found.
                  doc_url:
                    type: string
                    description: A link to our documentation with more details about this error code
                    example: https://dub.co/docs/api-reference/errors#internal-server_error
                required:
                - code
                - message
            required:
            - error
    '429':
      description: The user has sent too many requests in a given amount of time ("rate limiting")
      content:
        application/json:
          schema:
            x-speakeasy-name-override: RateLimitExceeded
            type: object
            properties:
              error:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                    - rate_limit_exceeded
                    description: A short code indicating the error code returned.
                    example: rate_limit_exceeded
                  message:
                    x-speakeasy-error-message: true
                    type: string
                    description: A human readable explanation of what went wrong.
                    example: The requested resource was not found.
                  doc_url:
                    type: string
                    description: A link to our documentation with more details about this error code
                    example: https://dub.co/docs/api-reference/errors#rate-limit_exceeded
                required:
                - code
                - message
            required:
            - error
    '422':
      description: The request was well-formed but was unable to be followed due to semantic errors.
      content:
        application/json:
          schema:
            x-speakeasy-name-override: UnprocessableEntity
            type: object
            properties:
              error:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                    - unprocessable_entity
                    description: A short code indicating the error code returned.
                    example: unprocessable_entity
                  message:
                    x-speakeasy-error-message: true
                    type: string
                    description: A human readable explanation of what went wrong.
                    example: The requested resource was not found.
                  doc_url:
                    type: string
                    description: A link to our documentation with more details about this error code
                    example: https://dub.co/docs/api-reference/errors#unprocessable-entity
                required:
                - code
                - message
            required:
            - error
    '403':
      description: The client does not have access rights to the content; that is, it is unauthorized, so the server is refusing to give the requested resource. Unlike 401 Unauthorized, the client's identity is known to the server.
      content:
        application/json:
          schema:
            x-speakeasy-name-override: Forbidden
            type: object
            properties:
              error:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                    - forbidden
                    description: A short code indicating the error code returned.
                    example: forbidden
                  message:
                    x-speakeasy-error-message: true
                    type: string
                    description: A human readable explanation of what went wrong.
                    example: The requested resource was not found.
                  doc_url:
                    type: string
                    description: A link to our documentation with more details about this error code
                    example: https://dub.co/docs/api-reference/errors#forbidden
                required:
                - code
                - message
            required:
            - error
    '404':
      description: The server cannot find the requested resource.
      content:
        application/json:
          schema:
            x-speakeasy-name-override: NotFound
            type: object
            properties:
              error:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                    - not_found
                    description: A short code indicating the error code returned.
                    example: not_found
                  message:
                    x-speakeasy-error-message: true
                    type: string
                    description: A human readable explanation of what went wrong.
                    example: The requested resource was not found.
                  doc_url:
                    type: string
                    description: A link to our documentation with more details about this error code
                    example: https://dub.co/docs/api-reference/errors#not-found
                required:
                - code
                - message
            required:
            - error
    '401':
      description: Although the HTTP standard specifies "unauthorized", semantically this response means "unauthenticated". That is, the client must authenticate itself to get the requested response.
      content:
        application/json:
          schema:
            x-speakeasy-name-override: Unauthorized
            type: object
            properties:
              error:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                    - unauthorized
                    description: A short code indicating the error code returned.
                    example: unauthorized
                  message:
                    x-speakeasy-error-message: true
                    type: string
                    description: A human readable explanation of what went wrong.
                    example: The requested resource was not found.
                  doc_url:
                    type: string
                    description: A link to our documentation with more details about this error code
                    example: https://dub.co/docs/api-reference/errors#unauthorized
                required:
                - code
                - message
            required:
            - error
    '400':
      description: The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing).
      content:
        application/json:
          schema:
            x-speakeasy-name-override: BadRequest
            type: object
            properties:
              error:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                    - bad_request
                    description: A short code indicating the error code returned.
                    example: bad_request
                  message:
                    x-speakeasy-error-message: true
                    type: string
                    description: A human readable explanation of what went wrong.
                    example: The requested resource was not found.
                  doc_url:
                    type: string
                    description: A link to our documentation with more details about this error code
                    example: https://dub.co/docs/api-reference/errors#bad-request
                required:
                - code
                - message
            required:
            - error
    '409':
      description: This response is sent when a request conflicts with the current state of the server.
      content:
        application/json:
          schema:
            x-speakeasy-name-override: Conflict
            type: object
            properties:
              error:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                    - conflict
                    description: A short code indicating the error code returned.
                    example: conflict
                  message:
                    x-speakeasy-error-message: true
                    type: string
                    description: A human readable explanation of what went wrong.
                    example: The requested resource was not found.
                  doc_url:
                    type: string
                    description: A link to our documentation with more details about this error code
                    example: https://dub.co/docs/api-reference/errors#conflict
                required:
                - code
                - message
            required:
            - error
    '410':
      description: This response is sent when the requested content has been permanently deleted from server, with no forwarding address.
      content:
        application/json:
          schema:
            x-speakeasy-name-override: InviteExpired
            type: object
            properties:
              error:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                    - invite_expired
                    description: A short code indicating the error code returned.
                    example: invite_expired
                  message:
                    x-speakeasy-error-message: true
                    type: string
                    description: A human readable explanation of what went wrong.
                    example: The requested resource was not found.
                  doc_url:
                    type: string
                    description: A link to our documentation with more details about this error code
                    example: https://dub.co/docs/api-reference/errors#invite-expired
                required:
                - code
                - message
            required:
            - error
  securitySchemes:
    token:
      type: http
      description: Default authentication mechanism
      scheme: bearer
      x-speakeasy-example: DUB_API_KEY