swagger: '2.0' info: title: Blue API reference Admin GuaranteedCommitments 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: GuaranteedCommitments description: '(Alpha) GuaranteedCommitments API. Base URL: https://api.alphaus.cloud/m/blue/gc' externalDocs: description: Service definition url: https://github.com/alphauslabs/blueapi/tree/main/gc/ paths: /v1/commitments: get: summary: 'WORK-IN-PROGRESS: Retrieves a list of commitments.' operationId: GuaranteedCommitments_ListCommitments responses: '200': description: A successful response. schema: $ref: '#/definitions/v1ListCommitmentsResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' tags: - GuaranteedCommitments /v1/commitments/plan/{planId}/apply: post: summary: 'WORK-IN-PROGRESS: Executes a commitment purchase plan, initiating the commitment purchase process.' operationId: GuaranteedCommitments_CommitmentsPlanApply responses: '200': description: A successful response. schema: $ref: '#/definitions/v1CommitmentPlanDetails' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: planId in: path required: true type: string - name: body in: body required: true schema: $ref: '#/definitions/GuaranteedCommitmentsCommitmentsPlanApplyBody' tags: - GuaranteedCommitments /v1/commitments/purchaseplans: get: summary: 'WORK-IN-PROGRESS: Retrieves purchase plan of a company.' operationId: GuaranteedCommitments_ListPurchasePlansBySegment responses: '200': description: A successful response. schema: $ref: '#/definitions/v1ListPurchasePlansBySegmentResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' tags: - GuaranteedCommitments /v1/commitments/purchaseplans/availabletypes: get: summary: 'WORK-IN-PROGRESS: Only works for Alphaus for now. Retrieves the available commitment types for a given provider.' operationId: GuaranteedCommitments_GetAvailableCommitmentTypes responses: '200': description: A successful response. schema: $ref: '#/definitions/v1GetAvailableCommitmentTypesResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: provider description: 'Required. The cloud provider to query available types for. Acceptable values: "aws", "azure", "gcp".' in: query required: false type: string tags: - GuaranteedCommitments /v1/commitments/purchaseplans/custom: post: summary: 'WORK-IN-PROGRESS: Only works for Alphaus for now. Creates a custom (top-down) commitment purchase plan.' operationId: GuaranteedCommitments_CreateCustomCommitmentPlan responses: '200': description: A successful response. schema: $ref: '#/definitions/v1CreateCustomCommitmentPlanResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: body description: CreateCustomCommitmentPlanRequest creates a new top-down custom commitment plan. in: body required: true schema: $ref: '#/definitions/v1CreateCustomCommitmentPlanRequest' tags: - GuaranteedCommitments /v1/commitments/purchaseplans/draft: get: summary: 'WORK-IN-PROGRESS: Retrieves the drafted purchase plans' operationId: GuaranteedCommitments_ListDraftPurchasePlans responses: '200': description: A successful response. schema: $ref: '#/definitions/v1ListDraftPurchasePlansResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: isDraft description: If set to true, returns plans with Draft status. If set to false, returns plans with Submitted and Executed status. in: query required: false type: boolean - name: companyId in: query required: false type: string tags: - GuaranteedCommitments /v1/commitments/purchaseplans/draft/{draftPlanId}: delete: summary: 'WORK-IN-PROGRESS: Deletes a drafted purchase plan.' operationId: GuaranteedCommitments_DeleteDraftPurchasePlan responses: '200': description: A successful response. schema: $ref: '#/definitions/v1DeleteDraftPurchasePlanResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: draftPlanId description: Required. The draft plan ID to delete. in: path required: true type: string - name: companyId in: query required: false type: string tags: - GuaranteedCommitments /v1/commitments/purchaseplans/draft/{planId}: post: summary: 'WORK-IN-PROGRESS: Saves a commitment purchase plan as draft.' operationId: GuaranteedCommitments_SaveCommitmentsPlanAsDraft responses: '200': description: A successful response. schema: $ref: '#/definitions/v1DefaultPurchasePlan' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: planId description: Required. The commitment purchase plan ID to save as draft. in: path required: true type: string - name: body in: body required: true schema: $ref: '#/definitions/GuaranteedCommitmentsSaveCommitmentsPlanAsDraftBody' tags: - GuaranteedCommitments /v1/commitments/purchaseplans/{planId}: get: summary: 'WORK-IN-PROGRESS: Retrieves full details of a specific purchase plan of a company. Includes the basic info, detailed metrics, commitment line items, covered infrastructure resource matches, and audit history.' operationId: GuaranteedCommitments_GetPurchasePlansDetails responses: '200': description: A successful response. schema: $ref: '#/definitions/v1GetPurchasePlansDetailsResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: planId in: path required: true type: string tags: - GuaranteedCommitments /v1/commitments/purchaseplans:update: post: summary: 'WORK-IN-PROGRESS: Get the updated details of the plan after the apply plan.' operationId: GuaranteedCommitments_GetUpdatedPurchasePlansBySegment responses: '200': description: A successful response. schema: $ref: '#/definitions/v1GetUpdatedPurchasePlansBySegmentResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: body in: body required: true schema: $ref: '#/definitions/v1GetUpdatedPurchasePlansBySegmentRequest' tags: - GuaranteedCommitments /v1/commitments/resources: get: summary: 'WORK-IN-PROGRESS: Only works for Alphaus for now. Retrieves a paginated list of reservable infrastructure resources for a segment. Supports filtering, sorting, and a date range for usage aggregation.' operationId: GuaranteedCommitments_ListReservableResources responses: '200': description: A successful response. schema: $ref: '#/definitions/v1ListReservableResourcesResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: companyId description: "Required. The company ID to scope the query to.\n\n// Optional. Field to sort by. Example: \"ondemand_cost\".\n string orderBy = 2;\n // Optional. If true, sort in descending order.\n bool desc = 3;\n // Optional. URL-encoded JSON filter expression.\n // Example (decoded): {\"and\":[{\"and\":[{\"field\":\"covered_usage\",\"op\":\"<\",\"value\":1}]},{\"and\":[{\"field\":\"is_reservable\",\"op\":\"=\",\"value\":\"true\"}]}]}\n string filter = 4;\n // Required. Start of the usage lookback window (YYYY-MM-DD).\n string startDate = 5;\n // Required. End of the usage lookback window (YYYY-MM-DD).\n string endDate = 6;\n // Optional. Page number (1-based).\n int32 page = 7;\n // Optional. Number of results per page.\n int32 pageSize = 8;" in: query required: false type: string tags: - GuaranteedCommitments /v1/commitments/{commitmentId}/chart: get: summary: 'WORK-IN-PROGRESS: Generates time-series chart data for commitment metrics over the specified time period.' operationId: GuaranteedCommitments_GetCommitmentsChart responses: '200': description: A successful response. schema: $ref: '#/definitions/v1CommitmentsChartResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: commitmentId description: Required. The commitment id. in: path required: true type: string - name: groupBy description: Required. The group filter. Available filters include `region`, `service`, `instanceType`, `instanceTypeFamily`, `usageType` and `operation`. in: query required: false type: string - name: startDate in: query required: false type: string - name: endDate in: query required: false type: string tags: - GuaranteedCommitments /v1/commitments/{commitmentId}/utilization: get: summary: 'WORK-IN-PROGRESS: Generates utilization data for commitment over the active period.' operationId: GuaranteedCommitments_GetCommitmentsUtilization responses: '200': description: A successful response. schema: $ref: '#/definitions/v1CommitmentsUtilizationResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: commitmentId description: Required. The commitment id. in: path required: true type: string tags: - GuaranteedCommitments /v1/managements/accounts: get: summary: 'WORK-IN-PROGRESS: Lists payer accounts associated with the organization. Retrieves all payer accounts linked to the organization, including their status and associated segments.' operationId: GuaranteedCommitments_ListPayerAccounts responses: '200': description: A successful response. schema: $ref: '#/definitions/v1ListPayerAccountsResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' tags: - GuaranteedCommitments /v1/managements/accounts/status: get: operationId: GuaranteedCommitments_GetPayerAccountStatus responses: '200': description: A successful response. schema: $ref: '#/definitions/v1GetPayerAccountStatusResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' tags: - GuaranteedCommitments /v1/managements/accounts/{companyId}: post: operationId: GuaranteedCommitments_SetPayerAccountEnabled responses: '200': description: A successful response. schema: $ref: '#/definitions/v1SetPayerAccountEnabledResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: companyId in: path required: true type: string - name: body in: body required: true schema: $ref: '#/definitions/GuaranteedCommitmentsSetPayerAccountEnabledBody' tags: - GuaranteedCommitments /v1/managements/billinggroups: get: operationId: GuaranteedCommitments_ListBillingGroups responses: '200': description: A successful response. schema: $ref: '#/definitions/v1ListBillingGroupsResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' tags: - GuaranteedCommitments /v1/managements/billinggroups/status: get: operationId: GuaranteedCommitments_GetBillingGroupStatus responses: '200': description: A successful response. schema: $ref: '#/definitions/v1GetBillingGroupStatusResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' tags: - GuaranteedCommitments /v1/managements/billinggroups/terms:accept: post: operationId: GuaranteedCommitments_AcceptBillingGroupTerms responses: '200': description: A successful response. schema: $ref: '#/definitions/v1AcceptBillingGroupTermsResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: body in: body required: true schema: $ref: '#/definitions/v1AcceptBillingGroupTermsRequest' tags: - GuaranteedCommitments /v1/managements/billinggroups/{companyId}: post: operationId: GuaranteedCommitments_SetBillingGroupStatus responses: '200': description: A successful response. schema: $ref: '#/definitions/v1SetBillingGroupStatusResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: companyId in: path required: true type: string - name: body in: body required: true schema: $ref: '#/definitions/GuaranteedCommitmentsSetBillingGroupStatusBody' tags: - GuaranteedCommitments /v1/metrics: get: summary: 'WORK-IN-PROGRESS: Do not use. Retrieves key performance metrics for cloud commitments.' operationId: GuaranteedCommitments_GetMetrics responses: '200': description: A successful response. schema: $ref: '#/definitions/v1MetricsResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: provider in: query required: false type: string enum: - PROVIDER_UNSPECIFIED - AWS - AZURE - GCP - KUBERNETES - UNKNOWN default: PROVIDER_UNSPECIFIED tags: - GuaranteedCommitments /v1/onboarding: post: summary: 'WORK-IN-PROGRESS: Registers a new child organization under the channel partner. Creates the organization, sets up user memberships, and establishes the partnership relationship.' operationId: GuaranteedCommitments_RegisterOrg responses: '200': description: A successful response. schema: $ref: '#/definitions/v1RegisterOrgResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: body in: body required: true schema: $ref: '#/definitions/v1RegisterOrgRequest' tags: - GuaranteedCommitments /v1/onboarding/aws/cftemplate/guaranteed: post: summary: CreateGuaranteedCommitmentAccess verifies and registers a deployed guaranteed CloudFormation stack. operationId: GuaranteedCommitments_CreateGuaranteedCommitmentAccess responses: '200': description: A successful response. schema: $ref: '#/definitions/v1CreateGuaranteedCommitmentAccessResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: body in: body required: true schema: $ref: '#/definitions/v1CreateGuaranteedCommitmentAccessRequest' tags: - GuaranteedCommitments /v1/onboarding/aws/cftemplate/guaranteed:url: get: summary: 'GetGuaranteedCommitmentTemplateUrl returns a CloudFormation launch URL for deploying both Alphaus (Ripple) and Archera IAM roles in a single stack.' operationId: GuaranteedCommitments_GetGuaranteedCommitmentTemplateUrl responses: '200': description: A successful response. schema: $ref: '#/definitions/v1GetGuaranteedCommitmentTemplateUrlResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: externalId description: The guaranteed-commitments-provided external ID for the guaranteed-commitments IAM role trust policy. in: query required: false type: string tags: - GuaranteedCommitments /v1/onboarding/aws/cloudformation/launchstackurl: get: summary: 'WORK-IN-PROGRESS: Generates AWS CloudFormation launch stack URL. Creates a pre-configured URL to deploy the CloudFormation stack in the AWS console.' operationId: GuaranteedCommitments_GetAwsLaunchStackUrl responses: '200': description: A successful response. schema: $ref: '#/definitions/v1GetAwsLaunchStackUrlResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: billingGroupId description: 'Optional: if present => MSP customer (3rd layer), else MSP-level org (2nd layer)' in: query required: false type: string - name: companyId in: query required: false type: string - name: gcOrgId in: query required: false type: string - name: payerAccountId in: query required: false type: string - name: payerAccountName in: query required: false type: string tags: - GuaranteedCommitments /v1/onboarding/aws/cloudformation/template: get: summary: 'WORK-IN-PROGRESS: Generates CloudFormation template for AWS integration. Creates the necessary IAM role and policy template for setting up AWS access.' operationId: GuaranteedCommitments_GetAwsCloudFormationTemplate responses: '200': description: A successful response. schema: $ref: '#/definitions/v1GetAwsCloudFormationTemplateResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: billingGroupId description: 'Optional: if present => MSP customer (3rd layer), else MSP-level org (2nd layer)' in: query required: false type: string - name: companyId in: query required: false type: string - name: gcOrgId in: query required: false type: string - name: payerAccountId in: query required: false type: string - name: payerAccountName in: query required: false type: string tags: - GuaranteedCommitments /v1/onboarding/aws/privateoffer/{payerAccountId}: get: summary: 'Retrieves the AWS Marketplace private offer details for a payer account. Used by the onboarding "Accept Private Offer" step.' operationId: GuaranteedCommitments_GetAwsPrivateOffer responses: '200': description: A successful response. schema: $ref: '#/definitions/v1GetAwsPrivateOfferResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: payerAccountId description: Required. The AWS payer account ID that the private offer targets. in: path required: true type: string - name: recreate description: 'Optional. If true, recreate the private offer when the existing row is in a retryable terminal state: FAILED, EXPIRED, or WITHDRAWN. ACCEPTED, PENDING, and CREATING are not recreated.' in: query required: false type: boolean tags: - GuaranteedCommitments /v1/onboarding/aws/start: post: summary: 'WORK-IN-PROGRESS: Starts the onboarding process for an organization. Creates or retrieves an onboarding record and sets the provider to AWS.' operationId: GuaranteedCommitments_StartAwsOnboarding responses: '200': description: A successful response. schema: $ref: '#/definitions/v1StartAwsOnboardingResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: body in: body required: true schema: $ref: '#/definitions/v1StartAwsOnboardingRequest' tags: - GuaranteedCommitments /v1/onboarding/aws/verify: post: summary: 'WORK-IN-PROGRESS: Runs AWS onboarding verification process. Creates a new CUR or uses an existing CUR and verifies AWS integration setup and returns validation status for all required features.' operationId: GuaranteedCommitments_VerifyAwsOnboarding responses: '200': description: A successful response. schema: $ref: '#/definitions/v1VerifyAwsOnboardingResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: body in: body required: true schema: $ref: '#/definitions/v1VerifyAwsOnboardingRequest' tags: - GuaranteedCommitments /v1/onboarding/azure/integration: post: summary: 'WORK-IN-PROGRESS: Creates the Azure cloud integration after all onboarding steps complete.' operationId: GuaranteedCommitments_CreateAzureIntegration responses: '200': description: A successful response. schema: $ref: '#/definitions/v1CreateAzureIntegrationResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: body description: 'CreateAzureIntegrationRequest creates the final Azure integration (Step 8). Ripple fields are stored alongside Archera integration data to link the Azure tenant to the correct Ripple billing group/company/payer context.' in: body required: true schema: $ref: '#/definitions/v1CreateAzureIntegrationRequest' tags: - GuaranteedCommitments /v1/onboarding/azure/integrations: get: summary: 'WORK-IN-PROGRESS: Lists Azure integrations to verify onboarding completion.' operationId: GuaranteedCommitments_ListAzureIntegrations responses: '200': description: A successful response. schema: $ref: '#/definitions/v1ListAzureIntegrationsResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: gcOrgId description: Required. Archera org ID. in: query required: false type: string tags: - GuaranteedCommitments /v1/onboarding/azure/start: post: summary: 'WORK-IN-PROGRESS: Starts the Azure onboarding process. Creates an onboarding record in Archera for the given org and returns the onboardingId. Stores the Ripple billingGroupId/companyId association for later use.' operationId: GuaranteedCommitments_StartAzureOnboarding responses: '200': description: A successful response. schema: $ref: '#/definitions/v1StartAzureOnboardingResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: body description: 'StartAzureOnboardingRequest initiates Azure onboarding (Step 1). Ripple fields are required to link this Azure tenant to the correct Ripple billing group and company for cost attribution and management.' in: body required: true schema: $ref: '#/definitions/v1StartAzureOnboardingRequest' tags: - GuaranteedCommitments /v1/onboarding/azure/{onboardingId}/accounts: get: summary: 'WORK-IN-PROGRESS: Lists the available Azure subscriptions or billing accounts for the user to select during onboarding.' operationId: GuaranteedCommitments_ListAzureOnboardingAccounts responses: '200': description: A successful response. schema: $ref: '#/definitions/v1ListAzureOnboardingAccountsResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: onboardingId description: Required. The onboarding ID. in: path required: true type: string - name: gcOrgId description: Required. Archera org ID. in: query required: false type: string tags: - GuaranteedCommitments /v1/onboarding/azure/{onboardingId}/authurl: get: summary: 'WORK-IN-PROGRESS: Returns the Azure OAuth URL the user must visit to authorize Archera.' operationId: GuaranteedCommitments_GetAzureOnboardingAuthUrl responses: '200': description: A successful response. schema: $ref: '#/definitions/v1GetAzureOnboardingAuthUrlResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: onboardingId description: Required. The onboarding ID. in: path required: true type: string - name: gcOrgId description: Required. Archera org ID. in: query required: false type: string - name: tenantId description: Azure tenant ID. in: query required: false type: string - name: subscriptionId description: Azure management subscription ID. in: query required: false type: string tags: - GuaranteedCommitments /v1/onboarding/azure/{onboardingId}/validate: post: summary: 'WORK-IN-PROGRESS: Validates that the Azure app was installed and the user authorized it.' operationId: GuaranteedCommitments_ValidateAzureAppInstall responses: '200': description: A successful response. schema: $ref: '#/definitions/v1AzureOnboardingState' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: onboardingId description: Required. The onboarding ID. in: path required: true type: string - name: body in: body required: true schema: $ref: '#/definitions/GuaranteedCommitmentsValidateAzureAppInstallBody' tags: - GuaranteedCommitments /v1/onboarding/azure/{onboardingId}:update: post: summary: 'WORK-IN-PROGRESS: Updates the Azure onboarding record.' operationId: GuaranteedCommitments_UpdateAzureOnboarding responses: '200': description: A successful response. schema: $ref: '#/definitions/v1AzureOnboardingState' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: onboardingId description: Required. The onboarding ID returned from StartAzureOnboarding. in: path required: true type: string - name: body in: body required: true schema: $ref: '#/definitions/GuaranteedCommitmentsUpdateAzureOnboardingBody' tags: - GuaranteedCommitments /v1/onboarding/billinggroup:validate: post: operationId: GuaranteedCommitments_ValidateBillingGroup responses: '200': description: A successful response. schema: $ref: '#/definitions/v1ValidateBillingGroupResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: body in: body required: true schema: $ref: '#/definitions/v1ValidateBillingGroupRequest' tags: - GuaranteedCommitments /v1/onboarding/status:read: post: summary: 'WORK-IN-PROGRESS: Retrieves the latest onboarding status for: - an MSP - a company under an MSP - a payer account under an MSP' operationId: GuaranteedCommitments_GetOnboardingStatus responses: '200': description: A successful response. schema: $ref: '#/definitions/v1GetOnboardingStatusResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: body in: body required: true schema: $ref: '#/definitions/v1GetOnboardingStatusRequest' tags: - GuaranteedCommitments /v1/organizations:read: post: summary: 'WORK-IN-PROGRESS: List all the registered orgs' operationId: GuaranteedCommitments_ListOrgs responses: '200': description: A successful response.(streaming responses) schema: type: object properties: result: $ref: '#/definitions/gcV1Org' error: $ref: '#/definitions/rpcStatus' title: Stream result of gcV1Org default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: body in: body required: true schema: $ref: '#/definitions/v1ListOrgsRequest' tags: - GuaranteedCommitments /v1/reports/invoice/{month}/accounts:read: post: summary: Reads per-account commitment report details for a specific month. Only available in Ripple. operationId: GuaranteedCommitments_ReadCommitmentReportAccounts responses: '200': description: A successful response.(streaming responses) schema: type: object properties: result: $ref: '#/definitions/v1CommitmentReportAccount' error: $ref: '#/definitions/rpcStatus' title: Stream result of v1CommitmentReportAccount default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: month description: 'Required. The billing month. Format: `yyyymm`.' in: path required: true type: string - name: body in: body required: true schema: $ref: '#/definitions/GuaranteedCommitmentsReadCommitmentReportAccountsBody' tags: - GuaranteedCommitments /v1/reports/invoice:read: post: summary: Reads monthly commitment reports for the MSP. Only available in Ripple. operationId: GuaranteedCommitments_ReadCommitmentReports responses: '200': description: A successful response.(streaming responses) schema: type: object properties: result: $ref: '#/definitions/v1CommitmentReport' error: $ref: '#/definitions/rpcStatus' title: Stream result of v1CommitmentReport default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: body in: body required: true schema: $ref: '#/definitions/v1ReadCommitmentReportsRequest' tags: - GuaranteedCommitments /v1/resources: get: summary: 'WORK-IN-PROGRESS: Do not use. Retrieves a list of infrastructure resources for the organization.' operationId: GuaranteedCommitments_ListResources responses: '200': description: A successful response. schema: $ref: '#/definitions/v1ListResourcesResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: provider in: query required: false type: string enum: - PROVIDER_UNSPECIFIED - AWS - AZURE - GCP - KUBERNETES - UNKNOWN default: PROVIDER_UNSPECIFIED - name: segmentId in: query required: false type: string - name: search in: query required: false type: string - name: desc in: query required: false type: boolean - name: orderBy in: query required: false type: string - name: page in: query required: false type: integer format: int32 - name: pageSize in: query required: false type: integer format: int32 tags: - GuaranteedCommitments /v1/resources/{resourceId}/dailyusage: get: summary: 'WORK-IN-PROGRESS: Do not use. Retrieves daily usage data for a specific resource within the specified date range.' operationId: GuaranteedCommitments_GetResourceDailyUsage responses: '200': description: A successful response. schema: $ref: '#/definitions/v1GetResourceDailyUsageResponse' default: description: An unexpected error response. schema: $ref: '#/definitions/rpcStatus' parameters: - name: resourceId in: path required: true type: string - name: startDate in: query required: false type: string - name: endDate in: query required: false type: string - name: catalogSkuId in: query required: false type: string - name: page in: query required: false type: integer format: int32 - name: pageSize in: query required: false type: integer format: int32 tags: - GuaranteedCommitments definitions: GuaranteedCommitmentsCommitmentsPlanApplyBody: type: object v1CommitmentPlanLineItem: type: object properties: id: type: string planId: type: string offerId: type: string leaseMenuItemId: type: string accountId: type: string recommendedQuantity: type: number format: double selectedQuantity: type: number format: double recommendedCommitment: type: number format: double selectedCommitment: type: number format: double isSelected: type: boolean afterAmortizedCost: type: number format: double upfrontCost: type: number format: double recurringCost: type: number format: double beforeCost: type: number format: double beforeOndemandCost: type: number format: double beforeReservedCost: type: number format: double coveredOndemandCost: type: number format: double afterCoveredUnits: type: number format: double totalCost: type: number format: double monthlyCost: type: number format: double savings: type: number format: double monthlySavings: type: number format: double totalSavings: type: number format: double fee: type: number format: double discountRate: type: number format: double breakevenHours: type: number format: double contractTerm: type: string paymentOption: type: string contractSpec: type: object offer: type: object renewalReservationId: type: string coveredUnits: type: number format: double amortizedCost: type: number format: double AwsOnboardingFeatureCheckAwsOnboardingFeatureStatus: type: string enum: - AWS_ONBOARDING_FEATURE_STATUS_UNSPECIFIED - AWS_ONBOARDING_FEATURE_STATUS_AVAILABLE - AWS_ONBOARDING_FEATURE_STATUS_WARNING - AWS_ONBOARDING_FEATURE_STATUS_MISSING - AWS_ONBOARDING_FEATURE_STATUS_UNKNOWN default: AWS_ONBOARDING_FEATURE_STATUS_UNSPECIFIED v1GetAwsLaunchStackUrlResponse: type: object properties: url: type: string v1AzureArcheraOrg: type: object properties: applyBalanceToPremiums: type: boolean authSsoOnly: type: boolean awsMarketplaceOfferLink: {} azureMarketplaceOfferLink: {} balance: type: number format: double billingActive: type: boolean channelPartnerType: type: string channelPartnership: {} contractEnd: {} createdAt: type: string currency: {} defaultUserRole: type: string discountInfo: {} domain: type: string effectiveDate: {} featureStatuses: type: array items: type: object $ref: '#/definitions/v1AzureArcheraOrgFeatureStatus' features: type: array items: type: string frugalMode: {} gcpMarketplaceOfferLink: {} hasDiscount: type: boolean hasGris: type: boolean hasTdsPacProxyCredentials: type: boolean id: type: string isLeaseBuybackAutomated: type: boolean isLeaseSwapAutomated: type: boolean isTdsPacProxy: type: boolean leaseBudget: $ref: '#/definitions/v1AzureArcheraOrgLeaseBudget' leaseBuybackLookbackDays: type: integer format: int32 leaseSwapLookbackDays: type: integer format: int32 name: type: string partnerId: {} planTrial: type: boolean planTrialExpires: type: string planTypeChosen: type: string planTypeEffective: type: string primaryAddress: {} promotionCode: {} providerRootSegmentIds: type: object additionalProperties: type: string title: 'Maps provider name to segment ID, e.g. {"aws": "...", "azure": "...", "unknown": "..."}' description: 'AzureArcheraOrg is the full Archera org object. Received from StartAzureOnboarding response and must be echoed back verbatim on every UpdateAzureOnboarding and ValidateAzureAppInstall call.' v1AzureArcheraOrgLeaseBudget: type: object properties: budget: type: number format: double createdAt: type: string minTermMonths: type: integer format: int32 description: AzureArcheraOrgLeaseBudget is the lease budget config within the Archera org object. v1PlanHistoryUser: type: object properties: id: type: string username: type: string fullName: type: string v1OrgUser: type: object properties: email: type: string role: type: string v1CreateAzureIntegrationRequest: type: object properties: gcOrgId: type: string description: Required. Archera org ID. billingGroupId: type: string description: Ripple billing group ID — links this Azure integration to the Ripple billing group. companyId: type: string description: Ripple company ID — links this Azure integration to the Ripple company/customer. payerAccountId: type: string description: Ripple payer account ID — if applicable, the payer account this Azure spend rolls up to. type: type: string description: Integration type, always "cloud/azure". tenantId: type: string subscriptionId: type: string onboardingId: type: string accountKind: type: string title: '"subscription" or "billing_account"' accountIds: type: array items: type: string blobContainer: type: string resourceGroup: type: string storageAccount: type: string roleName: type: string resourceGroupRegion: {} storageAccountRegion: {} resourceGroupTags: {} storageAccountTags: {} description: 'CreateAzureIntegrationRequest creates the final Azure integration (Step 8). Ripple fields are stored alongside Archera integration data to link the Azure tenant to the correct Ripple billing group/company/payer context.' v1RegisterOrgResponse: type: object properties: id: type: string name: type: string memberships: type: array items: type: object $ref: '#/definitions/v1Membership' title: GuaranteedCommitments create-org response fields domain: type: string primaryAddress: $ref: '#/definitions/v1Address' awsMarketplaceOfferLink: type: string azureMarketplaceOfferLink: type: string gcpMarketplaceOfferLink: type: string v1StartAwsOnboardingResponse: type: object properties: onboardingId: type: string v1GetResourceDailyUsageResponse: type: object properties: dailyUsage: type: array items: type: object $ref: '#/definitions/v1ResourceDailyUsage' v1ValidateBillingGroupRequest: type: object properties: companyId: type: string description: Required. Company identifier. newVersion: type: boolean description: 'temporarily required until we fully transition to the new onboarding flow. This is to avoid any breaks or crash during the transition. Will be removed once the transition is complete. Default value is false.' GuaranteedCommitmentsSetPayerAccountEnabledBody: type: object properties: enabled: type: boolean v1DeleteDraftPurchasePlanResponse: type: object properties: planId: type: string title: The ID of the deleted plan success: type: boolean title: Indicates if the plan was successfully deleted GuaranteedCommitmentsValidateAzureAppInstallBody: type: object properties: gcOrgId: type: string description: Required. The Archera org ID. type: type: string description: '---- Azure resource config fields ---- Integration type, always "cloud/azure".' tenantId: type: string subscriptionId: type: string accountKind: type: string title: '"subscription" or "billing_account"' accountIds: type: array items: type: string blobContainer: type: string resourceGroup: type: string storageAccount: type: string roleName: type: string resourceGroupRegion: {} storageAccountRegion: {} resourceGroupTags: {} storageAccountTags: {} completed: type: boolean title: '---- Archera onboarding state fields (echo back from start/get response) ----' createdAt: type: string createdBy: $ref: '#/definitions/v1AzureOnboardingCreatedBy' integration: {} integrationId: type: string provider: type: string description: Always "azure". org: $ref: '#/definitions/v1AzureArcheraOrg' description: 'The full Archera org object received from StartAzureOnboarding response. Must be echoed back verbatim.' v1CreateGuaranteedCommitmentAccessResponse: type: object properties: target: type: string description: Target environment for the access configuration (for example, AWS account ID or organization). rippleRoleArn: type: string description: ARN of the Ripple/Alphaus IAM role to be assumed for managing guaranteed commitments. rippleExternalId: type: string description: External ID required to assume the Ripple/Alphaus IAM role. guaranteedCommitmentRoleArn: type: string description: ARN of the customer's IAM role used specifically for guaranteed-commitment operations. guaranteedCommitmentExternalId: type: string description: External ID required to assume the guaranteed-commitment IAM role. stackId: type: string description: CloudFormation stack ID created or used during the access configuration. stackRegion: type: string description: AWS region where the CloudFormation stack is deployed (for example, "us-east-1"). templateUrl: type: string description: URL of the CloudFormation template used to create or update the stack. status: type: string description: Current status of the access configuration or underlying CloudFormation stack. lastUpdated: type: string description: Last update time of this configuration, typically as an ISO 8601 timestamp. guaranteedCommitmentVerified: type: boolean description: Whether the guaranteed commitment role was successfully verified during registration. v1GetOnboardingStatusRequest: type: object properties: billingGroupId: type: string title: 'Optional: - all empty => MSP-level onboarding row - companyId set => company flow - payerAccountId set => payer-account flow billingGroupId may accompany company flow' companyId: type: string payerAccountId: type: string v1ValidateBillingGroupResponse: type: object properties: ok: type: boolean description: True if the company is allowed to proceed with onboarding; false otherwise. message: type: string description: Optional human-readable reason when ok=false. code: type: string description: Optional machine-readable code for programmatic handling when ok=false. details: type: array items: type: string description: Optional values that can be shown in translated messages. v1GetGuaranteedCommitmentTemplateUrlResponse: type: object properties: launchUrl: type: string description: CloudFormation console launch URL pre-filled with all parameters. templateUrl: type: string description: S3 URL of the CloudFormation template. stackName: type: string description: CloudFormation stack name. principal: type: string description: Alphaus AWS account principal. externalId: type: string description: Alphaus/Ripple external ID for role assumption. guaranteedCommitmentPrincipal: type: string description: Guaranteed commitment AWS principal ARN. guaranteedCommitmentExternalId: type: string description: Guaranteed commitment external ID for role assumption. v1ListPurchasePlansBySegmentResponse: type: object properties: plans: type: array items: type: object $ref: '#/definitions/v1DefaultPurchasePlan' v1ServiceSummary: type: object properties: key: type: string name: type: string serviceName: type: string provider: type: string numCommitments: type: integer format: int32 currentCoverage: type: number format: double potentialCoverage: type: number format: double minCommitment: type: number format: double monthlyCommitment: type: number format: double upfrontCost: type: number format: double minSavings: type: number format: double maxSavings: type: number format: double monthlySavings: type: number format: double minTermHours: type: integer format: int32 maxTermHours: type: integer format: int32 griPremium: type: number format: double v1AwsExistingCur: type: object properties: region: type: string title: required if existingCur is provided bucket: type: string title: required if existingCur is provided prefix: type: string title: required if existingCur is provided reportName: type: string description: maps to "report_name" conceptually title: required if existingCur is provided v1GetPayerAccountStatusResponse: type: object properties: payerAccount: $ref: '#/definitions/ListPayerAccountsResponsePayerAccount' v1AzureIntegrationFeatureStatus: type: object properties: feature: type: string status: type: string title: '"available", "missing", "warning", "unknown"' detail: type: array items: type: string description: Detail strings or JSON describing why a feature is missing/warning. description: AzureIntegrationFeatureStatus is a single feature check for an Azure integration (Step 9). VerifyAwsOnboardingResponseAwsOnboardingFeatureCheck: type: object properties: feature: type: string status: $ref: '#/definitions/AwsOnboardingFeatureCheckAwsOnboardingFeatureStatus' v1ListBillingGroupsResponseBillingGroup: type: object properties: companyId: type: string billingGroupId: type: string billingGroupName: type: string companyName: type: string payerAccountId: type: string payerAccountName: type: string segmentId: type: string resourceType: type: string status: $ref: '#/definitions/ListBillingGroupsResponseBillingGroupStatus' onboardingStatus: $ref: '#/definitions/GetOnboardingStatusResponseOnboardingStatus' verificationChecks: type: array items: type: object $ref: '#/definitions/VerifyAwsOnboardingResponseAwsOnboardingFeatureCheck' v1CreateGuaranteedCommitmentAccessRequest: type: object properties: target: type: string description: The AWS account ID (payer/target) where the stack was deployed. externalId: type: string description: The guaranteed-commitments-provided external ID. ListPayerAccountsResponsePayerAccount: type: object properties: accountId: type: string accountName: type: string billingGroupId: type: string segmentId: type: string status: $ref: '#/definitions/ListPayerAccountsResponsePayerAccountStatus' companyId: type: string onboardingStatus: $ref: '#/definitions/GetOnboardingStatusResponseOnboardingStatus' title: Latest persisted onboarding status for this payer account (if any) verificationChecks: type: array items: type: object $ref: '#/definitions/VerifyAwsOnboardingResponseAwsOnboardingFeatureCheck' description: 'Detailed AWS verification results (best-effort) returned from the last VerifyAwsOnboarding call. This is used by the UI to "resume" the onboarding flow and show which verification checks passed/failed when a user comes back later (e.g., after stopping at verification). Empty when verification hasn''t been attempted yet or when no checks were persisted.' v1PayerAccountDetails: type: object properties: accountId: type: string accountName: type: string rippleRegistrationStatus: type: string gcSetupStatus: $ref: '#/definitions/GetOnboardingStatusResponseOnboardingStatus' title: Latest persisted guaranteed commitment setup/onboarding status for this payer account (if any) verificationChecks: type: array items: type: object $ref: '#/definitions/VerifyAwsOnboardingResponseAwsOnboardingFeatureCheck' description: 'Detailed AWS verification results (best-effort) returned from the last VerifyAwsOnboarding call. This is used by the UI to "resume" the onboarding flow and show which verification checks passed/failed when a user comes back later (e.g., after stopping at verification). Empty when verification hasn''t been attempted yet or when no checks were persisted.' marketplacePrivateOfferStatus: type: string description: 'AWS Marketplace private offer status for this payer account. Values: NOT_CREATED, CREATING, PENDING, ACCEPTED, EXPIRED, FAILED, WITHDRAWN.' marketplacePrivateOfferId: type: string description: Optional. AWS Marketplace offer ID if one has already been created. marketplacePrivateOfferExpirationDate: type: string description: Optional. Expiration date of the current private offer. v1SetBillingGroupStatusResponse: type: object properties: billingGroup: $ref: '#/definitions/v1ListBillingGroupsResponseBillingGroup' 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 }" v1AzureAccount: type: object properties: accountId: type: string accountName: type: string accountStatus: type: string accountType: type: string description: Azure account type, e.g. "FreeTrial_2014-09-01", "PayAsYouGo", etc. isEligible: type: boolean description: Whether this account is eligible for Archera onboarding. description: AzureAccount is one available subscription or billing account (Step 6). v1Commitment: type: object properties: id: type: string accountId: type: string amortizedCost: type: number format: double billingAccountId: type: string canRebate: type: boolean contractTerm: type: string displayName: type: string durationSeconds: type: number format: double effectiveInstanceCount: type: string format: int64 endDate: type: string instanceCount: type: string format: int64 instanceFamily: type: string instanceType: type: string isActive: type: boolean isFlexible: type: boolean isLeased: type: boolean isMultiAz: type: boolean leaseLockinDate: type: string leaseStart: type: string leasedDisplayName: type: string monthlyCost: type: number format: double monthlySavings: type: number format: double name: type: string netSavings: type: number format: double offeringId: type: string paymentOption: type: string potentialSavings: type: number format: double productDescription: type: string provider: type: string providerReservationId: type: string recurringCost: type: number format: double region: type: string renewalPlan: type: string reservationEnd: type: string reservationStart: type: string runningHours: type: number format: double savings: type: number format: double startDate: type: string status: type: string transferReservationEnd: type: string transferReservationStart: type: string type: type: string upfrontCost: type: number format: double utilization: type: number format: double GuaranteedCommitmentsUpdateAzureOnboardingBody: type: object properties: gcOrgId: type: string description: Required. Archera org ID. billingGroupId: type: string description: Ripple billing group ID (needed to persist Ripple context). companyId: type: string description: Ripple company ID. tenantId: type: string description: Azure fields — set only those that are being updated for this step. subscriptionId: type: string accountKind: type: string title: '"subscription" or "billing_account"' accountIds: type: array items: type: string blobContainer: type: string resourceGroup: type: string storageAccount: type: string roleName: type: string resourceGroupRegion: {} storageAccountRegion: {} resourceGroupTags: {} storageAccountTags: {} completed: type: boolean title: '---- Archera onboarding state fields (echo back from start/get response) ----' createdAt: type: string createdBy: $ref: '#/definitions/v1AzureOnboardingCreatedBy' integration: description: Linked integration object; null until integration is created. integrationId: type: string provider: type: string description: Always "azure". org: $ref: '#/definitions/v1AzureArcheraOrg' description: 'The full Archera org object received from StartAzureOnboarding response. Must be echoed back verbatim on every PATCH call.' v1SetPayerAccountEnabledResponse: type: object properties: payerAccount: $ref: '#/definitions/ListPayerAccountsResponsePayerAccount' title: Updated payer account row (same shape as list) ListBillingGroupsResponseBillingGroupStatus: type: string enum: - BILLING_GROUP_STATUS_UNSPECIFIED - BILLING_GROUP_STATUS_ENABLED - BILLING_GROUP_STATUS_DISABLED default: BILLING_GROUP_STATUS_UNSPECIFIED v1GetAwsCloudFormationTemplateResponse: type: object properties: template: type: object title: CloudFormation template JSON object v1TermsAcceptance: type: object properties: accepted: type: boolean acceptedAt: type: string acceptedBy: type: string description: TermsAcceptance represents the current terms acceptance state for an entity. v1Segment: type: object properties: id: type: string name: type: string provider: $ref: '#/definitions/v1Provider' isDefault: type: boolean createdAt: type: string v1CommitmentsUtilizationData: type: object properties: utilizationDate: type: string cost: type: number format: double coveredCost: type: number format: double griFees: type: number format: double netSavings: type: number format: double potentialSavings: type: number format: double reservationUtilization: type: number format: double runningHours: type: number format: double savings: type: number format: double unutilizedCommitment: type: number format: double v1CommitmentReportAccount: type: object properties: billingGroupId: type: string billingGroupName: type: string accountId: type: string accountName: type: string cloud: type: string grossSavings: type: number format: double riskPremium: type: number format: double rebates: type: number format: double netSavings: type: number format: double revenueShare: type: number format: double v1CommitmentsChartResponse: type: object properties: data: type: array items: type: object $ref: '#/definitions/v1CommitmentsChartData' v1AcceptBillingGroupTermsRequest: type: object v1GetAzureOnboardingAuthUrlResponse: type: object properties: url: type: string description: The Microsoft OAuth URL the user must open to authorize Archera. description: GetAzureOnboardingAuthUrlResponse contains the OAuth URL (Step 4). v1Address: type: object properties: line1: type: string title: 'required: ex. "123 Main St"' city: type: string title: 'required: ex. "Springfield"' state: type: string title: 'required: ex. "IL"' zip: type: string title: 'required: ex. "62701"' country: type: string title: 'required: ex. "USA"' line2: type: string title: 'optional: ex. "Apt 4B"' v1VerifyAwsOnboardingRequest: type: object properties: billingGroupId: type: string title: 'Optional: if present => MSP customer (3rd layer), else MSP-level org (2nd layer)' companyId: type: string gcOrgId: type: string onboardingId: type: string title: From /start response accountId: type: string title: AWS account id being onboarded/verified existingCur: $ref: '#/definitions/v1AwsExistingCur' description: 'Optional: if set, GuaranteedCommitments will use this existing CUR. If omitted, GuaranteedCommitments may create a new CUR.' v1ListPayerAccountsResponse: type: object properties: payerAccounts: type: array items: type: object $ref: '#/definitions/ListPayerAccountsResponsePayerAccount' payerAccountDetails: type: array items: type: object $ref: '#/definitions/v1PayerAccountDetails' v1ListAzureOnboardingAccountsResponse: type: object properties: accounts: type: array items: type: object $ref: '#/definitions/v1AzureAccount' description: ListAzureOnboardingAccountsResponse returns accounts the user can select. v1GetAvailableCommitmentTypesResponse: type: object properties: types: type: array items: type: string description: 'List of available commitment type identifiers for the requested provider. Example values: "aws/AmazonEC2", "aws/AmazonRDS", "aws/AmazonElastiCache", "aws/savingsplan/Compute", "aws/savingsplan/EC2Instance", "aws/savingsplan/Database".' v1PlanSummary: type: object properties: key: type: string provider: type: string numCommitments: type: integer format: int32 minCommitment: type: number format: double monthlyCommitment: type: number format: double upfrontCost: type: number format: double minSavings: type: number format: double maxSavings: type: number format: double monthlySavings: type: number format: double minTermHours: type: integer format: int32 maxTermHours: type: integer format: int32 griPremiums: type: number format: double beforeOndemandCost: type: number format: double afterOndemandCost: type: number format: double ifAllOndemandCost: type: number format: double 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).' GuaranteedCommitmentsSetBillingGroupStatusBody: type: object properties: enabled: type: boolean newVersion: type: boolean description: 'temporarily required until we fully transition to the new onboarding flow. This is to avoid any breaks or crash during the transition. Will be removed once the transition is complete. Default value is false.' v1CommitmentsChartData: type: object properties: date: type: string chartKey: type: string chartValue: type: number format: double v1StartAwsOnboardingRequest: type: object properties: billingGroupId: type: string title: 'Optional: if present => MSP customer (3rd layer), else MSP-level org (2nd layer)' companyId: type: string gcOrgId: type: string payerAccountId: type: string payerAccountName: type: string v1ListOrgsRequest: type: object v1MetricsResponse: type: object properties: lifetimeSavings: type: number format: double mtdSavings: type: number format: double purchaseAutomationEnabled: type: boolean buybackAutomationEnabled: type: boolean hasActionedPlan: type: boolean hasPendingActions: type: boolean latestExecutionDate: type: string purchaseMissedSavings: type: number format: double buybackMissedSavings: type: number format: double totalDailyMissedSavings: type: number format: double hourlyMissedSavings: type: number format: double missedSavingsStartDate: type: string missedSavingsEndDate: type: string expiringSavings: type: number format: double coverage: type: number format: double utilization: type: number format: double v1VerifyAwsOnboardingResponse: type: object properties: checks: type: array items: type: object $ref: '#/definitions/VerifyAwsOnboardingResponseAwsOnboardingFeatureCheck' ListPayerAccountsResponsePayerAccountStatus: type: string enum: - PAYER_ACCOUNT_STATUS_UNSPECIFIED - PAYER_ACCOUNT_STATUS_ENABLED - PAYER_ACCOUNT_STATUS_DISABLED default: PAYER_ACCOUNT_STATUS_UNSPECIFIED v1StartAzureOnboardingRequest: type: object properties: billingGroupId: type: string description: Ripple billing group ID. If present => MSP customer (3rd layer), else MSP-level org (2nd layer). companyId: type: string description: Ripple company ID within the billing group. gcOrgId: type: string description: Required. Archera / GuaranteedCommitments org ID. tenantId: type: string description: Azure tenant ID. subscriptionId: type: string description: Azure management subscription ID. description: 'StartAzureOnboardingRequest initiates Azure onboarding (Step 1). Ripple fields are required to link this Azure tenant to the correct Ripple billing group and company for cost attribution and management.' blueapiGcV1Resource: type: object properties: id: type: string resourceId: type: string provider: $ref: '#/definitions/v1Provider' providerResourceId: type: string isSpot: type: boolean name: type: string resourceGroup: type: string usageEnd: type: string usageStart: type: string tags: type: object createdAt: type: string updatedAt: type: string instanceId: type: string billingAccountId: type: string subAccountId: type: string managementAccountId: type: string ownerAccountId: type: string skuTitle: type: string skuName: type: string availabilityZone: type: string cacheEngine: type: string databaseEngine: type: string description: type: string family: type: string fullRegionName: type: string hasOndemandTerms: type: boolean instanceType: type: string instanceTypeFamily: type: string isReservable: type: boolean licenseModel: type: string locationType: type: string normalizationSizeFactor: type: string operatingSystem: type: string preInstalledSw: type: string priceCurrency: type: string providerService: type: string providerSkuId: type: string publicationDate: type: string region: type: string service: type: string tenancy: type: string usageType: type: string version: type: string vpcNetworkingSupport: type: boolean ondemandUsageUnit: type: string gcV1Org: type: object properties: orgId: type: string name: type: string email: type: string v1ReservableResource: type: object properties: id: type: string resourceId: type: string billingAccountId: type: string subAccountId: type: string provider: type: string description: Cloud provider string, e.g. "aws". providerResourceId: type: string providerService: type: string providerSkuId: type: string isSpot: type: boolean isReservable: type: boolean name: description: Display name (nullable). resourceGroup: description: Resource group (nullable). usageEnd: type: string usageStart: type: string tags: type: object providerTags: type: object userTags: type: object createdAt: type: string updatedAt: type: string instanceId: type: string availabilityZone: description: Availability zone (nullable). cacheEngine: description: Cache engine (nullable). catalogSkuId: type: string catalogSkuOrgId: type: string classicNetworkingSupport: type: boolean clockSpeed: type: string commonUsageType: type: string coveredUsage: type: number format: double description: Fraction of usage covered by existing commitments (0.0–1.0). databaseEngine: description: Database engine (nullable). dedicatedEbsThroughput: type: string description: description: Description (nullable). ecu: type: string enhancedNetworkingSupported: type: boolean family: type: string fullRegionName: type: string hasOndemandTerms: type: boolean iconUrl: type: string integrationId: type: string intelAvx2Available: type: boolean intelAvxAvailable: type: boolean intelTurboAvailable: type: boolean io: description: IO descriptor (nullable). isCurrentGeneration: type: boolean isMultiAz: description: Multi-AZ flag (nullable). licenseModel: type: string locationType: type: string memory: type: string description: Memory in bytes as a string, e.g. "11274289152.0". skuName: description: SKU name (nullable). skuTitle: type: string netCost: type: number format: double netSavings: type: number format: double networkPerformance: type: string normalizationSizeFactor: type: string ondemandCost: type: number format: double ondemandUsageUnit: type: string operatingSystem: type: string operation: type: string physicalProcessor: type: string preInstalledSw: type: string priceCurrency: type: string processorArchitecture: type: string processorFeatures: type: string publicationDate: type: string region: type: string service: type: string source: type: string storage: type: string taxType: description: Tax type (nullable). tenancy: type: string uptime: type: number format: double description: Fraction of time the resource was running during the lookback period. usageType: type: string vcpu: type: string version: type: string vpcNetworkingSupport: type: boolean instanceType: type: string instanceTypeFamily: type: string dailyUsages: type: array items: type: object $ref: '#/definitions/v1ResourceDailyUsage' description: Per-day usage breakdown for the requested date range. description: "ReservableResource is a fully-detailed infrastructure resource returned by ListReservableResources.\nIt extends the basic resource shape with usage metrics, daily usage breakdown,\nand hardware/catalog attributes needed for the Reservable Infrastructure view.\n\nComposite ID formatted as\n \"{url_encoded_resource_id}|{url_encoded_catalog_sku_org_id}|{url_encoded_catalog_sku_id}\".\n Each component must be URL/percent-encoded before concatenation so embedded \"|\"\n characters do not break parsing. Consumers must split on \"|\" and URL-decode each part." v1Membership: type: object properties: role: type: string username: type: string v1AzureIntegration: type: object properties: id: type: string active: type: boolean name: type: string provider: type: string type: type: string description: Always "cloud/azure". orgId: type: string userId: type: string createdAt: type: string updatedAt: type: string managementSubscriptionId: type: string title: Azure-specific providerOrganizationId: type: string description: Azure tenant ID (stored as provider_organization_id in Archera). blobContainer: type: string resourceGroup: type: string storageAccount: type: string costExportFormat: type: string title: '"FOCUS" or "ActualCost"' curEarliestData: type: string title: CUR/data state curReportName: type: string curUsable: type: boolean hasCurAccess: type: boolean hasFullReservationAccess: type: boolean featureStatuses: type: array items: type: object $ref: '#/definitions/v1AzureIntegrationFeatureStatus' title: Feature verification checks onboardings: type: array items: type: object $ref: '#/definitions/v1AzureIntegrationOnboarding' title: Linked onboarding records config: type: object title: Flexible config blob (etl_enabled, use_vm_ris_not_sps, etc.) description: AzureIntegration is the full Azure cloud integration record from Archera. v1ResourceDailyUsage: type: object properties: date: type: string usageAccountId: type: string subAccountId: type: string usage: type: number format: double reservationUsage: type: number format: double freeTierUsage: type: number format: double ondemandCost: type: number format: double reservedCost: type: number format: double ifAllOndemandCost: type: number format: double spotCost: type: number format: double freeTierSavings: type: number format: double usageType: type: string commonUsageType: type: string coveredUsage: type: number format: double uptime: type: number format: double providerUsageType: type: string description: Provider-specific usage type label (e.g. "BoxUsage:c5n.xlarge"). GuaranteedCommitmentsReadCommitmentReportAccountsBody: type: object v1AzureOnboardingState: type: object properties: onboardingId: type: string description: Archera onboarding record ID. orgId: type: string description: Archera org ID. provider: type: string completed: type: boolean createdAt: type: string createdBy: $ref: '#/definitions/v1AzureOnboardingCreatedBy' integration: description: Linked integration object (null until integration is created). integrationId: type: string archeraOutboundIps: type: array items: type: string description: Outbound IPs Archera will use with this onboarding. tenantId: type: string title: Azure identity subscriptionId: type: string accountIds: type: array items: type: string accountKind: type: string title: '"subscription" or "billing_account"' appAuthValidated: title: Authorization state (nullable, use Value for JSON null interop) appAuthorized: {} blobContainer: type: string title: Azure resource configuration resourceGroup: type: string storageAccount: type: string roleName: type: string createResources: {} marketplaceCompleted: {} permissionLevel: {} resourceGroupRegion: {} storageAccountRegion: {} resourceGroupTags: {} storageAccountTags: {} org: $ref: '#/definitions/v1AzureArcheraOrg' description: 'The full Archera org object returned from Archera. Store this and pass it back verbatim on every UpdateAzureOnboarding and ValidateAzureAppInstall call.' description: 'AzureOnboardingState is the full Archera onboarding record state. Returned by StartAzureOnboarding, UpdateAzureOnboarding, ValidateAzureAppInstall.' v1GetUpdatedPurchasePlansBySegmentResponse: type: object properties: plans: type: array items: type: object $ref: '#/definitions/v1DefaultPurchasePlan' v1GetOnboardingStatusResponse: type: object properties: found: type: boolean title: Whether we found a corresponding row isMsp: type: boolean title: 'Convenience: derived from whether billingId is empty' provider: $ref: '#/definitions/v1Provider' description: Vendor saved at registration (aws/azure/gcp). Optional. gcOrgId: type: string title: 'The org id to use for Archera upstream calls: - MSP: mspArcheraOrgId - company: archeraOrgId' onboardingId: type: string title: Latest persisted onboarding ID (if any) onboardingStatus: $ref: '#/definitions/GetOnboardingStatusResponseOnboardingStatus' title: Latest persisted onboarding status accountId: type: string title: Latest persisted AWS account id (if any) billingGroupId: type: string companyId: type: string verificationChecks: type: array items: type: object $ref: '#/definitions/VerifyAwsOnboardingResponseAwsOnboardingFeatureCheck' description: 'Detailed AWS verification results (best-effort) returned from the last VerifyAwsOnboarding call. This is used by the UI to "resume" the onboarding flow and show which verification checks passed/failed when a user comes back later (e.g., after stopping at verification). Empty when verification hasn''t been attempted yet or when no checks were persisted.' termsAcceptance: $ref: '#/definitions/v1TermsAcceptance' v1PlanHistoryEntry: type: object properties: id: type: string message: type: string orgId: type: string relatedObjectId: type: string relatedObjectType: type: string timestamp: type: string type: type: string userId: type: string data: {} user: $ref: '#/definitions/v1PlanHistoryUser' v1AzureArcheraOrgFeatureStatus: type: object properties: detail: {} feature: type: string status: type: string updatedAt: type: string description: AzureArcheraOrgFeatureStatus is a single feature status entry within the Archera org object. v1ListResourcesResponse: type: object properties: resources: type: array items: type: object $ref: '#/definitions/blueapiGcV1Resource' v1ReadCommitmentReportsRequest: type: object v1DefaultPurchasePlan: type: object properties: id: type: string name: type: string description: type: string orgId: type: string segmentId: type: string segment: $ref: '#/definitions/v1Segment' status: type: string planType: type: string createdAt: type: string lastModified: type: string createdBy: {} executionPolicy: {} isDefault: type: boolean title: Flags isRecommended: type: boolean isRenewal: type: boolean isCalculating: type: boolean isLocked: type: boolean isSaved: type: boolean includedContractSpecs: type: array items: type: object $ref: '#/definitions/v1ContractSpec' title: Contract details includedContractTerms: type: array items: type: string maxTerm: type: string preferredPaymentOption: type: string maxUpfrontCost: type: number format: double minimumUpfrontInterestRate: type: number format: double recommendWithinCoveredAccounts: {} startDate: type: string title: Dates endDate: type: string dataSource: type: string beforeCost: type: number format: double title: Cost metrics afterCost: type: number format: double beforeOndemandCost: type: number format: double beforeReservedCost: type: number format: double coveredOndemandCost: type: number format: double amortizedCost: type: number format: double recurringCost: type: number format: double upfrontCost: type: number format: double totalCost: type: number format: double totalMonthlyBeforeCost: type: number format: double savings: type: number format: double title: Savings metrics monthlySavings: type: number format: double totalSavings: type: number format: double fee: type: number format: double commitmentCoverage: type: number format: double title: Coverage metrics minimumCommitmentCost: type: number format: double breakevenHours: type: number format: double aggregateMetrics: $ref: '#/definitions/v1AggregateMetrics' title: Aggregate data summaries: type: array items: type: object $ref: '#/definitions/v1PlanSummary' reservationIds: type: array items: type: string title: IDs resourceIds: type: array items: type: string flaggedActions: type: array items: type: string metaPlanId: type: string coverageId: type: string monthlyAfterCost: type: number format: double title: Monthly cost breakdowns (returned by CreateCustomCommitmentPlan and related endpoints) monthlyAmortizedCost: type: number format: double monthlyBeforeCost: type: number format: double monthlyFee: type: number format: double allTerms: type: array items: type: string description: All term keys present across the plan's line items. v1GetUpdatedPurchasePlansBySegmentRequest: type: object v1CommitmentReport: type: object properties: month: type: string billUnadjusted: type: number format: double billOptimized: type: number format: double grossSavings: type: number format: double riskPremium: type: number format: double rebates: type: number format: double netSavings: type: number format: double revenueShare: type: number format: double revenueShareRate: type: number format: double v1CommitmentsUtilizationResponse: type: object properties: data: type: array items: type: object $ref: '#/definitions/v1CommitmentsUtilizationData' v1AzureIntegrationOnboarding: type: object properties: id: type: string orgId: type: string provider: type: string integrationId: type: string completed: type: boolean createdAt: type: string createdBy: $ref: '#/definitions/v1AzureOnboardingCreatedBy' description: AzureIntegrationOnboarding is a summary of the onboarding linked to an integration. v1ListBillingGroupsResponse: type: object properties: billingGroups: type: array items: type: object $ref: '#/definitions/v1ListBillingGroupsResponseBillingGroup' v1CommitmentPlanResourceMatch: type: object properties: id: type: string totalUnits: type: number format: double beforeUncoveredUnits: type: number format: double afterCoveredUnits: type: number format: double afterUncoveredUnits: type: number format: double ondemandPrice: type: number format: double ifAllOndemandCost: type: number format: double beforeOndemandCost: type: number format: double afterOndemandCost: type: number format: double coveredOndemandCost: type: number format: double beforeReservedCost: type: number format: double afterReservedCost: type: number format: double beforeCost: type: number format: double afterCost: type: number format: double monthlyBeforeCost: type: number format: double monthlyAfterCost: type: number format: double monthlyAfterReservedCost: type: number format: double monthlyAfterOndemandCost: type: number format: double averageSavings: type: number format: double averageMonthlySavings: type: number format: double usageType: type: string coverage: type: number format: double resource: type: object coveredUnits: type: number format: double explanationUnmatched: type: number format: double ondemandCost: type: number format: double reservedCost: type: number format: double v1ListCommitmentsResponse: type: object properties: commitments: type: array items: type: object $ref: '#/definitions/v1Commitment' v1GetBillingGroupStatusResponse: type: object properties: billingGroup: $ref: '#/definitions/v1ListBillingGroupsResponseBillingGroup' termsAcceptance: $ref: '#/definitions/v1TermsAcceptance' v1ListDraftPurchasePlansResponse: type: object properties: plans: type: array items: type: object $ref: '#/definitions/v1DefaultPurchasePlan' v1CommitmentPlanDetails: type: object properties: id: type: string name: type: string description: type: string orgId: type: string createdAt: type: string isCalculating: type: boolean status: type: string maxTerm: type: string coveredOndemandCostHourly: type: number format: double beforeOndemandCostHourly: type: number format: double beforeReservedCostHourly: type: number format: double amortizedCostHourly: type: number format: double recurringCostHourly: type: number format: double upfrontCostHourly: type: number format: double beforeCostHourly: type: number format: double afterCostHourly: type: number format: double totalCostHourly: type: number format: double savingsHourly: type: number format: double feeHourly: type: number format: double commitmentCoverage: type: number format: double minimumCommitmentCost: type: number format: double breakevenHours: type: number format: double totalSavings: type: number format: double monthlySavings: type: number format: double totalMonthlyBeforeCost: type: number format: double v1ContractSpec: type: object properties: commitmentType: type: string paymentOption: type: string term: type: string properties: type: object v1ListAzureIntegrationsResponse: type: object properties: integrations: type: array items: type: object $ref: '#/definitions/v1AzureIntegration' description: ListAzureIntegrationsResponse contains all Azure integrations for the org (Step 9). v1AggregateMetrics: type: object properties: currentCoverage: type: number format: double potentialCoverage: type: number format: double summaries: type: object additionalProperties: $ref: '#/definitions/v1ServiceSummary' GetOnboardingStatusResponseOnboardingStatus: type: string enum: - ONBOARDING_STATUS_UNSPECIFIED - ONBOARDING_STATUS_NOT_REGISTERED - ONBOARDING_STATUS_REGISTERED - ONBOARDING_STATUS_ONBOARDING_STARTED - ONBOARDING_STATUS_VERIFIED - ONBOARDING_STATUS_VERIFY_INCOMPLETE - ONBOARDING_STATUS_VERIFY_FAILED default: ONBOARDING_STATUS_UNSPECIFIED title: "- ONBOARDING_STATUS_NOT_REGISTERED: No row found in archera_users (org not registered yet)\n - ONBOARDING_STATUS_REGISTERED: Existing statuses you already persist" v1AzureOnboardingCreatedBy: type: object properties: onboardingId: type: string username: type: string fullName: type: string description: AzureOnboardingCreatedBy identifies who triggered the onboarding. GuaranteedCommitmentsSaveCommitmentsPlanAsDraftBody: type: object properties: reservationIds: type: array items: type: string resourceIds: type: array items: type: string maxUpfrontCost: type: number format: double provider: $ref: '#/definitions/v1Provider' endDate: type: string startDate: type: string segmentId: type: string status: type: string description: Required. description: type: string description: Required. name: type: string description: Required. preferredPaymentOption: type: string includedContractTerms: type: array items: type: string includedContractSpecs: type: array items: type: object $ref: '#/definitions/v1ContractSpec' coverageId: {} createdAt: type: string createdBy: {} dataSource: type: string executionPolicy: {} flaggedActions: type: array items: type: string id: type: string isCalculating: type: boolean isDefault: type: boolean isLocked: type: boolean isRecommended: type: boolean isRenewal: type: boolean isSaved: type: boolean lastModified: type: string metaPlanId: type: string minimumUpfrontInterestRate: {} orgId: type: string planType: type: string recommendWithinCoveredAccounts: {} segment: $ref: '#/definitions/v1Segment' v1RegisterOrgRequest: type: object properties: name: type: string labraSubscriptionId: type: string users: type: array items: type: object $ref: '#/definitions/v1OrgUser' domain: type: string primaryAddress: $ref: '#/definitions/v1Address' awsMarketplaceOfferLink: type: string azureMarketplaceOfferLink: type: string gcpMarketplaceOfferLink: type: string v1CreateCustomCommitmentPlanRequest: type: object properties: provider: type: string description: 'Required. The cloud provider. Acceptable values: "aws", "azure", "gcp".' startDate: type: string description: Required. ISO 8601 lookback window start timestamp (e.g. "2026-04-09T02:43:39.717Z"). endDate: type: string description: Required. ISO 8601 lookback window end timestamp (e.g. "2026-04-16T02:43:39.717Z"). companyId: type: string description: Required. The company ID to scope the plan to. status: type: string description: 'Plan status. Use "draft" to save without submitting. Acceptable values: "draft", "submitted".' description: type: string description: Optional. Human-readable description for the plan. name: type: string description: Required. Human-readable name for the plan. includedContractSpecs: type: array items: type: object $ref: '#/definitions/v1ContractSpec' description: "List of contract specifications to include in the plan.\nEach entry selects a commitment category, term, payment option, and optional properties.\n\nAcceptable commitment_type values:\n \"aws/AmazonEC2\", \"aws/AmazonRDS\", \"aws/AmazonElastiCache\",\n \"aws/savingsplan/Compute\", \"aws/savingsplan/EC2Instance\", \"aws/savingsplan/Database\"\n\nAcceptable term values:\n \"thirty_day_gris\" - 30-day Archera Insured (leased: true)\n \"one_year_gris\" - 1-year Archera Insured (leased: true)\n \"one_year\" - 1-year Native Uninsured (leased: false)\n \"three_year\" - 3-year Native Uninsured (leased: false)\n\nAcceptable payment_option values:\n \"no_upfront\", \"partial_upfront\", \"all_upfront\"\n Note: \"partial_upfront\" and \"all_upfront\" are not available for 30-day terms.\n\nAcceptable properties keys:\n \"leased\" (bool) - true for Archera Insured terms, false for Native terms.\n \"offering_class\" (string) - only for \"aws/AmazonEC2\"; \"convertible\" or \"standard\"." includedContractTerms: type: array items: type: string description: 'List of contract term keys included in the plan. Acceptable values: "thirty_day_gris", "one_year_gris", "one_year", "three_year".' resourceIds: type: array items: type: string description: 'Optional. Specific resource IDs to pin the plan to selected infrastructure resources. When populated, the server returns plan_type "infrastructure"; omit for a top-down "purchase" plan. IDs are composite strings in the format "{resource_id}|{catalog_sku_org_id}|{catalog_sku_id}" as returned by ListReservableResources.' companyIds: type: array items: type: string description: 'For top down creation, one or more company IDs to create a plan per segment. Mutually exclusive with companyId — do not set both.' description: CreateCustomCommitmentPlanRequest creates a new top-down custom commitment plan. v1CreateCustomCommitmentPlanResponse: type: object properties: plans: type: array items: type: object $ref: '#/definitions/v1DefaultPurchasePlan' v1GetPurchasePlansDetailsResponse: type: object properties: plan: $ref: '#/definitions/v1DefaultPurchasePlan' title: Plan basic info and detailed metrics lineItems: type: array items: type: object $ref: '#/definitions/v1CommitmentPlanLineItem' title: Commitment line item resourceMatches: type: array items: type: object $ref: '#/definitions/v1CommitmentPlanResourceMatch' title: Covered infrastructure resource matches history: type: array items: type: object $ref: '#/definitions/v1PlanHistoryEntry' title: Audit history of the plan v1StartAzureOnboardingResponse: type: object properties: onboardingId: type: string description: Archera onboarding ID — pass this to all subsequent Azure onboarding RPCs. state: $ref: '#/definitions/v1AzureOnboardingState' description: Full onboarding state. billingGroupId: type: string title: Ripple billing group ID companyId: type: string title: Ripple company ID description: StartAzureOnboardingResponse is returned from StartAzureOnboarding. v1CreateAzureIntegrationResponse: type: object properties: success: type: boolean description: True if the integration was successfully created or already existed. errorCode: type: string description: 'Set when the Archera API returned an error (e.g. "tenant_already_connected"). "tenant_already_connected" is still considered success.' errorMessage: type: string integrationId: type: string description: The Archera integration ID, if available. billingGroupId: type: string description: Ripple billing group ID stored with this integration. companyId: type: string description: Ripple company ID stored with this integration. payerAccountId: type: string description: Ripple payer account ID echoed back. description: 'CreateAzureIntegrationResponse is returned after creating the Azure integration (Step 8). A "tenant_already_connected" error_code is treated as success.' v1Provider: type: string enum: - PROVIDER_UNSPECIFIED - AWS - AZURE - GCP - KUBERNETES - UNKNOWN default: PROVIDER_UNSPECIFIED v1AcceptBillingGroupTermsResponse: type: object properties: termsAcceptance: $ref: '#/definitions/v1TermsAcceptance' v1GetAwsPrivateOfferResponse: type: object properties: payerAccountId: type: string offerId: type: string description: AWS Marketplace offer identifier, e.g. offer-qb7i32am664jw. offerName: type: string description: Display name of the offer shown in the UI. status: type: string description: Current offer status, e.g. PENDING / ACCEPTED / EXPIRED / CREATING / FAILED. offerUrl: type: string productId: type: string pricePerUnit: type: number format: double createdAt: type: string expirationDate: type: string v1ListReservableResourcesResponse: type: object properties: resources: type: array items: type: object $ref: '#/definitions/v1ReservableResource'