문서로 건너뛰기
Ruby

API 키

`keys.list`, `list_all`, `iterate`, `get`, `create`, `update`, `delete`, `rotate`, `revoke`, 그리고 요청 로그와 활동을 읽는 메서드.

모든 메서드

keys.rb
key = client.keys.create(  name: "Billing sender",  scopes: ["emails:send"],  domainAllowlist: ["billing.acme.com"],  expiresInMinutes: 60 * 24 * 90) File.write(".openemail-billing-key", key[:token]) client.keys.update(key[:id], enabled: false) rotated = client.keys.rotate(key[:id])File.write(".openemail-billing-key", rotated[:token]) client.keys.revoke(key[:id], reason: "Replaced")client.keys.delete(key[:id])

시크릿을 돌려주는 호출은 create와 rotate뿐이며, token으로 한 번만 돌려줍니다. 모든 읽기는 대신 maskedKey를 돌려줍니다. update는 enabled로 키를 끄고 켜는데, 이는 revoke의 되돌릴 수 있는 대안이며, delete는 폐기된 키만 없앱니다: 그 밖의 키는 409 not_revoked입니다. 읽기에는 keys:read, 모든 변경에는 keys:manage가 필요합니다.

gem은 create나 rotate를 절대 재시도하지 않습니다. 응답을 잃은 뒤 재시도하면 두 번째 키가 발급되거나, 첫 시도가 돌려준 시크릿이 무효가 되기 때문입니다. update와 revoke는 반복해도 같은 키가 남으므로 네트워크 장애 후에 재시도되지만, delete는 재시도되지 않습니다.

호출자보다 넓지 않게

키는 자신보다 넓은 키를 만들거나 그런 키에 닿지 않습니다. 스코프, 역할, 만료, 모드, 발신 범위가 모두 호출하는 키 안에 있어야 하며, 그렇지 않으면 호출은 코드 beyond_caller_authority의 OpenEmail::PermissionError를 발생시키고 param이 그 축을 알려 줍니다. 일부 도메인이나 주소로 좁혀진 키는 자기 발신 범위 안의 키만 봅니다. 호출하는 키 자신에 대한 rotate는 client.me.rotate처럼 keys:write로도 됩니다.

재인증은 키로 한 호출에는 적용할 수 없으므로 keys:manage는 자격 증명을 만들어 내는 자격 증명입니다. 키를 발급하는 자동화에만 주고, 그 키에 역할·발신 범위·만료를 주고, 그 모든 행동이 기록되는 list_workspace_activity를 지켜보세요.

요청 로그와 활동

key_logs.rb
failures = client.keys.list_requests(  "4c1b257a66287fd113bd89d0",  failed_only: true,  since: Time.now - (24 * 60 * 60))puts failures.items.size client.keys.iterate_workspace_activity do |change|  puts [change[:keyName], change[:type], change.dig(:actor, :label)].join(" ")end

list_requests와 list_activity는 키 하나를, list_workspace_requests와 list_workspace_activity는 모든 키나 key_ids:로 지정한 키를 읽습니다. 각각 옆에 list_all_requests와 iterate_requests처럼 list_all_과 iterate_로 시작하는 짝이 있습니다. since:와 until:을 Time, DateTime, 또는 ISO 8601 문자열로 받으며, 요청을 읽는 메서드는 failed_only:도 받습니다.

until은 Ruby의 예약어지만, until:은 쓰인 그대로 키워드 인자로 동작합니다. since:보다 뒤여야 하며, 그렇지 않으면 호출은 코드 invalid_parameter의 OpenEmail::InvalidRequestError를 발생시킵니다.