Box
Box 컴포넌트는 Box Java SDK로 접근할 수 있는 Box.com API 전반을 Camel 라우트에서 그대로 쓸 수 있게 해 줘요. 파일 업로드·다운로드부터 폴더 생성·편집·관리, 그리고 사용자 계정이나 엔터프라이즈 계정의 변경 사항을 폴링하는 API까지 지원합니다. 인증은 OAuth 2.0 3-legged 방식과 JSON Web Token(JWT) 기반 서비스 계정 방식을 모두 다룰 수 있어요.
출처: 문서
본문
Camel 2.14부터 지원
컨슈머와 프로듀서를 모두 지원해요
Box 컴포넌트는 Box Java SDK로 접근할 수 있는 Box.com API 전반에 대한 접근을 제공해요. 메시지를 프로듀싱해서 파일을 업로드·다운로드하고, 폴더를 생성·편집·관리하는 등의 작업을 할 수 있어요. 사용자 계정의 업데이트, 나아가 엔터프라이즈 계정의 변경 사항까지 폴링할 수 있는 API도 지원합니다.
Box.com은 모든 클라이언트 애플리케이션 인증에 OAuth 2.0을 쓰도록 요구해요. camel-box를 여러분 계정에서 쓰려면 https://developer.box.com에서 Box.com 안에 새 애플리케이션을 만들어야 해요. Box 애플리케이션의 클라이언트 ID와 시크릿은 현재 사용자가 필요한 Box API에 대한 접근을 허용해요. 사용자 액세스 토큰은 최종 사용자(end user)를 위해 API가 생성하고 관리합니다.
Maven 사용자라면 이 컴포넌트를 위해 pom.xml에 다음 의존성을 추가해야 해요:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-box</artifactId>
<version>${camel-version}</version>
</dependency>
옵션 설정 (Configuring Options)
Camel 컴포넌트는 서로 다른 두 단계로 설정해요:
-
component level
-
endpoint level
컴포넌트 옵션 설정 (Configuring Component Options)
컴포넌트 레벨에서는 엔드포인트들이 이어서 물려받는 일반적이고 공유되는 설정을 해요. 가장 상위의 설정 레벨이죠.
예를 들어 컴포넌트에는 보안 설정, 인증용 자격 증명, 네트워크 연결 URL 같은 것들이 있을 수 있어요.
컴포넌트에 따라 옵션이 몇 개뿐인 것도 있고 아주 많은 것도 있어요. 컴포넌트는 보통 널리 쓰이는 기본값이 미리 설정되어 있어서, 몇 가지 옵션만 설정하거나 아예 하나도 건드리지 않아도 되는 경우가 많아요.
컴포넌트는 다음 방법으로 설정할 수 있어요:
-
Component DSL을 사용해요.
-
설정 파일(
application.properties,*.yaml파일 등). -
Java 코드에서 직접.
엔드포인트 옵션 설정 (Configuring Endpoint Options)
엔드포인트는 옵션이 많아서 설정에 시간을 더 쓰게 될 거예요. 이 옵션들이 엔드포인트가 원하는 일을 하도록 커스터마이즈해 줘요. 옵션은 엔드포인트가 컨슈머(from)로 쓰이는지, 프로듀서(to)로 쓰이는지, 둘 다인지에 따라 분류되기도 해요.
엔드포인트 설정은 대부분 엔드포인트 URI에 _path_와 query 파라미터로 바로 하는 경우가 많아요. Endpoint DSL과 DataFormat DSL을 쓰면 자바에서 엔드포인트와 데이터 포맷을 _타입 세이프_하게 설정할 수도 있어요.
옵션을 설정할 때 좋은 습관은 Property Placeholders를 사용하는 거예요.
프로퍼티 플레이스홀더는 이런 장점이 있어요:
-
URL, 포트 번호, 민감한 정보 같은 설정을 코드에 하드코딩하는 걸 막아 줘요.
-
설정을 코드 밖으로 분리할 수 있어요.
-
코드가 더 유연해지고 재사용하기 좋아져요.
아래 두 섹션에서 모든 옵션을 나열해요. 먼저 컴포넌트, 그다음 엔드포인트 순서예요.
컴포넌트 옵션 (Component Options)
Box 컴포넌트는 아래 나열된 옵션들을 지원해요.
| Name | Description | Default | Type |
|---|---|---|---|
| clientId (common) | Box 애플리케이션 클라이언트 ID예요. | String | |
| configuration (common) | 공유 설정을 쓰려면 이걸 사용해요. | BoxConfiguration | |
| enterpriseId (common) | App Enterprise용으로 쓸 엔터프라이즈 ID예요. | String | |
| userId (common) | App User용으로 쓸 사용자 ID예요. | String | |
| bridgeErrorHandler (consumer) | 컨슈머를 Camel 라우팅 에러 핸들러(Error Handler)에 브리지할 수 있게 해 줘요. 즉, Camel 컨슈머가 들어오는 메시지를 집어 올리는 동안 등에서 예외가 발생하면(가능한 경우), 그 예외를 메시지로 처리해서 라우팅 에러 핸들러가 다루게 돼요. 중요: 이것은 서드파티 컴포넌트가 예외가 던져졌을 때 Camel에 알릴 수 있도록 허용하는 경우에만 가능해요. 일부 컴포넌트는 내부에서만 처리하기 때문에 bridgeErrorHandler를 쓸 수 없어요. 다른 상황에서는 Camel 컴포넌트를 개선해서 서드파티 컴포넌트에 연결(hook)해 이를 가능하게 만들 수도 있어요. 기본으로 컨슈머는 org.apache.camel.spi.ExceptionHandler로 예외를 처리하는데, WARN 또는 ERROR 레벨로 로그를 남기고 무시해요. | false | boolean |
| lazyStartProducer (producer) | 프로듀서를 느리게(lazy, 첫 메시지 시점에) 시작할지 여부예요. lazy 시작을 쓰면 프로듀서가 시작 중에 실패해서 라우트 시작이 실패할 수 있는 상황에서도 CamelContext와 라우트를 시작할 수 있어요. 시작을 늦춰 두면 시작 실패가 발생했을 때 메시지를 라우팅하는 동안 Camel의 라우팅 에러 핸들러로 처리할 수 있죠. 단, 첫 메시지를 처리할 때 프로듀서를 만들고 시작하는 데 시간이 조금 걸려서 전체 처리 시간이 길어질 수 있다는 점은 감안하세요. | false | boolean |
| autowiredEnabled (advanced) | 오토와이어링(autowiring)을 활성화할지 여부예요. 레지스트리에서 일치하는 타입의 인스턴스가 딱 하나 있는지 찾아서, 그 인스턴스로 오토와이어링 옵션(옵션이 autowired로 표시되어 있어야 함)을 자동 설정하는 데 쓰여요. JDBC 데이터 소스, JMS 커넥션 팩토리, AWS 클라이언트 등을 자동 설정할 때 사용할 수 있어요. | true | boolean |
| httpParams (advanced) | 프록시 호스트 같은 설정에 쓸 커스텀 HTTP 파라미터예요. | Map | |
| authenticationType (authentication) | 연결에 쓸 인증 타입이에요. 인증 타입: STANDARD_AUTHENTICATION - OAuth 2.0 (3-legged) SERVER_AUTHENTICATION - JSON Web Token을 쓰는 OAuth 2.0. | APP_USER_AUTHENTICATION | String |
| accessTokenCache (security) | 액세스 토큰을 저장하고 꺼내 쓰는 커스텀 액세스 토큰 캐시예요. | IAccessTokenCache | |
| clientSecret (security) | Box 애플리케이션 클라이언트 시크릿이에요. | String | |
| encryptionAlgorithm (security) | |||
| JWT에 쓸 암호화 알고리즘 타입이에요. 지원 알고리즘: RSA_SHA_256, RSA_SHA_384, RSA_SHA_512. |
Enum values:
-
RSA_SHA_256
-
RSA_SHA_384
-
RSA_SHA_512
| RSA_SHA_256 | EncryptionAlgorithm | | maxCacheEntries (security) | 캐시에 둘 수 있는 액세스 토큰의 최대 개수예요. | 100 | int | | privateKeyFile (security) | JWT 서명을 만들 때 쓸 프라이빗 키예요. | | String | | privateKeyPassword (security) | 프라이빗 키의 비밀번호예요. | | String | | publicKeyId (security) | JWT 서명 검증에 쓸 퍼블릭 키의 ID예요. | | String | | sslContextParameters (security) | SSLContextParameters로 보안을 설정하려면 이걸 사용해요. | | SSLContextParameters | | userName (security) | Box 사용자 이름이에요. 반드시 제공해야 해요. | | String | | userPassword (security) | Box 사용자 비밀번호예요. authSecureStorage를 설정하지 않았거나 첫 호출에서 null을 반환하는 경우 반드시 제공해야 해요. | | String |
엔드포인트 옵션 (Endpoint Options)
Box 엔드포인트는 다음 URI 문법으로 설정해요:
box:apiName/methodName
다음 path 및 query 파라미터를 사용해요:
경로 파라미터 (Path Parameters)
| Name | Description | Default | Type |
|---|---|---|---|
| apiName (common) | |||
| 필수 수행할 연산의 종류예요. |
Enum values:
-
COLLABORATIONS
-
COMMENTS
-
EVENT_LOGS
-
FILES
-
FOLDERS
-
GROUPS
-
EVENTS
-
SEARCH
-
TASKS
-
USERS
| | BoxApiName | | methodName (common) | 필수 선택한 연산에 대해 수행할 하위 연산(sub operation)이에요. | | String |
쿼리 파라미터 (Query Parameters)
| Name | Description | Default | Type |
|---|---|---|---|
| clientId (common) | Box 애플리케이션 클라이언트 ID예요. | String | |
| enterpriseId (common) | App Enterprise용으로 쓸 엔터프라이즈 ID예요. | String | |
| inBody (common) | 교환(exchange)의 In Body로 넘길 파라미터 이름을 설정해요. | String | |
| userId (common) | App User용으로 쓸 사용자 ID예요. | String | |
| exceptionHandler (consumer (advanced)) | 컨슈머가 커스텀 ExceptionHandler를 쓰게 할 수 있어요. bridgeErrorHandler 옵션이 활성화되어 있으면 이 옵션은 사용되지 않는다는 점에 주의하세요. 기본으로 컨슈머는 예외를 처리하는데, WARN 또는 ERROR 레벨로 로그를 남기고 무시해요. | ExceptionHandler | |
| exchangePattern (consumer (advanced)) | |||
| 컨슈머가 교환(exchange)을 만들 때 교환 패턴을 설정해요. |
Enum values:
-
InOnly
-
InOut
| | ExchangePattern | | lazyStartProducer (producer (advanced)) | 프로듀서를 느리게(lazy, 첫 메시지 시점에) 시작할지 여부예요. lazy 시작을 쓰면 프로듀서가 시작 중에 실패해서 라우트 시작이 실패할 수 있는 상황에서도 CamelContext와 라우트를 시작할 수 있어요. 시작을 늦춰 두면 시작 실패가 발생했을 때 메시지를 라우팅하는 동안 Camel의 라우팅 에러 핸들러로 처리할 수 있죠. 단, 첫 메시지를 처리할 때 프로듀서를 만들고 시작하는 데 시간이 조금 걸려서 전체 처리 시간이 길어질 수 있다는 점은 감안하세요. | false | boolean | | httpParams (advanced) | 프록시 호스트 같은 설정에 쓸 커스텀 HTTP 파라미터예요. | | Map | | authenticationType (authentication) | 연결에 쓸 인증 타입이에요. 인증 타입: STANDARD_AUTHENTICATION - OAuth 2.0 (3-legged) SERVER_AUTHENTICATION - JSON Web Token을 쓰는 OAuth 2.0. | APP_USER_AUTHENTICATION | String | | accessTokenCache (security) | 액세스 토큰을 저장하고 꺼내 쓰는 커스텀 액세스 토큰 캐시예요. | | IAccessTokenCache | | clientSecret (security) | Box 애플리케이션 클라이언트 시크릿이에요. | | String | | encryptionAlgorithm (security) |
JWT에 쓸 암호화 알고리즘 타입이에요. 지원 알고리즘: RSA_SHA_256, RSA_SHA_384, RSA_SHA_512.
Enum values:
-
RSA_SHA_256
-
RSA_SHA_384
-
RSA_SHA_512
| RSA_SHA_256 | EncryptionAlgorithm | | maxCacheEntries (security) | 캐시에 둘 수 있는 액세스 토큰의 최대 개수예요. | 100 | int | | privateKeyFile (security) | JWT 서명을 만들 때 쓸 프라이빗 키예요. | | String | | privateKeyPassword (security) | 프라이빗 키의 비밀번호예요. | | String | | publicKeyId (security) | JWT 서명 검증에 쓸 퍼블릭 키의 ID예요. | | String | | sslContextParameters (security) | SSLContextParameters로 보안을 설정하려면 이걸 사용해요. | | SSLContextParameters | | userName (security) | Box 사용자 이름이에요. 반드시 제공해야 해요. | | String | | userPassword (security) | Box 사용자 비밀번호예요. authSecureStorage를 설정하지 않았거나 첫 호출에서 null을 반환하는 경우 반드시 제공해야 해요. | | String |
API 파라미터 (10개 API)
Box 엔드포인트는 API 기반 컴포넌트라서 어떤 API 이름과 API 메서드를 쓰느냐에 따라 추가 파라미터가 붙어요. API 이름과 API 메서드는 엔드포인트 URI에서 apiName/methodName 경로 파라미터 자리에 들어가요:
box:apiName/methodName
API 이름은 아래 표와 같이 10개가 있어요:
| API Name | Type | Description |
|---|---|---|
| collaborations | Producer | Box 협업(collaborations)을 관리하는 연산을 제공해요. |
| comments | Producer | Box 댓글(comments)을 관리하는 연산을 제공해요. |
| event-logs | Producer | Box 엔터프라이즈(관리자) 이벤트 로그를 읽는 연산을 제공해요. |
| events | Consumer | Box 이벤트(events)를 관리하는 연산을 제공해요. |
| files | Producer | Box 파일(files)을 관리하는 연산을 제공해요. |
| folders | Producer | Box 폴더(folders)를 관리하는 연산을 제공해요. |
| groups | Producer | Box 그룹(groups)을 관리하는 연산을 제공해요. |
| search | Producer | Box 검색(searches)을 관리하는 연산을 제공해요. |
| tasks | Producer | Box 태스크(tasks)를 관리하는 연산을 제공해요. |
| users | Producer | Box 사용자(users)를 관리하는 연산을 제공해요. |
각 API는 이어지는 다음 섹션에서 문서화돼 있어요.
API: collaborations
프로듀서만 지원해요
collaborations API는 다음 문법으로 정의돼요:
box:collaborations/methodName?[parameters]
7개 메서드가 아래 표에 나열되어 있고, 이어서 각 메서드의 상세 문법을 보여 줘요. (API 메서드는 문법에서 이름 대신 쓸 수 있는 짧은 _별칭_을 가질 수 있어요)
| Method | Alias | Description |
|---|---|---|
| addFolderCollaboration | add | 이 폴더에 협업(collaboration)을 추가해요. |
| addFolderCollaborationByEmail | add | 이 폴더에 협업(collaboration)을 추가해요. |
| deleteCollaboration | delete | 협업(collaboration)을 삭제해요. |
| getCollaborationInfo | info | 협업(collaboration) 정보를 조회해요. |
| getFolderCollaborations | collaborations | 폴더의 모든 협업(collaboration) 정보를 조회해요. |
| getPendingCollaborations | pendingCollaborations | 현재 사용자의 대기 중인 협업 초대를 모두 조회해요. |
| updateCollaborationInfo | updateInfo | 협업(collaboration) 정보를 갱신해요. |
Method addFolderCollaboration
시그니처(Signatures):
- com.box.sdk.BoxCollaboration addFolderCollaboration(String folderId, com.box.sdk.BoxCollaborator collaborator, com.box.sdk.BoxCollaboration.Role role);
box/addFolderCollaboration API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| collaborator | 추가할 협업자(collaborator)예요. | BoxCollaborator |
| folderId | 협업(collaboration)을 추가할 폴더의 ID예요. | String |
| role | 협업자의 역할(role)이에요. | Role |
Method addFolderCollaborationByEmail
시그니처(Signatures):
- com.box.sdk.BoxCollaboration addFolderCollaborationByEmail(String folderId, String email, com.box.sdk.BoxCollaboration.Role role);
box/addFolderCollaborationByEmail API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| 추가할 협업자의 이메일 주소예요. | String | |
| folderId | 협업(collaboration)을 추가할 폴더의 ID예요. | String |
| role | 협업자의 역할(role)이에요. | Role |
Method deleteCollaboration
시그니처(Signatures):
- void deleteCollaboration(String collaborationId);
box/deleteCollaboration API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| collaborationId | 변경할 댓글의 ID예요. | String |
Method getCollaborationInfo
시그니처(Signatures):
- com.box.sdk.BoxCollaboration.Info getCollaborationInfo(String collaborationId);
box/getCollaborationInfo API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| collaborationId | 협업(collaboration)의 ID예요. | String |
Method getFolderCollaborations
시그니처(Signatures):
- java.util.Collection<com.box.sdk.BoxCollaboration.Info> getFolderCollaborations(String folderId);
box/getFolderCollaborations API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| folderId | 협업 정보를 조회할 폴더의 ID예요. | String |
Method getPendingCollaborations
시그니처(Signatures):
- java.util.Collection<com.box.sdk.BoxCollaboration.Info> getPendingCollaborations();
box/getPendingCollaborations API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|
Method updateCollaborationInfo
시그니처(Signatures):
- com.box.sdk.BoxCollaboration updateCollaborationInfo(String collaborationId, com.box.sdk.BoxCollaboration.Info info);
box/updateCollaborationInfo API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| collaborationId | 협업(collaboration)의 ID예요. | String |
| info | 갱신할 협업 정보예요. | Info |
위 파라미터 외에도 box API는 쿼리 파라미터를 모두 쓸 수 있어요.
파라미터는 엔드포인트 URI에 담거나 메시지 헤더로 동적으로 줄 수도 있어요. 메시지 헤더 이름은 CamelBox.parameter 형식이어야 해요. inBody 파라미터는 메시지 헤더를 덮어써요. 즉 엔드포인트 파라미터 inBody=myParameterNameHere가 CamelBox.myParameterNameHere 헤더를 이기는 거죠.
API: comments
프로듀서만 지원해요
comments API는 다음 문법으로 정의돼요:
box:comments/methodName?[parameters]
6개 메서드가 아래 표에 나열되어 있고, 이어서 각 메서드의 상세 문법을 보여 줘요. (API 메서드는 문법에서 이름 대신 쓸 수 있는 짧은 _별칭_을 가질 수 있어요)
| Method | Alias | Description |
|---|---|---|
| addFileComment | add | 파일에 댓글을 추가해요. |
| changeCommentMessage | updateMessage | 댓글 메시지를 변경해요. |
| deleteComment | delete | 댓글을 삭제해요. |
| getCommentInfo | info | 댓글 정보를 조회해요. |
| getFileComments | comments | 이 파일의 모든 댓글 목록을 조회해요. |
| replyToComment | reply | 댓글에 답글을 달아요. |
Method addFileComment
시그니처(Signatures):
- com.box.sdk.BoxFile addFileComment(String fileId, String message);
box/addFileComment API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| fileId | 파일의 ID예요. | String |
| message | 댓글의 메시지 내용이에요. | String |
Method changeCommentMessage
시그니처(Signatures):
- com.box.sdk.BoxComment changeCommentMessage(String commentId, String message);
box/changeCommentMessage API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| commentId | 변경할 댓글의 ID예요. | String |
| message | 댓글에 담을 새 메시지예요. | String |
Method deleteComment
시그니처(Signatures):
- void deleteComment(String commentId);
box/deleteComment API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| commentId | 삭제할 댓글의 ID예요. | String |
Method getCommentInfo
시그니처(Signatures):
- com.box.sdk.BoxComment.Info getCommentInfo(String commentId);
box/getCommentInfo API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| commentId | 댓글의 ID예요. | String |
Method getFileComments
시그니처(Signatures):
- java.util.List<com.box.sdk.BoxComment.Info> getFileComments(String fileId);
box/getFileComments API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| fileId | 파일의 ID예요. | String |
Method replyToComment
시그니처(Signatures):
- com.box.sdk.BoxComment replyToComment(String commentId, String message);
box/replyToComment API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| commentId | 답글을 달 댓글의 ID예요. | String |
| message | 답글에 담을 메시지예요. | String |
위 파라미터 외에도 box API는 쿼리 파라미터를 모두 쓸 수 있어요.
파라미터는 엔드포인트 URI에 담거나 메시지 헤더로 동적으로 줄 수도 있어요. 메시지 헤더 이름은 CamelBox.parameter 형식이어야 해요. inBody 파라미터는 메시지 헤더를 덮어써요. 즉 엔드포인트 파라미터 inBody=myParameterNameHere가 CamelBox.myParameterNameHere 헤더를 이기는 거죠.
API: event-logs
프로듀서만 지원해요
event-logs API는 다음 문법으로 정의돼요:
box:event-logs/methodName?[parameters]
1개 메서드가 아래 표에 나열되어 있고, 이어서 각 메서드의 상세 문법을 보여 줘요. (API 메서드는 문법에서 이름 대신 쓸 수 있는 짧은 _별칭_을 가질 수 있어요)
| Method | Alias | Description |
|---|---|---|
| getEnterpriseEvents | events | 시작 위치(선택)를 지정해 이벤트 스트림을 만들고, 이벤트가 수신될 때 알림을 받을 리스너를 추가해요. |
Method getEnterpriseEvents
시그니처(Signatures):
- java.util.List<com.box.sdk.BoxEvent> getEnterpriseEvents(String position, java.util.Date after, java.util.Date before, com.box.sdk.BoxEvent.EventType[] types);
box/getEnterpriseEvents API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| after | 반환되는 이벤트 타임스탬프의 하한이에요. | Date |
| before | 반환되는 이벤트 타임스탬프의 상한이에요. | Date |
| position | 이벤트 스트림의 시작 위치예요. null일 수 있고, 그 경우 범위 안의 모든 이벤트가 반환돼요. | String |
| types | 필터링에 쓸 이벤트 타입 목록(선택)이에요. | EventType[] |
위 파라미터 외에도 box API는 쿼리 파라미터를 모두 쓸 수 있어요.
파라미터는 엔드포인트 URI에 담거나 메시지 헤더로 동적으로 줄 수도 있어요. 메시지 헤더 이름은 CamelBox.parameter 형식이어야 해요. inBody 파라미터는 메시지 헤더를 덮어써요. 즉 엔드포인트 파라미터 inBody=myParameterNameHere가 CamelBox.myParameterNameHere 헤더를 이기는 거죠.
API: events
컨슈머만 지원해요
events API는 다음 문법으로 정의돼요:
box:events/methodName?[parameters]
1개 메서드가 아래 표에 나열되어 있고, 이어서 각 메서드의 상세 문법을 보여 줘요. (API 메서드는 문법에서 이름 대신 쓸 수 있는 짧은 _별칭_을 가질 수 있어요)
| Method | Alias | Description |
|---|---|---|
| listen | 시작 위치(선택)를 지정해 이벤트 스트림을 만들고, 이벤트가 수신될 때 알림을 받을 리스너를 추가해요. |
Method listen
시그니처(Signatures):
- void listen(com.box.sdk.EventListener listener, Long startingPosition);
box/listen API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| startingPosition | 이벤트 스트림의 시작 위치예요. | Long |
위 파라미터 외에도 box API는 쿼리 파라미터를 모두 쓸 수 있어요.
파라미터는 엔드포인트 URI에 담거나 메시지 헤더로 동적으로 줄 수도 있어요. 메시지 헤더 이름은 CamelBox.parameter 형식이어야 해요. inBody 파라미터는 메시지 헤더를 덮어써요. 즉 엔드포인트 파라미터 inBody=myParameterNameHere가 CamelBox.myParameterNameHere 헤더를 이기는 거죠.
API: files
프로듀서만 지원해요
files API는 다음 문법으로 정의돼요:
box:files/methodName?[parameters]
21개 메서드가 아래 표에 나열되어 있고, 이어서 각 메서드의 상세 문법을 보여 줘요. (API 메서드는 문법에서 이름 대신 쓸 수 있는 짧은 _별칭_을 가질 수 있어요)
| Method | Alias | Description |
|---|---|---|
| checkUpload | canUpload | 업로드 전에 사전 검증을 수행해요. 파일 이름이 이미 있는지, 업로드 권한이 있는지 확인하죠. |
| copyFile | copy | 대상 폴더로 파일을 복사해요. 필요하면 새 이름도 붙일 수 있어요. |
| createFileMetadata | createMetadata | 전역 properties 템플릿 또는 지정한 템플릿 타입으로 파일 메타데이터를 생성해요. |
| createFileSharedLink | link | 파일의 공유 링크를 만들어요. |
| deleteFile | delete | 파일을 삭제해요. |
| deleteFileMetadata | delete | 파일의 properties 메타데이터를 삭제해요. |
| deleteFileVersion | delete | 파일 버전을 삭제해요. |
| downloadFile | download | 파일을 다운로드해요. |
| downloadPreviousFileVersion | downloadVersion | 파일의 이전 버전을 다운로드해요. |
| getDownloadURL | url | Box에서 파일을 바로 다운로드할 수 있는 만료 가능한 URL을 조회해요. |
| getFileInfo | info | 파일 정보를 조회해요. |
| getFileMetadata | metadata | 파일의 properties 메타데이터를 조회해요. |
| getFilePreviewLink | 임베디드 미리보기 세션을 만들 만료 가능한 URL을 조회해요. | |
| getFileVersions | versions | 파일의 이전 버전들을 조회해요. |
| moveFile | move | 대상 폴더로 파일을 이동해요. 필요하면 새 이름도 붙일 수 있어요. |
| promoteFileVersion | promoteVersion | 파일의 이전 버전을 승격(promote)해요. |
| renameFile | rename | 파일 이름을 newName으로 바꿔요. |
| updateFileInfo | updateInfo | 파일 정보를 갱신해요. |
| updateFileMetadata | updateMetadata | 파일의 properties 메타데이터를 갱신해요. |
| uploadFile | upload | 부모 폴더로 새 파일을 업로드해요. |
| uploadNewFileVersion | uploadVersion | 파일의 새 버전을 업로드해요. |
Method checkUpload
시그니처(Signatures):
- void checkUpload(String fileName, String parentFolderId, Long size);
box/checkUpload API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| fileName | 업로드할 파일에 붙일 이름이에요. | String |
| parentFolderId | 부모 폴더의 ID예요. | String |
| size | 업로드 진행 상황을 모니터링하는 데 쓰는 파일 내용의 크기예요. | Long |
Method copyFile
시그니처(Signatures):
- com.box.sdk.BoxFile copyFile(String fileId, String destinationFolderId, String newName);
box/copyFile API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| destinationFolderId | 대상(목적지) 폴더의 ID예요. | String |
| fileId | 복사할 파일의 ID예요. | String |
| newName | 복사본에 붙일 새 이름이에요. newName이 null이면 복사된 파일은 원본과 같은 이름을 가져요. | String |
Method createFileMetadata
시그니처(Signatures):
- com.box.sdk.Metadata createFileMetadata(String fileId, com.box.sdk.Metadata metadata, String typeName);
box/createFileMetadata API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| fileId | 메타데이터를 생성할 파일의 ID예요. | String |
| metadata | 새 메타데이터 값이에요. | Metadata |
| typeName | 메타데이터 템플릿 타입 이름이에요. null이면 전역 properties 템플릿 타입을 써요. | String |
Method createFileSharedLink
시그니처(Signatures):
- com.box.sdk.BoxSharedLink createFileSharedLink(String fileId, com.box.sdk.BoxSharedLink.Access access, java.util.Date unshareDate, com.box.sdk.BoxSharedLink.Permissions permissions);
box/createFileSharedLink API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| access | 공유 링크의 접근 레벨이에요. | Access |
| fileId | 공유 링크를 만들 파일의 ID예요. | String |
| permissions | 생성되는 링크의 권한이에요. permissions가 null이면 생성되는 공유 링크는 기본 권한으로 만들어져요. | Permissions |
| unshareDate | 생성되는 공유 링크가 만료되는 날짜와 시각이에요. unsharedDate가 null이면 만료되지 않는 링크가 만들어져요. | Date |
Method deleteFile
시그니처(Signatures):
- void deleteFile(String fileId);
box/deleteFile API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| fileId | 삭제할 파일의 ID예요. | String |
Method deleteFileMetadata
시그니처(Signatures):
- void deleteFileMetadata(String fileId);
box/deleteFileMetadata API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| fileId | 삭제할 파일의 ID예요. | String |
Method deleteFileVersion
시그니처(Signatures):
- void deleteFileVersion(String fileId, Integer version);
box/deleteFileVersion API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| fileId | 삭제할 버전을 가진 파일의 ID예요. | String |
| version | 삭제할 파일의 버전이에요. 파일의 초기 버전이 0, 두 번째 버전이 1 식으로 늘어나요. | Integer |
Method downloadFile
시그니처(Signatures):
- java.io.OutputStream downloadFile(String fileId, java.io.OutputStream output, Long rangeStart, Long rangeEnd, com.box.sdk.ProgressListener listener);
box/downloadFile API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| fileId | 파일의 ID예요. | String |
| listener | 다운로드 진행 상황을 모니터링할 리스너예요. null이면 진행 상황을 추적하지 않아요. | ProgressListener |
| output | 파일 내용이 기록될 스트림이에요. | OutputStream |
| rangeEnd | 다운로드를 멈출 파일 내부의 바이트 오프셋이에요. null이면 파일 내용 전체를 다운로드해요. | Long |
| rangeStart | 다운로드를 시작할 파일 내부의 바이트 오프셋이에요. null이면 파일 내용 전체를 다운로드해요. | Long |
Method downloadPreviousFileVersion
시그니처(Signatures):
- java.io.OutputStream downloadPreviousFileVersion(String fileId, Integer version, java.io.OutputStream output, com.box.sdk.ProgressListener listener);
box/downloadPreviousFileVersion API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| fileId | 파일의 ID예요. | String |
| listener | 다운로드 진행 상황을 모니터링할 리스너예요. null이면 진행 상황을 추적하지 않아요. | ProgressListener |
| output | 버전 내용이 기록될 스트림이에요. | OutputStream |
| version | 다운로드할 파일의 버전이에요. 파일의 초기 버전이 0, 두 번째 버전이 1 식으로 늘어나요. | Integer |
Method getDownloadURL
시그니처(Signatures):
- java.net.URL getDownloadURL(String fileId);
box/getDownloadURL API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| fileId | 파일의 ID예요. | String |
Method getFileInfo
시그니처(Signatures):
- com.box.sdk.BoxFile.Info getFileInfo(String fileId, String[] fields);
box/getFileInfo API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| fields | 가져올 정보 필드예요. null이면 모든 정보 필드를 가져와요. | String[] |
| fileId | 파일의 ID예요. | String |
Method getFileMetadata
시그니처(Signatures):
- com.box.sdk.Metadata getFileMetadata(String fileId, String typeName);
box/getFileMetadata API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| fileId | 메타데이터를 조회할 파일의 ID예요. | String |
| typeName | 메타데이터 템플릿 타입 이름이에요. null이면 전역 properties 템플릿 타입을 써요. | String |
Method getFilePreviewLink
시그니처(Signatures):
- java.net.URL getFilePreviewLink(String fileId);
box/getFilePreviewLink API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| fileId | 미리보기 링크를 만들 파일의 ID예요. | String |
Method getFileVersions
시그니처(Signatures):
- java.util.Collection<com.box.sdk.BoxFileVersion> getFileVersions(String fileId);
box/getFileVersions API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| fileId | 파일의 ID예요. | String |
Method moveFile
시그니처(Signatures):
- com.box.sdk.BoxFile moveFile(String fileId, String destinationFolderId, String newName);
box/moveFile API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| destinationFolderId | 대상(목적지) 폴더의 ID예요. | String |
| fileId | 이동할 파일의 ID예요. | String |
| newName | 이동한 파일에 붙일 새 이름이에요. newName이 null이면 이동한 파일은 원본과 같은 이름을 가져요. | String |
Method promoteFileVersion
시그니처(Signatures):
- com.box.sdk.BoxFileVersion promoteFileVersion(String fileId, Integer version);
box/promoteFileVersion API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| fileId | 파일의 ID예요. | String |
| version | 승격(promote)할 파일의 버전이에요. 파일의 초기 버전이 0, 두 번째 버전이 1 식으로 늘어나요. | Integer |
Method renameFile
시그니처(Signatures):
- com.box.sdk.BoxFile renameFile(String fileId, String newFileName);
box/renameFile API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| fileId | 이름을 바꿀 파일의 ID예요. | String |
| newFileName | 파일의 새 이름이에요. | String |
Method updateFileInfo
시그니처(Signatures):
- com.box.sdk.BoxFile updateFileInfo(String fileId, com.box.sdk.BoxFile.Info info);
box/updateFileInfo API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| fileId | 갱신할 파일의 ID예요. | String |
| info | 갱신할 정보예요. | Info |
Method updateFileMetadata
시그니처(Signatures):
- com.box.sdk.Metadata updateFileMetadata(String fileId, com.box.sdk.Metadata metadata);
box/updateFileMetadata API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| fileId | 삭제할 파일의 ID예요. | String |
| metadata | 새 메타데이터 값이에요. | Metadata |
Method uploadFile
시그니처(Signatures):
- com.box.sdk.BoxFile uploadFile(String parentFolderId, java.io.InputStream content, String fileName, java.util.Date created, java.util.Date modified, Long size, Boolean check, com.box.sdk.ProgressListener listener);
box/uploadFile API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| check | 파일 이름이 이미 쓰이고 있다면 대신 uploadNewVersion을 호출하세요. | Boolean |
| content | 업로드할 파일 내용을 담은 스트림이에요. | InputStream |
| created | 업로드되는 파일에 부여할 콘텐츠 생성 날짜예요. | Date |
| fileName | 업로드할 파일에 붙일 이름이에요. | String |
| listener | 업로드 진행 상황을 모니터링할 리스너예요. | ProgressListener |
| modified | 업로드되는 파일에 부여할 콘텐츠 수정 날짜예요. | Date |
| parentFolderId | 부모 폴더의 ID예요. | String |
| size | 업로드 진행 상황을 모니터링하는 데 쓰는 파일 내용의 크기예요. | Long |
Method uploadNewFileVersion
시그니처(Signatures):
- com.box.sdk.BoxFile uploadNewFileVersion(String fileId, java.io.InputStream fileContent, java.util.Date modified, Long fileSize, com.box.sdk.ProgressListener listener);
box/uploadNewFileVersion API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| fileContent | 업로드할 파일 내용을 담은 스트림이에요. | InputStream |
| fileId | 파일의 ID예요. | String |
| fileSize | 업로드 진행 상황을 모니터링하는 데 쓰는 파일 내용의 크기예요. | Long |
| listener | 업로드 진행 상황을 모니터링할 리스너예요. | ProgressListener |
| modified | 업로드되는 파일에 부여할 콘텐츠 수정 날짜예요. | Date |
위 파라미터 외에도 box API는 쿼리 파라미터를 모두 쓸 수 있어요.
파라미터는 엔드포인트 URI에 담거나 메시지 헤더로 동적으로 줄 수도 있어요. 메시지 헤더 이름은 CamelBox.parameter 형식이어야 해요. inBody 파라미터는 메시지 헤더를 덮어써요. 즉 엔드포인트 파라미터 inBody=myParameterNameHere가 CamelBox.myParameterNameHere 헤더를 이기는 거죠.
API: folders
프로듀서만 지원해요
folders API는 다음 문법으로 정의돼요:
box:folders/methodName?[parameters]
11개 메서드가 아래 표에 나열되어 있고, 이어서 각 메서드의 상세 문법을 보여 줘요. (API 메서드는 문법에서 이름 대신 쓸 수 있는 짧은 _별칭_을 가질 수 있어요)
| Method | Alias | Description |
|---|---|---|
| copyFolder | copy | 대상 폴더로 폴더를 복사해요. 필요하면 새 이름도 붙일 수 있어요. |
| createFolder | create | parentFolderId로 지정한 부모 폴더 아래에 path로 지정한 폴더를 만들어요. 중간 경로 폴더도 필요하면 함께 만들어요. |
| createFolderSharedLink | create | 폴더의 공유 링크를 만들어요. |
| deleteFolder | delete | 폴더를 삭제해요. |
| getFolder | folder | path가 가리키는 Box 폴더를 반환해요. |
| getFolderInfo | folder | 폴더 정보를 조회해요. |
| getFolderItems | folder | 폴더 안의 자식 항목 중 특정 범위를 반환하고, 항목별로 가져올 필드도 지정해요. |
| getRootFolder | root | 인증된 사용자의 루트 폴더를 반환해요. |
| moveFolder | move | 대상 폴더로 폴더를 이동해요. 필요하면 새 이름도 붙일 수 있어요. |
| renameFolder | rename | 폴더 이름을 newName으로 바꿔요. |
| updateFolderInfo | updateInfo | 폴더 정보를 갱신해요. |
Method copyFolder
시그니처(Signatures):
- com.box.sdk.BoxFolder copyFolder(String folderId, String destinationFolderId, String newName);
box/copyFolder API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| destinationFolderId | 대상(목적지) 폴더의 ID예요. | String |
| folderId | 복사할 폴더의 ID예요. | String |
| newName | 복사본에 붙일 새 이름이에요. newName이 null이면 복사된 폴더는 원본과 같은 이름을 가져요. | String |
Method createFolder
시그니처(Signatures):
-
com.box.sdk.BoxFolder createFolder(String parentFolderId, String folderName);
-
com.box.sdk.BoxFolder createFolder(String parentFolderId, String[] path);
box/createFolder API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| folderName | 생성된 폴더의 이름이에요. | String |
| parentFolderId | 부모 폴더의 ID예요. | String |
| path | 부모 폴더부터 반환되는 폴더까지의 Box 폴더 이름 나열이에요. | String[] |
Method createFolderSharedLink
시그니처(Signatures):
- com.box.sdk.BoxSharedLink createFolderSharedLink(String folderId, com.box.sdk.BoxSharedLink.Access access, java.util.Date unshareDate, com.box.sdk.BoxSharedLink.Permissions permissions);
box/createFolderSharedLink API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| access | 공유 링크의 접근 레벨이에요. | Access |
| folderId | 공유 링크를 만들 폴더의 ID예요. | String |
| permissions | 생성되는 링크의 권한이에요. permissions가 null이면 생성되는 공유 링크는 기본 권한으로 만들어져요. | Permissions |
| unshareDate | 생성되는 공유 링크가 만료되는 날짜와 시각이에요. unsharedDate가 null이면 만료되지 않는 링크가 만들어져요. | Date |
Method deleteFolder
시그니처(Signatures):
- void deleteFolder(String folderId);
box/deleteFolder API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| folderId | 삭제할 폴더의 ID예요. | String |
Method getFolder
시그니처(Signatures):
- com.box.sdk.BoxFolder getFolder(String[] path);
box/getFolder API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| path | 루트 폴더부터 반환되는 폴더까지의 Box 폴더 이름 나열이에요. | String[] |
Method getFolderInfo
시그니처(Signatures):
- com.box.sdk.BoxFolder.Info getFolderInfo(String folderId, String[] fields);
box/getFolderInfo API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| fields | 가져올 정보 필드예요. null이면 모든 정보 필드를 가져와요. | String[] |
| folderId | 폴더의 ID예요. | String |
Method getFolderItems
시그니처(Signatures):
- java.util.Collection<com.box.sdk.BoxItem.Info> getFolderItems(String folderId, Long offset, Long limit, String[] fields);
box/getFolderItems API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| fields | 각 자식 항목별로 가져올 항목 필드예요. null이면 모든 항목 필드를 가져와요. | String[] |
| folderId | 폴더의 ID예요. | String |
| limit | offset 이후에 가져올 자식 항목의 최대 개수예요. null이면 모든 자식 항목을 가져와요. | Long |
| offset | 가져올 첫 자식 항목의 인덱스예요. null이면 모든 자식 항목을 가져와요. | Long |
Method getRootFolder
시그니처(Signatures):
- com.box.sdk.BoxFolder getRootFolder();
box/getRootFolder API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|
Method moveFolder
시그니처(Signatures):
- com.box.sdk.BoxFolder moveFolder(String folderId, String destinationFolderId, String newName);
box/moveFolder API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| destinationFolderId | 대상(목적지) 폴더의 ID예요. | String |
| folderId | 이동할 폴더의 ID예요. | String |
| newName | 이동한 폴더에 붙일 새 이름이에요. newName이 null이면 이동한 폴더는 원본과 같은 이름을 가져요. | String |
Method renameFolder
시그니처(Signatures):
- com.box.sdk.BoxFolder renameFolder(String folderId, String newFolderName);
box/renameFolder API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| folderId | 이름을 바꿀 폴더의 ID예요. | String |
| newFolderName | 폴더의 새 이름이에요. | String |
Method updateFolderInfo
시그니처(Signatures):
- com.box.sdk.BoxFolder updateFolderInfo(String folderId, com.box.sdk.BoxFolder.Info info);
box/updateFolderInfo API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| folderId | 갱신할 폴더의 ID예요. | String |
| info | 갱신할 정보예요. | Info |
위 파라미터 외에도 box API는 쿼리 파라미터를 모두 쓸 수 있어요.
파라미터는 엔드포인트 URI에 담거나 메시지 헤더로 동적으로 줄 수도 있어요. 메시지 헤더 이름은 CamelBox.parameter 형식이어야 해요. inBody 파라미터는 메시지 헤더를 덮어써요. 즉 엔드포인트 파라미터 inBody=myParameterNameHere가 CamelBox.myParameterNameHere 헤더를 이기는 거죠.
API: groups
프로듀서만 지원해요
groups API는 다음 문법으로 정의돼요:
box:groups/methodName?[parameters]
10개 메서드가 아래 표에 나열되어 있고, 이어서 각 메서드의 상세 문법을 보여 줘요. (API 메서드는 문법에서 이름 대신 쓸 수 있는 짧은 _별칭_을 가질 수 있어요)
| Method | Alias | Description |
|---|---|---|
| addGroupMembership | addMembership | 지정한 역할로 그룹에 멤버를 추가해요. |
| createGroup | create | 지정한 이름과 추가 파라미터(선택)로 새 그룹을 만들어요. |
| deleteGroup | delete | 그룹을 삭제해요. |
| deleteGroupMembership | delete | 그룹 멤버십을 삭제해요. |
| getAllGroups | groups | 엔터프라이즈의 모든 그룹을 조회해요. |
| getGroupInfo | info | 그룹 정보를 조회해요. |
| getGroupMembershipInfo | membershipInfo | 그룹 멤버십 정보를 조회해요. |
| getGroupMemberships | memberships | 이 그룹의 모든 멤버십 정보를 조회해요. |
| updateGroupInfo | 그룹 정보를 갱신해요. | |
| updateGroupMembershipInfo | updateMembershipInfo | 그룹 멤버십 정보를 갱신해요. |
Method addGroupMembership
시그니처(Signatures):
- com.box.sdk.BoxGroupMembership addGroupMembership(String groupId, String userId, com.box.sdk.BoxGroupMembership.GroupRole role);
box/addGroupMembership API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| groupId | 그룹의 ID예요. | String |
| role | 이 그룹에서 사용자가 가질 역할이에요. 기본 역할을 부여하려면 null을 넣으면 돼요. | GroupRole |
| userId | 그룹에 추가할 사용자의 ID예요. | String |
Method createGroup
시그니처(Signatures):
- com.box.sdk.BoxGroup createGroup(String name, String provenance, String externalSyncIdentifier, String description, String invitabilityLevel, String memberViewabilityLevel);
box/createGroup API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| description | 새 그룹의 설명이에요. | String |
| externalSyncIdentifier | 새 그룹의 external_sync_identifier 값이에요. | String |
| invitabilityLevel | 새 그룹의 invitibility_level 값이에요. | String |
| memberViewabilityLevel | 새 그룹의 member_viewability_level 값이에요. | String |
| name | 새 그룹의 이름이에요. | String |
| provenance | 새 그룹의 provenance 값이에요. | String |
Method deleteGroup
시그니처(Signatures):
- void deleteGroup(String groupId);
box/deleteGroup API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| groupId | 삭제할 그룹의 ID예요. | String |
Method deleteGroupMembership
시그니처(Signatures):
- void deleteGroupMembership(String groupMembershipId);
box/deleteGroupMembership API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| groupMembershipId | 삭제할 그룹 멤버십의 ID예요. | String |
Method getAllGroups
시그니처(Signatures):
- java.util.Collection<com.box.sdk.BoxGroup> getAllGroups();
box/getAllGroups API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|
Method getGroupInfo
시그니처(Signatures):
- com.box.sdk.BoxGroup.Info getGroupInfo(String groupId);
box/getGroupInfo API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| groupId | 그룹의 ID예요. | String |
Method getGroupMembershipInfo
시그니처(Signatures):
- com.box.sdk.BoxGroupMembership.Info getGroupMembershipInfo(String groupMembershipId);
box/getGroupMembershipInfo API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| groupMembershipId | 그룹 멤버십의 ID예요. | String |
Method getGroupMemberships
시그니처(Signatures):
- java.util.Collection<com.box.sdk.BoxGroupMembership.Info> getGroupMemberships(String groupId);
box/getGroupMemberships API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| groupId | 그룹의 ID예요. | String |
Method updateGroupInfo
시그니처(Signatures):
- com.box.sdk.BoxGroup updateGroupInfo(String groupId, com.box.sdk.BoxGroup.Info groupInfo);
box/updateGroupInfo API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| groupId | 갱신할 그룹의 ID예요. | String |
| groupInfo | 갱신할 정보예요. | Info |
Method updateGroupMembershipInfo
시그니처(Signatures):
- com.box.sdk.BoxGroupMembership updateGroupMembershipInfo(String groupMembershipId, com.box.sdk.BoxGroupMembership.Info info);
box/updateGroupMembershipInfo API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| groupMembershipId | 갱신할 그룹 멤버십의 ID예요. | String |
| info | 갱신할 정보예요. | Info |
위 파라미터 외에도 box API는 쿼리 파라미터를 모두 쓸 수 있어요.
파라미터는 엔드포인트 URI에 담거나 메시지 헤더로 동적으로 줄 수도 있어요. 메시지 헤더 이름은 CamelBox.parameter 형식이어야 해요. inBody 파라미터는 메시지 헤더를 덮어써요. 즉 엔드포인트 파라미터 inBody=myParameterNameHere가 CamelBox.myParameterNameHere 헤더를 이기는 거죠.
API: search
프로듀서만 지원해요
search API는 다음 문법으로 정의돼요:
box:search/methodName?[parameters]
1개 메서드가 아래 표에 나열되어 있고, 이어서 각 메서드의 상세 문법을 보여 줘요. (API 메서드는 문법에서 이름 대신 쓸 수 있는 짧은 _별칭_을 가질 수 있어요)
| Method | Alias | Description |
|---|---|---|
| searchFolder | search | 주어진 쿼리로 폴더와 그 하위 폴더 전체를 검색해요. |
Method searchFolder
시그니처(Signatures):
- java.util.Collection<com.box.sdk.BoxItem> searchFolder(String folderId, String query);
box/searchFolder API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| folderId | 검색할 폴더의 ID예요. | String |
| query | 검색 쿼리예요. | String |
위 파라미터 외에도 box API는 쿼리 파라미터를 모두 쓸 수 있어요.
파라미터는 엔드포인트 URI에 담거나 메시지 헤더로 동적으로 줄 수도 있어요. 메시지 헤더 이름은 CamelBox.parameter 형식이어야 해요. inBody 파라미터는 메시지 헤더를 덮어써요. 즉 엔드포인트 파라미터 inBody=myParameterNameHere가 CamelBox.myParameterNameHere 헤더를 이기는 거죠.
API: tasks
프로듀서만 지원해요
tasks API는 다음 문법으로 정의돼요:
box:tasks/methodName?[parameters]
9개 메서드가 아래 표에 나열되어 있고, 이어서 각 메서드의 상세 문법을 보여 줘요. (API 메서드는 문법에서 이름 대신 쓸 수 있는 짧은 _별칭_을 가질 수 있어요)
| Method | Alias | Description |
|---|---|---|
| addAssignmentToTask | addAssignment | 태스크에 할당(assignment)을 추가해요. |
| addFileTask | add | 파일에 태스크를 추가해요. |
| deleteTask | delete | 태스크를 삭제해요. |
| deleteTaskAssignment | delete | 태스크 할당을 삭제해요. |
| getFileTasks | tasks | 파일의 모든 태스크 목록을 조회해요. |
| getTaskAssignmentInfo | assignmentInfo | 태스크 할당 정보를 조회해요. |
| getTaskAssignments | assignments | 태스크의 모든 할당 목록을 조회해요. |
| getTaskInfo | info | 태스크 정보를 조회해요. |
| updateTaskInfo | updateInfo | 태스크 정보를 갱신해요. |
Method addAssignmentToTask
시그니처(Signatures):
- com.box.sdk.BoxTask addAssignmentToTask(String taskId, com.box.sdk.BoxUser assignTo);
box/addAssignmentToTask API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| assignTo | 태스크에 배정할 사용자예요. | BoxUser |
| taskId | 할당(assignment)을 추가할 태스크의 ID예요. | String |
Method addFileTask
시그니처(Signatures):
- com.box.sdk.BoxTask addFileTask(String fileId, com.box.sdk.BoxTask.Action action, java.util.Date dueAt, String message);
box/addFileTask API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| action | 태스크 담당자에게 요구할 동작이에요. | Action |
| dueAt | 이 태스크의 마감 날짜예요. | Date |
| fileId | 태스크를 추가할 파일의 ID예요. | String |
| message | 태스크에 함께 담을 메시지(선택)예요. | String |
Method deleteTask
시그니처(Signatures):
- void deleteTask(String taskId);
box/deleteTask API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| taskId | 삭제할 태스크의 ID예요. | String |
Method deleteTaskAssignment
시그니처(Signatures):
- void deleteTaskAssignment(String taskAssignmentId);
box/deleteTaskAssignment API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| taskAssignmentId | 삭제할 태스크 할당의 ID예요. | String |
Method getFileTasks
시그니처(Signatures):
- java.util.List<com.box.sdk.BoxTask.Info> getFileTasks(String fileId);
box/getFileTasks API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| fileId | 파일의 ID예요. | String |
Method getTaskAssignmentInfo
시그니처(Signatures):
- com.box.sdk.BoxTaskAssignment.Info getTaskAssignmentInfo(String taskAssignmentId);
box/getTaskAssignmentInfo API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| taskAssignmentId | 태스크 할당의 ID예요. | String |
Method getTaskAssignments
시그니처(Signatures):
- java.util.List<com.box.sdk.BoxTaskAssignment.Info> getTaskAssignments(String taskId);
box/getTaskAssignments API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| taskId | 태스크의 ID예요. | String |
Method getTaskInfo
시그니처(Signatures):
- com.box.sdk.BoxTask.Info getTaskInfo(String taskId);
box/getTaskInfo API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| taskId | 태스크의 ID예요. | String |
Method updateTaskInfo
시그니처(Signatures):
- com.box.sdk.BoxTask updateTaskInfo(String taskId, com.box.sdk.BoxTask.Info info);
box/updateTaskInfo API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| info | 갱신할 정보예요. | Info |
| taskId | 태스크의 ID예요. | String |
위 파라미터 외에도 box API는 쿼리 파라미터를 모두 쓸 수 있어요.
파라미터는 엔드포인트 URI에 담거나 메시지 헤더로 동적으로 줄 수도 있어요. 메시지 헤더 이름은 CamelBox.parameter 형식이어야 해요. inBody 파라미터는 메시지 헤더를 덮어써요. 즉 엔드포인트 파라미터 inBody=myParameterNameHere가 CamelBox.myParameterNameHere 헤더를 이기는 거죠.
API: users
프로듀서만 지원해요
users API는 다음 문법으로 정의돼요:
box:users/methodName?[parameters]
11개 메서드가 아래 표에 나열되어 있고, 이어서 각 메서드의 상세 문법을 보여 줘요. (API 메서드는 문법에서 이름 대신 쓸 수 있는 짧은 _별칭_을 가질 수 있어요)
| Method | Alias | Description |
|---|---|---|
| addUserEmailAlias | addEmailAlias | 사용자 계정에 새 이메일 별칭을 추가해요. |
| createAppUser | create | Box Developer Edition으로 엔터프라이즈에 추가 사용자 정보와 함께 새 앱 사용자를 프로비저닝해요. |
| createEnterpriseUser | create | 엔터프라이즈에 추가 사용자 정보와 함께 새 사용자를 프로비저닝해요. |
| deleteUser | delete | 엔터프라이즈 계정에서 사용자를 삭제해요. |
| deleteUserEmailAlias | delete | 사용자 계정에서 이메일 별칭을 삭제해요. |
| getAllEnterpriseOrExternalUsers | users | 필터 조건에 맞는 관리 대상 사용자와 외부 사용자를 모두 조회해요. |
| getCurrentUser | currentUser | 현재 사용자를 조회해요. |
| getUserEmailAlias | emailAlias | 사용자의 모든 이메일 별칭 컬렉션을 조회해요. |
| getUserInfo | info | 사용자 정보를 조회해요. |
| moveFolderToUser | 지정한 사용자의 루트 폴더를 현재 사용자 쪽으로 이동해요. | |
| updateUserInfo | updateInfo | 사용자 정보를 갱신해요. |
Method addUserEmailAlias
시그니처(Signatures):
- com.box.sdk.EmailAlias addUserEmailAlias(String userId, String email);
box/addUserEmailAlias API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| 별칭(alias)으로 추가할 이메일 주소예요. | String | |
| userId | 사용자의 ID예요. | String |
Method createAppUser
시그니처(Signatures):
- com.box.sdk.BoxUser createAppUser(String name, com.box.sdk.CreateUserParams params);
box/createAppUser API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| name | 사용자의 이름이에요. | String |
| params | 추가 사용자 정보예요. | CreateUserParams |
Method createEnterpriseUser
시그니처(Signatures):
- com.box.sdk.BoxUser createEnterpriseUser(String login, String name, com.box.sdk.CreateUserParams params);
box/createEnterpriseUser API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| login | 사용자가 로그인에 쓸 이메일 주소예요. | String |
| name | 사용자의 이름이에요. | String |
| params | 추가 사용자 정보예요. | CreateUserParams |
Method deleteUser
시그니처(Signatures):
- void deleteUser(String userId, boolean notifyUser, boolean force);
box/deleteUser API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| force | 파일을 아직 가지고 있더라도 이 사용자를 삭제할지 여부예요. | Boolean |
| notifyUser | 계정이 삭제됐다는 이메일 알림을 사용자에게 보낼지 여부예요. | Boolean |
| userId | 삭제할 사용자의 ID예요. | String |
Method deleteUserEmailAlias
시그니처(Signatures):
- void deleteUserEmailAlias(String userId, String emailAliasId);
box/deleteUserEmailAlias API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| emailAliasId | 삭제할 이메일 별칭의 ID예요. | String |
| userId | 사용자의 ID예요. | String |
Method getAllEnterpriseOrExternalUsers
시그니처(Signatures):
- java.util.List<com.box.sdk.BoxUser.Info> getAllEnterpriseOrExternalUsers(String filterTerm, String[] fields);
box/getAllEnterpriseOrExternalUsers API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| fields | 가져올 필드예요. 표준 필드만 필요하면 생략하세요. | String[] |
| filterTerm | 사용자를 찾을 필터 조건이에요(외부 사용자는 login, 관리 대상 사용자는 login 또는 name). null이면 모든 관리 대상 사용자가 반환돼요. | String |
Method getCurrentUser
시그니처(Signatures):
- com.box.sdk.BoxUser getCurrentUser();
box/getCurrentUser API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|
Method getUserEmailAlias
시그니처(Signatures):
- java.util.Collection<com.box.sdk.EmailAlias> getUserEmailAlias(String userId);
box/getUserEmailAlias API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| userId | 사용자의 ID예요. | String |
Method getUserInfo
시그니처(Signatures):
- com.box.sdk.BoxUser.Info getUserInfo(String userId);
box/getUserInfo API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| userId | 사용자의 ID예요. | String |
Method moveFolderToUser
시그니처(Signatures):
- com.box.sdk.BoxFolder.Info moveFolderToUser(String userId, String sourceUserId);
box/moveFolderToUser API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| sourceUserId | 이 연산의 소스가 될 파일들을 가진 사용자의 사용자 ID예요. | String |
| userId | 사용자의 ID예요. | String |
Method updateUserInfo
시그니처(Signatures):
- com.box.sdk.BoxUser updateUserInfo(String userId, com.box.sdk.BoxUser.Info info);
box/updateUserInfo API 메서드는 아래 표에 나열된 파라미터를 사용해요:
| Parameter | Description | Type |
|---|---|---|
| info | 갱신할 정보예요. | Info |
| userId | 갱신할 사용자의 ID예요. | String |
위 파라미터 외에도 box API는 쿼리 파라미터를 모두 쓸 수 있어요.
파라미터는 엔드포인트 URI에 담거나 메시지 헤더로 동적으로 줄 수도 있어요. 메시지 헤더 이름은 CamelBox.parameter 형식이어야 해요. inBody 파라미터는 메시지 헤더를 덮어써요. 즉 엔드포인트 파라미터 inBody=myParameterNameHere가 CamelBox.myParameterNameHere 헤더를 이기는 거죠.
메시지 헤더 (Message Headers)
Box 컴포넌트가 지원하는 메시지 헤더는 아래와 같아요:
| Name | Description | Default | Type |
|---|---|---|---|
CamelBox. (common) Constant: PROPERTY_PREFIX |
API 메서드 파라미터를 담는 헤더들의 접두사(prefix)예요. 예컨대 CamelBox.fileName 헤더에 fileName 파라미터가 담기는 식이에요. | Object |
참고 이 컴포넌트는 API 기반이라서 엔드포인트 옵션 외에도
Camel접두사가 붙은 교환 헤더로 호출별(call) 파라미터를 넘길 수 있어요. 라우트가 신뢰할 수 없는 프로듀서의 메시지를 소비한다면, 메시지가 이 컴포넌트에 닿기 전에 신뢰 경계(trust boundary)에서 이 내부 헤더들을 걷어내세요 — 예를 들어removeHeaders("Camel*")을 쓰면 발신자가 API 호출을 덮어쓸 수 없어요. 자세한 내용은 Camel 보안 모델을 참고하세요.
사용법 (Usage)
연결 인증 타입 (Connection Authentication Types)
Box 컴포넌트는 세 가지 인증 연결 방식을 지원해요.
표준 인증 (Standard Authentication)
**표준 인증(Standard Authentication)**은 OAuth 2.0 3-legged 인증 절차로 Box.com과의 연결을 인증해요. 이 인증 방식은 Box **관리 대상 사용자(managed users)**와 외부 사용자가 Box 컴포넌트를 통해 자기 Box 콘텐츠에 접근·편집·저장할 수 있게 해 줘요.
App Enterprise 인증 (App Enterprise Authentication)
App Enterprise 인증은 **OAuth 2.0 with JSON Web Tokens (JWT)**로 Box 애플리케이션의 **서비스 계정(Service Account)**으로서 연결을 인증해요. 이 인증 방식은 서비스 계정이 Box 컴포넌트를 통해 자기 Box 애플리케이션의 Box 콘텐츠에 접근·편집·저장할 수 있게 해 줘요.
App User 인증 (App User Authentication)
App User 인증은 **OAuth 2.0 with JSON Web Tokens (JWT)**로 Box 애플리케이션의 App User로서 연결을 인증해요. 이 인증 방식은 앱 사용자가 Box 컴포넌트를 통해 자기 Box 애플리케이션 안의 Box 콘텐츠에 접근·편집·저장할 수 있게 해 줘요.
예시 (Examples)
다음 라우트는 사용자의 루트 폴더로 새 파일을 업로드해요:
-
Java
-
XML
-
YAML
from("file:...")
.setHeader("CamelBox.fileName", header("CamelFileName"))
.to("box://files/upload?inBody=content&parentFolderId=0");
<route>
<from uri="file:..."/>
<setHeader name="CamelBox.fileName">
<header>CamelFileName</header>
</setHeader>
<to uri="box://files/upload?inBody=content&parentFolderId=0"/>
</route>
- route:
from:
uri: file:...
steps:
- setHeader:
name: CamelBox.fileName
header: CamelFileName
- to:
uri: box://files/upload
parameters:
inBody: content
parentFolderId: "0"
다음 라우트는 사용자 계정의 업데이트를 폴링해요:
-
Java
-
XML
-
YAML
from("box://events/listen?startingPosition=-1")
.to("bean:blah");
<route>
<from uri="box://events/listen?startingPosition=-1"/>
<to uri="bean:blah"/>
</route>
- route:
from:
uri: box://events/listen
parameters:
startingPosition: -1
steps:
- to:
uri: bean:blah
다음 라우트는 동적 헤더 옵션을 쓰는 프로듀서를 활용해요. fileId 프로퍼티에는 Box 파일 ID가, output 프로퍼티에는 파일 내용의 출력 스트림이 담기는데, 아래처럼 각각 CamelBox.fileId 헤더와 CamelBox.output 헤더로 할당돼요:
자바 전용: header() 표현식으로 동적 헤더를 설정해요
from("direct:foo")
.setHeader("CamelBox.fileId", header("fileId"))
.setHeader("CamelBox.output", header("output"))
.to("box://files/download")
.to("file://...");
더 알아보기 (More information)
더 자세한 내용은 Box API 레퍼런스를 보세요: https://developer.box.com/reference
더 알아보기 (Learn more)
- Box API 레퍼런스 — 각 API 연산의 상세 동작과 파라미터를 확인할 수 있는 공식 레퍼런스예요. Box 컴포넌트의 10개 API(collaborations, comments, files 등)가 실제로 어떤 REST 호출로 이어지는지 궁금할 때 이 문서를 참고하세요.
- Camel 컴포넌트 개요 — 다른 컴포넌트와의 설정 개념(component/endpoint 옵션, property placeholder)이 궁금하면 함께 보면 좋아요.