Server-to-Server Events

    Server-to-Server 방식으로 인앱/인웹 이벤트를 전송할 수 있습니다.


    인앱 이벤트 전송하기

    POST

    https://api.airbridge.io/events/v1/apps/{app_name}/mobile-app/9360

    Server-to-Server 방식으로 인앱 이벤트를 전송합니다.

    rate limit : 분당 1000회 요청으로 제한됩니다.

    유저 식별자 유형

    유저 식별자는 일관적인 기여, 포스트백, 코호트 집계 등에 필수적이며 이에 따라 수집 가능한 모든 식별자를 전송하는 것이 권장됩니다.

    1. Device ID

    Device ID는 SDK를 통한 데이터 패칭(Data Fetching)으로 수집할 수 있습니다.
    운영체제별로 수집 가능한 식별자는 다음과 같습니다.

    123456789101112131415161718
    {
        ... 
    
        "device": {
            "deviceUUID": "542177F1-5C23-438B-8088-82D34C94F6D7",
            "ifa": "542177F1-5C23-438B-8088-82D34C94F6D7",
            "ifv": "37EEC3E0-BF15-412E-ADBA-7D2E82E7A75F",
            "osName": "iOS",
            "osVersion": "18.0.1"
        },
        "user": {
            "externalUserID": "19443",
            "externalUserEmail": "example@ab180.co",
            "externalUserPhone": "821012341234"
        }
    
        ...
    }
    123456789101112131415161718
    {
        ...
    
        "device": {
            "deviceUUID": "2dfca632-86f3-4d22-9746-cdfe7985c471",
            "gaid": "2dfca632-86f3-4d22-9746-cdfe7985c471",
            "appSetID": "7c4681ef-97c6-4ebd-9c04-e22f584b3746",
            "osName": "Android",
            "osVersion": "5.0.2"
        },
        "user": {
            "externalUserID": "19443",
            "externalUserEmail": "example@ab180.co",
            "externalUserPhone": "821012341234"
        }
    
        ...
    }

    2. User ID(user.externalUserID)

    SDK를 통한 데이터 패칭이 불가능한 상황에서는, Device ID 없이 User ID만 전송할 수 있습니다.
    이 경우 Airbridge는 내부 데이터베이스를 이용해 해당 User ID와 연결된 Device ID를 기준으로 이벤트를 처리합니다.
    하지만 User ID와 연결된 Device ID가 없는 경우, 리포트의 정확도가 떨어질 수 있습니다.

    123456789101112
    {
        ...
        
        "user": {
            "externalUserID": "19443",
            "externalUserEmail": "example@ab180.co",
            "externalUserPhone": "821012341234"
        }
    
        ...
    }
    

    이벤트 예시

    123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
    {
        "eventUUID": "9b4b3e4e-2162-4ae6-8986-91ee84644262",
        "user": {
            "externalUserID": "19443",
            "externalUserEmail": "example@ab180.co",
            "externalUserPhone": "821012341234"
        },
        "device": {
            "deviceUUID": "2dfca632-86f3-4d22-9746-cdfe7985c471",
            "gaid": "2dfca632-86f3-4d22-9746-cdfe7985c471",
            "appSetID": "7c4681ef-97c6-4ebd-9c04-e22f584b3746",
            "deviceModel": "SM-0000",
            "manufacturer": "Samsung",
            "osName": "Android",
            "osVersion": "5.0.2",
            "locale": "ko-KR",
            "timezone": "Asia/Seoul",
            "orientation": "portrait",
            "screen": {
                "width": 123
            },
            "location": {
                "latitude": 120.103,
                "speed": "12"
            },
            "network": {
                "carrier": "SKTelecom",
                "cellular": true,
                "wifi": true
            }
        },
        "app": {
            "packageName": "com.ab180.co",
            "version": "1.2.3"
        },
        "eventData": {
            "goal": {
                "category": "airbridge.ecommerce.order.completed",
                "value": 159990,
                "semanticAttributes": {
                    "action": "christmas purchase",
                    "label": "chrismas sale",
                    "transactionID": "12939172",
                    "inAppPurchased": true,
                    "currency": "KRW",
                    "products": [
                        {
                            "quantity": 1,
                            "productID": "CH129",
                            "position": 0,
                            "name": "timeless trench coat",
                            "currency": "KRW",
                            "price": 159990
                        }
                    ]
                },
                "customAttributes": {
                    "season": "chirstmas",
                    "gift": true
                }
            }
        }
    }

    Request

    Headers

    Accept-Language
    string

    API 요청 및 결과 반환에 사용할 언어를 지정할 수 있습니다. ISO-639-1 포맷을 따릅니다.

    Content-Type
    string

    리소스의 미디어 타입을 나타냅니다. 기본값으로 application/json을 사용합니다.

    Authorization
    string

    API 요청에 사용하는 키값입니다. 키값 생성 및 조회 방법을 확인하여 획득할 수 있습니다.

    X-Forwarded-For
    필수string

    사용자의 IP를 X-Forwarded-For 헤더로 보낼 수 있습니다. X-Forwarded-For가 없는 경우 사용자의 IP(클라이언트 요청 IP)가 아닌 Server To Server API를 요청한 서버의 IP로 사용자 행동이 기록됩니다.

    ipv4(123.123.123.123), ipv6(2001:e60:87e3:81d4:cd57:5d52:ee2e:ff8d) 형태의 값을 받습니다.

    Path Params

    app_name
    필수string

    에어브릿지 앱 이름(App Name)

    Body Params

    eventUUID
    string

    고유 이벤트 ID.

    uuid4 포맷의 event uuid는 이벤트 고유 ID로 Deduplication에 사용되며, 넣지 않으면 event api에서 자동 생성하게 됩니다.

    eventTimestamp
    number

    이벤트 발생 시간. (기본값: 현재 시간)

    Millisecond 단위의 Unix Timestamp입니다. (Unixtime 기준 13자리)

    eventTimestamp가 이벤트 전송 시점 기준으로 24시간을 지나면 서버에서 처리하지 않습니다.

    user
    object

    유저에 관한 정보를 담을 수 있습니다.

    user.externalUserID
    조건부 필수string

    사용자 아이디.

    *device.deviceUUID를 전송하지 않는 경우 필수로 전송되어야합니다.

    user.externalUserEmail
    string

    사용자 이메일.

    user.externalUserPhone
    string

    사용자 전화번호.

    user.attributes
    object

    커스텀 사용자 속성.

    JSON 형태의 데이터를 받습니다.

    { "age_group": "30", "brand": "Nike" }

    device
    조건부 필수object

    디바이스 정보를 담습니다.

    *user.externalUserID를 전송하지 않는 경우 필수로 전송되어야합니다.

    device.deviceUUID
    조건부 필수stringnullable

    에어브릿지 디바이스 ID.

    GAID, IDFA, IDFV, Random Generated UUID, App Set ID를 받습니다.

    *user.externalUserID를 전송하지 않는 경우 필수로 전송되어야합니다.

    device.gaid
    stringnullable

    구글에서 제공하는 광고 ID

    device.ifa
    stringnullable

    애플에서 제공하는 광고 ID (IDFA)

    device.appSetID
    stringnullable

    구글에서 제공하는 AppSetID.

    device.ifv
    stringnullable

    애플에서 제공하는 IDFV.

    device.limitAdTracking
    boolean

    안드로이드 디바이스에 설정된 광고 추적 제한 설정값입니다. 이 값은 SDK에서 수집 후 전송해야 하며, 기본값은 true입니다. 값이 true인 경우, 연동된 광고 채널에 포스트백으로 공유되는 정보가 제한됩니다.

    device.deviceModel
    stringnullable

    디바이스 모델명.

    device.appTrackingTransparency
    integer

    App Tracking Transparency

    device.deviceIdentifier
    string

    iPhone11,2과 같은 구체적인 디바이스 식별자. (iPhone만 가능)

    device.manufacturer
    string

    디바이스 제조사.

    device.osName
    조건부 필수enum

    디바이스 운영체제 이름.

    *device.deviceUUID를 전송하는 경우 필수로 전송되어야합니다.

    ENUM VALUES
    Android

    안드로이드

    iOS

    iOS

    device.osVersion
    조건부 필수string

    디바이스 운영체제 버전.

    *device.deviceUUID를 전송하는 경우 필수로 전송되어야합니다.

    device.locale
    string

    BCP 47 언어 태그 형식의 디바이스 로케일 정보. (eg. ko-KR, en-US, ja-JP)

    Airbridge는 해당 필드로 이벤트의 국가, 언어 정보를 획득합니다.

    device.timezone
    string

    디바이스의 타임존. IANA 데이터베이스의 Timezone Name 형식으로 사용되어야합니다. (eg. Asia/Seoul, America/Los_Angeles, Asia/Tokyo)

    device.orientation
    string

    디바이스 방향.

    device.screen
    string

    디바이스 스크린 정보.

    device.screen.density
    string

    디바이스 해상도.

    device.screen.height
    number

    디바이스 스크린 높이.

    device.screen.width
    number

    디바이스 스크린 너비.

    device.alias
    object

    디지털 시장법(DMA)을 준수하기 위해 필요한 유저 응답 정보를 에어브릿지에 전송할 수 있습니다. DMA에 대한 자세한 내용은 에어브릿지 가이드를 참고해 주세요.

    device.alias.eea
    string

    DMA를 준수해야 하는 지역에 대한 정보. “0", “1"을 제외한 데이터는 처리되지 않습니다. 유저가 응답한 정보 또는 에어브릿지가 자동으로 수집하는 정보가 아닙니다. 실제 지역에 따라 알맞게 전송해 주세요.

    0이라면 다른 변수를 에어브릿지에 전송하지 않는 것을 권장합니다.

    • 0: DMA 준수와 관계 없는 지역.

    • 1: DMA를 준수해야 하는 지역.

    device.alias.adPersonalization
    string

    개인 맞춤형 광고(Personalized Ads) 제공을 위한 정보 수집에 대한 동의 설정. “0", “1"을 제외한 데이터는 처리되지 않습니다.

    • 0: 유저가 동의하지 않음.

    • 1: 유저가 동의함.

    device.alias.adUserData
    string

    광고에 사용하는 유저 데이터를 구글에 전송하는 것에 대한 동의 설정. “0", “1"을 제외한 데이터는 처리되지 않습니다.

    • 0: 유저가 동의하지 않음.

    • 1: 유저가 동의함.

    app
    필수object

    사용자의 앱 정보를 담습니다.

    app.packageName
    필수string

    구글 플레이 스토어 또는 애플 앱스토어에 등록된 앱의 패키지 이름. (Android: 패키지 이름, iOS: 번들 ID)

    app.version
    string

    앱 사용자가 사용하고 있는 앱의 버전.

    eventData
    필수object

    에어브릿지에 전송할 이벤트를 정의하는 객체입니다.

    eventData.goal
    필수object

    이벤트에 관한 정보를 담을 수 있는 객체입니다.
    카테고리, 액션, 라벨, 밸류, 시맨틱 어트리뷰트(Semantic Attributes)를 담을 수 있습니다.
    (관련 가이드)

    eventData.goal.category
    필수string

    에어브릿지 이벤트의 카테고리. 이벤트 이름과 동일합니다. (관련 가이드)

    eventData.goal.value
    number

    이벤트의 가치.

    상품 구매, 조회 이벤트의 상품 가격이나, Ad Impression의 광고 수익과 같은 정보를 표현할 수 있습니다.

    eventData.goal.customAttributes
    object

    커스텀 이벤트 속성.

    { "color": "red" }

    eventData.goal.semanticAttributes
    object

    Semantic Attributes. 에어브릿지가 수집할 데이터를 미리 정의한 속성입니다.

    eventData.goal.semanticAttributes.currency
    string

    결제 이벤트의 결제 통화. 이벤트 처리 과정에서 대시보드에 설정된 통화로 변환되므로 실제 결제에 사용된 통화를 사용해도 됩니다.

    eventData.goal.semanticAttributes.action
    string

    에어브릿지 이벤트의 첫 번째 프로퍼티

    eventData.goal.semanticAttributes.label
    string

    에어브릿지 이벤트의 두 번째 프로퍼티

    eventData.goal.semanticAttributes.productListID
    string

    상품 리스트 ID.

    eventData.goal.semanticAttributes.cartID
    string

    장바구니 ID.

    eventData.goal.semanticAttributes.transactionID
    string

    거래 고유번호.

    eventData.goal.semanticAttributes.inAppPurchased
    boolean

    In-app 구매 여부.

    • true : In-app 구매

    • false : In-app 구매 아님

    eventData.goal.semanticAttributes.products
    object[]

    상품에 대한 정보를 리스트로 담을 수 있습니다.

    eventData.goal.semanticAttributes.products[0].currency
    string

    상품 가격의 통화

    eventData.goal.semanticAttributes.products[0].productID
    string

    상품 ID.

    eventData.goal.semanticAttributes.products[0].price
    number

    상품 가격.

    eventData.goal.semanticAttributes.products[0].name
    string

    상품 이름.

    eventData.goal.semanticAttributes.products[0].position
    string

    상품 위치.

    eventData.goal.semanticAttributes.products[0].quantity
    integer

    상품 수량.

    Request
    123456
    curl -X POST 'https://api.airbridge.io/events/v1/apps/{app_name}/mobile-app/9360' \
      -H 'Accept-Language: ko' \
      -H 'Content-Type: application/json' \
      -H 'Authorization: Bearer {AIRBRIDGE-API-TOKEN}' \
      -H 'X-Forwarded-For: 2001:e60:87e3:81d4:cd57:5d52:ee2e:ff8d' \
      -d '{"eventUUID":"9b4b3e4e-2162-4ae6-8986-91ee84644262","user":{"externalUserID":"19443","externalUserEmail":"example@ab180.co","externalUserPhone":"821012341234"},"device":{"deviceUUID":"2dfca632-86f3-4d22-9746-cdfe7985c471","gaid":"2dfca632-86f3-4d22-9746-cdfe7985c471","ifa":"542177F1-5C23-438B-8088-82D34C94F6D7","appSetID":"7c4681ef-97c6-4ebd-9c04-e22f584b3746","ifv":"37EEC3E0-BF15-412E-ADBA-7D2E82E7A75F","limitAdTracking":true,"deviceModel":"LG-H542","appTrackingTransparency":0,"deviceIdentifier":"iPhone11,2","manufacturer":"Samsung","osName":"Android","osVersion":"5.0.2","locale":"ko-KR","timezone":"Asia/Seoul","orientation":"portrait","screen":{"width":123}},"app":{"packageName":"com.ab180.co","version":"1.2.3"},"eventData":{"goal":{"category":"airbridge.ecommerce.product.addedToCart","value":159990,"semanticAttributes":{"currency":"KRW","action":"shoes","label":"nike","transactionID":"12939172","inAppPurchased":true,"products":[{"currency":"KRW","productID":"30372425","price":10990,"name":"나이키 커스텀","position":"1","quantity":1}]}}}}'
    Payload
    12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
    {
      "eventUUID": "9b4b3e4e-2162-4ae6-8986-91ee84644262",
      "user": {
        "externalUserID": "19443",
        "externalUserEmail": "example@ab180.co",
        "externalUserPhone": "821012341234"
      },
      "device": {
        "deviceUUID": "2dfca632-86f3-4d22-9746-cdfe7985c471",
        "gaid": "2dfca632-86f3-4d22-9746-cdfe7985c471",
        "ifa": "542177F1-5C23-438B-8088-82D34C94F6D7",
        "appSetID": "7c4681ef-97c6-4ebd-9c04-e22f584b3746",
        "ifv": "37EEC3E0-BF15-412E-ADBA-7D2E82E7A75F",
        "limitAdTracking": true,
        "deviceModel": "LG-H542",
        "appTrackingTransparency": 0,
        "deviceIdentifier": "iPhone11,2",
        "manufacturer": "Samsung",
        "osName": "Android",
        "osVersion": "5.0.2",
        "locale": "ko-KR",
        "timezone": "Asia/Seoul",
        "orientation": "portrait",
        "screen": {
          "width": 123
        }
      },
      "app": {
        "packageName": "com.ab180.co",
        "version": "1.2.3"
      },
      "eventData": {
        "goal": {
          "category": "airbridge.ecommerce.product.addedToCart",
          "value": 159990,
          "semanticAttributes": {
            "currency": "KRW",
            "action": "shoes",
            "label": "nike",
            "transactionID": "12939172",
            "inAppPurchased": true,
            "products": [
              {
                "currency": "KRW",
                "productID": "30372425",
                "price": 10990,
                "name": "나이키 커스텀",
                "position": "1",
                "quantity": 1
              }
            ]
          }
        }
      }
    }

    Response

    200SUCCESS

    400ERROR

    잘못된 요청 시. (timestamp, sdk signature, app name 등)

    401ERROR

    잘못된 인증 토큰 사용 시.

    Response
    1234
    {
      "at": "2020-02-06 16:06:49",
      "data": "Event(9360) is successfully proccessed."
    }
    Response
    12345
    {
      "at": "2020-02-06 16:06:49",
      "error": "invalid_request",
      "ingested": 0
    }
    Response
    12345
    {
      "at": "2020-02-06 16:06:49",
      "error": "unauthorized",
      "ingested": 0
    }

    인웹 이벤트 전송하기

    POST

    https://api.airbridge.io/events/v1/apps/{app_name}/web/9320

    Server-to-Server 방식으로 인웹 이벤트를 전송합니다.

    rate limit : 분당 1000회 요청으로 제한됩니다.

    유저 식별자 유형

    유저 식별자는 일관적인 기여, 포스트백, 코호트 집계 등에 필수적이며 이에 따라 수집 가능한 모든 식별자를 전송하는 것이 권장됩니다.

    Cookie ID는 SDK를 통한 데이터 패칭(Data Fetching)으로 수집할 수 있습니다.
    이 때 Cookie ID와 함께 아래 데이터를 수집하여 Airbridge 서버로 전송해야 정확히 기여처리 될 수 있습니다.

    12345678910111213141516171819202122232425262728
    {
      ...
    
      "browser": {
        "clientID": "05609013-bb5a-4594-bbc3-832cb1b87072"
      },
      "eventData": {
        "shortID": "aef04",
        "trackingData": {
          "channel": "blog",
          "params": {
            "ad_creative": "ad_creative",
            "ad_group": "ad_group",
            "campaign": "ad_campaign",
            "content": "ad_content",
            "medium": "ad_medium",
            "tracking_template_id": "ad_tracking_template_id"
          }
        }
      },
      "user": {
        "externalUserID": "19443",
        "externalUserEmail": "example@ab180.co",
        "externalUserPhone": "821012341234"
      }
      
      ...
    }

    II. User ID(user.externalUserID)

    데이터 패칭이 불가능한 상황에서는, Cookie ID 없이 User ID만 전송할 수 있습니다.
    이 경우 Airbridge는 내부 데이터베이스를 이용해 해당 User ID와 연결된 Cookie ID를 기준으로 이벤트를 처리합니다.
    하지만 User ID와 연결된 Cookie ID가 없는 경우, 리포트의 정확도가 떨어질 수 있습니다.

    123456789101112
    {
        ...
        
        "user": {
            "externalUserID": "19443",
            "externalUserEmail": "example@ab180.co",
            "externalUserPhone": "821012341234"
        }
    
        ...
    }
    

    Request

    Headers

    Accept-Language
    string

    API 요청 및 결과 반환에 사용할 언어를 지정할 수 있습니다. ISO-639-1 포맷을 따릅니다.

    Content-Type
    string

    리소스의 미디어 타입을 나타냅니다. 기본값으로 application/json을 사용합니다.

    Authorization
    string

    API 요청에 사용하는 키값입니다. 키값 생성 및 조회 방법을 확인하여 획득할 수 있습니다.

    X-Forwarded-For
    필수string

    사용자의 IP를 X-Forwarded-For 헤더로 보낼 수 있습니다. X-Forwarded-For가 없는 경우 사용자의 IP(클라이언트 요청 IP)가 아닌 Server To Server API를 요청한 서버의 IP로 사용자 행동이 기록됩니다.

    ipv4(123.123.123.123), ipv6(2001:e60:87e3:81d4:cd57:5d52:ee2e:ff8d) 형태의 값을 받습니다.

    Path Params

    app_name
    필수string

    에어브릿지 앱 이름(App Name)

    Body Params

    eventUUID
    string

    고유 이벤트 ID.

    uuid4 포맷의 event uuid는 이벤트 고유 ID로 Deduplication에 사용되며, 넣지 않으면 event api에서 자동 생성하게 됩니다.

    eventTimestamp
    number

    이벤트 발생 시간. (기본값: 현재 시간)

    Millisecond 단위의 Unix Timestamp입니다. (Unixtime 기준 13자리)

    eventTimestamp가 이벤트 전송 시점 기준으로 24시간을 지나면 서버에서 처리하지 않습니다.

    user
    object

    유저에 관한 정보를 담을 수 있습니다.

    user.externalUserID
    조건부 필수string

    사용자 아이디.

    *device.deviceUUID를 전송하지 않는 경우 필수로 전송되어야합니다.

    user.externalUserEmail
    string

    사용자 이메일.

    user.externalUserPhone
    string

    사용자 전화번호.

    user.attributes
    object

    커스텀 사용자 속성.

    JSON 형태의 데이터를 받습니다.

    { "age_group": "30", "brand": "Nike" }

    browser
    object

    브라우저 정보를 담을 수 있습니다.

    browser.clientID
    필수string

    브라우저 쿠키 아이디. SDK에서 Fetching한 값이 필요합니다. 관련 문서

    Data Fetching이 불가능한 경우 User ID(user.externalUserID)를 전송하는 조건으로 생략할 수 있습니다.

    browser.userAgent
    string

    브라우저의 유저 에이전트.

    eventData
    필수object

    에어브릿지에 전송할 이벤트를 정의하는 객체입니다.

    eventData.shortID
    필수string

    어트리뷰션 캠페인 파라미터 ID. SDK Data Fetching을 통해 획득한 값을 전송하여야합니다.

    중요: 이 값은 처리나 여과 없이 에어브릿지 서버로 전송되어야합니다.

    Data Fetching이 불가능한 경우 User ID(user.externalUserID)를 전송하는 조건으로 생략할 수 있습니다.

    eventData.trackingData
    필수object

    에어브릿지의 어트리뷰션에 적용할 데이터를 담을 수 있습니다.

    eventData.trackingData.channel
    필수string

    어트리뷰션 캠페인 채널. SDK Data Fetching을 통해 획득한 값을 전송하여야합니다.

    중요: 이 값은 처리나 여과 없이 에어브릿지 서버로 전송되어야합니다. (eg. airbridge.websdk와 같은 값도 전송되어야합니다)

    Data Fetching이 불가능한 경우 User ID(user.externalUserID)를 전송하는 조건으로 생략할 수 있습니다.

    eventData.trackingData.params
    필수object

    어트리뷰션 캠페인 파라미터.

    {"medium: "posting", campaign: "blog", term: "airbridge", content: "martech-solution"}

    SDK Data Fetching을 통해 획득한 값을 전송하여야합니다.

    중요: 이 값은 처리나 여과 없이 에어브릿지 서버로 전송되어야합니다.

    Data Fetching이 불가능한 경우 User ID(user.externalUserID)를 전송하는 조건으로 생략할 수 있습니다.

    eventData.goal
    필수object

    이벤트에 관한 정보를 담을 수 있는 객체입니다.
    카테고리, 액션, 라벨, 밸류, 시맨틱 어트리뷰트(Semantic Attributes)를 담을 수 있습니다.
    (관련 가이드)

    eventData.goal.category
    필수string

    에어브릿지 이벤트의 카테고리. 이벤트 이름과 동일합니다. (관련 가이드)

    eventData.goal.value
    number

    이벤트의 가치.

    상품 구매, 조회 이벤트의 상품 가격이나, Ad Impression의 광고 수익과 같은 정보를 표현할 수 있습니다.

    eventData.goal.customAttributes
    object

    커스텀 이벤트 속성.

    { "color": "red" }

    eventData.goal.semanticAttributes
    object

    Semantic Attributes. 에어브릿지가 수집할 데이터를 미리 정의한 속성입니다.

    eventData.goal.semanticAttributes.action
    string

    에어브릿지 이벤트의 첫 번째 프로퍼티

    eventData.goal.semanticAttributes.label
    string

    에어브릿지 이벤트의 두 번째 프로퍼티

    eventData.goal.semanticAttributes.query
    string

    사용자 검색 쿼리.

    eventData.goal.semanticAttributes.productListID
    string

    상품 리스트 ID.

    eventData.goal.semanticAttributes.cartID
    string

    장바구니 ID.

    eventData.goal.semanticAttributes.transactionID
    string

    거래 고유번호.

    eventData.goal.semanticAttributes.inAppPurchased
    boolean

    In-app 구매 여부.

    • true : In-app 구매

    • false : In-app 구매 아님

    eventData.goal.semanticAttributes.currency
    string

    결제 이벤트의 결제 통화. 이벤트 처리 과정에서 대시보드에 설정된 통화로 변환되므로 실제 결제에 사용된 통화를 사용해도 됩니다.

    eventData.goal.semanticAttributes.products
    object[]

    상품에 대한 정보를 리스트로 담을 수 있습니다.

    eventData.goal.semanticAttributes.products[0].position
    string

    상품 위치.

    eventData.goal.semanticAttributes.products[0].productID
    string

    상품 ID.

    eventData.goal.semanticAttributes.products[0].name
    string

    상품 이름.

    eventData.goal.semanticAttributes.products[0].price
    number

    상품 가격.

    eventData.goal.semanticAttributes.products[0].quantity
    integer

    상품 수량.

    eventData.goal.semanticAttributes.products[0].currency
    string

    상품 가격의 통화

    Request
    123456
    curl -X POST 'https://api.airbridge.io/events/v1/apps/{app_name}/web/9320' \
      -H 'Accept-Language: ko' \
      -H 'Content-Type: application/json' \
      -H 'Authorization: Bearer {AIRBRIDGE-API-TOKEN}' \
      -H 'X-Forwarded-For: 2001:e60:87e3:81d4:cd57:5d52:ee2e:ff8d' \
      -d '{"eventUUID":"9b4b3e4e-2162-4ae6-8986-91ee84644262","user":{"externalUserID":"19443","externalUserEmail":"example@ab180.co","externalUserPhone":"821012341234"},"browser":{"clientID":"05609013-bb5a-4594-bbc3-832cb1b87072","userAgent":"Mozilla/5.0 (iPhone; CPU iPhone OS 11_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E302"},"eventData":{"shortID":"aef04","trackingData":{"channel":"blog"},"goal":{"category":"airbridge.ecommerce.product.addedToCart","value":159990,"semanticAttributes":{"action":"shoes","label":"nike","query":"나이키","transactionID":"12939172","inAppPurchased":true,"currency":"KRW","products":[{"position":"1","productID":"30372425","name":"나이키 커스텀","price":10990,"quantity":1,"currency":"KRW"}]}}}}'
    Payload
    12345678910111213141516171819202122232425262728293031323334353637383940
    {
      "eventUUID": "9b4b3e4e-2162-4ae6-8986-91ee84644262",
      "user": {
        "externalUserID": "19443",
        "externalUserEmail": "example@ab180.co",
        "externalUserPhone": "821012341234"
      },
      "browser": {
        "clientID": "05609013-bb5a-4594-bbc3-832cb1b87072",
        "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 11_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E302"
      },
      "eventData": {
        "shortID": "aef04",
        "trackingData": {
          "channel": "blog"
        },
        "goal": {
          "category": "airbridge.ecommerce.product.addedToCart",
          "value": 159990,
          "semanticAttributes": {
            "action": "shoes",
            "label": "nike",
            "query": "나이키",
            "transactionID": "12939172",
            "inAppPurchased": true,
            "currency": "KRW",
            "products": [
              {
                "position": "1",
                "productID": "30372425",
                "name": "나이키 커스텀",
                "price": 10990,
                "quantity": 1,
                "currency": "KRW"
              }
            ]
          }
        }
      }
    }

    Response

    200SUCCESS

    400ERROR

    잘못된 요청 시. (timestamp, sdk signature, app name 등)

    401ERROR

    잘못된 인증 토큰 사용 시.

    Response
    1234
    {
      "at": "2020-02-06 16:06:49",
      "data": "Event(9320) is successfully proccessed."
    }
    Response
    12345
    {
      "at": "2020-02-06 16:06:49",
      "error": "invalid_request",
      "ingested": 0
    }
    Response
    12345
    {
      "at": "2020-02-06 16:06:49",
      "error": "unauthorized",
      "ingested": 0
    }