Attentive eCommerce API

Use the eCommerce API to trigger an event when a user views a product, adds a product to their shopping cart, or makes a purchase.

OpenAPI Specification

attentive-ecommerce-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  description: For any questions, reach out to your Attentive point of contact (if applicable) or [api@attentivemobile.com](mailto:api@attentivemobile.com).
  title: Attentive Access Token eCommerce API
  version: ''
servers:
- url: https://api.attentivemobile.com/v1
  description: Attentive API
security:
- bearerAuth: []
tags:
- name: eCommerce
  description: Use the eCommerce API to trigger an event when a user views a product, adds a product to their shopping cart, or makes a purchase.
  x-beta: false
paths:
  /events/ecommerce/product-view:
    x-external: true
    post:
      x-external: true
      x-emits-event: true
      security:
      - OAuthFlow:
        - ecommerce:write
      summary: Product view
      description: Make a call to this endpoint when a user views a product.
      operationId: postProductViewEvents
      tags:
      - eCommerce
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProductViewRequest'
      responses:
        '200':
          description: Ok
        '400':
          $ref: '#/components/responses/InvalidParameter'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/AccessDenied'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
  /events/ecommerce/add-to-cart:
    x-external: true
    post:
      x-external: true
      x-emits-event: true
      security:
      - OAuthFlow:
        - ecommerce:write
      summary: Add to cart
      description: Make a call to this endpoint when a user adds a product to their shopping cart.
      operationId: postAddToCartEvents
      tags:
      - eCommerce
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddToCartRequest'
      responses:
        '200':
          description: Ok
        '400':
          $ref: '#/components/responses/InvalidParameter'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/AccessDenied'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
  /events/ecommerce/purchase:
    x-external: true
    post:
      x-external: true
      x-emits-event: true
      security:
      - OAuthFlow:
        - ecommerce:write
      summary: Purchase
      description: Make a call to this endpoint when a user generates an order or purchase.
      operationId: postPurchaseEvents
      tags:
      - eCommerce
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PurchaseRequest'
      responses:
        '200':
          description: Ok
        '400':
          $ref: '#/components/responses/InvalidParameter'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/AccessDenied'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
components:
  schemas:
    AddToCartRequest:
      type: object
      properties:
        items:
          type: array
          description: List of items added to cart.
          items:
            $ref: '#/components/schemas/ProductRequest'
        occurredAt:
          type: string
          format: date-time
          description: 'Timestamp of when the action occurred in [ISO 8601 format](https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#date.and.time.format.examples). If the timestamp is older than 12 hours, it will not trigger any relevant journeys. If no timestamp is provided, it is assumed the event occurred when the endpoint is called.

            '
          example: 2021-03-30T14:38:29+0000
        user:
          $ref: '#/components/schemas/EventUser'
      required:
      - items
      - user
    ExternalIdentifiers:
      type: object
      description: 'clientUserId or another custom identifier.  This field is required if either phone or email is not provided.


        If using an external identifier instead of phone or email, the external identifier must first be associated with a phone or email using the Identity API.

        '
      properties:
        clientUserId:
          type: string
          description: (optional) Your primary ID for a user
        customIdentifiers:
          type: array
          description: (optional) Namespaced custom identifiers and their values.
          items:
            type: object
            title: ExternalIdentifiersCustomIdentifiers
            properties:
              name:
                type: string
              value:
                type: string
    SalesChannel:
      type: object
      properties:
        channelType:
          type: string
          enum:
          - WEB
          - IOS_APP
          - ANDROID_APP
          - IN_STORE
          - PHONE
          - OTHER
          - ''
          description: The type of sales channel.
    PurchaseRequest:
      type: object
      properties:
        items:
          type: array
          description: List of items purchased.
          items:
            $ref: '#/components/schemas/ProductRequest'
        orderId:
          type: string
        salesChannel:
          $ref: '#/components/schemas/SalesChannel'
        occurredAt:
          type: string
          format: date-time
          description: 'Timestamp of when the action occurred in [ISO 8601 format](https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#date.and.time.format.examples). If the timestamp is older than 12 hours, it will not trigger any relevant journeys. If no timestamp is provided, it is assumed the event occurred when the endpoint is called.

            '
          example: 2021-03-30T14:38:29+0000
        user:
          $ref: '#/components/schemas/EventUser'
      required:
      - items
      - user
    ProductRequest:
      type: object
      properties:
        productId:
          type: string
          description: 'A unique identifier for the product (i.e. "T-Shirt"). If you are providing a [Google Shopping Feed](https://support.google.com/merchants/answer/7052112?hl=en), this should be [item_group_id](https://support.google.com/merchants/answer/6324507). If you don''t have an [item_group_id](https://support.google.com/merchants/answer/6324507) in your feed, use [id](https://support.google.com/merchants/answer/6324405). If you are using [Shopify](https://help.shopify.com/en/manual/products), this should be Shopify product ID.

            '
          example: AB12345
        productVariantId:
          type: string
          description: 'A unique identifier for the product variant (i.e. "Medium Blue T-Shirt"). If you are providing a [Google Shopping Feed](https://support.google.com/merchants/answer/7052112?hl=en), this should be [id](https://support.google.com/merchants/answer/6324405). If you are using Shopify, this should be Shopify product Variant ID.

            '
          example: CD12345
        productImage:
          type: string
          description: 'A link to the image of the product. The image should not be larger than 500kb. This image will be used when sending MMS text messages.

            '
          example: http://my.cdn.com/products/new-product.png
        productUrl:
          type: string
          description: The URL for the product.
          example: http://my-store.com/products/shirts/my-shirt
        name:
          type: string
          description: The name of the product. This should be in a format that could be used directly in a message.
          example: T-Shirt
        price:
          type: array
          minItems: 1
          description: The price and currency of the product.
          items:
            $ref: '#/components/schemas/Price'
        quantity:
          type: integer
          description: The number of products.
          format: int64
          example: 1
      required:
      - productId
      - productVariantId
      - price
    Price:
      type: object
      properties:
        value:
          type: number
          description: The price of the product.
          example: 19.99
        currency:
          type: string
          description: The currency used for the price in [ISO 4217 format](https://www.iso.org/iso-4217-currency-codes.html).
          example: USD
          default: USD
      required:
      - value
    EventUser:
      type: object
      description: 'User associated with the action. Note that this is a visitor to the site and does not need to be actively subscribed to Attentive.

        Phone, email, or an external identifier (clientUserId or another custom identifier) are required

        '
      properties:
        phone:
          type: string
          description: Phone number of the user associated with the action. [E.164 format](https://en.wikipedia.org/wiki/E.164) is required. This field is required if either email or an externalIdentifier is not provided.
          example: '+13115552368'
        email:
          type: string
          description: Email of the user associated with the action. This field is required if either phone or an externalIdentifier is not provided.
          example: test@gmail.com
        externalIdentifiers:
          $ref: '#/components/schemas/ExternalIdentifiers'
      additionalProperties: false
      minProperties: 1
    ProductViewRequest:
      type: object
      properties:
        items:
          type: array
          description: List of items viewed.
          items:
            $ref: '#/components/schemas/ProductRequest'
        occurredAt:
          type: string
          format: date-time
          description: 'Timestamp of when the action occurred in [ISO 8601 format](https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#date.and.time.format.examples). If the timestamp is older than 12 hours, it will not trigger any relevant journeys. If no timestamp is provided, it is assumed the event occurred when the endpoint is called.

            '
          example: 2021-03-30T14:38:29+0000
        user:
          $ref: '#/components/schemas/EventUser'
      required:
      - items
      - user
  responses:
    InternalError:
      description: Internal Server Error
    InvalidParameter:
      description: Invalid parameter in request query or body
    Unauthorized:
      description: Unauthorized
    TooManyRequests:
      description: The user has sent too many requests in a given amount of time
    NotFound:
      description: The specified resource was not found
    AccessDenied:
      description: Access Denied
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
    OAuthFlow:
      type: oauth2
      description: This API uses OAuth 2 with the authorization code grant flow. [More info](https://docs.attentivemobile.com/pages/authentication/)
      flows:
        authorizationCode:
          authorizationUrl: https://ui-devel.attentivemobile.com/integrations/oauth-install?client_id={clientId}&redirect_uri={redirectUri}&scope={scope}
          tokenUrl: https://api.attentivemobile.com/v1/authorization-codes/tokens
          scopes:
            attributes:write: read and write custom attributes
            subscriptions:write: read and write subscriptions
            events:write: read and write custom events
            ecommerce:write: read and write ecommerce events
            segments:write: read and write segments
            segments:read: read segments
x-readme:
  explorer-enabled: false