Mavrck Incentives API

The Incentives API from Mavrck — 8 operation(s) for incentives.

OpenAPI Specification

mavrck-incentives-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 1.0.0
  description: Identify your most influential customers and activate them to drive more conversions on social.
  title: MAVRCK.IO Incentives API
servers:
- url: http://app.splashscore.com/v1
- url: https://app.splashscore.com/v1
security:
- apiKey: []
tags:
- name: Incentives
paths:
  /incentives/{incentiveId}/incentive-claims:
    get:
      x-handler: incentive_claims/incentive_claim_controller.js
      tags:
      - Incentives
      x-access:
      - administrator
      - root
      operationId: getIncentiveClaims
      summary: Fetch all of the claims for this incentive.
      parameters:
      - name: incentiveId
        in: path
        required: true
        schema:
          type: integer
      - name: excludeWinningClaims
        in: query
        required: false
        description: If the IncentiveClaim has an associated IncentiveWin, then it will not appear in the result set.
        schema:
          type: boolean
      - name: excludeWinningInfluencerClaims
        in: query
        required: false
        description: If an Influencer has an IncentiveWin, then none of their IncentiveClaims will appear in the result set.
        schema:
          type: boolean
      - name: uniqueInfluencers
        in: query
        required: false
        description: Only show one claim per influencer in the result set
        schema:
          type: boolean
      - $ref: '#/components/parameters/limitParam'
      - $ref: '#/components/parameters/offsetParam'
      - $ref: '#/components/parameters/orderByParam'
      responses:
        '200':
          description: An array of incentive claims.
          content:
            application/json:
              schema:
                type: object
                properties:
                  meta:
                    $ref: '#/components/schemas/ResponseMetadata'
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/IncentiveClaimDeprecated'
        '401':
          description: Session expired.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Invalid API key or resource not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Resource not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /incentives/{incentiveId}/winners:
    get:
      x-handler: incentives/incentive_winners_controller.js
      tags:
      - Incentives
      x-access:
      - administrator
      - root
      operationId: getWinners
      summary: Fetch the winners for this incentive.
      parameters:
      - name: incentiveId
        in: path
        required: true
        schema:
          type: integer
      - name: disqualified
        in: query
        description: Filter winners based on whether they have been disqualified from this incentive or not.
        schema:
          type: boolean
      responses:
        '200':
          description: An array of incentive winners.
          content:
            application/json:
              schema:
                type: object
                properties:
                  meta:
                    $ref: '#/components/schemas/ResponseMetadata'
                  data:
                    items:
                      $ref: '#/components/schemas/IncentiveWinner'
                    type: array
        '401':
          description: Session expired.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Invalid API Key or resource forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Resource non-existent.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    put:
      x-handler: incentives/incentive_winners_controller.js
      tags:
      - Incentives
      operationId: selectWinnersRandom
      x-access:
      - administrator
      - root
      summary: If the incentive is of a type where there are fewer winners than claims, this will determine the winners.
      parameters:
      - name: incentiveId
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: Empty object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmptyObject'
        '400':
          description: '''VALIDATION_ERROR'', either ''winners_already_selected'', ''action_group_not_expired'', or ''incentive_not_sweepstakes''.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Session expired.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Invalid API Key or resource forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Resource non-existent.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                selectionMethod:
                  type: string
                  description: Automatic or manual selection. Defaults to automatic if neither is specified.
                incentiveClaimIds:
                  type: array
                  items:
                    type: integer
                excludeWinnersSince:
                  type:
                  - string
                  - boolean
                  format: date-time
                  description: Filter winners based on whether they have recently won before since a given date-time.
  /incentives/{incentiveId}/winners/{id}/disqualification:
    put:
      x-handler: incentives/incentive_winner_disqualification_controller.js
      tags:
      - Incentives
      operationId: disqualifyUser
      x-access:
      - administrator
      - root
      summary: Disqualify an incentive winner.
      parameters:
      - name: incentiveId
        in: path
        required: true
        schema:
          type: integer
      - name: id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: Incentive winner successfully disqualified.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmptyObject'
        '400':
          description: Incentive winner cannot be disqualified. Occurs if 'reward_already_fulfilled'.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Session expired.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: API Key invalid or access denied.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Incentive or winner not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                disqualificationReason:
                  type: string
                  description: The reason why the influencer is being disqualified as an incentive winner.
  /incentives/{incentiveId}/winners/{id}/requalification:
    put:
      x-handler: incentives/incentive_winner_requalification_controller.js
      tags:
      - Incentives
      operationId: requalifyUser
      x-access:
      - administrator
      - root
      summary: Requalify a disqualified incentive winner.
      parameters:
      - name: incentiveId
        in: path
        required: true
        schema:
          type: integer
      - name: id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: Incentive winner successfully requalified.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmptyObject'
        '400':
          description: Incentive winner cannot be requalified. Occurs when no allocated winning slots remain.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Session expired.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: API Key invalid or access denied.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Incentive or winner not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/termsandconditions/template:
    get:
      operationId: getTermsAndConditionsTemplate
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TermsAndConditionsTemplate'
        '400':
          description: Invalid Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidateErrorJSON'
        '403':
          description: Invalid API Key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenError'
        '404':
          description: Incentive not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerError'
      tags:
      - Incentives
      parameters:
      - in: query
        name: type
        required: true
        schema:
          type: string
      - in: query
        name: unlockType
        required: true
        schema:
          type: string
  /v1/incentives/{id}/unlock:
    post:
      operationId: unlockIncentive
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdObject'
        '400':
          description: Missing Parameter
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidateErrorJSON'
        '403':
          description: Access forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenError'
        '404':
          description: The resource does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
        '500':
          description: Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerError'
      tags:
      - Incentives
      parameters:
      - in: path
        name: id
        required: true
        schema:
          type: number
          format: double
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IncentiveUnlockPostBody'
        required: true
  /v1/incentives:
    get:
      operationId: getAll
      responses:
        '200':
          description: A list of incentives
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IncentivesGetResponse'
        '400':
          description: Invalid/missing parameter
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidateErrorJSON'
        '403':
          description: Invalid API Key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenError'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerError'
      tags:
      - Incentives
    post:
      operationId: createIncentive
      responses:
        '200':
          description: Incentive URI
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IncentiveURI'
        '400':
          description: Invalid/missing parameter
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidateErrorJSON'
        '403':
          description: Invalid API Key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenError'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerError'
      tags:
      - Incentives
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateIncentivePostBody'
        required: true
  /v1/incentives/{id}:
    get:
      operationId: getById
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Invalid/missing parameter
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidateErrorJSON'
        '403':
          description: Invalid API Key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenError'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerError'
      tags:
      - Incentives
      parameters:
      - in: path
        name: id
        required: true
        schema:
          type: number
          format: double
    put:
      operationId: updateIncentive
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TSOAEmptyObject'
        '400':
          description: Invalid/missing parameter
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidateErrorJSON'
        '403':
          description: Invalid API Key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenError'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerError'
      tags:
      - Incentives
      parameters:
      - in: path
        name: id
        required: true
        schema:
          type: number
          format: double
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateIncentivePutBody'
        required: true
components:
  schemas:
    Error:
      type: object
      properties:
        type:
          type: string
          description: A key representing the type of error that has occurred.
        error:
          type: string
          description: A static description of the type of error.
        params:
          type: array
          description: For errors invovling parameters, this is an array containing the invalid parameters.
          items:
            type: string
        keys:
          type: array
          items:
            type:
            - string
            - object
        artifactLinks:
          $ref: '#/components/schemas/LinksDeprecated'
        parent:
          type: object
          properties:
            type:
              type: string
              description: A key representing the type of error generated by a request to an external API.
            error:
              type: string
              description: A static description of the parent error.
    ResponseMetadata:
      properties:
        limit:
          type: number
          format: double
        offset:
          type: number
          format: double
        status:
          type: string
          enum:
          - failure
          - success
        totalCount:
          type: number
          format: double
      type: object
      additionalProperties: false
    BonusTier:
      description: 'Swagger 2 representation of a tiered bonus entry.


        `upperBound` is required for `BOUNDED` tiers and must be omitted for

        `OPEN_ENDED` tiers. The bonus-tier validator enforces that conditional rule.


        Validation rules:

        - `bonusTiers` may contain at most 5 tiers.

        - Tiers must be sorted by `lowerBound`.

        - Adjacent tiers must be contiguous.

        - The final tier must be `OPEN_ENDED`.

        - `bonusTierCurrencyCode` is required when `bonusTiers` is non-empty.'
      properties:
        type:
          type: string
          enum:
          - BOUNDED
          - OPEN_ENDED
        lowerBound:
          type: number
          format: double
          description: Inclusive lower conversion/order bound for this payout tier. Must be non-negative.
        upperBound:
          type: number
          format: double
          description: Exclusive upper conversion/order bound for a `BOUNDED` tier.
        bonusAmount:
          type: number
          format: double
          description: Bonus payout amount in `bonusTierCurrencyCode`. Must be positive.
      required:
      - type
      - lowerBound
      - bonusAmount
      type: object
      additionalProperties: false
    IncentivesGetResponse:
      properties:
        meta:
          properties:
            totalCount:
              type: number
              format: double
          required:
          - totalCount
          type: object
        data:
          items:
            $ref: '#/components/schemas/Incentive'
          type: array
      required:
      - meta
      - data
      type: object
      additionalProperties: false
    UpdateIncentivePutBody:
      properties:
        actionGroupId:
          type: number
          format: double
        actionGroupStatus:
          type: string
        approximateRetailValue:
          type: number
          format: double
        cashPaymentAppId:
          type:
          - number
          - 'null'
          format: double
        claimedDynamicPromoCodes:
          type: number
          format: double
        claimedIncentivesCount:
          type: number
          format: double
        claimedIncentivesInfluencerCount:
          type: number
          format: double
        cost:
          type: number
          format: double
        disqualifiedWinnersCount:
          type: number
          format: double
        incentiveTitle:
          type: string
        incentiveStatus:
          type: string
        multipleClaims:
          type: boolean
        quantity:
          type: number
          format: double
        rewardId:
          type: string
        rewardWinType:
          type: string
        totalDynamicPromoCodes:
          type: number
          format: double
        type:
          type: string
        unlockEvent:
          $ref: '#/components/schemas/IncentiveUnlockEvent'
        unlockType:
          type: string
        winnersSelectedCount:
          type: number
          format: double
        endDate:
          type:
          - string
          - 'null'
        startDate:
          type:
          - string
          - 'null'
        costCurrencyCode:
          type: string
        valueCurrencyCode:
          type: string
        dynamicPromoCodesList:
          type: string
        dynamicPromoCodesToAdd:
          items:
            type: string
          type: array
        cashPaymentAppProvider:
          type:
          - string
          - 'null'
        giftCardEmailTemplateId:
          type:
          - string
          - 'null'
        giftCardOptionId:
          type:
          - number
          - 'null'
          format: double
        shopify:
          type: object
        bonusTierCurrencyCode:
          $ref: '#/components/schemas/NullableBonusTierCurrencyCode'
          description: Currency code used for all tiered bonus amounts. When updated, `bonusTiers` must also be provided.
        bonusTiers:
          items:
            $ref: '#/components/schemas/BonusTier'
          type:
          - array
          - 'null'
          description: Tiered bonus payout ladder. Must be sorted, contiguous, contain at most 5 tiers, and end with one `OPEN_ENDED` tier.
      required:
      - valueCurrencyCode
      type: object
      additionalProperties: false
    CreateIncentivePostBody:
      properties:
        incentiveTitle:
          type: string
        incentiveStatus:
          type: string
        quantity:
          type: number
          format: double
        image:
          type: string
        multipleClaims:
          type: boolean
        termsAndConditions:
          $ref: '#/components/schemas/IncentiveTermsAndConditions'
        dynamicPromoCodesToAdd:
          items:
            type: string
          type: array
        rewardWinType:
          $ref: '#/components/schemas/DBRewardWinType'
        approximateRetailValue:
          type: number
          format: double
        cost:
          type: number
          format: double
        valueCurrencyCode:
          $ref: '#/components/schemas/MavrckSupportedCurrencies'
        type:
          type: string
        unlockEvent:
          $ref: '#/components/schemas/IncentiveUnlockEvent'
        unlockType:
          type: string
        cashPaymentAppId:
          type:
          - number
          - 'null'
          format: double
        cashPaymentAppProvider:
          type:
          - string
          - 'null'
        giftCardEmailTemplateId:
          type:
          - string
          - 'null'
        giftCardOptionId:
          type:
          - number
          - 'null'
          format: double
        costCurrencyCode:
          type: object
        bonusTierCurrencyCode:
          $ref: '#/components/schemas/NullableBonusTierCurrencyCode'
          description: Currency code used for all tiered bonus amounts. Required when `bonusTiers` is non-empty.
        bonusTiers:
          items:
            $ref: '#/components/schemas/BonusTier'
          type:
          - array
          - 'null'
          description: Tiered bonus payout ladder. Must be sorted, contiguous, contain at most 5 tiers, and end with one `OPEN_ENDED` tier.
        shopify:
          type: object
      required:
      - incentiveTitle
      - quantity
      type: object
      additionalProperties: false
    IncentiveUnlockPostBody:
      properties:
        claims:
          type: number
          format: double
      type: object
      additionalProperties: false
    NotFoundError:
      properties:
        message:
          type: string
          enum:
          - Resource Not Found
        details:
          properties: {}
          additionalProperties:
            additionalProperties: true
          type: object
      required:
      - message
      - details
      type: object
      additionalProperties: false
    ForbiddenError:
      properties:
        message:
          type: string
          enum:
          - Access Forbidden
        details:
          properties: {}
          additionalProperties:
            additionalProperties: true
          type: object
      required:
      - message
      - details
      type: object
      additionalProperties: false
    LinksDeprecated:
      type: object
      x-access:
      - anonymous
      - influencer
      properties:
        normal:
          type: string
          description: A normal link to an entity.
        deep:
          type: string
          description: A deep link to the entity.
    ServerError:
      properties:
        message:
          type: string
          enum:
          - Server Error
        details:
          properties: {}
          additionalProperties:
            additionalProperties: true
          type: object
      required:
      - message
      - details
      type: object
      additionalProperties: false
    IncentiveClaimDeprecated:
      type: object
      properties:
        id:
          type: integer
          description: Unique identifier for the incentive claim.
        membershipId:
          type: integer
          x-access:
          - administrator
          - root
        globalUserId:
          type: integer
          x-access:
          - administrator
          - root
        promocode:
          type: string
          description: The issuance of a promo code. This is derived either from a static promo code configured as a property of the incentive resource or dynamically from a uploaded list of codes.
        createdAt:
          format: date-time
          type: string
        profilePictureLink:
          type: string
          x-access:
          - administrator
          - root
        firstName:
          type: string
          x-access:
          - administrator
          - root
        lastName:
          type: string
          x-access:
          - administrator
          - root
        email:
          type: string
          x-access:
          - administrator
          - root
        address:
          type: string
          x-access:
          - administrator
          - root
        age:
          type: integer
          x-access:
          - administrator
          - root
        gender:
          type: string
          x-access:
          - administrator
          - root
        facebookFriendCount:
          type: integer
          x-access:
          - administrator
          - root
        mostRecentRewardFulfilledAt:
          type: string
          format: date-time
          x-access:
          - administrator
          - root
        engagementCount:
          type: integer
        clickCount:
          type: integer
        conversionCount:
          type: integer
    IncentiveURI:
      properties:
        id:
          type: number
          format: double
      required:
      - id
      type: object
      additionalProperties: false
    TSOAEmptyObject:
      properties: {}
      type: object
      additionalProperties: false
    IncentiveWinner:
      type: object
      required:
      - id
      - isDisqualified
      properties:
        id:
          type: integer
          description: Unique identifier for an incentive win.
        winnerGlobalUserId:
          type: integer
        winnerMembershipId:
          type: integer
        winnerProfilePictureLink:
          type: string
        winnerFirstName:
          type: string
        winnerLastName:
          type: string
        winnerEmail:
          type: string
        winnerAddress:
          type: string
        winnerAge:
          type: integer
        winnerGender:
          type: string
        winnerFacebookFriendCount:
          type: integer
          description: The friend count of the winner's Facebook account, provided to help identify and disqualify fake profiles.
        winnerLastRewardWonTitle:
          type: string
          description: If this influencer has had one or more rewards fulfilled in the past, this gives the title of the reward most recently fulfilled.
        winnerLastRewardFulfilledAt:
          type: string
          format: date-time
          description: If this influencer has had one or more rewards fulfilled in the past, this gives the date & time in which the most recent fulfillment occurred.
        isDisqualified:
          type: boolean
          description: Indicates whether this incentive winner has been disqualified.
        disqualificationReason:
          type: string
          description: If a incentive winner has been disqualified, this is the reason why the disqualification occurred.
        rewardIsFulfilled:
          type: boolean
          description: Indicates whether the reward win has been fulfilled. An incentive winner cannot be disqualified if his/her reward has already been fulfilled.
    IncentiveUnlockEvent:
      type: string
      enum:
      - acceptance
      - completion
      - pending_shipment
      - pending_payment
    TermsAndConditionsTemplate:
      properties:
        customParams:
          items:
            type: string
          type: array
        template:
          type: string
      required:
      - customParams
      - template
      type: object
    DBRewardWinType:
      enum:
      - OTHER
      - CASH
      - PRODUCT
      - PROMO_CODE
      - GIFT_CARD
      - SHOPIFY_DISCOUNT
      type: string
    MavrckSupportedCurrencies:
      type: object
    IncentiveTermsAndConditions:
      properties:
        params:
          additionalProperties: false
          type: object
        preview:
          type: string
        template:
          type: string
      type: object
      additionalProperties: false
    ValidateErrorJSON:
      properties:
        message:
          type: string
          enum:
          - Validation failed
        details:
          properties: {}
          additionalProperties:
            additionalProperties: true
          type: object
      required:
      - message
      - details
      type: object
      additionalProperties: false
    Incentive:
      properties:
        actionGroupId:
          type: number
          format: double
        actionGroupStatus:
          type: string
        allocatedWinnersCount:
          type: number
          format: double
        approximateRetailValue:
          type: number
          format: double
        cashPaymentAppId:
          type: number
          format: double
        cashPaymentAppProvider:
          type:
          - string
          - 'null'
        claimedDynamicPromoCodes:
          type: number
          format: double
        claimedIncentivesCount:
          type: number
          format: double
        claimedIncentivesInfluencerCount:
          type: number
          format: double
        claims:
          items:
            $ref: '#/components/schemas/IncentiveClaim'
          type: array
        contestMetric:
          type: string
        cost:
          type: number
          format: double
        disqualifiedWinnersCount:
          type: number
          format: d

# --- truncated at 32 KB (36 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/mavrck/refs/heads/main/openapi/mavrck-incentives-api-openapi.yml