GraphQL API Reference

GraphQL API 사용에 필요한 공통 규칙, 응답 모델, Query/Mutation별 예제를 제공합니다.

1. Overview

1.1. Endpoints

  • 도메인은 각 환경 별 도메인 문서 참고 바랍니다.

구분 URL

GraphiQL

/api/graphiql

GraphQL API

/api/graphql

1.2. 공통 헤더 정보

GraphQL API도 REST API와 동일하게 HTTP Header로 인증 정보를 전달합니다.

Header Description Mandatory Example

Authorization

인증 토큰 (액세스 토큰)

인증이 필요한 Query는 Y

Bearer 4B561A51-7773-4CA4-8E67-851EF4E85145

Request-Id

요청 식별 ID

N

c64af254-d067-475c-b4ce-15a6f0a73f99

Authorization 헤더 값은 Bearer {accessToken} 형식입니다.

인증이 필요한 GraphQL Query에서 Authorization 헤더가 없거나 유효하지 않으면 인증 오류가 발생합니다.

1.2.1. 설정 방법

GraphiQL에서 인증이 필요한 Query를 테스트할 때는 Headers 영역에 다음 JSON을 입력합니다.

{
  "Authorization": "Bearer 4B561A51-7773-4CA4-8E67-851EF4E85145",
  "Request-Id": "c64af254-d067-475c-b4ce-15a6f0a73f99"
}

1.3. GraphQL 응답 모델

GraphQL 응답은 성공 시 data 필드를 포함합니다.

Path Type Mandatory Description

data

Object

Y

Query 실행 결과

Success Example
{
  "data": {
    "myUser": {
      "userId": "1",
      "name": "홍길동",
      "profileImageUrl": null
    }
  }
}

GraphQL 요청이 실패하면 errors 필드에 오류 정보가 포함됩니다. 클라이언트는 errors[].extensions.code 값을 기준으로 오류를 분기합니다.

Path Type Mandatory Description

errors

Array<Object>

Y

GraphQL 오류 목록

errors[].message

String

Y

오류 메시지

errors[].path

Array<String>

N

오류가 발생한 GraphQL field path

errors[].extensions.code

String

Y

애플리케이션 에러 코드

errors[].extensions.details

Array<Object>

N

필드별 상세 오류 목록

errors[].extensions.details[].field

String

Y

필드명

errors[].extensions.details[].reason

String

Y

오류 설명

data

Object

N

부분 성공 데이터. 전체 실패 시 null

Unauthorized
{
  "errors": [
    {
      "message": "인증이 필요합니다.",
      "path": ["experiences"],
      "extensions": {
        "code": "invalid_auth_token"
      }
    }
  ],
  "data": null
}
Invalid Arguments
{
  "errors": [
    {
      "message": "입력한 내용을 다시 확인해 주세요.",
      "path": ["experiences"],
      "extensions": {
        "code": "invalid_arguments",
        "details": [
          {
            "field": "size",
            "reason": "1 이상이어야 합니다."
          }
        ]
      }
    }
  ],
  "data": null
}
GraphQL 응답은 일부 오류 상황에서도 HTTP status가 200으로 내려갈 수 있습니다. 클라이언트는 HTTP status만 보지 말고 `errors[].extensions.code`를 기준으로 처리해야 합니다.

1.4. 공통 에러 코드

모든 GraphQL Query에서 공통적으로 발생할 수 있는 에러 코드입니다.
각 Query별로 발생할 수 있는 에러 정보는 각 Query의 에러 코드 문서를 참고해주세요.

Code Message Description

invalid_arguments

입력한 내용을 다시 확인해 주세요.

필수 파라미터가 없거나, 파라미터가 유효하지 않는 경우

invalid_auth_token

인증이 필요합니다.

인증 토큰이 없거나 유효하지 않은 경우

token_expired

인증이 만료되었습니다. 다시 로그인해 주세요.

인증 토큰이 만료된 경우 (액세스 토큰 갱신 필요)

internal_error

일시적인 오류가 발생했습니다. 잠시 후 다시 시도해 주세요.

서버 내부적으로 문제 발생 시

service_unavailable

현재 서비스를 이용할 수 없습니다. 잠시 후 다시 시도해 주세요.

현재 서비스를 이용할 수 없는 경우

1.5. 커서 페이징

목록 Query는 cursor, size 파라미터를 사용합니다.

Parameter Type Description

cursor

String

다음 페이지 조회를 위한 커서입니다. 첫 페이지는 `null`로 요청합니다.

size

Int

한 번에 조회할 개수입니다.

응답의 cursor.hasNext+`가 `+true+`이면 `+cursor.nextCursor 값을 다음 요청의 `cursor`로 전달합니다.

query Experiences($workspaceId: ID!, $cursor: String, $size: Int!) {
  experiences(workspaceId: $workspaceId, cursor: $cursor, size: $size) {
    experiences {
      experienceId
      title
    }
    cursor {
      hasNext
      nextCursor
    }
  }
}

첫 페이지 Variables:

{
  "workspaceId": "8f13f49e-132a-47b7-b704-d7eec18fd44b",
  "cursor": null,
  "size": 20
}

다음 페이지 Variables:

{
  "workspaceId": "8f13f49e-132a-47b7-b704-d7eec18fd44b",
  "cursor": "5",
  "size": 20
}

2. APIs

2.1. User

2.1.1. 내 정보 조회

Type: Query

Operation: me

요청 샘플:

query Me {
    me {
        userId
        email
        name
        profileImageUrl
        workspaces {
            workspaceId
        }
    }
}

커스텀 에러 코드:

전역 공통 에러 코드는 공통 에러 코드를 참고해 주세요.
아래에는 각 GraphQL operation의 요청 샘플과 도메인 로직에 따라 발생할 수 있는 커스텀 에러 코드만 명시합니다.

Code Message Description

user_not_found

사용자를 찾을 수 없습니다.

유저를 찾을 수 없는 경우

2.2. Experience

2.2.1. 경험 단건 조회

Type: Query

Operation: experience

요청 샘플:

query Experience {
    experience(
        workspaceId: "00000000-0000-0000-0000-000000000002"
        experienceId: 1
    ) {
        experienceId
        tags
        title
        project {
            projectId
            name
            summary
            period {
                startAt
                endAt
            }
            role
            experienceCount
        }
        contents {
            type
            star {
                situation
                task
                action
                result
            }
            free {
                content
            }
        }
    }
}

커스텀 에러 코드:

전역 공통 에러 코드는 공통 에러 코드를 참고해 주세요.
아래에는 각 GraphQL operation의 요청 샘플과 도메인 로직에 따라 발생할 수 있는 커스텀 에러 코드만 명시합니다.

Code Message Description

workspace_access_denied

워크스페이스에 접근할 권한이 없습니다.

워크스페이스 접근 권한이 없는 경우

workspace_not_found

워크스페이스를 찾을 수 없습니다.

워크스페이스를 찾을 수 없는 경우

experience_not_found

존재하지 않는 경험입니다

경험을 찾을 수 없는 경우

experience_project_not_found

존재하지 않는 프로젝트입니다

project 필드를 함께 요청했으나 연결된 경험 프로젝트를 찾을 수 없는 경우

2.2.2. 경험 목록 조회

Type: Query

Operation: experiences

요청 샘플:

query Experiences {
    experiences(
        workspaceId: "00000000-0000-0000-0000-000000000002"
        projectId: 1
        jdId: "00000000-0000-0000-0000-000000000003"
        cursor: null
        size: 10
    ) {
        experiences {
            experienceId
            tags
            title
            matchRate
            recommendedReason
            project {
                projectId
                name
            }
            contents {
                type
                star {
                    situation
                    task
                    action
                    result
                }
                free {
                    content
                }
            }
        }
        cursor {
            nextCursor
            hasNext
        }
    }
}

커스텀 에러 코드:

전역 공통 에러 코드는 공통 에러 코드를 참고해 주세요.
아래에는 각 GraphQL operation의 요청 샘플과 도메인 로직에 따라 발생할 수 있는 커스텀 에러 코드만 명시합니다.

Code Message Description

workspace_access_denied

워크스페이스에 접근할 권한이 없습니다.

워크스페이스 접근 권한이 없는 경우

workspace_not_found

워크스페이스를 찾을 수 없습니다.

워크스페이스를 찾을 수 없는 경우

experience_project_not_found

존재하지 않는 프로젝트입니다

`projectId`로 특정 프로젝트의 경험 목록을 조회했으나 프로젝트를 찾을 수 없는 경우

2.2.3. 경험 검색

Type: Query

Operation: searchExperiences

요청 샘플:

query SearchExperiences {
    searchExperiences(
        workspaceId: "00000000-0000-0000-0000-000000000002"
        keyword: "GraphQL"
        cursor: null
        size: 10
    ) {
        experiences {
            experienceId
            tags
            title
            project {
                projectId
                name
            }
            contents {
                type
                star {
                    situation
                    task
                    action
                    result
                }
                free {
                    content
                }
            }
        }
        cursor {
            nextCursor
            hasNext
        }
    }
}

커스텀 에러 코드:

전역 공통 에러 코드는 공통 에러 코드를 참고해 주세요.
아래에는 각 GraphQL operation의 요청 샘플과 도메인 로직에 따라 발생할 수 있는 커스텀 에러 코드만 명시합니다.

Code Message Description

workspace_access_denied

워크스페이스에 접근할 권한이 없습니다.

워크스페이스 접근 권한이 없는 경우

workspace_not_found

워크스페이스를 찾을 수 없습니다.

워크스페이스를 찾을 수 없는 경우

2.2.4. 경험 생성

Type: Mutation

Operation: createExperience

요청 샘플:

mutation CreateExperience {
    createExperience(
        workspaceId: "00000000-0000-0000-0000-000000000002"
        request: {
            projectId: 1
            tags: ["GraphQL", "Kotlin", "API"]
            title: "이력서 생성 API 구현"
            contents: {
                type: STAR
                star: {
                    situation: "이력서 섹션과 아이템을 자유롭게 구성해야 하는 요구사항이 있었습니다."
                    task: "클라이언트가 한 번의 요청으로 전체 이력서 스냅샷을 저장할 수 있는 API가 필요했습니다."
                    action: "SaveResumeInput을 기준으로 섹션 타입과 payload를 검증하고, core 서비스에서 저장 흐름을 일관되게 처리했습니다."
                    result: "생성, 수정 API의 입력 구조를 통일해 프론트엔드 연동 비용을 줄이고 테스트 커버리지를 확보했습니다."
                }
            }
        }
    ) {
        experienceId
        tags
        title
        project {
            projectId
            name
        }
        contents {
            type
            star {
                situation
                task
                action
                result
            }
            free {
                content
            }
        }
    }
}

커스텀 에러 코드:

전역 공통 에러 코드는 공통 에러 코드를 참고해 주세요.
아래에는 각 GraphQL operation의 요청 샘플과 도메인 로직에 따라 발생할 수 있는 커스텀 에러 코드만 명시합니다.

Code Message Description

workspace_access_denied

워크스페이스에 접근할 권한이 없습니다.

워크스페이스 접근 권한이 없는 경우

workspace_not_found

워크스페이스를 찾을 수 없습니다.

워크스페이스를 찾을 수 없는 경우

experience_project_not_found

존재하지 않는 프로젝트입니다

경험 프로젝트를 찾을 수 없는 경우

2.2.5. 경험 수정

Type: Mutation

Operation: updateExperience

요청 샘플:

mutation UpdateExperience {
    updateExperience(
        workspaceId: "00000000-0000-0000-0000-000000000002"
        experienceId: 1
        request: {
            projectId: 1
            tags: ["GraphQL", "Spring Boot"]
            title: "이력서 GraphQL API 개선"
            contents: {
                type: STAR
                star: {
                    situation: "이력서 섹션과 아이템을 자유롭게 구성해야 하는 요구사항이 있었습니다."
                    task: "클라이언트가 한 번의 요청으로 전체 이력서 스냅샷을 저장할 수 있는 API가 필요했습니다."
                    action: "SaveResumeInput을 기준으로 섹션 타입과 payload를 검증하고, core 서비스에서 저장 흐름을 일관되게 처리했습니다."
                    result: "생성, 수정 API의 입력 구조를 통일해 프론트엔드 연동 비용을 줄이고 테스트 커버리지를 확보했습니다."
                }
            }
        }
    ) {
        experienceId
        tags
        title
        project {
            projectId
            name
        }
        contents {
            type
            star {
                situation
                task
                action
                result
            }
            free {
                content
            }
        }
    }
}

커스텀 에러 코드:

전역 공통 에러 코드는 공통 에러 코드를 참고해 주세요.
아래에는 각 GraphQL operation의 요청 샘플과 도메인 로직에 따라 발생할 수 있는 커스텀 에러 코드만 명시합니다.

Code Message Description

workspace_access_denied

워크스페이스에 접근할 권한이 없습니다.

워크스페이스 접근 권한이 없는 경우

workspace_not_found

워크스페이스를 찾을 수 없습니다.

워크스페이스를 찾을 수 없는 경우

experience_not_found

존재하지 않는 경험입니다

경험을 찾을 수 없는 경우

experience_project_not_found

존재하지 않는 프로젝트입니다

경험 프로젝트를 찾을 수 없는 경우

2.2.6. 경험 삭제

Type: Mutation

Operation: deleteExperience

요청 샘플:

mutation DeleteExperience {
    deleteExperience(
        workspaceId: "00000000-0000-0000-0000-000000000002"
        experienceId: 1
    )
}

커스텀 에러 코드:

전역 공통 에러 코드는 공통 에러 코드를 참고해 주세요.
아래에는 각 GraphQL operation의 요청 샘플과 도메인 로직에 따라 발생할 수 있는 커스텀 에러 코드만 명시합니다.

Code Message Description

workspace_access_denied

워크스페이스에 접근할 권한이 없습니다.

워크스페이스 접근 권한이 없는 경우

workspace_not_found

워크스페이스를 찾을 수 없습니다.

워크스페이스를 찾을 수 없는 경우

experience_not_found

존재하지 않는 경험입니다

경험을 찾을 수 없는 경우

2.3. Experience Project

2.3.1. 경험 프로젝트 단건 조회

Type: Query

Operation: experienceProject

요청 샘플:

query ExperienceProject {
    experienceProject(
        workspaceId: "00000000-0000-0000-0000-000000000002"
        projectId: 1
    ) {
        projectId
        name
        summary
        period {
            startAt
            endAt
        }
        role
        experienceCount
    }
}

커스텀 에러 코드:

전역 공통 에러 코드는 공통 에러 코드를 참고해 주세요.
아래에는 각 GraphQL operation의 요청 샘플과 도메인 로직에 따라 발생할 수 있는 커스텀 에러 코드만 명시합니다.

Code Message Description

workspace_access_denied

워크스페이스에 접근할 권한이 없습니다.

워크스페이스 접근 권한이 없는 경우

workspace_not_found

워크스페이스를 찾을 수 없습니다.

워크스페이스를 찾을 수 없는 경우

experience_project_not_found

존재하지 않는 프로젝트입니다

경험 프로젝트를 찾을 수 없는 경우

2.3.2. 경험 프로젝트 목록 조회

Type: Query

Operation: experienceProjects

요청 샘플:

query ExperienceProjects {
    experienceProjects(
        workspaceId: "00000000-0000-0000-0000-000000000002"
        cursor: null
        size: 10
    ) {
        projects {
            projectId
            name
            summary
            period {
                startAt
                endAt
            }
            role
            experienceCount
        }
        cursor {
            nextCursor
            hasNext
        }
    }
}

커스텀 에러 코드:

전역 공통 에러 코드는 공통 에러 코드를 참고해 주세요.
아래에는 각 GraphQL operation의 요청 샘플과 도메인 로직에 따라 발생할 수 있는 커스텀 에러 코드만 명시합니다.

Code Message Description

workspace_access_denied

워크스페이스에 접근할 권한이 없습니다.

워크스페이스 접근 권한이 없는 경우

workspace_not_found

워크스페이스를 찾을 수 없습니다.

워크스페이스를 찾을 수 없는 경우

2.3.3. 경험 프로젝트 생성

Type: Mutation

Operation: createExperienceProject

요청 샘플:

mutation CreateExperienceProject {
    createExperienceProject(
        workspaceId: "00000000-0000-0000-0000-000000000002"
        input: {
            name: "잡도리 이력서 서비스"
            summary: "사용자가 이력서와 경험을 구조화해 관리할 수 있는 채용 플랫폼 기능"
            period: { startAt: "2025-01-01", endAt: "2025-06-30" }
            role: "Backend Developer"
        }
    ) {
        projectId
        name
        summary
        period {
            startAt
            endAt
        }
        role
        experienceCount
    }
}

커스텀 에러 코드:

전역 공통 에러 코드는 공통 에러 코드를 참고해 주세요.
아래에는 각 GraphQL operation의 요청 샘플과 도메인 로직에 따라 발생할 수 있는 커스텀 에러 코드만 명시합니다.

Code Message Description

workspace_access_denied

워크스페이스에 접근할 권한이 없습니다.

워크스페이스 접근 권한이 없는 경우

workspace_not_found

워크스페이스를 찾을 수 없습니다.

워크스페이스를 찾을 수 없는 경우

2.3.4. 경험 프로젝트 수정

Type: Mutation

Operation: updateExperienceProject

요청 샘플:

mutation UpdateExperienceProject {
    updateExperienceProject(
        workspaceId: "00000000-0000-0000-0000-000000000002"
        projectId: 1
        request: {
            name: "잡도리 이력서 플랫폼 고도화"
            summary: "이력서 작성, 경험 정리, GraphQL API를 개선한 프로젝트"
            period: { startAt: "2025-01-01", endAt: "2025-07-31" }
            role: "Backend Developer"
        }
    ) {
        projectId
        name
        summary
        period {
            startAt
            endAt
        }
        role
        experienceCount
    }
}

커스텀 에러 코드:

전역 공통 에러 코드는 공통 에러 코드를 참고해 주세요.
아래에는 각 GraphQL operation의 요청 샘플과 도메인 로직에 따라 발생할 수 있는 커스텀 에러 코드만 명시합니다.

Code Message Description

workspace_access_denied

워크스페이스에 접근할 권한이 없습니다.

워크스페이스 접근 권한이 없는 경우

workspace_not_found

워크스페이스를 찾을 수 없습니다.

워크스페이스를 찾을 수 없는 경우

experience_project_not_found

존재하지 않는 프로젝트입니다

경험 프로젝트를 찾을 수 없는 경우

2.3.5. 경험 프로젝트 삭제

Type: Mutation

Operation: deleteExperienceProject

요청 샘플:

mutation DeleteExperienceProject {
    deleteExperienceProject(
        workspaceId: "00000000-0000-0000-0000-000000000002"
        projectId: 1
    )
}

커스텀 에러 코드:

전역 공통 에러 코드는 공통 에러 코드를 참고해 주세요.
아래에는 각 GraphQL operation의 요청 샘플과 도메인 로직에 따라 발생할 수 있는 커스텀 에러 코드만 명시합니다.

Code Message Description

workspace_access_denied

워크스페이스에 접근할 권한이 없습니다.

워크스페이스 접근 권한이 없는 경우

workspace_not_found

워크스페이스를 찾을 수 없습니다.

워크스페이스를 찾을 수 없는 경우

experience_project_not_found

존재하지 않는 프로젝트입니다

경험 프로젝트를 찾을 수 없는 경우

2.4. Notion

2.4.1. Notion 연결

Type: Mutation

Operation: connectNotion

요청 샘플:

mutation ConnectNotion {
    connectNotion(
        workspaceId: "00000000-0000-0000-0000-000000000002"
        request: {
            authorizationCode: "notion-oauth-authorization-code"
            redirectUri: "http://localhost:3000/notion/callback"
        }
    ) {
        connectionId
        notionWorkspaceName
        notionWorkspaceIcon
    }
}

커스텀 에러 코드:

전역 공통 에러 코드는 공통 에러 코드를 참고해 주세요.
아래에는 각 GraphQL operation의 요청 샘플과 도메인 로직에 따라 발생할 수 있는 커스텀 에러 코드만 명시합니다.

Code Message Description

workspace_access_denied

워크스페이스에 접근할 권한이 없습니다.

워크스페이스 접근 권한이 없는 경우

workspace_not_found

워크스페이스를 찾을 수 없습니다.

워크스페이스를 찾을 수 없는 경우

notion_api_request_failed

Notion API 요청에 실패했습니다.

Notion OAuth 토큰 교환 요청이 실패한 경우

2.4.2. Notion 연결 해제

Type: Mutation

Operation: disconnectNotion

요청 샘플:

mutation DisconnectNotion {
    disconnectNotion(
        workspaceId: "00000000-0000-0000-0000-000000000002"
        connectionId: 740000000000000001
    )
}

커스텀 에러 코드:

전역 공통 에러 코드는 공통 에러 코드를 참고해 주세요.
아래에는 각 GraphQL operation의 요청 샘플과 도메인 로직에 따라 발생할 수 있는 커스텀 에러 코드만 명시합니다.

Code Message Description

workspace_access_denied

워크스페이스에 접근할 권한이 없습니다.

워크스페이스 접근 권한이 없는 경우

workspace_not_found

워크스페이스를 찾을 수 없습니다.

워크스페이스를 찾을 수 없는 경우

2.4.3. Notion 연결 목록 조회

Type: Query

Operation: notionConnections

요청 샘플:

query NotionConnections {
    notionConnections(
        workspaceId: "00000000-0000-0000-0000-000000000002"
        cursor: null
        size: 10
    ) {
        connections {
            connectionId
            notionWorkspaceName
            notionWorkspaceIcon
        }
        cursor {
            nextCursor
            hasNext
        }
    }
}

커스텀 에러 코드:

전역 공통 에러 코드는 공통 에러 코드를 참고해 주세요.
아래에는 각 GraphQL operation의 요청 샘플과 도메인 로직에 따라 발생할 수 있는 커스텀 에러 코드만 명시합니다.

Code Message Description

workspace_access_denied

워크스페이스에 접근할 권한이 없습니다.

워크스페이스 접근 권한이 없는 경우

workspace_not_found

워크스페이스를 찾을 수 없습니다.

워크스페이스를 찾을 수 없는 경우

2.4.4. Notion 페이지 검색

Type: Query

Operation: notionPages

요청 샘플:

query NotionPages {
    notionPages(
        workspaceId: "00000000-0000-0000-0000-000000000002"
        connectionId: 740000000000000001
        query: "이력서"
        cursor: null
        size: 10
    ) {
        pages {
            pageId
            title
            url
            lastEditedTime
        }
        cursor {
            nextCursor
            hasNext
        }
    }
}

커스텀 에러 코드:

전역 공통 에러 코드는 공통 에러 코드를 참고해 주세요.
아래에는 각 GraphQL operation의 요청 샘플과 도메인 로직에 따라 발생할 수 있는 커스텀 에러 코드만 명시합니다.

Code Message Description

workspace_access_denied

워크스페이스에 접근할 권한이 없습니다.

워크스페이스 접근 권한이 없는 경우

workspace_not_found

워크스페이스를 찾을 수 없습니다.

워크스페이스를 찾을 수 없는 경우

notion_connection_not_found

Notion 연결을 찾을 수 없습니다.

요청한 Notion 연결이 없거나 접근 권한이 없는 경우

notion_connection_need_reconnect

Notion을 다시 연결해야 합니다.

Notion 토큰 갱신에 실패했거나 연결 권한이 해제된 경우

notion_page_access_denied

Notion 페이지에 접근할 수 없습니다.

해당 페이지가 연결에 공유되지 않았거나 권한이 없는 경우

notion_api_request_failed

Notion API 요청에 실패했습니다.

Notion API 호출이 실패한 경우

2.4.5. Notion 경험 불러오기

Type: Mutation

Operation: importNotionExperiences

요청 샘플:

mutation ImportNotionExperiences {
    importNotionExperiences(
        workspaceId: "00000000-0000-0000-0000-000000000002"
        request: {
            connectionId: 740000000000000001
            pageId: "notion-page-id"
        }
    )
}

커스텀 에러 코드:

전역 공통 에러 코드는 공통 에러 코드를 참고해 주세요.
아래에는 각 GraphQL operation의 요청 샘플과 도메인 로직에 따라 발생할 수 있는 커스텀 에러 코드만 명시합니다.

Code Message Description

workspace_access_denied

워크스페이스에 접근할 권한이 없습니다.

워크스페이스 접근 권한이 없는 경우

workspace_not_found

워크스페이스를 찾을 수 없습니다.

워크스페이스를 찾을 수 없는 경우

notion_connection_not_found

Notion 연결을 찾을 수 없습니다.

요청한 Notion 연결이 없거나 접근 권한이 없는 경우

notion_connection_need_reconnect

Notion을 다시 연결해야 합니다.

Notion 토큰 갱신에 실패했거나 연결 권한이 해제된 경우

notion_page_access_denied

Notion 페이지에 접근할 수 없습니다.

해당 페이지가 연결에 공유되지 않았거나 권한이 없는 경우

notion_api_request_failed

Notion API 요청에 실패했습니다.

Notion API 호출이 실패한 경우

2.5. Resume

2.5.1. 이력서 목록 조회

Type: Query

Operation: resumes

요청 샘플:

query Resumes {
    resumes(
        workspaceId: "00000000-0000-0000-0000-000000000002"
        statuses: [COMPLETED, DRAFT]
    ) {
        resumes {
            resumeId
            targetJd {
                jdId
                sourceUrl
                companyName
                positionTitle
                insight {
                    strategy
                }
                status
            }
            template
            status
            createdAt
        }
        cursor {
            nextCursor
            hasNext
        }
    }
}

커스텀 에러 코드:

전역 공통 에러 코드는 공통 에러 코드를 참고해 주세요.
아래에는 각 GraphQL operation의 요청 샘플과 도메인 로직에 따라 발생할 수 있는 커스텀 에러 코드만 명시합니다.

Code Message Description

workspace_access_denied

워크스페이스에 접근할 권한이 없습니다.

워크스페이스 접근 권한이 없는 경우

workspace_not_found

워크스페이스를 찾을 수 없습니다.

워크스페이스를 찾을 수 없는 경우

2.5.2. 이력서 상태별 개수 조회

Type: Query

Operation: resumeCounts

요청 샘플:

query ResumeCounts {
    resumeCounts(
        workspaceId: "00000000-0000-0000-0000-000000000002"
    ) {
        status
        count
    }
}

커스텀 에러 코드:

전역 공통 에러 코드는 공통 에러 코드를 참고해 주세요.
아래에는 각 GraphQL operation의 요청 샘플과 도메인 로직에 따라 발생할 수 있는 커스텀 에러 코드만 명시합니다.

Code Message Description

workspace_access_denied

워크스페이스에 접근할 권한이 없습니다.

워크스페이스 접근 권한이 없는 경우

workspace_not_found

워크스페이스를 찾을 수 없습니다.

워크스페이스를 찾을 수 없는 경우

2.5.3. 이력서 상세 조회

Type: Query

Operation: resume

요청 샘플:

query Resume {
    resume(
        workspaceId: "00000000-0000-0000-0000-000000000002"
        resumeId: 94123123213123123
    ) {
        resumeId
        targetJd {
            jdId
            sourceUrl
            companyName
            positionTitle
            companyIntro
            responsibilities
            requiredExperiences
            preferredExperiences
            hiringProcess
            coreCompetencies
            insight {
                strategy
            }
            status
            createdAt
        }
        template
        status
        createdAt
        sections {
            sectionId
            type
            displayText
            displayOrder
            visible
            createdAt
            items {
                itemId
                displayOrder
                visible
                createdAt
                payload {
                    basicInfo {
                        name
                        email
                        phone
                        hideContact
                    }
                    coreSkill {
                        content
                    }
                    career {
                        companyName
                        role
                        period {
                            startAt
                            endAt
                        }
                        contents
                    }
                    experience {
                        name
                        role
                        period {
                            startAt
                            endAt
                        }
                        contents
                    }
                    education {
                        schoolName
                        major
                        degree
                        status
                        period {
                            startAt
                            endAt
                        }
                    }
                    award {
                        name
                        organization
                        awardedAt
                    }
                    language {
                        examName
                        scoreOrGrade
                        acquiredAt
                    }
                    certificate {
                        name
                        organization
                        acquiredAt
                    }
                    skill {
                        name
                        level
                    }
                }
            }
        }
    }
}

커스텀 에러 코드:

전역 공통 에러 코드는 공통 에러 코드를 참고해 주세요.
아래에는 각 GraphQL operation의 요청 샘플과 도메인 로직에 따라 발생할 수 있는 커스텀 에러 코드만 명시합니다.

Code Message Description

workspace_access_denied

워크스페이스에 접근할 권한이 없습니다.

워크스페이스 접근 권한이 없는 경우

workspace_not_found

워크스페이스를 찾을 수 없습니다.

워크스페이스를 찾을 수 없는 경우

resume_not_found

존재하지 않는 이력서입니다

이력서를 찾을 수 없는 경우

2.5.4. 이력서 생성

Type: Mutation

Operation: createResume

요청 샘플:

mutation CreateResumeWithDefaultItems {
    createResume(
        workspaceId: "00000000-0000-0000-0000-000000000002"
        input: {
            targetJdId: "00000000-0000-0000-0000-00000000000a"
            template: DEFAULT
            status: DRAFT
            optimizationMode: JOB_SPECIFIC
            sections: [
                {
                    type: BASIC_INFO
                    displayOrder: 10.0
                    visible: true
                    items: []
                    useDefaultItems: true
                }
                {
                    type: CORE_SKILL
                    displayOrder: 20.0
                    visible: true
                    items: []
                    useDefaultItems: true
                }
                {
                    type: EXPERIENCE
                    displayOrder: 30.0
                    visible: true
                    useDefaultItems: false
                    items: [
                        {
                            displayOrder: 1.0
                            visible: true
                            payload: {
                                experience: {
                                    name: "이력서 관리 GraphQL API 개발"
                                    role: "Backend Developer"
                                    period: { startAt: "2025-01-01", endAt: "2025-06-30" }
                                    contents: "이력서 생성, 조회, 수정, 삭제 GraphQL API 설계 및 구현"
                                }
                            }
                        }
                    ]
                }
                {
                    type: CAREER
                    displayOrder: 40.0
                    visible: true
                    items: []
                    useDefaultItems: true
                }
                {
                    type: EDUCATION
                    displayOrder: 60.0
                    visible: true
                    items: []
                    useDefaultItems: true
                }
                {
                    type: AWARD
                    displayOrder: 70.0
                    visible: true
                    items: []
                    useDefaultItems: true
                }
                {
                    type: LANGUAGE
                    displayOrder: 80.0
                    visible: true
                    items: []
                    useDefaultItems: true
                }
                {
                    type: CERTIFICATE
                    displayOrder: 90.0
                    visible: true
                    items: []
                    useDefaultItems: true
                }
                {
                    type: SKILL
                    displayOrder: 100.0
                    visible: true
                    items: []
                    useDefaultItems: true
                }
            ]
        }
    ) {
        resumeId
        targetJd {
            jdId
            sourceUrl
            companyName
            positionTitle
            companyIntro
            responsibilities
            requiredExperiences
            preferredExperiences
            hiringProcess
            coreCompetencies
            status
            createdAt
        }
        template
        status
        createdAt
        sections {
            sectionId
            type
            displayText
            displayOrder
            visible
            items {
                itemId
                displayOrder
                visible
                payload {
                    basicInfo {
                        name
                        email
                        phone
                        hideContact
                    }
                    coreSkill {
                        content
                    }
                    experience {
                        name
                        role
                        period {
                            startAt
                            endAt
                        }
                        contents
                    }
                    career {
                        companyName
                        role
                        period {
                            startAt
                            endAt
                        }
                        contents
                    }
                    education {
                        schoolName
                        major
                        degree
                        status
                        period {
                            startAt
                            endAt
                        }
                    }
                    award {
                        name
                        organization
                        awardedAt
                    }
                    language {
                        examName
                        scoreOrGrade
                        acquiredAt
                    }
                    certificate {
                        name
                        organization
                        acquiredAt
                    }
                    skill {
                        name
                        level
                    }
                }
            }
        }
    }
}

커스텀 에러 코드:

전역 공통 에러 코드는 공통 에러 코드를 참고해 주세요.
아래에는 각 GraphQL operation의 요청 샘플과 도메인 로직에 따라 발생할 수 있는 커스텀 에러 코드만 명시합니다.

Code Message Description

workspace_access_denied

워크스페이스에 접근할 권한이 없습니다.

워크스페이스 접근 권한이 없는 경우

workspace_not_found

워크스페이스를 찾을 수 없습니다.

워크스페이스를 찾을 수 없는 경우

2.5.5. 이력서 수정

Type: Mutation

Operation: updateResume

요청 샘플:

mutation UpdateResume {
    updateResume(
        workspaceId: "00000000-0000-0000-0000-000000000002"
        resumeId: 94123123213123123
        input: {
            targetJdId: "00000000-0000-0000-0000-00000000000a"
            template: DEFAULT
            status: COMPLETED
            optimizationMode: JOB_SPECIFIC
            sections: [
                {
                    type: BASIC_INFO
                    displayOrder: 1.0
                    visible: true
                    useDefaultItems: false
                    items: [
                        {
                            displayOrder: 1.0
                            visible: true
                            payload: {
                                basicInfo: {
                                    name: "잡도리"
                                    email: "jobdori.backend@example.com"
                                    phone: "010-1234-5678"
                                    hideContact: false
                                }
                            }
                        }
                    ]
                }
                {
                    type: CORE_SKILL
                    displayOrder: 2.0
                    visible: true
                    useDefaultItems: false
                    items: [
                        {
                            displayOrder: 1.0
                            visible: true
                            payload: {
                                coreSkill: {
                                    content: "Kotlin, Spring Boot, PostgreSQL 기반 백엔드 개발과 GraphQL API 설계에 강점이 있습니다."
                                }
                            }
                        }
                    ]
                }
                {
                    type: EXPERIENCE
                    displayOrder: 3.0
                    visible: true
                    useDefaultItems: false
                    items: [
                        {
                            displayOrder: 1.0
                            visible: true
                            payload: {
                                experience: {
                                    name: "이력서 관리 GraphQL API 개발"
                                    role: "Backend Developer"
                                    period: { startAt: "2025-01-01", endAt: "2025-06-30" }
                                    contents: "이력서 생성, 조회, 수정, 삭제 API 설계 및 구현"
                                }
                            }
                        }
                    ]
                }
                {
                    type: CAREER
                    displayOrder: 4.0
                    visible: true
                    useDefaultItems: false
                    items: [
                        {
                            displayOrder: 1.0
                            visible: true
                            payload: {
                                career: {
                                    companyName: "잡도리"
                                    role: "Backend Developer"
                                    period: { startAt: "2024-01-01", endAt: "2025-12-31" }
                                    contents: "채용 플랫폼 백엔드 개발 및 운영"
                                }
                            }
                        }
                    ]
                }
                {
                    type: EDUCATION
                    displayOrder: 5.0
                    visible: true
                    useDefaultItems: false
                    items: [
                        {
                            displayOrder: 1.0
                            visible: true
                            payload: {
                                education: {
                                    schoolName: "잡도리대학교"
                                    major: "컴퓨터공학"
                                    degree: "BACHELOR"
                                    status: "GRADUATED"
                                    period: { startAt: "2018-03-01", endAt: "2024-02-29" }
                                }
                            }
                        }
                    ]
                }
                {
                    type: AWARD
                    displayOrder: 6.0
                    visible: true
                    useDefaultItems: false
                    items: [
                        {
                            displayOrder: 1.0
                            visible: true
                            payload: {
                                award: {
                                    name: "잡도리 해커톤 대상"
                                    organization: "잡도리 테크랩"
                                    awardedAt: "2024-08-01"
                                }
                            }
                        }
                    ]
                }
                {
                    type: LANGUAGE
                    displayOrder: 7.0
                    visible: true
                    useDefaultItems: false
                    items: [
                        {
                            displayOrder: 1.0
                            visible: true
                            payload: {
                                language: {
                                    examName: "TOEIC"
                                    scoreOrGrade: "900"
                                    acquiredAt: "2024-03-15"
                                }
                            }
                        }
                    ]
                }
                {
                    type: CERTIFICATE
                    displayOrder: 8.0
                    visible: true
                    useDefaultItems: false
                    items: [
                        {
                            displayOrder: 1.0
                            visible: true
                            payload: {
                                certificate: {
                                    name: "정보처리기사"
                                    organization: "한국산업인력공단"
                                    acquiredAt: "2024-05-20"
                                }
                            }
                        }
                    ]
                }
                {
                    type: SKILL
                    displayOrder: 9.0
                    visible: true
                    useDefaultItems: false
                    items: [
                        {
                            displayOrder: 1.0
                            visible: true
                            payload: {
                                skill: {
                                    name: "Kotlin"
                                    level: "HIGH"
                                }
                            }
                        }
                    ]
                }
            ]
        }
    ) {
        resumeId
        targetJd {
            jdId
            sourceUrl
            companyName
            positionTitle
            companyIntro
            responsibilities
            requiredExperiences
            preferredExperiences
            hiringProcess
            coreCompetencies
            insight {
                strategy
            }
            status
            createdAt
        }
        template
        status
        createdAt
        sections {
            sectionId
            type
            displayText
            displayOrder
            visible
            items {
                itemId
                displayOrder
                visible
                payload {
                    basicInfo { name email phone hideContact }
                    coreSkill { content }
                    experience {
                        name
                        role
                        period { startAt endAt }
                        contents
                    }
                    career {
                        companyName
                        role
                        period { startAt endAt }
                        contents
                    }
                    education {
                        schoolName
                        major
                        degree
                        status
                        period { startAt endAt }
                    }
                    award { name organization awardedAt }
                    language { examName scoreOrGrade acquiredAt }
                    certificate { name organization acquiredAt }
                    skill { name level }
                }
            }
        }
    }
}

커스텀 에러 코드:

전역 공통 에러 코드는 공통 에러 코드를 참고해 주세요.
아래에는 각 GraphQL operation의 요청 샘플과 도메인 로직에 따라 발생할 수 있는 커스텀 에러 코드만 명시합니다.

Code Message Description

workspace_access_denied

워크스페이스에 접근할 권한이 없습니다.

워크스페이스 접근 권한이 없는 경우

workspace_not_found

워크스페이스를 찾을 수 없습니다.

워크스페이스를 찾을 수 없는 경우

resume_not_found

존재하지 않는 이력서입니다

이력서를 찾을 수 없는 경우

2.5.6. 이력서 삭제

Type: Mutation

Operation: deleteResume

요청 샘플:

mutation DeleteResume {
    deleteResume(
        workspaceId: "00000000-0000-0000-0000-000000000002"
        resumeId: 94123123213123123
    )
}

커스텀 에러 코드:

전역 공통 에러 코드는 공통 에러 코드를 참고해 주세요.
아래에는 각 GraphQL operation의 요청 샘플과 도메인 로직에 따라 발생할 수 있는 커스텀 에러 코드만 명시합니다.

Code Message Description

workspace_access_denied

워크스페이스에 접근할 권한이 없습니다.

워크스페이스 접근 권한이 없는 경우

workspace_not_found

워크스페이스를 찾을 수 없습니다.

워크스페이스를 찾을 수 없는 경우

resume_not_found

존재하지 않는 이력서입니다

이력서를 찾을 수 없는 경우

2.6. JD

2.6.1. JD 단건 조회

Type: Query

Operation: jd

요청 샘플:

query Jd {
    jd(
        workspaceId: "00000000-0000-0000-0000-000000000002"
        id: "00000000-0000-0000-0000-00000000000a"
    ) {
        jdId
        sourceUrl
        companyName
        positionTitle
        companyIntro
        responsibilities
        requiredExperiences
        preferredExperiences
        hiringProcess
        coreCompetencies
        insight {
            strategy
        }
        status
        createdAt
    }
}

커스텀 에러 코드:

전역 공통 에러 코드는 공통 에러 코드를 참고해 주세요.
아래에는 각 GraphQL operation의 요청 샘플과 도메인 로직에 따라 발생할 수 있는 커스텀 에러 코드만 명시합니다.

Code Message Description

workspace_access_denied

워크스페이스에 접근할 권한이 없습니다.

워크스페이스 접근 권한이 없는 경우

workspace_not_found

워크스페이스를 찾을 수 없습니다.

워크스페이스를 찾을 수 없는 경우

jd_not_found

등록되지 않은 JD입니다.

존재하지 않거나 소유자가 아닌 JD 조회

2.6.2. JD 목록 조회

Type: Query

Operation: jds

요청 샘플:

query Jds {
    jds(
        workspaceId: "00000000-0000-0000-0000-000000000002"
        sort: LATEST
        status: IN_PROGRESS
    ) {
        jdId
        companyName
        positionTitle
        status
        createdAt
    }
}

커스텀 에러 코드:

전역 공통 에러 코드는 공통 에러 코드를 참고해 주세요.
아래에는 각 GraphQL operation의 요청 샘플과 도메인 로직에 따라 발생할 수 있는 커스텀 에러 코드만 명시합니다.

Code Message Description

workspace_access_denied

워크스페이스에 접근할 권한이 없습니다.

워크스페이스 접근 권한이 없는 경우

workspace_not_found

워크스페이스를 찾을 수 없습니다.

워크스페이스를 찾을 수 없는 경우

2.6.3. JD 등록

Type: Mutation

Operation: registerJd

요청 샘플:

mutation RegisterJd {
    registerJd(
        workspaceId: "00000000-0000-0000-0000-000000000002"
        request: { sourceUrl: "https://example.com/jd" }
    ) {
        jd {
            jdId
            companyName
            positionTitle
            insight {
                strategy
            }
            status
        }
        candidates {
            title
            body
        }
    }
}

커스텀 에러 코드:

전역 공통 에러 코드는 공통 에러 코드를 참고해 주세요.
아래에는 각 GraphQL operation의 요청 샘플과 도메인 로직에 따라 발생할 수 있는 커스텀 에러 코드만 명시합니다.

Code Message Description

workspace_access_denied

워크스페이스에 접근할 권한이 없습니다.

워크스페이스 접근 권한이 없는 경우

workspace_not_found

워크스페이스를 찾을 수 없습니다.

워크스페이스를 찾을 수 없는 경우

experience_required

경험 정리가 필요합니다. 경험을 추가해주세요.

워크스페이스에 활성 상태의 경험이 없어 JD를 등록할 수 없는 경우

jd_invalid_url

요청할 수 없는 URL입니다.

허용되지 않은 스킴이거나 내부 네트워크 주소(SSRF 차단)

jd_access_denied

해당 페이지에 접근할 수 없습니다. 내용을 직접 붙여넣어 주세요.

JD URL 접근 거부(4xx)

jd_fetch_failed

공고 내용을 가져오지 못했습니다. 내용을 직접 붙여넣어 주세요.

JD 본문 수집 실패(모든 크롤 단 실패)

jd_not_a_posting

채용 공고가 아닌 것 같아요. 공고 URL이나 내용을 확인해 주세요.

AI가 채용 공고로 인식하지 못한 본문/URL

ai_rate_limited

AI 요청이 많아 잠시 후 다시 시도해 주세요.

AI 요청 한도 초과

ai_generation_failed

일시적인 오류가 발생했습니다. 잠시 후 다시 시도해 주세요.

AI 응답 생성 실패

ai_unavailable

현재 AI 서비스를 이용할 수 없습니다. 잠시 후 다시 시도해 주세요.

AI 서비스 접근 불가

ai_timeout

AI 응답이 지연되고 있습니다. 잠시 후 다시 시도해 주세요.

AI 응답 지연/시간 초과

2.6.4. JD 완료 처리

Type: Mutation

Operation: markJdCompleted

요청 샘플:

mutation MarkJdCompleted {
    markJdCompleted(
        workspaceId: "00000000-0000-0000-0000-000000000002"
        id: "00000000-0000-0000-0000-00000000000a"
    ) {
        jdId
        status
    }
}

커스텀 에러 코드:

전역 공통 에러 코드는 공통 에러 코드를 참고해 주세요.
아래에는 각 GraphQL operation의 요청 샘플과 도메인 로직에 따라 발생할 수 있는 커스텀 에러 코드만 명시합니다.

Code Message Description

workspace_access_denied

워크스페이스에 접근할 권한이 없습니다.

워크스페이스 접근 권한이 없는 경우

workspace_not_found

워크스페이스를 찾을 수 없습니다.

워크스페이스를 찾을 수 없는 경우

jd_not_found

등록되지 않은 JD입니다.

존재하지 않거나 소유자가 아닌 JD 조회

2.7. Profile

2.7.1. 이력서 기본 정보 프로필 조회

Type: Query

Operation: profile

요청 샘플:

query Profile {
    profile(workspaceId: "00000000-0000-0000-0000-000000000002") {
        profileId
        name
        phone
        email
        coreCompetency
        educations {
            school
            major
            degree
            status
            period {
                startAt
                endAt
            }
        }
        careers {
            company
            position
            period {
                startAt
                endAt
            }
            description
        }
        languageTests {
            testName
            score
            acquiredAt
        }
        awards {
            title
            organization
            awardedAt
        }
        certifications {
            name
            issuer
            acquiredAt
        }
        skills {
            name
            level
        }
    }
}

커스텀 에러 코드:

전역 공통 에러 코드는 공통 에러 코드를 참고해 주세요.
아래에는 각 GraphQL operation의 요청 샘플과 도메인 로직에 따라 발생할 수 있는 커스텀 에러 코드만 명시합니다.

Code Message Description

workspace_access_denied

워크스페이스에 접근할 권한이 없습니다.

워크스페이스 접근 권한이 없는 경우

workspace_not_found

워크스페이스를 찾을 수 없습니다.

워크스페이스를 찾을 수 없는 경우

2.7.2. 이력서 기본 정보 프로필 수정

Type: Mutation

Operation: updateProfile

요청 샘플:

mutation UpdateProfile {
    updateProfile(
        workspaceId: "00000000-0000-0000-0000-000000000002"
        request: {
            name: "잡도리"
            phone: "010-1111-2222"
            email: "rlajae14@gmail.com"
            coreCompetency: "콘텐츠 기획과 데이터 기반 개선에 강점이 있는 마케터입니다."
            educations: [
                {
                    school: "잡도리대학교"
                    major: "경영학과"
                    degree: BACHELOR
                    status: EXPECTED_GRADUATION
                    period: {
                        startAt: "2020-03-01"
                        endAt: "2026-02-28"
                    }
                }
            ]
            careers: [
                {
                    company: "잡도리컴퍼니"
                    position: "마케팅 인턴"
                    period: {
                        startAt: "2024-07-01"
                        endAt: "2024-12-31"
                    }
                    description: "신규 서비스 런칭 캠페인의 콘텐츠 기획과 성과 분석을 담당했습니다."
                }
            ]
            certifications: [
                {
                    name: "GAIQ"
                    issuer: "Google"
                    acquiredAt: "2024-05-10"
                }
            ]
            skills: [
                {
                    name: "GA4"
                    level: HIGH
                }
            ]
        }
    ) {
        profileId
        name
        phone
        email
        coreCompetency
        educations {
            school
            degree
            status
            period {
                startAt
                endAt
            }
        }
        careers {
            company
            position
            description
        }
        certifications {
            name
            acquiredAt
        }
        skills {
            name
            level
        }
    }
}

커스텀 에러 코드:

전역 공통 에러 코드는 공통 에러 코드를 참고해 주세요.
아래에는 각 GraphQL operation의 요청 샘플과 도메인 로직에 따라 발생할 수 있는 커스텀 에러 코드만 명시합니다.

Code Message Description

workspace_access_denied

워크스페이스에 접근할 권한이 없습니다.

워크스페이스 접근 권한이 없는 경우

workspace_not_found

워크스페이스를 찾을 수 없습니다.

워크스페이스를 찾을 수 없는 경우

2.7.3. 핵심역량 AI 생성

Type: Mutation

Operation: generateCoreCompetency

요청 샘플:

mutation GenerateCoreCompetency {
    generateCoreCompetency(
        workspaceId: "00000000-0000-0000-0000-000000000002"
        resumeId: 94123123213123123
        jdId: "00000000-0000-0000-0000-000000000003"
    ) {
        coreCompetency
        strategy
    }
}

커스텀 에러 코드:

전역 공통 에러 코드는 공통 에러 코드를 참고해 주세요.
아래에는 각 GraphQL operation의 요청 샘플과 도메인 로직에 따라 발생할 수 있는 커스텀 에러 코드만 명시합니다.

Code Message Description

invalid_arguments

입력한 내용을 다시 확인해 주세요.

필수 파라미터가 없거나, 파라미터가 유효하지 않는 경우

workspace_access_denied

워크스페이스에 접근할 권한이 없습니다.

워크스페이스 접근 권한이 없는 경우

workspace_not_found

워크스페이스를 찾을 수 없습니다.

워크스페이스를 찾을 수 없는 경우

resume_not_found

존재하지 않는 이력서입니다

이력서를 찾을 수 없는 경우

jd_not_found

등록되지 않은 JD입니다.

존재하지 않거나 소유자가 아닌 JD 조회

ai_generation_failed

일시적인 오류가 발생했습니다. 잠시 후 다시 시도해 주세요.

AI 응답 생성 실패

2.7.4. 프로필 텍스트 AI 다듬기

Type: Mutation

Operation: polishProfileText

요청 샘플:

mutation PolishProfileText {
    polishProfileText(
        workspaceId: "00000000-0000-0000-0000-000000000002"
        request: {
            text: "런칭 캠페인에서 메시지 A/B 테스트를 수행해서 전환율을 많이 개선했음"
            kind: EXPERIENCE_DESCRIPTION
            structure: BULLET
            instruction: "정중한 어투로, 전환율 수치를 강조"
            title: "콘텐츠 마케팅 캠페인 운영"
            jdId: "00000000-0000-0000-0000-000000000003"
        }
    )
}

커스텀 에러 코드:

전역 공통 에러 코드는 공통 에러 코드를 참고해 주세요.
아래에는 각 GraphQL operation의 요청 샘플과 도메인 로직에 따라 발생할 수 있는 커스텀 에러 코드만 명시합니다.

Code Message Description

workspace_access_denied

워크스페이스에 접근할 권한이 없습니다.

워크스페이스 접근 권한이 없는 경우

workspace_not_found

워크스페이스를 찾을 수 없습니다.

워크스페이스를 찾을 수 없는 경우

jd_not_found

등록되지 않은 JD입니다.

존재하지 않거나 소유자가 아닌 JD 조회

ai_generation_failed

일시적인 오류가 발생했습니다. 잠시 후 다시 시도해 주세요.

AI 응답 생성 실패