export interface OauthGrant { /** The account the grant is scoped to, prefixed `biz_`. `null` when the user authorized the app for themselves rather than for one of their accounts. */ account_id: string | null; /** The app this grant authorizes, prefixed `app_`. */ app_id: string; /** When the user last authorized the app, as an ISO 8601 timestamp. */ authorized_at: string | null; /** When the user first authorized the app, as an ISO 8601 timestamp. */ created_at: string; /** Grant ID, prefixed `oag_`. */ id: string; /** Where to send the user to finish the flow: the `redirect_uri` you supplied with the authorization `code` appended, and `state` when you supplied one. Its scheme, host, port, and path come back exactly as sent — never re-cased or re-encoded — because the client matches them against its registered URI. Returned only once, on create: the code is single-use and expires 10 minutes after it is issued, so redirect immediately. */ redirect_url?: string | undefined; /** When the grant was revoked, as an ISO 8601 timestamp, or `null` while it is still in force. A revoked grant authorizes nothing — treat its `scopes` as no longer granted. */ revoked_at: string | null; scopes: string[]; }