Bundles

Bundles of resources, per organization or inventory.

16 endpoints · Plakar Control Plane v0.18 · Base URL, authentication and errors

List the organization bundles

GET /api/v1/account/organizations/{id}/bundles
Badge

Path parameters

  • id string<uuid> required
    Organization ID, at or below the caller’s.

Query parameters

  • offset integer
    Number of items to skip.
    Default: 0
  • limit integer
    Maximum number of items to return.
    Default: 100 Min: 1 Max: 100
  • integration_id string<uuid>
    Only bundles of this integration.
  • environment string
    Only bundles of this environment.
  • tags array[string]
    Only bundles with these tags.

Response 200 OK application/json

  • items array[object]
    • auto_create boolean
    • configuration map[any] nullable
    • created_at string<date-time>
    • environment string nullable
    • fields map[object]
      • provider object nullable
        • id string<uuid>
      • value string
    • id string<uuid>
    • integration_id string<uuid>
    • organization_id string<uuid>
    • protocol string nullable
    • resource_classes array[string]
    • resource_subclasses array[string]
    • tags array[string]
    • type string nullable
    • updated_at string<date-time>
  • total integer

Errors

  • 400 Bad Request (validation or deserialization error)
  • 401 Missing, invalid or expired credentials
  • 403 The caller may not do this
  • 500 Internal Server Error (panics)

Every error returns the standard error body.

Request

curl 'https://pcp.example.com/api/v1/account/organizations/{id}/bundles' \
  -H 'Authorization: Bearer <badge>'

Response 200

{
  "items": [
    {
      "auto_create": true,
      "configuration": {
        "key": {}
      },
      "created_at": "2026-01-01T00:00:00Z",
      "environment": "string",
      "fields": {
        "key": {
          "provider": {
            "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
          },
          "value": "string"
        }
      },
      "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
      "integration_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
      "organization_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
      "protocol": "string",
      "resource_classes": [
        "string"
      ],
      "resource_subclasses": [
        "string"
      ],
      "tags": [
        "string"
      ],
      "type": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    }
  ],
  "total": 0
}

Create an organization bundle

POST /api/v1/account/organizations/{id}/bundles
Badge

Path parameters

  • id string<uuid> required
    Organization ID, at or below the caller’s.

Request body application/json required

  • auto_create boolean
  • environment string nullable
  • fields map[object]
    • provider object nullable
      • id string<uuid>
    • value string
  • integration_id string<uuid>
  • resource_classes array[string] nullable
  • resource_subclasses array[string] nullable
  • tags array[string]

Response 200 OK application/json

  • auto_create boolean
  • configuration map[any] nullable
  • created_at string<date-time>
  • environment string nullable
  • fields map[object]
    • provider object nullable
      • id string<uuid>
    • value string
  • id string<uuid>
  • integration_id string<uuid>
  • organization_id string<uuid>
  • protocol string nullable
  • resource_classes array[string]
  • resource_subclasses array[string]
  • tags array[string]
  • type string nullable
  • updated_at string<date-time>

Errors

  • 400 Bad Request (validation or deserialization error)
  • 401 Missing, invalid or expired credentials
  • 403 The caller may not do this
  • 500 Internal Server Error (panics)

Every error returns the standard error body.

Request

curl -X POST 'https://pcp.example.com/api/v1/account/organizations/{id}/bundles' \
  -H 'Authorization: Bearer <badge>' \
  -H 'Content-Type: application/json' \
  -d '{
  "auto_create": true,
  "environment": "string",
  "fields": {
    "key": {
      "provider": {
        "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
      },
      "value": "string"
    }
  },
  "integration_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "resource_classes": [
    "string"
  ],
  "resource_subclasses": [
    "string"
  ],
  "tags": [
    "string"
  ]
}'

Response 200

{
  "auto_create": true,
  "configuration": {
    "key": {}
  },
  "created_at": "2026-01-01T00:00:00Z",
  "environment": "string",
  "fields": {
    "key": {
      "provider": {
        "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
      },
      "value": "string"
    }
  },
  "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "integration_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "organization_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "protocol": "string",
  "resource_classes": [
    "string"
  ],
  "resource_subclasses": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "type": "string",
  "updated_at": "2026-01-01T00:00:00Z"
}

Create an organization bundle from a form

POST /api/v1/account/organizations/{id}/bundles/form
Badge
Validates the configuration against the protocol’s draft form schema, required fields dropped, and stores it.

Path parameters

  • id string required

Request body application/json required

  • auto_create boolean
  • configuration map[any]
  • environment string nullable
  • integration_id string<uuid>
  • protocol string
  • resource_classes array[string] nullable
  • resource_subclasses array[string] nullable
  • tags array[string]
  • type string

Response 200 OK application/json

  • configuration map[object]
    • provider object nullable
      • id string<uuid>
    • value string
  • id string<uuid>

Errors

  • 400 Bad Request (validation or deserialization error)
  • 401 Missing, invalid or expired credentials
  • 403 The caller may not do this
  • 500 Internal Server Error (panics)

Every error returns the standard error body.

Request

curl -X POST 'https://pcp.example.com/api/v1/account/organizations/{id}/bundles/form' \
  -H 'Authorization: Bearer <badge>' \
  -H 'Content-Type: application/json' \
  -d '{
  "auto_create": true,
  "configuration": {
    "key": {}
  },
  "environment": "string",
  "integration_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "protocol": "string",
  "resource_classes": [
    "string"
  ],
  "resource_subclasses": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "type": "string"
}'

Response 200

{
  "configuration": {
    "key": {
      "provider": {
        "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
      },
      "value": "string"
    }
  },
  "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
}

Get an organization bundle

GET /api/v1/account/organizations/{id}/bundles/{bundle_id}
Badge

Path parameters

  • id string<uuid> required
    Organization ID, at or below the caller’s.
  • bundle_id string required

Response 200 OK application/json

  • auto_create boolean
  • configuration map[any] nullable
  • created_at string<date-time>
  • environment string nullable
  • fields map[object]
    • provider object nullable
      • id string<uuid>
    • value string
  • id string<uuid>
  • integration_id string<uuid>
  • organization_id string<uuid>
  • protocol string nullable
  • resource_classes array[string]
  • resource_subclasses array[string]
  • tags array[string]
  • type string nullable
  • updated_at string<date-time>

Errors

  • 400 Bad Request (validation or deserialization error)
  • 401 Missing, invalid or expired credentials
  • 403 The caller may not do this
  • 500 Internal Server Error (panics)

Every error returns the standard error body.

Request

curl 'https://pcp.example.com/api/v1/account/organizations/{id}/bundles/{bundle_id}' \
  -H 'Authorization: Bearer <badge>'

Response 200

{
  "auto_create": true,
  "configuration": {
    "key": {}
  },
  "created_at": "2026-01-01T00:00:00Z",
  "environment": "string",
  "fields": {
    "key": {
      "provider": {
        "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
      },
      "value": "string"
    }
  },
  "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "integration_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "organization_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "protocol": "string",
  "resource_classes": [
    "string"
  ],
  "resource_subclasses": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "type": "string",
  "updated_at": "2026-01-01T00:00:00Z"
}

Update an organization bundle

PUT /api/v1/account/organizations/{id}/bundles/{bundle_id}
Badge

Path parameters

  • id string<uuid> required
    Organization ID, at or below the caller’s.
  • bundle_id string required

Request body application/json required

  • auto_create boolean
  • environment string nullable
  • fields map[object]
    • provider object nullable
      • id string<uuid>
    • value string
  • integration_id string<uuid>
  • resource_classes array[string] nullable
  • resource_subclasses array[string] nullable
  • tags array[string]

Response 200 OK application/json

  • auto_create boolean
  • configuration map[any] nullable
  • created_at string<date-time>
  • environment string nullable
  • fields map[object]
    • provider object nullable
      • id string<uuid>
    • value string
  • id string<uuid>
  • integration_id string<uuid>
  • organization_id string<uuid>
  • protocol string nullable
  • resource_classes array[string]
  • resource_subclasses array[string]
  • tags array[string]
  • type string nullable
  • updated_at string<date-time>

Errors

  • 400 Bad Request (validation or deserialization error)
  • 401 Missing, invalid or expired credentials
  • 403 The caller may not do this
  • 500 Internal Server Error (panics)

Every error returns the standard error body.

Request

curl -X PUT 'https://pcp.example.com/api/v1/account/organizations/{id}/bundles/{bundle_id}' \
  -H 'Authorization: Bearer <badge>' \
  -H 'Content-Type: application/json' \
  -d '{
  "auto_create": true,
  "environment": "string",
  "fields": {
    "key": {
      "provider": {
        "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
      },
      "value": "string"
    }
  },
  "integration_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "resource_classes": [
    "string"
  ],
  "resource_subclasses": [
    "string"
  ],
  "tags": [
    "string"
  ]
}'

Response 200

{
  "auto_create": true,
  "configuration": {
    "key": {}
  },
  "created_at": "2026-01-01T00:00:00Z",
  "environment": "string",
  "fields": {
    "key": {
      "provider": {
        "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
      },
      "value": "string"
    }
  },
  "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "integration_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "organization_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "protocol": "string",
  "resource_classes": [
    "string"
  ],
  "resource_subclasses": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "type": "string",
  "updated_at": "2026-01-01T00:00:00Z"
}

Delete an organization bundle

DELETE /api/v1/account/organizations/{id}/bundles/{bundle_id}
Badge

Path parameters

  • id string<uuid> required
    Organization ID, at or below the caller’s.
  • bundle_id string required

Response 200 OK application/json

Errors

  • 400 Bad Request (validation or deserialization error)
  • 401 Missing, invalid or expired credentials
  • 403 The caller may not do this
  • 500 Internal Server Error (panics)

Every error returns the standard error body.

Request

curl -X DELETE 'https://pcp.example.com/api/v1/account/organizations/{id}/bundles/{bundle_id}' \
  -H 'Authorization: Bearer <badge>'

Response 200

{}

Get an organization bundle as form data

GET /api/v1/account/organizations/{id}/bundles/{bundle_id}/form
Badge
Answers the bundle’s configuration with its protocol’s draft form schema.

Path parameters

  • id string required
  • bundle_id string required

Response 200 OK application/json

  • auto_create boolean
  • configuration map[any]
  • created_at string<date-time>
  • environment string nullable
  • id string<uuid>
  • integration_id string<uuid>
  • inventory_id string<uuid>
  • organization_id string<uuid>
  • protocol string
  • resource_classes array[string]
  • resource_subclasses array[string]
  • schema object
    • bundle_fields map[object] nullable
      • provider object nullable
        • id string<uuid>
      • value string
    • initial map[any]
    • schema map[any]
    • scheme string
  • tags array[string]
  • type string
  • updated_at string<date-time>

Errors

  • 400 Bad Request (validation or deserialization error)
  • 401 Missing, invalid or expired credentials
  • 403 The caller may not do this
  • 500 Internal Server Error (panics)

Every error returns the standard error body.

Request

curl 'https://pcp.example.com/api/v1/account/organizations/{id}/bundles/{bundle_id}/form' \
  -H 'Authorization: Bearer <badge>'

Response 200

{
  "auto_create": true,
  "configuration": {
    "key": {}
  },
  "created_at": "2026-01-01T00:00:00Z",
  "environment": "string",
  "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "integration_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "inventory_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "organization_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "protocol": "string",
  "resource_classes": [
    "string"
  ],
  "resource_subclasses": [
    "string"
  ],
  "schema": {
    "bundle_fields": {
      "key": {
        "provider": {
          "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
        },
        "value": "string"
      }
    },
    "initial": {
      "key": {}
    },
    "schema": {
      "key": {}
    },
    "scheme": "string"
  },
  "tags": [
    "string"
  ],
  "type": "string",
  "updated_at": "2026-01-01T00:00:00Z"
}

Update an organization bundle from a form

POST /api/v1/account/organizations/{id}/bundles/{bundle_id}/form
Badge
Validates the configuration against the protocol’s draft form schema and stores it. Legacy bundles answer 409.

Path parameters

  • id string required
  • bundle_id string required

Request body application/json required

  • auto_create boolean
  • configuration map[any]
  • environment string nullable
  • integration_id string<uuid>
  • protocol string
  • resource_classes array[string] nullable
  • resource_subclasses array[string] nullable
  • tags array[string]
  • type string

Response 200 OK application/json

  • configuration map[object]
    • provider object nullable
      • id string<uuid>
    • value string
  • id string<uuid>

Errors

  • 400 Bad Request (validation or deserialization error)
  • 401 Missing, invalid or expired credentials
  • 403 The caller may not do this
  • 500 Internal Server Error (panics)

Every error returns the standard error body.

Request

curl -X POST 'https://pcp.example.com/api/v1/account/organizations/{id}/bundles/{bundle_id}/form' \
  -H 'Authorization: Bearer <badge>' \
  -H 'Content-Type: application/json' \
  -d '{
  "auto_create": true,
  "configuration": {
    "key": {}
  },
  "environment": "string",
  "integration_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "protocol": "string",
  "resource_classes": [
    "string"
  ],
  "resource_subclasses": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "type": "string"
}'

Response 200

{
  "configuration": {
    "key": {
      "provider": {
        "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
      },
      "value": "string"
    }
  },
  "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
}

List the inventory bundles

GET /api/v1/bundles/inventories/{inventory_id}
Badge

Path parameters

  • inventory_id string required

Query parameters

  • offset integer
    Number of items to skip.
    Default: 0
  • limit integer
    Maximum number of items to return.
    Default: 100 Min: 1 Max: 100
  • integration_id string<uuid>
    Only bundles of this integration.
  • environment string
    Only bundles of this environment.
  • tags array[string]
    Only bundles with these tags.

Response 200 OK application/json

  • items array[object]
    • auto_create boolean
    • configuration map[any] nullable
    • created_at string<date-time>
    • environment string nullable
    • fields map[object]
      • provider object nullable
        • id string<uuid>
      • value string
    • id string<uuid>
    • integration_id string<uuid>
    • inventory_id string<uuid>
    • organization_id string<uuid>
    • protocol string nullable
    • resource_classes array[string]
    • resource_subclasses array[string]
    • tags array[string]
    • type string nullable
    • updated_at string<date-time>
  • total integer

Errors

  • 400 Bad Request (validation or deserialization error)
  • 401 Missing, invalid or expired credentials
  • 403 The caller may not do this
  • 500 Internal Server Error (panics)

Every error returns the standard error body.

Request

curl 'https://pcp.example.com/api/v1/bundles/inventories/{inventory_id}' \
  -H 'Authorization: Bearer <badge>'

Response 200

{
  "items": [
    {
      "auto_create": true,
      "configuration": {
        "key": {}
      },
      "created_at": "2026-01-01T00:00:00Z",
      "environment": "string",
      "fields": {
        "key": {
          "provider": {
            "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
          },
          "value": "string"
        }
      },
      "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
      "integration_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
      "inventory_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
      "organization_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
      "protocol": "string",
      "resource_classes": [
        "string"
      ],
      "resource_subclasses": [
        "string"
      ],
      "tags": [
        "string"
      ],
      "type": "string",
      "updated_at": "2026-01-01T00:00:00Z"
    }
  ],
  "total": 0
}

Create an inventory bundle

POST /api/v1/bundles/inventories/{inventory_id}
Badge

Path parameters

  • inventory_id string required

Request body application/json required

  • auto_create boolean
  • environment string nullable
  • fields map[object]
    • provider object nullable
      • id string<uuid>
    • value string
  • integration_id string<uuid>
  • resource_classes array[string] nullable
  • resource_subclasses array[string] nullable
  • tags array[string]

Response 200 OK application/json

  • auto_create boolean
  • configuration map[any] nullable
  • created_at string<date-time>
  • environment string nullable
  • fields map[object]
    • provider object nullable
      • id string<uuid>
    • value string
  • id string<uuid>
  • integration_id string<uuid>
  • inventory_id string<uuid>
  • organization_id string<uuid>
  • protocol string nullable
  • resource_classes array[string]
  • resource_subclasses array[string]
  • tags array[string]
  • type string nullable
  • updated_at string<date-time>

Errors

  • 400 Bad Request (validation or deserialization error)
  • 401 Missing, invalid or expired credentials
  • 403 The caller may not do this
  • 500 Internal Server Error (panics)

Every error returns the standard error body.

Request

curl -X POST 'https://pcp.example.com/api/v1/bundles/inventories/{inventory_id}' \
  -H 'Authorization: Bearer <badge>' \
  -H 'Content-Type: application/json' \
  -d '{
  "auto_create": true,
  "environment": "string",
  "fields": {
    "key": {
      "provider": {
        "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
      },
      "value": "string"
    }
  },
  "integration_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "resource_classes": [
    "string"
  ],
  "resource_subclasses": [
    "string"
  ],
  "tags": [
    "string"
  ]
}'

Response 200

{
  "auto_create": true,
  "configuration": {
    "key": {}
  },
  "created_at": "2026-01-01T00:00:00Z",
  "environment": "string",
  "fields": {
    "key": {
      "provider": {
        "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
      },
      "value": "string"
    }
  },
  "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "integration_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "inventory_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "organization_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "protocol": "string",
  "resource_classes": [
    "string"
  ],
  "resource_subclasses": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "type": "string",
  "updated_at": "2026-01-01T00:00:00Z"
}

Create an inventory bundle from a form

POST /api/v1/bundles/inventories/{inventory_id}/form
Badge
Validates the configuration against the protocol’s draft form schema, required fields dropped, and stores it.

Path parameters

  • inventory_id string required

Request body application/json required

  • auto_create boolean
  • configuration map[any]
  • environment string nullable
  • integration_id string<uuid>
  • protocol string
  • resource_classes array[string] nullable
  • resource_subclasses array[string] nullable
  • tags array[string]
  • type string

Response 200 OK application/json

  • configuration map[object]
    • provider object nullable
      • id string<uuid>
    • value string
  • id string<uuid>

Errors

  • 400 Bad Request (validation or deserialization error)
  • 401 Missing, invalid or expired credentials
  • 403 The caller may not do this
  • 500 Internal Server Error (panics)

Every error returns the standard error body.

Request

curl -X POST 'https://pcp.example.com/api/v1/bundles/inventories/{inventory_id}/form' \
  -H 'Authorization: Bearer <badge>' \
  -H 'Content-Type: application/json' \
  -d '{
  "auto_create": true,
  "configuration": {
    "key": {}
  },
  "environment": "string",
  "integration_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "protocol": "string",
  "resource_classes": [
    "string"
  ],
  "resource_subclasses": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "type": "string"
}'

Response 200

{
  "configuration": {
    "key": {
      "provider": {
        "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
      },
      "value": "string"
    }
  },
  "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
}

Get an inventory bundle

GET /api/v1/bundles/inventories/{inventory_id}/{bundle_id}
Badge

Path parameters

  • inventory_id string required
  • bundle_id string required

Response 200 OK application/json

  • auto_create boolean
  • configuration map[any] nullable
  • created_at string<date-time>
  • environment string nullable
  • fields map[object]
    • provider object nullable
      • id string<uuid>
    • value string
  • id string<uuid>
  • integration_id string<uuid>
  • inventory_id string<uuid>
  • organization_id string<uuid>
  • protocol string nullable
  • resource_classes array[string]
  • resource_subclasses array[string]
  • tags array[string]
  • type string nullable
  • updated_at string<date-time>

Errors

  • 400 Bad Request (validation or deserialization error)
  • 401 Missing, invalid or expired credentials
  • 403 The caller may not do this
  • 500 Internal Server Error (panics)

Every error returns the standard error body.

Request

curl 'https://pcp.example.com/api/v1/bundles/inventories/{inventory_id}/{bundle_id}' \
  -H 'Authorization: Bearer <badge>'

Response 200

{
  "auto_create": true,
  "configuration": {
    "key": {}
  },
  "created_at": "2026-01-01T00:00:00Z",
  "environment": "string",
  "fields": {
    "key": {
      "provider": {
        "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
      },
      "value": "string"
    }
  },
  "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "integration_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "inventory_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "organization_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "protocol": "string",
  "resource_classes": [
    "string"
  ],
  "resource_subclasses": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "type": "string",
  "updated_at": "2026-01-01T00:00:00Z"
}

Update an inventory bundle

PUT /api/v1/bundles/inventories/{inventory_id}/{bundle_id}
Badge

Path parameters

  • inventory_id string required
  • bundle_id string required

Request body application/json required

  • auto_create boolean
  • environment string nullable
  • fields map[object]
    • provider object nullable
      • id string<uuid>
    • value string
  • integration_id string<uuid>
  • resource_classes array[string] nullable
  • resource_subclasses array[string] nullable
  • tags array[string]

Response 200 OK application/json

  • auto_create boolean
  • configuration map[any] nullable
  • created_at string<date-time>
  • environment string nullable
  • fields map[object]
    • provider object nullable
      • id string<uuid>
    • value string
  • id string<uuid>
  • integration_id string<uuid>
  • inventory_id string<uuid>
  • organization_id string<uuid>
  • protocol string nullable
  • resource_classes array[string]
  • resource_subclasses array[string]
  • tags array[string]
  • type string nullable
  • updated_at string<date-time>

Errors

  • 400 Bad Request (validation or deserialization error)
  • 401 Missing, invalid or expired credentials
  • 403 The caller may not do this
  • 500 Internal Server Error (panics)

Every error returns the standard error body.

Request

curl -X PUT 'https://pcp.example.com/api/v1/bundles/inventories/{inventory_id}/{bundle_id}' \
  -H 'Authorization: Bearer <badge>' \
  -H 'Content-Type: application/json' \
  -d '{
  "auto_create": true,
  "environment": "string",
  "fields": {
    "key": {
      "provider": {
        "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
      },
      "value": "string"
    }
  },
  "integration_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "resource_classes": [
    "string"
  ],
  "resource_subclasses": [
    "string"
  ],
  "tags": [
    "string"
  ]
}'

Response 200

{
  "auto_create": true,
  "configuration": {
    "key": {}
  },
  "created_at": "2026-01-01T00:00:00Z",
  "environment": "string",
  "fields": {
    "key": {
      "provider": {
        "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
      },
      "value": "string"
    }
  },
  "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "integration_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "inventory_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "organization_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "protocol": "string",
  "resource_classes": [
    "string"
  ],
  "resource_subclasses": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "type": "string",
  "updated_at": "2026-01-01T00:00:00Z"
}

Delete an inventory bundle

DELETE /api/v1/bundles/inventories/{inventory_id}/{bundle_id}
Badge

Path parameters

  • inventory_id string required
  • bundle_id string required

Response 200 OK application/json

Errors

  • 400 Bad Request (validation or deserialization error)
  • 401 Missing, invalid or expired credentials
  • 403 The caller may not do this
  • 500 Internal Server Error (panics)

Every error returns the standard error body.

Request

curl -X DELETE 'https://pcp.example.com/api/v1/bundles/inventories/{inventory_id}/{bundle_id}' \
  -H 'Authorization: Bearer <badge>'

Response 200

{}

Get an inventory bundle as form data

GET /api/v1/bundles/inventories/{inventory_id}/{bundle_id}/form
Badge
Answers the bundle’s configuration with its protocol’s draft form schema.

Path parameters

  • inventory_id string required
  • bundle_id string required

Response 200 OK application/json

  • auto_create boolean
  • configuration map[any]
  • created_at string<date-time>
  • environment string nullable
  • id string<uuid>
  • integration_id string<uuid>
  • inventory_id string<uuid>
  • organization_id string<uuid>
  • protocol string
  • resource_classes array[string]
  • resource_subclasses array[string]
  • schema object
    • bundle_fields map[object] nullable
      • provider object nullable
        • id string<uuid>
      • value string
    • initial map[any]
    • schema map[any]
    • scheme string
  • tags array[string]
  • type string
  • updated_at string<date-time>

Errors

  • 400 Bad Request (validation or deserialization error)
  • 401 Missing, invalid or expired credentials
  • 403 The caller may not do this
  • 500 Internal Server Error (panics)

Every error returns the standard error body.

Request

curl 'https://pcp.example.com/api/v1/bundles/inventories/{inventory_id}/{bundle_id}/form' \
  -H 'Authorization: Bearer <badge>'

Response 200

{
  "auto_create": true,
  "configuration": {
    "key": {}
  },
  "created_at": "2026-01-01T00:00:00Z",
  "environment": "string",
  "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "integration_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "inventory_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "organization_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "protocol": "string",
  "resource_classes": [
    "string"
  ],
  "resource_subclasses": [
    "string"
  ],
  "schema": {
    "bundle_fields": {
      "key": {
        "provider": {
          "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
        },
        "value": "string"
      }
    },
    "initial": {
      "key": {}
    },
    "schema": {
      "key": {}
    },
    "scheme": "string"
  },
  "tags": [
    "string"
  ],
  "type": "string",
  "updated_at": "2026-01-01T00:00:00Z"
}

Update an inventory bundle from a form

POST /api/v1/bundles/inventories/{inventory_id}/{bundle_id}/form
Badge
Validates the configuration against the protocol’s draft form schema and stores it. Legacy bundles answer 409.

Path parameters

  • inventory_id string required
  • bundle_id string required

Request body application/json required

  • auto_create boolean
  • configuration map[any]
  • environment string nullable
  • integration_id string<uuid>
  • protocol string
  • resource_classes array[string] nullable
  • resource_subclasses array[string] nullable
  • tags array[string]
  • type string

Response 200 OK application/json

  • configuration map[object]
    • provider object nullable
      • id string<uuid>
    • value string
  • id string<uuid>

Errors

  • 400 Bad Request (validation or deserialization error)
  • 401 Missing, invalid or expired credentials
  • 403 The caller may not do this
  • 500 Internal Server Error (panics)

Every error returns the standard error body.

Request

curl -X POST 'https://pcp.example.com/api/v1/bundles/inventories/{inventory_id}/{bundle_id}/form' \
  -H 'Authorization: Bearer <badge>' \
  -H 'Content-Type: application/json' \
  -d '{
  "auto_create": true,
  "configuration": {
    "key": {}
  },
  "environment": "string",
  "integration_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "protocol": "string",
  "resource_classes": [
    "string"
  ],
  "resource_subclasses": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "type": "string"
}'

Response 200

{
  "configuration": {
    "key": {
      "provider": {
        "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
      },
      "value": "string"
    }
  },
  "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
}