본문으로 건너뛰기

콘텐츠 엔드포인트

Content 모듈은 웹사이트 페이지, 섹션, 요소, 블록, 블로그 게시물, 리다이렉트, 설교, 재생목록, 스트리밍 서비스, 이벤트, 큐레이션된 캘린더, 파일, 갤러리, 성경 번역본 및 구절 조회, 곡, 편곡, 전역 스타일, 스톡 사진, 설정을 관리합니다. API에서 가장 규모가 큰 모듈로서 모든 ChurchApps 애플리케이션에서 CMS, 미디어/스트리밍, 예배 기획, 성경 기능을 지원합니다.

기본 경로: /content

Pages

기본 경로: /content/pages

메서드경로인증권한설명
GET/:churchId/tree?url=&id=PublicURL 또는 ID로 전체 페이지 트리(섹션, 요소, 블록)를 가져옵니다. URL로 가져올 경우 내부 ID를 제거합니다. URL 기반 조회는 pages.visibility를 적용합니다 -- 게이트가 설정된 페이지는 (선택적) JWT가 게이트 조건을 충족하지 않으면 { restricted: true, visibility }를 반환합니다
GET/public/:churchIdPublic공개 페이지 목록(url, title, metaDescription)을 가져옵니다. visibility = everyone인 경우만 해당됩니다
GET/:idJWTID로 페이지를 가져옵니다
GET/JWT교회의 모든 페이지 목록을 가져옵니다
POST/duplicate/:idJWTContent.Edit모든 섹션 및 요소를 포함해 페이지를 복제합니다
POST/temp/aiJWTContent.EditAI로 생성된 페이지를 저장합니다(페이지, 섹션, 요소를 한 번에 호출)
POST/JWTContent.Edit페이지를 생성하거나 업데이트합니다(일괄 처리)
DELETE/:idJWTContent.Edit페이지를 삭제합니다

예시: 페이지 트리 가져오기

GET /content/pages/abc-church-id/tree?url=/about
{
"name": "About",
"url": "/about",
"sections": [
{
"background": "#FFFFFF",
"textColor": "dark",
"elements": [
{ "elementType": "textWithPhoto", "answers": { "text": "Welcome" } }
]
}
]
}

Sections

기본 경로: /content/sections

메서드경로인증권한설명
GET/:idJWTID로 섹션을 가져옵니다
POST/duplicate/:id?convertToBlock=JWTContent.Edit섹션을 복제하거나 재사용 가능한 블록으로 변환합니다
POST/JWTContent.Edit섹션을 생성하거나 업데이트합니다(일괄 처리). 정렬 순서를 자동으로 업데이트합니다
DELETE/:idJWTContent.Edit섹션을 삭제합니다(정렬 순서 자동 업데이트)

Elements

기본 경로: /content/elements

메서드경로인증권한설명
GET/:idJWTID로 요소를 가져옵니다
POST/duplicate/:idJWTContent.Edit모든 하위 요소를 포함해 요소를 복제합니다
POST/JWTContent.Edit요소를 생성하거나 업데이트합니다(일괄 처리). 행 열과 캐러셀 슬라이드를 자동으로 관리합니다
DELETE/:idJWTContent.Edit요소를 삭제합니다

Blocks

기본 경로: /content/blocks

표준 CRUD를 확장합니다(쓰기 작업에는 Content.Edit 권한이 필요한 기본 클래스의 GET /:id, GET /, POST /, DELETE /:id).

메서드경로인증권한설명
GET/:idJWTID로 블록을 가져옵니다
GET/JWT모든 블록 목록을 가져옵니다
GET/:churchId/tree/:idPublic섹션과 요소를 포함한 전체 블록 트리를 가져옵니다
GET/blockType/:blockTypeJWT유형별 블록을 가져옵니다(예: footerBlock, elementBlock)
GET/public/footer/:churchIdPublic교회의 푸터 블록 트리를 가져옵니다
POST/JWTContent.Edit블록을 생성하거나 업데이트합니다
DELETE/:idJWTContent.Edit블록을 삭제합니다

기본 경로: /content/links

표준 CRUD를 확장합니다(쓰기 작업에는 Content.Edit 권한이 필요한 기본 클래스의 GET /:id, GET /, POST /, DELETE /:id).

메서드경로인증권한설명
GET/:idJWTID로 링크를 가져옵니다
GET/JWT모든 링크 목록을 가져옵니다. 선택적으로 ?category= 필터를 사용할 수 있습니다. 저장 후 자동 정렬됩니다
GET/church/:churchId/filtered?category=JWT공개 범위(everyone, visitors, members, staff, groups)로 필터링된 링크를 가져옵니다
GET/church/:churchId?category=Public교회의 카테고리별 링크를 가져옵니다(공개)
POST/JWTContent.Edit링크를 생성하거나 업데이트합니다(일괄 처리). 카테고리별로 자동 정렬됩니다
DELETE/:idJWTContent.Edit링크를 삭제합니다

Global Styles

기본 경로: /content/globalStyles

표준 CRUD를 확장합니다(쓰기 작업에는 Content.Edit 권한이 필요한 기본 클래스의 POST /, DELETE /:id).

메서드경로인증권한설명
GET/church/:churchIdPublic교회의 전역 스타일을 가져옵니다(설정된 값이 없으면 기본값 반환)
GET/JWT인증된 교회의 전역 스타일을 가져옵니다
POST/JWTContent.Edit전역 스타일을 생성하거나 업데이트합니다
DELETE/:idJWTContent.Edit전역 스타일을 삭제합니다

Page History

기본 경로: /content/pageHistory

메서드경로인증권한설명
GET/page/:pageIdJWTContent.Edit페이지의 기록 항목 목록을 가져옵니다
GET/block/:blockIdJWTContent.Edit블록의 기록 항목 목록을 가져옵니다
GET/:idJWTContent.EditID로 기록 항목을 가져옵니다
POST/JWTContent.Edit페이지/블록 스냅샷을 저장합니다. 30일이 지난 항목을 주기적으로 정리합니다
POST/restore/:idJWTContent.Edit기록 스냅샷으로부터 페이지/블록을 복원합니다(현재 콘텐츠를 삭제하고 스냅샷으로부터 다시 생성)
POST/restoreSnapshotJWTContent.Edit인라인 스냅샷 객체로부터 복원합니다. 본문: { pageId, blockId, snapshot }

Posts (블로그)

기본 경로: /content/posts

블로그 게시물은 독립적인 레코드입니다: title, slug(교회별 고유), excerpt, content(마크다운 본문), authorId, photoUrl, publishDate, category, tags로 구성됩니다. 게시물은 publishDate가 설정되어 있고 이미 지난 시점이면 게시된 것으로 처리됩니다. 조회 엔드포인트는 각 게시물에 authorId로 조회된 authorName을 추가합니다. 웹사이트 빌더 아키텍처를 참조하세요.

메서드경로인증권한설명
GET/public/:churchId?category=&tag=&page=&pageSize=Public게시된 게시물을 페이지 단위로 가져옵니다(페이지당 최대 50개)
GET/public/:churchId/categoriesPublic게시된 게시물 전체의 고유 카테고리 목록을 가져옵니다
GET/public/:churchId/slug/:slugPublic슬러그로 게시된 게시물을 가져옵니다
GET/rss/:churchId?siteUrl=Public게시된 게시물의 RSS 2.0 피드를 가져옵니다(링크는 {siteUrl}/blog/{slug} 형식으로 생성)
GET/:idJWTID로 게시물을 가져옵니다
GET/JWT교회의 모든 게시물 목록을 가져옵니다
POST/JWTContent.Edit게시물을 생성하거나 업데이트합니다(일괄 처리)
DELETE/:idJWTContent.Edit게시물을 삭제합니다

Redirects

기본 경로: /content/redirects

교회별 URL 리다이렉트(fromPathtoPath)이며, 교회당 최대 200개로 제한됩니다. 경로는 정규화되며(소문자화, 앞에 슬래시 포함, 끝에 슬래시 없음) fromPath는 교회별로 고유해야 합니다. B1App은 404가 발생할 위치에서 이를 확인해 HTTP 308을 반환합니다.

메서드경로인증권한설명
GET/public/:churchId?path=Public경로를 확인합니다(path를 생략하면 모든 리다이렉트 목록을 반환)
GET/:idJWTID로 리다이렉트를 가져옵니다
GET/JWT교회의 모든 리다이렉트 목록을 가져옵니다
POST/JWTContent.Edit리다이렉트를 생성하거나 업데이트합니다. fromPath = toPath인 경우 거부하며 200개 제한을 적용합니다
DELETE/:idJWTContent.Edit리다이렉트를 삭제합니다

Sermons

기본 경로: /content/sermons

메서드경로인증권한설명
GET/public/freeshowSampleJWT샘플 FreeShow 재생목록 구조를 가져옵니다
GET/public/tvWrapper/:churchIdJWT설교, 레슨, FreeShow 소스가 포함된 TV 앱 래퍼를 가져옵니다
GET/public/tvFeed/:churchId/:sermonIdPublic단일 설교를 TV 피드 재생목록으로 가져옵니다
GET/public/tvFeed/:churchIdPublic모든 공개 재생목록/설교를 TV 피드로 가져옵니다
GET/public/:churchIdPublic교회의 모든 공개 설교 목록을 가져옵니다
GET/timeline?sermonIds=JWT설교의 타임라인 데이터를 가져옵니다
GET/lookup?videoType=&videoData=PublicYouTube 또는 Vimeo에서 설교 메타데이터를 조회합니다
GET/socialSuggestions?youtubeVideoId=JWT설교 자막으로부터 AI 소셜 미디어 게시물 제안을 생성합니다
GET/outline?url=&title=&author=JWTURL로부터 AI 레슨 개요를 생성합니다
GET/youtubeImport/:channelIdJWTYouTube 채널에서 영상을 가져옵니다
GET/vimeoImport/:channelIdJWTVimeo 채널에서 영상을 가져옵니다
GET/:idJWTID로 설교를 가져옵니다
GET/JWT모든 설교 목록을 가져옵니다
POST/JWTStreamingServices.Edit설교를 생성하거나 업데이트합니다(일괄 처리, base64 썸네일 업로드 지원)
DELETE/:idJWTStreamingServices.Edit설교를 삭제합니다

예시: YouTube 설교 조회

GET /content/sermons/lookup?videoType=youtube&videoData=dQw4w9WgXcQ
{
"title": "Sunday Service - Faith in Action",
"description": "Pastor John speaks about faith...",
"thumbnail": "https://img.youtube.com/vi/dQw4w9WgXcQ/default.jpg",
"duration": 2400,
"publishDate": "2025-01-15T10:00:00Z"
}

Playlists

기본 경로: /content/playlists

표준 CRUD를 확장합니다(쓰기 작업에는 StreamingServices.Edit 권한이 필요한 기본 클래스의 GET /:id, GET /, DELETE /:id).

메서드경로인증권한설명
GET/:idJWTID로 재생목록을 가져옵니다
GET/JWT모든 재생목록을 가져옵니다
GET/public/:churchIdPublic교회의 모든 공개 재생목록을 가져옵니다
POST/JWTStreamingServices.Edit재생목록을 생성하거나 업데이트합니다(일괄 처리, base64 썸네일 업로드 지원)
DELETE/:idJWTStreamingServices.Edit재생목록을 삭제합니다

Streaming Services

기본 경로: /content/streamingServices

메서드경로인증권한설명
GET/:id/hostChatJWTChat.Host서비스의 암호화된 호스트 채팅방 ID를 가져옵니다
GET/JWT모든 스트리밍 서비스 목록을 가져옵니다. 만료된 비반복 서비스는 자동 정리되고 반복 서비스는 자동으로 진행됩니다
POST/JWTStreamingServices.Edit스트리밍 서비스를 생성하거나 업데이트합니다(일괄 처리)
DELETE/:idJWTStreamingServices.Edit스트리밍 서비스를 삭제합니다(차단된 IP도 함께 정리)

Events

기본 경로: /content/events

메서드경로인증권한설명
GET/timeline/group/:groupId?eventIds=JWT그룹의 타임라인 이벤트를 가져옵니다
GET/timeline?eventIds=JWT현재 사용자 그룹의 타임라인 이벤트를 가져옵니다
GET/subscribe?churchId=&groupId=&curatedCalendarId=PublicICS 캘린더 피드로 이벤트를 구독합니다
GET/group/:groupIdJWT그룹의 이벤트를 가져옵니다(예외 날짜 포함)
GET/public/group/:churchId/:groupIdPublic그룹의 공개 이벤트를 가져옵니다
GET/:idJWTID로 이벤트를 가져옵니다
POST/JWT이벤트를 생성하거나 업데이트합니다(일괄 처리)
DELETE/:idJWTContent.Edit이벤트를 삭제합니다

Event Exceptions

기본 경로: /content/eventExceptions

메서드경로인증권한설명
GET/:idJWTID로 이벤트 예외를 가져옵니다
POST/JWTContent.Edit이벤트 예외를 생성하거나 업데이트합니다(일괄 처리)
DELETE/:idJWTContent.Edit이벤트 예외를 삭제합니다

Curated Calendars

기본 경로: /content/curatedCalendars

메서드경로인증권한설명
GET/:idJWTID로 큐레이션된 캘린더를 가져옵니다
GET/JWT모든 큐레이션된 캘린더 목록을 가져옵니다
POST/JWTContent.Edit큐레이션된 캘린더를 생성하거나 업데이트합니다(일괄 처리)
DELETE/:idJWTContent.Edit큐레이션된 캘린더를 삭제합니다

Curated Events

기본 경로: /content/curatedEvents

메서드경로인증권한설명
GET/calendar/:curatedCalendarId?withoutEventsJWT캘린더의 큐레이션된 이벤트를 가져옵니다(?withoutEvents가 없으면 이벤트 세부 정보와 예외 날짜 포함)
GET/public/calendar/:churchId/:curatedCalendarIdPublic캘린더의 공개 큐레이션된 이벤트를 가져옵니다
GET/:idJWTID로 큐레이션된 이벤트를 가져옵니다
GET/JWT모든 큐레이션된 이벤트 목록을 가져옵니다
POST/JWTContent.Edit큐레이션된 이벤트를 생성하거나 업데이트합니다. 특정 그룹 이벤트를 추가하는 eventIds 배열을 지원합니다
DELETE/:idJWTContent.Edit큐레이션된 이벤트를 삭제합니다
DELETE/calendar/:curatedCalendarId/event/:eventIdJWTContent.Edit큐레이션된 캘린더에서 특정 이벤트를 제거합니다
DELETE/calendar/:curatedCalendarId/group/:groupIdJWTContent.Edit큐레이션된 캘린더에서 그룹의 모든 이벤트를 제거합니다

Files

기본 경로: /content/files

메서드경로인증권한설명
GET/:contentType/:contentIdJWT콘텐츠 유형 및 콘텐츠 ID로 파일을 가져옵니다
GET/JWT교회 웹사이트의 모든 파일 목록을 가져옵니다
GET/:idJWTID로 파일을 가져옵니다
POST/JWTContent.Edit*파일을 업로드합니다(base64). *contentId와 일치하는 그룹의 구성원인 경우에도 허용됩니다
POST/postUrlJWTContent.Edit*사전 서명된 S3 업로드 URL을 가져옵니다. *그룹 구성원에게도 허용됩니다. 콘텐츠 항목당 최대 100MB
DELETE/:idJWTContent.Edit*파일을 삭제하고 스토리지에서 제거합니다. *그룹 구성원에게도 허용됩니다

기본 경로: /content/gallery

메서드경로인증권한설명
GET/stock/:folderPublic폴더 내 스톡 사진 목록을 가져옵니다
GET/:folderJWTContent.Edit폴더 내 갤러리 이미지 목록을 가져옵니다
POST/requestUploadJWTContent.Edit갤러리 이미지용 사전 서명된 S3 업로드 URL을 가져옵니다
DELETE/:folder/:imageJWTContent.Edit갤러리 이미지를 삭제합니다

Bibles

기본 경로: /content/bibles

모든 성경 엔드포인트는 공개이며 인증이 필요하지 않습니다. 데이터는 외부 소스에서 가져와 로컬에 캐시됩니다.

메서드경로인증권한설명
GET/Public모든 성경 번역본 목록을 가져옵니다(캐시가 비어 있으면 소스에서 가져옴)
GET/stats?startDate=&endDate=Public날짜 범위에 대한 성경 조회 통계를 가져옵니다
GET/availableTranslations/:sourcePublic소스에서 사용 가능한 번역본 목록을 가져옵니다(예: api.bible)
GET/updateTranslationsPublic모든 소스의 번역본을 동기화합니다
GET/updateTranslations/:sourcePublic특정 소스의 번역본을 동기화합니다
GET/updateCopyrightsPublic저작권 정보가 누락된 번역본의 저작권 정보를 업데이트합니다
GET/:translationKey/updateCopyrightPublic특정 번역본의 저작권 정보를 업데이트합니다
GET/:translationKey/search?query=&limit=Public번역본에서 구절을 검색합니다
GET/:translationKey/booksPublic번역본의 성경책 목록을 가져옵니다(로컬 캐시)
GET/:translationKey/:bookKey/chaptersPublic성경책의 장 목록을 가져옵니다(로컬 캐시)
GET/:translationKey/chapters/:chapterKey/versesPublic장의 구절 목록을 가져옵니다(로컬 캐시)
GET/:translationKey/verses/:startVerseKey-:endVerseKeyPublic범위 내 구절 텍스트를 가져옵니다. 조회 내역을 기록합니다. 일부 번역본은 라이선스 문제로 캐싱을 우회합니다

예시: 구절 텍스트 가져오기

GET /content/bibles/de4e12af7f28f599-02/verses/GEN.1.1-GEN.1.3
[
{ "verseKey": "GEN.1.1", "content": "In the beginning God created the heavens and the earth.", "bookKey": "GEN", "chapterNumber": 1, "verseNumber": 1 },
{ "verseKey": "GEN.1.2", "content": "Now the earth was formless and empty...", "bookKey": "GEN", "chapterNumber": 1, "verseNumber": 2 },
{ "verseKey": "GEN.1.3", "content": "And God said, \"Let there be light,\" and there was light.", "bookKey": "GEN", "chapterNumber": 1, "verseNumber": 3 }
]

Songs

기본 경로: /content/songs

메서드경로인증권한설명
GET/search?q=JWT쿼리로 곡을 검색합니다
GET/:idJWTID로 곡을 가져옵니다
GET/JWTContent.Edit모든 곡 목록을 가져옵니다
POST/JWTContent.Edit곡을 생성하거나 업데이트합니다(일괄 처리)
POST/importJWTFreeShow에서 곡을 가져옵니다(일괄 처리)
DELETE/:idJWTContent.Edit곡을 삭제합니다

Song Details

기본 경로: /content/songDetails

곡 세부 정보는 전역(global) 데이터입니다(교회별 범위가 아님). 여러 교회가 공유하는 표준 곡 메타데이터를 나타냅니다.

메서드경로인증권한설명
GET/:idJWTID로 곡 세부 정보를 가져옵니다(전역)
GET/JWT교회의 곡 세부 정보 목록을 가져옵니다
POST/createJWTPraiseCharts ID로부터 곡 세부 정보를 생성합니다(이미 생성된 경우 기존 데이터 반환). PraiseCharts 및 MusicBrainz에서 메타데이터를 자동으로 가져옵니다
POST/JWT곡 세부 정보를 생성하거나 업데이트합니다(일괄 처리)

기본 경로: /content/songDetailLinks

메서드경로인증권한설명
GET/:idJWTID로 곡 세부 정보 링크를 가져옵니다
GET/songDetail/:songDetailIdJWT곡 세부 정보의 모든 링크를 가져옵니다
POST/JWT곡 세부 정보 링크를 생성하거나 업데이트합니다(일괄 처리). 연결된 경우 MusicBrainz 데이터를 자동으로 가져옵니다
DELETE/:idJWT곡 세부 정보 링크를 삭제합니다

Arrangements

기본 경로: /content/arrangements

메서드경로인증권한설명
GET/:idJWTID로 편곡을 가져옵니다
GET/song/:songIdJWTContent.Edit곡의 편곡 목록을 가져옵니다
GET/songDetail/:songDetailIdJWTContent.Edit곡 세부 정보의 편곡 목록을 가져옵니다
GET/JWTContent.Edit모든 편곡 목록을 가져옵니다
POST/JWTContent.Edit편곡을 생성하거나 업데이트합니다(일괄 처리)
POST/freeShow/missingJWT교회에 존재하지 않는 FreeShow ID를 찾습니다. 본문: { freeShowIds: string[] }
DELETE/:idJWTContent.Edit편곡을 삭제합니다(관련 키도 함께 삭제되며, 남은 편곡이 없으면 곡도 삭제)

Arrangement Keys

기본 경로: /content/arrangementKeys

메서드경로인증권한설명
GET/presenter/:churchId/:idPublic프리젠터 화면용 전체 곡 데이터가 포함된 편곡 키를 가져옵니다
GET/:idJWTID로 편곡 키를 가져옵니다
GET/arrangement/:arrangementIdJWTContent.Edit편곡의 키 목록을 가져옵니다
GET/JWTContent.Edit모든 편곡 키 목록을 가져옵니다
POST/JWTContent.Edit편곡 키를 생성하거나 업데이트합니다(일괄 처리)
DELETE/:idJWTContent.Edit편곡 키를 삭제합니다

Settings

기본 경로: /content/settings

메서드경로인증권한설명
GET/myJWT현재 사용자의 설정을 가져옵니다
GET/JWTSettings.Edit교회의 모든 설정을 가져옵니다
GET/public/:churchIdPublic교회의 공개 설정을 가져옵니다(키-값 쌍으로 반환)
POST/myJWT사용자 수준 설정을 저장합니다(base64 이미지 업로드 지원)
POST/JWTSettings.Edit교회 수준 설정을 저장합니다(base64 이미지 업로드 지원)
DELETE/my/:idJWT사용자 설정을 삭제합니다

Preview

기본 경로: /content/preview

메서드경로인증권한설명
GET/data/:keyPublic서브도메인 키로 교회의 스트리밍 미리보기 데이터를 가져옵니다(탭, 링크, 예배, 설교)

기본 경로: /content/stock

메서드경로인증권한설명
POST/searchPublicPexels 스톡 사진을 검색합니다. 본문: { term: "church" }

PraiseCharts

기본 경로: /content/praiseCharts

예배 곡 검색과 악보 다운로드를 위한 PraiseCharts 연동입니다.

메서드경로인증권한설명
GET/raw/:idJWT곡의 원본 PraiseCharts 데이터를 가져옵니다
GET/hasAccountJWT사용자가 연결된 PraiseCharts 계정을 가지고 있는지 확인합니다
GET/search?q=JWTPraiseCharts 카탈로그를 검색합니다
GET/products/:id?keys=JWT곡의 상품 정보를 가져옵니다(인증된 경우 라이브러리에서, 아니면 카탈로그에서)
GET/arrangement/raw/:id?keys=JWT라이브러리에서 원본 편곡 데이터를 가져옵니다
GET/download?skus=&keys=&file_name=JWTPraiseCharts에서 파일을 다운로드합니다(PDF 또는 ZIP). { redirectUrl }을 반환합니다
GET/authUrl?returnUrl=PublicPraiseCharts용 OAuth 인증 URL을 가져옵니다
GET/access?verifier=&token=&secret=JWTOAuth verifier를 액세스 토큰으로 교환하여 사용자 설정에 저장합니다
GET/libraryJWT사용자의 PraiseCharts 라이브러리를 조회합니다

Support

기본 경로: /content/support

메서드경로인증권한설명
POST/createAudioPublicAWS Polly를 사용해 SSML을 MP3 오디오로 변환합니다. 본문: { ssml: "<speak>...</speak>" }

관련 페이지