/search와 같은 조건의 전체 결과를 CSV로 내려받는 /export가 있습니다. 이벤트는 목록 API와 CSV 내보내기가 있습니다. 모두 read(조회) 권한 키로 부를 수 있고, 키가 고정된 업무 환경의 데이터만 돌려줍니다.
자원별 경로
자원마다 받는 조건(
q, status, month, customer_id, billable_metric_code, 금액 범위 등)과 정렬 필드는 API 참조의 각 경로 설명에 있습니다. /search의 정렬 순서 order는 생략하면 asc이고, 인보이스 검색만 desc입니다. 이벤트 목록은 생략하면 발생 시각 최신순입니다.
모르는 조건을 다루는 방식
검색 응답
고객, 미터, 월별 가격, 사용량, 청구 예정액, 인보이스의/search는 모두 같은 형태로 답합니다.
array
이번 페이지의 항목입니다. 항목의 필드는 자원마다 다릅니다.
integer
조건을 적용한 전체 건수입니다.
integer
조건을 적용하기 전, 현재 업무 환경의 전체 건수입니다.
integer
이번 페이지 번호입니다. 1부터 셉니다.
integer
한 페이지에 담은 최대 개수입니다.
object
페이지와 관계없이 조건 전체로 계산한 요약입니다. 키는 자원마다 다르며 API 참조의 각 경로 설명에 있습니다.
GET /v1/events), 수집 거절 검색, 이벤트 매핑 진단 검색은 형태가 다릅니다. 이 검색들은 page, size, total과 함께 항목 배열을 각각 events, rejections, issues에 담고, total_unfiltered가 없습니다. 다음 페이지가 있는지는 (page + 1) * size < total로 판단합니다.
CSV 내보내기
/export는 같은 경로의 /search나 이벤트 목록과 같은 조건을 받아, 현재 페이지가 아니라 조건에 맞는 전체 결과를 한 파일로 돌려줍니다. page와 size를 보내도 내보내기 범위에는 적용하지 않습니다.
1
조건을 정한다
검색 API나 콘솔 목록에서 원하는 결과가 나오는 조건을 먼저 찾습니다. 한 번에 내보낼 수 있는 행은 최대 10,000행입니다.
2
내려받는다
3
10,000행을 넘으면 범위를 좁힌다
조건 전체가 10,000행을 넘으면 파일 대신 400이 옵니다. 달, 고객, 금액 범위 같은 조건을 더해 나눠 내려받습니다.
400 응답
파일 형식
- 응답의
Content-Type은text/csv;charset=UTF-8이고Content-Disposition에 파일 이름(customers.csv,billable-metrics.csv,billable-metric-prices.csv,usage.csv,draft-invoices.csv,invoices.csv,events.csv)이 붙습니다. - 파일은 UTF-8 BOM으로 시작하고 줄 끝은 CRLF입니다. 프로그램으로 읽을 때는 첫 BOM 문자를 떼고 읽으세요.
- 모든 칸을 큰따옴표로 감쌉니다. 값 안의 큰따옴표는 두 번 겹쳐 씁니다.
- 결과가 없어도 열 제목 줄은 나옵니다.
검색 결과 CSV의 열
고객, 미터, 월별 가격, 사용량, 청구 예정액, 인보이스 CSV의 열 이름은 검색 응답items 안 필드 이름입니다.
- 안쪽 객체는 점으로 이어 붙인 이름의 열이 됩니다. 인보이스 CSV는
invoice.invoice_number,invoice.total_amount,payment.status처럼 나옵니다. - 배열은 한 칸에 JSON 문자열로 들어갑니다. 인보이스의
invoice.lines, 청구 예정액의lines, 사용량의metrics가 그렇습니다. - 사용량과 청구 예정액 CSV는 한 행이 고객 하나입니다.
이벤트 CSV
GET /v1/events/export는 이벤트 목록과 같은 조건을 받습니다: month 또는 from과 to, customer_id, type, q, properties, sort, order. 달과 기간은 발생 시각 기준입니다.
include_properties=true로 내보낼 때는 조건 전체의 원본 속성 합계가 32MB를 넘으면 400 validation_error(errors[0].field는 export, 메시지는 “원본 속성이 32MB 이하가 되도록 검색 범위를 좁혀 주세요”)로 거절합니다. 행 수 제한 10,000행도 같이 적용됩니다.
curl
콘솔에서 내려받기
‘고객’, ‘미터’, ‘요금 설계’, ‘사용량’, ‘수집 로그’, ‘청구 검토’, ‘확정 인보이스’ 화면에 ‘조건 전체 CSV 내보내기’ 버튼이 있습니다. 화면에 건 조건 그대로 전체 결과를 내려받습니다. ‘수집 로그’에서는 ‘원본 속성 포함 (JSON)‘에 체크하면properties 열이 붙습니다.
‘수집 거절’과 ‘이벤트 매핑 진단’ 화면은 검색만 되고 CSV 내보내기가 없습니다.
자기 기록과 맞추기
한 달이 끝난 뒤 도입사 시스템의 사용 기록과 MeterEngine의 숫자를 맞추는 순서의 예입니다.1
이벤트를 내려받는다
GET /v1/events/export?month=YYYY-MM&sort=received_at&order=desc로 그 달 이벤트를 내려받습니다. 10,000행을 넘으면 customer_id나 from, to로 나눕니다.2
빠진 이벤트를 찾는다
도입사 시스템에 기록한
transaction_id 목록과 CSV의 transaction_id 열을 비교합니다. CSV에 없으면 저장되지 않았거나 발생 시각이 다른 달입니다. GET /v1/events/lookup?transaction_id=값으로 하나씩 확인할 수 있습니다. 원인은 이벤트가 청구에 안 보일 때를 보세요.3
마감 뒤에 받은 이벤트를 찾는다
received_at이 다음 달 1일 13:00 KST 이후인 행은 저장은 됐지만 그 달 청구에 들지 않았습니다. 마감 규칙은 시간 규칙을 보세요.4
사용량과 금액을 맞춘다
확정 전이면
GET /v1/usage/export와 GET /v1/invoices/draft/export로, 확정 뒤면 GET /v1/invoices/export로 고객별 수량과 금액을 내려받아 도입사 쪽 계산과 비교합니다. 청구 예정액은 세금을 뺀 공급가액이고 인보이스의 total_amount는 세금을 포함합니다. 금액 용어는 예정액, 확정액, 수납액을 보세요.인보이스 검색과 내보내기의 결제 상태는 키의 업무 환경에 맞는 결제 모드 기준입니다. 테스트 환경 키로는 테스트 결제 기준이고, 다른
mode를 보내면 403 environment_mismatch를 받습니다. 결제 상태 값과 수납 대사는 수납 상태와 대사 확인을 보세요.