swagger: '2.0' info: title: Blue API reference Admin Iam API description: 'Alphaus provides an API for interacting with its services. Blue API is a RESTful API that can be accessed by an HTTP client such as `curl`, or any HTTP library which is part of most modern programming languages. This API reference is autogenerated from [protocol buffers](https://developers.google.com/protocol-buffers) defined in this [repository](https://github.com/alphauslabs/blueapi), together with our supported [client libraries](https://alphauslabs.github.io/docs/blueapi/client-sdks/). See the official [documentation](https://alphauslabs.github.io/docs/blueapi/overview/) for more information. You may encounter the following feature maturity indicators: - **(WORK-IN-PROGRESS)** - Development is ongoing, don''t use yet; - **(BETA)** - New or experimental features, subject to changes; and - **(DEPRECATED)** - Outdated or replaced features. Some endpoints, especially those that return lists of resources, have streaming responses; newline-separated stream of “chunks”. Each chunk is an envelope that can contain either a response message or an error. Only the last chunk will include an error, if any.' version: v1 host: api.alphaus.cloud basePath: /m/blue schemes: - https consumes: - application/json produces: - application/json tags: - name: Iam description: '(BETA) IAM API. Base URL: https://api.alphaus.cloud/m/blue' externalDocs: description: Service definition url: https://github.com/alphauslabs/blueapi/tree/main/iam/ paths: /iam/v1/apiclients: get: summary: Lists all API clients belonging to the caller. operationId: Iam_ListApiClients responses: '200': description: A successful response.(streaming responses) schema: type: object properties: result: $ref: '#/definitions/apiApiClient' error: $ref: '#/definitions/rpcStatus' title: Stream result of apiApiClient default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' tags: - Iam post: summary: Creates an API client for the caller. operationId: Iam_CreateApiClient responses: '200': description: A successful response. schema: $ref: '#/definitions/apiApiClient' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: body description: Request message for the Iam.CreateApiClient rpc. in: body required: true schema: $ref: '#/definitions/v1CreateApiClientRequest' tags: - Iam /iam/v1/apiclients/{id}: delete: summary: Deletes an API client belonging to the caller. operationId: Iam_DeleteApiClient responses: '200': description: A successful response. schema: type: object properties: {} default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: id description: Required. The client id to delete. in: path required: true type: string tags: - Iam /iam/v1/experimentalui/preferences: get: summary: Gets experimental UI preferences for the authenticated MSP. operationId: Iam_GetExperimentalUIPreferences responses: '200': description: A successful response. schema: $ref: '#/definitions/v1GetExperimentalUIPreferencesResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' tags: - Iam /iam/v1/experimentalui/preferences/{componentId}: put: summary: Creates or updates an experimental UI preference for a specific component. operationId: Iam_UpsertExperimentalUIPreference responses: '200': description: A successful response. schema: $ref: '#/definitions/v1UpsertExperimentalUIPreferenceResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: componentId description: The component identifier to create or update a preference for. in: path required: true type: string - name: body in: body required: true schema: $ref: '#/definitions/IamUpsertExperimentalUIPreferenceBody' tags: - Iam /iam/v1/grouprootusers: get: summary: 'WORK-IN-PROGRESS: Retrieves all the existing group root users asscoiated with the organization.' operationId: Iam_ListGroupRootUsers responses: '200': description: A successful response.(streaming responses) schema: type: object properties: result: $ref: '#/definitions/apiGroupRootUser' error: $ref: '#/definitions/rpcStatus' title: Stream result of apiGroupRootUser default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' tags: - Iam post: summary: 'WORK-IN-PROGRESS: Creates a new root user for a billing group or access group.' operationId: Iam_CreateGroupRootUser responses: '200': description: A successful response. schema: $ref: '#/definitions/apiGroupRootUser' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: body in: body required: true schema: $ref: '#/definitions/v1CreateGroupRootUserRequest' tags: - Iam /iam/v1/grouprootusers/{id}: get: summary: 'WORK-IN-PROGRESS: Retrieves a group root user.' operationId: Iam_GetGroupRootUser responses: '200': description: A successful response. schema: $ref: '#/definitions/apiGroupRootUser' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: id in: path required: true type: string tags: - Iam delete: summary: 'WORK-IN-PROGRESS: Deletes an existing group root user.' operationId: Iam_DeleteGroupRootUser responses: '200': description: A successful response. schema: type: object properties: {} default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: id in: path required: true type: string tags: - Iam /iam/v1/grouprootusers/{id}/features: get: summary: 'WORK-IN-PROGRESS: Retrieves the features available to a user on an Alphaus product.' description: For a list of valid feature flags, see our documentation at https://labs.alphaus.cloud/docs/blueapi/apis/iam/. operationId: Iam_GetFeatureFlags responses: '200': description: A successful response. schema: $ref: '#/definitions/apiFeatureFlags' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: id in: path required: true type: string tags: - Iam put: summary: 'WORK-IN-PROGRESS: Updates the features available to a user on an Alphaus product.' description: For a list of valid feature flags, see our documentation at https://labs.alphaus.cloud/docs/blueapi/apis/iam/. operationId: Iam_UpdateFeatureFlags responses: '200': description: A successful response. schema: $ref: '#/definitions/apiFeatureFlags' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: id in: path required: true type: string - name: body in: body required: true schema: $ref: '#/definitions/IamUpdateFeatureFlagsBody' tags: - Iam /iam/v1/idps: get: summary: Lists all SSO Identity Providers (IdP). operationId: Iam_ListIdentityProviders responses: '200': description: A successful response. schema: $ref: '#/definitions/v1ListIdentityProvidersResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' tags: - Iam post: summary: Registers an SSO Identity Provider (IdP). operationId: Iam_CreateIdentityProvider responses: '200': description: A successful response. schema: type: object properties: {} default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: body description: Request message for the Iam.CreateIdentityProvider rpc. in: body required: true schema: $ref: '#/definitions/v1CreateIdentityProviderRequest' tags: - Iam /iam/v1/idps/{id}: delete: summary: Deletes an SSO Identity Provider (IdP). operationId: Iam_DeleteIdentityProvider responses: '200': description: A successful response. schema: type: object properties: {} default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: id description: Required. The IdP id to delete. in: path required: true type: string tags: - Iam /iam/v1/ipfilters: get: summary: Lists all IP filters. At the moment, this API is only available to root users. operationId: Iam_ListIpFilters responses: '200': description: A successful response.(streaming responses) schema: type: object properties: result: $ref: '#/definitions/v1IpFilter' error: $ref: '#/definitions/rpcStatus' title: Stream result of v1IpFilter default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' tags: - Iam post: summary: Creates an IP filter item for IP blacklisting or whitelisting. At the moment, this API is only available to root users. operationId: Iam_CreateIpFilter responses: '200': description: A successful response. schema: $ref: '#/definitions/v1IpFilter' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: body description: Request message for the Iam.CreateIpFilter rpc. in: body required: true schema: $ref: '#/definitions/v1CreateIpFilterRequest' tags: - Iam /iam/v1/ipfilters/{id}: delete: summary: Deletes an IP filter item. At the moment, this API is only available to root users. operationId: Iam_DeleteIpFilter responses: '200': description: A successful response. schema: type: object properties: {} default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: id description: The IP filter id to delete. in: path required: true type: string tags: - Iam /iam/v1/metadata/{id}: get: summary: 'WORK-IN-PROGRESS: Get Sub User Metadata for login user''s organization based on user identity' operationId: Iam_GetSubUserMetadata responses: '200': description: A successful response. schema: $ref: '#/definitions/apiSubUser' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: id description: Required. The parent ID in: path required: true type: string - name: subId description: Optional. The sub-user ID in: query required: false type: string tags: - Iam /iam/v1/mfausers: get: summary: 'WORK-IN-PROGRESS: List MFA users info for login user''s organization based on status.' operationId: Iam_GetMFAUsers responses: '200': description: A successful response. schema: $ref: '#/definitions/v1MFAUsersInfoResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: status description: 'Optional. If non empty: list users by status. Otherwise will list all MFA users.' in: query required: false type: string tags: - Iam /iam/v1/partners/{id}/token: post: summary: 'BETA: Creates a partner token for custom integrations. Available only to Ripple and Cover users.' operationId: Iam_CreatePartnerToken responses: '200': description: A successful response. schema: $ref: '#/definitions/v1PartnerToken' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: id description: Required. Partner id or audience for the token. in: path required: true type: string - name: body in: body required: true schema: $ref: '#/definitions/IamCreatePartnerTokenBody' tags: - Iam /iam/v1/partners/{id}/token:refresh: post: summary: 'BETA: Refreshes an expired partner token. Only partners are expected to call this API.' operationId: Iam_RefreshPartnerToken responses: '200': description: A successful response. schema: $ref: '#/definitions/v1PartnerToken' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: id description: Required. Partner id or audience for the token. in: path required: true type: string - name: body in: body required: true schema: $ref: '#/definitions/IamRefreshPartnerTokenBody' tags: - Iam /iam/v1/password:reset: post: summary: 'WORK-IN-PROGRESS: Validate reset password link and proceed to update password' operationId: Iam_ValidateResetPasswordLinkAndChangePassword responses: '200': description: A successful response. schema: $ref: '#/definitions/v1ValidateResetPasswordLinkAndChangePasswordResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: body description: Request for message Iam.ValidateVerificationCode rpc. in: body required: true schema: $ref: '#/definitions/v1ValidateResetPasswordLinkAndChangePasswordRequest' tags: - Iam /iam/v1/permissions: get: summary: 'WORK-IN-PROGRESS: Lists all permissions based on the input''s scope. For reference, supported permissions can be found on [https://github.com/mobingi/rbac-permissions].' operationId: Iam_ListPermissions responses: '200': description: A successful response. schema: $ref: '#/definitions/v1ListPermissionsResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: subUser description: Optional. The subuser to query. If empty (default), query all available permissions. If set to a valid subuser, query that subuser's permissions, if allowed. You can also set this field to `me` to query your own permissions. in: query required: false type: string tags: - Iam /iam/v1/ripple/password:requestresetcode: post: summary: 'WORK-IN-PROGRESS: Send an email reset code' operationId: Iam_SendRipplePasswordResetCode responses: '200': description: A successful response. schema: type: object properties: {} default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: body in: body required: true schema: $ref: '#/definitions/v1SendRipplePasswordResetCodeRequest' tags: - Iam /iam/v1/ripple/password:reset: post: summary: 'WORK-IN-PROGRESS: Reset ripple password using code from email' operationId: Iam_ResetRipplePassword responses: '200': description: A successful response. schema: $ref: '#/definitions/v1ResetRipplePasswordResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: body in: body required: true schema: $ref: '#/definitions/v1ResetRipplePasswordRequest' tags: - Iam /iam/v1/roles: get: summary: 'WORK-IN-PROGRESS: Lists all available roles.' operationId: Iam_ListRoles responses: '200': description: A successful response. schema: $ref: '#/definitions/v1ListRolesResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: namespace description: Optional. If not set, all roles will be returned. in: query required: false type: string tags: - Iam post: summary: 'WORK-IN-PROGRESS: Creates a role. If your `permissions` list contains an `Admin` entry, all other entries will be discarded except `Admin`. Roles are root user-level. That means all roles created by the root user, or any subuser that has permissions to create roles, are available to all subusers.' operationId: Iam_CreateRole responses: '200': description: A successful response. schema: $ref: '#/definitions/blueapiApiRole' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: body description: Request message for the Iam.CreateRole rpc. in: body required: true schema: $ref: '#/definitions/v1CreateRoleRequest' tags: - Iam /iam/v1/roles/{namespace}/{name}: delete: summary: 'WORK-IN-PROGRESS: Deletes a role. Deleting a role will also remove all mappings.' operationId: Iam_DeleteRole responses: '200': description: A successful response. schema: type: object properties: {} default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: namespace description: Required. The parent namespace. in: path required: true type: string - name: name description: Required. The role name to delete. in: path required: true type: string tags: - Iam put: summary: 'WORK-IN-PROGRESS: Updates a role. If role name is different, rename mapped role name.' operationId: Iam_UpdateRole responses: '200': description: A successful response. schema: $ref: '#/definitions/blueapiApiRole' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: namespace description: Required. The new namespace. in: path required: true type: string - name: name description: Required. The role name to update. in: path required: true type: string - name: body in: body required: true schema: $ref: '#/definitions/IamUpdateRoleBody' tags: - Iam /iam/v1/userroles: get: summary: 'WORK-IN-PROGRESS: Lists roles attached to the caller or the input.' operationId: Iam_ListUserRoleMappings responses: '200': description: A successful response. schema: $ref: '#/definitions/v1ListUserRoleMappingsResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: subUser description: Optional. The subuser to query. Defaults to caller if not set. in: query required: false type: string tags: - Iam post: summary: 'WORK-IN-PROGRESS: Maps roles to a subuser. You can only map (or attach) up to 5 roles to a user per namespace. There is no limit for filtering rules per user.' operationId: Iam_CreateUserRoleMapping responses: '200': description: A successful response. schema: $ref: '#/definitions/v1CreateUserRoleMappingResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: body description: Request message for the Iam.CreateUserRoleMapping rpc. in: body required: true schema: $ref: '#/definitions/v1CreateUserRoleMappingRequest' tags: - Iam put: summary: 'WORK-IN-PROGRESS: Updates user-to-role mappings. You can only map (or attach) up to 5 roles to a user per namespace. There is no limit for filtering rules per user.' operationId: Iam_UpdateUserRoleMapping responses: '200': description: A successful response. schema: $ref: '#/definitions/v1UpdateUserRoleMappingResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: body description: Request message for the Iam.UpdateUserRoleMapping rpc. in: body required: true schema: $ref: '#/definitions/v1UpdateUserRoleMappingRequest' tags: - Iam /iam/v1/users: get: summary: Lists all subusers. operationId: Iam_ListUsers responses: '200': description: A successful response.(streaming responses) schema: type: object properties: result: $ref: '#/definitions/blueapiApiUser' error: $ref: '#/definitions/rpcStatus' title: Stream result of blueapiApiUser default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' tags: - Iam post: summary: Creates a subuser. operationId: Iam_CreateUser responses: '200': description: A successful response. schema: $ref: '#/definitions/blueapiApiUser' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: body description: Request message for the Iam.CreateUser rpc. in: body required: true schema: $ref: '#/definitions/v1CreateUserRequest' tags: - Iam /iam/v1/users/{id}: get: summary: 'Gets subuser information. This call includes all of the subuser metadata. See [https://alphauslabs.github.io/blueapi/] for the list of supported attributes. If the `{name}` parameter is `me` or `-`, returns the caller information, which is equivalent to `WhoAmI()` or `GET:/iam/v*/whoami`.' operationId: Iam_GetUser responses: '200': description: A successful response. schema: $ref: '#/definitions/blueapiApiUser' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: id in: path required: true type: string tags: - Iam delete: summary: Deletes a subuser. operationId: Iam_DeleteUser responses: '200': description: A successful response. schema: type: object properties: {} default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: id description: Required. The subuser name to delete. in: path required: true type: string tags: - Iam /iam/v1/whoami: get: summary: 'Gets user information about the caller. This call includes all of the user metadata. See [https://alphauslabs.github.io/blueapi/] for the list of supported attributes.' operationId: Iam_WhoAmI responses: '200': description: A successful response. schema: $ref: '#/definitions/blueapiApiUser' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' tags: - Iam /iam/v1/{domain}/account:unlock: post: summary: 'WORK-IN-PROGRESS: Unlocks ripple or wave user account.' operationId: Iam_UnlockUserAccount responses: '200': description: A successful response. schema: type: object properties: {} default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: domain description: Required. Valid values are 'ripple' and 'wave' in: path required: true type: string - name: body in: body required: true schema: $ref: '#/definitions/IamUnlockUserAccountBody' tags: - Iam /iam/v1/{user}/password:verify: post: summary: 'WORK-IN-PROGRESS: Verify User Input For Reset Password' operationId: Iam_VerifyUserForResetPassword responses: '200': description: A successful response. schema: $ref: '#/definitions/v1VerifyUserForResetPasswordResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: user in: path required: true type: string tags: - Iam definitions: IdentityProvidersamlInfo: type: object properties: metadata: type: string v1ResetRipplePasswordRequest: type: object properties: resetCode: type: string title: Required. Reset code from email newPassword: type: string title: Required. Atleast 8 characters title: Request message for resetting ripple password apiSubUserRole: type: object properties: roleId: type: string description: Role ID assigned to the sub-user. permissions: type: array items: type: string description: Permissions granted to the sub-user for this role. subUserId: type: string description: 'Temporary: Tracks the sub-user ID to verify the role is assigned to the correct user. This field will be removed after testing is complete.' v1MFAUsersInfoResponse: type: object properties: users: type: array items: type: object $ref: '#/definitions/v1MFAUser' description: Response message for the MFAUsersInfoResponse rpc. v1SendRipplePasswordResetCodeRequest: type: object properties: email: type: string title: Required. Ripple account email address title: Request message for ripple account password recovery apiUserRoleMapping: type: object properties: rootUser: type: string subUser: type: string namespace: type: string role: type: string filter: type: string v1UpdateUserRoleMappingRequest: type: object properties: subUser: type: string description: Optional. The subuser to map the roles. Defaults to caller if not set. roles: type: array items: type: object $ref: '#/definitions/v1MapRole' description: Required. The roles to map to the user. Limited to 5 items. Setting `role` to empty will remove the mapping. description: Request message for the Iam.UpdateUserRoleMapping rpc. apiPermission: type: object properties: namespace: type: string permissions: type: array items: type: string policies: type: array items: type: object $ref: '#/definitions/apiPolicy' v1VerifyUserForResetPasswordResponse: type: object properties: doesUserExists: type: boolean description: Response message for Iam.VerifyUserForResetPassword rpc. v1ValidateResetPasswordLinkAndChangePasswordRequest: type: object properties: originalEncodedCode: type: string userInputEncodedCode: type: string description: Request for message Iam.ValidateVerificationCode rpc. v1MapRole: type: object properties: namespace: type: string role: type: string rpcStatus: type: object properties: code: type: integer format: int32 description: The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code]. message: type: string description: 'A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client.' details: type: array items: type: object $ref: '#/definitions/protobufAny' description: 'A list of messages that carry the error details. There is a common set of message types for APIs to use.' description: 'The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).' v1CreateApiClientRequest: type: object properties: name: type: string description: Required. The descriptive name of the API client to create. description: Request message for the Iam.CreateApiClient rpc. blueapiApiRole: type: object properties: name: type: string namespace: type: string permissions: type: array items: type: string policies: type: array items: type: object $ref: '#/definitions/apiPolicy' v1MFAUser: type: object properties: id: type: string name: type: string type: type: string status: type: string createdAt: type: string IamCreatePartnerTokenBody: type: object description: Request message for the Iam.CreatePartnerToken rpc. v1CreateIdentityProviderRequest: type: object properties: name: type: string description: Required. The IdP name. type: type: string description: Required. Value is `saml`. metadata: type: string description: Required. The contents of the metadata file from your IdP. description: Request message for the Iam.CreateIdentityProvider rpc. v1ListUserRoleMappingsResponse: type: object properties: userRoleMappings: type: array items: type: object $ref: '#/definitions/apiUserRoleMapping' description: Response message for the Iam.ListUserRoleMappings rpc. protobufAny: type: object properties: '@type': type: string description: "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics." additionalProperties: {} description: "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(&foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := &pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := &pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": ,\n \"lastName\": \n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }" apiGroupRootUser: type: object properties: email: type: string description: "The email address associated with the user. If there is no email\r\naddress provided then this field will contain \"Not Set\"." password: type: string description: "The password associated with the user. This field will only be\r\npopulated when the reseller is first created." groupId: type: string description: "The ID of the group to which the user belongs. This will either\r\nbe a billing group ID or an access group ID." groupName: type: string description: "The name of the group to which the user belongs. This will either\r\nbe the name of a billing group or an access group." groupType: type: string description: "This field describes what type of group to which the user belongs.\r\nThis field will contain either a value of \"billing_group\" or \"access_group\"." meta: $ref: '#/definitions/apiFeatureFlags' description: "A collection of feature flags and whether or not they should be enabled. \r\nFor a full list of such flags, see https://alphauslabs.github.io/blueapi/apis/groups.html." passwordUpdateTime: type: string description: "The time when the password was last updated. This value will be null if \r\nthe password has never been updated." updateTime: type: string description: "The time when the user was last updated. This value will be null if the\r\nuser has never been updated." userAccessId: type: string description: "An ID that uniquely identifies the user in the context of its access group.\r\nIf the user does not belong to an access group then this value field will\r\ncontain the same value as the user ID." userId: type: string description: An ID that unqiuely identifies the user. waveAvailabilityDays: type: integer format: int32 description: "How many days of Wave use remain. This value is only used for trial accounts.\r\nThis field cannot be updated." waveRegistered: type: string description: When the user registered on Wave. waveStatus: type: string description: "The plan associated with the user. Possible values include \"trial\",\r\n\"limited3\" and \"limited4\"." description: Describes the fields on an Alphaus root user for a billing group or access group. IamUpsertExperimentalUIPreferenceBody: type: object properties: version: type: string description: The selected UI version for the component (e.g. "v1" or "v2"). bannerDismissed: type: boolean description: Whether the experimental banner has been dismissed for this component. description: Request message for the Iam.UpsertExperimentalUIPreference rpc. IamUpdateRoleBody: type: object properties: newName: type: string description: Optional. If set, update the current name to this. permissions: type: array items: type: string description: Required. The list of permissions to attach to this role. description: Request message for the Iam.UpdateRole rpc. apiPolicy: type: object properties: action: type: string effect: type: string key: type: string values: type: array items: type: string apiSubUser: type: object properties: id: type: string description: Sub-user's unique id. parentId: type: string description: The id of the parent user. If this is empty, the sub-user is invalid. metadata: type: object additionalProperties: type: string description: Attributes specific to the sub-user. roles: type: array items: type: object $ref: '#/definitions/apiSubUserRole' description: Role details for the sub-user, if applicable. v1UpdateUserRoleMappingResponse: type: object properties: success: type: array items: type: string failed: type: array items: type: string filters: type: array items: type: string description: Response message for the Iam.UpdateUserRoleMapping rpc. v1ListPermissionsResponse: type: object properties: permissions: type: array items: type: object $ref: '#/definitions/apiPermission' description: Response message for the Iam.ListPermissions rpc. v1CreateUserRoleMappingResponse: type: object properties: success: type: array items: type: string failed: type: array items: type: string filters: type: array items: type: string description: Response message for the Iam.CreateUserRoleMapping rpc. IamUnlockUserAccountBody: type: object properties: email: type: string description: Required. The email of the user account to unlock. isRoot: type: boolean description: IsRoot is true if Ripple or Wave root user, false if sub user. userName: type: string description: Required if wave sub user. apiFeatureFlags: type: object properties: dashboardGraph: type: boolean title: Control view-access to the Wave dashboard graph usageAccount: type: boolean title: Control access to the Accounts pane under usage reports on Wave usageAccountGraph: type: boolean title: Control view-access to the Account-level graph under usage reports on Wave usageAccountMenuAccountEdit: type: boolean title: Control edit-access to Accounts under usage reports on Wave usageAccountMenuBudget: type: boolean title: Control view-access to budget settings for an Account under usage reports on Wave usageAccountMenuBudgetEdit: type: boolean title: Control edit-access to budget settings for an Account under usage reports on Wave usageAccountMenuFeesFee: type: boolean title: Control view-access to the fees menu for an Account under usage reports on Wave usageAccountMenuFeesCredit: type: boolean title: Control view-access to credits for an Account under usage reports on Wave usageAccountMenuFeesRefund: type: boolean title: Control view-access to refunds for an Account under usage reports on Wave usageAccountMenuFeesOtherFees: type: boolean title: Control view-access to other fees for an Account under usage reports on Wave usageReportDownload: type: boolean title: Control download-access to usage report on Wave usageGroup: type: boolean title: Control access to the Groups pane under usage reports on Wave usageGroupGraph: type: boolean title: Control view-access to the Group-level graph under usage reports on Wave usageTag: type: boolean title: Control view-access to the Tags pane under usage reports on Wave usageTagGraph: type: boolean title: Control view-access to the Tag-level graph under usage reports on Wave usageCrosstag: type: boolean title: Control view-access to the Tags pane for crosstag groups under usage reports on Wave usageCrosstagGraph: type: boolean title: Control view-access to the Tag-level graph for crosstag groups under usage reports on Wave riPurchased: type: boolean title: Control view-access to purchased reservations under reserved instances on Wave riUtilization: type: boolean title: Control access to RI utilization under reserved instances on Wave riRecommendation: type: boolean title: Control access to RI recommendations on Wave spPurchased: type: boolean title: Control access to purchased savings plans on Wave invoice: type: boolean title: Control access to the invoice on Wave invoiceDownloadCsvDiscount: type: boolean title: Control download-access to the discounted invoice CSV on Wave invoiceDownloadCsvMerged: type: boolean title: Control download-access to the merged invoice CSV on Wave openApi: type: boolean title: Control access to API tokens on Wave usersManagement: type: boolean title: Control access to sub-user management on Wave aqCoverageRatio: type: boolean title: Control access to the Coverage Ratio pane on Aqua aqRiManagement: type: boolean title: Control access to the RI management pane on Aqua aqSpManagement: type: boolean title: Control access to the savings plan management pane on Aqua aqRiSpInstances: type: boolean title: Control access to RI and savings plan recommendations on Aqua aqRightSizing: type: boolean title: Control access to right-sizing on Aqua aqScheduling: type: boolean title: Control access to scheduling on Aqua reportFilters: type: boolean title: Control access to the report filters pane in Wave Pro aquaLink: type: boolean title: Control access to Aqua from Wave Pro budgetalerts: type: boolean title: Control access to budget alerts from Wave Pro description: Describes the features and whether or not they are enabled for a particular user. v1ListIdentityProvidersResponse: type: object properties: data: type: array items: type: object $ref: '#/definitions/ListIdentityProvidersResponseIdentityProvider' description: Response message for the Iam.ListIdentityProviders rpc. v1ResetRipplePasswordResponse: type: object properties: userName: type: string title: Ripple account information of the reseted password email: type: string IamUpdateFeatureFlagsBody: type: object properties: featureFlags: $ref: '#/definitions/apiFeatureFlags' description: Request message for the Iam.UpdateFeatureFlags rpc. v1ListRolesResponse: type: object properties: roles: type: array items: type: object $ref: '#/definitions/blueapiApiRole' description: Response message for the Iam.ListRoles rpc. v1GetExperimentalUIPreferencesResponse: type: object properties: preferences: type: array items: type: object $ref: '#/definitions/v1ExperimentalUIPreference' description: The list of experimental UI preferences for the authenticated MSP. description: Response message for the Iam.GetExperimentalUIPreferences rpc. v1CreateIpFilterRequest: type: object properties: value: type: string description: Required. The IP input to filter, either blacklist or whitelist. Should be in CIDR format (i.e. `1.2.3.4/32`). type: type: string description: Optional. Can be `whitelist` or `blacklist`. Defaults to `blacklist` if empty. rootUser: type: string description: Optional. If `rootUser` is valid and `subUser` is empty, filter is for this rootuser. If both `rootUser` and `subUser` inputs are empty, filter is at global scope. subUser: type: string description: Optional. If `subuser` is valid, filter is for this subuser; `rootUser` value is discarded. If both `rootUser` and `subUser` inputs are empty, filter is at global scope. description: Request message for the Iam.CreateIpFilter rpc. IamRefreshPartnerTokenBody: type: object properties: token: type: string description: Required. The previous (old) token to be refreshed. description: Request message for the Iam.RefreshPartnerToken rpc. v1CreateUserRoleMappingRequest: type: object properties: subUser: type: string description: Optional. The subuser to map the roles. Defaults to caller if not set. roles: type: array items: type: object $ref: '#/definitions/v1MapRole' description: Required. The roles to map to the user. Limited to 5 items. description: Request message for the Iam.CreateUserRoleMapping rpc. v1UpsertExperimentalUIPreferenceResponse: type: object properties: preference: $ref: '#/definitions/v1ExperimentalUIPreference' description: The created or updated preference. description: Response message for the Iam.UpsertExperimentalUIPreference rpc. ListIdentityProvidersResponseIdentityProvider: type: object properties: id: type: string name: type: string type: type: string saml: $ref: '#/definitions/IdentityProvidersamlInfo' apiApiClient: type: object properties: clientId: type: string description: API client id. clientSecret: type: string description: API client secret. Only available during creation; otherwise, redacted. name: type: string description: API client name. grantType: type: string description: Grant type. Always set to `client_credentials`. parent: type: string description: The client's parent resource. createTime: type: string v1CreateRoleRequest: type: object properties: name: type: string description: Required. The name of the role to create. Role names should have at least 6 characters in length and 32 characters maximum. It should also be alphanumeric. Hyphens and underscores are allowed in between. The regular expression used for validation is `^[A-Za-z0-9][A-Za-z0-9_-]*[A-Za-z0-9]$`. namespace: type: string description: Required. The namespace where this role will belong. permissions: type: array items: type: string description: Required. The list of permissions to attach to this role. description: Request message for the Iam.CreateRole rpc. v1ValidateResetPasswordLinkAndChangePasswordResponse: type: object properties: isPasswordUpdated: type: boolean isResetPasswordLinkValid: type: boolean errorMessage: type: string description: Response for message Iam.ValidateVerificationCode rpc. v1CreateGroupRootUserRequest: type: object properties: email: type: string description: The email address of the user being created. password: type: string title: The password of the user being created. A value will be generated if not is provided for this field groupId: type: string description: The ID of the group to which the user will be added. This must either be a billing group ID or an access group ID. groupType: type: string description: The type of group which is represented by the group ID. Valid values include "billing_group" or "access_group". inputType: type: string description: This value determines whether the password should be auto-generated or if the plaintext value received with the request should be used. A value of "Auto" will result in an auto-generated password whereas a value of "Custom" will result in the password included with the request being used. plan: type: string description: The plan associated with the root-user account. Valid values include "trial", "limited3" and "limited4". emailNotification: type: boolean description: Whether or not a notification should be sent to the provided email after the user has been created. meta: $ref: '#/definitions/apiFeatureFlags' description: A collection of feature flags and whether or not they should be enabled. For a full list of such flags, see https://labs.alphaus.cloud/docs/blueapi/apis/iam/. title: Request message for the Iam.CreateGroupRootUser rpc blueapiApiUser: type: object properties: id: type: string description: User's unique id. parent: type: string description: 'The user''s parent. If empty or non-existent, it means this user is a root user; otherwise, it''s a subuser.' metadata: type: object additionalProperties: type: string description: 'The attributes (key/value pair) of the user. If hierarchy is supported, it will be separated by ''/'', such as ''key/subkey=value''. See https://alphauslabs.github.io/blueapi/ for the list of supported attributes.' v1CreateUserRequest: type: object properties: name: type: string description: 'Required. Min: 4, max: 18, allowed characters: letters, numbers, `_` (underscore), `.` (period) and `-` (hyphen) characters.' password: type: string description: Required. Minimum of 8 characters. email: type: string description: Optional. Email address of the subuser. nickName: type: string description: Optional. Nickname or description. It is set to 'name' if empty. description: Request message for the Iam.CreateUser rpc. v1PartnerToken: type: object properties: token: type: string v1ExperimentalUIPreference: type: object properties: componentId: type: string description: The component identifier this preference applies to. version: type: string description: The selected UI version for the component (e.g. "v1" or "v2"). bannerDismissed: type: boolean description: Whether the experimental banner has been dismissed for this component. updatedAt: type: string format: date-time description: The timestamp of the last update. description: ExperimentalUIPreference holds the UI version preference and banner state for a single component. v1IpFilter: type: object properties: id: type: string description: IP filter item id. Note that this name is transcient and is not fixed. However, you can use any of its permutations to endpoints that accept it, such as the `DELETE:/iam/v?/ipfilters/{id}` endpoint, without issues. scope: type: string description: Can be `global`, `rootuser`, or `subuser`. target: type: string description: The target of the filter. If global scope, this is usually empty. Rootuser name for rootuser scope, and subuser name for subuser scope. For subuser targets, format is `rootuser/subuser`. type: type: string description: The type of IP filter. It could be `whitelist` or `blacklist`. value: type: string description: The IP filter value. Should be in CIDR format.