از API گزارش های سفارشی ناهمزمان استفاده کنید

شما در حال مشاهده مستندات Apigee Edge هستید.
به مستندات Apigee X مراجعه کنید .
اطلاعات

Edge Analytics مجموعه‌ای غنی از داشبوردهای تعاملی، تولیدکننده‌های گزارش سفارشی و قابلیت‌های مرتبط را ارائه می‌دهد. با این حال، این ویژگی‌ها به صورت تعاملی در نظر گرفته شده‌اند: شما یک درخواست API یا UI ارسال می‌کنید و درخواست تا زمانی که سرور تحلیلی پاسخی ارائه دهد، مسدود می‌شود.

با این حال، درخواست‌های تحلیلی اگر خیلی طول بکشند تا تکمیل شوند، می‌توانند دچار وقفه شوند. اگر یک درخواست پرس‌وجو نیاز به پردازش حجم زیادی از داده‌ها (مثلاً صدها گیگابایت) داشته باشد، ممکن است به دلیل وقفه، با شکست مواجه شود.

پردازش پرس‌وجوی ناهمزمان به شما امکان می‌دهد برای مجموعه داده‌های بسیار بزرگ پرس‌وجو کنید و نتایج را بعداً بازیابی کنید. وقتی متوجه شدید که پرس‌وجوهای تعاملی شما به پایان رسیده است، می‌توانید از یک پرس‌وجوی آفلاین استفاده کنید. برخی از موقعیت‌هایی که پردازش پرس‌وجوی ناهمزمان می‌تواند جایگزین خوبی باشد عبارتند از:

  • تجزیه و تحلیل و ایجاد گزارش‌هایی که فواصل زمانی طولانی را در بر می‌گیرند.
  • تجزیه و تحلیل داده‌ها با انواع ابعاد گروه‌بندی و سایر محدودیت‌هایی که به پرس‌وجو پیچیدگی می‌افزایند.
  • مدیریت پرس‌وجوها زمانی که متوجه می‌شوید حجم داده‌ها برای برخی از کاربران یا سازمان‌ها به طور قابل توجهی افزایش یافته است.

این سند نحوه شروع یک پرس‌وجوی ناهمزمان با استفاده از API را شرح می‌دهد. همچنین می‌توانید از رابط کاربری، همانطور که در «اجرای یک گزارش سفارشی» توضیح داده شده است، استفاده کنید.

مقایسه API گزارش‌ها با رابط کاربری

ایجاد و مدیریت گزارش‌های سفارشی، نحوه استفاده از رابط کاربری Edge برای ایجاد و اجرای گزارش‌های سفارشی را شرح می‌دهد. می‌توانید این گزارش‌ها را به صورت همزمان یا غیرهمزمان اجرا کنید.

بیشتر مفاهیم مربوط به تولید گزارش‌های سفارشی با رابط کاربری، در مورد استفاده از API نیز صدق می‌کند. یعنی، هنگام ایجاد گزارش‌های سفارشی با API، شما معیارها ، ابعاد و فیلترهای داخلی Edge و هر معیار سفارشی که با استفاده از سیاست StatisticsCollector ایجاد کرده‌اید را مشخص می‌کنید.

تفاوت‌های عمده بین گزارش‌های تولید شده در رابط کاربری و API این است که گزارش‌های تولید شده با API به جای گزارش تصویری نمایش داده شده در رابط کاربری، در فایل‌های CSV یا JSON (با خط جدید) نوشته می‌شوند.

محدودیت‌های هیبرید Apigee

Apigee hybrid محدودیت حجمی ۳۰ مگابایتی را برای مجموعه داده‌های نتیجه اعمال می‌کند.

چگونه یک کوئری تحلیلی ناهمزمان ایجاد کنیم

شما می‌توانید کوئری‌های تحلیلی ناهمزمان را در سه مرحله انجام دهید:

  1. استعلام را ارسال کنید .

  2. وضعیت درخواست را دریافت کنید .

  3. نتایج پرس و جو را بازیابی کنید .

مرحله 1. ارسال درخواست

شما باید یک درخواست POST به API مربوط به /queries ارسال کنید. این API به Edge می‌گوید که درخواست شما را در پس‌زمینه پردازش کند. اگر ارسال پرس‌وجو موفقیت‌آمیز باشد، API یک وضعیت 201 و یک شناسه (ID) برمی‌گرداند که شما در مراحل بعدی برای ارجاع به پرس‌وجو از آن استفاده خواهید کرد.

برای مثال:

curl -X POST -H "Content-Type:application/json"
https://api.enterprise.apigee.com/v1/organizations/myorg/environments/myenv/queries -d @json-query-file
-u orgAdminEmail:password

بدنه درخواست، شرحی JSON از پرس‌وجو است. در بدنه JSON، معیارها ، ابعاد و فیلترهایی که گزارش را تعریف می‌کنند، مشخص کنید.

در زیر نمونه‌ای از فایل json-query-file نشان داده شده است:

{ 
   "metrics":  [
     {
         "name": "message_count",
         "function": "sum",
         "alias": "sum_txn"
    }
        ],
    "dimensions": ["apiproxy"],
    "timeRange": "last24hours",
    "limit": 14400,
    "filter":"(message_count ge 0)"         
}

برای شرح کامل سینتکس بدنه درخواست ، به «درباره بدنه درخواست» در زیر مراجعه کنید.

نمونه پاسخ:

توجه داشته باشید که شناسه پرس‌وجو 9cfc0d85-0f30-46d6-ae6f-318d0cb961bd در پاسخ گنجانده شده است. علاوه بر وضعیت HTTP 201، state enqueued به معنای موفقیت‌آمیز بودن درخواست است.

HTTP/1.1 201 Created

{  
  "self":"/organizations/myorg/environments/myenv/queries/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd",
  "created":"2018-05-10T07:11:10Z",
  "state":"enqueued",
  "error":"false",
}

مرحله ۲. دریافت وضعیت درخواست

برای درخواست وضعیت پرس‌وجو، یک فراخوانی GET انجام دهید. شما شناسه پرس‌وجوی (query ID) که از فراخوانی POST برگردانده شده است را ارائه می‌دهید. برای مثال:

curl -X GET -H "Content-Type:application/json"
https://api.enterprise.apigee.com/v1/organizations/myorg/environments/myenv/queries/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd
-u email:password

نمونه پاسخ‌ها:

اگر کوئری هنوز در حال انجام باشد، پاسخی مانند این دریافت خواهید کرد که در آن state running است:

{
    "self": "/organizations/myorg/environments/myenv/queries/1577884c-4f48-4735-9728-5da4b05876ab",
    "state": "running",
    "created": "2018-02-23T14:07:27Z",
    "updated": "2018-02-23T14:07:54Z"
}

پس از اینکه کوئری با موفقیت به پایان رسید، پاسخی مانند این خواهید دید که در آن state روی completed تنظیم شده است:

{
      "self": "/organizations/myorg/environments/myenv/queries/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd",
      "state": "completed",
      "result": {
        "self": "/organizations/myorg/environments/myenv/queries/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd/result",
        "expires": "2017-05-22T14:56:31Z"
      },
      "resultRows": 1,
      "resultFileSize": "922KB",
      "executionTime": "11 sec",
      "created": "2018-05-10T07:11:10Z",
      "updated": "2018-05-10T07:13:22Z"
}

مرحله ۳. بازیابی نتایج پرس‌وجو

پس از completed وضعیت پرس‌وجو، می‌توانید از API مربوط به دریافت نتایج برای بازیابی نتایج استفاده کنید، که در آن شناسه پرس‌وجو بار دیگر 9cfc0d85-0f30-46d6-ae6f-318d0cb961bd است.

curl -X GET -H "Content-Type:application/json" -O -J https://api.enterprise.apigee.com/v1/organizations/myorg/environments/myenv/queries/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd/result
-u email:password

برای بازیابی فایل دانلود شده، باید ابزاری را که استفاده می‌کنید پیکربندی کنید تا فایل دانلود شده را در سیستم شما ذخیره کند. برای مثال:

  • اگر از cURL استفاده می‌کنید، می‌توانید از گزینه‌های -O -J ، همانطور که در بالا نشان داده شده است، استفاده کنید.

  • اگر از Postman استفاده می‌کنید، باید دکمه‌ی ذخیره و دانلود را انتخاب کنید. در این حالت، یک فایل زیپ به نام response دانلود می‌شود.

  • اگر از مرورگر کروم استفاده می‌کنید، دانلود به صورت خودکار انجام می‌شود.

اگر درخواست موفقیت‌آمیز باشد و یک مجموعه نتیجه غیر صفر وجود داشته باشد، نتیجه به صورت یک فایل فشرده JSON (با خط جدید) برای کلاینت دانلود می‌شود. نام فایل دانلود شده به صورت زیر خواهد بود:

OfflineQueryResult-<query-id>.zip

برای مثال:

OfflineQueryResult-9cfc0d85-0f30-46d6-ae6f-318d0cb961bd.zip

فایل زیپ حاوی یک فایل آرشیو .gz از نتایج JSON است. برای دسترسی به فایل JSON، فایل دانلود را از حالت فشرده خارج کنید، سپس از دستور gzip برای استخراج فایل JSON استفاده کنید:

unzip OfflineQueryResult-9cfc0d85-0f30-46d6-ae6f-318d0cb961bd.zip
gzip -d QueryResult-9cfc0d85-0f30-46d6-ae6f-318d0cb961bd-000000000000.json.gz

درباره بدنه درخواست

این بخش هر یک از پارامترهایی را که می‌توانید در بدنه درخواست JSON برای یک پرس‌وجو استفاده کنید، شرح می‌دهد. برای جزئیات بیشتر در مورد معیارها و ابعادی که می‌توانید در پرس‌وجوی خود استفاده کنید، به مرجع Analytics مراجعه کنید.

{  
   "metrics":[  
      {  
        "name":"metric_name",
        "function":"aggregation_function",
        "alias":"metric_dispaly_name_in_results",
        "operator":"post_processing_operator",
        "value":"post_processing_operand"
      },
   ...
   ],
   "dimensions":[  
      "dimension_name",
      ...
   ],
   "timeRange":"time_range",
   "limit":results_limit,
   "filter":"filter",
   "groupByTimeUnit": "grouping",
   "outputFormat": "format",
   "csvDelimiter": "delimiter"
}
ملک توضیحات الزامی است؟
metrics

آرایه‌ای از معیارها. می‌توانید یک یا چند معیار را برای یک پرس‌وجو مشخص کنید که هر معیار شامل آن باشد. فقط نام معیار مورد نیاز است:

  • name : (الزامی) نام معیار، همانطور که در جدول metrics تعریف شده است.
  • function : (اختیاری) تابع تجمیع به صورت avg ، min ، max یا sum .

    همه معیارها از همه توابع تجمیع پشتیبانی نمی‌کنند. مستندات مربوط به معیارها شامل جدولی است که نام معیار و تابع ( avg ، min ، max ، sum ) پشتیبانی شده توسط آن معیار را مشخص می‌کند.

  • alias : (اختیاری) نام ویژگی حاوی داده‌های معیار در خروجی. در صورت حذف، به طور پیش‌فرض نام معیار به همراه نام تابع تجمیع در نظر گرفته می‌شود.
  • operator : (اختیاری) عملیاتی که پس از محاسبه مقدار معیار، روی آن انجام می‌شود. با ویژگی value کار می‌کند. عملیات پشتیبانی شده عبارتند از: + - / % * .
  • value : (اختیاری) مقداری که توسط operator مشخص شده به معیار محاسبه شده اعمال می‌شود.

ویژگی‌های operator و value عملیات پس‌پردازشی انجام شده روی معیار را تعریف می‌کنند. برای مثال، اگر معیار response_processing_latency را مشخص کنید، معیار، میانگین تأخیر پردازش پاسخ را با واحد میلی‌ثانیه برمی‌گرداند. برای تبدیل واحدها به ثانیه، operator را روی "/" و value روی ”1000.0“ تنظیم کنید:

"metrics":[  
  {  
    "name":"response_processing_latency",
    "function":"avg",
    "alias":"average_response_time_in_seconds",
    "operator":"/",
    "value":"1000"
  }
]

برای اطلاعات بیشتر، به مرجع معیارها، ابعاد و فیلترهای تحلیلی مراجعه کنید.

خیر
dimensions آرایه‌ای از ابعاد برای گروه‌بندی معیارها. برای اطلاعات بیشتر، به لیست ابعاد پشتیبانی‌شده مراجعه کنید. می‌توانید چندین بعد را مشخص کنید. خیر
timeRange محدوده زمانی برای پرس و جو.

می‌توانید از رشته‌های از پیش تعریف شده زیر برای مشخص کردن محدوده زمانی استفاده کنید:

  • last60minutes
  • last24hours
  • last7days

یا می‌توانید timeRange به عنوان ساختاری که مهرهای زمانی شروع و پایان را در قالب ISO توصیف می‌کند، مشخص کنید: yyyy-mm-dd T hh:mm:ss Z برای مثال:

"timeRange": {
    "start": "2018-07-29T00:13:00Z",
    "end": "2018-08-01T00:18:00Z"
}
بله
limit حداکثر تعداد ردیف‌هایی که می‌توانند در نتیجه بازگردانده شوند. خیر
filter عبارت بولی که می‌تواند برای فیلتر کردن داده‌ها استفاده شود. عبارات فیلتر را می‌توان با استفاده از عبارات AND/OR ترکیب کرد و برای جلوگیری از ابهام باید کاملاً درون پرانتز قرار گیرند. برای اطلاعات بیشتر در مورد فیلدهای موجود برای فیلتر کردن، به مرجع معیارها، ابعاد و فیلترهای Analytics مراجعه کنید. برای اطلاعات بیشتر در مورد توکن‌هایی که برای ساخت عبارات فیلتر استفاده می‌کنید، به نحو عبارت فیلتر مراجعه کنید. خیر
groupByTimeUnit واحد زمانی مورد استفاده برای گروه‌بندی مجموعه نتایج. مقادیر معتبر عبارتند از: second ، minute ، hour ، day ، week یا month .

اگر یک پرس‌وجو شامل groupByTimeUnit باشد، نتیجه یک تجمیع بر اساس واحد زمانی مشخص شده خواهد بود و مهر زمانی حاصل شامل دقت میلی‌ثانیه نمی‌شود. اگر یک پرس‌وجو groupByTimeUnit را حذف کند، مهر زمانی حاصل شامل دقت میلی‌ثانیه خواهد بود.

خیر
outputFormat قالب خروجی. مقادیر معتبر عبارتند از: csv یا json . پیش‌فرض‌ها json هستند که معادل JSON با خط جدید است.

نکته : جداکننده‌ی خروجی CSV را با استفاده از ویژگی csvDelimiter پیکربندی کنید.

خیر
csvDelimiter جداکننده‌ای که در فایل CSV استفاده می‌شود، در صورتی که outputFormat روی csv تنظیم شده باشد. پیش‌فرض آن کاراکتر , (کاما) است. کاراکترهای جداکننده پشتیبانی‌شده شامل کاما ( , )، پایپ ( | ) و تب ( \t ) هستند. خیر

نحو عبارت فیلتر

این بخش مرجع، توکن‌هایی را که می‌توانید برای ساخت عبارات فیلتر در بدنه درخواست استفاده کنید، شرح می‌دهد. برای مثال، عبارت زیر از توکن "ge" (بزرگتر یا مساوی) استفاده می‌کند:

"filter":"(message_count ge 0)"
توکن توضیحات مثال‌ها
in در فهرست قرار دهید
(apiproxy in 'ethorapi','weather-api')

(apiproxy in 'ethorapi')

(apiproxy in 'Search','ViewItem')

(response_status_code in 400,401,500,501)

نکته: رشته‌ها باید داخل گیومه باشند.

notin حذف از لیست
(response_status_code notin 400,401,500,501)
eq برابر با ( ==)
(response_status_code eq 504)

(apiproxy eq 'non-prod')
ne برابر نیست با (!=)
(response_status_code ne 500)

(apiproxy ne 'non-prod')
gt بزرگتر از ( >)
(response_status_code gt 500)
lt کمتر از ( <)
(response_status_code lt 500)
ge بزرگتر یا مساوی ( >=)
(target_response_code ge 400)
le کوچکتر یا مساوی ( <=)
(target_response_code le 300)
like اگر الگوی رشته با الگوی ارائه شده مطابقت داشته باشد، مقدار true را برمی‌گرداند.

مثال سمت راست با موارد زیر مطابقت دارد:

- هر مقداری که کلمه «خرید» داشته باشد

- هر مقداری که به 'item' ختم می‌شود

- هر مقداری که با «تولید» شروع شود

- هر مقداری که با ۴ شروع شود، توجه داشته باشید که response_status_code عددی است.

(apiproxy like '%buy%')

(apiproxy like '%item')

(apiproxy like 'Prod%')
not like اگر الگوی رشته با الگوی ارائه شده مطابقت داشته باشد، مقدار false را برمی‌گرداند.
(apiproxy not like '%buy%')

(apiproxy not like '%item')

(apiproxy not like 'Prod%')
and به شما امکان می‌دهد از منطق «و» برای گنجاندن بیش از یک عبارت فیلتر استفاده کنید. فیلتر شامل داده‌هایی است که تمام شرایط را برآورده می‌کنند.
(target_response_code gt 399) and (response_status_code ge 400)
or به شما امکان می‌دهد از منطق «یا» برای ارزیابی عبارات فیلتر مختلف استفاده کنید. فیلتر شامل داده‌هایی است که حداقل یکی از شرایط را برآورده می‌کنند.
(response_size ge 1000) or (response_status_code eq 500)

محدودیت‌ها و پیش‌فرض‌ها

در زیر لیستی از محدودیت‌ها و پیش‌فرض‌های مربوط به ویژگی پردازش پرس‌وجوی ناهمزمان آمده است.

محدودیت پیش‌فرض توضیحات
استعلام محدودیت تماس توضیحات را ببینید شما می‌توانید تا هفت تماس در ساعت با API مدیریت /queries برای شروع یک گزارش ناهمزمان برقرار کنید. اگر از سهمیه تماس تجاوز کنید، API یک پاسخ HTTP 429 برمی‌گرداند.
محدودیت پرس‌وجوی فعال ۱۰ شما می‌توانید تا 10 پرس‌وجوی فعال برای یک سازمان/محیط داشته باشید.
آستانه زمان اجرای پرس و جو ۶ ساعت درخواست‌هایی که بیش از ۶ ساعت طول بکشند، لغو خواهند شد.
محدوده زمانی پرس و جو توضیحات را ببینید حداکثر بازه زمانی مجاز برای یک پرس و جو ۳۶۵ روز است.
محدودیت ابعاد و معیارها ۲۵ حداکثر تعداد ابعاد و معیارهایی که می‌توانید در بار داده‌ی پرس‌وجو مشخص کنید.

درباره نتایج جستجو

در زیر نمونه‌ای از نتیجه در قالب JSON آمده است. خروجی شامل ردیف‌های JSON است که با یک جداکننده خط جدید از هم جدا شده‌اند:

{"message_count":"10209","apiproxy":"guest-auth-v3","hour":"2018-08-07 19:26:00 UTC"}
{"message_count":"2462","apiproxy":"carts-v2","hour":"2018-08-06 13:16:00 UTC"}    
…

شما می‌توانید نتایج را از URL تا زمان انقضای داده‌ها در مخزن دریافت کنید. به بخش محدودیت‌ها و پیش‌فرض‌ها مراجعه کنید.

مثال‌ها

مثال ۱: مجموع تعداد پیام‌ها

پرس و جو برای مجموع تعداد پیام‌ها در ۶۰ دقیقه گذشته.

پرس و جو

curl -X POST -H "Content-Type: application/json" -H "Accept: application/json"
https://api.enterprise.apigee.com/v1/organizations/myorg/environments/test/queries"
-d @last60minutes.json
-u orgAdminEmail:password

درخواست بدنه از last60minutes.json

{  
   "metrics":[  
      {  
         "name":"message_count",
         "function":"sum"
      }
   ],
   "dimensions":[  
      "apiproxy"
   ],
   "groupByTimeUnit":"minute",
   "limit":1000,
   "timeRange":"last60minutes"
}

مثال ۲: محدوده زمانی سفارشی

پرس و جو با استفاده از یک محدوده زمانی سفارشی.

پرس و جو

curl -X POST -H "Content-Type: application/json" -H "Accept: application/json"
https://api.enterprise.apigee.com/v1 /organizations/myorg/environments/test/queries"
-d @last60minutes.json
-u orgAdminEmail:password

درخواست بدنه از last60minutes.json

{  
   "metrics":[  
      {  
         "name":"message_count",
         "function":"sum"
      },
      {  
         "name":"total_response_time",
         "function":"avg",
         "alias":"average_response_time"
      }
   ],
   "dimensions":[  
      "apiproxy"
   ],
   "groupByTimeUnit":"minute",
   "limit":1000,
   "timeRange":{  
      "start":"2018-11-01T11:00:00Z",
      "end":"2018-11-30T11:00:00Z"
   }
}

مثال ۳: تراکنش‌ها در هر دقیقه

پرس و جو در مورد معیار تراکنش‌ها در دقیقه (tpm).

پرس و جو

curl -X POST -H "Content-Type: application/json" -H "Accept: application/json"
https://api.enterprise.apigee.com/v1/organizations/myorg/environments/test/queries"
-d @tpm.json
-u orgAdminEmail:password

درخواست بدنه از tpm.json

{  
   "metrics":[  
      {  
         "name":"tpm"
      }
   ],
   "dimensions":[  
      "apiproxy"
   ],
   "groupByTimeUnit":"minute",
   "limit":1000,
   "timeRange":{  
      "start":"2018-07-01T11:00:00Z",
      "end":"2018-07-30T11:00:00Z"
   }
}

نتیجه نمونه

گزیده‌ای از فایل نتایج:

{"tpm":149995.0,"apiproxy":"proxy_1","minute":"2018-07-06 12:16:00 UTC"}
{"tpm":149998.0,"apiproxy":"proxy_1","minute":"2018-07-09 15:12:00 UTC"}
{"tpm":3.0,"apiproxy":"proxy_2","minute":"2018-07-11 16:18:00 UTC"}
{"tpm":148916.0,"apiproxy":"proxy_1","minute":"2018-07-15 17:14:00 UTC"}
{"tpm":150002.0,"apiproxy":"proxy_1","minute":"2018-07-18 18:11:00 UTC"}
...

مثال ۴: استفاده از عبارت فیلتر

پرس‌وجویی با عبارت فیلتر که از عملگر بولی استفاده می‌کند.

پرس و جو

curl -X POST -H "Content-Type:application/json"
https://api.enterprise.apigee.com/v1/organizations/myorg/environments/test/queries"
-d @filterCombo.json
-u orgAdminEmail:password

درخواست بدنه از filterCombo.json

{  
   "metrics":[  
      {  
         "name":"message_count",
         "function":"sum"
      },
      {  
         "name":"total_response_time",
         "function":"avg",
         "alias":"average_response_time"
      }
   ],
   "filter":"(apiproxy ne \u0027proxy_1\u0027) and (apiproxy ne \u0027proxy_2\u0027)",
   "dimensions":[  
      "apiproxy"
   ],
   "groupByTimeUnit":"minute",
   "limit":1000,
   "timeRange":{  
      "start":"2018-11-01T11:00:00Z",
      "end":"2018-11-30T11:00:00Z"
   }
}

مثال ۵: ارسال عبارت در پارامتر metrics

پرس‌وجویی با عبارتی که به عنوان بخشی از پارامتر metrics ارسال می‌شود. شما فقط می‌توانید از عبارات ساده تک‌عملگری استفاده کنید.

پرس و جو

curl -X POST -H "Content-Type:application/json"
https://api.enterprise.apigee.com/v1/organizations/myorg/environments/test/queries" 
-d @metricsExpression.json
-u orgAdminEmail:password

درخواست بدنه از metricsExpression.json

{  
   "metrics":[  
      {  
         "name":"message_count",
         "function":"sum",
         "operator":"/",
         "value":"7"
      }
   ],
   "dimensions":[  
      "apiproxy"
   ],
   "groupByTimeUnit":"minute",
   "limit":10,
   "timeRange":"last60minutes"
}

نحوه ایجاد یک پرس و جو برای گزارش کسب درآمد ناهمزمان

شما می‌توانید با استفاده از مراحل شرح داده شده در این بخش، تمام تراکنش‌های موفق کسب درآمد را در یک بازه زمانی مشخص و برای مجموعه‌ای از معیارها ثبت کنید.

همانند پرس‌وجوهای تحلیلی ناهمزمان، شما پرس‌وجوهای گزارش کسب درآمد ناهمزمان را در سه مرحله انجام می‌دهید: (1) ارسال پرس‌وجو، (2) دریافت وضعیت پرس‌وجو، و (3) بازیابی نتایج پرس‌وجو.

مرحله ۱ ، ارسال درخواست، در زیر توضیح داده شده است.

مراحل ۲ و ۳ دقیقاً مشابه پرس‌وجوهای تحلیلی ناهمزمان هستند. برای اطلاعات بیشتر، به نحوه ایجاد یک پرس‌وجوی تحلیلی ناهمزمان مراجعه کنید.

برای ارسال درخواست گزارش کسب درآمد ناهمزمان، یک درخواست POST به /mint/organizations/ org_id /async-reports ارسال کنید.

به صورت اختیاری، می‌توانید با ارسال پارامتر کوئری environment ، محیط را مشخص کنید. در صورت عدم تعیین، پارامتر کوئری به طور پیش‌فرض روی prod تنظیم می‌شود. برای مثال:

/mint/organizations/org_id/async-reports?environment=prod

در بدنه درخواست، معیارهای جستجوی زیر را مشخص کنید.

نام توضیحات پیش‌فرض الزامی است؟
appCriteria شناسه و سازمان برای یک برنامه خاص که باید در گزارش گنجانده شود. اگر این ویژگی مشخص نشود، همه برنامه‌ها در گزارش گنجانده می‌شوند. ناموجود خیر
billingMonth ماه پرداخت برای گزارش، مانند ژوئیه. ناموجود بله
billingYear سال صدور صورتحساب برای گزارش، مانند ۲۰۱۵. ناموجود بله
currencyOption واحد پول برای گزارش. مقادیر معتبر عبارتند از:
  • LOCAL - هر خط از گزارش با استفاده از طرح نرخ مربوطه نمایش داده می‌شود. این بدان معناست که اگر توسعه‌دهندگان طرح‌هایی داشته باشند که از ارزهای مختلف استفاده می‌کنند، ممکن است چندین ارز در یک گزارش وجود داشته باشد.
  • EUR - معاملات ارزی محلی به یورو تبدیل و نمایش داده می‌شوند.
  • GPB - معاملات ارز محلی به پوند انگلستان تبدیل و نمایش داده می‌شوند.
  • USD - تراکنش‌های ارزی محلی به دلار ایالات متحده تبدیل و نمایش داده می‌شوند.

اگر یورو، پوند یا دلار آمریکا را انتخاب کنید، گزارش تمام تراکنش‌هایی را که از آن ارز واحد استفاده می‌کنند، بر اساس نرخ ارز موجود در تاریخ تراکنش نمایش می‌دهد.

ناموجود خیر
devCriteria

شناسه یا آدرس ایمیل توسعه‌دهنده و نام سازمان برای یک توسعه‌دهنده خاص که قرار است در گزارش گنجانده شود. اگر این ویژگی مشخص نشود، همه توسعه‌دهندگان در گزارش گنجانده می‌شوند.

برای مثال:

"devCriteria":[{
    "id":"RtHAeZ6LtkSbEH56",
    "orgId":"my_org"}
]
ناموجود خیر
fromDate تاریخ شروع گزارش به UTC. ناموجود بله
monetizationPakageIds شناسه یک یا چند بسته API برای درج در گزارش. اگر این ویژگی مشخص نشده باشد، تمام بسته‌های API در گزارش گنجانده می‌شوند. ناموجود خیر
productIds شناسه یک یا چند محصول API برای درج در گزارش. اگر این ویژگی مشخص نشده باشد، تمام محصولات API در گزارش گنجانده می‌شوند. ناموجود خیر
ratePlanLevels

نوع طرح نرخی که باید در گزارش لحاظ شود. مقادیر معتبر عبارتند از:

  • DEVELOPER - طرح نرخ توسعه‌دهنده.
  • STANDARD - طرح نرخ استاندارد.

اگر این ملک مشخص نشده باشد، هر دو طرح ویژه توسعه‌دهنده و طرح با نرخ استاندارد در گزارش گنجانده شده‌اند.

ناموجود خیر
toDate تاریخ پایان گزارش به UTC. ناموجود بله

برای مثال، درخواست زیر یک گزارش درآمدزایی ناهمزمان برای ماه ژوئن ۲۰۱۷ برای محصول API و شناسه توسعه‌دهنده مشخص‌شده ایجاد می‌کند. تاریخ‌ها و زمان‌های گزارش fromDate و toDate بر اساس UTC/GMT هستند و می‌توانند شامل زمان نیز باشند.

curl -H "Content-Type:application/json" -X POST -d \
'{
      "fromDate":"2017-06-01 00:00:00",
      "toDate":"2017-06-30 00:00:00",    
     "productIds": [
        "a_product"
    ],
    "devCriteria": [{
        "id": "AbstTzpnZZMEDwjc",
        "orgId": "myorg"
    }]

 }' \
"https://api.enterprise.apigee.com/v1/mint/organizations/myorg/async-reports?environment=prod" \
-u orgAdminEmail:password