arazzo: 1.0.1 info: title: 1Password Provision Partner Billing summary: Create a customer partner billing account, read it back, then schedule its end date. description: >- The 1Password Partnership API onboarding pattern. The workflow creates a new third-party partner billing account for a customer, reads the account back to confirm provisioning and capture the activation token used to build the customer's redemption link, and then schedules the date the account will be removed from the partner billing service. Each step spells out its request inline so the flow can be read and executed without opening the underlying OpenAPI description. version: 1.0.0 sourceDescriptions: - name: partnershipApi url: ../openapi/1password-partnership-openapi.yml type: openapi workflows: - workflowId: provision-partner-billing summary: Create a partner billing account, confirm it, and schedule its end date. description: >- Creates a partner billing account for a customer, reads it back to capture the activation token and status, and then updates the scheduled end date for the account. inputs: type: object required: - accountUid - accountType - domain - endsAt properties: accountUid: type: string description: The partner-supplied unique identifier for the customer billing account. accountType: type: string description: The 1Password account type, I for individual or F for family. domain: type: string description: The domain the customer will use for their 1Password account. endsAt: type: string description: The ISO 8601 date and time to schedule removal of the billing account. steps: - stepId: createAccount description: >- Create a new partner billing account for the customer using the supplied account UID, type, and domain. operationId: createPartnerAccount requestBody: contentType: application/json payload: account_uid: $inputs.accountUid account_type: $inputs.accountType domain: $inputs.domain successCriteria: - condition: $statusCode == 201 outputs: accountUid: $response.body#/account_uid activationToken: $response.body#/activation_token - stepId: confirmAccount description: >- Read the billing account back to confirm provisioning and capture its status and activation token. operationId: getPartnerAccount parameters: - name: accountUid in: path value: $steps.createAccount.outputs.accountUid successCriteria: - condition: $statusCode == 200 outputs: status: $response.body#/status activationToken: $response.body#/activation_token - stepId: scheduleEnd description: >- Update the billing account to schedule the date and time it will be removed from the partner billing service. operationId: updatePartnerAccount parameters: - name: accountUid in: path value: $steps.createAccount.outputs.accountUid requestBody: contentType: application/json payload: ends_at: $inputs.endsAt successCriteria: - condition: $statusCode == 200 outputs: accountUid: $response.body#/account_uid endsAt: $response.body#/ends_at status: $response.body#/status outputs: accountUid: $steps.scheduleEnd.outputs.accountUid activationToken: $steps.confirmAccount.outputs.activationToken endsAt: $steps.scheduleEnd.outputs.endsAt