Open Resource Discovery API

Open Resource Discovery (ORD) is a protocol for machine-readable resource and capability discovery, enabling API management platforms to automatically discover what services and APIs an application exposes.

Documentation

Specifications

Code Examples

Schemas & Data

Other Resources

🔗
NaftikoCapability
https://raw.githubusercontent.com/api-evangelist/application-research/refs/heads/main/capabilities/open-resource-discovery-api-resources.yaml
🔗
NaftikoCapability
https://raw.githubusercontent.com/api-evangelist/application-research/refs/heads/main/capabilities/open-resource-discovery-capabilities.yaml
🔗
NaftikoCapability
https://raw.githubusercontent.com/api-evangelist/application-research/refs/heads/main/capabilities/open-resource-discovery-consumption-bundles.yaml
🔗
NaftikoCapability
https://raw.githubusercontent.com/api-evangelist/application-research/refs/heads/main/capabilities/open-resource-discovery-data-products.yaml
🔗
NaftikoCapability
https://raw.githubusercontent.com/api-evangelist/application-research/refs/heads/main/capabilities/open-resource-discovery-entity-types.yaml
🔗
NaftikoCapability
https://raw.githubusercontent.com/api-evangelist/application-research/refs/heads/main/capabilities/open-resource-discovery-event-resources.yaml
🔗
NaftikoCapability
https://raw.githubusercontent.com/api-evangelist/application-research/refs/heads/main/capabilities/open-resource-discovery-groups.yaml
🔗
NaftikoCapability
https://raw.githubusercontent.com/api-evangelist/application-research/refs/heads/main/capabilities/open-resource-discovery-integration-dependencies.yaml
🔗
NaftikoCapability
https://raw.githubusercontent.com/api-evangelist/application-research/refs/heads/main/capabilities/open-resource-discovery-ord-documents.yaml
🔗
NaftikoCapability
https://raw.githubusercontent.com/api-evangelist/application-research/refs/heads/main/capabilities/open-resource-discovery-packages.yaml
🔗
NaftikoCapability
https://raw.githubusercontent.com/api-evangelist/application-research/refs/heads/main/capabilities/open-resource-discovery-products.yaml
🔗
NaftikoCapability
https://raw.githubusercontent.com/api-evangelist/application-research/refs/heads/main/capabilities/open-resource-discovery-vendors.yaml

OpenAPI Specification

open-resource-discovery-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Application Research Open Resource Discovery (ORD) API
  version: 1.12.0
  description: |
    The Open Resource Discovery (ORD) API provides access to ORD Documents which serve as wrappers 
    for ORD resources and taxonomy. This API enables discovery and management of API resources, 
    event resources, data products, entity types, capabilities, and integration dependencies.

    ORD enables machine-readable self-description of systems and their capabilities, supporting
    automated discovery, integration, and governance of enterprise APIs and services.
  contact:
    name: ORD Specification Team
    url: https://open-resource-discovery.org
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0

servers:
  - url: https://api.example.com/ord/v1
    description: Production server
  - url: https://sandbox.example.com/ord/v1
    description: Sandbox server

tags:
  - name: API Resources
    description: API Resource operations
  - name: Capabilities
    description: Capability operations
  - name: Consumption Bundles
    description: Consumption Bundle operations
  - name: Data Products
    description: Data Product operations
  - name: Entity Types
    description: Entity Type operations
  - name: Event Resources
    description: Event Resource operations
  - name: Groups
    description: Group and Group Type operations

  - name: Integration Dependencies
    description: Integration Dependency operations
  - name: ORD Documents
    description: Operations for ORD Document management
  - name: Packages
    description: Package management operations
  - name: Products
    description: Product operations
  - name: Vendors
    description: Vendor operations
paths:
  /documents:
    get:
      tags:
        - ORD Documents
      summary: Application Research List all ORD Documents
      description: Retrieves a list of all available ORD Documents
      operationId: listOrdDocuments
      parameters:
        - $ref: '#/components/parameters/LimitParam'
        - $ref: '#/components/parameters/OffsetParam'
        - $ref: '#/components/parameters/PerspectiveParam'
      responses:
        '200':
          description: Successfully retrieved list of ORD Documents
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrdDocumentList'
              examples:
                documentList:
                  $ref: '#/components/examples/OrdDocumentListExample'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '500':
          $ref: '#/components/responses/InternalServerError'

    post:
      tags:
        - ORD Documents
      summary: Application Research Create a new ORD Document
      description: Creates a new ORD Document with the provided resources and taxonomy
      operationId: createOrdDocument
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrdDocument'
            examples:
              iotPlatform:
                $ref: '#/components/examples/IoTPlatformOrdDocumentExample'
              successFactors:
                $ref: '#/components/examples/SuccessFactorsOrdDocumentExample'
      responses:
        '201':
          description: Successfully created ORD Document
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrdDocument'
              examples:
                created:
                  $ref: '#/components/examples/IoTPlatformOrdDocumentExample'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '409':
          $ref: '#/components/responses/Conflict'
        '500':
          $ref: '#/components/responses/InternalServerError'

  /documents/{documentId}:
    get:
      tags:
        - ORD Documents
      summary: Application Research Get an ORD Document by ID
      description: Retrieves a specific ORD Document by its identifier
      operationId: getOrdDocument
      parameters:
        - $ref: '#/components/parameters/DocumentIdParam'
      responses:
        '200':
          description: Successfully retrieved ORD Document
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrdDocument'
              examples:
                iotPlatform:
                  $ref: '#/components/examples/IoTPlatformOrdDocumentExample'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'

    put:
      tags:
        - ORD Documents
      summary: Application Research Update an ORD Document
      description: Updates an existing ORD Document
      operationId: updateOrdDocument
      parameters:
        - $ref: '#/components/parameters/DocumentIdParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrdDocument'
            examples:
              update:
                $ref: '#/components/examples/IoTPlatformOrdDocumentExample'
      responses:
        '200':
          description: Successfully updated ORD Document
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrdDocument'
              examples:
                updated:
                  $ref: '#/components/examples/IoTPlatformOrdDocumentExample'
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'

    delete:
      tags:
        - ORD Documents
      summary: Application Research Delete an ORD Document
      description: Deletes an ORD Document
      operationId: deleteOrdDocument
      parameters:
        - $ref: '#/components/parameters/DocumentIdParam'
      responses:
        '204':
          description: Successfully deleted ORD Document
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'

  /packages:
    get:
      tags:
        - Packages
      summary: Application Research List all Packages
      description: Retrieves a list of all Packages across all ORD Documents
      operationId: listPackages
      parameters:
        - $ref: '#/components/parameters/LimitParam'
        - $ref: '#/components/parameters/OffsetParam'
        - $ref: '#/components/parameters/VendorFilterParam'
      responses:
        '200':
          description: Successfully retrieved list of Packages
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PackageList'
              examples:
                packageList:
                  $ref: '#/components/examples/PackageListExample'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'

  /packages/{ordId}:
    get:
      tags:
        - Packages
      summary: Application Research Get a Package by ORD ID
      description: Retrieves a specific Package by its ORD ID
      operationId: getPackage
      parameters:
        - $ref: '#/components/parameters/PackageOrdIdParam'
      responses:
        '200':
          description: Successfully retrieved Package
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Package'
              examples:
                package:
                  $ref: '#/components/examples/PackageExample'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'

  /api-resources:
    get:
      tags:
        - API Resources
      summary: Application Research List all API Resources
      description: Retrieves a list of all API Resources across all ORD Documents
      operationId: listApiResources
      parameters:
        - $ref: '#/components/parameters/LimitParam'
        - $ref: '#/components/parameters/OffsetParam'
        - $ref: '#/components/parameters/ApiProtocolFilterParam'
        - $ref: '#/components/parameters/VisibilityFilterParam'
        - $ref: '#/components/parameters/ReleaseStatusFilterParam'
      responses:
        '200':
          description: Successfully retrieved list of API Resources
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResourceList'
              examples:
                apiResourceList:
                  $ref: '#/components/examples/ApiResourceListExample'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'

  /api-resources/{ordId}:
    get:
      tags:
        - API Resources
      summary: Application Research Get an API Resource by ORD ID
      description: Retrieves a specific API Resource by its ORD ID
      operationId: getApiResource
      parameters:
        - $ref: '#/components/parameters/ApiResourceOrdIdParam'
      responses:
        '200':
          description: Successfully retrieved API Resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResource'
              examples:
                apiResource:
                  $ref: '#/components/examples/ApiResourceExample'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'

  /api-resources/{ordId}/definitions:
    get:
      tags:
        - API Resources
      summary: Application Research Get API Resource Definitions
      description: Retrieves all resource definitions for a specific API Resource
      operationId: getApiResourceDefinitions
      parameters:
        - $ref: '#/components/parameters/ApiResourceOrdIdParam'
      responses:
        '200':
          description: Successfully retrieved API Resource Definitions
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiResourceDefinition'
              examples:
                definitions:
                  $ref: '#/components/examples/ApiResourceDefinitionListExample'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'

  /event-resources:
    get:
      tags:
        - Event Resources
      summary: Application Research List all Event Resources
      description: Retrieves a list of all Event Resources across all ORD Documents
      operationId: listEventResources
      parameters:
        - $ref: '#/components/parameters/LimitParam'
        - $ref: '#/components/parameters/OffsetParam'
        - $ref: '#/components/parameters/VisibilityFilterParam'
        - $ref: '#/components/parameters/ReleaseStatusFilterParam'
      responses:
        '200':
          description: Successfully retrieved list of Event Resources
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventResourceList'
              examples:
                eventResourceList:
                  $ref: '#/components/examples/EventResourceListExample'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'

  /event-resources/{ordId}:
    get:
      tags:
        - Event Resources
      summary: Application Research Get an Event Resource by ORD ID
      description: Retrieves a specific Event Resource by its ORD ID
      operationId: getEventResource
      parameters:
        - $ref: '#/components/parameters/EventResourceOrdIdParam'
      responses:
        '200':
          description: Successfully retrieved Event Resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventResource'
              examples:
                eventResource:
                  $ref: '#/components/examples/EventResourceExample'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'

  /entity-types:
    get:
      tags:
        - Entity Types
      summary: Application Research List all Entity Types
      description: Retrieves a list of all Entity Types across all ORD Documents
      operationId: listEntityTypes
      parameters:
        - $ref: '#/components/parameters/LimitParam'
        - $ref: '#/components/parameters/OffsetParam'
        - $ref: '#/components/parameters/LevelFilterParam'
        - $ref: '#/components/parameters/VisibilityFilterParam'
      responses:
        '200':
          description: Successfully retrieved list of Entity Types
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntityTypeList'
              examples:
                entityTypeList:
                  $ref: '#/components/examples/EntityTypeListExample'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'

  /entity-types/{ordId}:
    get:
      tags:
        - Entity Types
      summary: Application Research Get an Entity Type by ORD ID
      description: Retrieves a specific Entity Type by its ORD ID
      operationId: getEntityType
      parameters:
        - $ref: '#/components/parameters/EntityTypeOrdIdParam'
      responses:
        '200':
          description: Successfully retrieved Entity Type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntityType'
              examples:
                entityType:
                  $ref: '#/components/examples/EntityTypeExample'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'

  /data-products:
    get:
      tags:
        - Data Products
      summary: Application Research List all Data Products
      description: Retrieves a list of all Data Products across all ORD Documents
      operationId: listDataProducts
      parameters:
        - $ref: '#/components/parameters/LimitParam'
        - $ref: '#/components/parameters/OffsetParam'
        - $ref: '#/components/parameters/DataProductTypeFilterParam'
        - $ref: '#/components/parameters/DataProductCategoryFilterParam'
      responses:
        '200':
          description: Successfully retrieved list of Data Products
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataProductList'
              examples:
                dataProductList:
                  $ref: '#/components/examples/DataProductListExample'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'

  /data-products/{ordId}:
    get:
      tags:
        - Data Products
      summary: Application Research Get a Data Product by ORD ID
      description: Retrieves a specific Data Product by its ORD ID
      operationId: getDataProduct
      parameters:
        - $ref: '#/components/parameters/DataProductOrdIdParam'
      responses:
        '200':
          description: Successfully retrieved Data Product
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataProduct'
              examples:
                dataProduct:
                  $ref: '#/components/examples/DataProductExample'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'

  /capabilities:
    get:
      tags:
        - Capabilities
      summary: Application Research List all Capabilities
      description: Retrieves a list of all Capabilities across all ORD Documents
      operationId: listCapabilities
      parameters:
        - $ref: '#/components/parameters/LimitParam'
        - $ref: '#/components/parameters/OffsetParam'
        - $ref: '#/components/parameters/CapabilityTypeFilterParam'
      responses:
        '200':
          description: Successfully retrieved list of Capabilities
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CapabilityList'
              examples:
                capabilityList:
                  $ref: '#/components/examples/CapabilityListExample'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'

  /capabilities/{ordId}:
    get:
      tags:
        - Capabilities
      summary: Application Research Get a Capability by ORD ID
      description: Retrieves a specific Capability by its ORD ID
      operationId: getCapability
      parameters:
        - $ref: '#/components/parameters/CapabilityOrdIdParam'
      responses:
        '200':
          description: Successfully retrieved Capability
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Capability'
              examples:
                capability:
                  $ref: '#/components/examples/CapabilityExample'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'

  /integration-dependencies:
    get:
      tags:
        - Integration Dependencies
      summary: Application Research List all Integration Dependencies
      description: Retrieves a list of all Integration Dependencies across all ORD Documents
      operationId: listIntegrationDependencies
      parameters:
        - $ref: '#/components/parameters/LimitParam'
        - $ref: '#/components/parameters/OffsetParam'
        - $ref: '#/components/parameters/MandatoryFilterParam'
      responses:
        '200':
          description: Successfully retrieved list of Integration Dependencies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntegrationDependencyList'
              examples:
                integrationDependencyList:
                  $ref: '#/components/examples/IntegrationDependencyListExample'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'

  /integration-dependencies/{ordId}:
    get:
      tags:
        - Integration Dependencies
      summary: Application Research Get an Integration Dependency by ORD ID
      description: Retrieves a specific Integration Dependency by its ORD ID
      operationId: getIntegrationDependency
      parameters:
        - $ref: '#/components/parameters/IntegrationDependencyOrdIdParam'
      responses:
        '200':
          description: Successfully retrieved Integration Dependency
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntegrationDependency'
              examples:
                integrationDependency:
                  $ref: '#/components/examples/IntegrationDependencyExample'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'

  /consumption-bundles:
    get:
      tags:
        - Consumption Bundles
      summary: Application Research List all Consumption Bundles
      description: Retrieves a list of all Consumption Bundles across all ORD Documents
      operationId: listConsumptionBundles
      parameters:
        - $ref: '#/components/parameters/LimitParam'
        - $ref: '#/components/parameters/OffsetParam'
        - $ref: '#/components/parameters/VisibilityFilterParam'
      responses:
        '200':
          description: Successfully retrieved list of Consumption Bundles
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConsumptionBundleList'
              examples:
                consumptionBundleList:
                  $ref: '#/components/examples/ConsumptionBundleListExample'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'

  /consumption-bundles/{ordId}:
    get:
      tags:
        - Consumption Bundles
      summary: Application Research Get a Consumption Bundle by ORD ID
      description: Retrieves a specific Consumption Bundle by its ORD ID
      operationId: getConsumptionBundle
      parameters:
        - $ref: '#/components/parameters/ConsumptionBundleOrdIdParam'
      responses:
        '200':
          description: Successfully retrieved Consumption Bundle
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConsumptionBundle'
              examples:
                consumptionBundle:
                  $ref: '#/components/examples/ConsumptionBundleExample'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'

  /products:
    get:
      tags:
        - Products
      summary: Application Research List all Products
      description: Retrieves a list of all Products across all ORD Documents
      operationId: listProducts
      parameters:
        - $ref: '#/components/parameters/LimitParam'
        - $ref: '#/components/parameters/OffsetParam'
        - $ref: '#/components/parameters/VendorFilterParam'
      responses:
        '200':
          description: Successfully retrieved list of Products
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductList'
              examples:
                productList:
                  $ref: '#/components/examples/ProductListExample'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'

  /products/{ordId}:
    get:
      tags:
        - Products
      summary: Application Research Get a Product by ORD ID
      description: Retrieves a specific Product by its ORD ID
      operationId: getProduct
      parameters:
        - $ref: '#/components/parameters/ProductOrdIdParam'
      responses:
        '200':
          description: Successfully retrieved Product
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
              examples:
                product:
                  $ref: '#/components/examples/ProductExample'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'

  /vendors:
    get:
      tags:
        - Vendors
      summary: Application Research List all Vendors
      description: Retrieves a list of all Vendors across all ORD Documents
      operationId: listVendors
      parameters:
        - $ref: '#/components/parameters/LimitParam'
        - $ref: '#/components/parameters/OffsetParam'
      responses:
        '200':
          description: Successfully retrieved list of Vendors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VendorList'
              examples:
                vendorList:
                  $ref: '#/components/examples/VendorListExample'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'

  /vendors/{ordId}:
    get:
      tags:
        - Vendors
      summary: Application Research Get a Vendor by ORD ID
      description: Retrieves a specific Vendor by its ORD ID
      operationId: getVendor
      parameters:
        - $ref: '#/components/parameters/VendorOrdIdParam'
      responses:
        '200':
          description: Successfully retrieved Vendor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Vendor'
              examples:
                vendor:
                  $ref: '#/components/examples/VendorExample'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'

  /groups:
    get:
      tags:
        - Groups
      summary: Application Research List all Groups
      description: Retrieves a list of all Groups across all ORD Documents
      operationId: listGroups
      parameters:
        - $ref: '#/components/parameters/LimitParam'
        - $ref: '#/components/parameters/OffsetParam'
        - $ref: '#/components/parameters/GroupTypeFilterParam'
      responses:
        '200':
          description: Successfully retrieved list of Groups
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GroupList'
              examples:
                groupList:
                  $ref: '#/components/examples/GroupListExample'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'

  /groups/{groupId}:
    get:
      tags:
        - Groups
      summary: Application Research Get a Group by Group ID
      description: Retrieves a specific Group by its Group ID
      operationId: getGroup
      parameters:
        - $ref: '#/components/parameters/GroupIdParam'
      responses:
        '200':
          description: Successfully retrieved Group
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Group'
              examples:
                group:
                  $ref: '#/components/examples/GroupExample'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'

  /group-types:
    get:
      tags:
        - Groups
      summary: Application Research List all Group Types
      description: Retrieves a list of all Group Types across all ORD Documents
      operationId: listGroupTypes
      parameters:
        - $ref: '#/components/parameters/LimitParam'
        - $ref: '#/components/parameters/OffsetParam'
      responses:
        '200':
          description: Successfully retrieved list of Group Types
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GroupTypeList'
              examples:
                groupTypeList:
                  $ref: '#/components/examples/GroupTypeListExample'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'

  /group-types/{groupTypeId}:
    get:
      tags:
        - Groups
      summary: Application Research Get a Group Type by Group Type ID
      description: Retrieves a specific Group Type by its Group Type ID
      operationId: getGroupType
      parameters:
        - $ref: '#/components/parameters/GroupTypeIdParam'
      responses:
        '200':
          description: Successfully retrieved Group Type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GroupType'
              examples:
                groupType:
                  $ref: '#/components/examples/GroupTypeExample'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'

components:
  securitySchemes:
    oauth2:
      type: oauth2
      description: OAuth 2.0 authentication
      flows:
        clientCredentials:
          tokenUrl: /oauth/token
          scopes:
            ord:read: Read access to ORD resources
            ord:write: Write access to ORD resources
            ord:admin: Administrative access to ORD resources
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

  parameters:
    DocumentIdParam:
      name: documentId
      in: path
      required: true
      description: Unique identifier of the ORD Document
      schema:
        type: string
      example: sap-iot-platform-v1

    PackageOrdIdParam:
      name: ordId
      in: path
      required: true
      description: ORD ID of the Package
      schema:
        type: string
        pattern: '^([a-z0-9]+(?:[.][a-z0-9]+)*):(package):([a-zA-Z0-9._\-]+):(v0|v[1-9][0-9]*)$'
      example: sap.iot:package:DeviceManagement:v1

    ApiResourceOrdIdParam:
      name: ordId
      in: path
      required: true
      description: ORD ID of the API Resource
      schema:
        type: string
        pattern: '^([a-z0-9]+(?:[.][a-z0-9]+)*):(apiResource):([a-zA-Z0-9._\-]+):(v0|v[1-9][0-9]*)$'
      example: sap.iot:apiResource:DeviceManagementAPI:v1

    EventResourceOrdIdParam:
      name: ordId
      in: path
      required: true
      description: ORD ID of the Event Resource
      schema:
        type: string
        pattern: '^([a-z0-9]+(?:[.][a-z0-9]+)*):(eventResource):([a-zA-Z0-9._\-]+):(v0|v[1-9][0-9]*)$'
      example: sap.iot:eventResource:DeviceEvents:v1

    EntityTypeOrdIdParam:
      name: ordId
      in: path
      required: true
      description: ORD ID of the Entity Type
      schema:
        type: string
        pattern: '^([a-z0-9]+(?:[.][a-z0-9]+)*):(entityType):([a-zA-Z0-9._\-]+):(v0|v[1-9][0-9]*)$'
      example: sap.iot:entityType:Device:v1

    DataProductOrdIdParam:
      name: ordId
      in: path
      required: true
      description: ORD ID of the Data Product
      schema:
        type: string
        pattern: '^([a-z0-9]+(?:[.][a-z0-9]+)*):(dataProduct):([a-zA-Z0-9._\-]+):(v0|v[1-9][0-9]*)$'
      example: sap.iot:dataProduct:AssetPerformance:v1

    CapabilityOrdIdParam:
      name: ordId
      in: path
      required: true
      description: ORD ID of the Capability
      schema:
        type: string
        pattern: '^([a-z0-9-]+(?:[.][a-z0-9-]+)*):(capability):([a-zA-Z0-9._\-]+):(v0|v[1-9][0-9]*)$'
      example: sap.iot:capability:EdgeProcessing:v1

    IntegrationDependencyOrdIdParam:
      name: ordId
      in: path
      required: true
      description: ORD ID of the Integration Dependency
      schema:
        type: string
        pattern: '^([a-z0-9-]+(?:[.][a-z0-9-]+)*):(integrationDependency):([a-zA-Z0-9._\-]+):(v0|v[1-9][0-9]*)$'
      example: sap.iot:integrationDependency:SensorDataIngestion:v1

    ConsumptionBundleOrdIdParam:
      name: ordId
      in: path
      required: true
      description: ORD ID of the Consumption Bundle
      schema:
        type: string
        pattern: '^([a-z0-9]+(?:[.][a-z0-9]+)*):(consumptionBundle):([a-zA-Z0-9._\-]+):(v0|v[1-9][0-9]*)$'
      example: sap.iot:consumptionBundle:PlatformAPIs:v1

    ProductOrdIdParam:
      name: ordId
      in: path
      required: true
      description: ORD ID of the Product
      schema:
        type: string
        pattern: '^([a-z0-9]+(?:[.][a-z0-9]+)*):(product):([a-zA-Z0-9._\-]+):()$'
      example: 'sap:product:IoTPlatform:'

    VendorOrdIdParam:
      name: ordId
      in: path
      required: true
      description: ORD ID of the Vendor
      schema:
        type: string
        pattern: '^([a-z0-9]+):(vendor):([a-zA-Z0-9._\-]+):()$'
      example: 'sap:vendor:SAP:'

    GroupIdParam:
      name: groupId
      in: path
      required: true
      description: Group ID
      schema:
        type: string
        pattern: '^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\-\/]+):([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\-\/]+)$'
      example: sap.iot:capability-area:sap.iot:Connectivity

    GroupTypeIdParam:
      name: groupTypeId
      in: path
      required: true
      description: Group Type ID
      schema:
        type: string
        pattern: '^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\-\/]+)$'
      example: sap.iot:capability-area

    LimitParam:
      name: limit
      in: query
      description: Maximum number of items to return
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 20

    OffsetPa

# --- truncated at 32 KB (112 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/application-research/refs/heads/main/openapi/open-resource-discovery-openapi.yml