Application Research Workloads API

Score workload management operations

Operations 7

GET /workloads Application Research List all workloads #
POST /workloads Application Research Create a new workload #
GET /workloads/{workloadName} Application Research Get a specific workload #
PUT /workloads/{workloadName} Application Research Update a workload #
DELETE /workloads/{workloadName} Application Research Delete a workload #
GET /workloads/{workloadName}/containers Application Research List containers in a workload #
GET /workloads/{workloadName}/resources Application Research List resources in a workload #

Documentation

Specifications

Code Examples

Schemas & Data

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/application-research-workloads-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

application-research-workloads-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Application Research Score Workload Specification Workloads API
  description: "API for managing Score workload specifications. Score is a platform-agnostic \nworkload specification that enables developers to define their workloads once \nand deploy them across multiple platforms.\n"
  version: 1.0.0
  contact:
    name: Score Project
    url: https://score.dev
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
servers:
- url: https://api.score.dev/v1
  description: Production API
- url: https://api.staging.score.dev/v1
  description: Staging API
security:
- bearerAuth: []
- apiKey: []
tags:
- name: Workloads
  description: Score workload management operations
paths:
  /workloads:
    get:
      tags:
      - Workloads
      summary: Application Research List all workloads
      description: Retrieves a list of all Score workload specifications
      operationId: listWorkloads
      parameters:
      - $ref: '#/components/parameters/LimitParam'
      - $ref: '#/components/parameters/OffsetParam'
      - $ref: '#/components/parameters/NameFilterParam'
      responses:
        '200':
          description: Successful response with list of workloads
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkloadList'
              examples:
                multipleWorkloads:
                  $ref: '#/components/examples/WorkloadListExample'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalError'
    post:
      tags:
      - Workloads
      summary: Application Research Create a new workload
      description: Creates a new Score workload specification
      operationId: createWorkload
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ScoreWorkload'
            examples:
              ecommerceFrontend:
                $ref: '#/components/examples/EcommerceFrontendExample'
              dataPipelineWorker:
                $ref: '#/components/examples/DataPipelineWorkerExample'
              mlInferenceService:
                $ref: '#/components/examples/MLInferenceServiceExample'
          application/x-yaml:
            schema:
              $ref: '#/components/schemas/ScoreWorkload'
      responses:
        '201':
          description: Workload created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScoreWorkload'
              examples:
                ecommerceFrontend:
                  $ref: '#/components/examples/EcommerceFrontendExample'
        '400':
          $ref: '#/components/responses/BadRequest'
        '409':
          $ref: '#/components/responses/Conflict'
        '500':
          $ref: '#/components/responses/InternalError'
  /workloads/{workloadName}:
    get:
      tags:
      - Workloads
      summary: Application Research Get a specific workload
      description: Retrieves a Score workload specification by name
      operationId: getWorkload
      parameters:
      - $ref: '#/components/parameters/WorkloadNameParam'
      responses:
        '200':
          description: Successful response with workload details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScoreWorkload'
              examples:
                ecommerceFrontend:
                  $ref: '#/components/examples/EcommerceFrontendExample'
                dataPipelineWorker:
                  $ref: '#/components/examples/DataPipelineWorkerExample'
                mlInferenceService:
                  $ref: '#/components/examples/MLInferenceServiceExample'
            application/x-yaml:
              schema:
                $ref: '#/components/schemas/ScoreWorkload'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalError'
    put:
      tags:
      - Workloads
      summary: Application Research Update a workload
      description: Updates an existing Score workload specification
      operationId: updateWorkload
      parameters:
      - $ref: '#/components/parameters/WorkloadNameParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ScoreWorkload'
            examples:
              ecommerceFrontend:
                $ref: '#/components/examples/EcommerceFrontendExample'
          application/x-yaml:
            schema:
              $ref: '#/components/schemas/ScoreWorkload'
      responses:
        '200':
          description: Workload updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScoreWorkload'
              examples:
                ecommerceFrontend:
                  $ref: '#/components/examples/EcommerceFrontendExample'
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalError'
    delete:
      tags:
      - Workloads
      summary: Application Research Delete a workload
      description: Deletes a Score workload specification
      operationId: deleteWorkload
      parameters:
      - $ref: '#/components/parameters/WorkloadNameParam'
      responses:
        '204':
          description: Workload deleted successfully
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalError'
  /workloads/{workloadName}/containers:
    get:
      tags:
      - Workloads
      summary: Application Research List containers in a workload
      description: Retrieves all containers defined in a workload
      operationId: listWorkloadContainers
      parameters:
      - $ref: '#/components/parameters/WorkloadNameParam'
      responses:
        '200':
          description: Successful response with container list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContainerMap'
              examples:
                ecommerceContainers:
                  $ref: '#/components/examples/EcommerceContainersExample'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalError'
  /workloads/{workloadName}/resources:
    get:
      tags:
      - Workloads
      summary: Application Research List resources in a workload
      description: Retrieves all resource dependencies defined in a workload
      operationId: listWorkloadResources
      parameters:
      - $ref: '#/components/parameters/WorkloadNameParam'
      responses:
        '200':
          description: Successful response with resource list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceMap'
              examples:
                ecommerceResources:
                  $ref: '#/components/examples/EcommerceResourcesExample'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalError'
components:
  schemas:
    Service:
      type: object
      description: The service that the workload provides
      additionalProperties: false
      properties:
        ports:
          $ref: '#/components/schemas/ServicePortMap'
    Container:
      type: object
      description: The specification of a Container within the Workload
      required:
      - image
      additionalProperties: false
      properties:
        image:
          type: string
          description: The container image name and tag
          minLength: 1
          examples:
          - nginx:1.25-alpine
          - ghcr.io/myorg/app:2.5.0
        command:
          type: array
          description: If specified, overrides the entrypoint defined in the container image
          items:
            type: string
        args:
          type: array
          description: If specified, overrides the arguments passed to the container entrypoint
          items:
            type: string
        variables:
          $ref: '#/components/schemas/EnvironmentVariables'
        files:
          $ref: '#/components/schemas/ContainerFileMap'
        volumes:
          $ref: '#/components/schemas/ContainerVolumeMap'
        resources:
          $ref: '#/components/schemas/ContainerResources'
        livenessProbe:
          $ref: '#/components/schemas/ContainerProbe'
        readinessProbe:
          $ref: '#/components/schemas/ContainerProbe'
    HttpProbe:
      type: object
      description: An HTTP probe details
      additionalProperties: false
      required:
      - port
      - path
      properties:
        host:
          type: string
          description: Host name to connect to. Defaults to the workload IP. This is equivalent to a Host HTTP header.
          minLength: 1
        scheme:
          type: string
          description: Scheme to use for connecting to the host (HTTP or HTTPS). Defaults to HTTP.
          enum:
          - HTTP
          - HTTPS
          default: HTTP
        path:
          type: string
          description: The path to access on the HTTP server
          examples:
          - /health
          - /ready
          - /health/live
        port:
          type: integer
          description: The port to access on the workload
          minimum: 1
          maximum: 65535
        httpHeaders:
          type: array
          description: Additional HTTP headers to send with the request
          items:
            $ref: '#/components/schemas/HttpHeader'
    ResourcesLimits:
      type: object
      description: The compute and memory resource limits
      additionalProperties: false
      properties:
        memory:
          type: string
          description: The memory limit in bytes with optional unit specifier. For example 125M or 1Gi.
          pattern: ^[1-9]\d*(K|M|G|T|Ki|Mi|Gi|Ti)?$
          examples:
          - 256M
          - 1Gi
          - 512Mi
        cpu:
          type: string
          description: The CPU limit as whole or fractional CPUs. 'm' indicates milli-CPUs. For example 2 or 125m.
          pattern: ^\d*(?:m|\.\d+)?$
          examples:
          - '1'
          - 250m
          - '0.5'
    ServicePort:
      type: object
      description: The network port description
      required:
      - port
      additionalProperties: false
      properties:
        port:
          type: integer
          description: The public service port
          minimum: 1
          maximum: 65535
          examples:
          - 80
          - 443
          - 8080
        protocol:
          type: string
          description: The transport level protocol. Defaults to TCP.
          enum:
          - TCP
          - UDP
          default: TCP
        targetPort:
          type: integer
          description: The internal service port. This will default to 'port' if not provided.
          minimum: 1
          maximum: 65535
    ContainerFile:
      type: object
      description: The details of a file to mount in the container. One of 'source', 'content', or 'binaryContent' must be provided.
      additionalProperties: false
      oneOf:
      - required:
        - content
      - required:
        - binaryContent
      - required:
        - source
      properties:
        mode:
          type: string
          description: The optional file access mode in octal encoding
          pattern: ^0?[0-7]{3}$
          examples:
          - '0644'
          - '0600'
          - '0444'
        source:
          type: string
          description: The relative or absolute path to the content file
          minLength: 1
        content:
          type: string
          description: The inline content for the file. Only supports valid utf-8.
        binaryContent:
          type: string
          description: Inline standard-base64 encoded content for the file. Does not support placeholder expansion.
          contentEncoding: base64
        noExpand:
          type: boolean
          description: If set to true, the placeholders expansion will not occur in the contents of the file.
    WorkloadList:
      type: object
      description: List of workloads response
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/ScoreWorkload'
        total:
          type: integer
          description: Total number of workloads
        limit:
          type: integer
          description: Number of items per page
        offset:
          type: integer
          description: Current offset
    Resource:
      type: object
      description: The set of Resources associated with this Workload
      additionalProperties: false
      required:
      - type
      properties:
        type:
          type: string
          description: The Resource type. This should be a type supported by the Score implementations being used.
          minLength: 2
          maxLength: 63
          pattern: ^[A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9]$
          examples:
          - postgres
          - redis
          - s3
          - volume
          - secret
          - service
        class:
          type: string
          description: An optional specialisation of the Resource type
          minLength: 2
          maxLength: 63
          pattern: ^[A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9]$
          examples:
          - managed
          - cluster
          - standard
          - ssd
        id:
          type: string
          description: An optional Resource identifier. When two resources share the same type, class, and id, they are considered the same resource when used across related Workloads.
          minLength: 2
          maxLength: 63
          pattern: ^[a-z0-9]+(?:-+[a-z0-9]+)*(?:\.[a-z0-9]+(?:-+[a-z0-9]+)*)*$
          examples:
          - ecommerce.products
          - shared.feature-flags
        metadata:
          $ref: '#/components/schemas/ResourceMetadata'
        params:
          type: object
          description: Optional parameters used to provision the Resource in the environment
          additionalProperties: true
    Annotations:
      type: object
      description: Annotations that apply to the Workload or Resource. Keys can contain A-Z, a-z, 0-9, and '-' and may contain an optional /-separated RFC1123 Host Name prefix.
      additionalProperties:
        type: string
      propertyNames:
        minLength: 2
        maxLength: 316
        pattern: ^(([a-z0-9][a-z0-9-]{0,61}[a-z0-9])(\.[a-z0-9][a-z0-9-]{0,61}[a-z0-9])*/)?[A-Za-z0-9][A-Za-z0-9._-]{0,61}[A-Za-z0-9]$
    EnvironmentVariables:
      type: object
      description: The environment variables for the container
      propertyNames:
        minLength: 1
        pattern: ^[^=]+$
      additionalProperties:
        type: string
    ScoreWorkload:
      type: object
      description: Score workload specification
      required:
      - apiVersion
      - metadata
      - containers
      additionalProperties: false
      properties:
        apiVersion:
          type: string
          description: The declared Score Specification version
          pattern: ^score\.dev/v1b1$
          examples:
          - score.dev/v1b1
        metadata:
          $ref: '#/components/schemas/WorkloadMetadata'
        service:
          $ref: '#/components/schemas/Service'
        containers:
          $ref: '#/components/schemas/ContainerMap'
        resources:
          $ref: '#/components/schemas/ResourceMap'
    WorkloadMetadata:
      type: object
      description: The metadata description of the Workload
      required:
      - name
      additionalProperties: true
      properties:
        name:
          type: string
          description: A string that can describe the Workload. Must be a valid RFC1123 Label Name of up to 63 characters.
          minLength: 2
          maxLength: 63
          pattern: ^[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$
          examples:
          - ecommerce-frontend
          - data-pipeline-worker
          - ml-inference-service
        annotations:
          $ref: '#/components/schemas/Annotations'
    ContainerVolume:
      type: object
      description: Volume mount specification
      additionalProperties: false
      required:
      - source
      properties:
        source:
          type: string
          description: The external volume reference
        path:
          type: string
          description: An optional sub path in the volume
        readOnly:
          type: boolean
          description: Indicates if the volume should be mounted in a read-only mode
    HttpHeader:
      type: object
      description: HTTP header for probe requests
      additionalProperties: false
      required:
      - name
      - value
      properties:
        name:
          type: string
          description: The HTTP header name
          pattern: ^[A-Za-z0-9_-]+$
        value:
          type: string
          description: The HTTP header value
          minLength: 1
    ResourceMetadata:
      type: object
      description: The metadata for the Resource
      additionalProperties: true
      properties:
        annotations:
          $ref: '#/components/schemas/Annotations'
    ContainerFileMap:
      type: object
      description: The extra files to mount into the container as a map of target paths to file details
      additionalProperties:
        $ref: '#/components/schemas/ContainerFile'
    ResourceMap:
      type: object
      description: The Resource dependencies needed by the Workload. Resource names must be valid RFC1123 Label Names.
      propertyNames:
        minLength: 2
        maxLength: 63
        pattern: ^[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$
      additionalProperties:
        $ref: '#/components/schemas/Resource'
    ErrorResponse:
      type: object
      description: Standard error response
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              description: Error code
            message:
              type: string
              description: Human-readable error message
            details:
              type: object
              description: Additional error details
              additionalProperties: true
    ContainerMap:
      type: object
      description: The set of named containers in the Workload. Container names must be valid RFC1123 Label Names.
      minProperties: 1
      propertyNames:
        minLength: 2
        maxLength: 63
        pattern: ^[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$
      additionalProperties:
        $ref: '#/components/schemas/Container'
    ContainerResources:
      type: object
      description: The compute resources for the container
      additionalProperties: false
      properties:
        limits:
          $ref: '#/components/schemas/ResourcesLimits'
        requests:
          $ref: '#/components/schemas/ResourcesLimits'
    ExecProbe:
      type: object
      description: An executable health probe
      additionalProperties: false
      required:
      - command
      properties:
        command:
          type: array
          description: The command and arguments to execute within the container
          items:
            type: string
    ContainerVolumeMap:
      type: object
      description: The volumes to mount as a map of target paths to volume details
      additionalProperties:
        $ref: '#/components/schemas/ContainerVolume'
    ServicePortMap:
      type: object
      description: The set of named network ports published by the service. Port names must be valid RFC1123 Label Names.
      propertyNames:
        minLength: 2
        maxLength: 63
        pattern: ^[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$
      additionalProperties:
        $ref: '#/components/schemas/ServicePort'
    ContainerProbe:
      type: object
      description: The probe may be defined as either http, command execution, or both. The execProbe should be preferred if the Score implementation supports both types.
      additionalProperties: false
      properties:
        httpGet:
          $ref: '#/components/schemas/HttpProbe'
        exec:
          $ref: '#/components/schemas/ExecProbe'
  parameters:
    NameFilterParam:
      name: name
      in: query
      description: Filter workloads by name (partial match)
      schema:
        type: string
    LimitParam:
      name: limit
      in: query
      description: Maximum number of items to return
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 10
    OffsetParam:
      name: offset
      in: query
      description: Number of items to skip
      schema:
        type: integer
        minimum: 0
        default: 0
    WorkloadNameParam:
      name: workloadName
      in: path
      required: true
      description: The name of the workload
      schema:
        type: string
        minLength: 2
        maxLength: 63
        pattern: ^[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$
      examples:
        ecommerce:
          value: ecommerce-frontend
        dataPipeline:
          value: data-pipeline-worker
        mlService:
          value: ml-inference-service
  responses:
    InternalError:
      description: Internal server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            internalError:
              $ref: '#/components/examples/InternalErrorExample'
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            notFound:
              $ref: '#/components/examples/NotFoundErrorExample'
    BadRequest:
      description: Bad request - invalid input
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            badRequest:
              $ref: '#/components/examples/BadRequestErrorExample'
    Conflict:
      description: Resource already exists
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            conflict:
              $ref: '#/components/examples/ConflictErrorExample'
  examples:
    DataPipelineWorkerExample:
      summary: Data Pipeline Worker Workload
      description: A data processing worker with Kafka integration and metrics exporter
      value:
        apiVersion: score.dev/v1b1
        metadata:
          name: data-pipeline-worker
          annotations:
            app.kubernetes.io/component: worker
            app.kubernetes.io/part-of: data-platform
            processing.company.io/queue: high-priority
            monitoring.company.io/alerts: critical
        service:
          ports:
            metrics:
              port: 9090
              targetPort: 9090
              protocol: TCP
            health:
              port: 8081
              targetPort: 8081
              protocol: TCP
        containers:
          worker:
            image: 123456789012.dkr.ecr.us-west-2.amazonaws.com/data-worker:3.1.0
            command:
            - /app/worker
            args:
            - --config=/etc/worker/config.yaml
            - --workers=4
            - --batch-size=1000
            - --log-format=json
            variables:
              WORKER_ID: ${metadata.name}
              KAFKA_BROKERS: ${resources.kafka-cluster.brokers}
              KAFKA_TOPIC_INPUT: raw-events
              KAFKA_TOPIC_OUTPUT: processed-events
              KAFKA_CONSUMER_GROUP: data-pipeline-workers
              SCHEMA_REGISTRY_URL: ${resources.schema-registry.url}
              MONGODB_URI: ${resources.timeseries-db.uri}
              MONGODB_DATABASE: analytics
              S3_BUCKET: ${resources.data-lake.bucket}
              S3_REGION: ${resources.data-lake.region}
              AWS_ACCESS_KEY_ID: ${resources.aws-credentials.access_key_id}
              AWS_SECRET_ACCESS_KEY: ${resources.aws-credentials.secret_access_key}
              CHECKPOINT_INTERVAL_MS: '60000'
              MAX_POLL_RECORDS: '500'
              PROCESSING_TIMEOUT_MS: '30000'
              DEAD_LETTER_TOPIC: failed-events
              METRICS_PORT: '9090'
              HEALTH_PORT: '8081'
              OTEL_EXPORTER_OTLP_ENDPOINT: ${resources.observability.otlp_endpoint}
              OTEL_SERVICE_NAME: data-pipeline-worker
            files:
              /etc/worker/config.yaml:
                content: "worker:\n  name: ${metadata.name}\n  parallelism: 4\n  batchSize: 1000\n  flushInterval: 5s\n\nkafka:\n  consumer:\n    autoOffsetReset: earliest\n    enableAutoCommit: false\n    maxPollIntervalMs: 300000\n  producer:\n    acks: all\n    retries: 3\n    compressionType: snappy\n\nprocessing:\n  transforms:\n    - name: parse-json\n      type: json-parser\n    - name: enrich-geo\n      type: geo-lookup\n      config:\n        database: /data/geoip/GeoLite2-City.mmdb\n    - name: anonymize-pii\n      type: pii-filter\n      config:\n        fields:\n          - email\n          - phone\n          - ip_address\n    - name: aggregate-metrics\n      type: aggregator\n      config:\n        window: 1m\n        groupBy:\n          - country\n          - device_type\n\noutput:\n  formats:\n    - parquet\n    - json\n  partitioning:\n    type: time\n    granularity: hourly\n"
                mode: '0644'
              /etc/worker/schemas/event.avsc:
                source: ./schemas/event.avsc
                mode: '0644'
                noExpand: true
              /etc/worker/schemas/output.avsc:
                source: ./schemas/output.avsc
                mode: '0644'
                noExpand: true
            volumes:
              /data/geoip:
                source: ${resources.geoip-database.source}
                readOnly: true
              /data/checkpoints:
                source: ${resources.checkpoint-volume.source}
                readOnly: false
              /data/tmp:
                source: ${resources.scratch-volume.source}
                path: worker-tmp
                readOnly: false
            resources:
              requests:
                memory: 2Gi
                cpu: '1'
              limits:
                memory: 8Gi
                cpu: '4'
            readinessProbe:
              httpGet:
                path: /ready
                port: 8081
                scheme: HTTP
            livenessProbe:
              exec:
                command:
                - /app/healthcheck
                - --check=kafka-connection
                - --check=mongodb-connection
                - --timeout=10s
          metrics-exporter:
            image: prom/statsd-exporter:v0.24.0
            args:
            - --statsd.listen-udp=:9125
            - --web.listen-address=:9102
            - --statsd.mapping-config=/etc/statsd/mapping.yaml
            files:
              /etc/statsd/mapping.yaml:
                content: "mappings:\n  - match: \"worker.*.processing.*\"\n    name: \"worker_processing\"\n    labels:\n      worker_id: \"$1\"\n      metric: \"$2\"\n  - match: \"worker.*.kafka.*\"\n    name: \"worker_kafka\"\n    labels:\n      worker_id: \"$1\"\n      operation: \"$2\"\n  - match: \"worker.*.errors.*\"\n    name: \"worker_errors_total\"\n    labels:\n      worker_id: \"$1\"\n      error_type: \"$2\"\n"
                mode: '0644'
            resources:
              requests:
                memory: 32M
                cpu: 25m
              limits:
                memory: 64M
                cpu: 100m
            readinessProbe:
              httpGet:
                path: /metrics
                port: 9102
                scheme: HTTP
        resources:
          kafka-cluster:
            type: kafka
            class: managed
            id: data-platform.events
            metadata:
              annotations:
                kafka.company.io/retention: 7d
                kafka.company.io/partitions: '24'
            params:
              version: '3.5'
              securityProtocol: SASL_SSL
              saslMechanism: SCRAM-SHA-512
          schema-registry:
            type: service
            id: data-platform.schema-registry
            params:
              compatibilityLevel: BACKWARD
          timeseries-db:
            type: mongodb
            class: timeseries
            id: analytics.metrics
            params:
              version: '7.0'
              sharded: true
              replicaSet: analytics-rs
              writeConcern: majority
          data-lake:
            type: s3
            class: data-lake
            id: analytics.raw-data
            metadata:
              annotations:
                storage.company.io/tier: intelligent-tiering
            params:
              versioning: false
              lifecycle:
              - prefix: raw/
                transitionDays: 30
                storageClass: GLACIER
              - prefix: processed/
                expirationDays: 365
          aws-credentials:
            type: secret
            class: aws-iam
            id: data-platform.s3-access
            params:
              policy: s3-read-write
          geoip-database:
            type: volume
            class: configmap
            id: shared.geoip
            params:
              updateSchedule: weekly
          checkpoint-volume:
            type: volume
            class: ssd
            params:
              size: 100Gi
              accessMode: ReadWriteOnce
          scratch-volume:
            type: volume
            class: ephemeral
            params:
              size: 50Gi
          observability:
            type: service
            id: shared.observability
            params:
              traces: true
              metrics: true
              logs: true
    EcommerceContainersExample:
      summary: E-commerce frontend containers
      description: Container definitions for the e-commerce frontend workload
      value:
        frontend:
          image: ghcr.io/myorg/ecommerce-frontend:2.5.0
          command:
          - /usr/bin/node
          args:
          - server.js
          - --config=/etc/app/config.json
          resources:
            requests:
              memory: 256M
              cpu: 250m
            limits:
              memory: 1Gi
              cpu: '1'
        nginx-sidecar:
          image: nginx:1.25-alpine
          resources:
            requests:
              memory: 64M
              cpu: 50m
            limits:
              memory: 128M
              cpu: 200m
    NotFoundErrorExample:
      summary: Not found error
      description: Example error response when workload is not found
      value:
        error:
          code: NOT_FOUND
          message: Workload 'my-workload' not found
    EcommerceResourcesExample:
      summary: E-commerce frontend resources
      description: Resource definitions for the e-commerce frontend workload
      value:
        postgres-db:
          type: postgres
          class: managed
          id: ecommerce.products
        cache:
          type: redis
          class: cluster
          id: ecommerce.session-cache
        session-secrets:
          type: secret
          id: ecommerce.session
        object-storage:
          type: s3
          class: standard
          id: ecommerce.assets
        uploads-volume:
          type: volume
          class: ssd
        static-assets:
          type: volume
          class: standard
          id: ecommerce.static
        tls-certs:
          type: secret
          class: tls
          id: ecommerce.tls
        feature-flags:
          type: service
          id: shared.feature-flags
    BadRequestErrorExample:
      summary: Bad request error
      description: Example error response for invalid requests
      value:
        error:
          code: BAD_REQUEST
          message: Invalid workload specification
          details:
            validationErrors:
            - path: /apiVersion
              message: apiVersion must be 'score.dev/v1b1'
    InternalErrorExample:
      summary: Internal server error
      description: Example error response for server errors
      value:


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