# partners api automation

## /cloudformation_template

### get/v2/org/{org_id}/partners/onboarding/aws/cloudformation_template

Generates CloudFormation template for AWS integration. Creates the necessary IAM role and policy template for setting up AWS access.

### Path parameters

- org_id: string · uuid (Required)

### Responses

- **200 OK**
  - application/json
  - template: object (Optional)

- **400 Bad request**
- **401 Unauthorized**
- **403 Forbidden**
- **404 Not found**
- **405 Method not allowed**
- **409 Conflict**
- **500 Internal server error**
- **default Default error response**

### HTTP Example

```http
GET /v2/org/{org_id}/partners/onboarding/aws/cloudformation_template HTTP/1.1
Accept: */*
```

**Response Example**

```json
{
  "template": {
    "ANY_ADDITIONAL_PROPERTY": "anything"
  }
}
```

## /launch-stack-url

### get/v2/org/{org_id}/partners/onboarding/aws/launch-stack-url

Generates AWS CloudFormation launch stack URL. Creates a pre-configured URL to deploy the CloudFormation stack in the AWS console.

### Path parameters

- org_id: string · uuid (Required)

### Query parameters

- read_only: boolean (Optional, Default: `false`)

### Responses

- **200 OK**
  - application/json
  - url: string (Required)

### HTTP Example

```http
GET /v2/org/{org_id}/partners/onboarding/aws/launch-stack-url HTTP/1.1
Accept: */*
```

**Response Example**

```json
{
  "url": "text"
}
```

## /verify

### post/v2/org/{org_id}/partners/onboarding/aws/verify

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.

### Path parameters

- org_id: string · uuid (Required)

### Body

- onboarding_id: string (Optional, Pattern: `[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}\Z`)
- account_id: string (Optional)
- read_only: boolean (Optional, Default: `false`)
- existing_cur: object · ExistingCUR (Optional)

### Responses

- **200 OK**
  - application/json
  - feature: string (Optional)
  - status: string · enum (Optional, Possible values: `available`, `warning`, `missing`, `unknown`)

### HTTP Example

```http
POST /v2/org/{org_id}/partners/onboarding/aws/verify HTTP/1.1
Content-Type: application/json
Accept: */*
```

**Response Example**

```json
[
  {
    "feature": "text",
    "status": "available"
  }
]
```

## /auth-url

### get/v2/org/{org_id}/partners/onboarding/azure/auth-url

Generates Azure authentication URL for onboarding. Creates or updates Azure onboarding record with tenant and subscription details, then returns the auth URL.

### Path parameters

- org_id: string · uuid (Required)

### Body

- azure_tenant_id: string (Required)
- azure_subscription_id: string (Required)

### Responses

- **200 OK**
  - application/json
  - url: string (Required)

### HTTP Example

```http
GET /v2/org/{org_id}/partners/onboarding/azure/auth-url HTTP/1.1
Content-Type: application/json
Accept: */*
```

**Response Example**

```json
{
  "url": "text"
}
```

## /verify

### post/v2/org/{org_id}/partners/onboarding/azure/verify

Runs Azure onboarding verification process. Executes the complete onboarding workflow and returns validation results for all features.

### Path parameters

- org_id: string · uuid (Required)

### Responses

- **200 OK**
  - application/json
  - feature: string (Optional)
  - status: string · enum (Optional, Possible values: `available`, `warning`, `missing`, `unknown`)

### HTTP Example

```http
POST /v2/org/{org_id}/partners/onboarding/azure/verify HTTP/1.1
Accept: */*
```

**Response Example**

```json
[
  {
    "feature": "text",
    "status": "available"
  }
]
```

## /register_child

### post/v2/org/{org_id}/partners/onboarding/register_child

**Legacy** - use **POST**`/partners/<uuid_str:partner_org_id>/orgs` instead. This endpoint will be discontinued soon.

Registers a new child organization under the channel partner. Creates the organization, sets up user memberships, and establishes the partnership relationship.

### Path parameters

- org_id: string · uuid (Required)

### Body

- company: string (Required)
- labra_subscription_id: string (Optional)
- email: string · max: 255 · nullable (Optional, Default: `null`)

### Responses

- **200 OK**
  - application/json
  - org_id: string (Optional)

### HTTP Example

```http
POST /v2/org/{org_id}/partners/onboarding/register_child HTTP/1.1
Content-Type: application/json
Accept: */*
```

**Response Example**

```json
{
  "org_id": "text"
}
```

## /start

### post/v2/org/{org_id}/partners/onboarding/start

Starts the onboarding process for an organization. Creates or retrieves an onboarding record and sets the provider to AWS.

### Path parameters

- org_id: string · uuid (Required)

### Responses

- **200 OK**
  - application/json
  - onboarding_id: string (Optional)

### HTTP Example

```http
POST /v2/org/{org_id}/partners/onboarding/start HTTP/1.1
Accept: */*
```

**Response Example**

```json
{
  "onboarding_id": "text"
}
```

## /child-orgs

### get/v2/org/{org_id}/partners/onboarding/child-orgs

Lists child organizations. This returns all orgs belongs to the channel partner identified by **org_id**.

### Path parameters

- org_id: string · uuid (Required)

### Responses

- **200 OK**
  - application/json
  - created_at: string · date-time (Required)
  - org_id: string (Required)
  - org_name: string (Required)
  - org_checklist: object · Validation[] (Required)
  - integration_checklist: object (Required)

### HTTP Example

```http
GET /v2/org/{org_id}/partners/onboarding/child-orgs HTTP/1.1
Accept: */*
```

**Response Example**

```json
[
  {
    "created_at": "2026-07-27T21:09:26.461Z",
    "org_id": "text",
    "org_name": "text",
    "org_checklist": [
      {
        "feature": "text",
        "status": "available"
      }
    ],
    "integration_checklist": {
      "ANY_ADDITIONAL_PROPERTY": [
        {
          "feature": "text",
          "status": "available"
        }
      ]
    }
  }
]
```

## /recommended

### get/v2/org/{org_id}/partners/purchase-plans-v2/recommended

Gets recommended purchase plans for a specific provider. Returns the most suitable plan based on the organization and provider requirements.

### Path parameters

- org_id: string · uuid (Required)

### Query parameters

- provider: string · enum (Required, Possible values: `aws`, `azure`, `gcp`, `unknown`)

### Responses

- **200 OK**
  - application/json
  - start_date: string · nullable (Optional)
  - end_date: string · nullable (Optional)
  - id: string · uuid (Required)
  - data_source: string · max: 20 (Required)
  - name: string (Required)
  - description: string · nullable (Required)
  - segment_id: string · max: 50 (Required)
  - meta_plan_id: string · nullable (Required)
  - org_id: string · max: 50 (Required)
  - last_modified: string · nullable (Required)
  - plan_type: string · enum (Required)
  - coverage_id: string · nullable (Required)
  - created_at: string · date-time (Required)
  - is_calculating: boolean (Required)
  - is_saved: boolean (Required)
  - is_locked: boolean (Required)
  - max_upfront_cost: number (Required)
  - minimum_upfront_interest_rate: number (Required)
  - preferred_payment_option: undefined · enum (Required)
  - included_contract_specs: object · PurchasePlanContractSpec[] (Required)
  - included_contract_terms: string · enum[] (Required)
  - recommend_within_covered_accounts: boolean · nullable (Required)
  - status: string · enum (Required)
  - is_recommended: boolean (Required)
  - is_default: boolean (Required)
  - is_renewal: boolean (Required)
  - execution_policy: object · ExecutePurchasePolicyDump_Exclude_Segment_TargetPlan (Required)
  - segment: object · SegmentInfo (Required)
  - flagged_actions: one of[] (Required)
  - created_by: object · UserInfo (Required)
  - resource_ids: string[] (Required)
  - reservation_ids: string[] (Required)

### HTTP Example

```http
GET /v2/org/{org_id}/partners/purchase-plans-v2/recommended?provider=aws HTTP/1.1
Accept: */*
```

**Response Example**

```json
{
  "start_date": null,
  "end_date": null,
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "data_source": "text",
  "name": "text",
  "description": null,
  "segment_id": "text",
  "meta_plan_id": null,
  "org_id": "text",
  "last_modified": null,
  "plan_type": "purchase",
  "coverage_id": null,
  "created_at": "2026-07-27T21:09:26.461Z",
  "is_calculating": true,
  "is_saved": true,
  "is_locked": true,
  "max_upfront_cost": 1,
  "minimum_upfront_interest_rate": 1,
  "preferred_payment_option": "No Upfront",
  "included_contract_specs": [
    {
      "commitment_type": "text",
      "properties": {
        "ANY_ADDITIONAL_PROPERTY": "anything"
      },
      "term": "one_year_gris",
      "payment_option": "no_upfront"
    }
  ],
  "included_contract_terms": [
    "one_year_gris"
  ],
  "recommend_within_covered_accounts": null,
  "status": "new",
  "is_recommended": true,
  "is_default": true,
  "is_renewal": true,
  "execution_policy": {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "org_id": "123e4567-e89b-12d3-a456-426614174000",
    "name": "text",
    "description": null,
    "created_at": "2026-07-27T21:09:26.461Z",
    "last_modified": null,
    "schedule": "quarterly",
    "start_date": null,
    "end_date": null,
    "enabled": true,
    "next_execution_date": null,
    "meta_plan_id": null,
    "segment_id": null,
    "default_plan_name": null,
    "min_savings": null,
    "meta_plan": {
      "id": "text",
      "name": "text",
      "created_at": "2026-07-27T21:09:26.461Z",
      "is_default": true
    },
    "created_by": {
      "id": "text",
      "username": "text",
      "full_name": null
    },
    "plans": [
      {
        "id": "text",
        "name": "text",
        "created_at": "2026-07-27T21:09:26.461Z",
        "status": "new"
      }
    ],
    "total_savings": null
  },
  "segment": {
    "id": "text",
    "name": "text",
    "created_at": "2026-07-27T21:09:26.461Z",
    "is_default": true,
    "provider": "aws"
  },
  "flagged_actions": [
    {
      "id": "text",
      "org_id": null,
      "user_id": null,
      "provider": null,
      "action_type": null,
      "action_description": null,
      "status": "submitted",
      "creation_time": "2026-07-27T21:09:26.461Z",
      "execution_time": null,
      "execution_info": null,
      "plan_id": "text",
      "plan": {
        "name": "text",
        "id": "123e4567-e89b-12d3-a456-426614174000",
        "is_default": true,
        "status": "new"
      }
    }
  ],
  "created_by": {
    "id": "text",
    "username": "text",
    "full_name": null
  },
  "resource_ids": [
    "text"
  ],
  "reservation_ids": [
    "text"
  ],
  "max_term": "text",
  "all_terms": [
    "one_year_gris"
  ],
  "covered_ondemand_cost": 1,
  "before_ondemand_cost": 1,
  "before_reserved_cost": 1,
  "amortized_cost": 1,
  "recurring_cost": 1,
  "upfront_cost": 1,
  "before_cost": 1,
  "after_cost": 1,
  "total_cost": 1,
  "savings": 1,
  "fee": 1,
  "commitment_coverage": 1,
  "minimum_commitment_cost": 1,
  "breakeven_hours": 1,
  "total_savings": 1,
  "monthly_savings": 1,
  "monthly_amortized_cost": 1,
  "monthly_fee": 1,
  "monthly_before_cost": 1,
  "monthly_after_cost": 1,
  "total_monthly_before_cost": 1,
  "aggregate_metrics": {
    "potential_coverage": 1,
    "current_coverage": 1,
    "summaries": {
      "ANY_ADDITIONAL_PROPERTY": {
        "key": "text",
        "name": "text",
        "provider": "aws",
        "service_name": "text",
        "num_commitments": 1,
        "min_commitment": 1,
        "max_savings": 1,
        "min_savings": 1,
        "upfront_cost": 1,
        "monthly_savings": 1,
        "monthly_commitment": 1,
        "potential_coverage": 1,
        "current_coverage": 1,
        "min_term_hours": 1,
        "max_term_hours": 1,
        "gri_premium": 1
      }
    }
  },
  "summaries": [
    {
      "key": "text",
      "provider": "aws",
      "num_commitments": 1,
      "min_commitment": 1,
      "max_savings": 1,
      "min_savings": 1,
      "upfront_cost": 1,
      "monthly_savings": 1,
      "monthly_commitment": 1,
      "min_term_hours": 1,
      "max_term_hours": 1,
      "gri_premiums": 1,
      "if_all_ondemand_cost": 1,
      "before_ondemand_cost": 1,
      "after_ondemand_cost": 1
    }
  ]
}
```

## /<uuid:plan_id>/purchase

### post/v2/org/{org_id}/partners/purchase-plans-v2/{plan_id}/purchase

Executes purchase of a specific plan by plan ID. Creates or validates user membership and processes the plan purchase.

### Path parameters

- org_id: string · uuid (Required)
- plan_id: string · uuid (Required)

### Body

- email: string · email · max: 255 (Required)

### Responses

### HTTP Example

```http
POST /v2/org/{org_id}/partners/purchase-plans-v2/{plan_id}/purchase HTTP/1.1
Content-Type: application/json
Accept: */*
```

**Response Example**

## Partially Update an Organization

### patch/v2/org/{org_id}/partners

### Path parameters

- org_id: string · uuid (Required)

### Body

- aws_marketplace_offer_link: string · nullable (Optional)
- azure_marketplace_offer_link: string · nullable (Optional)
- gcp_marketplace_offer_link: string · nullable (Optional)

### Responses

- **200 OK**
  - application/json
  - id: string · uuid (Required)
  - name: string (Required)
  - aws_marketplace_offer_link: string · nullable (Required)
  - azure_marketplace_offer_link: string · nullable (Required)
  - gcp_marketplace_offer_link: string · nullable (Required)

### HTTP Example

```http
PATCH /v2/org/{org_id}/partners HTTP/1.1
Content-Type: application/json
Accept: */*
```

**Response Example**

```json
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "name": "text",
  "aws_marketplace_offer_link": null,
  "azure_marketplace_offer_link": null,
  "gcp_marketplace_offer_link": null
}
```
