본문으로 건너뛰기

콘텐츠 엔드포인트

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

기본 경로: /content

Pages​

기본 경로: /content/pages

메서드경로인증권한설명
GET/:churchId/tree?url=&id=Public—URL 또는 ID로 전체 페이지 트리(섹션, 요소, 블록)를 가져옵니다. URL로 가져올 경우 내부 ID를 제거합니다. URL 기반 조회는 pages.visibility를 적용합니다 -- 게이트가 설정된 페이지는 (선택적) JWT가 게이트 조건을 충족하지 않으면 { restricted: true, visibility }를 반환합니다
GET/public/:churchIdPublic—공개 페이지 목록(url, title, metaDescription)을 가져옵니다. visibility = everyone인 경우만 해당됩니다
GET/:idJWT—ID로 페이지를 가져옵니다
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/:idJWT—ID로 섹션을 가져옵니다
POST/duplicate/:id?convertToBlock=JWTContent.Edit섹션을 복제하거나 재사용 가능한 블록으로 변환합니다
POST/JWTContent.Edit섹션을 생성하거나 업데이트합니다(일괄 처리). 정렬 순서를 자동으로 업데이트합니다
DELETE/:idJWTContent.Edit섹션을 삭제합니다(정렬 순서 자동 업데이트)

Elements​

기본 경로: /content/elements

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

Blocks​

기본 경로: /content/blocks

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

메서드경로인증권한설명
GET/:idJWT—ID로 블록을 가져옵니다
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/:idJWT—ID로 링크를 가져옵니다
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/:idJWT—ID로 게시물을 가져옵니다
GET/JWT—교회의 모든 게시물 목록을 가져옵니다
POST/JWTContent.Edit게시물을 생성하거나 업데이트합니다(일괄 처리)
DELETE/:idJWTContent.Edit게시물을 삭제합니다

Redirects​

기본 경로: /content/redirects

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

메서드경로인증권한설명
GET/public/:churchId?path=Public—경로를 확인합니다(path를 생략하면 모든 리다이렉트 목록을 반환)
GET/:idJWT—ID로 리다이렉트를 가져옵니다
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=Public—YouTube 또는 Vimeo에서 설교 메타데이터를 조회합니다
GET/socialSuggestions?youtubeVideoId=JWT—설교 자막으로부터 AI 소셜 미디어 게시물 제안을 생성합니다
GET/outline?url=&title=&author=JWT—URL로부터 AI 레슨 개요를 생성합니다
GET/youtubeImport/:channelIdJWT—YouTube 채널에서 영상을 가져옵니다
GET/vimeoImport/:channelIdJWT—Vimeo 채널에서 영상을 가져옵니다
GET/:idJWT—ID로 설교를 가져옵니다
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/:idJWT—ID로 재생목록을 가져옵니다
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=Public—ICS 캘린더 피드로 이벤트를 구독합니다
GET/group/:groupIdJWT—그룹의 이벤트를 가져옵니다(예외 날짜 포함)
GET/public/group/:churchId/:groupIdPublic—그룹의 공개 이벤트를 가져옵니다
GET/:idJWT—ID로 이벤트를 가져옵니다
POST/JWT—이벤트를 생성하거나 업데이트합니다(일괄 처리)
DELETE/:idJWTContent.Edit이벤트를 삭제합니다

Event Exceptions​

기본 경로: /content/eventExceptions

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

Curated Calendars​

기본 경로: /content/curatedCalendars

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

Curated Events​

기본 경로: /content/curatedEvents

메서드경로인증권한설명
GET/calendar/:curatedCalendarId?withoutEventsJWT—캘린더의 큐레이션된 이벤트를 가져옵니다(?withoutEvents가 없으면 이벤트 세부 정보와 예외 날짜 포함)
GET/public/calendar/:churchId/:curatedCalendarIdPublic—캘린더의 공개 큐레이션된 이벤트를 가져옵니다
GET/:idJWT—ID로 큐레이션된 이벤트를 가져옵니다
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/:idJWT—ID로 파일을 가져옵니다
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/:idJWT—ID로 곡을 가져옵니다
GET/JWTContent.Edit모든 곡 목록을 가져옵니다
POST/JWTContent.Edit곡을 생성하거나 업데이트합니다(일괄 처리)
POST/importJWT—FreeShow에서 곡을 가져옵니다(일괄 처리)
DELETE/:idJWTContent.Edit곡을 삭제합니다

Song Details​

기본 경로: /content/songDetails

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

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

기본 경로: /content/songDetailLinks

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

Arrangements​

기본 경로: /content/arrangements

메서드경로인증권한설명
GET/:idJWT—ID로 편곡을 가져옵니다
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/:idJWT—ID로 편곡 키를 가져옵니다
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/searchPublic—Pexels 스톡 사진을 검색합니다. 본문: { term: "church" }

PraiseCharts​

기본 경로: /content/praiseCharts

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

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

Support​

기본 경로: /content/support

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

관련 페이지​