라벨
`labels.list`, `list_all`, `iterate`, `list_colors`, `get`, `create`, `update`, `delete`.
모든 메서드
page = client.labels.list(limit: 50)every = client.labels.list_allcolors = client.labels.list_colorsputs page.items.size, every.size, colors.size client.labels.iterate do |row| puts "#{row[:name]} #{row[:threadCount]}"end created = client.labels.create( name: "Invoices", color: {backgroundColor: "gradient:sunset"}) client.labels.update(created[:id], name: "Invoices 2027")client.labels.update(created[:id], color: {backgroundColor: "#3B82F6"}) label = client.labels.get(created[:id])puts label[:name], label.dig(:color, :backgroundColor) client.labels.delete(created[:id])list는 이름순으로 정렬된 라벨의 OpenEmail::Page 하나를 반환하고, list_all과 iterate는 모든 페이지를 순회합니다. list_all은 하나의 Array를 반환하고, iterate는 라벨을 하나씩 블록에 yield하거나 블록이 없으면 Enumerator를 반환합니다. 각 라벨은 색, threadCount, 만든 시각과 마지막으로 바꾼 시각을 담은 Symbol 키의 Hash입니다. list_colors는 앱이 제공하는 팔레트(단색 열네 가지와 그라데이션 일곱 가지)를 페이지 나눔 없는 Hash의 일반 Array로 반환합니다. type은 항상 user입니다. id는 라벨을 처음 만들 때의 이름에서 만들어지므로 Invoices는 USER_INVOICES이며, 절대 바뀌지 않습니다.
create와 update의 필드는 키워드 인자나 Hash 하나이며 API의 이름을 그대로 쓰므로, 색은 color: {backgroundColor: "#3B82F6"}입니다.
라벨은 워크스페이스에 속하므로 이름 변경, 색 변경, 삭제는 모든 멤버와 모든 키에 적용됩니다. threads.update는 대화에 라벨을 붙이고 떼며, client.threads.list(folder: "USER_INVOICES")는 그 라벨이 붙은 모든 대화를 나열합니다. 둘 다 스레드 페이지에서 다룹니다.
파라미터: labels.create 및 labels.update
nameString- 라벨의 표시 이름으로, 길이를 재기 전에 앞뒤 공백을 잘라내므로 제한은 잘라낸 뒤 1~225자입니다. `create`에서는 필수이고 `update`에서는 선택이며, 빼면 이름이 그대로 남습니다. 공백만 있으면 422입니다. 대소문자를 구분하지 않고 비교해 다른 라벨이 이미 가진 이름은 409 `label_name_taken`이며 `OpenEmail::ConflictError`로 발생합니다. 워크스페이스에 라벨이 50개가 되면 `create`는 422 `label_limit_reached`로 거부하며, 이는 `OpenEmail::ValidationError`로 발생합니다.
colorHash or nil- 두 호출 모두에서 선택 사항입니다. `update`에서 빼면 저장된 색이 그대로 남고, `color: nil`은 색을 지웁니다. 본문은 엄격하게 검사되므로 `colour:`처럼 비슷하지만 다른 키는 조용히 무시되지 않고 422가 됩니다.
color.backgroundColorString필수- hex 색(`#RGB`, `#RGBA`, `#RRGGBB`, `#RRGGBBAA` 중 하나로, 대문자로 저장됩니다)이나 그라데이션 토큰(`gradient:sunset`, `gradient:ember`, `gradient:meadow`, `gradient:lagoon`, `gradient:aurora`, `gradient:berry`, `gradient:midnight`)입니다. 빈 문자열은 색 없음을 뜻하며, 그 밖의 값은 422 `invalid_parameter`입니다.
color.textColorString- 받지만 무시합니다. 글자색은 앱과 같은 방식으로 `backgroundColor`에서 계산됩니다.
응답: 라벨
라벨은 Symbol 키를 가진 Hash이므로 label[:threadCount]로 개수를 읽고, label.dig(:color, :backgroundColor)로 색을 읽으며, 라벨에 색이 없으면 nil이 됩니다.
objectString- 항상 문자열 `label`입니다. `create`와 `update`도 저장된 그대로 다시 읽은 이 같은 Hash를 반환합니다.
idString- 라벨의 id로, `get`, `update`, `delete`, `threads.update`가 받는 값입니다. 이름을 바꾼 뒤에도 절대 바뀌지 않습니다.
nameString- 사용자에게 보이는 이름입니다.
typeString- 항상 `user`입니다. 시스템 라벨은 여기서 절대 돌려주지 않으며, `get`에 시스템 id를 주면 `OpenEmail::NotFoundError`로 발생하는 404입니다.
colorHash or nil- 라벨에 색이 없으면 nil입니다.
color.backgroundColorString- 저장된 색으로, hex 값이나 그라데이션 토큰입니다. 그라데이션의 양 끝은 `list_colors`에서 알 수 있습니다.
color.textColorString- 앱이 그 색 위에 그리는 글자색으로 `#18181B` 또는 `#FFFFFF`이며, 저장되지 않고 서버에서 계산됩니다.
threadCountInteger- 지금 그 라벨이 붙은 대화 수입니다. 특정 주소로 제한된 키에서는 그 주소로 배달된 대화만 셉니다.
createdAtString or nil- 라벨을 만든 시각(ISO 8601)이며, 이 시각이 기록되기 전에 만든 라벨에서는 nil입니다.
updatedAtString or nil- 마지막으로 이름이나 색을 바꾼 시각(ISO 8601)이며, 이 시각이 기록되기 전에 만든 라벨에서는 nil입니다.
응답: 색 견본(labels.list_colors)
kindString- 견본이 단색인지 그라데이션인지: `solid` 또는 `gradient`.
nameString- 견본 이름으로, `red`나 `sunset` 같은 값입니다.
valueString- 이 견본을 쓰기 위해 `color.backgroundColor`로 보낼 값입니다.
solidString- 그라데이션을 그릴 수 없는 곳을 위한 단일 hex입니다. 단색에서는 `value`와 같습니다.
fromString or nil- 그라데이션이 시작하는 곳으로, 135도로 그려집니다. 단색에서는 nil입니다.
toString or nil- 그라데이션이 끝나는 곳입니다. 단색에서는 nil입니다.
textColorString- 앱이 이 견본 위에 그리는 글자색입니다.