메인 콘텐츠로 건너뛰기
사용량 이벤트는 고객에게 붙습니다. 이벤트를 보내기 전에 청구할 고객을 MeterEngine에 등록하고, 등록 응답으로 받은 고객 id를 도입사 시스템에 저장해 둡니다. 이벤트의 customer_id에는 외부 고객 ID가 아니라 MeterEngine이 만든 고객 id(UUID)를 넣습니다. 외부 고객 ID(external_id)는 고객을 다시 찾고 같은 고객이 두 번 등록되지 않게 막는 값입니다.
콘솔 ‘고객’ 화면에는 ‘외부 고객 ID로 사용량을 연결’이라고 쓰여 있지만, 외부 고객 ID는 고객을 찾는 값이고 이벤트를 고객에 연결하는 값은 고객 id입니다.

필요 권한

권한의 뜻과 포함 관계는 API 권한을 보세요.

고객 등록하기

1

업무 환경과 키를 확인한다

연동을 시험할 때는 테스트 환경에서 발급한 키(me_test_로 시작)를 씁니다. 고객은 업무 환경마다 따로 등록되므로 테스트 환경에 등록한 고객은 실제 환경에 없습니다. 실제 환경으로 넘어갈 때 고객을 다시 등록합니다. 자세한 내용은 업무 환경을 보세요.
2

external_id를 넣어 등록한다

도입사 시스템에서 그 고객을 가리키는 고유한 값을 external_id에 넣어 보냅니다.
3

응답의 id를 저장한다

새로 만들면 201 Created와 함께 고객이 돌아옵니다.
201 Created
id를 도입사 시스템에 external_id와 함께 저장합니다. 이 값이 이벤트의 customer_id가 됩니다.
4

이벤트에 id를 쓴다

저장한 id를 customer_id에 넣어 이벤트를 보냅니다. 방법은 사용량 이벤트 보내기를 보세요.
콘솔에서도 ‘고객’ 화면의 ‘고객 등록’에서 ‘고객명’, ‘외부 고객 ID’, ‘청구 이메일’을 넣고 ‘고객 저장’을 눌러 등록할 수 있습니다.

요청 본문

billing_email은 저장만 됩니다. MeterEngine은 메일을 보내지 않으니 청구 안내는 도입사가 직접 전달합니다. 소개를 보세요.

응답

string (UUID)
MeterEngine 고객 id. 이벤트의 customer_id에 넣는 값입니다.
string | null
고객명.
string | null
저장한 청구 이메일. 등록하지 않았으면 null입니다.
string (date-time) | null
등록 시각.
string | null
등록할 때 보낸 외부 고객 ID. 보내지 않았으면 null입니다.
string (date-time) | null
보관 시각. 보관하지 않은 고객이면 null입니다.
integer
고객 정보의 버전. 수정할 때 If-Match에 씁니다.

같은 external_id로 다시 보낼 때

같은 업무 환경에서 같은 external_id로 POST /v1/customers를 다시 보내면 새 고객을 만들지 않고 기존 고객을 200 OK로 돌려줍니다. 응답을 받지 못해 다시 보내도 고객이 하나만 생기므로, 등록 요청은 external_id를 넣어 보내는 것을 기본으로 하세요. 다시 보낸 요청의 name, billing_email은 저장된 값을 바꾸지 않습니다. 형식 검사는 그대로 하므로 name은 빼지 말고 보냅니다. 고객 정보를 바꾸려면 admin 권한 키로 PUT /v1/customers/{id}를 부르거나 콘솔 고객 상세 화면의 ‘고객 정보 수정’을 씁니다. PUT은 보낸 값으로 통째로 바꾸므로 billing_email을 빼고 보내면 저장된 청구 이메일이 지워집니다. 키에 read 권한이 없으면(ingest만 있으면) 200 응답에는 id, external_id, version만 채워지고 나머지는 null입니다. id는 항상 들어 있으니 저장에는 지장이 없습니다.
200 OK (read 권한이 없는 키)
external_id를 빼고 등록하면 보낼 때마다 새 고객이 만들어집니다. 응답을 받지 못해 같은 요청을 다시 보내면 같은 고객이 두 명 생깁니다. external_id를 넣을 수 없다면 Idempotency-Key 헤더를 붙여 보내세요. 같은 키와 같은 본문을 다시 보내면 처음 응답을 그대로 돌려줍니다. 자세한 규칙은 멱등 규칙을 보세요.

고객 id를 잃었을 때

저장해 둔 고객 id를 잃었으면 다음 중 하나로 다시 찾습니다.
POST /v1/customers를 같은 external_id로 다시 보내면 기존 고객이 200으로 돌아오고 id가 들어 있습니다. 이벤트를 보내는 ingest 키 하나로 할 수 있습니다.
200 OK
기본으로는 보관하지 않은 고객만 나옵니다. 보관한 고객까지 찾으려면 status=all을 붙입니다(active, archived, all). 없으면 customers가 빈 배열입니다.
콘솔 ‘고객’ 화면의 목록에는 고객 id 열이 없습니다. 고객 이름을 눌러 고객 상세 화면을 열면 주소가 /customers/<고객 id>?month=... 형태이고, /customers/ 뒤부터 ? 앞까지가 고객 id입니다.

보관한 고객

고객을 보관하면 그 고객의 새 이벤트와 같은 external_id의 등록이 409 customer_archived로 거절됩니다. 지난 이벤트와 청구, 결제 기록은 남습니다. 다시 쓰려면 admin 권한 키로 POST /v1/customers/{id}/restorations를 부르거나 콘솔 고객 상세 화면의 ‘고객 복원’을 누릅니다. 보관과 복원 규칙은 바꾸기, 보관, 복원을 보세요.