{
   "swagger":"2.0",
   "info":{
      "description":"Report API",
      "version":"1.0",
      "title":"Report API",
      "contact":{
         "name":"soonryul.kwon@navercorp.com"
      },
      "license":{

      }
   },
   "host":"localhost:20041",
   "basePath":"/",
   "tags":[
      {
         "name":"StatReport",
         "description":"Stat Report Controller"
      },
      {
         "name":"Stat",
         "description":"Admng Controller"
      }
   ],
   "paths":{
      "/api/stat-reports":{
         "get":{
            "tags":[
               "StatReport"
            ],
            "summary":"list",
            "description":"Retrieves all of the registered Report Jobs",
            "operationId":"getReportJobListUsingGET",
            "consumes":[
               "application/json"
            ],
            "produces":[
               "*/*"
            ],
            "responses":{
               "200":{
                  "description":"OK",
                  "schema":{
                     "type":"array",
                     "items":{
                        "$ref":"#/definitions/ReportJobResponse"
                     }
                  }
               },
               "401":{
                  "description":"Unauthorized"
               },
               "403":{
                  "description":"Forbidden"
               },
               "404":{
                  "description":"Not Found"
               }
            }
         },
         "post":{
            "tags":[
               "StatReport"
            ],
            "summary":"create",
            "description":"Registers a Report Job",
            "operationId":"registerReportJobUsingPOST",
            "consumes":[
               "application/json"
            ],
            "produces":[
               "*/*"
            ],
            "parameters":[
               {
                  "in":"body",
                  "name":"statReportJob",
                  "description":"statReportJob",
                  "required":true,
                  "schema":{
                     "$ref":"#/definitions/StatReportJob"
                  }
               }
            ],
            "responses":{
               "200":{
                  "description":"OK",
                  "schema":{
                     "$ref":"#/definitions/ReportJobResponse"
                  }
               },
               "201":{
                  "description":"Created"
               },
               "401":{
                  "description":"Unauthorized"
               },
               "403":{
                  "description":"Forbidden"
               },
               "404":{
                  "description":"Not Found"
               }
            }
         },
         "delete":{
            "tags":[
               "StatReport"
            ],
            "summary":"delete",
            "description":"Delete Report Jobs",
            "operationId":"deleteReportJobListUsingDELETE",
            "consumes":[
               "application/json"
            ],
            "produces":[
               "*/*"
            ],
            "responses":{
               "401":{
                  "description":"Unauthorized"
               },
               "204":{
                  "description":"No Content"
               },
               "403":{
                  "description":"Forbidden"
               }
            }
         }
      },
      "/api/stat-reports/{reportJobId}":{
         "get":{
            "tags":[
               "StatReport"
            ],
            "summary":"get",
            "description":"Retrieves a registered Report Job",
            "operationId":"getReportJobByReportJobIdUsingGET",
            "consumes":[
               "application/json"
            ],
            "produces":[
               "*/*"
            ],
            "parameters":[
               {
                  "name":"reportJobId",
                  "in":"path",
                  "description":"ID of a Report Job #required-create #required-update",
                  "required":true,
                  "type":"ref"
               }
            ],
            "responses":{
               "200":{
                  "description":"OK",
                  "schema":{
                     "$ref":"#/definitions/ReportJobResponse"
                  }
               },
               "401":{
                  "description":"Unauthorized"
               },
               "403":{
                  "description":"Forbidden"
               },
               "404":{
                  "description":"Not Found"
               }
            }
         },
         "delete":{
            "tags":[
               "StatReport"
            ],
            "summary":"delete",
            "description":"Deletes a Report Job",
            "operationId":"deleteReportJobByReportJobIdUsingDELETE",
            "consumes":[
               "application/json"
            ],
            "produces":[
               "*/*"
            ],
            "parameters":[
               {
                  "name":"reportJobId",
                  "in":"path",
                  "description":"ID of a Report Job #required-create #required-update",
                  "required":true,
                  "type":"ref"
               }
            ],
            "responses":{
               "401":{
                  "description":"Unauthorized"
               },
               "204":{
                  "description":"No Content"
               },
               "403":{
                  "description":"Forbidden"
               }
            }
         }
      },
      "/api/stats{?id,fields,timeRange,datePreset,timeIncrement,breakdown}":{
         "get":{
            "tags":[
               "Stat"
            ],
            "summary":"get (by id)",
            "description":"Receive the Summary Report per single entity",
            "operationId":"getSingleEntityStatUsingGET",
            "consumes":[
               "application/json"
            ],
            "produces":[
               "*/*"
            ],
            "parameters":[
               {
                  "name":"id",
                  "in":"query",
                  "description":"Entity Id (campaign id, Ad group id, Ad keyword id, Ad id, Criterion id) #required-create #required-update",
                  "required":true,
                  "type":"string"
               },
               {
                  "name":"fields",
                  "in":"query",
                  "description":"Fields to be retrieved (JSON format string). \n For example, [\"impCnt\",\"clkCnt\",\"salesAmt\",\"crto\"] #required-create #required-update",
                  "required":true,
                  "type":"string",
                  "enum":[
                     "impCnt",
                     "clkCnt",
                     "salesAmt",
                     "ctr",
                     "cpc",
                     "avgRnk",
                     "ccnt",
                     "recentAvgRnk",
                     "recentAvgCpc",
                     "pcNxAvgRnk",
                     "mblNxAvgRnk",
                     "crto",
                     "convAmt",
                     "ror",
                     "cpConv",
                     "viewCnt",
                     "purchaseCcnt",
                     "purchaseConvAmt",
                     "purchaseRor"
                  ]
               },
               {
                  "name":"timeRange",
                  "in":"query",
                  "description":"Hours of stats based on KST (JSON format string). This parameter is ignored if datePreset is provided \n For example, {\"since\":\"YYYY-MM-DD\",\"until\":\"YYYY-MM-DD\"} #required-create #required-update",
                  "required":false,
                  "type":"string"
               },
               {
                  "name":"datePreset",
                  "in":"query",
                  "description":"Predefined period of stats. This parameter is ignored if timeRange is provided #optional-request",
                  "required":false,
                  "type":"string",
                  "enum":[
                     "today",
                     "yesterday",
                     "last7days",
                     "last30days",
                     "lastweek",
                     "lastmonth",
                     "lastquarter"
                  ]
               },
               {
                  "name":"timeIncrement",
                  "in":"query",
                  "description":"Selection of daily aggregated stats(1) or summary stats(allDays). Default value is 1 #optional-request",
                  "required":false,
                  "type":"string",
                  "enum":[
                     "1",
                     "allDays"
                  ]
               },
               {
                  "name":"breakdown",
                  "in":"query",
                  "description":"Stat classification type. Dose not support more than one breakdown. Default value is empty \n #optional-request",
                  "required":false,
                  "type":"string",
                  "enum":[
                     "pcMblTp",
                     "dayw",
                     "hh24",
                     "regnNo"
                  ]
               }
            ],
            "responses":{
               "200":{
                  "description":"OK",
                  "schema":{
                     "$ref":"#/definitions/StatResponse"
                  }
               },
               "401":{
                  "description":"Unauthorized"
               },
               "403":{
                  "description":"Forbidden"
               },
               "404":{
                  "description":"Not Found"
               }
            }
         }
      },
      "/api/stats{?ids,fields,timeRange,datePreset,timeIncrement,breakdown}":{
         "get":{
            "tags":[
               "Stat"
            ],
            "summary":"get (by ids)",
            "description":"Receive the Summary Report per multiple entities",
            "operationId":"getBulkEntityStatUsingGET",
            "consumes":[
               "application/json"
            ],
            "produces":[
               "*/*"
            ],
            "parameters":[
               {
                  "name":"ids",
                  "in":"query",
                  "description":"Entity Id List (campaign id, Ad group id, Ad keyword id, Ad id, Criterion id) #required-create #required-update",
                  "required":true,
                  "type":"string"
               },
               {
                  "name":"fields",
                  "in":"query",
                  "description":"Fields to be retrieved (JSON format string). \n For example, [\"impCnt\",\"clkCnt\",\"salesAmt\",\"crto\"] #required-create #required-update",
                  "required":true,
                  "type":"string",
                  "enum":[
                     "impCnt",
                     "clkCnt",
                     "salesAmt",
                     "ctr",
                     "cpc",
                     "avgRnk",
                     "ccnt",
                     "recentAvgRnk",
                     "recentAvgCpc",
                     "pcNxAvgRnk",
                     "mblNxAvgRnk",
                     "crto",
                     "convAmt",
                     "ror",
                     "cpConv",
                     "viewCnt",
                     "purchaseCcnt",
                     "purchaseConvAmt",
                     "purchaseRor"
                  ]
               },
               {
                  "name":"timeRange",
                  "in":"query",
                  "description":"Hours of stats based on KST (JSON format string). This parameter is ignored if datePreset is provided \n For example, {\"since\":\"YYYY-MM-DD\",\"until\":\"YYYY-MM-DD\"} #required-create #required-update",
                  "required":false,
                  "type":"string"
               },
               {
                  "name":"datePreset",
                  "in":"query",
                  "description":"Predefined period of stats. This parameter is ignored if timeRange is provided #optional-request",
                  "required":false,
                  "type":"string",
                  "enum":[
                     "today",
                     "yesterday",
                     "last7days",
                     "last30days",
                     "lastweek",
                     "lastmonth",
                     "lastquarter"
                  ]
               },
               {
                  "name":"timeIncrement",
                  "in":"query",
                  "description":"Selection of daily aggregated stats(1) or summary stats(allDays). Default value is allDays #optional-request",
                  "required":false,
                  "type":"string",
                  "enum":[
                     "allDays"
                  ]
               },
               {
                  "name":"breakdown",
                  "in":"query",
                  "description":"Stat classification type. Dose not support more than one breakdown. Default value is empty \n #optional-request",
                  "required":false,
                  "type":"string",
                  "enum":[
                     "pcMblTp",
                     "dayw",
                     "hh24",
                     "regnNo"
                  ]
               }
            ],
            "responses":{
               "200":{
                  "description":"OK",
                  "schema":{
                     "$ref":"#/definitions/StatResponse"
                  }
               },
               "401":{
                  "description":"Unauthorized"
               },
               "403":{
                  "description":"Forbidden"
               },
               "404":{
                  "description":"Not Found"
               }
            }
         }
      },"/api/stats{?id,statType}":{
         "get":{
            "tags":[
               "Stat"
            ],
            "summary":"get (by statType)",
            "description":"Receive the Customized Report per stat type and single entity",
            "operationId":"getCustomizedStatUsingGET",
            "consumes":[
               "application/json"
            ],
            "produces":[
               "application/json"
            ],
            "parameters":[
               {
                  "name":"id",
                  "in":"query",
                  "description":"Entity Id #required-create #required-update",
                  "required":true,
                  "type":"string"
               },
               {
                  "name":"statType",
                  "in":"query",
                  "description":"Predefined stat type. For example, NPLA_SCH_KEYWORD #required-create #required-update",
                  "required":true,
                  "type":"string"
               }
            ],
            "responses":{
               "200":{
                  "description":"OK",
                  "schema":{
                     "type":"array",
                     "items":{
                        "$ref":"#/definitions/StatTypeResponse"
                     }
                  }
               },
               "401":{
                  "description":"Unauthorized"
               },
               "403":{
                  "description":"Forbidden"
               },
               "404":{
                  "description":"Not Found"
               }
            }
         }
      }
   },
   "securityDefinitions":{
      "mykey":{
         "type":"apiKey",
         "name":"mykey",
         "in":"header"
      }
   },
   "definitions":{
      "ReportJobResponse":{
         "properties":{
            "downloadUrl":{
               "type":"string",
               "description":"Download URL\n The download address of a file"
            },
            "reportJobId":{
               "type":"integer",
               "format":"int64",
               "description":"ID of a Report Job"
            },
            "reportTp":{
               "type":"string",
               "description":"Type of ad performance Report",
               "enum":[
                  "AD",
                  "AD_DETAIL",
                  "AD_CONVERSION",
                  "AD_CONVERSION_DETAIL",
                  "ADEXTENSION",
                  "ADEXTENSION_CONVERSION",                  
                  "EXPKEYWORD",
                  "SHOPPINGKEYWORD_DETAIL",
                  "SHOPPINGKEYWORD_CONVERSION_DETAIL",
                  "SHOPPINGBRANDPRODUCT",
                  "SHOPPINGBRANDPRODUCT_CONVERSION",
                  "CRITERION",
                  "CRITERION_CONVERSION"
               ]
            },
            "statDt":{
               "type":"string",
               "description":"Effective date\n yyyy-MM-ddTHH:mm:ssZ (ISO8601)"
            },
            "status":{
               "type":"string",
               "description":"Job status, REGIST, RUNNING, BUILT, NONE, ERROR, WAITING, AGGREGATING",
               "enum":[
                  "REGIST",
                  "RUNNING",
                  "BUILT",
                  "NONE",
                  "ERROR",
                  "WAITING",
                  "AGGREGATING"
               ]
            },
            "updateTm":{
               "type":"string",
               "description":"최근 수정 시각\nRecently modified time\n yyyy-MM-ddTHH:mm:ssZ (ISO8601)"
            }
         }
      },
      "pivotResponse":{
         "properties":{
            "body":{
               "type":"array",
               "items":{
                  "type":"array",
                  "items":{
                     "$ref":"#/definitions/Number"
                  }
               }
            },
            "head":{
               "type":"array",
               "items":{
                  "type":"string"
               }
            },
            "timeRange":{
               "$ref":"#/definitions/TimeRange"
            }
         }
      },
      "DailyStatMap":{
         "properties":{
            "avgRnk":{
               "type":"number",
               "format":"double",
               "description":"Average Impression Rank. Only PC Powerlink+BZ site or Mobile Powerlink \n "
            },
            "ccnt":{
               "type":"integer",
               "format":"int32",
               "description":"Conversion Count"
            },
            "clkCnt":{
               "type":"integer",
               "format":"int32",
               "description":"Click Count"
            },
            "cpc":{
               "type":"number",
               "format":"double",
               "description":"Cost per Click"
            },
            "ctr":{
               "type":"number",
               "format":"double",
               "description":"Click through Rate(%)"
            },
            "dateEnd":{
               "type":"string",
               "description":"End date of Stats period (YYYY-MM-DD, KST)"
            },
            "dateStart":{
               "type":"string",
               "description":"Start date of Stats period (YYYY-MM-DD, KST)"
            },
            "drtCrto":{
               "type":"number",
               "format":"double",
               "description":"Direct Conversion Ratio(%)"
            },
            "impCnt":{
               "type":"integer",
               "format":"int32",
               "description":"Impression Count"
            },
            "salesAmt":{
               "type":"integer",
               "format":"int64",
               "description":"Cost Summation(VAT included)"
            },
            "viewCnt":{
               "type":"integer",
               "format":"int64",
               "description":"Number of times that a video was viewed"
            },
            "purchaseCcnt":{
               "type":"integer",
               "format":"int64",
               "description":"Purchase Conversion Count"
            },
            "purchaseConvAmt":{
               "type":"number",
               "format":"double",
               "description":"Purchase Conversion Amount"
            },
            "purchaseRor":{
               "type":"number",
               "format":"double",
               "description":"Purchase ROR"
            }
         }
      },
      "DailyStatResponse":{
         "properties":{
            "data":{
               "type":"array",
               "description":"Stats to be retrieved",
               "items":{
                  "$ref":"#/definitions/DailyStatMap"
               }
            },
            "summary":{
               "description":"The summary period of stats",
               "$ref":"#/definitions/Summary"
            },
            "cycleBaseTm":{
               "type":"string",
               "description":"The latest datetime available. (yyyyMMddHHmm)"
            }
         }
      },
      "BreakdownStat":{
         "properties":{
            "avgRnk":{
               "type":"number",
               "format":"double",
               "description":"Average Impression Rank. Only PC Powerlink+BZ site or Mobile Powerlink \n "
            },
            "ccnt":{
               "type":"integer",
               "format":"int32",
               "description":"Conversion Count"
            },
            "clkCnt":{
               "type":"integer",
               "format":"int32",
               "description":"Click Count"
            },
            "cpc":{
               "type":"number",
               "format":"double",
               "description":"Cost per Click"
            },
            "ctr":{
               "type":"number",
               "format":"double",
               "description":"Click through Rate(%)"
            },
            "drtCrto":{
               "type":"number",
               "format":"double",
               "description":"Direct Conversion Ratio(%)"
            },
            "impCnt":{
               "type":"integer",
               "format":"int32",
               "description":"Impression Count"
            },
            "name":{
               "type":"string",
               "description":"Stat classification value. \n For example, pcMblTp : PC or Mobile, dayw : Monday ~ Sunday, hh24 : 00 hour ~ 01 hour, regnNo : Gangwon-do, Gyeonggi-do etc."
            },
            "salesAmt":{
               "type":"integer",
               "format":"int64",
               "description":"Cost Summation(VAT included)"
            },
            "viewCnt":{
               "type":"integer",
               "format":"int64",
               "description":"Number of times that a video was viewed"
            },
            "purchaseCcnt":{
               "type":"integer",
               "format":"int64",
               "description":"Purchase Conversion Count"
            },
            "purchaseConvAmt":{
               "type":"number",
               "format":"double",
               "description":"Purchase Conversion Amount"
            },
            "purchaseRor":{
               "type":"number",
               "format":"double",
               "description":"Purchase ROR"
            }
         }
      },
      "SummaryStatMap":{
         "properties":{
            "avgRnk":{
               "type":"number",
               "format":"double",
               "description":"Average Impression Rank. Only PC Powerlink+BZ site or Mobile Powerlink \n "
            },
            "breakdowns":{
               "type":"array",
               "description":"Breakdown stat list",
               "items":{
                  "$ref":"#/definitions/BreakdownStat"
               }
            },
            "ccnt":{
               "type":"integer",
               "format":"int32",
               "description":"Conversion Count"
            },
            "clkCnt":{
               "type":"integer",
               "format":"int32",
               "description":"Click Count"
            },
            "cpc":{
               "type":"number",
               "format":"double",
               "description":"Cost per Click"
            },
            "ctr":{
               "type":"number",
               "format":"double",
               "description":"Click through Rate(%)"
            },
            "drtCrto":{
               "type":"number",
               "format":"double",
               "description":"Direct Conversion Ratio(%)"
            },
            "id":{
               "type":"string",
               "description":"Entity Id"
            },
            "impCnt":{
               "type":"integer",
               "format":"int32",
               "description":"Impression Count"
            },
            "salesAmt":{
               "type":"integer",
               "format":"int64",
               "description":"Cost Summation(VAT included)"
            },
            "viewCnt":{
               "type":"integer",
               "format":"int64",
               "description":"Number of times that a video was viewed"
            }
         }
      },
      "TimeRange":{
         "properties":{
            "since":{
               "type":"string"
            },
            "until":{
               "type":"string"
            }
         }
      },
      "StatResponse":{
         "properties":{
            "dailyStatResponse":{
               "description":"Return daily stats data structure if timeInrcement is 1",
               "$ref":"#/definitions/DailyStatResponse"
            },
            "summaryStatResponse":{
               "description":"Return summation stats data structure if timeInrcement is allDays",
               "$ref":"#/definitions/SummaryStatResponse"
            }
         }
      },
      "SummaryStatResponse":{
         "properties":{
            "data":{
               "type":"array",
               "description":"Stats to be retrieved",
               "items":{
                  "$ref":"#/definitions/SummaryStatMap"
               }
            },
            "cycleBaseTm":{
               "type":"string",
               "description":"The latest datetime available. (yyyyMMddHHmm)"
            }

         }
      },
      "Number":{

      },
      "Summary":{
         "properties":{
            "dateEnd":{
               "type":"string",
               "description":"Summary end date of Stats period (YYYY-MM-DD, KST)"
            },
            "dateStart":{
               "type":"string",
               "description":"Summary start date of Stats period (YYYY-MM-DD, KST)"
            }
         }
      }, "StatTypeResponse":{
         "properties":{
            "impCnt":{
               "type":"integer",
               "format":"int32"
            },
            "clkCnt":{
               "type":"integer",
               "format":"int32"
            },
            "drtCrto":{
               "type":"number",
               "format":"double"
            },
            "salesAmt":{
               "type":"integer",
               "format":"int32"
            },
            "schKeyword":{
               "type":"string"
            }
         }
      },
      "columnResponse":{
         "properties":{
            "category":{
               "type":"string"
            },
            "dataType":{
               "type":"string"
            },
            "exclusive":{
               "type":"array",
               "items":{
                  "type":"string"
               }
            },
            "name":{
               "type":"string"
            },
            "type":{
               "type":"string"
            }
         }
      },
      "StatReportJob":{
         "properties":{
            "reportTp":{
               "type":"string",
               "description":"Type of ad performance Report",
               "enum":[
                  "AD",
                  "AD_DETAIL",
                  "AD_CONVERSION",
                  "AD_CONVERSION_DETAIL",
                  "ADEXTENSION",
                  "ADEXTENSION_CONVERSION",                  
                  "EXPKEYWORD",
                  "SHOPPINGKEYWORD_DETAIL",
                  "SHOPPINGKEYWORD_CONVERSION_DETAIL",
                  "SHOPPINGBRANDPRODUCT",
                  "SHOPPINGBRANDPRODUCT_CONVERSION",
                  "CRITERION",
                  "CRITERION_CONVERSION"
               ]
            },
            "statDt":{
               "type":"string",
               "description":"Effective date \n YYYYMMDD (KST), yyyy-MM-ddTHH:mm:ssZ (ISO8601) are allowed"
            }
         }
      }
   }
}
