openEO Workspaces API

Management of User Workspaces

Operations 6

GET /workspace_providers Supported workspace providers #
GET /workspaces List all workspaces #
POST /workspaces Create Workspace #
GET /workspaces/{workspace_id} Full metadata for a workspace #
DELETE /workspaces/{workspace_id} Delete Workspace #
PATCH /workspaces/{workspace_id} Update workspace details #

Specifications

Schemas & Data

📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/openeo/refs/heads/main/json-schema/openeo-collection-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/openeo/refs/heads/main/json-schema/openeo-batch-job-result-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/openeo/refs/heads/main/json-schema/openeo-batch-job-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/openeo/refs/heads/main/json-schema/openeo-json-schema-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/openeo/refs/heads/main/json-schema/openeo-process-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/openeo/refs/heads/main/json-schema/openeo-resource-parameter-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/openeo/refs/heads/main/json-schema/openeo-workspace-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/openeo/refs/heads/main/json-schema/openeo-create-workspace-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/openeo/refs/heads/main/json-schema/openeo-register-workspace-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/openeo/refs/heads/main/json-schema/openeo-workspace-description-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/openeo/refs/heads/main/json-schema/openeo-workspace-id-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/openeo/refs/heads/main/json-schema/openeo-workspace-title-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/openeo/refs/heads/main/json-schema/openeo-order-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/openeo/refs/heads/main/json-schema/openeo-order-parameters-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/openeo/refs/heads/main/json-schema/openeo-order-id-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/openeo/refs/heads/main/json-schema/openeo-processing-create-parameters-schema.json

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/openeo:openeo-workspaces-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

openeo-workspaces-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Openeo Workspaces API
  version: 0.1.0
  contact:
    name: openEO Consortium
    url: https://openeo.org
    email: openeo.psc@uni-muenster.de
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  description: 'Operations tagged Workspaces across 2 of this provider''s published API definitions: openeo-workspaces-openapi.yaml, openeo-workspaces-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://openeo.example/api/{version}
  description: The URL of the API MAY freely be chosen by the back-end providers. The path, including API versioning, is a *recommendation* only. Nevertheless, all servers MUST support HTTPS as the authentication methods are not secure with HTTP only!
  variables:
    version:
      default: v1
      description: API versioning is RECOMMENDED. As the openEO API is following [SemVer](https://semver.org/) only the MAJOR part of the stable version numbers (i.e. versions >= 1.0.0) SHOULD be used for API versioning in the URL. The reason is that backward-incompatible changes are usually introduced by major changes. Therefore, the version number in the URL MUST not be used by the clients to detect the version number of the API. Use the version number returned from `GET /` instead.
tags:
- name: Workspaces
  description: Management of User Workspaces
paths:
  /workspace_providers:
    get:
      summary: Supported workspace providers
      operationId: list-workspace-providers
      description: 'Lists supported workspace providers such as Amazon S3, Google Cloud Storage or Azure Blob Storage.

        The response is an object of all available workspace providers with their supported parameters,

        e.g. credentials for registering an existing workspace.


        The parameters for the workspace provider MUST be defined upon creation

        of a workspace and the workspace will be set up accordingly.


        Workspace provider names MUST be accepted in a *case insensitive* manner throughout the API.'
      tags:
      - Workspaces
      security:
      - {}
      - Bearer: []
      responses:
        '200':
          description: An object with a map containing all workspace provider names as keys and an object that defines supported parameters, e.g. credentials.
          content:
            application/json:
              schema:
                title: Workspace Providers
                type: object
                properties:
                  providers:
                    type: object
                    description: Map of supported workspace providers
                    additionalProperties:
                      x-additionalPropertiesName: Provider Name
                      title: Provider
                      type: object
                      required:
                      - parameters
                      properties:
                        title:
                          $ref: ../../openapi.yaml#/components/schemas/object_title
                        description:
                          $ref: ../../openapi.yaml#/components/schemas/description
                        deprecated:
                          $ref: ../../openapi.yaml#/components/schemas/deprecated
                        experimental:
                          $ref: ../../openapi.yaml#/components/schemas/experimental
                        intents:
                          type: array
                          minItems: 1
                          items:
                            type: string
                            enum:
                            - create
                            - register
                        parameters:
                          title: Provider specific parameters
                          description: Map of supported parameters made available to the creator of the workspace.
                          type: object
                          additionalProperties:
                            $ref: ../../openapi.yaml#/components/schemas/resource_parameter
                        links:
                          description: 'Links related to this workspace provider, e.g. more information about the parameters.


                            For relation types see the lists of

                            [common relation types in openEO](#section/API-Principles/Web-Linking).'
                          type: array
                          items:
                            $ref: ../../openapi.yaml#/components/schemas/link
              example:
                providers:
                  S3:
                    title: Amazon S3
                    description: Amazon S3 is a cloud storage service provided by Amazon Web Services. It provides storage containers which are called buckets.
                    intents:
                    - create
                    - register
                    parameters:
                      aws_access_key_id:
                        description: AWS access key
                        type: string
                      aws_secret_access_key:
                        description: AWS secret key associated with the access key.
                        type: string
                      bucket_name:
                        description: Bucket name
                        type: string
                    links: []
        4XX:
          $ref: ../../openapi.yaml#/components/responses/client_error_auth
        5XX:
          $ref: ../../openapi.yaml#/components/responses/server_error
    servers:
    - url: https://openeo.example/api/{version}
      description: The URL of the API MAY freely be chosen by the back-end providers. The path, including API versioning, is a *recommendation* only. Nevertheless, all servers MUST support HTTPS as the authentication methods are not secure with HTTP only!
      variables:
        version:
          default: v1
          description: API versioning is RECOMMENDED. As the openEO API is following [SemVer](https://semver.org/) only the MAJOR part of the stable version numbers (i.e. versions >= 1.0.0) SHOULD be used for API versioning in the URL. The reason is that backward-incompatible changes are usually introduced by major changes. Therefore, the version number in the URL MUST not be used by the clients to detect the version number of the API. Use the version number returned from `GET /` instead.
  /workspaces:
    get:
      summary: List all workspaces
      operationId: list-workspaces
      description: 'Lists all workspaces that have been added by a user.


        It is **strongly RECOMMENDED** to keep the response size small by

        omitting all optional non-scalar values (i.e. arrays and objects) from objects in `workspaces`.

        To get the full metadata for a workspace clients MUST request `GET /workspaces/{workspace_id}`.'
      tags:
      - Workspaces
      security:
      - Bearer: []
      parameters:
      - $ref: ../../openapi.yaml#/components/parameters/pagination_limit
      responses:
        '200':
          description: Array of workspace descriptions
          content:
            application/json:
              schema:
                title: Workspaces
                type: object
                required:
                - workspaces
                - links
                properties:
                  workspaces:
                    type: array
                    items:
                      $ref: '#/components/schemas/workspace'
                  links:
                    $ref: ../../openapi.yaml#/components/schemas/links_pagination
        4XX:
          $ref: ../../openapi.yaml#/components/responses/client_error_auth
        5XX:
          $ref: ../../openapi.yaml#/components/responses/server_error
    post:
      summary: Create Workspace
      operationId: create-workspace
      description: 'Creates a new workspace.


        This request queues the creation of a workspace. It directly registers an id at the back-end, but the workspace itself may have a status of `provisioning` until the workspace is ready to use.'
      tags:
      - Workspaces
      security:
      - Bearer: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - intent
              properties:
                title:
                  $ref: '#/components/schemas/workspace_title'
                description:
                  $ref: '#/components/schemas/workspace_description'
                intent:
                  type: string
                quota:
                  $ref: ../../openapi.yaml#/components/schemas/max_storage_quota
              oneOf:
              - $ref: '#/components/schemas/create_workspace'
              - $ref: '#/components/schemas/register_workspace'
              discriminator:
                propertyName: intent
                mapping:
                  create: '#/components/schemas/create_workspace'
                  register: '#/components/schemas/register_workspace'
      responses:
        '201':
          description: The workspace creation has been queued successfully.
          headers:
            Location:
              required: true
              schema:
                description: 'Absolute URL to the workspace metadata.


                  The URL points to the endpoint

                  `GET /workspaces/{workspace_id}` with the `{workspace_id}` being the

                  id of the created workspace.'
                format: uri
                type: string
                example: https://openeo.example/api/v1/workspaces/my-workspace
            OpenEO-Identifier:
              required: true
              schema:
                $ref: '#/components/schemas/workspace_id'
        4XX:
          $ref: ../../openapi.yaml#/components/responses/client_error_auth
        5XX:
          $ref: ../../openapi.yaml#/components/responses/server_error
    servers:
    - url: https://openeo.example/api/{version}
      description: The URL of the API MAY freely be chosen by the back-end providers. The path, including API versioning, is a *recommendation* only. Nevertheless, all servers MUST support HTTPS as the authentication methods are not secure with HTTP only!
      variables:
        version:
          default: v1
          description: API versioning is RECOMMENDED. As the openEO API is following [SemVer](https://semver.org/) only the MAJOR part of the stable version numbers (i.e. versions >= 1.0.0) SHOULD be used for API versioning in the URL. The reason is that backward-incompatible changes are usually introduced by major changes. Therefore, the version number in the URL MUST not be used by the clients to detect the version number of the API. Use the version number returned from `GET /` instead.
  /workspaces/{workspace_id}:
    parameters:
    - $ref: '#/components/parameters/workspace_id'
    get:
      summary: Full metadata for a workspace
      operationId: describe-workspace
      description: Returns the full metadata for a workspace.
      tags:
      - Workspaces
      security:
      - Bearer: []
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/workspace'
        4XX:
          $ref: ../../openapi.yaml#/components/responses/client_error_auth
        5XX:
          $ref: ../../openapi.yaml#/components/responses/server_error
    delete:
      summary: Delete Workspace
      operationId: delete-workspace
      description: Removes the workspace from the back-end.
      tags:
      - Workspaces
      security:
      - Bearer: []
      responses:
        '204':
          description: The workspace has been successfully deleted.
        4XX:
          $ref: ../../openapi.yaml#/components/responses/client_error_auth
        5XX:
          $ref: ../../openapi.yaml#/components/responses/server_error
    patch:
      summary: Update workspace details
      operationId: update-workspace
      description: Updates the workspace details.
      tags:
      - Workspaces
      security:
      - Bearer: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                title:
                  $ref: '#/components/schemas/workspace_title'
                description:
                  $ref: '#/components/schemas/workspace_description'
        required: true
      responses:
        '204':
          description: Changes to the workspace were applied successfully.
        4XX:
          $ref: ../../openapi.yaml#/components/responses/client_error_auth
        5XX:
          $ref: ../../openapi.yaml#/components/responses/server_error
    servers:
    - url: https://openeo.example/api/{version}
      description: The URL of the API MAY freely be chosen by the back-end providers. The path, including API versioning, is a *recommendation* only. Nevertheless, all servers MUST support HTTPS as the authentication methods are not secure with HTTP only!
      variables:
        version:
          default: v1
          description: API versioning is RECOMMENDED. As the openEO API is following [SemVer](https://semver.org/) only the MAJOR part of the stable version numbers (i.e. versions >= 1.0.0) SHOULD be used for API versioning in the URL. The reason is that backward-incompatible changes are usually introduced by major changes. Therefore, the version number in the URL MUST not be used by the clients to detect the version number of the API. Use the version number returned from `GET /` instead.
components:
  schemas:
    workspace_url:
      type: string
      format: uri
      description: The URL of the actual workspace, e.g. a bucket URL.
      example: https://my-bucket.s3.eu-west-3.amazonaws.com
    workspace_description:
      type: string
      format: commonmark
      description: 'A description that describes the workspace.


        [CommonMark 0.29](http://commonmark.org/) syntax MAY be used for rich

        text representation.'
    workspace_properties:
      type: object
      description: Any additional metadata of the workspace provided by the workspace provider. The structure is not specified by the API.
      additionalProperties:
        description: Any type
      example:
        region: eu-west-3
        storage_class: standard
    register_workspace:
      required:
      - type
      - url
      - parameters
      properties:
        intent:
          enum:
          - register
          example: register
        type:
          type: string
          description: The workspace provider name as defined in `GET /workspace_providers`.
        url:
          $ref: '#/components/schemas/workspace_url'
        parameters:
          $ref: '#/components/schemas/workspace_parameters'
    workspace_id:
      type: string
      pattern: ^[\w\-\.~]+$
      example: my-workspace
    workspace:
      title: Workspace
      required:
      - id
      - status
      - type
      type: object
      properties:
        id:
          $ref: '#/components/schemas/workspace_id'
        title:
          $ref: '#/components/schemas/workspace_title'
        description:
          $ref: '#/components/schemas/workspace_description'
        type:
          type: string
          description: The workspace provider name as defined in `GET /workspace_providers`.
          example: S3
        status:
          type: string
          description: The status of the workspace.
          example: ready
        details:
          type: string
          description: A status message (e.g. error message) or any other free-text information about the workspace.
        quota:
          $ref: ../../openapi.yaml#/components/schemas/max_storage_quota
      oneOf:
      - title: Unavailable
        description: The workspace is not available, e.g. because it's still provisioning it or the back-end can't connect to it / lost the connection / has been deleted externally, ...
        properties:
          status:
            enum:
            - provisioning
            - unavailable
            example: provisioning
      - title: Ready
        properties:
          status:
            enum:
            - ready
            example: ready
          url:
            $ref: '#/components/schemas/workspace_url'
          properties:
            $ref: '#/components/schemas/workspace_properties'
          free:
            $ref: ../../openapi.yaml#/components/schemas/storage_quota_free
    create_workspace:
      title: Create workspace
      properties:
        intent:
          enum:
          - create
          example: create
        type:
          type:
          - string
          - 'null'
          description: The workspace provider name as defined in `GET /workspace_providers`. If not provided or `null`, the back-end chooses a default provider.
          default: null
        parameters:
          $ref: '#/components/schemas/workspace_parameters'
    workspace_title:
      type: string
      description: A short title for the workspace.
    workspace_parameters:
      type: object
      description: Additional parameters to register the workspace as defined in `GET /workspace_providers`. The structure is not specified by the API.
      additionalProperties:
        description: Any type
      example:
        aws_access_key_id: REDACTED_AWS_ACCESS_KEY_ID
        aws_secret_access_key: TheKey1CorrespondingtoAccessKey.
        bucket_name: my-bucket123
  parameters:
    workspace_id:
      name: workspace_id
      in: path
      required: true
      description: The ID of the workspace.
      schema:
        $ref: '#/components/schemas/workspace_id'
  securitySchemes:
    Bearer:
      $ref: ../../openapi.yaml#/components/securitySchemes/Bearer
externalDocs:
  url: https://github.com/Open-EO/openeo-api/blob/draft/extensions/workspaces/README.md
x-refined-from:
- openeo-workspaces-openapi.yaml
- openeo-workspaces-openapi.yml