> ## Documentation Index
> Fetch the complete documentation index at: https://make.edicus.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Server API 소개

> 엔드포인트를 직접 호출할 때 알아야 할 공통 사항

Edicus Server API의 엔드포인트 레퍼런스입니다. 각 페이지에서 요청 파라미터와 응답 필드를 확인하고 바로 호출해 볼 수 있습니다.

<Note>
  서버용 JS SDK는 제공하지 않습니다. 이 엔드포인트들을 직접 호출하세요. 헤더와 오류 확인을 한 곳에 모으는 방법은 [Server API 호출하기](/docs/server/client)에 있습니다.
</Note>

## 호스트가 둘입니다

| 호스트 | 담당 |
| - | - |
| `https://api.edicus.io` | 토큰, 프로젝트, 주문, 폰트 |
| `https://resource-dot-edicusbase.appspot.com` | 상품, 템플릿, 리소스 |

경로 앞이 `/v2`면 앞의 호스트, `/resapi`나 `/manapi`면 뒤의 호스트입니다.

## 반드시 서버에서만 호출합니다

<Danger>
  모든 엔드포인트가 `edicus-api-key` 헤더를 요구합니다. 이 키는 고객사 서버에만 두고 브라우저 코드나 공개 저장소에 넣지 않습니다. 키 하나로 그 파트너의 전체 데이터에 접근할 수 있습니다.
</Danger>

브라우저에는 이 API로 발급받은 [토큰](/docs/concepts/authentication)만 내려보냅니다.

## 공통 헤더

| 헤더 | 언제 | 설명 |
| - | - | - |
| `edicus-api-key` | 항상 | 모션원에서 발급받은 API 키입니다 |
| `edicus-uid` | 사용자 단위 요청 | 고객사가 사용자에게 부여한 고유 id입니다. [형식 규칙](/docs/concepts/authentication#uid)이 있습니다 |
| `edicus-target-uid` | 복제할 때 | 복제본을 받을 사용자입니다. 생략하면 `edicus-uid`와 같습니다 |

## 오류는 상태 코드와 `error.code`로 판단합니다

`api.edicus.io`는 실패를 4xx와 5xx 상태 코드로 알립니다. body는 언제나 아래 모양 하나입니다.

```json theme={null}
{
  "error": {
    "code": "project_not_editing",
    "message": "잠정 주문은 status가 editing일 때만 가능합니다 (현재 ordering)",
    "details": { "status": "ordering", "order_id": 100023 },
    "request_id": "4bf92f3577b34da6a3ce929d0e0e4736"
  }
}
```

| 필드 | 설명 |
| - | - |
| `code` | snake\_case 오류 코드입니다. 이 값으로 분기합니다 |
| `message` | 사람이 읽는 설명입니다. 파싱하지 않습니다 |
| `details` | 선택입니다. 검증 실패면 어긋난 항목 목록이, 상태 충돌이면 현재 상태가 들어 있습니다 |
| `request_id` | 응답 헤더 `x-request-id`와 같은 값입니다. 문의할 때 함께 알려 주세요 |

"요청을 처리하지 못했다"는 4xx와 5xx이고, "처리했지만 답이 아니오다"(예: `can_order: false`)는 200입니다.

리소스 호스트는 방식이 다릅니다. 파라미터 누락은 `400`, 인증 실패는 `401`, 그 밖의 모든 실패는 `500`이고, body에 `error` 객체가 없습니다. 엔드포인트별 오류 코드와 대응 방법은 [오류 처리](/docs/server/errors)에 있습니다.

## 응답 형식

응답의 `content-type`은 `application/json`입니다.

## OpenAPI 문서

`api.edicus.io`의 엔드포인트는 서버 코드에서 생성한 OpenAPI 3.1 문서로도 받을 수 있습니다.

```
https://api.edicus.io/v2/openapi.json
```

TypeScript라면 이 문서로 요청과 응답 타입을 만들 수 있습니다. 방법은 [Server API 호출하기](/docs/server/client#응답-타입)에 있습니다.

## 여기 없는 엔드포인트

이 레퍼런스는 파트너가 쓰는 엔드포인트만 담고 있습니다. Edicus 내부 운영용 엔드포인트는 다루지 않습니다. 여기 없는 경로를 호출해야 하면 문의하세요.

## 다음 단계

<Columns cols={2}>
  <Card title="Server API 호출하기" icon="server" href="/docs/server/client">
    헤더와 오류 확인을 감싼 래퍼를 만듭니다.
  </Card>

  <Card title="주문" icon="cart-shopping" href="/docs/server/orders">
    주문 흐름을 단계별로 봅니다.
  </Card>
</Columns>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.