Integrations

The integration catalogue and installed integrations.

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

Get an integration by name and version

GET /api/v1/integration/{name}/{version}
Badge

Path parameters

  • name string required
  • version string required

Query parameters

  • type string
    Connector type to resolve the protocols for.
    Allowed: store, source, destination, secret_provider, inventory

Response 200 OK application/json

  • id string<uuid>
  • name string
  • protocols array[object]
    • bundle_fields map[object] nullable
      • provider object nullable
        • id string<uuid>
      • value string
    • fields array[object]
      • default string
      • description string
      • display_name string
      • enum array[string]
      • inventory_value string nullable
      • name string
      • pattern string
      • required boolean
      • sensitive boolean
      • type string
    • scheme string
    • validator
  • version string

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/integration/{name}/{version}' \
  -H 'Authorization: Bearer <badge>'

Response 200

{
  "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "name": "string",
  "protocols": [
    {
      "bundle_fields": {
        "key": {
          "provider": {
            "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
          },
          "value": "string"
        }
      },
      "fields": [
        {
          "default": "string",
          "description": "string",
          "display_name": "string",
          "enum": [
            "string"
          ],
          "inventory_value": "string",
          "name": "string",
          "pattern": "string",
          "required": true,
          "sensitive": true,
          "type": "string"
        }
      ],
      "scheme": "string",
      "validator": {}
    }
  ],
  "version": "string"
}

List the integrations of a connector type

GET /api/v1/integrations
Badge

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
  • name string
    Only integrations with this name.
  • type string required
    Connector type.
    Allowed: store, source, destination, secret_provider, inventory
  • urn_id string<uuid>
    Only integrations compatible with this resource.

Response 200 OK application/json

  • items array[object]
    • id string<uuid>
    • name string
    • version string
  • 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/integrations' \
  -H 'Authorization: Bearer <badge>'

Response 200

{
  "items": [
    {
      "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
      "name": "string",
      "version": "string"
    }
  ],
  "total": 0
}

List the available integrations

GET /api/v1/integrations/available
Badge

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
  • support string
    Only integrations supporting this connector kind.
  • search string
    Free-text search on name and display name.
  • installation_status string
    Only integrations in this state.
    Allowed: installed, not-installed, upgradable
  • type array[string]
    Only integrations of these types.

Response 200 OK application/json

  • items array[object]
    • api string
    • available array[object]
      • name string
      • released_at string<date-time>
      • version string
    • connectors array[object]
      • class string
      • protocols array[object]
        • scheme string
        • validator
      • subclass string
      • type string
      • validator
    • contact string
    • description string
    • display_name string
    • documentation string
    • edition string
    • featured string
    • homepage string
    • icon string
    • id string
    • installation object
      • available boolean
      • status string
      • version string nullable
    • installed array[object]
      • id string<uuid>
      • installed_at string<date-time>
      • is_current boolean
      • name string
      • version string
    • latest_version string
    • license string
    • name string
    • repository string
    • stage string
    • supports array[string]
    • tags array[string]
    • tier string
    • types object
      • destination boolean
      • provider boolean
      • source boolean
      • storage boolean
    • version string
  • 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/integrations/available' \
  -H 'Authorization: Bearer <badge>'

Response 200

{
  "items": [
    {
      "api": "string",
      "available": [
        {
          "name": "string",
          "released_at": "2026-01-01T00:00:00Z",
          "version": "string"
        }
      ],
      "connectors": [
        {
          "class": "string",
          "protocols": [
            {
              "scheme": "string",
              "validator": {}
            }
          ],
          "subclass": "string",
          "type": "string",
          "validator": {}
        }
      ],
      "contact": "string",
      "description": "string",
      "display_name": "string",
      "documentation": "string",
      "edition": "string",
      "featured": "string",
      "homepage": "string",
      "icon": "string",
      "id": "string",
      "installation": {
        "available": true,
        "status": "string",
        "version": "string"
      },
      "installed": [
        {
          "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
          "installed_at": "2026-01-01T00:00:00Z",
          "is_current": true,
          "name": "string",
          "version": "string"
        }
      ],
      "latest_version": "string",
      "license": "string",
      "name": "string",
      "repository": "string",
      "stage": "string",
      "supports": [
        "string"
      ],
      "tags": [
        "string"
      ],
      "tier": "string",
      "types": {
        "destination": true,
        "provider": true,
        "source": true,
        "storage": true
      },
      "version": "string"
    }
  ],
  "total": 0
}

Get an available integration

GET /api/v1/integrations/available/{name}
Badge

Path parameters

  • name string required

Response 200 OK application/json

  • api string
  • available array[object]
    • name string
    • released_at string<date-time>
    • version string
  • connectors array[object]
    • class string
    • protocols array[object]
      • scheme string
      • validator
    • subclass string
    • type string
    • validator
  • contact string
  • description string
  • display_name string
  • documentation string
  • edition string
  • featured string
  • homepage string
  • icon string
  • id string
  • installation object
    • available boolean
    • status string
    • version string nullable
  • installed array[object]
    • id string<uuid>
    • installed_at string<date-time>
    • is_current boolean
    • name string
    • version string
  • latest_version string
  • license string
  • name string
  • repository string
  • stage string
  • supports array[string]
  • tags array[string]
  • tier string
  • types object
    • destination boolean
    • provider boolean
    • source boolean
    • storage boolean
  • version string

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/integrations/available/{name}' \
  -H 'Authorization: Bearer <badge>'

Response 200

{
  "api": "string",
  "available": [
    {
      "name": "string",
      "released_at": "2026-01-01T00:00:00Z",
      "version": "string"
    }
  ],
  "connectors": [
    {
      "class": "string",
      "protocols": [
        {
          "scheme": "string",
          "validator": {}
        }
      ],
      "subclass": "string",
      "type": "string",
      "validator": {}
    }
  ],
  "contact": "string",
  "description": "string",
  "display_name": "string",
  "documentation": "string",
  "edition": "string",
  "featured": "string",
  "homepage": "string",
  "icon": "string",
  "id": "string",
  "installation": {
    "available": true,
    "status": "string",
    "version": "string"
  },
  "installed": [
    {
      "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
      "installed_at": "2026-01-01T00:00:00Z",
      "is_current": true,
      "name": "string",
      "version": "string"
    }
  ],
  "latest_version": "string",
  "license": "string",
  "name": "string",
  "repository": "string",
  "stage": "string",
  "supports": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "tier": "string",
  "types": {
    "destination": true,
    "provider": true,
    "source": true,
    "storage": true
  },
  "version": "string"
}

List the integration catalog

GET /api/v1/integrations/catalog
Badge

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

Response 200 OK application/json

  • items array[object]
    • name string
    • released_at string<date-time>
    • version string
  • 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/integrations/catalog' \
  -H 'Authorization: Bearer <badge>'

Response 200

{
  "items": [
    {
      "name": "string",
      "released_at": "2026-01-01T00:00:00Z",
      "version": "string"
    }
  ],
  "total": 0
}

List the versions of an integration

GET /api/v1/integrations/catalog/{name}/versions
Badge

Path parameters

  • name 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

Response 200 OK application/json

  • items array[object]
    • name string
    • released_at string<date-time>
    • version string
  • 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/integrations/catalog/{name}/versions' \
  -H 'Authorization: Bearer <badge>'

Response 200

{
  "items": [
    {
      "name": "string",
      "released_at": "2026-01-01T00:00:00Z",
      "version": "string"
    }
  ],
  "total": 0
}

List the installed integrations

GET /api/v1/integrations/installed
Badge

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
  • name string
    Only integrations of exactly this name.
  • current boolean
    Only the current version of each integration, or only the others.

Response 200 OK application/json

  • items array[object]
    • id string<uuid>
    • installed_at string<date-time>
    • is_current boolean
    • name string
    • version string
  • 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/integrations/installed' \
  -H 'Authorization: Bearer <badge>'

Response 200

{
  "items": [
    {
      "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
      "installed_at": "2026-01-01T00:00:00Z",
      "is_current": true,
      "name": "string",
      "version": "string"
    }
  ],
  "total": 0
}

Install an integration

POST /api/v1/integrations/installed
Badge

Request body application/json required

  • name string
  • version string

Response 200 OK application/json

  • id string<uuid>

Response 201 Installed application/json

  • 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/integrations/installed' \
  -H 'Authorization: Bearer <badge>' \
  -H 'Content-Type: application/json' \
  -d '{
  "name": "string",
  "version": "string"
}'

Response 200

{
  "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
}

Response 201

{
  "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
}

Install an integration and make it current

POST /api/v1/integrations/installed/current
Badge

Request body application/json required

  • name string
  • version string

Response 200 OK application/json

  • id string<uuid>

Response 201 Installed application/json

  • 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/integrations/installed/current' \
  -H 'Authorization: Bearer <badge>' \
  -H 'Content-Type: application/json' \
  -d '{
  "name": "string",
  "version": "string"
}'

Response 200

{
  "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
}

Response 201

{
  "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
}

Get an installed integration

GET /api/v1/integrations/installed/{id}
Badge

Path parameters

  • id string required

Response 200 OK application/json

  • id string<uuid>
  • installed_at string<date-time>
  • is_current boolean
  • name string
  • version string

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/integrations/installed/{id}' \
  -H 'Authorization: Bearer <badge>'

Response 200

{
  "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "installed_at": "2026-01-01T00:00:00Z",
  "is_current": true,
  "name": "string",
  "version": "string"
}

Uninstall an integration

DELETE /api/v1/integrations/installed/{id}
Badge

Path parameters

  • id string required

Response 200 OK

No response body.

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/integrations/installed/{id}' \
  -H 'Authorization: Bearer <badge>'

Make an installed version current

PUT /api/v1/integrations/installed/{id}/current
Badge

Path parameters

  • id string required

Response 200 OK

No response body.

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/integrations/installed/{id}/current' \
  -H 'Authorization: Bearer <badge>'

Summarise an installed integration

GET /api/v1/integrations/installed/{id}/summary
Badge

Path parameters

  • id string required

Response 200 OK application/json

  • id string<uuid>
  • installed_at string<date-time>
  • is_current boolean
  • name string
  • supports array[string]
  • version string

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/integrations/installed/{id}/summary' \
  -H 'Authorization: Bearer <badge>'

Response 200

{
  "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "installed_at": "2026-01-01T00:00:00Z",
  "is_current": true,
  "name": "string",
  "supports": [
    "string"
  ],
  "version": "string"
}

Get the form schemas of an integration

GET /api/v1/integrations/schema/{id}
Badge
Answers one JSON Schema per protocol, derived from the integration’s validator. With a resource, properties the inventory or a matching bundle provides are annotated with x-inventory-value or x-bundle-value.

Path parameters

  • id string required

Query parameters

  • type string required
    Connector type.
    Allowed: store, source, destination, secret_provider, inventory
  • urn_id string<uuid>
    Resource to resolve the protocols, inventory values and bundles against.
  • environment string
    Environment to resolve the protocols against.
  • draft boolean
    Answer the draft form a bundle uses: nothing required, nothing suggested.
    Default: false

Response 200 OK application/json

  • id string<uuid>
  • name string
  • protocols array[object]
    • bundle_fields map[object] nullable
      • provider object nullable
        • id string<uuid>
      • value string
    • initial map[any]
    • schema map[any]
    • scheme string
  • version string

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/integrations/schema/{id}' \
  -H 'Authorization: Bearer <badge>'

Response 200

{
  "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "name": "string",
  "protocols": [
    {
      "bundle_fields": {
        "key": {
          "provider": {
            "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
          },
          "value": "string"
        }
      },
      "initial": {
        "key": {}
      },
      "schema": {
        "key": {}
      },
      "scheme": "string"
    }
  ],
  "version": "string"
}

Get an integration

GET /api/v1/integrations/{id}
Badge

Path parameters

  • id string required

Query parameters

  • type string required
    Connector type.
    Allowed: store, source, destination, secret_provider, inventory
  • urn_id string<uuid>
    Resource to resolve the protocols against.
  • environment string
    Environment to resolve the protocols against.

Response 200 OK application/json

  • id string<uuid>
  • name string
  • protocols array[object]
    • bundle_fields map[object] nullable
      • provider object nullable
        • id string<uuid>
      • value string
    • fields array[object]
      • default string
      • description string
      • display_name string
      • enum array[string]
      • inventory_value string nullable
      • name string
      • pattern string
      • required boolean
      • sensitive boolean
      • type string
    • scheme string
    • validator
  • version string

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/integrations/{id}' \
  -H 'Authorization: Bearer <badge>'

Response 200

{
  "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
  "name": "string",
  "protocols": [
    {
      "bundle_fields": {
        "key": {
          "provider": {
            "id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
          },
          "value": "string"
        }
      },
      "fields": [
        {
          "default": "string",
          "description": "string",
          "display_name": "string",
          "enum": [
            "string"
          ],
          "inventory_value": "string",
          "name": "string",
          "pattern": "string",
          "required": true,
          "sensitive": true,
          "type": "string"
        }
      ],
      "scheme": "string",
      "validator": {}
    }
  ],
  "version": "string"
}