diff --git a/Package.swift b/Package.swift index fb72a36..cd036df 100644 --- a/Package.swift +++ b/Package.swift @@ -64,12 +64,5 @@ let package = Package( .product(name: "Web3PromiseKit", package: "Web3.swift"), ] ), - // Empty target that builds the DocC catalog at /SwiftDocCPluginDocumentation/SwiftDocCPlugin.docc. - // The SwiftDocCPlugin catalog includes high-level, user-facing documentation about using - // the Swift-DocC plugin from the command-line. - .target( - name: "TurnkeySDKDocumentation", - path: "Sources/TurnkeySDKDocumentation" - ) ] ) diff --git a/Sources/TurnkeySDK/TurnkeyClient.generated.swift b/Sources/TurnkeySDK/TurnkeyClient.generated.swift index 1819393..363b0dd 100644 --- a/Sources/TurnkeySDK/TurnkeyClient.generated.swift +++ b/Sources/TurnkeySDK/TurnkeyClient.generated.swift @@ -1,4 +1,4 @@ -// Generated using Sourcery 2.2.2 — https://github.com/krzysztofzablocki/Sourcery +// Generated using Sourcery 2.2.5 — https://github.com/krzysztofzablocki/Sourcery // DO NOT EDIT import AuthenticationServices @@ -118,6 +118,7 @@ public struct TurnkeyClient { /// - apiKeyName: Optional. The name of the API key used in the authentication process. /// - expirationSeconds: Optional. The duration in seconds before the authentication request expires. /// - emailCustomization: Optional. Customization parameters for the authentication email. + /// - invalidateExisting: Optional. Invalidates all existing email auth API keys. /// /// - Returns: A tuple containing the `Operations.EmailAuth.Output` and a closure `(String) async throws -> Void` that accepts an encrypted bundle for verification. /// @@ -127,7 +128,7 @@ public struct TurnkeyClient { public func emailAuth( organizationId: String, email: String, apiKeyName: String?, expirationSeconds: String?, - emailCustomization: Components.Schemas.EmailCustomizationParams? + emailCustomization: Components.Schemas.EmailCustomizationParams?, invalidateExisting: Bool? ) async throws -> (Operations.EmailAuth.Output, (String) async throws -> AuthResult) { let ephemeralPrivateKey = P256.KeyAgreement.PrivateKey() let targetPublicKey = try ephemeralPrivateKey.publicKey.toString(representation: .x963) @@ -135,7 +136,7 @@ public struct TurnkeyClient { let response = try await emailAuth( organizationId: organizationId, email: email, targetPublicKey: targetPublicKey, apiKeyName: apiKeyName, expirationSeconds: expirationSeconds, - emailCustomization: emailCustomization) + emailCustomization: emailCustomization, invalidateExisting: invalidateExisting) let authResponseOrganizationId = try response.ok.body.json.activity.organizationId let verify: (String) async throws -> AuthResult = { encryptedBundle in @@ -233,6 +234,36 @@ public struct TurnkeyClient { ) return try await underlyingClient.GetAuthenticators(input) } + public func getOauthProviders(organizationId: String, userId: String?) async throws + -> Operations.GetOauthProviders.Output + { + + // Create the GetOauthProvidersRequest + let getOauthProvidersRequest = Components.Schemas.GetOauthProvidersRequest( + organizationId: organizationId, userId: userId + ) + + let input = Operations.GetOauthProviders.Input( + headers: .init(accept: [.init(contentType: .json)]), + body: .json(getOauthProvidersRequest) + ) + return try await underlyingClient.GetOauthProviders(input) + } + public func getOrganizationConfigs(organizationId: String) async throws + -> Operations.GetOrganizationConfigs.Output + { + + // Create the GetOrganizationConfigsRequest + let getOrganizationConfigsRequest = Components.Schemas.GetOrganizationConfigsRequest( + organizationId: organizationId + ) + + let input = Operations.GetOrganizationConfigs.Input( + headers: .init(accept: [.init(contentType: .json)]), + body: .json(getOrganizationConfigsRequest) + ) + return try await underlyingClient.GetOrganizationConfigs(input) + } public func getPolicy(organizationId: String, policyId: String) async throws -> Operations.GetPolicy.Output { @@ -468,16 +499,16 @@ public struct TurnkeyClient { public func createApiKeys( organizationId: String, - apiKeys: [Components.Schemas.ApiKeyParams], userId: String + apiKeys: [Components.Schemas.ApiKeyParamsV2], userId: String ) async throws -> Operations.CreateApiKeys.Output { - // Create the CreateApiKeysIntent - let createApiKeysIntent = Components.Schemas.CreateApiKeysIntent( + // Create the CreateApiKeysIntentV2 + let createApiKeysIntent = Components.Schemas.CreateApiKeysIntentV2( apiKeys: apiKeys, userId: userId) // Create the CreateApiKeysRequest let createApiKeysRequest = Components.Schemas.CreateApiKeysRequest( - _type: .ACTIVITY_TYPE_CREATE_API_KEYS, + _type: .ACTIVITY_TYPE_CREATE_API_KEYS_V2, timestampMs: String(Int(Date().timeIntervalSince1970 * 1000)), organizationId: organizationId, parameters: createApiKeysIntent @@ -547,6 +578,33 @@ public struct TurnkeyClient { return try await underlyingClient.CreateInvitations(input) } + public func createOauthProviders( + organizationId: String, + userId: String, oauthProviders: [Components.Schemas.OauthProviderParams] + ) async throws -> Operations.CreateOauthProviders.Output { + + // Create the CreateOauthProvidersIntent + let createOauthProvidersIntent = Components.Schemas.CreateOauthProvidersIntent( + userId: userId, oauthProviders: oauthProviders) + + // Create the CreateOauthProvidersRequest + let createOauthProvidersRequest = Components.Schemas.CreateOauthProvidersRequest( + _type: .ACTIVITY_TYPE_CREATE_OAUTH_PROVIDERS, + timestampMs: String(Int(Date().timeIntervalSince1970 * 1000)), + organizationId: organizationId, + parameters: createOauthProvidersIntent + ) + + // Create the input for the CreateOauthProviders method + let input = Operations.CreateOauthProviders.Input( + headers: .init(accept: [.init(contentType: .json)]), + body: .json(createOauthProvidersRequest) + ) + + // Call the CreateOauthProviders method using the underlyingClient + return try await underlyingClient.CreateOauthProviders(input) + } + public func createPolicies( organizationId: String, policies: [Components.Schemas.CreatePolicyIntentV3] @@ -657,22 +715,77 @@ public struct TurnkeyClient { return try await underlyingClient.CreatePrivateKeys(input) } + public func createReadOnlySession( + organizationId: String + ) async throws -> Operations.CreateReadOnlySession.Output { + + // Create the CreateReadOnlySessionIntent + let createReadOnlySessionIntent = Components.Schemas.CreateReadOnlySessionIntent() + + // Create the CreateReadOnlySessionRequest + let createReadOnlySessionRequest = Components.Schemas.CreateReadOnlySessionRequest( + _type: .ACTIVITY_TYPE_CREATE_READ_ONLY_SESSION, + timestampMs: String(Int(Date().timeIntervalSince1970 * 1000)), + organizationId: organizationId, + parameters: createReadOnlySessionIntent + ) + + // Create the input for the CreateReadOnlySession method + let input = Operations.CreateReadOnlySession.Input( + headers: .init(accept: [.init(contentType: .json)]), + body: .json(createReadOnlySessionRequest) + ) + + // Call the CreateReadOnlySession method using the underlyingClient + return try await underlyingClient.CreateReadOnlySession(input) + } + + public func createReadWriteSession( + organizationId: String, + targetPublicKey: String, userId: String?, apiKeyName: String?, expirationSeconds: String? + ) async throws -> Operations.CreateReadWriteSession.Output { + + // Create the CreateReadWriteSessionIntentV2 + let createReadWriteSessionIntent = Components.Schemas.CreateReadWriteSessionIntentV2( + targetPublicKey: targetPublicKey, userId: userId, apiKeyName: apiKeyName, + expirationSeconds: expirationSeconds) + + // Create the CreateReadWriteSessionRequest + let createReadWriteSessionRequest = Components.Schemas.CreateReadWriteSessionRequest( + _type: .ACTIVITY_TYPE_CREATE_READ_WRITE_SESSION_V2, + timestampMs: String(Int(Date().timeIntervalSince1970 * 1000)), + organizationId: organizationId, + parameters: createReadWriteSessionIntent + ) + + // Create the input for the CreateReadWriteSession method + let input = Operations.CreateReadWriteSession.Input( + headers: .init(accept: [.init(contentType: .json)]), + body: .json(createReadWriteSessionRequest) + ) + + // Call the CreateReadWriteSession method using the underlyingClient + return try await underlyingClient.CreateReadWriteSession(input) + } + public func createSubOrganization( organizationId: String, - subOrganizationName: String, rootUsers: [Components.Schemas.RootUserParams], + subOrganizationName: String, rootUsers: [Components.Schemas.RootUserParamsV4], rootQuorumThreshold: Int32, wallet: Components.Schemas.WalletParams?, - disableEmailRecovery: Bool?, disableEmailAuth: Bool? + disableEmailRecovery: Bool?, disableEmailAuth: Bool?, disableSmsAuth: Bool?, + disableOtpEmailAuth: Bool? ) async throws -> Operations.CreateSubOrganization.Output { - // Create the CreateSubOrganizationIntentV4 - let createSubOrganizationIntent = Components.Schemas.CreateSubOrganizationIntentV4( + // Create the CreateSubOrganizationIntentV7 + let createSubOrganizationIntent = Components.Schemas.CreateSubOrganizationIntentV7( subOrganizationName: subOrganizationName, rootUsers: rootUsers, rootQuorumThreshold: rootQuorumThreshold, wallet: wallet, - disableEmailRecovery: disableEmailRecovery, disableEmailAuth: disableEmailAuth) + disableEmailRecovery: disableEmailRecovery, disableEmailAuth: disableEmailAuth, + disableSmsAuth: disableSmsAuth, disableOtpEmailAuth: disableOtpEmailAuth) // Create the CreateSubOrganizationRequest let createSubOrganizationRequest = Components.Schemas.CreateSubOrganizationRequest( - _type: .ACTIVITY_TYPE_CREATE_SUB_ORGANIZATION_V4, + _type: .ACTIVITY_TYPE_CREATE_SUB_ORGANIZATION_V7, timestampMs: String(Int(Date().timeIntervalSince1970 * 1000)), organizationId: organizationId, parameters: createSubOrganizationIntent @@ -877,6 +990,33 @@ public struct TurnkeyClient { return try await underlyingClient.DeleteInvitation(input) } + public func deleteOauthProviders( + organizationId: String, + userId: String, providerIds: [String] + ) async throws -> Operations.DeleteOauthProviders.Output { + + // Create the DeleteOauthProvidersIntent + let deleteOauthProvidersIntent = Components.Schemas.DeleteOauthProvidersIntent( + userId: userId, providerIds: providerIds) + + // Create the DeleteOauthProvidersRequest + let deleteOauthProvidersRequest = Components.Schemas.DeleteOauthProvidersRequest( + _type: .ACTIVITY_TYPE_DELETE_OAUTH_PROVIDERS, + timestampMs: String(Int(Date().timeIntervalSince1970 * 1000)), + organizationId: organizationId, + parameters: deleteOauthProvidersIntent + ) + + // Create the input for the DeleteOauthProviders method + let input = Operations.DeleteOauthProviders.Input( + headers: .init(accept: [.init(contentType: .json)]), + body: .json(deleteOauthProvidersRequest) + ) + + // Call the DeleteOauthProviders method using the underlyingClient + return try await underlyingClient.DeleteOauthProviders(input) + } + public func deletePolicy( organizationId: String, policyId: String @@ -931,6 +1071,60 @@ public struct TurnkeyClient { return try await underlyingClient.DeletePrivateKeyTags(input) } + public func deletePrivateKeys( + organizationId: String, + privateKeyIds: [String], deleteWithoutExport: Bool? + ) async throws -> Operations.DeletePrivateKeys.Output { + + // Create the DeletePrivateKeysIntent + let deletePrivateKeysIntent = Components.Schemas.DeletePrivateKeysIntent( + privateKeyIds: privateKeyIds, deleteWithoutExport: deleteWithoutExport) + + // Create the DeletePrivateKeysRequest + let deletePrivateKeysRequest = Components.Schemas.DeletePrivateKeysRequest( + _type: .ACTIVITY_TYPE_DELETE_PRIVATE_KEYS, + timestampMs: String(Int(Date().timeIntervalSince1970 * 1000)), + organizationId: organizationId, + parameters: deletePrivateKeysIntent + ) + + // Create the input for the DeletePrivateKeys method + let input = Operations.DeletePrivateKeys.Input( + headers: .init(accept: [.init(contentType: .json)]), + body: .json(deletePrivateKeysRequest) + ) + + // Call the DeletePrivateKeys method using the underlyingClient + return try await underlyingClient.DeletePrivateKeys(input) + } + + public func deleteSubOrganization( + organizationId: String, + deleteWithoutExport: Bool? + ) async throws -> Operations.DeleteSubOrganization.Output { + + // Create the DeleteSubOrganizationIntent + let deleteSubOrganizationIntent = Components.Schemas.DeleteSubOrganizationIntent( + deleteWithoutExport: deleteWithoutExport) + + // Create the DeleteSubOrganizationRequest + let deleteSubOrganizationRequest = Components.Schemas.DeleteSubOrganizationRequest( + _type: .ACTIVITY_TYPE_DELETE_SUB_ORGANIZATION, + timestampMs: String(Int(Date().timeIntervalSince1970 * 1000)), + organizationId: organizationId, + parameters: deleteSubOrganizationIntent + ) + + // Create the input for the DeleteSubOrganization method + let input = Operations.DeleteSubOrganization.Input( + headers: .init(accept: [.init(contentType: .json)]), + body: .json(deleteSubOrganizationRequest) + ) + + // Call the DeleteSubOrganization method using the underlyingClient + return try await underlyingClient.DeleteSubOrganization(input) + } + public func deleteUserTags( organizationId: String, userTagIds: [String] @@ -985,20 +1179,48 @@ public struct TurnkeyClient { return try await underlyingClient.DeleteUsers(input) } + public func deleteWallets( + organizationId: String, + walletIds: [String], deleteWithoutExport: Bool? + ) async throws -> Operations.DeleteWallets.Output { + + // Create the DeleteWalletsIntent + let deleteWalletsIntent = Components.Schemas.DeleteWalletsIntent( + walletIds: walletIds, deleteWithoutExport: deleteWithoutExport) + + // Create the DeleteWalletsRequest + let deleteWalletsRequest = Components.Schemas.DeleteWalletsRequest( + _type: .ACTIVITY_TYPE_DELETE_WALLETS, + timestampMs: String(Int(Date().timeIntervalSince1970 * 1000)), + organizationId: organizationId, + parameters: deleteWalletsIntent + ) + + // Create the input for the DeleteWallets method + let input = Operations.DeleteWallets.Input( + headers: .init(accept: [.init(contentType: .json)]), + body: .json(deleteWalletsRequest) + ) + + // Call the DeleteWallets method using the underlyingClient + return try await underlyingClient.DeleteWallets(input) + } + public func emailAuth( organizationId: String, email: String, targetPublicKey: String, apiKeyName: String?, expirationSeconds: String?, - emailCustomization: Components.Schemas.EmailCustomizationParams? + emailCustomization: Components.Schemas.EmailCustomizationParams?, invalidateExisting: Bool? ) async throws -> Operations.EmailAuth.Output { - // Create the EmailAuthIntent - let emailAuthIntent = Components.Schemas.EmailAuthIntent( + // Create the EmailAuthIntentV2 + let emailAuthIntent = Components.Schemas.EmailAuthIntentV2( email: email, targetPublicKey: targetPublicKey, apiKeyName: apiKeyName, - expirationSeconds: expirationSeconds, emailCustomization: emailCustomization) + expirationSeconds: expirationSeconds, emailCustomization: emailCustomization, + invalidateExisting: invalidateExisting) // Create the EmailAuthRequest let emailAuthRequest = Components.Schemas.EmailAuthRequest( - _type: .ACTIVITY_TYPE_EMAIL_AUTH, + _type: .ACTIVITY_TYPE_EMAIL_AUTH_V2, timestampMs: String(Int(Date().timeIntervalSince1970 * 1000)), organizationId: organizationId, parameters: emailAuthIntent @@ -1206,6 +1428,34 @@ public struct TurnkeyClient { return try await underlyingClient.InitImportWallet(input) } + public func initOtpAuth( + organizationId: String, + otpType: String, contact: String, + emailCustomization: Components.Schemas.EmailCustomizationParams? + ) async throws -> Operations.InitOtpAuth.Output { + + // Create the InitOtpAuthIntent + let initOtpAuthIntent = Components.Schemas.InitOtpAuthIntent( + otpType: otpType, contact: contact, emailCustomization: emailCustomization) + + // Create the InitOtpAuthRequest + let initOtpAuthRequest = Components.Schemas.InitOtpAuthRequest( + _type: .ACTIVITY_TYPE_INIT_OTP_AUTH, + timestampMs: String(Int(Date().timeIntervalSince1970 * 1000)), + organizationId: organizationId, + parameters: initOtpAuthIntent + ) + + // Create the input for the InitOtpAuth method + let input = Operations.InitOtpAuth.Input( + headers: .init(accept: [.init(contentType: .json)]), + body: .json(initOtpAuthRequest) + ) + + // Call the InitOtpAuth method using the underlyingClient + return try await underlyingClient.InitOtpAuth(input) + } + public func initUserEmailRecovery( organizationId: String, email: String, targetPublicKey: String, expirationSeconds: String?, @@ -1235,6 +1485,63 @@ public struct TurnkeyClient { return try await underlyingClient.InitUserEmailRecovery(input) } + public func oauth( + organizationId: String, + oidcToken: String, targetPublicKey: String, apiKeyName: String?, expirationSeconds: String? + ) async throws -> Operations.Oauth.Output { + + // Create the OauthIntent + let oauthIntent = Components.Schemas.OauthIntent( + oidcToken: oidcToken, targetPublicKey: targetPublicKey, apiKeyName: apiKeyName, + expirationSeconds: expirationSeconds) + + // Create the OauthRequest + let oauthRequest = Components.Schemas.OauthRequest( + _type: .ACTIVITY_TYPE_OAUTH, + timestampMs: String(Int(Date().timeIntervalSince1970 * 1000)), + organizationId: organizationId, + parameters: oauthIntent + ) + + // Create the input for the Oauth method + let input = Operations.Oauth.Input( + headers: .init(accept: [.init(contentType: .json)]), + body: .json(oauthRequest) + ) + + // Call the Oauth method using the underlyingClient + return try await underlyingClient.Oauth(input) + } + + public func otpAuth( + organizationId: String, + otpId: String, otpCode: String, targetPublicKey: String?, apiKeyName: String?, + expirationSeconds: String?, invalidateExisting: Bool? + ) async throws -> Operations.OtpAuth.Output { + + // Create the OtpAuthIntent + let otpAuthIntent = Components.Schemas.OtpAuthIntent( + otpId: otpId, otpCode: otpCode, targetPublicKey: targetPublicKey, apiKeyName: apiKeyName, + expirationSeconds: expirationSeconds, invalidateExisting: invalidateExisting) + + // Create the OtpAuthRequest + let otpAuthRequest = Components.Schemas.OtpAuthRequest( + _type: .ACTIVITY_TYPE_OTP_AUTH, + timestampMs: String(Int(Date().timeIntervalSince1970 * 1000)), + organizationId: organizationId, + parameters: otpAuthIntent + ) + + // Create the input for the OtpAuth method + let input = Operations.OtpAuth.Input( + headers: .init(accept: [.init(contentType: .json)]), + body: .json(otpAuthRequest) + ) + + // Call the OtpAuth method using the underlyingClient + return try await underlyingClient.OtpAuth(input) + } + public func recoverUser( organizationId: String, authenticator: Components.Schemas.AuthenticatorParamsV2, userId: String @@ -1513,12 +1820,14 @@ public struct TurnkeyClient { public func updateUser( organizationId: String, - userId: String, userName: String?, userEmail: String?, userTagIds: [String]? + userId: String, userName: String?, userEmail: String?, userTagIds: [String]?, + userPhoneNumber: String? ) async throws -> Operations.UpdateUser.Output { // Create the UpdateUserIntent let updateUserIntent = Components.Schemas.UpdateUserIntent( - userId: userId, userName: userName, userEmail: userEmail, userTagIds: userTagIds) + userId: userId, userName: userName, userEmail: userEmail, userTagIds: userTagIds, + userPhoneNumber: userPhoneNumber) // Create the UpdateUserRequest let updateUserRequest = Components.Schemas.UpdateUserRequest( diff --git a/Sources/TurnkeySDK/openapi.yaml b/Sources/TurnkeySDK/openapi.yaml index 4454d2a..031027d 100644 --- a/Sources/TurnkeySDK/openapi.yaml +++ b/Sources/TurnkeySDK/openapi.yaml @@ -5,120 +5,75 @@ info: contact: {} version: '1.0' servers: - - url: https://api.turnkey.com/ +- url: https://api.turnkey.com/ security: - - ApiKeyAuth: [] - - AuthenticatorAuth: [] +- ApiKeyAuth: [] +- AuthenticatorAuth: [] tags: - - name: Organizations - description: >- - An Organization is the highest level of hierarchy in Turnkey. It can - contain many Users, Private Keys, and Policies managed by a Root Quorum. - The Root Quorum consists of a set of Users with a consensus threshold. - This consensus threshold must be reached by Quorum members in order for - any actions to take place. +- name: Organizations + description: |- + An Organization is the highest level of hierarchy in Turnkey. It can contain many Users, Private Keys, and Policies managed by a Root Quorum. The Root Quorum consists of a set of Users with a consensus threshold. This consensus threshold must be reached by Quorum members in order for any actions to take place. + See [Root Quorum](../concepts/users/root-quorum) for more information +- name: Invitations + description: |- + Invitations allow you to invite Users into your Organization via email. Alternatively, Users can be added directly without an Invitation if their ApiKey or Authenticator credentials are known ahead of time. - See [Root Quorum](../managing-users/root-quorum) for more information - - name: Invitations - description: >- - Invitations allow you to invite Users into your Organization via email. - Alternatively, Users can be added directly without an Invitation if their - ApiKey or Authenticator credentials are known ahead of time. + See [Users](./api#tag/Users) for more information +- name: Policies + description: |- + Policies allow for deep customization of the security of your Organization. They can be used to grant permissions or restrict usage of Users and Private Keys. The Policy Engine analyzes all of your Policies on each request to determine whether an Activity is allowed. + See [Policy Overview](../managing-policies/overview) for more information +- name: Wallets + description: |- + Wallets contain collections of deterministically generated cryptographic public / private key pairs that share a common seed. Turnkey securely holds the common seed, but only you can access it. In most cases, Wallets should be preferred over Private Keys since they can be represented by a mnemonic phrase, used across a variety of cryptographic curves, and can derive many addresses. - See [Users](./api#tag/Users) for more information - - name: Policies - description: >- - Policies allow for deep customization of the security of your - Organization. They can be used to grant permissions or restrict usage of - Users and Private Keys. The Policy Engine analyzes all of your Policies on - each request to determine whether an Activity is allowed. + Derived addresses can be used to create digital signatures using the corresponding underlying private key. See [Signing](./api#tag/Signing) for more information +- name: Signing + description: Signers allow you to create digital signatures. Signatures are used + to validate the authenticity and integrity of a digital message. Turnkey makes + it easy to produce signatures by allowing you to sign with an address. If Turnkey + doesn't yet support an address format you need, you can generate and sign with + the public key instead by using the address format `ADDRESS_FORMAT_COMPRESSED`. +- name: Private Keys + description: |- + Private Keys are cryptographic public / private key pairs that can be used for cryptocurrency needs or more generalized encryption. Turnkey securely holds all private key materials for you, but only you can access them. + The Private Key ID or any derived address can be used to create digital signatures. See [Signing](./api#tag/Signing) for more information +- name: Private Key Tags + description: Private Key Tags allow you to easily group and permission Private Keys + through Policies. +- name: Users + description: Users are responsible for any action taken within an Organization. + They can have ApiKey or Auuthenticator credentials, allowing you to onboard teammates + to the Organization, or create API-only Users to run as part of your infrastructure. +- name: User Tags + description: User Key Tags allow you to easily group and permission Users through + Policies. +- name: Authenticators + description: Authenticators are WebAuthN hardware devices, such as a Macbook TouchID + or Yubikey, that can be used to authenticate requests. +- name: API Keys + description: |- + API Keys are used to authenticate requests - See [Policy Overview](../managing-policies/overview) for more information - - name: Wallets - description: >- - Wallets contain collections of deterministically generated cryptographic - public / private key pairs that share a common seed. Turnkey securely - holds the common seed, but only you can access it. In most cases, Wallets - should be preferred over Private Keys since they can be represented by a - mnemonic phrase, used across a variety of cryptographic curves, and can - derive many addresses. + See our [CLI](https://github.com/tkhq/tkcli) for instructions on generating API Keys +- name: Activities + description: |- + Activities encapsulate all the possible actions that can be taken with Turnkey. Some examples include adding a new user, creating a private key, and signing a transaction. + Activities that modify your Organization are processed asynchronously. To confirm processing is complete and retrieve the Activity results, these activities must be polled until that status has been updated to a finalized state: `COMPLETED` when the activity is successful or `FAILED` when the activity has failed +- name: Consensus + description: |- + Policies can enforce consensus requirements for Activities. For example, adding a new user requires two admins to approve the request. - Derived addresses can be used to create digital signatures using the - corresponding underlying private key. See [Signing](./api#tag/Signing) for - more information - - name: Signing - description: >- - Signers allow you to create digital signatures. Signatures are used to - validate the authenticity and integrity of a digital message. Turnkey - makes it easy to produce signatures by allowing you to sign with an - address. If Turnkey doesn't yet support an address format you need, you - can generate and sign with the public key instead by using the address - format `ADDRESS_FORMAT_COMPRESSED`. - - name: Private Keys - description: >- - Private Keys are cryptographic public / private key pairs that can be used - for cryptocurrency needs or more generalized encryption. Turnkey securely - holds all private key materials for you, but only you can access them. - - - The Private Key ID or any derived address can be used to create digital - signatures. See [Signing](./api#tag/Signing) for more information - - name: Private Key Tags - description: >- - Private Key Tags allow you to easily group and permission Private Keys - through Policies. - - name: Users - description: >- - Users are responsible for any action taken within an Organization. They - can have ApiKey or Auuthenticator credentials, allowing you to onboard - teammates to the Organization, or create API-only Users to run as part of - your infrastructure. - - name: User Tags - description: >- - User Key Tags allow you to easily group and permission Users through - Policies. - - name: Authenticators - description: >- - Authenticators are WebAuthN hardware devices, such as a Macbook TouchID or - Yubikey, that can be used to authenticate requests. - - name: API Keys - description: >- - API Keys are used to authenticate requests - - - See our [CLI](https://github.com/tkhq/tkcli) for instructions on - generating API Keys - - name: Activities - description: >- - Activities encapsulate all the possible actions that can be taken with - Turnkey. Some examples include adding a new user, creating a private key, - and signing a transaction. - - - Activities that modify your Organization are processed asynchronously. To - confirm processing is complete and retrieve the Activity results, these - activities must be polled until that status has been updated to a - finalized state: `COMPLETED` when the activity is successful or `FAILED` - when the activity has failed - - name: Consensus - description: >- - Policies can enforce consensus requirements for Activities. For example, - adding a new user requires two admins to approve the request. - - - Activities that have been proposed, but don't yet meet the Consesnsus - requirements will have the status: `REQUIRES_CONSENSUS`. Activities in - this state can be approved or rejected using the unique fingerprint - generated when an Activity is created. + Activities that have been proposed, but don't yet meet the Consesnsus requirements will have the status: `REQUIRES_CONSENSUS`. Activities in this state can be approved or rejected using the unique fingerprint generated when an Activity is created. paths: - /public/v1/query/get_activity: + "/public/v1/query/get_activity": post: tags: - - Activities + - Activities summary: Get Activity description: Get details about an Activity operationId: GetActivity @@ -126,7 +81,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GetActivityRequest' + "$ref": "#/components/schemas/GetActivityRequest" required: true responses: '200': @@ -134,12 +89,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/query/get_api_key: + "/public/v1/query/get_api_key": post: tags: - - API keys + - API keys summary: Get API key description: Get details about an API key operationId: GetApiKey @@ -147,7 +102,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GetApiKeyRequest' + "$ref": "#/components/schemas/GetApiKeyRequest" required: true responses: '200': @@ -155,12 +110,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GetApiKeyResponse' + "$ref": "#/components/schemas/GetApiKeyResponse" x-codegen-request-body-name: body - /public/v1/query/get_api_keys: + "/public/v1/query/get_api_keys": post: tags: - - API keys + - API keys summary: Get API key description: Get details about API keys for a user operationId: GetApiKeys @@ -168,7 +123,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GetApiKeysRequest' + "$ref": "#/components/schemas/GetApiKeysRequest" required: true responses: '200': @@ -176,12 +131,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GetApiKeysResponse' + "$ref": "#/components/schemas/GetApiKeysResponse" x-codegen-request-body-name: body - /public/v1/query/get_authenticator: + "/public/v1/query/get_authenticator": post: tags: - - Authenticators + - Authenticators summary: Get Authenticator description: Get details about an authenticator operationId: GetAuthenticator @@ -189,7 +144,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GetAuthenticatorRequest' + "$ref": "#/components/schemas/GetAuthenticatorRequest" required: true responses: '200': @@ -197,12 +152,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GetAuthenticatorResponse' + "$ref": "#/components/schemas/GetAuthenticatorResponse" x-codegen-request-body-name: body - /public/v1/query/get_authenticators: + "/public/v1/query/get_authenticators": post: tags: - - Authenticators + - Authenticators summary: Get Authenticators description: Get details about authenticators for a user operationId: GetAuthenticators @@ -210,7 +165,49 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GetAuthenticatorsRequest' + "$ref": "#/components/schemas/GetAuthenticatorsRequest" + required: true + responses: + '200': + description: A successful response. + content: + application/json: + schema: + "$ref": "#/components/schemas/GetAuthenticatorsResponse" + x-codegen-request-body-name: body + "/public/v1/query/get_oauth_providers": + post: + tags: + - Users + summary: Get Oauth providers + description: Get details about Oauth providers for a user + operationId: GetOauthProviders + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/GetOauthProvidersRequest" + required: true + responses: + '200': + description: A successful response. + content: + application/json: + schema: + "$ref": "#/components/schemas/GetOauthProvidersResponse" + x-codegen-request-body-name: body + "/public/v1/query/get_organization_configs": + post: + tags: + - Organizations + summary: Get Configs + description: Get quorum settings and features for an organization + operationId: GetOrganizationConfigs + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/GetOrganizationConfigsRequest" required: true responses: '200': @@ -218,12 +215,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GetAuthenticatorsResponse' + "$ref": "#/components/schemas/GetOrganizationConfigsResponse" x-codegen-request-body-name: body - /public/v1/query/get_policy: + "/public/v1/query/get_policy": post: tags: - - Policies + - Policies summary: Get Policy description: Get details about a Policy operationId: GetPolicy @@ -231,7 +228,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GetPolicyRequest' + "$ref": "#/components/schemas/GetPolicyRequest" required: true responses: '200': @@ -239,12 +236,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GetPolicyResponse' + "$ref": "#/components/schemas/GetPolicyResponse" x-codegen-request-body-name: body - /public/v1/query/get_private_key: + "/public/v1/query/get_private_key": post: tags: - - Private Keys + - Private Keys summary: Get Private Key description: Get details about a Private Key operationId: GetPrivateKey @@ -252,7 +249,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GetPrivateKeyRequest' + "$ref": "#/components/schemas/GetPrivateKeyRequest" required: true responses: '200': @@ -260,12 +257,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GetPrivateKeyResponse' + "$ref": "#/components/schemas/GetPrivateKeyResponse" x-codegen-request-body-name: body - /public/v1/query/get_user: + "/public/v1/query/get_user": post: tags: - - Users + - Users summary: Get User description: Get details about a User operationId: GetUser @@ -273,7 +270,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GetUserRequest' + "$ref": "#/components/schemas/GetUserRequest" required: true responses: '200': @@ -281,12 +278,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GetUserResponse' + "$ref": "#/components/schemas/GetUserResponse" x-codegen-request-body-name: body - /public/v1/query/get_wallet: + "/public/v1/query/get_wallet": post: tags: - - Wallets + - Wallets summary: Get Wallet description: Get details about a Wallet operationId: GetWallet @@ -294,7 +291,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GetWalletRequest' + "$ref": "#/components/schemas/GetWalletRequest" required: true responses: '200': @@ -302,12 +299,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GetWalletResponse' + "$ref": "#/components/schemas/GetWalletResponse" x-codegen-request-body-name: body - /public/v1/query/list_activities: + "/public/v1/query/list_activities": post: tags: - - Activities + - Activities summary: List Activities description: List all Activities within an Organization operationId: GetActivities @@ -315,7 +312,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GetActivitiesRequest' + "$ref": "#/components/schemas/GetActivitiesRequest" required: true responses: '200': @@ -323,12 +320,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GetActivitiesResponse' + "$ref": "#/components/schemas/GetActivitiesResponse" x-codegen-request-body-name: body - /public/v1/query/list_policies: + "/public/v1/query/list_policies": post: tags: - - Policies + - Policies summary: List Policies description: List all Policies within an Organization operationId: GetPolicies @@ -336,7 +333,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GetPoliciesRequest' + "$ref": "#/components/schemas/GetPoliciesRequest" required: true responses: '200': @@ -344,12 +341,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GetPoliciesResponse' + "$ref": "#/components/schemas/GetPoliciesResponse" x-codegen-request-body-name: body - /public/v1/query/list_private_key_tags: + "/public/v1/query/list_private_key_tags": post: tags: - - Private Key Tags + - Private Key Tags summary: List Private Key Tags description: List all Private Key Tags within an Organization operationId: ListPrivateKeyTags @@ -357,7 +354,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ListPrivateKeyTagsRequest' + "$ref": "#/components/schemas/ListPrivateKeyTagsRequest" required: true responses: '200': @@ -365,12 +362,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ListPrivateKeyTagsResponse' + "$ref": "#/components/schemas/ListPrivateKeyTagsResponse" x-codegen-request-body-name: body - /public/v1/query/list_private_keys: + "/public/v1/query/list_private_keys": post: tags: - - Private Keys + - Private Keys summary: List Private Keys description: List all Private Keys within an Organization operationId: GetPrivateKeys @@ -378,7 +375,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GetPrivateKeysRequest' + "$ref": "#/components/schemas/GetPrivateKeysRequest" required: true responses: '200': @@ -386,22 +383,21 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GetPrivateKeysResponse' + "$ref": "#/components/schemas/GetPrivateKeysResponse" x-codegen-request-body-name: body - /public/v1/query/list_suborgs: + "/public/v1/query/list_suborgs": post: tags: - - Organizations + - Organizations summary: Get Suborgs - description: >- - Get all suborg IDs associated given a parent org ID and an optional + description: Get all suborg IDs associated given a parent org ID and an optional filter. operationId: GetSubOrgIds requestBody: content: application/json: schema: - $ref: '#/components/schemas/GetSubOrgIdsRequest' + "$ref": "#/components/schemas/GetSubOrgIdsRequest" required: true responses: '200': @@ -409,12 +405,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GetSubOrgIdsResponse' + "$ref": "#/components/schemas/GetSubOrgIdsResponse" x-codegen-request-body-name: body - /public/v1/query/list_user_tags: + "/public/v1/query/list_user_tags": post: tags: - - User Tags + - User Tags summary: List User Tags description: List all User Tags within an Organization operationId: ListUserTags @@ -422,7 +418,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ListUserTagsRequest' + "$ref": "#/components/schemas/ListUserTagsRequest" required: true responses: '200': @@ -430,12 +426,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ListUserTagsResponse' + "$ref": "#/components/schemas/ListUserTagsResponse" x-codegen-request-body-name: body - /public/v1/query/list_users: + "/public/v1/query/list_users": post: tags: - - Users + - Users summary: List Users description: List all Users within an Organization operationId: GetUsers @@ -443,7 +439,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GetUsersRequest' + "$ref": "#/components/schemas/GetUsersRequest" required: true responses: '200': @@ -451,12 +447,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GetUsersResponse' + "$ref": "#/components/schemas/GetUsersResponse" x-codegen-request-body-name: body - /public/v1/query/list_wallet_accounts: + "/public/v1/query/list_wallet_accounts": post: tags: - - Wallets + - Wallets summary: List Wallets Accounts description: List all Accounts wirhin a Wallet operationId: GetWalletAccounts @@ -464,7 +460,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GetWalletAccountsRequest' + "$ref": "#/components/schemas/GetWalletAccountsRequest" required: true responses: '200': @@ -472,12 +468,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GetWalletAccountsResponse' + "$ref": "#/components/schemas/GetWalletAccountsResponse" x-codegen-request-body-name: body - /public/v1/query/list_wallets: + "/public/v1/query/list_wallets": post: tags: - - Wallets + - Wallets summary: List Wallets description: List all Wallets within an Organization operationId: GetWallets @@ -485,7 +481,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GetWalletsRequest' + "$ref": "#/components/schemas/GetWalletsRequest" required: true responses: '200': @@ -493,23 +489,22 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GetWalletsResponse' + "$ref": "#/components/schemas/GetWalletsResponse" x-codegen-request-body-name: body - /public/v1/query/whoami: + "/public/v1/query/whoami": post: tags: - - Sessions + - Sessions summary: Who am I? - description: >- - Get basic information about your current API or WebAuthN user and their - organization. Affords Sub-Organization look ups via Parent Organization + description: Get basic information about your current API or WebAuthN user and + their organization. Affords Sub-Organization look ups via Parent Organization for WebAuthN or API key users. operationId: GetWhoami requestBody: content: application/json: schema: - $ref: '#/components/schemas/GetWhoamiRequest' + "$ref": "#/components/schemas/GetWhoamiRequest" required: true responses: '200': @@ -517,12 +512,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/GetWhoamiResponse' + "$ref": "#/components/schemas/GetWhoamiResponse" x-codegen-request-body-name: body - /public/v1/submit/approve_activity: + "/public/v1/submit/approve_activity": post: tags: - - Consensus + - Consensus summary: Approve Activity description: Approve an Activity operationId: ApproveActivity @@ -530,7 +525,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ApproveActivityRequest' + "$ref": "#/components/schemas/ApproveActivityRequest" required: true responses: '200': @@ -538,12 +533,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/create_api_keys: + "/public/v1/submit/create_api_keys": post: tags: - - API Keys + - API Keys summary: Create API Keys description: Add api keys to an existing User operationId: CreateApiKeys @@ -551,7 +546,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CreateApiKeysRequest' + "$ref": "#/components/schemas/CreateApiKeysRequest" required: true responses: '200': @@ -559,12 +554,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/create_authenticators: + "/public/v1/submit/create_authenticators": post: tags: - - Authenticators + - Authenticators summary: Create Authenticators description: Create Authenticators to authenticate requests to Turnkey operationId: CreateAuthenticators @@ -572,7 +567,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CreateAuthenticatorsRequest' + "$ref": "#/components/schemas/CreateAuthenticatorsRequest" required: true responses: '200': @@ -580,12 +575,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/create_invitations: + "/public/v1/submit/create_invitations": post: tags: - - Invitations + - Invitations summary: Create Invitations description: Create Invitations to join an existing Organization operationId: CreateInvitations @@ -593,7 +588,28 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CreateInvitationsRequest' + "$ref": "#/components/schemas/CreateInvitationsRequest" + required: true + responses: + '200': + description: A successful response. + content: + application/json: + schema: + "$ref": "#/components/schemas/ActivityResponse" + x-codegen-request-body-name: body + "/public/v1/submit/create_oauth_providers": + post: + tags: + - Users + summary: Create Oauth Providers + description: Creates Oauth providers for a specified user - BETA + operationId: CreateOauthProviders + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateOauthProvidersRequest" required: true responses: '200': @@ -601,12 +617,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/create_policies: + "/public/v1/submit/create_policies": post: tags: - - Policies + - Policies summary: Create Policies description: Create new Policies operationId: CreatePolicies @@ -614,7 +630,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CreatePoliciesRequest' + "$ref": "#/components/schemas/CreatePoliciesRequest" required: true responses: '200': @@ -622,12 +638,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/create_policy: + "/public/v1/submit/create_policy": post: tags: - - Policies + - Policies summary: Create Policy description: Create a new Policy operationId: CreatePolicy @@ -635,7 +651,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CreatePolicyRequest' + "$ref": "#/components/schemas/CreatePolicyRequest" required: true responses: '200': @@ -643,12 +659,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/create_private_key_tag: + "/public/v1/submit/create_private_key_tag": post: tags: - - Private Key Tags + - Private Key Tags summary: Create Private Key Tag description: Create a private key tag and add it to private keys. operationId: CreatePrivateKeyTag @@ -656,7 +672,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CreatePrivateKeyTagRequest' + "$ref": "#/components/schemas/CreatePrivateKeyTagRequest" required: true responses: '200': @@ -664,12 +680,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/create_private_keys: + "/public/v1/submit/create_private_keys": post: tags: - - Private Keys + - Private Keys summary: Create Private Keys description: Create new Private Keys operationId: CreatePrivateKeys @@ -677,7 +693,49 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CreatePrivateKeysRequest' + "$ref": "#/components/schemas/CreatePrivateKeysRequest" + required: true + responses: + '200': + description: A successful response. + content: + application/json: + schema: + "$ref": "#/components/schemas/ActivityResponse" + x-codegen-request-body-name: body + "/public/v1/submit/create_read_only_session": + post: + tags: + - Sessions + summary: Create Read Only Session + description: Create a read only session for a user (valid for 1 hour) + operationId: CreateReadOnlySession + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateReadOnlySessionRequest" + required: true + responses: + '200': + description: A successful response. + content: + application/json: + schema: + "$ref": "#/components/schemas/ActivityResponse" + x-codegen-request-body-name: body + "/public/v1/submit/create_read_write_session": + post: + tags: + - Sessions + summary: Create Read Write Session + description: Create a read write session for a user + operationId: CreateReadWriteSession + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/CreateReadWriteSessionRequest" required: true responses: '200': @@ -685,12 +743,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/create_sub_organization: + "/public/v1/submit/create_sub_organization": post: tags: - - Organizations + - Organizations summary: Create Sub-Organization description: Create a new Sub-Organization operationId: CreateSubOrganization @@ -698,7 +756,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CreateSubOrganizationRequest' + "$ref": "#/components/schemas/CreateSubOrganizationRequest" required: true responses: '200': @@ -706,12 +764,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/create_user_tag: + "/public/v1/submit/create_user_tag": post: tags: - - User Tags + - User Tags summary: Create User Tag description: Create a user tag and add it to users. operationId: CreateUserTag @@ -719,7 +777,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CreateUserTagRequest' + "$ref": "#/components/schemas/CreateUserTagRequest" required: true responses: '200': @@ -727,12 +785,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/create_users: + "/public/v1/submit/create_users": post: tags: - - Users + - Users summary: Create Users description: Create Users in an existing Organization operationId: CreateUsers @@ -740,7 +798,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CreateUsersRequest' + "$ref": "#/components/schemas/CreateUsersRequest" required: true responses: '200': @@ -748,12 +806,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/create_wallet: + "/public/v1/submit/create_wallet": post: tags: - - Wallets + - Wallets summary: Create Wallet description: Create a Wallet and derive addresses operationId: CreateWallet @@ -761,7 +819,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CreateWalletRequest' + "$ref": "#/components/schemas/CreateWalletRequest" required: true responses: '200': @@ -769,12 +827,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/create_wallet_accounts: + "/public/v1/submit/create_wallet_accounts": post: tags: - - Wallets + - Wallets summary: Create Wallet Accounts description: Derive additional addresses using an existing wallet operationId: CreateWalletAccounts @@ -782,7 +840,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CreateWalletAccountsRequest' + "$ref": "#/components/schemas/CreateWalletAccountsRequest" required: true responses: '200': @@ -790,12 +848,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/delete_api_keys: + "/public/v1/submit/delete_api_keys": post: tags: - - API Keys + - API Keys summary: Delete API Keys description: Remove api keys from a User operationId: DeleteApiKeys @@ -803,7 +861,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/DeleteApiKeysRequest' + "$ref": "#/components/schemas/DeleteApiKeysRequest" required: true responses: '200': @@ -811,12 +869,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/delete_authenticators: + "/public/v1/submit/delete_authenticators": post: tags: - - Authenticators + - Authenticators summary: Delete Authenticators description: Remove authenticators from a User operationId: DeleteAuthenticators @@ -824,7 +882,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/DeleteAuthenticatorsRequest' + "$ref": "#/components/schemas/DeleteAuthenticatorsRequest" required: true responses: '200': @@ -832,12 +890,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/delete_invitation: + "/public/v1/submit/delete_invitation": post: tags: - - Invitations + - Invitations summary: Delete Invitation description: Delete an existing Invitation operationId: DeleteInvitation @@ -845,7 +903,28 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/DeleteInvitationRequest' + "$ref": "#/components/schemas/DeleteInvitationRequest" + required: true + responses: + '200': + description: A successful response. + content: + application/json: + schema: + "$ref": "#/components/schemas/ActivityResponse" + x-codegen-request-body-name: body + "/public/v1/submit/delete_oauth_providers": + post: + tags: + - Users + summary: Delete Oauth Providers + description: Removes Oauth providers for a specified user - BETA + operationId: DeleteOauthProviders + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteOauthProvidersRequest" required: true responses: '200': @@ -853,12 +932,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/delete_policy: + "/public/v1/submit/delete_policy": post: tags: - - Policies + - Policies summary: Delete Policy description: Delete an existing Policy operationId: DeletePolicy @@ -866,7 +945,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/DeletePolicyRequest' + "$ref": "#/components/schemas/DeletePolicyRequest" required: true responses: '200': @@ -874,12 +953,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/delete_private_key_tags: + "/public/v1/submit/delete_private_key_tags": post: tags: - - Private Key Tags + - Private Key Tags summary: Delete Private Key Tags description: Delete Private Key Tags within an Organization operationId: DeletePrivateKeyTags @@ -887,7 +966,49 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/DeletePrivateKeyTagsRequest' + "$ref": "#/components/schemas/DeletePrivateKeyTagsRequest" + required: true + responses: + '200': + description: A successful response. + content: + application/json: + schema: + "$ref": "#/components/schemas/ActivityResponse" + x-codegen-request-body-name: body + "/public/v1/submit/delete_private_keys": + post: + tags: + - Private Keys + summary: Delete Private Keys + description: Deletes private keys for an organization + operationId: DeletePrivateKeys + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeletePrivateKeysRequest" + required: true + responses: + '200': + description: A successful response. + content: + application/json: + schema: + "$ref": "#/components/schemas/ActivityResponse" + x-codegen-request-body-name: body + "/public/v1/submit/delete_sub_organization": + post: + tags: + - Organizations + summary: Delete Sub Organization + description: Deletes a sub organization + operationId: DeleteSubOrganization + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteSubOrganizationRequest" required: true responses: '200': @@ -895,12 +1016,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/delete_user_tags: + "/public/v1/submit/delete_user_tags": post: tags: - - User Tags + - User Tags summary: Delete User Tags description: Delete User Tags within an Organization operationId: DeleteUserTags @@ -908,7 +1029,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/DeleteUserTagsRequest' + "$ref": "#/components/schemas/DeleteUserTagsRequest" required: true responses: '200': @@ -916,12 +1037,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/delete_users: + "/public/v1/submit/delete_users": post: tags: - - Users + - Users summary: Delete Users description: Delete Users within an Organization operationId: DeleteUsers @@ -929,7 +1050,28 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/DeleteUsersRequest' + "$ref": "#/components/schemas/DeleteUsersRequest" + required: true + responses: + '200': + description: A successful response. + content: + application/json: + schema: + "$ref": "#/components/schemas/ActivityResponse" + x-codegen-request-body-name: body + "/public/v1/submit/delete_wallets": + post: + tags: + - Wallets + summary: Delete Wallets + description: Deletes wallets for an organization + operationId: DeleteWallets + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/DeleteWalletsRequest" required: true responses: '200': @@ -937,12 +1079,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/email_auth: + "/public/v1/submit/email_auth": post: tags: - - User Auth + - User Auth summary: Perform Email Auth description: Authenticate a user via Email operationId: EmailAuth @@ -950,7 +1092,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/EmailAuthRequest' + "$ref": "#/components/schemas/EmailAuthRequest" required: true responses: '200': @@ -958,12 +1100,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/export_private_key: + "/public/v1/submit/export_private_key": post: tags: - - Private Keys + - Private Keys summary: Export Private Key description: Exports a Private Key operationId: ExportPrivateKey @@ -971,7 +1113,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ExportPrivateKeyRequest' + "$ref": "#/components/schemas/ExportPrivateKeyRequest" required: true responses: '200': @@ -979,12 +1121,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/export_wallet: + "/public/v1/submit/export_wallet": post: tags: - - Wallets + - Wallets summary: Export Wallet description: Exports a Wallet operationId: ExportWallet @@ -992,7 +1134,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ExportWalletRequest' + "$ref": "#/components/schemas/ExportWalletRequest" required: true responses: '200': @@ -1000,12 +1142,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/export_wallet_account: + "/public/v1/submit/export_wallet_account": post: tags: - - Wallets + - Wallets summary: Export Wallet Account description: Exports a Wallet Account operationId: ExportWalletAccount @@ -1013,7 +1155,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ExportWalletAccountRequest' + "$ref": "#/components/schemas/ExportWalletAccountRequest" required: true responses: '200': @@ -1021,12 +1163,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/import_private_key: + "/public/v1/submit/import_private_key": post: tags: - - Private Keys + - Private Keys summary: Import Private Key description: Imports a private key operationId: ImportPrivateKey @@ -1034,7 +1176,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ImportPrivateKeyRequest' + "$ref": "#/components/schemas/ImportPrivateKeyRequest" required: true responses: '200': @@ -1042,12 +1184,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/import_wallet: + "/public/v1/submit/import_wallet": post: tags: - - Wallets + - Wallets summary: Import Wallet description: Imports a wallet operationId: ImportWallet @@ -1055,7 +1197,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ImportWalletRequest' + "$ref": "#/components/schemas/ImportWalletRequest" required: true responses: '200': @@ -1063,12 +1205,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/init_import_private_key: + "/public/v1/submit/init_import_private_key": post: tags: - - Private Keys + - Private Keys summary: Init Import Private Key description: Initializes a new private key import operationId: InitImportPrivateKey @@ -1076,7 +1218,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/InitImportPrivateKeyRequest' + "$ref": "#/components/schemas/InitImportPrivateKeyRequest" required: true responses: '200': @@ -1084,12 +1226,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/init_import_wallet: + "/public/v1/submit/init_import_wallet": post: tags: - - Wallets + - Wallets summary: Init Import Wallet description: Initializes a new wallet import operationId: InitImportWallet @@ -1097,7 +1239,28 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/InitImportWalletRequest' + "$ref": "#/components/schemas/InitImportWalletRequest" + required: true + responses: + '200': + description: A successful response. + content: + application/json: + schema: + "$ref": "#/components/schemas/ActivityResponse" + x-codegen-request-body-name: body + "/public/v1/submit/init_otp_auth": + post: + tags: + - Users + summary: Init OTP auth + description: Initiate an OTP auth activity + operationId: InitOtpAuth + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/InitOtpAuthRequest" required: true responses: '200': @@ -1105,12 +1268,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/init_user_email_recovery: + "/public/v1/submit/init_user_email_recovery": post: tags: - - User Recovery + - User Recovery summary: Init Email Recovery description: Initializes a new email recovery operationId: InitUserEmailRecovery @@ -1118,7 +1281,49 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/InitUserEmailRecoveryRequest' + "$ref": "#/components/schemas/InitUserEmailRecoveryRequest" + required: true + responses: + '200': + description: A successful response. + content: + application/json: + schema: + "$ref": "#/components/schemas/ActivityResponse" + x-codegen-request-body-name: body + "/public/v1/submit/oauth": + post: + tags: + - Users + summary: Oauth + description: Authenticate a user with an Oidc token (Oauth) - BETA + operationId: Oauth + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/OauthRequest" + required: true + responses: + '200': + description: A successful response. + content: + application/json: + schema: + "$ref": "#/components/schemas/ActivityResponse" + x-codegen-request-body-name: body + "/public/v1/submit/otp_auth": + post: + tags: + - Users + summary: OTP auth + description: Authenticate a user with an OTP code sent via email or SMS + operationId: OtpAuth + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/OtpAuthRequest" required: true responses: '200': @@ -1126,12 +1331,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/recover_user: + "/public/v1/submit/recover_user": post: tags: - - User Recovery + - User Recovery summary: Recover a user description: Completes the process of recovering a user by adding an authenticator operationId: RecoverUser @@ -1139,7 +1344,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/RecoverUserRequest' + "$ref": "#/components/schemas/RecoverUserRequest" required: true responses: '200': @@ -1147,12 +1352,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/reject_activity: + "/public/v1/submit/reject_activity": post: tags: - - Consensus + - Consensus summary: Reject Activity description: Reject an Activity operationId: RejectActivity @@ -1160,7 +1365,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/RejectActivityRequest' + "$ref": "#/components/schemas/RejectActivityRequest" required: true responses: '200': @@ -1168,20 +1373,21 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/remove_organization_feature: + "/public/v1/submit/remove_organization_feature": post: tags: - - Features + - Features summary: Remove Organization Feature - description: Removes an organization feature + description: Removes an organization feature. This activity must be approved + by the current root quorum. operationId: RemoveOrganizationFeature requestBody: content: application/json: schema: - $ref: '#/components/schemas/RemoveOrganizationFeatureRequest' + "$ref": "#/components/schemas/RemoveOrganizationFeatureRequest" required: true responses: '200': @@ -1189,20 +1395,21 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/set_organization_feature: + "/public/v1/submit/set_organization_feature": post: tags: - - Features + - Features summary: Set Organization Feature - description: Sets an organization feature + description: Sets an organization feature. This activity must be approved by + the current root quorum. operationId: SetOrganizationFeature requestBody: content: application/json: schema: - $ref: '#/components/schemas/SetOrganizationFeatureRequest' + "$ref": "#/components/schemas/SetOrganizationFeatureRequest" required: true responses: '200': @@ -1210,12 +1417,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/sign_raw_payload: + "/public/v1/submit/sign_raw_payload": post: tags: - - Signing + - Signing summary: Sign Raw Payload description: Sign a raw payload operationId: SignRawPayload @@ -1223,7 +1430,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/SignRawPayloadRequest' + "$ref": "#/components/schemas/SignRawPayloadRequest" required: true responses: '200': @@ -1231,12 +1438,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/sign_raw_payloads: + "/public/v1/submit/sign_raw_payloads": post: tags: - - Signing + - Signing summary: Sign Raw Payloads description: Sign multiple raw payloads with the same signing parameters operationId: SignRawPayloads @@ -1244,7 +1451,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/SignRawPayloadsRequest' + "$ref": "#/components/schemas/SignRawPayloadsRequest" required: true responses: '200': @@ -1252,12 +1459,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/sign_transaction: + "/public/v1/submit/sign_transaction": post: tags: - - Signing + - Signing summary: Sign Transaction description: Sign a transaction operationId: SignTransaction @@ -1265,7 +1472,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/SignTransactionRequest' + "$ref": "#/components/schemas/SignTransactionRequest" required: true responses: '200': @@ -1273,12 +1480,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/update_policy: + "/public/v1/submit/update_policy": post: tags: - - Policies + - Policies summary: Update Policy description: Update an existing Policy operationId: UpdatePolicy @@ -1286,7 +1493,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/UpdatePolicyRequest' + "$ref": "#/components/schemas/UpdatePolicyRequest" required: true responses: '200': @@ -1294,23 +1501,22 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/update_private_key_tag: + "/public/v1/submit/update_private_key_tag": post: tags: - - Private Key Tags + - Private Key Tags summary: Update Private Key Tag - description: >- - Update human-readable name or associated private keys. Note that this - activity is atomic: all of the updates will succeed at once, or all of - them will fail. + description: 'Update human-readable name or associated private keys. Note that + this activity is atomic: all of the updates will succeed at once, or all of + them will fail.' operationId: UpdatePrivateKeyTag requestBody: content: application/json: schema: - $ref: '#/components/schemas/UpdatePrivateKeyTagRequest' + "$ref": "#/components/schemas/UpdatePrivateKeyTagRequest" required: true responses: '200': @@ -1318,22 +1524,21 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/update_root_quorum: + "/public/v1/submit/update_root_quorum": post: tags: - - Organizations + - Organizations summary: Update Root Quorum - description: >- - Set the threshold and members of the root quorum. This must be approved - by the current root quorum. + description: Set the threshold and members of the root quorum. This activity + must be approved by the current root quorum. operationId: UpdateRootQuorum requestBody: content: application/json: schema: - $ref: '#/components/schemas/UpdateRootQuorumRequest' + "$ref": "#/components/schemas/UpdateRootQuorumRequest" required: true responses: '200': @@ -1341,12 +1546,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/update_user: + "/public/v1/submit/update_user": post: tags: - - Users + - Users summary: Update User description: Update a User in an existing Organization operationId: UpdateUser @@ -1354,7 +1559,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/UpdateUserRequest' + "$ref": "#/components/schemas/UpdateUserRequest" required: true responses: '200': @@ -1362,23 +1567,22 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body - /public/v1/submit/update_user_tag: + "/public/v1/submit/update_user_tag": post: tags: - - User Tags + - User Tags summary: Update User Tag - description: >- - Update human-readable name or associated users. Note that this activity - is atomic: all of the updates will succeed at once, or all of them will - fail. + description: 'Update human-readable name or associated users. Note that this + activity is atomic: all of the updates will succeed at once, or all of them + will fail.' operationId: UpdateUserTag requestBody: content: application/json: schema: - $ref: '#/components/schemas/UpdateUserTagRequest' + "$ref": "#/components/schemas/UpdateUserTagRequest" required: true responses: '200': @@ -1386,15 +1590,15 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ActivityResponse' + "$ref": "#/components/schemas/ActivityResponse" x-codegen-request-body-name: body components: schemas: AcceptInvitationIntent: required: - - authenticator - - invitationId - - userId + - authenticator + - invitationId + - userId type: object properties: invitationId: @@ -1404,12 +1608,12 @@ components: type: string description: Unique identifier for a given User. authenticator: - $ref: '#/components/schemas/AuthenticatorParams' + "$ref": "#/components/schemas/AuthenticatorParams" AcceptInvitationIntentV2: required: - - authenticator - - invitationId - - userId + - authenticator + - invitationId + - userId type: object properties: invitationId: @@ -1419,11 +1623,11 @@ components: type: string description: Unique identifier for a given User. authenticator: - $ref: '#/components/schemas/AuthenticatorParamsV2' + "$ref": "#/components/schemas/AuthenticatorParamsV2" AcceptInvitationResult: required: - - invitationId - - userId + - invitationId + - userId type: object properties: invitationId: @@ -1435,12 +1639,12 @@ components: AccessType: type: string enum: - - ACCESS_TYPE_WEB - - ACCESS_TYPE_API - - ACCESS_TYPE_ALL + - ACCESS_TYPE_WEB + - ACCESS_TYPE_API + - ACCESS_TYPE_ALL ActivateBillingTierIntent: required: - - productId + - productId type: object properties: productId: @@ -1448,7 +1652,7 @@ components: description: The product that the customer wants to subscribe to. ActivateBillingTierResult: required: - - productId + - productId type: object properties: productId: @@ -1456,18 +1660,18 @@ components: description: The id of the product being subscribed to. Activity: required: - - canApprove - - canReject - - createdAt - - fingerprint - - id - - intent - - organizationId - - result - - status - - type - - updatedAt - - votes + - canApprove + - canReject + - createdAt + - fingerprint + - id + - intent + - organizationId + - result + - status + - type + - updatedAt + - votes type: object properties: id: @@ -1477,18 +1681,17 @@ components: type: string description: Unique identifier for a given Organization. status: - $ref: '#/components/schemas/ActivityStatus' + "$ref": "#/components/schemas/ActivityStatus" type: - $ref: '#/components/schemas/ActivityType' + "$ref": "#/components/schemas/ActivityType" intent: - $ref: '#/components/schemas/Intent' + "$ref": "#/components/schemas/Intent" result: - $ref: '#/components/schemas/Result' + "$ref": "#/components/schemas/Result" votes: type: array - description: >- - A list of objects representing a particular User's approval or - rejection of a Consensus request, including all relevant metadata. + description: A list of objects representing a particular User's approval + or rejection of a Consensus request, including all relevant metadata. items: oneOf: - $ref: '#/components/schemas/Vote' @@ -1502,111 +1705,164 @@ components: canReject: type: boolean createdAt: - $ref: '#/components/schemas/external.data.v1.Timestamp' + "$ref": "#/components/schemas/external.data.v1.Timestamp" updatedAt: - $ref: '#/components/schemas/external.data.v1.Timestamp' + "$ref": "#/components/schemas/external.data.v1.Timestamp" + failure: + "$ref": "#/components/schemas/Status" ActivityResponse: required: - - activity + - activity type: object properties: activity: - $ref: '#/components/schemas/Activity' + "$ref": "#/components/schemas/Activity" ActivityStatus: type: string enum: - - ACTIVITY_STATUS_CREATED - - ACTIVITY_STATUS_PENDING - - ACTIVITY_STATUS_COMPLETED - - ACTIVITY_STATUS_FAILED - - ACTIVITY_STATUS_CONSENSUS_NEEDED - - ACTIVITY_STATUS_REJECTED + - ACTIVITY_STATUS_CREATED + - ACTIVITY_STATUS_PENDING + - ACTIVITY_STATUS_COMPLETED + - ACTIVITY_STATUS_FAILED + - ACTIVITY_STATUS_CONSENSUS_NEEDED + - ACTIVITY_STATUS_REJECTED ActivityType: type: string enum: - - ACTIVITY_TYPE_CREATE_API_KEYS - - ACTIVITY_TYPE_CREATE_USERS - - ACTIVITY_TYPE_CREATE_PRIVATE_KEYS - - ACTIVITY_TYPE_SIGN_RAW_PAYLOAD - - ACTIVITY_TYPE_CREATE_INVITATIONS - - ACTIVITY_TYPE_ACCEPT_INVITATION - - ACTIVITY_TYPE_CREATE_POLICY - - ACTIVITY_TYPE_DISABLE_PRIVATE_KEY - - ACTIVITY_TYPE_DELETE_USERS - - ACTIVITY_TYPE_DELETE_API_KEYS - - ACTIVITY_TYPE_DELETE_INVITATION - - ACTIVITY_TYPE_DELETE_ORGANIZATION - - ACTIVITY_TYPE_DELETE_POLICY - - ACTIVITY_TYPE_CREATE_USER_TAG - - ACTIVITY_TYPE_DELETE_USER_TAGS - - ACTIVITY_TYPE_CREATE_ORGANIZATION - - ACTIVITY_TYPE_SIGN_TRANSACTION - - ACTIVITY_TYPE_APPROVE_ACTIVITY - - ACTIVITY_TYPE_REJECT_ACTIVITY - - ACTIVITY_TYPE_DELETE_AUTHENTICATORS - - ACTIVITY_TYPE_CREATE_AUTHENTICATORS - - ACTIVITY_TYPE_CREATE_PRIVATE_KEY_TAG - - ACTIVITY_TYPE_DELETE_PRIVATE_KEY_TAGS - - ACTIVITY_TYPE_SET_PAYMENT_METHOD - - ACTIVITY_TYPE_ACTIVATE_BILLING_TIER - - ACTIVITY_TYPE_DELETE_PAYMENT_METHOD - - ACTIVITY_TYPE_CREATE_POLICY_V2 - - ACTIVITY_TYPE_CREATE_POLICY_V3 - - ACTIVITY_TYPE_CREATE_API_ONLY_USERS - - ACTIVITY_TYPE_UPDATE_ROOT_QUORUM - - ACTIVITY_TYPE_UPDATE_USER_TAG - - ACTIVITY_TYPE_UPDATE_PRIVATE_KEY_TAG - - ACTIVITY_TYPE_CREATE_AUTHENTICATORS_V2 - - ACTIVITY_TYPE_CREATE_ORGANIZATION_V2 - - ACTIVITY_TYPE_CREATE_USERS_V2 - - ACTIVITY_TYPE_ACCEPT_INVITATION_V2 - - ACTIVITY_TYPE_CREATE_SUB_ORGANIZATION - - ACTIVITY_TYPE_CREATE_SUB_ORGANIZATION_V2 - - ACTIVITY_TYPE_UPDATE_ALLOWED_ORIGINS - - ACTIVITY_TYPE_CREATE_PRIVATE_KEYS_V2 - - ACTIVITY_TYPE_UPDATE_USER - - ACTIVITY_TYPE_UPDATE_POLICY - - ACTIVITY_TYPE_SET_PAYMENT_METHOD_V2 - - ACTIVITY_TYPE_CREATE_SUB_ORGANIZATION_V3 - - ACTIVITY_TYPE_CREATE_WALLET - - ACTIVITY_TYPE_CREATE_WALLET_ACCOUNTS - - ACTIVITY_TYPE_INIT_USER_EMAIL_RECOVERY - - ACTIVITY_TYPE_RECOVER_USER - - ACTIVITY_TYPE_SET_ORGANIZATION_FEATURE - - ACTIVITY_TYPE_REMOVE_ORGANIZATION_FEATURE - - ACTIVITY_TYPE_SIGN_RAW_PAYLOAD_V2 - - ACTIVITY_TYPE_SIGN_TRANSACTION_V2 - - ACTIVITY_TYPE_EXPORT_PRIVATE_KEY - - ACTIVITY_TYPE_EXPORT_WALLET - - ACTIVITY_TYPE_CREATE_SUB_ORGANIZATION_V4 - - ACTIVITY_TYPE_EMAIL_AUTH - - ACTIVITY_TYPE_EXPORT_WALLET_ACCOUNT - - ACTIVITY_TYPE_INIT_IMPORT_WALLET - - ACTIVITY_TYPE_IMPORT_WALLET - - ACTIVITY_TYPE_INIT_IMPORT_PRIVATE_KEY - - ACTIVITY_TYPE_IMPORT_PRIVATE_KEY - - ACTIVITY_TYPE_CREATE_POLICIES - - ACTIVITY_TYPE_SIGN_RAW_PAYLOADS + - ACTIVITY_TYPE_CREATE_API_KEYS + - ACTIVITY_TYPE_CREATE_USERS + - ACTIVITY_TYPE_CREATE_PRIVATE_KEYS + - ACTIVITY_TYPE_SIGN_RAW_PAYLOAD + - ACTIVITY_TYPE_CREATE_INVITATIONS + - ACTIVITY_TYPE_ACCEPT_INVITATION + - ACTIVITY_TYPE_CREATE_POLICY + - ACTIVITY_TYPE_DISABLE_PRIVATE_KEY + - ACTIVITY_TYPE_DELETE_USERS + - ACTIVITY_TYPE_DELETE_API_KEYS + - ACTIVITY_TYPE_DELETE_INVITATION + - ACTIVITY_TYPE_DELETE_ORGANIZATION + - ACTIVITY_TYPE_DELETE_POLICY + - ACTIVITY_TYPE_CREATE_USER_TAG + - ACTIVITY_TYPE_DELETE_USER_TAGS + - ACTIVITY_TYPE_CREATE_ORGANIZATION + - ACTIVITY_TYPE_SIGN_TRANSACTION + - ACTIVITY_TYPE_APPROVE_ACTIVITY + - ACTIVITY_TYPE_REJECT_ACTIVITY + - ACTIVITY_TYPE_DELETE_AUTHENTICATORS + - ACTIVITY_TYPE_CREATE_AUTHENTICATORS + - ACTIVITY_TYPE_CREATE_PRIVATE_KEY_TAG + - ACTIVITY_TYPE_DELETE_PRIVATE_KEY_TAGS + - ACTIVITY_TYPE_SET_PAYMENT_METHOD + - ACTIVITY_TYPE_ACTIVATE_BILLING_TIER + - ACTIVITY_TYPE_DELETE_PAYMENT_METHOD + - ACTIVITY_TYPE_CREATE_POLICY_V2 + - ACTIVITY_TYPE_CREATE_POLICY_V3 + - ACTIVITY_TYPE_CREATE_API_ONLY_USERS + - ACTIVITY_TYPE_UPDATE_ROOT_QUORUM + - ACTIVITY_TYPE_UPDATE_USER_TAG + - ACTIVITY_TYPE_UPDATE_PRIVATE_KEY_TAG + - ACTIVITY_TYPE_CREATE_AUTHENTICATORS_V2 + - ACTIVITY_TYPE_CREATE_ORGANIZATION_V2 + - ACTIVITY_TYPE_CREATE_USERS_V2 + - ACTIVITY_TYPE_ACCEPT_INVITATION_V2 + - ACTIVITY_TYPE_CREATE_SUB_ORGANIZATION + - ACTIVITY_TYPE_CREATE_SUB_ORGANIZATION_V2 + - ACTIVITY_TYPE_UPDATE_ALLOWED_ORIGINS + - ACTIVITY_TYPE_CREATE_PRIVATE_KEYS_V2 + - ACTIVITY_TYPE_UPDATE_USER + - ACTIVITY_TYPE_UPDATE_POLICY + - ACTIVITY_TYPE_SET_PAYMENT_METHOD_V2 + - ACTIVITY_TYPE_CREATE_SUB_ORGANIZATION_V3 + - ACTIVITY_TYPE_CREATE_WALLET + - ACTIVITY_TYPE_CREATE_WALLET_ACCOUNTS + - ACTIVITY_TYPE_INIT_USER_EMAIL_RECOVERY + - ACTIVITY_TYPE_RECOVER_USER + - ACTIVITY_TYPE_SET_ORGANIZATION_FEATURE + - ACTIVITY_TYPE_REMOVE_ORGANIZATION_FEATURE + - ACTIVITY_TYPE_SIGN_RAW_PAYLOAD_V2 + - ACTIVITY_TYPE_SIGN_TRANSACTION_V2 + - ACTIVITY_TYPE_EXPORT_PRIVATE_KEY + - ACTIVITY_TYPE_EXPORT_WALLET + - ACTIVITY_TYPE_CREATE_SUB_ORGANIZATION_V4 + - ACTIVITY_TYPE_EMAIL_AUTH + - ACTIVITY_TYPE_EXPORT_WALLET_ACCOUNT + - ACTIVITY_TYPE_INIT_IMPORT_WALLET + - ACTIVITY_TYPE_IMPORT_WALLET + - ACTIVITY_TYPE_INIT_IMPORT_PRIVATE_KEY + - ACTIVITY_TYPE_IMPORT_PRIVATE_KEY + - ACTIVITY_TYPE_CREATE_POLICIES + - ACTIVITY_TYPE_SIGN_RAW_PAYLOADS + - ACTIVITY_TYPE_CREATE_READ_ONLY_SESSION + - ACTIVITY_TYPE_CREATE_OAUTH_PROVIDERS + - ACTIVITY_TYPE_DELETE_OAUTH_PROVIDERS + - ACTIVITY_TYPE_CREATE_SUB_ORGANIZATION_V5 + - ACTIVITY_TYPE_OAUTH + - ACTIVITY_TYPE_CREATE_API_KEYS_V2 + - ACTIVITY_TYPE_CREATE_READ_WRITE_SESSION + - ACTIVITY_TYPE_EMAIL_AUTH_V2 + - ACTIVITY_TYPE_CREATE_SUB_ORGANIZATION_V6 + - ACTIVITY_TYPE_DELETE_PRIVATE_KEYS + - ACTIVITY_TYPE_DELETE_WALLETS + - ACTIVITY_TYPE_CREATE_READ_WRITE_SESSION_V2 + - ACTIVITY_TYPE_DELETE_SUB_ORGANIZATION + - ACTIVITY_TYPE_INIT_OTP_AUTH + - ACTIVITY_TYPE_OTP_AUTH + - ACTIVITY_TYPE_CREATE_SUB_ORGANIZATION_V7 AddressFormat: type: string enum: - - ADDRESS_FORMAT_UNCOMPRESSED - - ADDRESS_FORMAT_COMPRESSED - - ADDRESS_FORMAT_ETHEREUM - - ADDRESS_FORMAT_SOLANA - - ADDRESS_FORMAT_COSMOS - - ADDRESS_FORMAT_TRON + - ADDRESS_FORMAT_UNCOMPRESSED + - ADDRESS_FORMAT_COMPRESSED + - ADDRESS_FORMAT_ETHEREUM + - ADDRESS_FORMAT_SOLANA + - ADDRESS_FORMAT_COSMOS + - ADDRESS_FORMAT_TRON + - ADDRESS_FORMAT_SUI + - ADDRESS_FORMAT_APTOS + - ADDRESS_FORMAT_BITCOIN_MAINNET_P2PKH + - ADDRESS_FORMAT_BITCOIN_MAINNET_P2SH + - ADDRESS_FORMAT_BITCOIN_MAINNET_P2WPKH + - ADDRESS_FORMAT_BITCOIN_MAINNET_P2WSH + - ADDRESS_FORMAT_BITCOIN_MAINNET_P2TR + - ADDRESS_FORMAT_BITCOIN_TESTNET_P2PKH + - ADDRESS_FORMAT_BITCOIN_TESTNET_P2SH + - ADDRESS_FORMAT_BITCOIN_TESTNET_P2WPKH + - ADDRESS_FORMAT_BITCOIN_TESTNET_P2WSH + - ADDRESS_FORMAT_BITCOIN_TESTNET_P2TR + - ADDRESS_FORMAT_BITCOIN_SIGNET_P2PKH + - ADDRESS_FORMAT_BITCOIN_SIGNET_P2SH + - ADDRESS_FORMAT_BITCOIN_SIGNET_P2WPKH + - ADDRESS_FORMAT_BITCOIN_SIGNET_P2WSH + - ADDRESS_FORMAT_BITCOIN_SIGNET_P2TR + - ADDRESS_FORMAT_BITCOIN_REGTEST_P2PKH + - ADDRESS_FORMAT_BITCOIN_REGTEST_P2SH + - ADDRESS_FORMAT_BITCOIN_REGTEST_P2WPKH + - ADDRESS_FORMAT_BITCOIN_REGTEST_P2WSH + - ADDRESS_FORMAT_BITCOIN_REGTEST_P2TR + - ADDRESS_FORMAT_SEI + - ADDRESS_FORMAT_XLM + - ADDRESS_FORMAT_DOGE_MAINNET + - ADDRESS_FORMAT_DOGE_TESTNET + - ADDRESS_FORMAT_TON_V3R2 + - ADDRESS_FORMAT_TON_V4R2 + Any: + type: object + properties: + "@type": + type: string + additionalProperties: + type: object ApiKey: required: - - apiKeyId - - apiKeyName - - createdAt - - credential - - updatedAt + - apiKeyId + - apiKeyName + - createdAt + - credential + - updatedAt type: object properties: credential: - $ref: '#/components/schemas/external.data.v1.Credential' + "$ref": "#/components/schemas/external.data.v1.Credential" apiKeyId: type: string description: Unique identifier for a given API Key. @@ -1614,19 +1870,24 @@ components: type: string description: Human-readable name for an API Key. createdAt: - $ref: '#/components/schemas/external.data.v1.Timestamp' + "$ref": "#/components/schemas/external.data.v1.Timestamp" updatedAt: - $ref: '#/components/schemas/external.data.v1.Timestamp' + "$ref": "#/components/schemas/external.data.v1.Timestamp" expirationSeconds: type: string - description: >- - Optional window (in seconds) indicating how long the API Key should - last. + description: Optional window (in seconds) indicating how long the API Key + should last. format: uint64 + ApiKeyCurve: + type: string + enum: + - API_KEY_CURVE_P256 + - API_KEY_CURVE_SECP256K1 + - API_KEY_CURVE_ED25519 ApiKeyParams: required: - - apiKeyName - - publicKey + - apiKeyName + - publicKey type: object properties: apiKeyName: @@ -1634,25 +1895,43 @@ components: description: Human-readable name for an API Key. publicKey: type: string - description: >- - The public component of a cryptographic key pair used to sign + description: The public component of a cryptographic key pair used to sign messages and transactions. expirationSeconds: type: string - description: >- - Optional window (in seconds) indicating how long the API Key should - last. - ApiOnlyUserParams: + description: Optional window (in seconds) indicating how long the API Key + should last. + ApiKeyParamsV2: required: - - apiKeys - - userName - - userTags + - apiKeyName + - curveType + - publicKey type: object properties: - userName: - type: string - description: The name of the new API-only User. - userEmail: + apiKeyName: + type: string + description: Human-readable name for an API Key. + publicKey: + type: string + description: The public component of a cryptographic key pair used to sign + messages and transactions. + curveType: + "$ref": "#/components/schemas/ApiKeyCurve" + expirationSeconds: + type: string + description: Optional window (in seconds) indicating how long the API Key + should last. + ApiOnlyUserParams: + required: + - apiKeys + - userName + - userTags + type: object + properties: + userName: + type: string + description: The name of the new API-only User. + userEmail: type: string description: The email address for this API-only User (optional). userTags: @@ -1664,10 +1943,10 @@ components: type: array description: A list of API Key parameters. items: - $ref: '#/components/schemas/ApiKeyParams' + "$ref": "#/components/schemas/ApiKeyParams" ApproveActivityIntent: required: - - fingerprint + - fingerprint type: object properties: fingerprint: @@ -1675,32 +1954,31 @@ components: description: An artifact verifying a User's action. ApproveActivityRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_APPROVE_ACTIVITY + - ACTIVITY_TYPE_APPROVE_ACTIVITY timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/ApproveActivityIntent' + "$ref": "#/components/schemas/ApproveActivityIntent" Attestation: required: - - attestationObject - - clientDataJson - - credentialId - - transports + - attestationObject + - clientDataJson + - credentialId + - transports type: object properties: credentialId: @@ -1708,40 +1986,37 @@ components: description: The cbor encoded then base64 url encoded id of the credential. clientDataJson: type: string - description: >- - A base64 url encoded payload containing metadata about the signing - context and the challenge. + description: A base64 url encoded payload containing metadata about the + signing context and the challenge. attestationObject: type: string - description: >- - A base64 url encoded payload containing authenticator data and any - attestation the webauthn provider chooses. + description: A base64 url encoded payload containing authenticator data + and any attestation the webauthn provider chooses. transports: type: array description: The type of authenticator transports. items: - $ref: '#/components/schemas/AuthenticatorTransport' + "$ref": "#/components/schemas/AuthenticatorTransport" Authenticator: required: - - aaguid - - attestationType - - authenticatorId - - authenticatorName - - createdAt - - credential - - credentialId - - model - - transports - - updatedAt + - aaguid + - attestationType + - authenticatorId + - authenticatorName + - createdAt + - credential + - credentialId + - model + - transports + - updatedAt type: object properties: transports: type: array - description: >- - Types of transports that may be used by an Authenticator (e.g., USB, - NFC, BLE). + description: Types of transports that may be used by an Authenticator (e.g., + USB, NFC, BLE). items: - $ref: '#/components/schemas/AuthenticatorTransport' + "$ref": "#/components/schemas/AuthenticatorTransport" attestationType: type: string aaguid: @@ -1754,7 +2029,7 @@ components: type: string description: The type of Authenticator device. credential: - $ref: '#/components/schemas/external.data.v1.Credential' + "$ref": "#/components/schemas/external.data.v1.Credential" authenticatorId: type: string description: Unique identifier for a given Authenticator. @@ -1762,13 +2037,13 @@ components: type: string description: Human-readable name for an Authenticator. createdAt: - $ref: '#/components/schemas/external.data.v1.Timestamp' + "$ref": "#/components/schemas/external.data.v1.Timestamp" updatedAt: - $ref: '#/components/schemas/external.data.v1.Timestamp' + "$ref": "#/components/schemas/external.data.v1.Timestamp" AuthenticatorAttestationResponse: required: - - attestationObject - - clientDataJson + - attestationObject + - clientDataJson type: object properties: clientDataJson: @@ -1778,19 +2053,19 @@ components: transports: type: array items: - $ref: '#/components/schemas/AuthenticatorTransport' + "$ref": "#/components/schemas/AuthenticatorTransport" authenticatorAttachment: type: string nullable: true enum: - - cross-platform - - platform + - cross-platform + - platform AuthenticatorParams: required: - - attestation - - authenticatorName - - challenge - - userId + - attestation + - authenticatorName + - challenge + - userId type: object properties: authenticatorName: @@ -1800,15 +2075,15 @@ components: type: string description: Unique identifier for a given User. attestation: - $ref: '#/components/schemas/PublicKeyCredentialWithAttestation' + "$ref": "#/components/schemas/PublicKeyCredentialWithAttestation" challenge: type: string description: Challenge presented for authentication purposes. AuthenticatorParamsV2: required: - - attestation - - authenticatorName - - challenge + - attestation + - authenticatorName + - challenge type: object properties: authenticatorName: @@ -1818,54 +2093,76 @@ components: type: string description: Challenge presented for authentication purposes. attestation: - $ref: '#/components/schemas/Attestation' + "$ref": "#/components/schemas/Attestation" AuthenticatorTransport: type: string enum: - - AUTHENTICATOR_TRANSPORT_BLE - - AUTHENTICATOR_TRANSPORT_INTERNAL - - AUTHENTICATOR_TRANSPORT_NFC - - AUTHENTICATOR_TRANSPORT_USB - - AUTHENTICATOR_TRANSPORT_HYBRID + - AUTHENTICATOR_TRANSPORT_BLE + - AUTHENTICATOR_TRANSPORT_INTERNAL + - AUTHENTICATOR_TRANSPORT_NFC + - AUTHENTICATOR_TRANSPORT_USB + - AUTHENTICATOR_TRANSPORT_HYBRID + Config: + type: object + properties: + features: + type: array + items: + "$ref": "#/components/schemas/Feature" + quorum: + "$ref": "#/components/schemas/external.data.v1.Quorum" CreateApiKeysIntent: required: - - apiKeys - - userId + - apiKeys + - userId type: object properties: apiKeys: type: array description: A list of API Keys. items: - $ref: '#/components/schemas/ApiKeyParams' + "$ref": "#/components/schemas/ApiKeyParams" + userId: + type: string + description: Unique identifier for a given User. + CreateApiKeysIntentV2: + required: + - apiKeys + - userId + type: object + properties: + apiKeys: + type: array + description: A list of API Keys. + items: + "$ref": "#/components/schemas/ApiKeyParamsV2" userId: type: string description: Unique identifier for a given User. CreateApiKeysRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_CREATE_API_KEYS + - ACTIVITY_TYPE_CREATE_API_KEYS_V2 timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/CreateApiKeysIntent' + "$ref": "#/components/schemas/CreateApiKeysIntentV2" CreateApiKeysResult: required: - - apiKeyIds + - apiKeyIds type: object properties: apiKeyIds: @@ -1875,17 +2172,17 @@ components: type: string CreateApiOnlyUsersIntent: required: - - apiOnlyUsers + - apiOnlyUsers type: object properties: apiOnlyUsers: type: array description: A list of API-only Users to create. items: - $ref: '#/components/schemas/ApiOnlyUserParams' + "$ref": "#/components/schemas/ApiOnlyUserParams" CreateApiOnlyUsersResult: required: - - userIds + - userIds type: object properties: userIds: @@ -1895,57 +2192,56 @@ components: type: string CreateAuthenticatorsIntent: required: - - authenticators - - userId + - authenticators + - userId type: object properties: authenticators: type: array description: A list of Authenticators. items: - $ref: '#/components/schemas/AuthenticatorParams' + "$ref": "#/components/schemas/AuthenticatorParams" userId: type: string description: Unique identifier for a given User. CreateAuthenticatorsIntentV2: required: - - authenticators - - userId + - authenticators + - userId type: object properties: authenticators: type: array description: A list of Authenticators. items: - $ref: '#/components/schemas/AuthenticatorParamsV2' + "$ref": "#/components/schemas/AuthenticatorParamsV2" userId: type: string description: Unique identifier for a given User. CreateAuthenticatorsRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_CREATE_AUTHENTICATORS_V2 + - ACTIVITY_TYPE_CREATE_AUTHENTICATORS_V2 timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/CreateAuthenticatorsIntentV2' + "$ref": "#/components/schemas/CreateAuthenticatorsIntentV2" CreateAuthenticatorsResult: required: - - authenticatorIds + - authenticatorIds type: object properties: authenticatorIds: @@ -1955,39 +2251,38 @@ components: type: string CreateInvitationsIntent: required: - - invitations + - invitations type: object properties: invitations: type: array description: A list of Invitations. items: - $ref: '#/components/schemas/InvitationParams' + "$ref": "#/components/schemas/InvitationParams" CreateInvitationsRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_CREATE_INVITATIONS + - ACTIVITY_TYPE_CREATE_INVITATIONS timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/CreateInvitationsIntent' + "$ref": "#/components/schemas/CreateInvitationsIntent" CreateInvitationsResult: required: - - invitationIds + - invitationIds type: object properties: invitationIds: @@ -1995,11 +2290,56 @@ components: description: A list of Invitation IDs items: type: string + CreateOauthProvidersIntent: + required: + - oauthProviders + - userId + type: object + properties: + userId: + type: string + description: The ID of the User to add an Oauth provider to + oauthProviders: + type: array + description: A list of Oauth providers. + items: + "$ref": "#/components/schemas/OauthProviderParams" + CreateOauthProvidersRequest: + required: + - organizationId + - parameters + - timestampMs + - type + type: object + properties: + type: + type: string + enum: + - ACTIVITY_TYPE_CREATE_OAUTH_PROVIDERS + timestampMs: + type: string + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. + organizationId: + type: string + description: Unique identifier for a given Organization. + parameters: + "$ref": "#/components/schemas/CreateOauthProvidersIntent" + CreateOauthProvidersResult: + required: + - providerIds + type: object + properties: + providerIds: + type: array + description: A list of unique identifiers for Oauth Providers + items: + type: string CreateOrganizationIntent: required: - - organizationName - - rootAuthenticator - - rootEmail + - organizationName + - rootAuthenticator + - rootEmail type: object properties: organizationName: @@ -2009,15 +2349,15 @@ components: type: string description: The root user's email address. rootAuthenticator: - $ref: '#/components/schemas/AuthenticatorParams' + "$ref": "#/components/schemas/AuthenticatorParams" rootUserId: type: string description: Unique identifier for the root user object. CreateOrganizationIntentV2: required: - - organizationName - - rootAuthenticator - - rootEmail + - organizationName + - rootAuthenticator + - rootEmail type: object properties: organizationName: @@ -2027,13 +2367,13 @@ components: type: string description: The root user's email address. rootAuthenticator: - $ref: '#/components/schemas/AuthenticatorParamsV2' + "$ref": "#/components/schemas/AuthenticatorParamsV2" rootUserId: type: string description: Unique identifier for the root user object. CreateOrganizationResult: required: - - organizationId + - organizationId type: object properties: organizationId: @@ -2041,39 +2381,38 @@ components: description: Unique identifier for a given Organization. CreatePoliciesIntent: required: - - policies + - policies type: object properties: policies: type: array description: An array of policy intents to be created. items: - $ref: '#/components/schemas/CreatePolicyIntentV3' + "$ref": "#/components/schemas/CreatePolicyIntentV3" CreatePoliciesRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_CREATE_POLICIES + - ACTIVITY_TYPE_CREATE_POLICIES timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/CreatePoliciesIntent' + "$ref": "#/components/schemas/CreatePoliciesIntent" CreatePoliciesResult: required: - - policyIds + - policyIds type: object properties: policyIds: @@ -2083,9 +2422,9 @@ components: type: string CreatePolicyIntent: required: - - effect - - policyName - - selectors + - effect + - policyName + - selectors type: object properties: policyName: @@ -2093,20 +2432,19 @@ components: description: Human-readable name for a Policy. selectors: type: array - description: >- - A list of simple functions each including a subject, target and - boolean. See Policy Engine Language section for additional details. + description: A list of simple functions each including a subject, target + and boolean. See Policy Engine Language section for additional details. items: - $ref: '#/components/schemas/Selector' + "$ref": "#/components/schemas/Selector" effect: - $ref: '#/components/schemas/Effect' + "$ref": "#/components/schemas/Effect" notes: type: string CreatePolicyIntentV2: required: - - effect - - policyName - - selectors + - effect + - policyName + - selectors type: object properties: policyName: @@ -2114,26 +2452,25 @@ components: description: Human-readable name for a Policy. selectors: type: array - description: >- - A list of simple functions each including a subject, target and - boolean. See Policy Engine Language section for additional details. + description: A list of simple functions each including a subject, target + and boolean. See Policy Engine Language section for additional details. items: - $ref: '#/components/schemas/SelectorV2' + "$ref": "#/components/schemas/SelectorV2" effect: - $ref: '#/components/schemas/Effect' + "$ref": "#/components/schemas/Effect" notes: type: string CreatePolicyIntentV3: required: - - effect - - policyName + - effect + - policyName type: object properties: policyName: type: string description: Human-readable name for a Policy. effect: - $ref: '#/components/schemas/Effect' + "$ref": "#/components/schemas/Effect" condition: type: string description: The condition expression that triggers the Effect @@ -2144,29 +2481,28 @@ components: type: string CreatePolicyRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_CREATE_POLICY_V3 + - ACTIVITY_TYPE_CREATE_POLICY_V3 timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/CreatePolicyIntentV3' + "$ref": "#/components/schemas/CreatePolicyIntentV3" CreatePolicyResult: required: - - policyId + - policyId type: object properties: policyId: @@ -2174,8 +2510,8 @@ components: description: Unique identifier for a given Policy. CreatePrivateKeyTagIntent: required: - - privateKeyIds - - privateKeyTagName + - privateKeyIds + - privateKeyTagName type: object properties: privateKeyTagName: @@ -2188,30 +2524,29 @@ components: type: string CreatePrivateKeyTagRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_CREATE_PRIVATE_KEY_TAG + - ACTIVITY_TYPE_CREATE_PRIVATE_KEY_TAG timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/CreatePrivateKeyTagIntent' + "$ref": "#/components/schemas/CreatePrivateKeyTagIntent" CreatePrivateKeyTagResult: required: - - privateKeyIds - - privateKeyTagId + - privateKeyIds + - privateKeyTagId type: object properties: privateKeyTagId: @@ -2224,49 +2559,48 @@ components: type: string CreatePrivateKeysIntent: required: - - privateKeys + - privateKeys type: object properties: privateKeys: type: array description: A list of Private Keys. items: - $ref: '#/components/schemas/PrivateKeyParams' + "$ref": "#/components/schemas/PrivateKeyParams" CreatePrivateKeysIntentV2: required: - - privateKeys + - privateKeys type: object properties: privateKeys: type: array description: A list of Private Keys. items: - $ref: '#/components/schemas/PrivateKeyParams' + "$ref": "#/components/schemas/PrivateKeyParams" CreatePrivateKeysRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_CREATE_PRIVATE_KEYS_V2 + - ACTIVITY_TYPE_CREATE_PRIVATE_KEYS_V2 timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/CreatePrivateKeysIntentV2' + "$ref": "#/components/schemas/CreatePrivateKeysIntentV2" CreatePrivateKeysResult: required: - - privateKeyIds + - privateKeyIds type: object properties: privateKeyIds: @@ -2276,30 +2610,210 @@ components: type: string CreatePrivateKeysResultV2: required: - - privateKeys + - privateKeys type: object properties: privateKeys: type: array description: A list of Private Key IDs and addresses. items: - $ref: '#/components/schemas/PrivateKeyResult' + "$ref": "#/components/schemas/PrivateKeyResult" + CreateReadOnlySessionIntent: + type: object + CreateReadOnlySessionRequest: + required: + - organizationId + - parameters + - timestampMs + - type + type: object + properties: + type: + type: string + enum: + - ACTIVITY_TYPE_CREATE_READ_ONLY_SESSION + timestampMs: + type: string + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. + organizationId: + type: string + description: Unique identifier for a given Organization. + parameters: + "$ref": "#/components/schemas/CreateReadOnlySessionIntent" + CreateReadOnlySessionResult: + required: + - organizationId + - organizationName + - session + - sessionExpiry + - userId + - username + type: object + properties: + organizationId: + type: string + description: Unique identifier for a given Organization. If the request + is being made by a user and their Sub-Organization ID is unknown, this + can be the Parent Organization ID. However, using the Sub-Organization + ID is preferred due to performance reasons. + organizationName: + type: string + description: Human-readable name for an Organization. + userId: + type: string + description: Unique identifier for a given User. + username: + type: string + description: Human-readable name for a User. + session: + type: string + description: String representing a read only session + sessionExpiry: + type: string + description: UTC timestamp in seconds representing the expiry time for the + read only session. + format: uint64 + CreateReadWriteSessionIntent: + required: + - email + - targetPublicKey + type: object + properties: + targetPublicKey: + type: string + description: Client-side public key generated by the user, to which the + read write session bundle (credentials) will be encrypted. + email: + type: string + description: Email of the user to create a read write session for + apiKeyName: + type: string + description: Optional human-readable name for an API Key. If none provided, + default to Read Write Session - + expirationSeconds: + type: string + description: Expiration window (in seconds) indicating how long the API + key is valid. If not provided, a default of 15 minutes will be used. + CreateReadWriteSessionIntentV2: + required: + - targetPublicKey + type: object + properties: + targetPublicKey: + type: string + description: Client-side public key generated by the user, to which the + read write session bundle (credentials) will be encrypted. + userId: + type: string + description: Unique identifier for a given User. + apiKeyName: + type: string + description: Optional human-readable name for an API Key. If none provided, + default to Read Write Session - + expirationSeconds: + type: string + description: Expiration window (in seconds) indicating how long the API + key is valid. If not provided, a default of 15 minutes will be used. + CreateReadWriteSessionRequest: + required: + - organizationId + - parameters + - timestampMs + - type + type: object + properties: + type: + type: string + enum: + - ACTIVITY_TYPE_CREATE_READ_WRITE_SESSION_V2 + timestampMs: + type: string + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. + organizationId: + type: string + description: Unique identifier for a given Organization. + parameters: + "$ref": "#/components/schemas/CreateReadWriteSessionIntentV2" + CreateReadWriteSessionResult: + required: + - apiKeyId + - credentialBundle + - organizationId + - organizationName + - userId + - username + type: object + properties: + organizationId: + type: string + description: Unique identifier for a given Organization. If the request + is being made by a user and their Sub-Organization ID is unknown, this + can be the Parent Organization ID. However, using the Sub-Organization + ID is preferred due to performance reasons. + organizationName: + type: string + description: Human-readable name for an Organization. + userId: + type: string + description: Unique identifier for a given User. + username: + type: string + description: Human-readable name for a User. + apiKeyId: + type: string + description: Unique identifier for the created API key. + credentialBundle: + type: string + description: HPKE encrypted credential bundle + CreateReadWriteSessionResultV2: + required: + - apiKeyId + - credentialBundle + - organizationId + - organizationName + - userId + - username + type: object + properties: + organizationId: + type: string + description: Unique identifier for a given Organization. If the request + is being made by a user and their Sub-Organization ID is unknown, this + can be the Parent Organization ID. However, using the Sub-Organization + ID is preferred due to performance reasons. + organizationName: + type: string + description: Human-readable name for an Organization. + userId: + type: string + description: Unique identifier for a given User. + username: + type: string + description: Human-readable name for a User. + apiKeyId: + type: string + description: Unique identifier for the created API key. + credentialBundle: + type: string + description: HPKE encrypted credential bundle CreateSubOrganizationIntent: required: - - name - - rootAuthenticator + - name + - rootAuthenticator type: object properties: name: type: string description: Name for this sub-organization rootAuthenticator: - $ref: '#/components/schemas/AuthenticatorParamsV2' + "$ref": "#/components/schemas/AuthenticatorParamsV2" CreateSubOrganizationIntentV2: required: - - rootQuorumThreshold - - rootUsers - - subOrganizationName + - rootQuorumThreshold + - rootUsers + - subOrganizationName type: object properties: subOrganizationName: @@ -2309,19 +2823,18 @@ components: type: array description: Root users to create within this sub-organization items: - $ref: '#/components/schemas/RootUserParams' + "$ref": "#/components/schemas/RootUserParams" rootQuorumThreshold: type: integer - description: >- - The threshold of unique approvals to reach root quorum. This value - must be less than or equal to the number of root users + description: The threshold of unique approvals to reach root quorum. This + value must be less than or equal to the number of root users format: int32 CreateSubOrganizationIntentV3: required: - - privateKeys - - rootQuorumThreshold - - rootUsers - - subOrganizationName + - privateKeys + - rootQuorumThreshold + - rootUsers + - subOrganizationName type: object properties: subOrganizationName: @@ -2331,23 +2844,22 @@ components: type: array description: Root users to create within this sub-organization items: - $ref: '#/components/schemas/RootUserParams' + "$ref": "#/components/schemas/RootUserParams" rootQuorumThreshold: type: integer - description: >- - The threshold of unique approvals to reach root quorum. This value - must be less than or equal to the number of root users + description: The threshold of unique approvals to reach root quorum. This + value must be less than or equal to the number of root users format: int32 privateKeys: type: array description: A list of Private Keys. items: - $ref: '#/components/schemas/PrivateKeyParams' + "$ref": "#/components/schemas/PrivateKeyParams" CreateSubOrganizationIntentV4: required: - - rootQuorumThreshold - - rootUsers - - subOrganizationName + - rootQuorumThreshold + - rootUsers + - subOrganizationName type: object properties: subOrganizationName: @@ -2357,46 +2869,134 @@ components: type: array description: Root users to create within this sub-organization items: - $ref: '#/components/schemas/RootUserParams' + "$ref": "#/components/schemas/RootUserParams" rootQuorumThreshold: type: integer - description: >- - The threshold of unique approvals to reach root quorum. This value - must be less than or equal to the number of root users + description: The threshold of unique approvals to reach root quorum. This + value must be less than or equal to the number of root users format: int32 wallet: - $ref: '#/components/schemas/WalletParams' + "$ref": "#/components/schemas/WalletParams" disableEmailRecovery: type: boolean description: Disable email recovery for the sub-organization disableEmailAuth: type: boolean description: Disable email auth for the sub-organization + CreateSubOrganizationIntentV5: + required: + - rootQuorumThreshold + - rootUsers + - subOrganizationName + type: object + properties: + subOrganizationName: + type: string + description: Name for this sub-organization + rootUsers: + type: array + description: Root users to create within this sub-organization + items: + "$ref": "#/components/schemas/RootUserParamsV2" + rootQuorumThreshold: + type: integer + description: The threshold of unique approvals to reach root quorum. This + value must be less than or equal to the number of root users + format: int32 + wallet: + "$ref": "#/components/schemas/WalletParams" + disableEmailRecovery: + type: boolean + description: Disable email recovery for the sub-organization + disableEmailAuth: + type: boolean + description: Disable email auth for the sub-organization + CreateSubOrganizationIntentV6: + required: + - rootQuorumThreshold + - rootUsers + - subOrganizationName + type: object + properties: + subOrganizationName: + type: string + description: Name for this sub-organization + rootUsers: + type: array + description: Root users to create within this sub-organization + items: + "$ref": "#/components/schemas/RootUserParamsV3" + rootQuorumThreshold: + type: integer + description: The threshold of unique approvals to reach root quorum. This + value must be less than or equal to the number of root users + format: int32 + wallet: + "$ref": "#/components/schemas/WalletParams" + disableEmailRecovery: + type: boolean + description: Disable email recovery for the sub-organization + disableEmailAuth: + type: boolean + description: Disable email auth for the sub-organization + CreateSubOrganizationIntentV7: + required: + - rootQuorumThreshold + - rootUsers + - subOrganizationName + type: object + properties: + subOrganizationName: + type: string + description: Name for this sub-organization + rootUsers: + type: array + description: Root users to create within this sub-organization + items: + "$ref": "#/components/schemas/RootUserParamsV4" + rootQuorumThreshold: + type: integer + description: The threshold of unique approvals to reach root quorum. This + value must be less than or equal to the number of root users + format: int32 + wallet: + "$ref": "#/components/schemas/WalletParams" + disableEmailRecovery: + type: boolean + description: Disable email recovery for the sub-organization + disableEmailAuth: + type: boolean + description: Disable email auth for the sub-organization + disableSmsAuth: + type: boolean + description: Disable OTP SMS auth for the sub-organization + disableOtpEmailAuth: + type: boolean + description: Disable OTP email auth for the sub-organization CreateSubOrganizationRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_CREATE_SUB_ORGANIZATION_V4 + - ACTIVITY_TYPE_CREATE_SUB_ORGANIZATION_V7 timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/CreateSubOrganizationIntentV4' + "$ref": "#/components/schemas/CreateSubOrganizationIntentV7" CreateSubOrganizationResult: required: - - subOrganizationId + - subOrganizationId type: object properties: subOrganizationId: @@ -2407,8 +3007,8 @@ components: type: string CreateSubOrganizationResultV3: required: - - privateKeys - - subOrganizationId + - privateKeys + - subOrganizationId type: object properties: subOrganizationId: @@ -2417,28 +3017,67 @@ components: type: array description: A list of Private Key IDs and addresses. items: - $ref: '#/components/schemas/PrivateKeyResult' + "$ref": "#/components/schemas/PrivateKeyResult" rootUserIds: type: array items: type: string CreateSubOrganizationResultV4: required: - - subOrganizationId + - subOrganizationId type: object properties: subOrganizationId: type: string wallet: - $ref: '#/components/schemas/WalletResult' + "$ref": "#/components/schemas/WalletResult" + rootUserIds: + type: array + items: + type: string + CreateSubOrganizationResultV5: + required: + - subOrganizationId + type: object + properties: + subOrganizationId: + type: string + wallet: + "$ref": "#/components/schemas/WalletResult" + rootUserIds: + type: array + items: + type: string + CreateSubOrganizationResultV6: + required: + - subOrganizationId + type: object + properties: + subOrganizationId: + type: string + wallet: + "$ref": "#/components/schemas/WalletResult" + rootUserIds: + type: array + items: + type: string + CreateSubOrganizationResultV7: + required: + - subOrganizationId + type: object + properties: + subOrganizationId: + type: string + wallet: + "$ref": "#/components/schemas/WalletResult" rootUserIds: type: array items: type: string CreateUserTagIntent: required: - - userIds - - userTagName + - userIds + - userTagName type: object properties: userTagName: @@ -2451,30 +3090,29 @@ components: type: string CreateUserTagRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_CREATE_USER_TAG + - ACTIVITY_TYPE_CREATE_USER_TAG timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/CreateUserTagIntent' + "$ref": "#/components/schemas/CreateUserTagIntent" CreateUserTagResult: required: - - userIds - - userTagId + - userIds + - userTagId type: object properties: userTagId: @@ -2487,49 +3125,48 @@ components: type: string CreateUsersIntent: required: - - users + - users type: object properties: users: type: array description: A list of Users. items: - $ref: '#/components/schemas/UserParams' + "$ref": "#/components/schemas/UserParams" CreateUsersIntentV2: required: - - users + - users type: object properties: users: type: array description: A list of Users. items: - $ref: '#/components/schemas/UserParamsV2' + "$ref": "#/components/schemas/UserParamsV2" CreateUsersRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_CREATE_USERS_V2 + - ACTIVITY_TYPE_CREATE_USERS_V2 timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/CreateUsersIntentV2' + "$ref": "#/components/schemas/CreateUsersIntentV2" CreateUsersResult: required: - - userIds + - userIds type: object properties: userIds: @@ -2539,8 +3176,8 @@ components: type: string CreateWalletAccountsIntent: required: - - accounts - - walletId + - accounts + - walletId type: object properties: walletId: @@ -2550,32 +3187,31 @@ components: type: array description: A list of wallet Accounts. items: - $ref: '#/components/schemas/WalletAccountParams' + "$ref": "#/components/schemas/WalletAccountParams" CreateWalletAccountsRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_CREATE_WALLET_ACCOUNTS + - ACTIVITY_TYPE_CREATE_WALLET_ACCOUNTS timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/CreateWalletAccountsIntent' + "$ref": "#/components/schemas/CreateWalletAccountsIntent" CreateWalletAccountsResult: required: - - addresses + - addresses type: object properties: addresses: @@ -2585,8 +3221,8 @@ components: type: string CreateWalletIntent: required: - - accounts - - walletName + - accounts + - walletName type: object properties: walletName: @@ -2596,39 +3232,37 @@ components: type: array description: A list of wallet Accounts. items: - $ref: '#/components/schemas/WalletAccountParams' + "$ref": "#/components/schemas/WalletAccountParams" mnemonicLength: type: integer - description: >- - Length of mnemonic to generate the Wallet seed. Defaults to 12. - Accepted values: 12, 15, 18, 21, 24. + description: 'Length of mnemonic to generate the Wallet seed. Defaults to + 12. Accepted values: 12, 15, 18, 21, 24.' format: int32 CreateWalletRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_CREATE_WALLET + - ACTIVITY_TYPE_CREATE_WALLET timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/CreateWalletIntent' + "$ref": "#/components/schemas/CreateWalletIntent" CreateWalletResult: required: - - addresses - - walletId + - addresses + - walletId type: object properties: walletId: @@ -2641,7 +3275,7 @@ components: type: string CredPropsAuthenticationExtensionsClientOutputs: required: - - rk + - rk type: object properties: rk: @@ -2649,18 +3283,22 @@ components: CredentialType: type: string enum: - - CREDENTIAL_TYPE_WEBAUTHN_AUTHENTICATOR - - CREDENTIAL_TYPE_API_KEY_P256 - - CREDENTIAL_TYPE_RECOVER_USER_KEY_P256 + - CREDENTIAL_TYPE_WEBAUTHN_AUTHENTICATOR + - CREDENTIAL_TYPE_API_KEY_P256 + - CREDENTIAL_TYPE_RECOVER_USER_KEY_P256 + - CREDENTIAL_TYPE_API_KEY_SECP256K1 + - CREDENTIAL_TYPE_EMAIL_AUTH_KEY_P256 + - CREDENTIAL_TYPE_API_KEY_ED25519 + - CREDENTIAL_TYPE_OTP_AUTH_KEY_P256 Curve: type: string enum: - - CURVE_SECP256K1 - - CURVE_ED25519 + - CURVE_SECP256K1 + - CURVE_ED25519 DeleteApiKeysIntent: required: - - apiKeyIds - - userId + - apiKeyIds + - userId type: object properties: userId: @@ -2673,29 +3311,28 @@ components: type: string DeleteApiKeysRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_DELETE_API_KEYS + - ACTIVITY_TYPE_DELETE_API_KEYS timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/DeleteApiKeysIntent' + "$ref": "#/components/schemas/DeleteApiKeysIntent" DeleteApiKeysResult: required: - - apiKeyIds + - apiKeyIds type: object properties: apiKeyIds: @@ -2705,8 +3342,8 @@ components: type: string DeleteAuthenticatorsIntent: required: - - authenticatorIds - - userId + - authenticatorIds + - userId type: object properties: userId: @@ -2719,29 +3356,28 @@ components: type: string DeleteAuthenticatorsRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_DELETE_AUTHENTICATORS + - ACTIVITY_TYPE_DELETE_AUTHENTICATORS timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/DeleteAuthenticatorsIntent' + "$ref": "#/components/schemas/DeleteAuthenticatorsIntent" DeleteAuthenticatorsResult: required: - - authenticatorIds + - authenticatorIds type: object properties: authenticatorIds: @@ -2751,7 +3387,7 @@ components: type: string DeleteInvitationIntent: required: - - invitationId + - invitationId type: object properties: invitationId: @@ -2759,37 +3395,81 @@ components: description: Unique identifier for a given Invitation object. DeleteInvitationRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_DELETE_INVITATION + - ACTIVITY_TYPE_DELETE_INVITATION timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/DeleteInvitationIntent' + "$ref": "#/components/schemas/DeleteInvitationIntent" DeleteInvitationResult: required: - - invitationId + - invitationId type: object properties: invitationId: type: string description: Unique identifier for a given Invitation. + DeleteOauthProvidersIntent: + required: + - providerIds + - userId + type: object + properties: + userId: + type: string + description: The ID of the User to remove an Oauth provider from + providerIds: + type: array + description: Unique identifier for a given Provider. + items: + type: string + DeleteOauthProvidersRequest: + required: + - organizationId + - parameters + - timestampMs + - type + type: object + properties: + type: + type: string + enum: + - ACTIVITY_TYPE_DELETE_OAUTH_PROVIDERS + timestampMs: + type: string + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. + organizationId: + type: string + description: Unique identifier for a given Organization. + parameters: + "$ref": "#/components/schemas/DeleteOauthProvidersIntent" + DeleteOauthProvidersResult: + required: + - providerIds + type: object + properties: + providerIds: + type: array + description: A list of unique identifiers for Oauth Providers + items: + type: string DeleteOrganizationIntent: required: - - organizationId + - organizationId type: object properties: organizationId: @@ -2797,7 +3477,7 @@ components: description: Unique identifier for a given Organization. DeleteOrganizationResult: required: - - organizationId + - organizationId type: object properties: organizationId: @@ -2805,7 +3485,7 @@ components: description: Unique identifier for a given Organization. DeletePaymentMethodIntent: required: - - paymentMethodId + - paymentMethodId type: object properties: paymentMethodId: @@ -2813,7 +3493,7 @@ components: description: The payment method that the customer wants to remove. DeletePaymentMethodResult: required: - - paymentMethodId + - paymentMethodId type: object properties: paymentMethodId: @@ -2821,7 +3501,7 @@ components: description: The payment method that was removed. DeletePolicyIntent: required: - - policyId + - policyId type: object properties: policyId: @@ -2829,29 +3509,28 @@ components: description: Unique identifier for a given Policy. DeletePolicyRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_DELETE_POLICY + - ACTIVITY_TYPE_DELETE_POLICY timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/DeletePolicyIntent' + "$ref": "#/components/schemas/DeletePolicyIntent" DeletePolicyResult: required: - - policyId + - policyId type: object properties: policyId: @@ -2859,7 +3538,7 @@ components: description: Unique identifier for a given Policy. DeletePrivateKeyTagsIntent: required: - - privateKeyTagIds + - privateKeyTagIds type: object properties: privateKeyTagIds: @@ -2869,30 +3548,29 @@ components: type: string DeletePrivateKeyTagsRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_DELETE_PRIVATE_KEY_TAGS + - ACTIVITY_TYPE_DELETE_PRIVATE_KEY_TAGS timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/DeletePrivateKeyTagsIntent' + "$ref": "#/components/schemas/DeletePrivateKeyTagsIntent" DeletePrivateKeyTagsResult: required: - - privateKeyIds - - privateKeyTagIds + - privateKeyIds + - privateKeyTagIds type: object properties: privateKeyTagIds: @@ -2905,9 +3583,93 @@ components: description: A list of Private Key IDs. items: type: string + DeletePrivateKeysIntent: + required: + - privateKeyIds + type: object + properties: + privateKeyIds: + type: array + description: List of unique identifiers for private keys within an organization + items: + type: string + deleteWithoutExport: + type: boolean + description: Optional parameter for deleting the private keys, even if any + have not been previously exported. If they have been exported, this field + is ignored. + DeletePrivateKeysRequest: + required: + - organizationId + - parameters + - timestampMs + - type + type: object + properties: + type: + type: string + enum: + - ACTIVITY_TYPE_DELETE_PRIVATE_KEYS + timestampMs: + type: string + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. + organizationId: + type: string + description: Unique identifier for a given Organization. + parameters: + "$ref": "#/components/schemas/DeletePrivateKeysIntent" + DeletePrivateKeysResult: + required: + - privateKeyIds + type: object + properties: + privateKeyIds: + type: array + description: A list of private key unique identifiers that were removed + items: + type: string + DeleteSubOrganizationIntent: + type: object + properties: + deleteWithoutExport: + type: boolean + description: 'Sub-organization deletion, by default, requires associated + wallets and private keys to be exported for security reasons. Set this + boolean to true to force sub-organization deletion even if some wallets + or private keys within it have not been exported yet. Default: false.' + DeleteSubOrganizationRequest: + required: + - organizationId + - parameters + - timestampMs + - type + type: object + properties: + type: + type: string + enum: + - ACTIVITY_TYPE_DELETE_SUB_ORGANIZATION + timestampMs: + type: string + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. + organizationId: + type: string + description: Unique identifier for a given Organization. + parameters: + "$ref": "#/components/schemas/DeleteSubOrganizationIntent" + DeleteSubOrganizationResult: + required: + - subOrganizationUuid + type: object + properties: + subOrganizationUuid: + type: string + description: Unique identifier of the sub organization that was removed DeleteUserTagsIntent: required: - - userTagIds + - userTagIds type: object properties: userTagIds: @@ -2917,87 +3679,131 @@ components: type: string DeleteUserTagsRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type + type: object + properties: + type: + type: string + enum: + - ACTIVITY_TYPE_DELETE_USER_TAGS + timestampMs: + type: string + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. + organizationId: + type: string + description: Unique identifier for a given Organization. + parameters: + "$ref": "#/components/schemas/DeleteUserTagsIntent" + DeleteUserTagsResult: + required: + - userIds + - userTagIds + type: object + properties: + userTagIds: + type: array + description: A list of User Tag IDs. + items: + type: string + userIds: + type: array + description: A list of User IDs. + items: + type: string + DeleteUsersIntent: + required: + - userIds + type: object + properties: + userIds: + type: array + description: A list of User IDs. + items: + type: string + DeleteUsersRequest: + required: + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_DELETE_USER_TAGS + - ACTIVITY_TYPE_DELETE_USERS timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/DeleteUserTagsIntent' - DeleteUserTagsResult: + "$ref": "#/components/schemas/DeleteUsersIntent" + DeleteUsersResult: required: - - userIds - - userTagIds + - userIds type: object properties: - userTagIds: - type: array - description: A list of User Tag IDs. - items: - type: string userIds: type: array description: A list of User IDs. items: type: string - DeleteUsersIntent: + DeleteWalletsIntent: required: - - userIds + - walletIds type: object properties: - userIds: + walletIds: type: array - description: A list of User IDs. + description: List of unique identifiers for wallets within an organization items: type: string - DeleteUsersRequest: + deleteWithoutExport: + type: boolean + description: Optional parameter for deleting the wallets, even if any have + not been previously exported. If they have been exported, this field is + ignored. + DeleteWalletsRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_DELETE_USERS + - ACTIVITY_TYPE_DELETE_WALLETS timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/DeleteUsersIntent' - DeleteUsersResult: + "$ref": "#/components/schemas/DeleteWalletsIntent" + DeleteWalletsResult: required: - - userIds + - walletIds type: object properties: - userIds: + walletIds: type: array - description: A list of User IDs. + description: A list of wallet unique identifiers that were removed items: type: string DisablePrivateKeyIntent: required: - - privateKeyId + - privateKeyId type: object properties: privateKeyId: @@ -3005,7 +3811,7 @@ components: description: Unique identifier for a given Private Key. DisablePrivateKeyResult: required: - - privateKeyId + - privateKeyId type: object properties: privateKeyId: @@ -3014,12 +3820,12 @@ components: Effect: type: string enum: - - EFFECT_ALLOW - - EFFECT_DENY + - EFFECT_ALLOW + - EFFECT_DENY EmailAuthIntent: required: - - email - - targetPublicKey + - email + - targetPublicKey type: object properties: email: @@ -3027,47 +3833,72 @@ components: description: Email of the authenticating user. targetPublicKey: type: string - description: >- - Client-side public key generated by the user, to which the email - auth bundle (credentials) will be encrypted. + description: Client-side public key generated by the user, to which the + email auth bundle (credentials) will be encrypted. apiKeyName: type: string - description: >- - Optional human-readable name for an API Key. If none provided, + description: Optional human-readable name for an API Key. If none provided, default to Email Auth - expirationSeconds: type: string - description: >- - Expiration window (in seconds) indicating how long the API key is - valid. If not provided, a default of 15 minutes will be used. + description: Expiration window (in seconds) indicating how long the API + key is valid. If not provided, a default of 15 minutes will be used. emailCustomization: - $ref: '#/components/schemas/EmailCustomizationParams' + "$ref": "#/components/schemas/EmailCustomizationParams" + invalidateExisting: + type: boolean + description: Invalidate all other previously generated Email Auth API keys + EmailAuthIntentV2: + required: + - email + - targetPublicKey + type: object + properties: + email: + type: string + description: Email of the authenticating user. + targetPublicKey: + type: string + description: Client-side public key generated by the user, to which the + email auth bundle (credentials) will be encrypted. + apiKeyName: + type: string + description: Optional human-readable name for an API Key. If none provided, + default to Email Auth - + expirationSeconds: + type: string + description: Expiration window (in seconds) indicating how long the API + key is valid. If not provided, a default of 15 minutes will be used. + emailCustomization: + "$ref": "#/components/schemas/EmailCustomizationParams" + invalidateExisting: + type: boolean + description: Invalidate all other previously generated Email Auth API keys EmailAuthRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_EMAIL_AUTH + - ACTIVITY_TYPE_EMAIL_AUTH_V2 timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/EmailAuthIntent' + "$ref": "#/components/schemas/EmailAuthIntentV2" EmailAuthResult: required: - - apiKeyId - - userId + - apiKeyId + - userId type: object properties: userId: @@ -3084,29 +3915,24 @@ components: description: The name of the application. logoUrl: type: string - description: >- - A URL pointing to a logo in PNG format. Note this logo will be - resized to fit into 340px x 124px. + description: A URL pointing to a logo in PNG format. Note this logo will + be resized to fit into 340px x 124px. magicLinkTemplate: type: string - description: >- - A template for the URL to be used in a magic link button, e.g. - `https://dapp.xyz/%s`. The auth bundle will be interpolated into the - `%s`. + description: A template for the URL to be used in a magic link button, e.g. + `https://dapp.xyz/%s`. The auth bundle will be interpolated into the `%s`. templateVariables: type: string - description: >- - JSON object containing key/value pairs to be used with custom + description: JSON object containing key/value pairs to be used with custom templates. templateId: type: string - description: >- - Unique identifier for a given Email Template. If not specified, the - default is the most recent Email Template. + description: Unique identifier for a given Email Template. If not specified, + the default is the most recent Email Template. ExportPrivateKeyIntent: required: - - privateKeyId - - targetPublicKey + - privateKeyId + - targetPublicKey type: object properties: privateKeyId: @@ -3114,35 +3940,33 @@ components: description: Unique identifier for a given Private Key. targetPublicKey: type: string - description: >- - Client-side public key generated by the user, to which the export - bundle will be encrypted. + description: Client-side public key generated by the user, to which the + export bundle will be encrypted. ExportPrivateKeyRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_EXPORT_PRIVATE_KEY + - ACTIVITY_TYPE_EXPORT_PRIVATE_KEY timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/ExportPrivateKeyIntent' + "$ref": "#/components/schemas/ExportPrivateKeyIntent" ExportPrivateKeyResult: required: - - exportBundle - - privateKeyId + - exportBundle + - privateKeyId type: object properties: privateKeyId: @@ -3150,13 +3974,12 @@ components: description: Unique identifier for a given Private Key. exportBundle: type: string - description: >- - Export bundle containing a private key encrypted to the client's + description: Export bundle containing a private key encrypted to the client's target public key. ExportWalletAccountIntent: required: - - address - - targetPublicKey + - address + - targetPublicKey type: object properties: address: @@ -3164,35 +3987,33 @@ components: description: Address to identify Wallet Account. targetPublicKey: type: string - description: >- - Client-side public key generated by the user, to which the export - bundle will be encrypted. + description: Client-side public key generated by the user, to which the + export bundle will be encrypted. ExportWalletAccountRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_EXPORT_WALLET_ACCOUNT + - ACTIVITY_TYPE_EXPORT_WALLET_ACCOUNT timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/ExportWalletAccountIntent' + "$ref": "#/components/schemas/ExportWalletAccountIntent" ExportWalletAccountResult: required: - - address - - exportBundle + - address + - exportBundle type: object properties: address: @@ -3200,13 +4021,12 @@ components: description: Address to identify Wallet Account. exportBundle: type: string - description: >- - Export bundle containing a private key encrypted by the client's + description: Export bundle containing a private key encrypted by the client's target public key. ExportWalletIntent: required: - - targetPublicKey - - walletId + - targetPublicKey + - walletId type: object properties: walletId: @@ -3214,37 +4034,35 @@ components: description: Unique identifier for a given Wallet. targetPublicKey: type: string - description: >- - Client-side public key generated by the user, to which the export - bundle will be encrypted. + description: Client-side public key generated by the user, to which the + export bundle will be encrypted. language: - $ref: '#/components/schemas/MnemonicLanguage' + "$ref": "#/components/schemas/MnemonicLanguage" ExportWalletRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_EXPORT_WALLET + - ACTIVITY_TYPE_EXPORT_WALLET timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/ExportWalletIntent' + "$ref": "#/components/schemas/ExportWalletIntent" ExportWalletResult: required: - - exportBundle - - walletId + - exportBundle + - walletId type: object properties: walletId: @@ -3252,27 +4070,28 @@ components: description: Unique identifier for a given Wallet. exportBundle: type: string - description: >- - Export bundle containing a wallet mnemonic + optional newline + description: Export bundle containing a wallet mnemonic + optional newline passphrase encrypted by the client's target public key. Feature: type: object properties: name: - $ref: '#/components/schemas/FeatureName' + "$ref": "#/components/schemas/FeatureName" value: type: string FeatureName: type: string enum: - - FEATURE_NAME_ROOT_USER_EMAIL_RECOVERY - - FEATURE_NAME_WEBAUTHN_ORIGINS - - FEATURE_NAME_EMAIL_AUTH - - FEATURE_NAME_EMAIL_RECOVERY - - FEATURE_NAME_WEBHOOK + - FEATURE_NAME_ROOT_USER_EMAIL_RECOVERY + - FEATURE_NAME_WEBAUTHN_ORIGINS + - FEATURE_NAME_EMAIL_AUTH + - FEATURE_NAME_EMAIL_RECOVERY + - FEATURE_NAME_WEBHOOK + - FEATURE_NAME_SMS_AUTH + - FEATURE_NAME_OTP_EMAIL_AUTH GetActivitiesRequest: required: - - organizationId + - organizationId type: object properties: organizationId: @@ -3280,34 +4099,32 @@ components: description: Unique identifier for a given Organization. filterByStatus: type: array - description: >- - Array of Activity Statuses filtering which Activities will be listed - in the response. + description: Array of Activity Statuses filtering which Activities will + be listed in the response. items: - $ref: '#/components/schemas/ActivityStatus' + "$ref": "#/components/schemas/ActivityStatus" paginationOptions: - $ref: '#/components/schemas/Pagination' + "$ref": "#/components/schemas/Pagination" filterByType: type: array - description: >- - Array of Activity Types filtering which Activities will be listed in - the response. + description: Array of Activity Types filtering which Activities will be + listed in the response. items: - $ref: '#/components/schemas/ActivityType' + "$ref": "#/components/schemas/ActivityType" GetActivitiesResponse: required: - - activities + - activities type: object properties: activities: type: array description: A list of Activities. items: - $ref: '#/components/schemas/Activity' + "$ref": "#/components/schemas/Activity" GetActivityRequest: required: - - activityId - - organizationId + - activityId + - organizationId type: object properties: organizationId: @@ -3318,8 +4135,8 @@ components: description: Unique identifier for a given Activity object. GetApiKeyRequest: required: - - apiKeyId - - organizationId + - apiKeyId + - organizationId type: object properties: organizationId: @@ -3330,14 +4147,14 @@ components: description: Unique identifier for a given API key. GetApiKeyResponse: required: - - apiKey + - apiKey type: object properties: apiKey: - $ref: '#/components/schemas/ApiKey' + "$ref": "#/components/schemas/ApiKey" GetApiKeysRequest: required: - - organizationId + - organizationId type: object properties: organizationId: @@ -3348,18 +4165,18 @@ components: description: Unique identifier for a given User. GetApiKeysResponse: required: - - apiKeys + - apiKeys type: object properties: apiKeys: type: array description: A list of API keys. items: - $ref: '#/components/schemas/ApiKey' + "$ref": "#/components/schemas/ApiKey" GetAuthenticatorRequest: required: - - authenticatorId - - organizationId + - authenticatorId + - organizationId type: object properties: organizationId: @@ -3370,15 +4187,15 @@ components: description: Unique identifier for a given Authenticator. GetAuthenticatorResponse: required: - - authenticator + - authenticator type: object properties: authenticator: - $ref: '#/components/schemas/Authenticator' + "$ref": "#/components/schemas/Authenticator" GetAuthenticatorsRequest: required: - - organizationId - - userId + - organizationId + - userId type: object properties: organizationId: @@ -3389,17 +4206,53 @@ components: description: Unique identifier for a given User. GetAuthenticatorsResponse: required: - - authenticators + - authenticators type: object properties: authenticators: type: array description: A list of authenticators. items: - $ref: '#/components/schemas/Authenticator' + "$ref": "#/components/schemas/Authenticator" + GetOauthProvidersRequest: + required: + - organizationId + type: object + properties: + organizationId: + type: string + description: Unique identifier for a given Organization. + userId: + type: string + description: Unique identifier for a given User. + GetOauthProvidersResponse: + required: + - oauthProviders + type: object + properties: + oauthProviders: + type: array + description: A list of Oauth Providers + items: + "$ref": "#/components/schemas/OauthProvider" + GetOrganizationConfigsRequest: + required: + - organizationId + type: object + properties: + organizationId: + type: string + description: Unique identifier for a given Organization. + GetOrganizationConfigsResponse: + required: + - configs + type: object + properties: + configs: + "$ref": "#/components/schemas/Config" GetPoliciesRequest: required: - - organizationId + - organizationId type: object properties: organizationId: @@ -3407,18 +4260,18 @@ components: description: Unique identifier for a given Organization. GetPoliciesResponse: required: - - policies + - policies type: object properties: policies: type: array description: A list of Policies. items: - $ref: '#/components/schemas/Policy' + "$ref": "#/components/schemas/Policy" GetPolicyRequest: required: - - organizationId - - policyId + - organizationId + - policyId type: object properties: organizationId: @@ -3429,15 +4282,15 @@ components: description: Unique identifier for a given Policy. GetPolicyResponse: required: - - policy + - policy type: object properties: policy: - $ref: '#/components/schemas/Policy' + "$ref": "#/components/schemas/Policy" GetPrivateKeyRequest: required: - - organizationId - - privateKeyId + - organizationId + - privateKeyId type: object properties: organizationId: @@ -3448,14 +4301,14 @@ components: description: Unique identifier for a given Private Key. GetPrivateKeyResponse: required: - - privateKey + - privateKey type: object properties: privateKey: - $ref: '#/components/schemas/PrivateKey' + "$ref": "#/components/schemas/PrivateKey" GetPrivateKeysRequest: required: - - organizationId + - organizationId type: object properties: organizationId: @@ -3463,39 +4316,36 @@ components: description: Unique identifier for a given Organization. GetPrivateKeysResponse: required: - - privateKeys + - privateKeys type: object properties: privateKeys: type: array description: A list of Private Keys. items: - $ref: '#/components/schemas/PrivateKey' + "$ref": "#/components/schemas/PrivateKey" GetSubOrgIdsRequest: required: - - organizationId + - organizationId type: object properties: organizationId: type: string - description: >- - Unique identifier for the parent Organization. This is used to find - sub-organizations within it. + description: Unique identifier for the parent Organization. This is used + to find sub-organizations within it. filterType: type: string - description: >- - Specifies the type of filter to apply, i.e 'CREDENTIAL_ID', 'NAME', - 'USERNAME', 'EMAIL' or 'PUBLIC_KEY' + description: Specifies the type of filter to apply, i.e 'CREDENTIAL_ID', + 'NAME', 'USERNAME', 'EMAIL', 'OIDC_TOKEN' or 'PUBLIC_KEY' filterValue: type: string - description: >- - The value of the filter to apply for the specified type. For + description: The value of the filter to apply for the specified type. For example, a specific email or name string. paginationOptions: - $ref: '#/components/schemas/Pagination' + "$ref": "#/components/schemas/Pagination" GetSubOrgIdsResponse: required: - - organizationIds + - organizationIds type: object properties: organizationIds: @@ -3505,8 +4355,8 @@ components: type: string GetUserRequest: required: - - organizationId - - userId + - organizationId + - userId type: object properties: organizationId: @@ -3517,14 +4367,14 @@ components: description: Unique identifier for a given User. GetUserResponse: required: - - user + - user type: object properties: user: - $ref: '#/components/schemas/User' + "$ref": "#/components/schemas/User" GetUsersRequest: required: - - organizationId + - organizationId type: object properties: organizationId: @@ -3532,18 +4382,18 @@ components: description: Unique identifier for a given Organization. GetUsersResponse: required: - - users + - users type: object properties: users: type: array description: A list of Users. items: - $ref: '#/components/schemas/User' + "$ref": "#/components/schemas/User" GetWalletAccountsRequest: required: - - organizationId - - walletId + - organizationId + - walletId type: object properties: organizationId: @@ -3553,21 +4403,22 @@ components: type: string description: Unique identifier for a given Wallet. paginationOptions: - $ref: '#/components/schemas/Pagination' + "$ref": "#/components/schemas/Pagination" GetWalletAccountsResponse: required: - - accounts + - accounts type: object properties: accounts: type: array - description: A list of Accounts generated from a Wallet that share a common seed + description: A list of Accounts generated from a Wallet that share a common + seed items: - $ref: '#/components/schemas/WalletAccount' + "$ref": "#/components/schemas/WalletAccount" GetWalletRequest: required: - - organizationId - - walletId + - organizationId + - walletId type: object properties: organizationId: @@ -3578,14 +4429,14 @@ components: description: Unique identifier for a given Wallet. GetWalletResponse: required: - - wallet + - wallet type: object properties: wallet: - $ref: '#/components/schemas/Wallet' + "$ref": "#/components/schemas/Wallet" GetWalletsRequest: required: - - organizationId + - organizationId type: object properties: organizationId: @@ -3593,32 +4444,31 @@ components: description: Unique identifier for a given Organization. GetWalletsResponse: required: - - wallets + - wallets type: object properties: wallets: type: array description: A list of Wallets. items: - $ref: '#/components/schemas/Wallet' + "$ref": "#/components/schemas/Wallet" GetWhoamiRequest: required: - - organizationId + - organizationId type: object properties: organizationId: type: string - description: >- - Unique identifier for a given Organization. If the request is being - made by a WebAuthN user and their Sub-Organization ID is unknown, - this can be the Parent Organization ID; using the Sub-Organization - ID when possible is preferred due to performance reasons. + description: Unique identifier for a given Organization. If the request + is being made by a WebAuthN user and their Sub-Organization ID is unknown, + this can be the Parent Organization ID; using the Sub-Organization ID + when possible is preferred due to performance reasons. GetWhoamiResponse: required: - - organizationId - - organizationName - - userId - - username + - organizationId + - organizationName + - userId + - username type: object properties: organizationId: @@ -3636,17 +4486,17 @@ components: HashFunction: type: string enum: - - HASH_FUNCTION_NO_OP - - HASH_FUNCTION_SHA256 - - HASH_FUNCTION_KECCAK256 - - HASH_FUNCTION_NOT_APPLICABLE + - HASH_FUNCTION_NO_OP + - HASH_FUNCTION_SHA256 + - HASH_FUNCTION_KECCAK256 + - HASH_FUNCTION_NOT_APPLICABLE ImportPrivateKeyIntent: required: - - addressFormats - - curve - - encryptedBundle - - privateKeyName - - userId + - addressFormats + - curve + - encryptedBundle + - privateKeyName + - userId type: object properties: userId: @@ -3657,44 +4507,41 @@ components: description: Human-readable name for a Private Key. encryptedBundle: type: string - description: >- - Bundle containing a raw private key encrypted to the enclave's + description: Bundle containing a raw private key encrypted to the enclave's target public key. curve: - $ref: '#/components/schemas/Curve' + "$ref": "#/components/schemas/Curve" addressFormats: type: array - description: >- - Cryptocurrency-specific formats for a derived address (e.g., + description: Cryptocurrency-specific formats for a derived address (e.g., Ethereum). items: - $ref: '#/components/schemas/AddressFormat' + "$ref": "#/components/schemas/AddressFormat" ImportPrivateKeyRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_IMPORT_PRIVATE_KEY + - ACTIVITY_TYPE_IMPORT_PRIVATE_KEY timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/ImportPrivateKeyIntent' + "$ref": "#/components/schemas/ImportPrivateKeyIntent" ImportPrivateKeyResult: required: - - addresses - - privateKeyId + - addresses + - privateKeyId type: object properties: privateKeyId: @@ -3704,13 +4551,13 @@ components: type: array description: A list of addresses. items: - $ref: '#/components/schemas/activity.v1.Address' + "$ref": "#/components/schemas/activity.v1.Address" ImportWalletIntent: required: - - accounts - - encryptedBundle - - userId - - walletName + - accounts + - encryptedBundle + - userId + - walletName type: object properties: userId: @@ -3721,40 +4568,38 @@ components: description: Human-readable name for a Wallet. encryptedBundle: type: string - description: >- - Bundle containing a wallet mnemonic encrypted to the enclave's + description: Bundle containing a wallet mnemonic encrypted to the enclave's target public key. accounts: type: array description: A list of wallet Accounts. items: - $ref: '#/components/schemas/WalletAccountParams' + "$ref": "#/components/schemas/WalletAccountParams" ImportWalletRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_IMPORT_WALLET + - ACTIVITY_TYPE_IMPORT_WALLET timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/ImportWalletIntent' + "$ref": "#/components/schemas/ImportWalletIntent" ImportWalletResult: required: - - addresses - - walletId + - addresses + - walletId type: object properties: walletId: @@ -3767,7 +4612,7 @@ components: type: string InitImportPrivateKeyIntent: required: - - userId + - userId type: object properties: userId: @@ -3775,39 +4620,37 @@ components: description: The ID of the User importing a Private Key. InitImportPrivateKeyRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_INIT_IMPORT_PRIVATE_KEY + - ACTIVITY_TYPE_INIT_IMPORT_PRIVATE_KEY timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/InitImportPrivateKeyIntent' + "$ref": "#/components/schemas/InitImportPrivateKeyIntent" InitImportPrivateKeyResult: required: - - importBundle + - importBundle type: object properties: importBundle: type: string - description: >- - Import bundle containing a public key and signature to use for - importing client data. + description: Import bundle containing a public key and signature to use + for importing client data. InitImportWalletIntent: required: - - userId + - userId type: object properties: userId: @@ -3815,40 +4658,81 @@ components: description: The ID of the User importing a Wallet. InitImportWalletRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_INIT_IMPORT_WALLET + - ACTIVITY_TYPE_INIT_IMPORT_WALLET timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/InitImportWalletIntent' + "$ref": "#/components/schemas/InitImportWalletIntent" InitImportWalletResult: required: - - importBundle + - importBundle type: object properties: importBundle: type: string - description: >- - Import bundle containing a public key and signature to use for - importing client data. + description: Import bundle containing a public key and signature to use + for importing client data. + InitOtpAuthIntent: + required: + - contact + - otpType + type: object + properties: + otpType: + type: string + description: Enum to specifiy whether to send OTP via SMS or email + contact: + type: string + description: Email or phone number to send the OTP code to + emailCustomization: + "$ref": "#/components/schemas/EmailCustomizationParams" + InitOtpAuthRequest: + required: + - organizationId + - parameters + - timestampMs + - type + type: object + properties: + type: + type: string + enum: + - ACTIVITY_TYPE_INIT_OTP_AUTH + timestampMs: + type: string + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. + organizationId: + type: string + description: Unique identifier for a given Organization. + parameters: + "$ref": "#/components/schemas/InitOtpAuthIntent" + InitOtpAuthResult: + required: + - otpId + type: object + properties: + otpId: + type: string + description: Unique identifier for an OTP authentication InitUserEmailRecoveryIntent: required: - - email - - targetPublicKey + - email + - targetPublicKey type: object properties: email: @@ -3856,42 +4740,39 @@ components: description: Email of the user starting recovery targetPublicKey: type: string - description: >- - Client-side public key generated by the user, to which the recovery - bundle will be encrypted. + description: Client-side public key generated by the user, to which the + recovery bundle will be encrypted. expirationSeconds: type: string - description: >- - Expiration window (in seconds) indicating how long the recovery - credential is valid. If not provided, a default of 15 minutes will - be used. + description: Expiration window (in seconds) indicating how long the recovery + credential is valid. If not provided, a default of 15 minutes will be + used. emailCustomization: - $ref: '#/components/schemas/EmailCustomizationParams' + "$ref": "#/components/schemas/EmailCustomizationParams" InitUserEmailRecoveryRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_INIT_USER_EMAIL_RECOVERY + - ACTIVITY_TYPE_INIT_USER_EMAIL_RECOVERY timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/InitUserEmailRecoveryIntent' + "$ref": "#/components/schemas/InitUserEmailRecoveryIntent" InitUserEmailRecoveryResult: required: - - userId + - userId type: object properties: userId: @@ -3901,138 +4782,170 @@ components: type: object properties: createOrganizationIntent: - $ref: '#/components/schemas/CreateOrganizationIntent' + "$ref": "#/components/schemas/CreateOrganizationIntent" createAuthenticatorsIntent: - $ref: '#/components/schemas/CreateAuthenticatorsIntent' + "$ref": "#/components/schemas/CreateAuthenticatorsIntent" createUsersIntent: - $ref: '#/components/schemas/CreateUsersIntent' + "$ref": "#/components/schemas/CreateUsersIntent" createPrivateKeysIntent: - $ref: '#/components/schemas/CreatePrivateKeysIntent' + "$ref": "#/components/schemas/CreatePrivateKeysIntent" signRawPayloadIntent: - $ref: '#/components/schemas/SignRawPayloadIntent' + "$ref": "#/components/schemas/SignRawPayloadIntent" createInvitationsIntent: - $ref: '#/components/schemas/CreateInvitationsIntent' + "$ref": "#/components/schemas/CreateInvitationsIntent" acceptInvitationIntent: - $ref: '#/components/schemas/AcceptInvitationIntent' + "$ref": "#/components/schemas/AcceptInvitationIntent" createPolicyIntent: - $ref: '#/components/schemas/CreatePolicyIntent' + "$ref": "#/components/schemas/CreatePolicyIntent" disablePrivateKeyIntent: - $ref: '#/components/schemas/DisablePrivateKeyIntent' + "$ref": "#/components/schemas/DisablePrivateKeyIntent" deleteUsersIntent: - $ref: '#/components/schemas/DeleteUsersIntent' + "$ref": "#/components/schemas/DeleteUsersIntent" deleteAuthenticatorsIntent: - $ref: '#/components/schemas/DeleteAuthenticatorsIntent' + "$ref": "#/components/schemas/DeleteAuthenticatorsIntent" deleteInvitationIntent: - $ref: '#/components/schemas/DeleteInvitationIntent' + "$ref": "#/components/schemas/DeleteInvitationIntent" deleteOrganizationIntent: - $ref: '#/components/schemas/DeleteOrganizationIntent' + "$ref": "#/components/schemas/DeleteOrganizationIntent" deletePolicyIntent: - $ref: '#/components/schemas/DeletePolicyIntent' + "$ref": "#/components/schemas/DeletePolicyIntent" createUserTagIntent: - $ref: '#/components/schemas/CreateUserTagIntent' + "$ref": "#/components/schemas/CreateUserTagIntent" deleteUserTagsIntent: - $ref: '#/components/schemas/DeleteUserTagsIntent' + "$ref": "#/components/schemas/DeleteUserTagsIntent" signTransactionIntent: - $ref: '#/components/schemas/SignTransactionIntent' + "$ref": "#/components/schemas/SignTransactionIntent" createApiKeysIntent: - $ref: '#/components/schemas/CreateApiKeysIntent' + "$ref": "#/components/schemas/CreateApiKeysIntent" deleteApiKeysIntent: - $ref: '#/components/schemas/DeleteApiKeysIntent' + "$ref": "#/components/schemas/DeleteApiKeysIntent" approveActivityIntent: - $ref: '#/components/schemas/ApproveActivityIntent' + "$ref": "#/components/schemas/ApproveActivityIntent" rejectActivityIntent: - $ref: '#/components/schemas/RejectActivityIntent' + "$ref": "#/components/schemas/RejectActivityIntent" createPrivateKeyTagIntent: - $ref: '#/components/schemas/CreatePrivateKeyTagIntent' + "$ref": "#/components/schemas/CreatePrivateKeyTagIntent" deletePrivateKeyTagsIntent: - $ref: '#/components/schemas/DeletePrivateKeyTagsIntent' + "$ref": "#/components/schemas/DeletePrivateKeyTagsIntent" createPolicyIntentV2: - $ref: '#/components/schemas/CreatePolicyIntentV2' + "$ref": "#/components/schemas/CreatePolicyIntentV2" setPaymentMethodIntent: - $ref: '#/components/schemas/SetPaymentMethodIntent' + "$ref": "#/components/schemas/SetPaymentMethodIntent" activateBillingTierIntent: - $ref: '#/components/schemas/ActivateBillingTierIntent' + "$ref": "#/components/schemas/ActivateBillingTierIntent" deletePaymentMethodIntent: - $ref: '#/components/schemas/DeletePaymentMethodIntent' + "$ref": "#/components/schemas/DeletePaymentMethodIntent" createPolicyIntentV3: - $ref: '#/components/schemas/CreatePolicyIntentV3' + "$ref": "#/components/schemas/CreatePolicyIntentV3" createApiOnlyUsersIntent: - $ref: '#/components/schemas/CreateApiOnlyUsersIntent' + "$ref": "#/components/schemas/CreateApiOnlyUsersIntent" updateRootQuorumIntent: - $ref: '#/components/schemas/UpdateRootQuorumIntent' + "$ref": "#/components/schemas/UpdateRootQuorumIntent" updateUserTagIntent: - $ref: '#/components/schemas/UpdateUserTagIntent' + "$ref": "#/components/schemas/UpdateUserTagIntent" updatePrivateKeyTagIntent: - $ref: '#/components/schemas/UpdatePrivateKeyTagIntent' + "$ref": "#/components/schemas/UpdatePrivateKeyTagIntent" createAuthenticatorsIntentV2: - $ref: '#/components/schemas/CreateAuthenticatorsIntentV2' + "$ref": "#/components/schemas/CreateAuthenticatorsIntentV2" acceptInvitationIntentV2: - $ref: '#/components/schemas/AcceptInvitationIntentV2' + "$ref": "#/components/schemas/AcceptInvitationIntentV2" createOrganizationIntentV2: - $ref: '#/components/schemas/CreateOrganizationIntentV2' + "$ref": "#/components/schemas/CreateOrganizationIntentV2" createUsersIntentV2: - $ref: '#/components/schemas/CreateUsersIntentV2' + "$ref": "#/components/schemas/CreateUsersIntentV2" createSubOrganizationIntent: - $ref: '#/components/schemas/CreateSubOrganizationIntent' + "$ref": "#/components/schemas/CreateSubOrganizationIntent" createSubOrganizationIntentV2: - $ref: '#/components/schemas/CreateSubOrganizationIntentV2' + "$ref": "#/components/schemas/CreateSubOrganizationIntentV2" updateAllowedOriginsIntent: - $ref: '#/components/schemas/UpdateAllowedOriginsIntent' + "$ref": "#/components/schemas/UpdateAllowedOriginsIntent" createPrivateKeysIntentV2: - $ref: '#/components/schemas/CreatePrivateKeysIntentV2' + "$ref": "#/components/schemas/CreatePrivateKeysIntentV2" updateUserIntent: - $ref: '#/components/schemas/UpdateUserIntent' + "$ref": "#/components/schemas/UpdateUserIntent" updatePolicyIntent: - $ref: '#/components/schemas/UpdatePolicyIntent' + "$ref": "#/components/schemas/UpdatePolicyIntent" setPaymentMethodIntentV2: - $ref: '#/components/schemas/SetPaymentMethodIntentV2' + "$ref": "#/components/schemas/SetPaymentMethodIntentV2" createSubOrganizationIntentV3: - $ref: '#/components/schemas/CreateSubOrganizationIntentV3' + "$ref": "#/components/schemas/CreateSubOrganizationIntentV3" createWalletIntent: - $ref: '#/components/schemas/CreateWalletIntent' + "$ref": "#/components/schemas/CreateWalletIntent" createWalletAccountsIntent: - $ref: '#/components/schemas/CreateWalletAccountsIntent' + "$ref": "#/components/schemas/CreateWalletAccountsIntent" initUserEmailRecoveryIntent: - $ref: '#/components/schemas/InitUserEmailRecoveryIntent' + "$ref": "#/components/schemas/InitUserEmailRecoveryIntent" recoverUserIntent: - $ref: '#/components/schemas/RecoverUserIntent' + "$ref": "#/components/schemas/RecoverUserIntent" setOrganizationFeatureIntent: - $ref: '#/components/schemas/SetOrganizationFeatureIntent' + "$ref": "#/components/schemas/SetOrganizationFeatureIntent" removeOrganizationFeatureIntent: - $ref: '#/components/schemas/RemoveOrganizationFeatureIntent' + "$ref": "#/components/schemas/RemoveOrganizationFeatureIntent" signRawPayloadIntentV2: - $ref: '#/components/schemas/SignRawPayloadIntentV2' + "$ref": "#/components/schemas/SignRawPayloadIntentV2" signTransactionIntentV2: - $ref: '#/components/schemas/SignTransactionIntentV2' + "$ref": "#/components/schemas/SignTransactionIntentV2" exportPrivateKeyIntent: - $ref: '#/components/schemas/ExportPrivateKeyIntent' + "$ref": "#/components/schemas/ExportPrivateKeyIntent" exportWalletIntent: - $ref: '#/components/schemas/ExportWalletIntent' + "$ref": "#/components/schemas/ExportWalletIntent" createSubOrganizationIntentV4: - $ref: '#/components/schemas/CreateSubOrganizationIntentV4' + "$ref": "#/components/schemas/CreateSubOrganizationIntentV4" emailAuthIntent: - $ref: '#/components/schemas/EmailAuthIntent' + "$ref": "#/components/schemas/EmailAuthIntent" exportWalletAccountIntent: - $ref: '#/components/schemas/ExportWalletAccountIntent' + "$ref": "#/components/schemas/ExportWalletAccountIntent" initImportWalletIntent: - $ref: '#/components/schemas/InitImportWalletIntent' + "$ref": "#/components/schemas/InitImportWalletIntent" importWalletIntent: - $ref: '#/components/schemas/ImportWalletIntent' + "$ref": "#/components/schemas/ImportWalletIntent" initImportPrivateKeyIntent: - $ref: '#/components/schemas/InitImportPrivateKeyIntent' + "$ref": "#/components/schemas/InitImportPrivateKeyIntent" importPrivateKeyIntent: - $ref: '#/components/schemas/ImportPrivateKeyIntent' + "$ref": "#/components/schemas/ImportPrivateKeyIntent" createPoliciesIntent: - $ref: '#/components/schemas/CreatePoliciesIntent' + "$ref": "#/components/schemas/CreatePoliciesIntent" signRawPayloadsIntent: - $ref: '#/components/schemas/SignRawPayloadsIntent' + "$ref": "#/components/schemas/SignRawPayloadsIntent" + createReadOnlySessionIntent: + "$ref": "#/components/schemas/CreateReadOnlySessionIntent" + createOauthProvidersIntent: + "$ref": "#/components/schemas/CreateOauthProvidersIntent" + deleteOauthProvidersIntent: + "$ref": "#/components/schemas/DeleteOauthProvidersIntent" + createSubOrganizationIntentV5: + "$ref": "#/components/schemas/CreateSubOrganizationIntentV5" + oauthIntent: + "$ref": "#/components/schemas/OauthIntent" + createApiKeysIntentV2: + "$ref": "#/components/schemas/CreateApiKeysIntentV2" + createReadWriteSessionIntent: + "$ref": "#/components/schemas/CreateReadWriteSessionIntent" + emailAuthIntentV2: + "$ref": "#/components/schemas/EmailAuthIntentV2" + createSubOrganizationIntentV6: + "$ref": "#/components/schemas/CreateSubOrganizationIntentV6" + deletePrivateKeysIntent: + "$ref": "#/components/schemas/DeletePrivateKeysIntent" + deleteWalletsIntent: + "$ref": "#/components/schemas/DeleteWalletsIntent" + createReadWriteSessionIntentV2: + "$ref": "#/components/schemas/CreateReadWriteSessionIntentV2" + deleteSubOrganizationIntent: + "$ref": "#/components/schemas/DeleteSubOrganizationIntent" + initOtpAuthIntent: + "$ref": "#/components/schemas/InitOtpAuthIntent" + otpAuthIntent: + "$ref": "#/components/schemas/OtpAuthIntent" + createSubOrganizationIntentV7: + "$ref": "#/components/schemas/CreateSubOrganizationIntentV7" InvitationParams: required: - - accessType - - receiverUserEmail - - receiverUserName - - receiverUserTags - - senderUserId + - accessType + - receiverUserEmail + - receiverUserName + - receiverUserTags + - senderUserId type: object properties: receiverUserName: @@ -4047,13 +4960,13 @@ components: items: type: string accessType: - $ref: '#/components/schemas/AccessType' + "$ref": "#/components/schemas/AccessType" senderUserId: type: string description: Unique identifier for the Sender of an Invitation. ListPrivateKeyTagsRequest: required: - - organizationId + - organizationId type: object properties: organizationId: @@ -4061,17 +4974,17 @@ components: description: Unique identifier for a given Organization. ListPrivateKeyTagsResponse: required: - - privateKeyTags + - privateKeyTags type: object properties: privateKeyTags: type: array description: A list of Private Key Tags items: - $ref: '#/components/schemas/v1.Tag' + "$ref": "#/components/schemas/v1.Tag" ListUserTagsRequest: required: - - organizationId + - organizationId type: object properties: organizationId: @@ -4079,77 +4992,239 @@ components: description: Unique identifier for a given Organization. ListUserTagsResponse: required: - - userTags + - userTags type: object properties: userTags: type: array description: A list of User Tags items: - $ref: '#/components/schemas/v1.Tag' + "$ref": "#/components/schemas/v1.Tag" MnemonicLanguage: type: string enum: - - MNEMONIC_LANGUAGE_ENGLISH - - MNEMONIC_LANGUAGE_SIMPLIFIED_CHINESE - - MNEMONIC_LANGUAGE_TRADITIONAL_CHINESE - - MNEMONIC_LANGUAGE_CZECH - - MNEMONIC_LANGUAGE_FRENCH - - MNEMONIC_LANGUAGE_ITALIAN - - MNEMONIC_LANGUAGE_JAPANESE - - MNEMONIC_LANGUAGE_KOREAN - - MNEMONIC_LANGUAGE_SPANISH + - MNEMONIC_LANGUAGE_ENGLISH + - MNEMONIC_LANGUAGE_SIMPLIFIED_CHINESE + - MNEMONIC_LANGUAGE_TRADITIONAL_CHINESE + - MNEMONIC_LANGUAGE_CZECH + - MNEMONIC_LANGUAGE_FRENCH + - MNEMONIC_LANGUAGE_ITALIAN + - MNEMONIC_LANGUAGE_JAPANESE + - MNEMONIC_LANGUAGE_KOREAN + - MNEMONIC_LANGUAGE_SPANISH + OauthIntent: + required: + - oidcToken + - targetPublicKey + type: object + properties: + oidcToken: + type: string + description: Base64 encoded OIDC token + targetPublicKey: + type: string + description: Client-side public key generated by the user, to which the + oauth bundle (credentials) will be encrypted. + apiKeyName: + type: string + description: Optional human-readable name for an API Key. If none provided, + default to Oauth - + expirationSeconds: + type: string + description: Expiration window (in seconds) indicating how long the API + key is valid. If not provided, a default of 15 minutes will be used. + OauthProvider: + required: + - audience + - createdAt + - issuer + - providerId + - providerName + - subject + - updatedAt + type: object + properties: + providerId: + type: string + description: Unique identifier for an OAuth Provider + providerName: + type: string + description: Human-readable name to identify a Provider. + issuer: + type: string + description: The issuer of the token, typically a URL indicating the authentication + server, e.g https://accounts.google.com + audience: + type: string + description: Expected audience ('aud' attribute of the signed token) which + represents the app ID + subject: + type: string + description: Expected subject ('sub' attribute of the signed token) which + represents the user ID + createdAt: + "$ref": "#/components/schemas/external.data.v1.Timestamp" + updatedAt: + "$ref": "#/components/schemas/external.data.v1.Timestamp" + OauthProviderParams: + required: + - oidcToken + - providerName + type: object + properties: + providerName: + type: string + description: Human-readable name to identify a Provider. + oidcToken: + type: string + description: Base64 encoded OIDC token + OauthRequest: + required: + - organizationId + - parameters + - timestampMs + - type + type: object + properties: + type: + type: string + enum: + - ACTIVITY_TYPE_OAUTH + timestampMs: + type: string + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. + organizationId: + type: string + description: Unique identifier for a given Organization. + parameters: + "$ref": "#/components/schemas/OauthIntent" + OauthResult: + required: + - apiKeyId + - credentialBundle + - userId + type: object + properties: + userId: + type: string + description: Unique identifier for the authenticating User. + apiKeyId: + type: string + description: Unique identifier for the created API key. + credentialBundle: + type: string + description: HPKE encrypted credential bundle Operator: type: string enum: - - OPERATOR_EQUAL - - OPERATOR_MORE_THAN - - OPERATOR_MORE_THAN_OR_EQUAL - - OPERATOR_LESS_THAN - - OPERATOR_LESS_THAN_OR_EQUAL - - OPERATOR_CONTAINS - - OPERATOR_NOT_EQUAL - - OPERATOR_IN - - OPERATOR_NOT_IN - - OPERATOR_CONTAINS_ONE - - OPERATOR_CONTAINS_ALL + - OPERATOR_EQUAL + - OPERATOR_MORE_THAN + - OPERATOR_MORE_THAN_OR_EQUAL + - OPERATOR_LESS_THAN + - OPERATOR_LESS_THAN_OR_EQUAL + - OPERATOR_CONTAINS + - OPERATOR_NOT_EQUAL + - OPERATOR_IN + - OPERATOR_NOT_IN + - OPERATOR_CONTAINS_ONE + - OPERATOR_CONTAINS_ALL + OtpAuthIntent: + required: + - otpCode + - otpId + type: object + properties: + otpId: + type: string + description: ID representing the result of an init OTP activity. + otpCode: + type: string + description: 6 digit OTP code sent out to a user's contact (email or SMS) + targetPublicKey: + type: string + description: Client-side public key generated by the user, to which the + OTP bundle (credentials) will be encrypted. + apiKeyName: + type: string + description: Optional human-readable name for an API Key. If none provided, + default to OTP Auth - + expirationSeconds: + type: string + description: Expiration window (in seconds) indicating how long the API + key is valid. If not provided, a default of 15 minutes will be used. + invalidateExisting: + type: boolean + description: Invalidate all other previously generated OTP Auth API keys + OtpAuthRequest: + required: + - organizationId + - parameters + - timestampMs + - type + type: object + properties: + type: + type: string + enum: + - ACTIVITY_TYPE_OTP_AUTH + timestampMs: + type: string + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. + organizationId: + type: string + description: Unique identifier for a given Organization. + parameters: + "$ref": "#/components/schemas/OtpAuthIntent" + OtpAuthResult: + required: + - userId + type: object + properties: + userId: + type: string + description: Unique identifier for the authenticating User. + apiKeyId: + type: string + description: Unique identifier for the created API key. + credentialBundle: + type: string + description: HPKE encrypted credential bundle Pagination: type: object properties: limit: type: string - description: >- - A limit of the number of object to be returned, between 1 and 100. - Defaults to 10. + description: A limit of the number of object to be returned, between 1 and + 100. Defaults to 10. before: type: string - description: >- - A pagination cursor. This is an object ID that enables you to fetch - all objects before this ID. + description: A pagination cursor. This is an object ID that enables you + to fetch all objects before this ID. after: type: string - description: >- - A pagination cursor. This is an object ID that enables you to fetch - all objects after this ID. + description: A pagination cursor. This is an object ID that enables you + to fetch all objects after this ID. PathFormat: type: string enum: - - PATH_FORMAT_BIP32 + - PATH_FORMAT_BIP32 PayloadEncoding: type: string enum: - - PAYLOAD_ENCODING_HEXADECIMAL - - PAYLOAD_ENCODING_TEXT_UTF8 + - PAYLOAD_ENCODING_HEXADECIMAL + - PAYLOAD_ENCODING_TEXT_UTF8 Policy: required: - - condition - - consensus - - createdAt - - effect - - notes - - policyId - - policyName - - updatedAt + - condition + - consensus + - createdAt + - effect + - notes + - policyId + - policyName + - updatedAt type: object properties: policyId: @@ -4159,15 +5234,14 @@ components: type: string description: Human-readable name for a Policy. effect: - $ref: '#/components/schemas/Effect' + "$ref": "#/components/schemas/Effect" createdAt: - $ref: '#/components/schemas/external.data.v1.Timestamp' + "$ref": "#/components/schemas/external.data.v1.Timestamp" updatedAt: - $ref: '#/components/schemas/external.data.v1.Timestamp' + "$ref": "#/components/schemas/external.data.v1.Timestamp" notes: type: string - description: >- - Human-readable notes added by a User to describe a particular + description: Human-readable notes added by a User to describe a particular policy. consensus: type: string @@ -4177,16 +5251,16 @@ components: description: A condition expression that evalutes to true or false. PrivateKey: required: - - addresses - - createdAt - - curve - - exported - - imported - - privateKeyId - - privateKeyName - - privateKeyTags - - publicKey - - updatedAt + - addresses + - createdAt + - curve + - exported + - imported + - privateKeyId + - privateKeyName + - privateKeyTags + - publicKey + - updatedAt type: object properties: privateKeyId: @@ -4194,28 +5268,27 @@ components: description: Unique identifier for a given Private Key. publicKey: type: string - description: >- - The public component of a cryptographic key pair used to sign + description: The public component of a cryptographic key pair used to sign messages and transactions. privateKeyName: type: string description: Human-readable name for a Private Key. curve: - $ref: '#/components/schemas/Curve' + "$ref": "#/components/schemas/Curve" addresses: type: array description: Derived cryptocurrency addresses for a given Private Key. items: - $ref: '#/components/schemas/data.v1.Address' + "$ref": "#/components/schemas/data.v1.Address" privateKeyTags: type: array description: A list of Private Key Tag IDs. items: type: string createdAt: - $ref: '#/components/schemas/external.data.v1.Timestamp' + "$ref": "#/components/schemas/external.data.v1.Timestamp" updatedAt: - $ref: '#/components/schemas/external.data.v1.Timestamp' + "$ref": "#/components/schemas/external.data.v1.Timestamp" exported: type: boolean description: True when a given Private Key is exported, false otherwise. @@ -4224,17 +5297,17 @@ components: description: True when a given Private Key is imported, false otherwise. PrivateKeyParams: required: - - addressFormats - - curve - - privateKeyName - - privateKeyTags + - addressFormats + - curve + - privateKeyName + - privateKeyTags type: object properties: privateKeyName: type: string description: Human-readable name for a Private Key. curve: - $ref: '#/components/schemas/Curve' + "$ref": "#/components/schemas/Curve" privateKeyTags: type: array description: A list of Private Key Tag IDs. @@ -4242,11 +5315,10 @@ components: type: string addressFormats: type: array - description: >- - Cryptocurrency-specific formats for a derived address (e.g., + description: Cryptocurrency-specific formats for a derived address (e.g., Ethereum). items: - $ref: '#/components/schemas/AddressFormat' + "$ref": "#/components/schemas/AddressFormat" PrivateKeyResult: type: object properties: @@ -4255,14 +5327,14 @@ components: addresses: type: array items: - $ref: '#/components/schemas/activity.v1.Address' + "$ref": "#/components/schemas/activity.v1.Address" PublicKeyCredentialWithAttestation: required: - - clientExtensionResults - - id - - rawId - - response - - type + - clientExtensionResults + - id + - rawId + - response + - type type: object properties: id: @@ -4270,55 +5342,54 @@ components: type: type: string enum: - - public-key + - public-key rawId: type: string authenticatorAttachment: type: string nullable: true enum: - - cross-platform - - platform + - cross-platform + - platform response: - $ref: '#/components/schemas/AuthenticatorAttestationResponse' + "$ref": "#/components/schemas/AuthenticatorAttestationResponse" clientExtensionResults: - $ref: '#/components/schemas/SimpleClientExtensionResults' + "$ref": "#/components/schemas/SimpleClientExtensionResults" RecoverUserIntent: required: - - authenticator - - userId + - authenticator + - userId type: object properties: authenticator: - $ref: '#/components/schemas/AuthenticatorParamsV2' + "$ref": "#/components/schemas/AuthenticatorParamsV2" userId: type: string description: Unique identifier for the user performing recovery. RecoverUserRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_RECOVER_USER + - ACTIVITY_TYPE_RECOVER_USER timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/RecoverUserIntent' + "$ref": "#/components/schemas/RecoverUserIntent" RecoverUserResult: required: - - authenticatorId + - authenticatorId type: object properties: authenticatorId: @@ -4328,7 +5399,7 @@ components: type: string RejectActivityIntent: required: - - fingerprint + - fingerprint type: object properties: fingerprint: @@ -4336,175 +5407,283 @@ components: description: An artifact verifying a User's action. RejectActivityRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_REJECT_ACTIVITY + - ACTIVITY_TYPE_REJECT_ACTIVITY timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/RejectActivityIntent' + "$ref": "#/components/schemas/RejectActivityIntent" RemoveOrganizationFeatureIntent: required: - - name + - name type: object properties: name: - $ref: '#/components/schemas/FeatureName' + "$ref": "#/components/schemas/FeatureName" RemoveOrganizationFeatureRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_REMOVE_ORGANIZATION_FEATURE + - ACTIVITY_TYPE_REMOVE_ORGANIZATION_FEATURE timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/RemoveOrganizationFeatureIntent' + "$ref": "#/components/schemas/RemoveOrganizationFeatureIntent" RemoveOrganizationFeatureResult: required: - - features + - features type: object properties: features: type: array description: Resulting list of organization features. items: - $ref: '#/components/schemas/Feature' + "$ref": "#/components/schemas/Feature" Result: type: object properties: createOrganizationResult: - $ref: '#/components/schemas/CreateOrganizationResult' + "$ref": "#/components/schemas/CreateOrganizationResult" createAuthenticatorsResult: - $ref: '#/components/schemas/CreateAuthenticatorsResult' + "$ref": "#/components/schemas/CreateAuthenticatorsResult" createUsersResult: - $ref: '#/components/schemas/CreateUsersResult' + "$ref": "#/components/schemas/CreateUsersResult" createPrivateKeysResult: - $ref: '#/components/schemas/CreatePrivateKeysResult' + "$ref": "#/components/schemas/CreatePrivateKeysResult" createInvitationsResult: - $ref: '#/components/schemas/CreateInvitationsResult' + "$ref": "#/components/schemas/CreateInvitationsResult" acceptInvitationResult: - $ref: '#/components/schemas/AcceptInvitationResult' + "$ref": "#/components/schemas/AcceptInvitationResult" signRawPayloadResult: - $ref: '#/components/schemas/SignRawPayloadResult' + "$ref": "#/components/schemas/SignRawPayloadResult" createPolicyResult: - $ref: '#/components/schemas/CreatePolicyResult' + "$ref": "#/components/schemas/CreatePolicyResult" disablePrivateKeyResult: - $ref: '#/components/schemas/DisablePrivateKeyResult' + "$ref": "#/components/schemas/DisablePrivateKeyResult" deleteUsersResult: - $ref: '#/components/schemas/DeleteUsersResult' + "$ref": "#/components/schemas/DeleteUsersResult" deleteAuthenticatorsResult: - $ref: '#/components/schemas/DeleteAuthenticatorsResult' + "$ref": "#/components/schemas/DeleteAuthenticatorsResult" deleteInvitationResult: - $ref: '#/components/schemas/DeleteInvitationResult' + "$ref": "#/components/schemas/DeleteInvitationResult" deleteOrganizationResult: - $ref: '#/components/schemas/DeleteOrganizationResult' + "$ref": "#/components/schemas/DeleteOrganizationResult" deletePolicyResult: - $ref: '#/components/schemas/DeletePolicyResult' + "$ref": "#/components/schemas/DeletePolicyResult" createUserTagResult: - $ref: '#/components/schemas/CreateUserTagResult' + "$ref": "#/components/schemas/CreateUserTagResult" deleteUserTagsResult: - $ref: '#/components/schemas/DeleteUserTagsResult' + "$ref": "#/components/schemas/DeleteUserTagsResult" signTransactionResult: - $ref: '#/components/schemas/SignTransactionResult' + "$ref": "#/components/schemas/SignTransactionResult" deleteApiKeysResult: - $ref: '#/components/schemas/DeleteApiKeysResult' + "$ref": "#/components/schemas/DeleteApiKeysResult" createApiKeysResult: - $ref: '#/components/schemas/CreateApiKeysResult' + "$ref": "#/components/schemas/CreateApiKeysResult" createPrivateKeyTagResult: - $ref: '#/components/schemas/CreatePrivateKeyTagResult' + "$ref": "#/components/schemas/CreatePrivateKeyTagResult" deletePrivateKeyTagsResult: - $ref: '#/components/schemas/DeletePrivateKeyTagsResult' + "$ref": "#/components/schemas/DeletePrivateKeyTagsResult" setPaymentMethodResult: - $ref: '#/components/schemas/SetPaymentMethodResult' + "$ref": "#/components/schemas/SetPaymentMethodResult" activateBillingTierResult: - $ref: '#/components/schemas/ActivateBillingTierResult' + "$ref": "#/components/schemas/ActivateBillingTierResult" deletePaymentMethodResult: - $ref: '#/components/schemas/DeletePaymentMethodResult' + "$ref": "#/components/schemas/DeletePaymentMethodResult" createApiOnlyUsersResult: - $ref: '#/components/schemas/CreateApiOnlyUsersResult' + "$ref": "#/components/schemas/CreateApiOnlyUsersResult" updateRootQuorumResult: - $ref: '#/components/schemas/UpdateRootQuorumResult' + "$ref": "#/components/schemas/UpdateRootQuorumResult" updateUserTagResult: - $ref: '#/components/schemas/UpdateUserTagResult' + "$ref": "#/components/schemas/UpdateUserTagResult" updatePrivateKeyTagResult: - $ref: '#/components/schemas/UpdatePrivateKeyTagResult' + "$ref": "#/components/schemas/UpdatePrivateKeyTagResult" createSubOrganizationResult: - $ref: '#/components/schemas/CreateSubOrganizationResult' + "$ref": "#/components/schemas/CreateSubOrganizationResult" updateAllowedOriginsResult: - $ref: '#/components/schemas/UpdateAllowedOriginsResult' + "$ref": "#/components/schemas/UpdateAllowedOriginsResult" createPrivateKeysResultV2: - $ref: '#/components/schemas/CreatePrivateKeysResultV2' + "$ref": "#/components/schemas/CreatePrivateKeysResultV2" updateUserResult: - $ref: '#/components/schemas/UpdateUserResult' + "$ref": "#/components/schemas/UpdateUserResult" updatePolicyResult: - $ref: '#/components/schemas/UpdatePolicyResult' + "$ref": "#/components/schemas/UpdatePolicyResult" createSubOrganizationResultV3: - $ref: '#/components/schemas/CreateSubOrganizationResultV3' + "$ref": "#/components/schemas/CreateSubOrganizationResultV3" createWalletResult: - $ref: '#/components/schemas/CreateWalletResult' + "$ref": "#/components/schemas/CreateWalletResult" createWalletAccountsResult: - $ref: '#/components/schemas/CreateWalletAccountsResult' + "$ref": "#/components/schemas/CreateWalletAccountsResult" initUserEmailRecoveryResult: - $ref: '#/components/schemas/InitUserEmailRecoveryResult' + "$ref": "#/components/schemas/InitUserEmailRecoveryResult" recoverUserResult: - $ref: '#/components/schemas/RecoverUserResult' + "$ref": "#/components/schemas/RecoverUserResult" setOrganizationFeatureResult: - $ref: '#/components/schemas/SetOrganizationFeatureResult' + "$ref": "#/components/schemas/SetOrganizationFeatureResult" removeOrganizationFeatureResult: - $ref: '#/components/schemas/RemoveOrganizationFeatureResult' + "$ref": "#/components/schemas/RemoveOrganizationFeatureResult" exportPrivateKeyResult: - $ref: '#/components/schemas/ExportPrivateKeyResult' + "$ref": "#/components/schemas/ExportPrivateKeyResult" exportWalletResult: - $ref: '#/components/schemas/ExportWalletResult' + "$ref": "#/components/schemas/ExportWalletResult" createSubOrganizationResultV4: - $ref: '#/components/schemas/CreateSubOrganizationResultV4' + "$ref": "#/components/schemas/CreateSubOrganizationResultV4" emailAuthResult: - $ref: '#/components/schemas/EmailAuthResult' + "$ref": "#/components/schemas/EmailAuthResult" exportWalletAccountResult: - $ref: '#/components/schemas/ExportWalletAccountResult' + "$ref": "#/components/schemas/ExportWalletAccountResult" initImportWalletResult: - $ref: '#/components/schemas/InitImportWalletResult' + "$ref": "#/components/schemas/InitImportWalletResult" importWalletResult: - $ref: '#/components/schemas/ImportWalletResult' + "$ref": "#/components/schemas/ImportWalletResult" initImportPrivateKeyResult: - $ref: '#/components/schemas/InitImportPrivateKeyResult' + "$ref": "#/components/schemas/InitImportPrivateKeyResult" importPrivateKeyResult: - $ref: '#/components/schemas/ImportPrivateKeyResult' + "$ref": "#/components/schemas/ImportPrivateKeyResult" createPoliciesResult: - $ref: '#/components/schemas/CreatePoliciesResult' + "$ref": "#/components/schemas/CreatePoliciesResult" signRawPayloadsResult: - $ref: '#/components/schemas/SignRawPayloadsResult' + "$ref": "#/components/schemas/SignRawPayloadsResult" + createReadOnlySessionResult: + "$ref": "#/components/schemas/CreateReadOnlySessionResult" + createOauthProvidersResult: + "$ref": "#/components/schemas/CreateOauthProvidersResult" + deleteOauthProvidersResult: + "$ref": "#/components/schemas/DeleteOauthProvidersResult" + createSubOrganizationResultV5: + "$ref": "#/components/schemas/CreateSubOrganizationResultV5" + oauthResult: + "$ref": "#/components/schemas/OauthResult" + createReadWriteSessionResult: + "$ref": "#/components/schemas/CreateReadWriteSessionResult" + createSubOrganizationResultV6: + "$ref": "#/components/schemas/CreateSubOrganizationResultV6" + deletePrivateKeysResult: + "$ref": "#/components/schemas/DeletePrivateKeysResult" + deleteWalletsResult: + "$ref": "#/components/schemas/DeleteWalletsResult" + createReadWriteSessionResultV2: + "$ref": "#/components/schemas/CreateReadWriteSessionResultV2" + deleteSubOrganizationResult: + "$ref": "#/components/schemas/DeleteSubOrganizationResult" + initOtpAuthResult: + "$ref": "#/components/schemas/InitOtpAuthResult" + otpAuthResult: + "$ref": "#/components/schemas/OtpAuthResult" + createSubOrganizationResultV7: + "$ref": "#/components/schemas/CreateSubOrganizationResultV7" RootUserParams: required: - - apiKeys - - authenticators - - userName + - apiKeys + - authenticators + - userName + type: object + properties: + userName: + type: string + description: Human-readable name for a User. + userEmail: + type: string + description: The user's email address. + apiKeys: + type: array + description: A list of API Key parameters. + items: + "$ref": "#/components/schemas/ApiKeyParams" + authenticators: + type: array + description: A list of Authenticator parameters. + items: + "$ref": "#/components/schemas/AuthenticatorParamsV2" + RootUserParamsV2: + required: + - apiKeys + - authenticators + - oauthProviders + - userName + type: object + properties: + userName: + type: string + description: Human-readable name for a User. + userEmail: + type: string + description: The user's email address. + apiKeys: + type: array + description: A list of API Key parameters. + items: + "$ref": "#/components/schemas/ApiKeyParams" + authenticators: + type: array + description: A list of Authenticator parameters. + items: + "$ref": "#/components/schemas/AuthenticatorParamsV2" + oauthProviders: + type: array + description: A list of Oauth providers. + items: + "$ref": "#/components/schemas/OauthProviderParams" + RootUserParamsV3: + required: + - apiKeys + - authenticators + - oauthProviders + - userName + type: object + properties: + userName: + type: string + description: Human-readable name for a User. + userEmail: + type: string + description: The user's email address. + apiKeys: + type: array + description: A list of API Key parameters. + items: + "$ref": "#/components/schemas/ApiKeyParamsV2" + authenticators: + type: array + description: A list of Authenticator parameters. + items: + "$ref": "#/components/schemas/AuthenticatorParamsV2" + oauthProviders: + type: array + description: A list of Oauth providers. + items: + "$ref": "#/components/schemas/OauthProviderParams" + RootUserParamsV4: + required: + - apiKeys + - authenticators + - oauthProviders + - userName type: object properties: userName: @@ -4513,23 +5692,31 @@ components: userEmail: type: string description: The user's email address. + userPhoneNumber: + type: string + description: The user's phone number in E.164 format e.g. +13214567890 apiKeys: type: array description: A list of API Key parameters. items: - $ref: '#/components/schemas/ApiKeyParams' + "$ref": "#/components/schemas/ApiKeyParamsV2" authenticators: type: array description: A list of Authenticator parameters. items: - $ref: '#/components/schemas/AuthenticatorParamsV2' + "$ref": "#/components/schemas/AuthenticatorParamsV2" + oauthProviders: + type: array + description: A list of Oauth providers. + items: + "$ref": "#/components/schemas/OauthProviderParams" Selector: type: object properties: subject: type: string operator: - $ref: '#/components/schemas/Operator' + "$ref": "#/components/schemas/Operator" target: type: string SelectorV2: @@ -4538,64 +5725,62 @@ components: subject: type: string operator: - $ref: '#/components/schemas/Operator' + "$ref": "#/components/schemas/Operator" targets: type: array items: type: string SetOrganizationFeatureIntent: required: - - name - - value + - name + - value type: object properties: name: - $ref: '#/components/schemas/FeatureName' + "$ref": "#/components/schemas/FeatureName" value: type: string - description: >- - Optional value for the feature. Will override existing values if - feature is already set. + description: Optional value for the feature. Will override existing values + if feature is already set. SetOrganizationFeatureRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_SET_ORGANIZATION_FEATURE + - ACTIVITY_TYPE_SET_ORGANIZATION_FEATURE timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/SetOrganizationFeatureIntent' + "$ref": "#/components/schemas/SetOrganizationFeatureIntent" SetOrganizationFeatureResult: required: - - features + - features type: object properties: features: type: array description: Resulting list of organization features. items: - $ref: '#/components/schemas/Feature' + "$ref": "#/components/schemas/Feature" SetPaymentMethodIntent: required: - - cardHolderEmail - - cardHolderName - - cvv - - expiryMonth - - expiryYear - - number + - cardHolderEmail + - cardHolderName + - cvv + - expiryMonth + - expiryYear + - number type: object properties: number: @@ -4618,9 +5803,9 @@ components: description: The name associated with the credit card. SetPaymentMethodIntentV2: required: - - cardHolderEmail - - cardHolderName - - paymentMethodId + - cardHolderEmail + - cardHolderName + - paymentMethodId type: object properties: paymentMethodId: @@ -4634,9 +5819,9 @@ components: description: The name associated with the credit card. SetPaymentMethodResult: required: - - cardHolderEmail - - cardHolderName - - lastFour + - cardHolderEmail + - cardHolderName + - lastFour type: object properties: lastFour: @@ -4650,10 +5835,10 @@ components: description: The email address associated with the payment method. SignRawPayloadIntent: required: - - encoding - - hashFunction - - payload - - privateKeyId + - encoding + - hashFunction + - payload + - privateKeyId type: object properties: privateKeyId: @@ -4663,56 +5848,54 @@ components: type: string description: Raw unsigned payload to be signed. encoding: - $ref: '#/components/schemas/PayloadEncoding' + "$ref": "#/components/schemas/PayloadEncoding" hashFunction: - $ref: '#/components/schemas/HashFunction' + "$ref": "#/components/schemas/HashFunction" SignRawPayloadIntentV2: required: - - encoding - - hashFunction - - payload - - signWith + - encoding + - hashFunction + - payload + - signWith type: object properties: signWith: type: string - description: >- - A Wallet account address, Private Key address, or Private Key + description: A Wallet account address, Private Key address, or Private Key identifier. payload: type: string description: Raw unsigned payload to be signed. encoding: - $ref: '#/components/schemas/PayloadEncoding' + "$ref": "#/components/schemas/PayloadEncoding" hashFunction: - $ref: '#/components/schemas/HashFunction' + "$ref": "#/components/schemas/HashFunction" SignRawPayloadRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_SIGN_RAW_PAYLOAD_V2 + - ACTIVITY_TYPE_SIGN_RAW_PAYLOAD_V2 timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/SignRawPayloadIntentV2' + "$ref": "#/components/schemas/SignRawPayloadIntentV2" SignRawPayloadResult: required: - - r - - s - - v + - r + - s + - v type: object properties: r: @@ -4726,16 +5909,15 @@ components: description: Component of an ECSDA signature. SignRawPayloadsIntent: required: - - encoding - - hashFunction - - payloads - - signWith + - encoding + - hashFunction + - payloads + - signWith type: object properties: signWith: type: string - description: >- - A Wallet account address, Private Key address, or Private Key + description: A Wallet account address, Private Key address, or Private Key identifier. payloads: type: array @@ -4743,43 +5925,42 @@ components: items: type: string encoding: - $ref: '#/components/schemas/PayloadEncoding' + "$ref": "#/components/schemas/PayloadEncoding" hashFunction: - $ref: '#/components/schemas/HashFunction' + "$ref": "#/components/schemas/HashFunction" SignRawPayloadsRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_SIGN_RAW_PAYLOADS + - ACTIVITY_TYPE_SIGN_RAW_PAYLOADS timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/SignRawPayloadsIntent' + "$ref": "#/components/schemas/SignRawPayloadsIntent" SignRawPayloadsResult: type: object properties: signatures: type: array items: - $ref: '#/components/schemas/SignRawPayloadResult' + "$ref": "#/components/schemas/SignRawPayloadResult" SignTransactionIntent: required: - - privateKeyId - - type - - unsignedTransaction + - privateKeyId + - type + - unsignedTransaction type: object properties: privateKeyId: @@ -4787,51 +5968,50 @@ components: description: Unique identifier for a given Private Key. unsignedTransaction: type: string - description: Raw unsigned transaction to be signed by a particular Private Key. + description: Raw unsigned transaction to be signed by a particular Private + Key. type: - $ref: '#/components/schemas/TransactionType' + "$ref": "#/components/schemas/TransactionType" SignTransactionIntentV2: required: - - signWith - - type - - unsignedTransaction + - signWith + - type + - unsignedTransaction type: object properties: signWith: type: string - description: >- - A Wallet account address, Private Key address, or Private Key + description: A Wallet account address, Private Key address, or Private Key identifier. unsignedTransaction: type: string description: Raw unsigned transaction to be signed type: - $ref: '#/components/schemas/TransactionType' + "$ref": "#/components/schemas/TransactionType" SignTransactionRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_SIGN_TRANSACTION_V2 + - ACTIVITY_TYPE_SIGN_TRANSACTION_V2 timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/SignTransactionIntentV2' + "$ref": "#/components/schemas/SignTransactionIntentV2" SignTransactionResult: required: - - signedTransaction + - signedTransaction type: object properties: signedTransaction: @@ -4844,31 +6024,45 @@ components: appidExclude: type: boolean credProps: - $ref: '#/components/schemas/CredPropsAuthenticationExtensionsClientOutputs' + "$ref": "#/components/schemas/CredPropsAuthenticationExtensionsClientOutputs" + Status: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + "$ref": "#/components/schemas/Any" TagType: type: string enum: - - TAG_TYPE_USER - - TAG_TYPE_PRIVATE_KEY + - TAG_TYPE_USER + - TAG_TYPE_PRIVATE_KEY TransactionType: type: string enum: - - TRANSACTION_TYPE_ETHEREUM + - TRANSACTION_TYPE_ETHEREUM + - TRANSACTION_TYPE_SOLANA UpdateAllowedOriginsIntent: required: - - allowedOrigins + - allowedOrigins type: object properties: allowedOrigins: type: array - description: Additional origins requests are allowed from besides Turnkey origins + description: Additional origins requests are allowed from besides Turnkey + origins items: type: string UpdateAllowedOriginsResult: type: object UpdatePolicyIntent: required: - - policyId + - policyId type: object properties: policyId: @@ -4878,7 +6072,7 @@ components: type: string description: Human-readable name for a Policy. policyEffect: - $ref: '#/components/schemas/Effect' + "$ref": "#/components/schemas/Effect" policyCondition: type: string description: The condition expression that triggers the Effect (optional). @@ -4890,29 +6084,28 @@ components: description: Accompanying notes for a Policy (optional). UpdatePolicyRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_UPDATE_POLICY + - ACTIVITY_TYPE_UPDATE_POLICY timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/UpdatePolicyIntent' + "$ref": "#/components/schemas/UpdatePolicyIntent" UpdatePolicyResult: required: - - policyId + - policyId type: object properties: policyId: @@ -4920,9 +6113,9 @@ components: description: Unique identifier for a given Policy. UpdatePrivateKeyTagIntent: required: - - addPrivateKeyIds - - privateKeyTagId - - removePrivateKeyIds + - addPrivateKeyIds + - privateKeyTagId + - removePrivateKeyIds type: object properties: privateKeyTagId: @@ -4943,29 +6136,28 @@ components: type: string UpdatePrivateKeyTagRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_UPDATE_PRIVATE_KEY_TAG + - ACTIVITY_TYPE_UPDATE_PRIVATE_KEY_TAG timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/UpdatePrivateKeyTagIntent' + "$ref": "#/components/schemas/UpdatePrivateKeyTagIntent" UpdatePrivateKeyTagResult: required: - - privateKeyTagId + - privateKeyTagId type: object properties: privateKeyTagId: @@ -4973,8 +6165,8 @@ components: description: Unique identifier for a given Private Key Tag. UpdateRootQuorumIntent: required: - - threshold - - userIds + - threshold + - userIds type: object properties: threshold: @@ -4988,31 +6180,30 @@ components: type: string UpdateRootQuorumRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_UPDATE_ROOT_QUORUM + - ACTIVITY_TYPE_UPDATE_ROOT_QUORUM timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/UpdateRootQuorumIntent' + "$ref": "#/components/schemas/UpdateRootQuorumIntent" UpdateRootQuorumResult: type: object UpdateUserIntent: required: - - userId + - userId type: object properties: userId: @@ -5029,31 +6220,33 @@ components: description: An updated list of User Tags to apply to this User. items: type: string + userPhoneNumber: + type: string + description: The user's phone number in E.164 format e.g. +13214567890 UpdateUserRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_UPDATE_USER + - ACTIVITY_TYPE_UPDATE_USER timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/UpdateUserIntent' + "$ref": "#/components/schemas/UpdateUserIntent" UpdateUserResult: required: - - userId + - userId type: object properties: userId: @@ -5061,9 +6254,9 @@ components: description: A User ID. UpdateUserTagIntent: required: - - addUserIds - - removeUserIds - - userTagId + - addUserIds + - removeUserIds + - userTagId type: object properties: userTagId: @@ -5084,29 +6277,28 @@ components: type: string UpdateUserTagRequest: required: - - organizationId - - parameters - - timestampMs - - type + - organizationId + - parameters + - timestampMs + - type type: object properties: type: type: string enum: - - ACTIVITY_TYPE_UPDATE_USER_TAG + - ACTIVITY_TYPE_UPDATE_USER_TAG timestampMs: type: string - description: >- - Timestamp (in milliseconds) of the request, used to verify liveness - of user requests. + description: Timestamp (in milliseconds) of the request, used to verify + liveness of user requests. organizationId: type: string description: Unique identifier for a given Organization. parameters: - $ref: '#/components/schemas/UpdateUserTagIntent' + "$ref": "#/components/schemas/UpdateUserTagIntent" UpdateUserTagResult: required: - - userTagId + - userTagId type: object properties: userTagId: @@ -5114,13 +6306,14 @@ components: description: Unique identifier for a given User Tag. User: required: - - apiKeys - - authenticators - - createdAt - - updatedAt - - userId - - userName - - userTags + - apiKeys + - authenticators + - createdAt + - oauthProviders + - updatedAt + - userId + - userName + - userTags type: object properties: userId: @@ -5132,32 +6325,40 @@ components: userEmail: type: string description: The user's email address. + userPhoneNumber: + type: string + description: The user's phone number in E.164 format e.g. +13214567890 authenticators: type: array description: A list of Authenticator parameters. items: - $ref: '#/components/schemas/Authenticator' + "$ref": "#/components/schemas/Authenticator" apiKeys: type: array description: A list of API Key parameters. items: - $ref: '#/components/schemas/ApiKey' + "$ref": "#/components/schemas/ApiKey" userTags: type: array description: A list of User Tag IDs. items: type: string + oauthProviders: + type: array + description: A list of Oauth Providers. + items: + "$ref": "#/components/schemas/OauthProvider" createdAt: - $ref: '#/components/schemas/external.data.v1.Timestamp' + "$ref": "#/components/schemas/external.data.v1.Timestamp" updatedAt: - $ref: '#/components/schemas/external.data.v1.Timestamp' + "$ref": "#/components/schemas/external.data.v1.Timestamp" UserParams: required: - - accessType - - apiKeys - - authenticators - - userName - - userTags + - accessType + - apiKeys + - authenticators + - userName + - userTags type: object properties: userName: @@ -5167,17 +6368,17 @@ components: type: string description: The user's email address. accessType: - $ref: '#/components/schemas/AccessType' + "$ref": "#/components/schemas/AccessType" apiKeys: type: array description: A list of API Key parameters. items: - $ref: '#/components/schemas/ApiKeyParams' + "$ref": "#/components/schemas/ApiKeyParams" authenticators: type: array description: A list of Authenticator parameters. items: - $ref: '#/components/schemas/AuthenticatorParams' + "$ref": "#/components/schemas/AuthenticatorParams" userTags: type: array description: A list of User Tag IDs. @@ -5185,10 +6386,10 @@ components: type: string UserParamsV2: required: - - apiKeys - - authenticators - - userName - - userTags + - apiKeys + - authenticators + - userName + - userTags type: object properties: userName: @@ -5201,12 +6402,12 @@ components: type: array description: A list of API Key parameters. items: - $ref: '#/components/schemas/ApiKeyParams' + "$ref": "#/components/schemas/ApiKeyParams" authenticators: type: array description: A list of Authenticator parameters. items: - $ref: '#/components/schemas/AuthenticatorParamsV2' + "$ref": "#/components/schemas/AuthenticatorParamsV2" userTags: type: array description: A list of User Tag IDs. @@ -5214,16 +6415,16 @@ components: type: string Vote: required: - - activityId - - createdAt - - id - - message - - publicKey - - scheme - - selection - - signature - - user - - userId + - activityId + - createdAt + - id + - message + - publicKey + - scheme + - selection + - signature + - user + - userId type: object properties: id: @@ -5233,22 +6434,21 @@ components: type: string description: Unique identifier for a given User. user: - $ref: '#/components/schemas/User' + "$ref": "#/components/schemas/User" activityId: type: string description: Unique identifier for a given Activity object. selection: type: string enum: - - VOTE_SELECTION_APPROVED - - VOTE_SELECTION_REJECTED + - VOTE_SELECTION_APPROVED + - VOTE_SELECTION_REJECTED message: type: string description: The raw message being signed within a Vote. publicKey: type: string - description: >- - The public component of a cryptographic key pair used to sign + description: The public component of a cryptographic key pair used to sign messages and transactions. signature: type: string @@ -5257,15 +6457,15 @@ components: type: string description: Method used to produce a signature. createdAt: - $ref: '#/components/schemas/external.data.v1.Timestamp' + "$ref": "#/components/schemas/external.data.v1.Timestamp" Wallet: required: - - createdAt - - exported - - imported - - updatedAt - - walletId - - walletName + - createdAt + - exported + - imported + - updatedAt + - walletId + - walletName type: object properties: walletId: @@ -5275,9 +6475,9 @@ components: type: string description: Human-readable name for a Wallet. createdAt: - $ref: '#/components/schemas/external.data.v1.Timestamp' + "$ref": "#/components/schemas/external.data.v1.Timestamp" updatedAt: - $ref: '#/components/schemas/external.data.v1.Timestamp' + "$ref": "#/components/schemas/external.data.v1.Timestamp" exported: type: boolean description: True when a given Wallet is exported, false otherwise. @@ -5286,15 +6486,15 @@ components: description: True when a given Wallet is imported, false otherwise. WalletAccount: required: - - address - - addressFormat - - createdAt - - curve - - organizationId - - path - - pathFormat - - updatedAt - - walletId + - address + - addressFormat + - createdAt + - curve + - organizationId + - path + - pathFormat + - updatedAt + - walletId type: object properties: organizationId: @@ -5304,42 +6504,42 @@ components: type: string description: The Wallet the Account was derived from. curve: - $ref: '#/components/schemas/Curve' + "$ref": "#/components/schemas/Curve" pathFormat: - $ref: '#/components/schemas/PathFormat' + "$ref": "#/components/schemas/PathFormat" path: type: string description: Path used to generate the Account. addressFormat: - $ref: '#/components/schemas/AddressFormat' + "$ref": "#/components/schemas/AddressFormat" address: type: string description: Address generated using the Wallet seed and Account parameters. createdAt: - $ref: '#/components/schemas/external.data.v1.Timestamp' + "$ref": "#/components/schemas/external.data.v1.Timestamp" updatedAt: - $ref: '#/components/schemas/external.data.v1.Timestamp' + "$ref": "#/components/schemas/external.data.v1.Timestamp" WalletAccountParams: required: - - addressFormat - - curve - - path - - pathFormat + - addressFormat + - curve + - path + - pathFormat type: object properties: curve: - $ref: '#/components/schemas/Curve' + "$ref": "#/components/schemas/Curve" pathFormat: - $ref: '#/components/schemas/PathFormat' + "$ref": "#/components/schemas/PathFormat" path: type: string description: Path used to generate a wallet Account. addressFormat: - $ref: '#/components/schemas/AddressFormat' + "$ref": "#/components/schemas/AddressFormat" WalletParams: required: - - accounts - - walletName + - accounts + - walletName type: object properties: walletName: @@ -5349,17 +6549,16 @@ components: type: array description: A list of wallet Accounts. items: - $ref: '#/components/schemas/WalletAccountParams' + "$ref": "#/components/schemas/WalletAccountParams" mnemonicLength: type: integer - description: >- - Length of mnemonic to generate the Wallet seed. Defaults to 12. - Accepted values: 12, 15, 18, 21, 24. + description: 'Length of mnemonic to generate the Wallet seed. Defaults to + 12. Accepted values: 12, 15, 18, 21, 24.' format: int32 WalletResult: required: - - addresses - - walletId + - addresses + - walletId type: object properties: walletId: @@ -5373,33 +6572,47 @@ components: type: object properties: format: - $ref: '#/components/schemas/AddressFormat' + "$ref": "#/components/schemas/AddressFormat" address: type: string data.v1.Address: type: object properties: format: - $ref: '#/components/schemas/AddressFormat' + "$ref": "#/components/schemas/AddressFormat" address: type: string external.data.v1.Credential: required: - - publicKey - - type + - publicKey + - type type: object properties: publicKey: type: string - description: >- - The public component of a cryptographic key pair used to sign + description: The public component of a cryptographic key pair used to sign messages and transactions. type: - $ref: '#/components/schemas/CredentialType' + "$ref": "#/components/schemas/CredentialType" + external.data.v1.Quorum: + required: + - threshold + - userIds + type: object + properties: + threshold: + type: integer + description: Count of unique approvals required to meet quorum. + format: int32 + userIds: + type: array + description: Unique identifiers of quorum set members. + items: + type: string external.data.v1.Timestamp: required: - - nanos - - seconds + - nanos + - seconds type: object properties: seconds: @@ -5408,11 +6621,11 @@ components: type: string v1.Tag: required: - - createdAt - - tagId - - tagName - - tagType - - updatedAt + - createdAt + - tagId + - tagName + - tagType + - updatedAt type: object properties: tagId: @@ -5422,11 +6635,11 @@ components: type: string description: Human-readable name for a Tag. tagType: - $ref: '#/components/schemas/TagType' + "$ref": "#/components/schemas/TagType" createdAt: - $ref: '#/components/schemas/external.data.v1.Timestamp' + "$ref": "#/components/schemas/external.data.v1.Timestamp" updatedAt: - $ref: '#/components/schemas/external.data.v1.Timestamp' + "$ref": "#/components/schemas/external.data.v1.Timestamp" securitySchemes: ApiKeyAuth: type: apiKey @@ -5437,31 +6650,31 @@ components: name: X-Stamp-WebAuthn in: header x-tagGroups: - - name: ORGANIZATIONS - tags: - - Organizations - - Invitations - - Policies - - Features - - name: WALLETS AND PRIVATE KEYS - tags: - - Wallets - - Signing - - Private Keys - - Private Key Tags - - name: USERS - tags: - - Users - - User Tags - - User Recovery - - User Auth - - name: CREDENTIALS - tags: - - Authenticators - - API Keys - - Sessions - - name: ACTIVITIES - tags: - - Activities - - Consensus +- name: ORGANIZATIONS + tags: + - Organizations + - Invitations + - Policies + - Features +- name: WALLETS AND PRIVATE KEYS + tags: + - Wallets + - Signing + - Private Keys + - Private Key Tags +- name: USERS + tags: + - Users + - User Tags + - User Recovery + - User Auth +- name: CREDENTIALS + tags: + - Authenticators + - API Keys + - Sessions +- name: ACTIVITIES + tags: + - Activities + - Consensus x-original-swagger-version: '2.0' diff --git a/Tests/TurnkeySDKTests/TurnkeySDKTests.swift b/Tests/TurnkeySDKTests/TurnkeySDKTests.swift index aa75038..10f8ff5 100644 --- a/Tests/TurnkeySDKTests/TurnkeySDKTests.swift +++ b/Tests/TurnkeySDKTests/TurnkeySDKTests.swift @@ -117,17 +117,19 @@ final class TurnkeySDKTests: XCTestCase { // Define the test input let subOrganizationName = "Test Sub Organization" - let rootUsers: [Components.Schemas.RootUserParams] = [ + let rootUsers: [Components.Schemas.RootUserParamsV4] = [ .init( userName: "user1", userEmail: "user1@example.com", apiKeys: [ .init( apiKeyName: "turnkey-demo", - publicKey: apiPublicKey! + publicKey: apiPublicKey!, + curveType: .API_KEY_CURVE_P256 ) ], - authenticators: [] + authenticators: [], + oauthProviders: [] ) ] let rootQuorumThreshold: Int32 = 1 @@ -142,8 +144,11 @@ final class TurnkeySDKTests: XCTestCase { ) ] ) + let disableEmailRecovery = false let disableEmailAuth = false + let disableSmsAuth = false + let disableOtpEmailAuth = false // Call the createSubOrganization method on the TurnkeyClient instance let output = try await client.createSubOrganization( @@ -153,7 +158,9 @@ final class TurnkeySDKTests: XCTestCase { rootQuorumThreshold: rootQuorumThreshold, wallet: wallet, disableEmailRecovery: disableEmailRecovery, - disableEmailAuth: disableEmailAuth + disableEmailAuth: disableEmailAuth, + disableSmsAuth: disableSmsAuth, + disableOtpEmailAuth: disableOtpEmailAuth ) // Assert the response @@ -161,23 +168,20 @@ final class TurnkeySDKTests: XCTestCase { case let .ok(response): switch response.body { case let .json(activityResponse): - // Assert the expected properties in the activityResponse + // Simplified validation that focuses on the essential fields + XCTAssertNotNil(activityResponse.activity) XCTAssertEqual(activityResponse.activity.organizationId, organizationId) - // Assert that the result is not nil - XCTAssertNotNil(activityResponse.activity.result) - - // Assert that the subOrganizationId is not nil - XCTAssertNotNil( - activityResponse.activity.result.createSubOrganizationResultV4?.subOrganizationId) + // Validate the result if present + if let result = activityResponse.activity.result.createSubOrganizationResultV7 { + XCTAssertNotNil(result.subOrganizationId) + print("Created sub-organization: \(result.subOrganizationId)") - // Assert that the rootUserIds is not nil - XCTAssertNotNil(activityResponse.activity.result.createSubOrganizationResultV4?.rootUserIds) - - // Assert that the rootUserIds count matches the expected count - XCTAssertEqual( - activityResponse.activity.result.createSubOrganizationResultV4?.rootUserIds?.count, - rootUsers.count) + if let rootUserIds = result.rootUserIds { + XCTAssertEqual(rootUserIds.count, rootUsers.count) + print("Created root users: \(rootUserIds)") + } + } } case let .undocumented(statusCode, undocumentedPayload): // Handle the undocumented response @@ -229,7 +233,7 @@ final class TurnkeySDKTests: XCTestCase { let gasLimit = transaction.gasLimit?.quantity ?? zeroQuantity let toAddress = transaction.to?.rawAddress ?? Bytes() let transactionValue = transaction.value?.quantity ?? zeroQuantity - let transactionType = transaction.transactionType + let _ = transaction.transactionType // Create an RLPItem representing the transaction for encoding // Important: Order matters here: @@ -316,7 +320,6 @@ final class TurnkeySDKTests: XCTestCase { web3.provider.send(request: request) { (response: Web3Response) in switch response.status { case let .success(result): - // print("Transaction hash: \(result.hex())") seal.fulfill(result.hex()) case let .failure(error): seal.reject(error) diff --git a/example/TurnkeyiOSExample/TurnkeyiOSExample/AccountManager.swift b/example/TurnkeyiOSExample/TurnkeyiOSExample/AccountManager.swift index 2fd3424..c5ae285 100644 --- a/example/TurnkeyiOSExample/TurnkeyiOSExample/AccountManager.swift +++ b/example/TurnkeyiOSExample/TurnkeyiOSExample/AccountManager.swift @@ -30,14 +30,12 @@ class AccountManager: NSObject, ASAuthorizationControllerPresentationContextProv var authenticationAnchor: ASPresentationAnchor? var isPerformingModalRequest = false private var passkeyRegistration: PasskeyManager? - private let authKeyManager: AuthKeyManager private var currentEmail: String? private var modelContext: ModelContext { return AppDelegate.userModelContext } override init() { - authKeyManager = AuthKeyManager(domain: domain) super.init() // Add observers for passkey registration notifications NotificationCenter.default.addObserver( @@ -105,6 +103,12 @@ class AccountManager: NSObject, ASAuthorizationControllerPresentationContextProv isPerformingModalRequest = true } + /// A closure that verifies an encrypted bundle. + /// This closure is set when the `emailAuth` method is called and is used to verify + /// the encrypted bundle received during the email authentication process. + /// It takes a `String` representing the encrypted bundle and returns an `AuthResult` asynchronously. + private var verifyClosure: ((String) async throws -> AuthResult)? + func signInEmailAuth(email: String, anchor: ASPresentationAnchor) async { // For email auth we need to proxy the request to a backend that can stamp it let proxyURL = "http://localhost:3000/api/email-auth" @@ -112,21 +116,18 @@ class AccountManager: NSObject, ASAuthorizationControllerPresentationContextProv let turnkeyClient = TurnkeyClient(proxyURL: proxyURL) do { - let publicKey = try authKeyManager.createKeyPair() - - var targetPublicKey = Data([0x04]) - let rawRepresentation = publicKey.rawRepresentation - targetPublicKey.append(rawRepresentation) - let output = try await turnkeyClient.emailAuth( + let (output, verify) = try await turnkeyClient.emailAuth( organizationId: parentOrgId, email: email, - targetPublicKey: targetPublicKey.map { String(format: "%02x", $0) }.joined(), apiKeyName: "test-api-key-swift-sdk", expirationSeconds: "3600", emailCustomization: Components.Schemas.EmailCustomizationParams() ) + // Store the verify closure for later use + self.verifyClosure = verify + // Assert the response switch output { case let .ok(response): diff --git a/templates/TurnkeyClient.stencil b/templates/TurnkeyClient.stencil index 5b4a711..f618b1a 100644 --- a/templates/TurnkeyClient.stencil +++ b/templates/TurnkeyClient.stencil @@ -119,6 +119,7 @@ public struct TurnkeyClient { /// - apiKeyName: Optional. The name of the API key used in the authentication process. /// - expirationSeconds: Optional. The duration in seconds before the authentication request expires. /// - emailCustomization: Optional. Customization parameters for the authentication email. + /// - invalidateExisting: Optional. Invalidates all existing email auth API keys. /// /// - Returns: A tuple containing the `Operations.EmailAuth.Output` and a closure `(String) async throws -> Void` that accepts an encrypted bundle for verification. /// @@ -128,7 +129,7 @@ public struct TurnkeyClient { public func emailAuth( organizationId: String, email: String, apiKeyName: String?, expirationSeconds: String?, - emailCustomization: Components.Schemas.EmailCustomizationParams? + emailCustomization: Components.Schemas.EmailCustomizationParams?, invalidateExisting: Bool? ) async throws -> (Operations.EmailAuth.Output, (String) async throws -> AuthResult) { let ephemeralPrivateKey = P256.KeyAgreement.PrivateKey() let targetPublicKey = try ephemeralPrivateKey.publicKey.toString(representation: .x963) @@ -136,7 +137,7 @@ public struct TurnkeyClient { let response = try await emailAuth( organizationId: organizationId, email: email, targetPublicKey: targetPublicKey, apiKeyName: apiKeyName, expirationSeconds: expirationSeconds, - emailCustomization: emailCustomization) + emailCustomization: emailCustomization, invalidateExisting: invalidateExisting) let authResponseOrganizationId = try response.ok.body.json.activity.organizationId @@ -203,4 +204,4 @@ public struct TurnkeyClient { {% endfor %} {% endfor %} -} \ No newline at end of file +} diff --git a/templates/macros.stencil b/templates/macros.stencil index 51c52e2..cedcf55 100644 --- a/templates/macros.stencil +++ b/templates/macros.stencil @@ -23,12 +23,16 @@ {% macro addActivityMethodParams methodName -%} {% for struct in types.structs where struct.localName|split:"Request"|join == methodName -%} {% for method in struct.methods -%} - {% for param in method.parameters where param.name != "_type" and param.name != "timestampMs" -%} - {% if param.name != "parameters" -%} - {{ param.name }}: {{ param.typeName|replace:"Swift.","" }}{% if not forloop.last %}, {% endif %} - {% else -%} - {% map param.type.variables into params %}{{ maploop.item.name }}: {{ maploop.item.typeName|replace:"Swift.","" }}{% endmap %}{{ params|join:", " }} - {%- endif %} + {# First handle non-parameters fields #} + {% for param in method.parameters where param.name != "_type" and param.name != "timestampMs" and param.name != "parameters" -%} + {{ param.name }}: {{ param.typeName|replace:"Swift.","" }} + {%- endfor %} + {# Then handle parameters fields if they exist #} + {% for param in method.parameters where param.name == "parameters" -%} + {% if param.type.variables.count > 0 %}, {% endif %} + {% for var in param.type.variables -%} + {{ var.name }}: {{ var.typeName|replace:"Swift.","" }}{% if not forloop.last %}, {% endif %} + {%- endfor %} {%- endfor %} {%- endfor %} {%- endfor %}