---
title: "모든 계좌 작업 제출"
method: POST
path: "/v1/jobs/all-accounts"
tags: ["UnifiedJob"]
---

# 모든 계좌 작업 제출

`POST /v1/jobs/all-accounts`

## Request

- Base URL: `https://api.xdata.kr` (the document declares no server; this is the origin it was published from)
- URL: `https://api.xdata.kr/v1/jobs/all-accounts`
- Auth: one of:
  - HTTP basic
  - OAuth 2 (authorization code, authorization URL `https://api.xdata.kr/oauth/authorize`, token URL `https://api.xdata.kr/oauth/token`)

계좌 전부(또는 `bank_account_credential_ids` 로 고른 계좌들)로 작업을 계좌마다 하나씩 접수한다. 계좌마다 사용 토큰이 하나씩 듭니다. 기업정보 브리프처럼 한 번에 여러 사용 토큰을 쓰는 업무는 그 값만큼 계좌마다 듭니다.

응답 분기:
- 새로 접수한 줄이 하나라도 있다 -> `202 Accepted`
- 새로 접수한 줄이 없다(같은 멱등키의 재전송이거나 전부 접수하지 못했다) -> `200 OK`
- 사용 토큰이 모자라다 -> 하나도 접수하지 않고 거절한다. 거절 문장에 필요한 토큰과 지금 남은 토큰이 있다.
- 은행 동시 작업 상한 때문에 아직 접수하지 못한 줄은 `NOT_SUBMITTED` 로 남고, 응답의 `next` 가 그 계좌 목록을 준다.
- 줄을 접수한 뒤 동시 작업 상한이 아닌 다른 거절로 호출이 멈추면 오류로 돌려주지 않는다 - 이미 접수한 줄은 그대로 두고 응답에 `interruption`(코드 · 문장 · 세부 까닭)을 더한다. 멈춘 줄과 그 뒤 줄은 `NOT_SUBMITTED` + `interrupted` 이고 `next` 가 그 계좌 목록을 준다.
- 계좌가 하나도 없거나 이 액션이 계좌를 고르지 않는 액션이면 접수 없이 거절한다.

`Idempotency-Key` 헤더가 필수다. 계좌마다 키를 만들어 쓰므로 같은 요청을 같은 키로 다시 보내면 이미 접수한 줄은 새 작업 없이 그대로 돌아온다.

## Query parameters

- `env_scope` 'production' | 'real_test' | 'sandbox', nullable: 환경을 고릅니다. 값은 production · real_test · sandbox 중 하나입니다. 경로 접두(/v1/sandbox/... · /v1/test/... · /v1/production/...) · X-Env-Scope 헤더 · env_scope 쿼리 가운데 한 통로로 반드시 보내야 합니다. 빼면 자동으로 채우지 않고 거절하며, 두 통로에 서로 다른 값을 담아도 거절합니다. 거절은 HTTP 422 이고 오류 코드는 VALIDATION_ENV_SCOPE_MISMATCH 입니다.

## Headers

- `Authorization` string, nullable
- `Idempotency-Key` string, nullable
- `User-Agent` string, nullable
- `X-Env-Scope` 'production' | 'real_test' | 'sandbox', nullable: 환경을 고릅니다. 값은 production · real_test · sandbox 중 하나입니다. 경로 접두(/v1/sandbox/... · /v1/test/... · /v1/production/...) · X-Env-Scope 헤더 · env_scope 쿼리 가운데 한 통로로 반드시 보내야 합니다. 빼면 자동으로 채우지 않고 거절하며, 두 통로에 서로 다른 값을 담아도 거절합니다. 거절은 HTTP 422 이고 오류 코드는 VALIDATION_ENV_SCOPE_MISMATCH 입니다.

## Request body

- AllAccountsSubmitRequest: `POST /v1/jobs/all-accounts` 요청 본문.
  - `provider` string, required: 요청 provider - 계좌를 고르는 은행 상품이어야 한다.
  - `action` string, required: 요청 action - 계좌를 고르는 액션이어야 한다 (은행 거래내역 조회 등). 계좌를 고르지 않는 액션은 거절한다.
  - `account_link_id` string, nullable: 연동 계정 식별자 (선택). 주면 그 연동의 계좌만 처리한다. 생략하면 이 은행의 모든 연동이다.
  - `bank_account_credential_ids` string[], nullable: 처리할 계좌 식별자 목록 (선택). 생략하면 계좌 전부를 처리한다. 동시 상한 때문에 아직 접수하지 못한 계좌를 이어서 접수할 때 응답의 `next.bank_account_credential_ids` 로 받은 목록을 준다.
  - `params` object, nullable: 액션별 파라미터 (선택). 계좌 하나를 고르는 칸(`bank_account_credential_id`)은 넣지 않는다 - 이 호출이 계좌마다 채운다.

## Response `200`

새로 접수한 줄이 없다 - 같은 멱등키의 재전송이거나 전부 접수하지 못했다.

- AllAccountsSubmitResponse: `POST /v1/jobs/all-accounts` 응답 - 계좌마다 작업을 하나씩 접수한 결과다. 새로 접수한 줄이 하나라도 있으면 `202`, 없으면 `200` 이다. 같은 `Idempotency-Key` 로 다시 부르면 이미 접수한 계좌는 새 작업 없이 그 작업의 지금 상태로 돌아오고(재생), 그 사이 계좌가 늘어 있으면 늘어난 계좌만 새 작업이므로 응답은 `202` 다. 계좌마다 사용 토큰이 하나씩 듭니다. 기업정보 브리프처럼 한 번에 여러 사용 토큰을 쓰는 업무는 그 값만큼 계좌마다 듭니다.
  - `env_scope` string, required: 요청한 환경 그대로. `sandbox` · `real_test` · `production`.
  - `provider` string, required
  - `action` string, required
  - `submitted_at` string, required: 호출을 받은 시각 (KST ISO-8601). 줄마다 작업의 접수 시각은 `GET /v1/jobs/{job_id}` 에 있다.
  - `account_count` integer, required: 이 호출이 다룬 계좌 수.
  - `submitted_count` integer, required: 작업을 접수한 줄 수 - 같은 멱등키의 재생으로 돌아온 줄도 센다.
  - `accounts` AllAccountsLineResponse[], required: 계좌마다 한 줄. 최근 등록한 연동의 계좌부터 최근 등록한 계좌 순서다.
    - `account_link_id` string, required
    - `bank_account_credential_id` string, required
    - `masked_account_no` string, required: 가린 계좌번호 (예: `110-***-123456`).
    - `job_id` string, nullable: 접수한 작업 번호. 이 번호로 `GET /v1/jobs/{job_id}` 와 `GET /v1/jobs/{job_id}/result` 를 부른다. 아직 접수하지 못한 줄은 없다.
    - `status` string, required: 그 작업의 지금 상태이거나 접수하지 못했다는 `NOT_SUBMITTED`. 가능한 값: `CANCELED` · `FAILED` · `NOT_SUBMITTED` · `QUEUED` · `RUNNING` · `SUCCEEDED` · `TIMEOUT`. 같은 멱등키로 다시 부르면 이미 접수한 줄은 새 작업 없이 그 작업의 지금 상태로 돌아온다.
    - `reason` string, nullable: `NOT_SUBMITTED` 줄에만 있다 - 접수하지 못한 까닭. 가능한 값: `over_concurrency_limit`(은행 동시 작업 상한 때문에 아직 접수하지 못했다) · `interrupted`(호출이 다른 거절로 중간에 멈춰 접수하지 못했다. 응답의 `interruption` 이 까닭을 말한다).
  - `next` AllAccountsNextResponse: 아직 접수하지 못한 계좌가 있을 때만 있다 - 앞선 작업이 끝난 뒤 같은 호출을 이 계좌들로 다시 한다.
    - `retry_after_seconds` integer, required: 다시 부르기 전에 기다릴 만한 초.
    - `bank_account_credential_ids` string[], required: 아직 접수하지 못한 계좌 식별자 - 같은 이름의 요청 칸에 그대로 준다.
    - `message` string, required
  - `interruption` AllAccountsInterruptionResponse: 호출이 중간에 멈춘 까닭 - 같은 거절이 계좌 하나로 부른 호출에서 났다면 오류 응답이 싣는 코드 · 문장 · 세부 까닭과 같다.
    - `code` string, required: 표준 오류 코드.
    - `message` string, required: 고객에게 보여 줄 문장.
    - `reason` string, nullable, required: 세부 까닭 코드. 거절이 싣고 있을 때만 값이 있다(없으면 `null`).

## Other responses

- `202`: 새로 접수한 줄이 하나라도 있다.
- `422`: Validation Error

---

[API](https://skmtc.dev/xdata/apis/xboss-api.md) · [All operations](https://skmtc.dev/xdata/apis/xboss-api/llms.txt) · [OpenAPI document](https://skmtc.dev/xdata/apis/xboss-api/revisions/816de78950db?raw)
