본문으로 건너뛰기

Pub/Sub API

안내

토픽 생성, 토픽 삭제, 서브스크립션 생성, 서브스크립션 삭제 API는 kr-central-2에서만 지원합니다.

공통 에러 코드

Response Error Syntax
{
"error": {
"code": int,
"message": string
}
}

// Example
{
"error": {
"code": 3,
"message": "you have passed an invalid ack ID to the service (ack_id=MTZBRklHTVZTREZTJEpTLkFQSQ==)"
}
}

에러 메시지 및 문제 해결

Error CodeHTTP Code응답 내용 및 해결 방법
3 (INVALID_ARGUMENT)400유효하지 않은 요청
The request is invalid; a required argument may be missing, exceeds limits, or has an invalid value.

해결 방법: 에러 메시지 확인 후 요청 내용 재시도 권장
9 (FAILED_PRECONDITION)400사전 조건 실패
Something must be done in the system to allow this operation.

해결 방법: 요청 재확인 권장
7 (PERMISSION_DENIED)403권한 없음
The certification is invalid.

해결 방법: 권한 획득 후 재시도 권장
5 (NOT_FOUND)404토픽, 서브스크립션을 찾을 수 없음
The topic or subscription referenced has not been found. In the case of JSON requests, it may also happen if the URL path is not a correct REST path.
For publish and pull operations, the propagation of an object creation may take a few seconds.

해결 방법: 리소스 생성 직후라면 재요청 권장 또는 해당 토픽, 서브스크립션 생성 후 재시도 권장
13 (INTERNAL)500내부 서버 에러
This error indicates an internal server error; it should not occur. If this error occurs, please report to cloud support. The error should be transient.

해결 방법: 재시도 권장
14 (UNAVAILABLE)503내부 서버 에러
This error indicates an internal server error; it should not occur. If this error occurs, please report to cloud support. The error should be transient.

해결 방법: 재시도 권장

토픽

토픽과 관련한 API는 다음과 같습니다.

토픽 생성

지정한 이름으로 토픽을 생성합니다.

API 호출 방식
메서드URI
PUT{endpoint-url}/v1/domains/{domain-id}/projects/{project-id}/topics/{topic-name}
Path유형필수 여부설명
domain-idstring필수  프로젝트가 속한 조직 ID
project-idstring필수카카오클라우드의 프로젝트 ID
topic-namestring필수토픽 이름
Request Header
Request유형필수 여부설명
Credential-IDstring필수  액세스 키 ID
Credential-Secretstring필수보안 액세스 키
Request Body
토픽 생성 Request Body
{
"topic":{
"description": "topic description",
"messageRetentionDuration": "604800s"
}
}
Response Elements
Request유형필수 여부설명
descriptionstring선택토픽 설명
messageRetentionDurationstring선택메시지 보존 기간
- Default: 604800s(7d)
Response Body
토픽 생성 Response Body
{
"id": string,
"domain": string,
"project": string,
"name": string,
"messageRetentionDuration": string,
"subscriptionCount": int,
"description": string,
"creator": string,
"createdAt": string
}
Response Elements
Response유형설명Output Only
idstring토픽 IDO
domainstring토픽이 포함된 조직 ID
projectstring토픽이 포함된 프로젝트 ID
namestring토픽 이름
messageRetentionDurationstring토픽의 메시지 보존 기간
subscriptionCountint토픽에 연결된 서브스크립션의 개수O
descriptionstring토픽 설명
creatorstring생성자O
createdAttimestamp생성시간O

토픽 목록 조회

프로젝트에 생성된 토픽의 목록을 가져옵니다.

API 호출 방식
메서드URI
GET{endpoint-url}/v1/domains/{domain-id}/projects/{project-id}/topics
Path유형필수 여부설명
domain-idstring필수  프로젝트가 속한 조직의 ID
project-idstring필수카카오클라우드의 프로젝트 ID
Request Header
Request유형필수 여부설명
Credential-IDstring필수  액세스 키 ID
Credential-Secretstring필수보안 액세스 키
Query Params
Request유형설명
pageSizeint한 번에 조회할 목록 개수
pageTokenstring다음 목록을 불러오기 위한 변수
Response Body
토픽 목록 조회 Response Body
{
"topics": [
{
object (Topic)
}
],
"nextPageToken": string
}

//object (Topic) Example
{
"id": string,
"domain": string,
"project": string,
"name": string,
"messageRetentionDuration": string,
"subscriptionCount": int,
"description": string,
"creator": string,
"createdAt": string
}
Response Elements
필드유형설명
topicsObject Array (Topic)토픽 목록 및 정보
nextPageTokenstring다음 토픽을 가져오기 위한 토큰
Object Array (Topic)
필드유형설명Output Only
idstring토픽 IDO
domainstring토픽이 포함된 조직 ID
projectstring토픽이 포함된 프로젝트 ID
namestring토픽 이름
messageRetentionDurationstring토픽의 메시지 보존 기간
subscriptionCountint토픽에 연결된 서브스크립션의 개수O
descriptionstring토픽 설명
creatorstring생성자O
createdAttimestamp생성시간O

토픽 상세 조회

특정 토픽의 상세 정보를 조회합니다.

API 호출 방식
메서드요청 URL
GET  {endpoint-url}/v1/domains/{domain-id}/projects/{project-id}/topics/{topic-name}
Path유형필수 여부설명
domain-idstring필수   프로젝트가 속한 조직의 ID
project-idstring필수카카오클라우드의 프로젝트 ID
topic-namestring필수토픽 이름
Request Header
Request유형필수 여부설명
Credential-IDstring필수   액세스 키 ID
Credential-Secretstring필수보안 액세스 키
Response Body
토픽 상세 조회 Response Body
{
"id": string,
"domain": string,
"project": string,
"name": string,
"messageRetentionDuration": string,
"subscriptionCount": int,
"description": string,
"creator": string,
"createdAt": string
}
Response Elements
필드유형설명Output Only
idstring토픽 IDO
domainstring토픽이 포함된 조직 ID
projectstring토픽이 포함된 프로젝트 ID
namestring토픽 이름
messageRetentionDurationstring토픽의 메시지 보존 기간
subscriptionCountint토픽에 연결된 서브스크립션의 개수O
descriptionstring토픽 설명
creatorstring생성자O
createdAttimestamp생성시간O

메시지 게시하기

토픽에 1개 이상의 메시지를 보냅니다.

API 호출 방식
메서드요청 URL
POST {endpoint-url}/v1/domains/{domain-id}/projects/{project-id}/topics/{topic-name}/publish
Path유형필수 여부설명
domain-idstring필수  프로젝트가 속한 조직의 ID
project-idstring필수카카오클라우드의 프로젝트 ID
topic-namestring필수토픽 이름
Request Header
Request유형필수 여부설명
Credential-IDstring필수  액세스 키 ID
Credential-Secretstring필수보안 액세스 키
Request Body
메시지 게시하기 Request Body
{
"messages": [
{
"data": "66mU7Iuc7KeAIOqyjOyLnCDthYzsiqTtirjsnoXri4jri6Qu",
"attributes": {
"key1": "value1",
"key2": "value2"
}
},
{
"data": "message-2"
}
]
}
Request Elements
Request유형필수 여부설명
messagesObject Array필수  토픽에 보낼 메시지 목록
- Max : 100
message[].datastring필수
(attributes가 없을 경우)
메시지 내용
- 최대 용량: 1 MiB
⚠️ 주의: Base64로 인코딩되어 있어야 합니다.
message[].attributesmap
[string : string]
필수
(data가 없을 경우)
메시지 속성
- 최대 개수: 100개
- Key : 1~256 자
- Value : 1~1024 자
- Key,Value의 총 크기는 60KiB를 초과할 수 없습니다.
⚠️ 주의: kakaoc로 시작하는 키는 사용할 수 없습니다.
Response Body
메시지 게시하기 Response Body
{
"messageIds": [
string,
string
]
}
Response Elements
Response유형설명
messageIdsstring array메시지 별로 발급된 고유 ID

토픽 수정

토픽의 설명, 메시지 보존기간 등을 수정할 수 있습니다. 메시지 보존기간은 기존에 설정한 시간을 기준으로 연장만 할 수 있습니다.
사용자 생성 토픽은 7일까지, Default-Topic은 31일까지 수정할 수 있습니다.

API 호출 방식
메서드요청 URL
PATCH{endpoint-url}/v1/domains/{domain-id}/projects/{project-id}/topics/{topic-name}
Path유형필수 여부설명
domain-idstring필수  프로젝트가 속한 조직의 ID
project-idstring필수카카오클라우드의 프로젝트 ID
topic-namestring필수토픽 이름
Request Header
Request유형필수 여부설명
Credential-IDstring필수   액세스 키 ID
Credential-Secretstring필수   보안 액세스 키
Request Body
토픽 수정 Request Body
{
"topic": {
"description": "topic description",
"messageRetentionDuration": "604800s"
},
"updateMask": "messageRetentionDuration,description"
}
Request Elements
Request유형필수 여부설명
topic.descriptionstring필수
(updateMask에 포함될 경우 필수)
토픽에 대한 설명
topic.messageRetentionDurationstring선택
(updateMask에 포함될 경우 필수)
메시지 보존기간
- 기존에 설정한 시간보다 길게만 수정 가능(seconds 기준)
updateMaskstring필수업데이트할 목록
- 쉼표(,)로 구분
Response Body
토픽 수정 Response Body
{
object (Topic) // 토픽 상세 정보
}


// object (Topic) Example
{
"id": string,
"domain": string,
"project": string,
"name": string,
"messageRetentionDuration": string,
"subscriptionCount": int,
"description": string,
"creator": string,
"createdAt": string
}
Response Elements
Response유형설명Output Only
idstring토픽 IDO
domainstring토픽이 포함된 조직 ID
projectstring토픽이 포함된 프로젝트 ID
namestring토픽 이름
messageRetentionDurationstring토픽의 메시지 보존 기간
subscriptionCountint토픽에 연결된 서브스크립션의 개수O
descriptionstring토픽 설명
creatorstring생성자O
createdAttimestamp생성시간O

토픽 삭제

지정한 이름의 토픽을 삭제합니다.

주의

토픽 삭제 시 하위 서브스크립션이 함께 삭제됩니다.

API 호출 방식
메서드URI
DELETE{endpoint-url}/v1/domains/{domain-id}/projects/{project-id}/topics/{topic-name}
Path유형필수 여부설명
domain-idstring필수  프로젝트가 속한 조직의 ID
project-idstring필수카카오클라우드의 프로젝트 ID
topic-namestring필수토픽 이름
Request Header
Request유형필수 여부설명
Credential-IDstring필수   액세스 키 ID
Credential-Secretstring필수   보안 액세스 키

토픽의 서브스크립션 조회

토픽에 연결된 서브스크립션 목록을 조회합니다.

API 호출 방식
메서드URI
GET  {endpoint-url}/v1/domains/{domain-id}/projects/{project-id}/topics/{topic-name}/subscriptions
Path유형필수 여부설명
domain-idstring필수프로젝트가 속한 조직의 ID
project-idstring필수카카오클라우드의 프로젝트 ID
topic-namestring필수토픽 이름
Request Header
Request유형필수 여부설명
Credential-IDstring필수   액세스 키 ID
Credential-Secretstring필수보안 액세스 키
Query Params
Request유형설명
pageSizeint한 번에 조회할 목록 개수
pageTokenstring다음 목록을 불러오기 위한 변수
Response Body
토픽의 서브스크립션 조회 Response Body
{
"subscriptions": [
string
],
"nextPageToken": string
}
Response Elements
필드유형설명
subscriptionsstring Array토픽에 연결된 서브스크립션 이름 목록
nextPageTokenstring다음 서브스크립션 목록을 가지고 오기 위한 토큰

서브스크립션

서브스크립션과 관련한 API는 다음과 같습니다.

서브스크립션 생성

지정한 이름으로 서브스크립션을 생성합니다.

API 호출 방식
메서드URI
PUT{endpoint-url}/v1/domains/{domain-id}/projects/{project-id}/subscriptions/{sub-name}
Path유형필수 여부설명
domain-idstring필수  프로젝트가 속한 조직 ID
project-idstring필수카카오클라우드의 프로젝트 ID
sub-namestring필수서브스크립션의 이름
Request Body
서브스크립션 생성 Request Body
{
"subscription":{
"topic": "topic-1",
//Push 유형의 서브스크립션 생성 시
"pushConfig": {
object (PushConfig)
},
// Object storage 유형의 서브스크립션 생성 시
"objectStorageConfig": {
object (ObjectStorageConfig)
},
"ackDeadlineSeconds": 30,
"messageRetentionDuration": "604800s",
"maxDeliveryAttempt": 1
}
}
Request Elements
Request유형필수 여부설명
subscription.topicstring필수  연결할 토픽의 이름
subscription.pushConfigObject (PushConfig)선택PushSubscription의 정보
- Endpoint Message : Object (PushEndpointMessage)
- 만약 endpoint를 설정하지 않는다면 해당 서브스크립션은 Pull 유형의 서브스크립션으로 생성됨
subscription.objectStorageConfigObject (ObjectStorageConfig)선택ObjectStorageSubscription의 정보
- pushConfig와 동시에 사용할 수 없음
subscription.messageRetentionDurationint선택메시지 보존기간
- Default: 토픽의 messageRetentionDuration(seconds 단위 입력)
subscription.maxDeliveryAttemptstring선택메시지 재전송 횟수
- Default: -1 (무제한)
subscription.ackDeadlineSecondsint선택Pub/Sub이 Subscriber에게 메시지를 재전송 하기 전 대기하는 시간
- Default : 10s (seconds 기준)
- 만약, subscriber가 메시지를 수신한 뒤 ackDeadline 안에 acknowledge를 Pub/Sub에 요청하지 않으면 해당 메시지는 재전송됨
PushConfig
PushConfig
{
"pushEndpoint": string
"pushBatchSize": int
}
필드유형설명
pushEndpointstringEndpoint URL (*Push Subscription인 경우에만 해당)
pushBatchSizeintPush 서브스크립션의 메시지 배치 사이즈
- Default: 1
- Max: 100
ObjectStorageConfig
ObjectStorageConfig
{
"bucket": string,
"exportIntervalMinutes": int,
"filePrefix": string,
"fileSuffix": string,
"channelCount": int,
"maxChannelCount": int,
"isExportEnabled": bool
}
필드유형설명Output Only
bucketstringObject Storage 버킷 이름
exportIntervalMinutesintObject Storage에 파일을 저장하는 주기
filePrefixstringObject Storage에 저장되는 파일의 Prefix
- 일부 특수문자(\ : * ? ” < > |) 및 Prefix 맨 앞에 슬래시('/') 입력 불가
- 연속된 슬래시('//') 입력 불가
- Prefix 와 Suffix 합이 200bytes를 넘을 수 없음
fileSuffixstringObject Storage에 저장되는 파일의 Suffix
- 일부 특수문자(\ : * ? ” < > |) 입력 불가
- 연속된 슬래시('//') 입력 불가
channelCountint설정된 내보내기 채널 개수
maxChannelCountint최대 생성 가능한 채널 개수
* Subscription Get 요청 시에만 출력됨 (List 조회 시 출력 안됨)
O
isExportEnabledbool내보내기 활성화 여부O
Response Body
서브스크립션 생성 Response Body
{
"id": string,
"name": string,
"domain": string,
"project": string,
"topicId": string,
"topic": string,
"ackDeadlineSeconds": string,
"messageRetentionDuration": string,
"maxDeliveryAttempt": int,
"status": string,
"subscriptionType": string,
"pushConfig": {
object (PushConfig)
},
"objectStorageConfig": {
object (ObjectStorageConfig)
},
"unprocessedMessageCount": int,
"creator": string,
"createdAt": string
}
Response Elements
Response유형설명Output Only
idstring서브스크립션의 IdO
namestring서브스크립션의 이름
domainstring서브스크립션이 연결된 Domain ID
projectstring서브스크립션이 연결된 Project ID
topicIdstring서브스크립션이 연결된 토픽의 IDO
topicstring서브스크립션이 연결된 토픽의 이름
ackDeadlineSecondsintPub/Sub이 Subscriber에게 메시지를 재전송하기 전 대기하는 시간
messageRetentionDurationstring서브스크립션의 메시지 보존기간
maxDeliveryAttemptint메시지 재전송 횟수
- -1(default): 무제한
- 1~100 범위에서 횟수 지정 가능
statusstring서브스크립션의 상태O
subscriptionTypestring서브스크립션의 유형
- PULL, PUSH, OBJECT_STORAGE
O
pushConfigObject (PushConfig)Push 타입 서브스크립션의 엔드포인트 설정
objectStorageConfigObject (ObjectStorageConfig)Object Storage 서브스크립션 유형의 속성 설정
unprocessedMessageCountint서브스크립션의 현재 처리되지 않은 메시지 개수O
creatorstring서브스크립션을 생성한 생성자O
createdAttimestamp서브스크립션을 생성한 시간O

서브스크립션 목록 조회

프로젝트에 생성된 서브스크립션들의 목록을 조회합니다.

API 호출 방식
메서드URI
GET  {endpoint-url}/v1/domains/{domain-id}/projects/{project-id}/subscriptions
Path유형필수 여부설명
domain-idstring필수  프로젝트가 속한 조직 ID
project-idstring필수카카오클라우드의 프로젝트 ID
Request Header
Request유형필수 여부설명
Credential-IDstring필수  액세스 키 ID
Credential-Secretstring필수보안 액세스 키
Query Params
Request유형설명
pageSizeint한 번에 조회할 목록 개수
pageTokenstring다음 목록을 불러오기 위한 변수
Response Body
서브스크립션 목록 조회 Response Body
{
"subscriptions": [
{
Object (Subscription)
}
],
"nextPageToken": string
}

//Object (Subscription) Example
{
"id": string,
"name": string,
"domain": string,
"project": string,
"topicId": string,
"topic": string,
"ackDeadlineSeconds": string,
"messageRetentionDuration": string,
"maxDeliveryAttempt": int,
"status": string,
"subscriptionType": string,
"pushConfig": {
object (PushConfig)
},
"objectStorageConfig": {
object (ObjectStorageConfig)
},
"unprocessedMessageCount": int,
"creator": string,
"createdAt": string
}
Response Elements
필드유형설명
subscriptionsObject Array (Subscription)
프로젝트에 생성된 서브스크립션의 목록
nextPageTokenstring다음 서브스크립션 목록을 가지고 오기 위한 토큰
Object Array (Subscription)
필드유형설명Output Only
idstring서브스크립션의 IDO
namestring서브스크립션의 이름
domainstring서브스크립션이 연결된 도메인 ID
projectstring서브스크립션이 연결된 프로젝트 ID
topicIdstring서브스크립션이 연결된 토픽의 IDO
topicstring서브스크립션이 연결된 Topic 이름
ackDeadlineSecondsintPub/Sub이 구독자에게 메시지를 재전송하기 전 대기하는 시간
messageRetentionDurationstring서브스크립션의 메시지 보존기간
maxDeliveryAttemptint메시지 재전송 횟수
- -1(default): 무제한
- 1~100 범위에서 횟수 지정 가능
statusstring서브스크립션의 상태O
subscriptionTypestring서브스크립션의 유형
- PULL, PUSH, OBJECT_STORAGE
O
pushConfigObject (PushConfig)Push 타입 서브스크립션의 엔드포인트 설정
objectStorageConfigObject (ObjectStorageConfig)Object Storage 서브스크립션 유형의 속성 설정
creatorstring서브스크립션을 생성한 생성자O
createdAttimestamp서브스크립션을 생성한 시간O

서브스크립션 상세 조회

특정 서브스크립션의 정보를 가져옵니다.

API 호출 방식
메서드요청 URL
GET  {endpoint-url}/v1/domains/{domain-id}/projects/{project-id}/subscriptions/{sub-name}
Path유형필수 여부설명
domain-idstring필수   프로젝트가 속한 조직 ID
project-idstring필수카카오클라우드의 프로젝트 ID
sub-namestring필수서브스크립션 이름
Request Header
Request유형필수 여부설명
Credential-IDstring필수   액세스 키 ID
Credential-Secretstring필수보안 액세스 키
Response Body
서브스크립션 상세 조회 Object (Subscription) Response Body
{
"id": string,
"name": string,
"domain": string,
"project": string,
"topicId": string,
"topic": string,
"ackDeadlineSeconds": string,
"messageRetentionDuration": string,
"maxDeliveryAttempt": int,
"status": string,
"subscriptionType": string,
"pushConfig": {
object (PushConfig)
},
"objectStorageConfig": {
object (ObjectStorageConfig)
},
"unprocessedMessageCount": int,
"creator": string,
"createdAt": string
}
Response Elements
필드유형설명Output Only
idstring서브스크립션의 IDo   
namestring서브스크립션의 이름
domainstring서브스크립션이 연결된 Domain 이름
projectstring서브스크립션이 연결된 Project 이름
topicIdstring서브스크립션이 연결된 토픽의 IDO
topicstring서브스크립션이 연결된 토픽의 이름
ackDeadlineSecondsintPub/Sub이 Subscriber에게 메시지를 재전송하기 전 대기하는 시간
messageRetentionDurationstring서브스크립션의 메시지 보존기간
maxDeliveryAttemptint메시지 재전송 횟수
- -1(default): 무제한
- 1~100 범위에서 횟수 지정 가능
statusstring서브스크립션의 상태O
subscriptionTypestring서브스크립션의 유형
- PULL, PUSH, OBJECT_STORAGE
O
pushConfigObject (PushConfig)Push 타입 서브스크립션의 엔드포인트 설정
objectStorageConfigObject (ObjectStorageConfig)Object Storage 서브스크립션 유형의 속성 설정
unprocessedMessageCountint서브스크립션의 현재 처리되지 않은 메시지 개수O
creatorstring서브스크립션을 생성한 생성자O
createdAttimestamp서브스크립션을 생성한 시간O

서브스크립션 수정(Patch)

서브스크립션의 설정값을 수정합니다.

API 호출 방식
메서드URI
PATCH{endpoint-url}/v1/domains/{domain-id}/projects/{project-id}/subscriptions/{sub-name}
Path유형필수 여부설명
domain-idstring필수   프로젝트가 속한 조직 ID
project-idstring필수   카카오클라우드의 프로젝트 ID
sub-namestring필수   서브스크립션의 이름
Request Header
Request유형필수 여부설명
Credential-IDstring필수   액세스 키 ID
Credential-Secretstring필수   보안 액세스 키
Request Body
서브스크립션 수정 Object (Subscription) Request Body
{
"subscription":{
"pushConfig": {
Object (PushConfig)
},
"objectStorageConfig": {
Object (ObjectStorageConfig)
},
"ackDeadlineSeconds": 30,
"messageRetentionDuration": "604800s",
"maxDeliveryAttempt": 5
},
"updateMask": "ackDeadlineSeconds,messageRetentionDuration,pushConfig.pushEndpoint,maxDeliveryAttempt"
}
필드유형필수 여부설명
subscription.pushConfigObject (PushConfig)선택엔드포인트 URL (Push Subscription인 경우)
subscription.objectStorageConfigObject (ObjectStorageConfig)선택버킷 정보 등 (Object Storage 서브스크립션 유형인 경우)
subscription.ackDeadlineSecondsint선택Pub/Sub이 Subscriber에게 메시지를 재전송하기 전 대기하는 시간
subscription.messageRetentionDurationstring선택메시지 보존기간
subscription.maxDeliveryAttemptint선택메시지 재전송 횟수
updateMaskstring필수 업데이트할 목록
- 쉼표(,)로 구분
Response Body
서브스크립션 수정 Object (Subscription) Response Body
{
"id": string,
"name": string,
"domain": string,
"project": string,
"topicId": string,
"topic": string,
"ackDeadlineSeconds": string,
"messageRetentionDuration": string,
"maxDeliveryAttempt": int,
"status": string,
"subscriptionType": string,
"pushConfig": {
object (PushConfig)
},
"objectStorageConfig": {
object (ObjectStorageConfig)
},
"unprocessedMessageCount": int,
"creator": string,
"createdAt": string
}
Response Elements
필드유형설명Output Only
idstring서브스크립션의 IDO
namestring서브스크립션의 이름
domainstring서브스크립션이 연결된 도메인 ID
projectstring서브스크립션이 연결된 프로젝트 ID
topicIdstring서브스크립션이 연결된 토픽의 IDO
topicstring서브스크립션이 연결된 토픽 이름
ackDeadlineSecondsintPub/Sub이 Subscriber에게 메시지를 재전송하기 전 대기하는 시간
messageRetentionDurationstring서브스크립션의 메시지 보존기간
maxDeliveryAttemptint메시지 재전송 횟수
- -1(default): 무제한
- 1~100 범위에서 횟수 지정 가능
statusstring서브스크립션의 상태O
subscriptionTypestring서브스크립션의 유형
- PULL, PUSH, OBJECT_STORAGE
O
pushConfigObject (PushConfig)Push 타입 서브스크립션의 엔드포인트 설정
objectStorageConfigObject (ObjectStorageConfig)Object Storage 서브스크립션 유형의 속성 설정
unprocessedMessageCountint서브스크립션의 현재 처리되지 않은 메시지 개수O
creatorstring서브스크립션을 생성한 생성자O
createdAttimestamp서브스크립션을 생성한 시간O

서브스크립션 삭제

지정한 이름의 서브스크립션을 삭제합니다.

메서드URI
DELETE{endpoint-url}/v1/domains/{domain}/projects/{project}/subscriptions/{sub-name}

메시지 수신 Pull

메시지를 가져옵니다.(*서브스크립션이 Pull 유형인 경우에만 지원합니다.)

API 호출 방식
메서드URI
POST   {endpoint-url}/v1/domains/{domain-id}/projects/{project-id}/subscriptions/{sub-name}/pull
Path유형필수 여부설명
domain-idstring필수  프로젝트가 속한 조직 ID
project-idstring필수카카오클라우드의 프로젝트 ID
sub-namestring필수서브스크립션의 이름
Request Header
Request유형필수 여부설명
Credential-IDstring필수  액세스 키 ID
Credential-Secretstring필수보안 액세스 키
Request Body
메시지 Pull Request Body
{
"maxMessages": 1,
"waitTime": "100ms"
}
Request유형필수 여부설명
maxMessagesint   필수  가져올 메시지 개수
- Max : 100
⚠️ 메시지 용량이 클 경우 waitTime 에 의해 설정한 메시지 개수보다 적은 양의 메시지를 받을 수 있습니다.
waitTimestring   선택  메시지 fetch wait-time
- Default: 100ms
- Max : 30s (seconds 단위 입력)
Response Body
메시지 Pull Response Body
{
"receivedMessages": [
{
object (ReceivedMessage)
}
]
}

//object (ReceivedMessage) Example
{
"ackId": string,
"message": {
object (PubsubMessage)
},
"deliveryAttempt": int
}

//// object (PubsubMessage) Example
{
"data": string,
"attributes": {
string: string
...
},
"messageId": string,
"publishTime": string
}
Response Elements
필드유형
receivedMessagesObject Array (ReceivedMessage)
ReceivedMessage
Fields유형설명
ackIdstring메시지에 대한 특정 액션(acknowledge, modifyAckDeadline)을 수행할 수 있는 ID
messageObject (PubsubMessage)
deliveryAttemptint해당 메시지가 재전송된 횟수
PubsubMessage
Fields유형설명
datastring (required)메시지의 본문 내용, 최대 1 MiB
attributesmap (key: string, value: string) (optional)메시지의 속성, 최대 100개
messageIdstring고유 메시지 ID, Publish 요청 응답에 메시지 별로 발급되어 전달된 ID 값과 동일한 값
publishTimestring메시지가 발행된 시간
- ⚠️ 시간 : UTC 기준

메시지 수신 확인

메시지의 ackId를 사용하여 Acknowledgement 처리를 합니다.

API 호출 방식
메서드URI
POST {endpoint-url}/v1/domains/{domain-id}/projects/{project-id}/subscriptions/{sub-name}/acknowledge
Path유형필수 여부설명
domain-idstring필수  프로젝트가 속한 조직 ID
project-idstring필수   카카오클라우드의 프로젝트 ID
sub-namestring필수   서브스크립션의 이름
Request Header
Request유형필수 여부설명
Credential-IDstring필수   액세스 키 ID
Credential-Secretstring필수   보안 액세스 키
Request Body
메시지 수신 확인 Request Body
{
"ackIds": ["ack-id-1"]
}
Request유형필수 여부설명
ackIdsstring array필수    Acknowledgement 처리를 할 메시지의 ackId 목록
Response Body
메시지 수신 확인 Response Body
{
"failure": [
{
object (FailedAckID)
}
]
}

//object (FailedAckID) Example
{
"ackID": string,
"error": object (Error)
}
Response Elements
Response유형
failureObject (FailedAckID)
FailedAckID
Fields유형설명
ackIDstring기존 ack id
errorstringObject(Error), 에러코드와 설명

메시지 확인 기한 수정

메시지 확인 기한(Ack Deadline)을 연장하거나 단축할 수 있습니다. 성공 시 신규 Ack ID가 발급됩니다.

API 호출 방식
메서드URI
POST  {endpoint-url}/v1/domains/{domain-id}/projects/{project-id}/subscriptions/{sub-name}/modifyAckDeadline
Path유형필수 여부설명
domain-idstring필수  프로젝트가 속한 조직 ID
project-idstring필수카카오클라우드의 프로젝트 ID
sub-namestring필수서브스크립션의 이름
Request Header
Request유형필수 여부설명
Credential-IDstring필수  액세스 키 ID
Credential-Secretstring필수보안 액세스 키
Request Body
메시지 수신 확인 수정 Request Body
{
"ackIds": ["ack-id-1"],
"action": "extend"
}
Request유형필수 여부설명
ackIdsstring Array필수  메시지의 ackId 목록
actionstring필수extend 또는 skip
- Extend: 메시지의 사용 시간을 현시점부터 서브스크립션의 AckDeadline 시간만큼 연장
- Skip: 메시지의 사용 시간을 0으로 설정하여 다른 클라이언트에서 메시지를 수신할 수 있도록 함
Response Body
메시지 수신 확인 수정 Response Body
{
"success": [
{
object (AckID)
}
],
"failure": [
{
object (FailedAckID)
}
]
}

//object (AckID) Example
{
"ackID": string,
"reissuedAckID": string
}

//object (FailedAckID) Example
{
"ackID": string,
"error": object (Error)
}
Response Elements
Response유형설명
successObject (AckID)성공한 Ack ID 목록
failureObject (FailedAckID)실패한 Ack ID 목록
AckID
Fields유형설명
ackIDstring기존 Ack ID
reissuedAckIDstring변경된 Ack ID
FailedAckID
Fields유형설명
ackIDstring기존 ack id
errorstringObject(Error), 에러 코드와 설명

메시지 시점 되돌리기(Seek)

서브스크립션을 특정 시간으로 다시 되돌리는 기능으로 되돌린 시점 이후의 모든 메시지를 다시 받아볼 수 있습니다.

API 호출 방식
메서드URI
POST {endpoint-url}/v1/domains/{domain-id}/projects/{project-id}/subscriptions/{sub-name}/seek
Path유형필수 여부설명
domain-idstring필수  프로젝트가 속한 조직 ID
project-idstring필수카카오클라우드의 프로젝트 ID
sub-namestring필수서브스크립션 이름
Request Header
Request유형필수 여부설명
Credential-IDstring필수  액세스 키 ID
Credential-Secretstring필수보안 액세스 키
Request Body
메시지 Seek Request Body
{
"time": string
}
Request유형필수 여부설명
timestring필수  되돌릴 시간
- 형식: "2006-01-02T15:04:05+09:00", KST
Response Body

응답값은 없습니다.