Crossplane CompositeResourceDefinitions API

CompositeResourceDefinitions (XRDs) extend the Kubernetes API with new custom resource types. An XRD defines the schema and API surface for a composite resource and an optional namespace-scoped claim resource.

Documentation

Specifications

Schemas & Data

Other Resources

OpenAPI Specification

crossplane-compositeresourcedefinitions-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Crossplane Kubernetes CompositeResourceDefinitions API
  description: 'The Crossplane Kubernetes API extends the Kubernetes API server with custom resources for managing cloud infrastructure declaratively. Resources are organized into two main API groups: apiextensions.crossplane.io for composition primitives (Compositions, CompositeResourceDefinitions, EnvironmentConfigs) and pkg.crossplane.io for package management (Providers, Functions, Configurations and their revisions). All operations use standard Kubernetes REST conventions and are authenticated through the Kubernetes API server''s authentication mechanisms.'
  version: '2.2'
  contact:
    name: Crossplane Community
    url: https://slack.crossplane.io/
  termsOfService: https://www.crossplane.io/
servers:
- url: https://kubernetes.default.svc
  description: Kubernetes API Server (in-cluster)
security:
- bearerAuth: []
tags:
- name: CompositeResourceDefinitions
  description: CompositeResourceDefinitions (XRDs) extend the Kubernetes API with new custom resource types. An XRD defines the schema and API surface for a composite resource and an optional namespace-scoped claim resource.
paths:
  /apis/apiextensions.crossplane.io/v1/compositeresourcedefinitions:
    get:
      operationId: listCompositeResourceDefinitions
      summary: Crossplane List CompositeResourceDefinitions
      description: Returns a list of all CompositeResourceDefinition (XRD) resources. Each XRD defines the schema for a new composite resource type and optionally a claim type that will be installed as Kubernetes CRDs.
      tags:
      - CompositeResourceDefinitions
      parameters:
      - $ref: '#/components/parameters/labelSelector'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/continueToken'
      responses:
        '200':
          description: Successfully listed CompositeResourceDefinitions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompositeResourceDefinitionList'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createCompositeResourceDefinition
      summary: Crossplane Create a CompositeResourceDefinition
      description: Creates a new CompositeResourceDefinition. Upon creation, Crossplane installs corresponding CRDs and begins serving the new composite resource API. If claimNames are specified, a namespaced claim CRD is also installed.
      tags:
      - CompositeResourceDefinitions
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CompositeResourceDefinition'
      responses:
        '201':
          description: CompositeResourceDefinition successfully created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompositeResourceDefinition'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '409':
          $ref: '#/components/responses/Conflict'
  /apis/apiextensions.crossplane.io/v1/compositeresourcedefinitions/{name}:
    get:
      operationId: getCompositeResourceDefinition
      summary: Crossplane Get a CompositeResourceDefinition
      description: Returns details of a specific CompositeResourceDefinition, including its version schemas, claim configuration, and status conditions reflecting whether the CRDs are established.
      tags:
      - CompositeResourceDefinitions
      parameters:
      - $ref: '#/components/parameters/name'
      responses:
        '200':
          description: Successfully retrieved the CompositeResourceDefinition.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompositeResourceDefinition'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: replaceCompositeResourceDefinition
      summary: Crossplane Replace a CompositeResourceDefinition
      description: Replaces a CompositeResourceDefinition. Crossplane will reconcile the new schema, updating existing CRDs and triggering re-composition of existing composite resources as needed.
      tags:
      - CompositeResourceDefinitions
      parameters:
      - $ref: '#/components/parameters/name'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CompositeResourceDefinition'
      responses:
        '200':
          description: CompositeResourceDefinition successfully replaced.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompositeResourceDefinition'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteCompositeResourceDefinition
      summary: Crossplane Delete a CompositeResourceDefinition
      description: Deletes a CompositeResourceDefinition. Crossplane will remove the associated CRDs and all existing composite resources of that type if no finalizers prevent deletion.
      tags:
      - CompositeResourceDefinitions
      parameters:
      - $ref: '#/components/parameters/name'
      responses:
        '200':
          description: CompositeResourceDefinition deletion initiated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    CompositeResourceDefinition:
      type: object
      description: A Crossplane CompositeResourceDefinition (XRD) that extends the Kubernetes API with a new composite resource type. Creating an XRD causes Crossplane to install corresponding CRDs and begin serving the new API. Optionally defines a namespace-scoped claim type.
      required:
      - apiVersion
      - kind
      - metadata
      - spec
      properties:
        apiVersion:
          type: string
          const: apiextensions.crossplane.io/v1
          description: API version for the CompositeResourceDefinition resource.
        kind:
          type: string
          const: CompositeResourceDefinition
          description: Resource kind identifier.
        metadata:
          $ref: '#/components/schemas/ObjectMeta'
        spec:
          type: object
          description: Specification for the new composite resource API.
          required:
          - group
          - names
          - versions
          properties:
            group:
              type: string
              description: API group for the composite resource, conventionally a domain name.
            names:
              type: object
              description: Names for the composite resource kind.
              required:
              - kind
              - plural
              properties:
                kind:
                  type: string
                  description: PascalCase singular kind name, conventionally prefixed with X.
                plural:
                  type: string
                  description: Lowercase plural name used in API paths.
                singular:
                  type: string
                  description: Lowercase singular name.
                shortNames:
                  type: array
                  description: Short aliases for use with kubectl.
                  items:
                    type: string
                categories:
                  type: array
                  description: Categories this type belongs to, such as crossplane.
                  items:
                    type: string
            claimNames:
              type: object
              description: Names for the optional namespace-scoped claim resource type. When specified, Crossplane creates a claim CRD in addition to the composite resource CRD.
              properties:
                kind:
                  type: string
                  description: PascalCase kind name for the claim.
                plural:
                  type: string
                  description: Lowercase plural name for the claim.
            versions:
              type: array
              description: API versions to serve for this composite resource type.
              minItems: 1
              items:
                type: object
                description: A version of the composite resource API schema.
            connectionSecretKeys:
              type: array
              description: Keys expected in connection secrets propagated from composed resources.
              items:
                type: string
            defaultCompositionRef:
              type: object
              description: Default Composition to use when composite resources do not specify one.
              properties:
                name:
                  type: string
                  description: Name of the default Composition.
            enforcedCompositionRef:
              type: object
              description: Composition that is always used, preventing overrides by composite resource users.
              properties:
                name:
                  type: string
                  description: Name of the enforced Composition.
        status:
          type: object
          description: Status of the CompositeResourceDefinition.
          properties:
            conditions:
              type: array
              description: Status conditions including Established and Offered.
              items:
                $ref: '#/components/schemas/Condition'
    Status:
      type: object
      description: A Kubernetes API Status response used for errors and operation results.
      properties:
        apiVersion:
          type: string
          description: API version of the Status object.
        kind:
          type: string
          const: Status
          description: Always Status.
        status:
          type: string
          description: Status of the operation, Success or Failure.
        message:
          type: string
          description: Human-readable description of the status.
        reason:
          type: string
          description: Machine-readable reason for the status, such as NotFound or AlreadyExists.
        code:
          type: integer
          description: HTTP status code corresponding to this status.
    ObjectMeta:
      type: object
      description: Standard Kubernetes object metadata.
      required:
      - name
      properties:
        name:
          type: string
          description: Unique name of the resource within its scope.
        namespace:
          type: string
          description: Namespace of the resource. Crossplane core resources are cluster-scoped and do not use namespace.
        labels:
          type: object
          description: Key-value pairs for organizing and selecting resources.
          additionalProperties:
            type: string
        annotations:
          type: object
          description: Non-identifying metadata attached to the resource.
          additionalProperties:
            type: string
        resourceVersion:
          type: string
          description: Opaque string that identifies the version of the resource for optimistic concurrency.
        uid:
          type: string
          description: Unique identifier for the resource assigned by the API server.
        generation:
          type: integer
          description: Sequence number for changes to the spec. Incremented by the API server on spec changes.
        creationTimestamp:
          type: string
          format: date-time
          description: Timestamp when the resource was created.
        deletionTimestamp:
          type: string
          format: date-time
          description: Timestamp after which the resource will be deleted, set when deletion is requested.
        finalizers:
          type: array
          description: Finalizers that must be cleared before the object is deleted.
          items:
            type: string
    Condition:
      type: object
      description: A status condition for a Crossplane resource.
      required:
      - type
      - status
      properties:
        type:
          type: string
          description: Type of condition, such as Ready, Synced, or Healthy.
        status:
          type: string
          enum:
          - 'True'
          - 'False'
          - Unknown
          description: Status of the condition.
        reason:
          type: string
          description: Machine-readable reason for the condition's last transition.
        message:
          type: string
          description: Human-readable message describing the current condition state.
        lastTransitionTime:
          type: string
          format: date-time
          description: Timestamp of the last transition for this condition.
    CompositeResourceDefinitionList:
      type: object
      description: A list of CompositeResourceDefinition resources.
      required:
      - apiVersion
      - kind
      - items
      properties:
        apiVersion:
          type: string
          description: API version for the list resource.
        kind:
          type: string
          const: CompositeResourceDefinitionList
          description: List kind identifier.
        metadata:
          type: object
          properties:
            resourceVersion:
              type: string
              description: Resource version of the list.
            continue:
              type: string
              description: Continuation token for pagination.
        items:
          type: array
          description: List of CompositeResourceDefinition resources.
          items:
            $ref: '#/components/schemas/CompositeResourceDefinition'
  parameters:
    labelSelector:
      name: labelSelector
      in: query
      required: false
      description: A selector to restrict the list of returned objects by their labels. Defaults to everything.
      schema:
        type: string
    continueToken:
      name: continue
      in: query
      required: false
      description: Token returned by a previous list call to retrieve the next page of results. This token encodes list position and expiration time.
      schema:
        type: string
    name:
      name: name
      in: path
      required: true
      description: Name of the Crossplane resource.
      schema:
        type: string
    limit:
      name: limit
      in: query
      required: false
      description: Maximum number of items to return in a single response. The server may return fewer items than requested. Use the continue token for pagination.
      schema:
        type: integer
        minimum: 1
  responses:
    Unauthorized:
      description: Authentication credentials are missing or invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Status'
    BadRequest:
      description: The request was malformed or failed validation.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Status'
    NotFound:
      description: The requested resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Status'
    Conflict:
      description: A resource with this name already exists.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Status'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Kubernetes service account token or user bearer token for authenticating with the Kubernetes API server. RBAC policies control which Crossplane resources each identity can access.
externalDocs:
  description: Crossplane API Reference
  url: https://docs.crossplane.io/latest/api/