문서로 건너뛰기
Python

API 키

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

모든 메서드

keys.py
from pathlib import Path from openemail import openemail key = openemail.keys.create({    'name': 'Billing sender',    'scopes': ['emails:send'],    'domainAllowlist': ['billing.acme.com'],    'expiresInMinutes': 60 * 24 * 90,}) secret = Path('.openemail-billing-key')secret.touch(mode=0o600)secret.write_text(key['token']) openemail.keys.update(key['id'], {'enabled': False}) rotated = openemail.keys.rotate(key['id'])secret.write_text(rotated['token']) openemail.keys.revoke(key['id'], {'reason': 'Replaced'})openemail.keys.delete(key['id'])

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

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

호출자보다 넓지 않게

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

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

요청 로그와 활동

key_logs.py
from datetime import datetime, timedelta, timezone from openemail import openemail failures = openemail.keys.list_requests(    '4c1b257a66287fd113bd89d0',    failed_only=True,    since=datetime.now(timezone.utc) - timedelta(days=1),)for request in failures['items']:    print(request['status'], request['method'], request['path']) for change in openemail.keys.iterate_workspace_activity():    actor = change['actor']    print(change['keyName'], change['type'], actor['label'] if actor else None)

list_requests와 list_activity는 키 하나를, list_workspace_requests와 list_workspace_activity는 모든 키나 key_ids로 지정한 키를 읽으며, 각각 옆에 list_all_…과 iterate_…가 있습니다. since와 until을 받고, 요청을 읽는 메서드는 failed_only도 받습니다.

since와 until은 datetime이나 ISO 8601 문자열을 받습니다. datetime은 UTC로 전송되며, 시간대 정보가 없는 naive 값은 먼저 현지 시각으로 해석됩니다.

레퍼런스