Notification > Notification Hub > API v1.0 사용 가이드 > 플로우
플로우를 생성합니다.
플로우 생성 시 플로우 아이디를 응답합니다.
steps라는 필드에 플로우 단계를 정의할 수 있습니다.
steps에 정의한 순서대로 메시지 발송을 진행합니다.
수신자마다 첫 번째 단계부터 메시지 발송을 시도하며, 발송과 수신을 성공하면 다음 단계로 넘어가지 않고 완료됩니다. 실패하면 다음 단계로 넘어갑니다.
요청
POST /flow/v1.0/flows
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
요청 파라미터
이름 | 구분 | 타입 | 필수 | 설명 |
---|---|---|---|---|
X-NC-APP-KEY | Header | String | Y | 앱키 |
X-NHN-Authorization | Header | String | Y | 액세스 토큰 |
요청 본문
{
"flowName" : "플로우 이름",
"description" : "플로우 설명",
"messagePurpose" : "NORMAL",
"steps" : [ {
"messageChannel" : "PUSH",
"templateId" : "템플릿의 아이디",
"nextSteps" : [ ]
} ]
}
경로 | 타입 | 필수 | 설명 |
---|---|---|---|
flowName | String | Y | 플로우 이름입니다. |
description | String | N | 플로우 설명입니다. |
messagePurpose | String | Y | 발송 내용 유형(NORMAL: 일반, AD: 광고, AUTH: 인증, default: NORMAL) [NORMAL, AD, AUTH] |
steps | Array | Y | 플로우 단계입니다. |
steps[].messageChannel | String | N | 메시지 채널입니다. [SMS, RCS, ALIMTALK, FRIENDTALK, EMAIL, PUSH] |
steps[].templateId | String | N | 템플릿 아이디입니다. |
steps[].nextSteps | Array | N | 다음 단계입니다. |
응답 본문
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
},
"flowId" : "플로우의 아이디"
}
경로 | 타입 | 설명 |
---|---|---|
header | Object | |
header.isSuccessful | Boolean | 작업이 성공했는지 여부를 나타냅니다. 기본값: true |
header.resultCode | Integer | 요청의 결과 코드입니다. 기본값: 0 |
header.resultMessage | String | 요청의 결과 메시지입니다. 기본값: SUCCESS |
flowId | String | 플로우 아이디입니다. |
{
"flowName": "선형적인 순서를 가진 플로우",
"messagePurpose": "NORMAL",
"description": "PUSH > EMAIL > SMS 순으로 발송됩니다.",
"steps": [{
"messageChannel": "PUSH",
"templateId": "템플릿의 아이디",
"nextSteps": [{
"messageChannel": "EMAIL",
"templateId": "템플릿의 아이디",
"nextSteps": [{
"messageChannel": "SMS",
"templateId": "템플릿의 아이디",
"nextSteps": null
}
]
}
]
}
]
}
{
"flowName": "동시 발송",
"messagePurpose": "NORMAL",
"description": "PUSH, EMAIL, SMS 순서 없이 동시에 발송됩니다.",
"steps": [{
"messageChannel": "PUSH",
"templateId": "템플릿의 아이디",
"nextSteps": null
}, {
"messageChannel": "EMAIL",
"templateId": "템플릿의 아이디",
"nextSteps": null
}, {
"messageChannel": "SMS",
"templateId": "템플릿의 아이디",
"nextSteps": null
}
]
}
요청 예시
### 플로우 생성
POST {{endpoint}}/flow/v1.0/flows
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
{
"flowName" : "플로우 이름",
"description" : "플로우 설명",
"messagePurpose" : "NORMAL",
"steps" : [ {
"messageChannel" : "PUSH",
"templateId" : "템플릿의 아이디",
"nextSteps" : [ ]
} ]
}
curl -X POST "${endpoint}/flow/v1.0/flows" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}" \
-d '{
"flowName" : "플로우 이름",
"description" : "플로우 설명",
"messagePurpose" : "NORMAL",
"steps" : [ {
"messageChannel" : "PUSH",
"templateId" : "템플릿의 아이디",
"nextSteps" : [ ]
} ]
}'
플로우 목록을 조회합니다.
플로우 목록 조회 시 플로우 아이디, 플로우 이름, 플로우 설명, 플로우 단계를 응답합니다.
요청
GET /flow/v1.0/flows
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
요청 파라미터
이름 | 구분 | 타입 | 필수 | 설명 |
---|---|---|---|---|
X-NC-APP-KEY | Header | String | Y | 앱키 |
X-NHN-Authorization | Header | String | Y | 액세스 토큰 |
flowName | Query | String | N | 플로우 이름(LIKE 검색) |
flowId | Query | String | N | 플로우 아이디입니다. |
limit | Query | Integer | N | limit 설정하지 않으면 default 50(최대 1000) |
offset | Query | Integer | N | offset 설정하지 않으면 default 0 |
요청 본문
이 API는 요청 본문을 요구하지 않습니다.
응답 본문
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
},
"flows" : [ {
"flowId" : "플로우의 아이디",
"flowName" : "플로우 이름",
"messagePurpose" : "NORMAL",
"description" : "플로우 설명",
"steps" : [ {
"messageChannel" : "PUSH",
"template" : {
"templateId" : "템플릿의 아이디",
"templateName" : "템플릿 이름"
},
"nextSteps" : [ {
"messageChannel" : "EMAIL",
"template" : {
"templateId" : "템플릿의 아이디",
"templateName" : "템플릿 이름"
},
"nextSteps" : [ {
"messageChannel" : "ALIMTALK",
"template" : {
"templateId" : "템플릿의 아이디",
"templateName" : "템플릿 이름"
},
"nextSteps" : [ {
"messageChannel" : "SMS",
"template" : {
"templateId" : "템플릿의 아이디",
"templateName" : "템플릿 이름"
},
"nextSteps" : null
} ]
} ]
} ]
} ],
"messageChannels" : [ "PUSH", "EMAIL", "ALIMTALK", "SMS" ],
"createdDateTime" : "2021-01-01T00:00:00.000Z",
"updatedDateTime" : "2021-01-01T00:00:00.000Z"
} ],
"totalCount" : 10
}
경로 | 타입 | 설명 |
---|---|---|
header | Object | |
header.isSuccessful | Boolean | 작업이 성공했는지 여부를 나타냅니다. 기본값: true |
header.resultCode | Integer | 요청의 결과 코드입니다. 기본값: 0 |
header.resultMessage | String | 요청의 결과 메시지입니다. 기본값: SUCCESS |
flows | Array | |
flows[].flowId | String | 플로우 아이디입니다. |
flows[].flowName | String | 플로우 이름입니다. |
flows[].messagePurpose | String | 발송 내용 유형(NORMAL: 일반, AD: 광고, AUTH: 인증, default: NORMAL) [NORMAL, AD, AUTH] |
flows[].description | String | 플로우 설명입니다. |
flows[].steps | Array | 플로우 단계입니다. |
flows[].messageChannels | Array | 플로우 단계에서 사용된 메시지 채널입니다. [ALIMTALK, EMAIL, FRIENDTALK, PUSH, RCS, SMS] |
flows[].createdDateTime | String | 플로우 생성 시간입니다. |
flows[].updatedDateTime | String | 플로우 수정 시간입니다. |
totalCount | Integer | 플로우 전체 개수입니다. |
요청 예시
### 플로우 목록 조회
GET {{endpoint}}/flow/v1.0/flows
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
curl -X GET "${endpoint}/flow/v1.0/flows" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}"
플로우를 조회합니다.
플로우 조회 시 플로우 아이디, 플로우 이름, 플로우 설명, 플로우 단계를 응답합니다.
요청
GET /flow/v1.0/flows/{flowId}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
요청 파라미터
이름 | 구분 | 타입 | 필수 | 설명 |
---|---|---|---|---|
X-NC-APP-KEY | Header | String | Y | 앱키 |
X-NHN-Authorization | Header | String | Y | 액세스 토큰 |
flowId | Path | String | Y | 플로우 아이디입니다. |
요청 본문
이 API는 요청 본문을 요구하지 않습니다.
응답 본문
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
},
"flow" : {
"flowId" : "플로우의 아이디",
"flowName" : "플로우 이름",
"messagePurpose" : "NORMAL",
"description" : "플로우 설명",
"steps" : [ {
"messageChannel" : "PUSH",
"template" : {
"templateId" : "템플릿의 아이디",
"templateName" : "템플릿 이름"
},
"nextSteps" : [ {
"messageChannel" : "EMAIL",
"template" : {
"templateId" : "템플릿의 아이디",
"templateName" : "템플릿 이름"
},
"nextSteps" : [ {
"messageChannel" : "ALIMTALK",
"template" : {
"templateId" : "템플릿의 아이디",
"templateName" : "템플릿 이름"
},
"nextSteps" : [ {
"messageChannel" : "SMS",
"template" : {
"templateId" : "템플릿의 아이디",
"templateName" : "템플릿 이름"
},
"nextSteps" : null
} ]
} ]
} ]
} ],
"messageChannels" : [ "PUSH", "EMAIL", "ALIMTALK", "SMS" ],
"createdDateTime" : "2021-01-01T00:00:00.000Z",
"updatedDateTime" : "2021-01-01T00:00:00.000Z"
}
}
경로 | 타입 | 설명 |
---|---|---|
header | Object | |
header.isSuccessful | Boolean | 작업이 성공했는지 여부를 나타냅니다. 기본값: true |
header.resultCode | Integer | 요청의 결과 코드입니다. 기본값: 0 |
header.resultMessage | String | 요청의 결과 메시지입니다. 기본값: SUCCESS |
flow | Object | |
flow.flowId | String | 플로우 아이디입니다. |
flow.flowName | String | 플로우 이름입니다. |
flow.messagePurpose | String | 발송 내용 유형(NORMAL: 일반, AD: 광고, AUTH: 인증, default: NORMAL) [NORMAL, AD, AUTH] |
flow.description | String | 플로우 설명입니다. |
flow.steps | Array | 플로우 단계입니다. |
flow.steps[].messageChannel | String | 메시지 채널입니다. [ALIMTALK, EMAIL, FRIENDTALK, PUSH, RCS, SMS] |
flow.steps[].template | Object | |
flow.steps[].template.templateId | String | 템플릿 아이디입니다. |
flow.steps[].template.templateName | String | 템플릿 이름입니다. |
flow.steps[].nextSteps | Array | 다음 단계입니다. |
flow.messageChannels | Array | 플로우 단계에서 사용된 메시지 채널입니다. [ALIMTALK, EMAIL, FRIENDTALK, PUSH, RCS, SMS] |
flow.createdDateTime | String | 플로우 생성 시간입니다. |
flow.updatedDateTime | String | 플로우 수정 시간입니다. |
요청 예시
### 플로우 조회
GET {{endpoint}}/flow/v1.0/flows/{{flowId}}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
curl -X GET "${endpoint}/flow/v1.0/flows/${flowId}" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}"
플로우를 수정합니다.
요청
PUT /flow/v1.0/flows/{flowId}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
요청 파라미터
이름 | 구분 | 타입 | 필수 | 설명 |
---|---|---|---|---|
X-NC-APP-KEY | Header | String | Y | 앱키 |
X-NHN-Authorization | Header | String | Y | 액세스 토큰 |
flowId | Path | String | Y | 플로우 아이디입니다. |
요청 본문
{
"flowName" : "플로우 이름",
"description" : "플로우 설명",
"messagePurpose" : "NORMAL",
"steps" : [ {
"messageChannel" : "PUSH",
"templateId" : "템플릿의 아이디",
"nextSteps" : [ ]
} ]
}
경로 | 타입 | 필수 | 설명 |
---|---|---|---|
flowName | String | Y | 플로우 이름입니다. |
description | String | N | 플로우 설명입니다. |
messagePurpose | String | Y | 발송 내용 유형(NORMAL: 일반, AD: 광고, AUTH: 인증, default: NORMAL) [NORMAL, AD, AUTH] |
steps | Array | Y | 플로우 단계입니다. |
steps[].messageChannel | String | N | 메시지 채널입니다. [SMS, RCS, ALIMTALK, FRIENDTALK, EMAIL, PUSH] |
steps[].templateId | String | N | 템플릿 아이디입니다. |
steps[].nextSteps | Array | N | 다음 단계입니다. |
응답 본문
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
},
"flowId" : "플로우의 아이디"
}
경로 | 타입 | 설명 |
---|---|---|
header | Object | |
header.isSuccessful | Boolean | 작업이 성공했는지 여부를 나타냅니다. 기본값: true |
header.resultCode | Integer | 요청의 결과 코드입니다. 기본값: 0 |
header.resultMessage | String | 요청의 결과 메시지입니다. 기본값: SUCCESS |
flowId | String | 플로우 아이디입니다. |
요청 예시
### 플로우 수정
PUT {{endpoint}}/flow/v1.0/flows/{{flowId}}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
{
"flowName" : "플로우 이름",
"description" : "플로우 설명",
"messagePurpose" : "NORMAL",
"steps" : [ {
"messageChannel" : "PUSH",
"templateId" : "템플릿의 아이디",
"nextSteps" : [ ]
} ]
}
curl -X PUT "${endpoint}/flow/v1.0/flows/${flowId}" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}" \
-d '{
"flowName" : "플로우 이름",
"description" : "플로우 설명",
"messagePurpose" : "NORMAL",
"steps" : [ {
"messageChannel" : "PUSH",
"templateId" : "템플릿의 아이디",
"nextSteps" : [ ]
} ]
}'
플로우를 삭제합니다.
요청
DELETE /flow/v1.0/flows/{flowId}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
요청 파라미터
이름 | 구분 | 타입 | 필수 | 설명 |
---|---|---|---|---|
X-NC-APP-KEY | Header | String | Y | 앱키 |
X-NHN-Authorization | Header | String | Y | 액세스 토큰 |
flowId | Path | String | Y | 플로우 아이디입니다. |
요청 본문
이 API는 요청 본문을 요구하지 않습니다.
응답 본문
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
}
}
경로 | 타입 | 설명 |
---|---|---|
header | Object | |
header.isSuccessful | Boolean | 작업이 성공했는지 여부를 나타냅니다. 기본값: true |
header.resultCode | Integer | 요청의 결과 코드입니다. 기본값: 0 |
header.resultMessage | String | 요청의 결과 메시지입니다. 기본값: SUCCESS |
요청 예시
### 플로우 삭제
DELETE {{endpoint}}/flow/v1.0/flows/{{flowId}}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
curl -X DELETE "${endpoint}/flow/v1.0/flows/${flowId}" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}"
플로우를 삭제합니다.
요청
POST /flow/v1.0/flows/do-delete
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
요청 파라미터
이름 | 구분 | 타입 | 필수 | 설명 |
---|---|---|---|---|
X-NC-APP-KEY | Header | String | Y | 앱키 |
X-NHN-Authorization | Header | String | Y | 액세스 토큰 |
요청 본문
{
"flowIds" : [ "플로우의 아이디" ]
}
경로 | 타입 | 필수 | 설명 |
---|---|---|---|
flowIds | Array | Y | 플로우 아이디입니다. |
응답 본문
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
},
"results" : [ {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
} ]
}
경로 | 타입 | 설명 |
---|---|---|
header | Object | |
header.isSuccessful | Boolean | 작업이 성공했는지 여부를 나타냅니다. 기본값: true |
header.resultCode | Integer | 요청의 결과 코드입니다. 기본값: 0 |
header.resultMessage | String | 요청의 결과 메시지입니다. 기본값: SUCCESS |
results | Array | 다중 처리 요청의 결과입니다. |
results[].isSuccessful | Boolean | 작업이 성공했는지 여부를 나타냅니다. 기본값: true |
results[].resultCode | Integer | 요청의 결과 코드입니다. 기본값: 0 |
results[].resultMessage | String | 요청의 결과 메시지입니다. 기본값: SUCCESS |
요청 예시
### 플로우 삭제
POST {{endpoint}}/flow/v1.0/flows/do-delete
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
{
"flowIds" : [ "플로우의 아이디" ]
}
curl -X POST "${endpoint}/flow/v1.0/flows/do-delete" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}" \
-d '{
"flowIds" : [ "플로우의 아이디" ]
}'