Relativity Workspace API

The Workspace API from Relativity — 2 operation(s) for workspace.

OpenAPI Specification

relativity-workspace-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Analytics.Conceptual.Service.Interfaces.Public.V1 AnnotationService Workspace API
  description: Analytics.Conceptual.Service.Interfaces.Public
  version: V1
servers:
- url: /Relativity.REST/api
  description: The URL prefix for all Kepler services
tags:
- name: Workspace
paths:
  /v1/workspace/{workspaceId}:
    get:
      tags:
      - Workspace
      summary: Read workspace
      description: Returns the workspace with its core properties (client, matter, resource pool, status, SQL server, SQL full-text language, audit fields, etc.). Returns 567 Workspace Temporarily Unavailable when the workspace is still upgrading — clients can safely retry after a short delay. Equivalent to `/v1/workspace/{workspaceId}/false/false` — use the parameterized form to additionally include the `Meta` field or the available `Actions` list.
      parameters:
      - name: workspaceId
        in: path
        required: true
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/WorkspaceReadResponseV1'
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceReadResponseV1'
            text/json:
              schema:
                $ref: '#/components/schemas/WorkspaceReadResponseV1'
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: Forbidden
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/KeplerProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/KeplerProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/KeplerProblemDetails'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/KeplerProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/KeplerProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/KeplerProblemDetails'
        '567':
          description: Workspace Temporarily Unavailable
        '500':
          description: Internal Server Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/KeplerProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/KeplerProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/KeplerProblemDetails'
    delete:
      tags:
      - Workspace
      summary: Delete workspace
      description: Soft-deletes the workspace by moving it to the Recycle Bin. The workspace is hidden from normal views but can be recovered via `POST /v1/recycle-bin/workspace/{workspaceId}/recover` or permanently removed via `DELETE /v1/recycle-bin/workspace/{workspaceId}`.
      parameters:
      - name: workspaceId
        in: path
        required: true
        schema:
          type: integer
          format: int32
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/KeplerProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/KeplerProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/KeplerProblemDetails'
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/KeplerProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/KeplerProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/KeplerProblemDetails'
        '500':
          description: Internal Server Error
    put:
      tags:
      - Workspace
      summary: Update workspace
      description: Updates the workspace's properties. Include `lastModifiedOn` (timestamp of the last known version) to enforce optimistic concurrency — if the workspace has been modified since, the request fails with 409 Conflict and no changes are applied. On success, returns the updated workspace.
      parameters:
      - name: workspaceId
        in: path
        required: true
        schema:
          type: integer
          format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkspaceRequestEnvelope'
          text/json:
            schema:
              $ref: '#/components/schemas/WorkspaceRequestEnvelope'
          application/*+json:
            schema:
              $ref: '#/components/schemas/WorkspaceRequestEnvelope'
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/WorkspaceReadResponseV1'
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceReadResponseV1'
            text/json:
              schema:
                $ref: '#/components/schemas/WorkspaceReadResponseV1'
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/KeplerProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/KeplerProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/KeplerProblemDetails'
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: Forbidden
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/KeplerProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/KeplerProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/KeplerProblemDetails'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/KeplerProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/KeplerProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/KeplerProblemDetails'
        '409':
          description: Conflict
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/KeplerProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/KeplerProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/KeplerProblemDetails'
        '500':
          description: Internal Server Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/KeplerProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/KeplerProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/KeplerProblemDetails'
  /v1/workspace/{workspaceId}/{includeMetadata}/{includeActions}:
    get:
      tags:
      - Workspace
      summary: Read workspace with optional metadata and actions
      description: Returns the workspace with its core properties. `includeMetadata` and `includeActions` are required path segments (not query parameters), e.g. `/v1/workspace/{workspaceId}/true/false`. When `includeMetadata` is `true`, the response additionally contains the `Meta` field (list of unsupported and read-only properties on the workspace). When `includeActions` is `true`, the response contains the `Actions` list (REST operations the caller is permitted to perform on the workspace). Returns 567 Workspace Temporarily Unavailable when the workspace is still upgrading — clients can safely retry after a short delay.
      parameters:
      - name: workspaceId
        in: path
        required: true
        schema:
          type: integer
          format: int32
      - name: includeMetadata
        in: path
        required: true
        schema:
          type: boolean
      - name: includeActions
        in: path
        required: true
        schema:
          type: boolean
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/WorkspaceReadResponseV1'
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceReadResponseV1'
            text/json:
              schema:
                $ref: '#/components/schemas/WorkspaceReadResponseV1'
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: Forbidden
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/KeplerProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/KeplerProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/KeplerProblemDetails'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/KeplerProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/KeplerProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/KeplerProblemDetails'
        '567':
          description: Workspace Temporarily Unavailable
        '500':
          description: Internal Server Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/KeplerProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/KeplerProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/KeplerProblemDetails'
components:
  schemas:
    KeplerValidationError:
      type: object
      properties:
        PropertyName:
          type: string
          nullable: true
        ErrorMessage:
          type: string
          nullable: true
      additionalProperties: false
    WorkspaceUpdateRequest:
      type: object
      properties:
        DownloadHandlerUrl:
          type: string
          nullable: true
        EnableDataGrid:
          type: boolean
          nullable: true
        Matter:
          $ref: '#/components/schemas/ObjectIdentifierSecurable'
        Name:
          type: string
          nullable: true
        ProductionRestrictions:
          $ref: '#/components/schemas/ObjectIdentifierSecurable'
        ResourcePool:
          $ref: '#/components/schemas/ObjectIdentifierSecurable'
        DefaultFileRepository:
          $ref: '#/components/schemas/ObjectIdentifierSecurable'
        DataGridFileRepository:
          $ref: '#/components/schemas/ObjectIdentifierSecurable'
        DefaultCacheLocation:
          $ref: '#/components/schemas/ObjectIdentifierSecurable'
        SqlServer:
          $ref: '#/components/schemas/ObjectIdentifierSecurable'
        AzureCredentials:
          $ref: '#/components/schemas/ObjectIdentifierSecurable'
        AzureFileSystemCredentials:
          $ref: '#/components/schemas/ObjectIdentifierSecurable'
        SqlFullTextLanguage:
          type: integer
          format: int32
          nullable: true
        Status:
          $ref: '#/components/schemas/ObjectIdentifier'
        Template:
          $ref: '#/components/schemas/ObjectIdentifierSecurable'
        WorkspaceAdminGroup:
          $ref: '#/components/schemas/ObjectIdentifierSecurable'
        UseCase:
          type: string
          nullable: true
        Keywords:
          type: string
          nullable: true
        Notes:
          type: string
          nullable: true
        UserId:
          type: integer
          format: int32
      additionalProperties: false
    DisplayableObjectIdentifierSecurable:
      type: object
      properties:
        Value:
          $ref: '#/components/schemas/DisplayableObjectIdentifier'
        Secured:
          type: boolean
      additionalProperties: false
    WorkspaceReadResponseV1:
      type: object
      properties:
        ArtifactID:
          type: integer
          format: int32
          nullable: true
        Guids:
          type: array
          items:
            type: string
            format: uuid
          nullable: true
        Name:
          type: string
          nullable: true
        Client:
          $ref: '#/components/schemas/DisplayableObjectIdentifierSecurable'
        ClientNumber:
          $ref: '#/components/schemas/StringSecurable'
        DownloadHandlerUrl:
          type: string
          nullable: true
        EnableDataGrid:
          type: boolean
        Matter:
          $ref: '#/components/schemas/DisplayableObjectIdentifierSecurable'
        MatterNumber:
          $ref: '#/components/schemas/StringSecurable'
        ProductionRestrictions:
          $ref: '#/components/schemas/DisplayableObjectIdentifierSecurable'
        ResourcePool:
          $ref: '#/components/schemas/DisplayableObjectIdentifierSecurable'
        DefaultFileRepository:
          $ref: '#/components/schemas/DisplayableObjectIdentifierSecurable'
        DataGridFileRepository:
          $ref: '#/components/schemas/DisplayableObjectIdentifierSecurable'
        DefaultCacheLocation:
          $ref: '#/components/schemas/DisplayableObjectIdentifierSecurable'
        SqlServer:
          $ref: '#/components/schemas/DisplayableObjectIdentifierSecurable'
        AzureCredentials:
          $ref: '#/components/schemas/DisplayableObjectIdentifierSecurable'
        AzureFileSystemCredentials:
          $ref: '#/components/schemas/DisplayableObjectIdentifierSecurable'
        SqlFullTextLanguage:
          $ref: '#/components/schemas/NameIDPair'
        Status:
          $ref: '#/components/schemas/DisplayableObjectIdentifier'
        Keywords:
          type: string
          nullable: true
        Notes:
          type: string
          nullable: true
        CreatedOn:
          type: string
          format: date-time
        CreatedBy:
          $ref: '#/components/schemas/DisplayableObjectIdentifier'
        LastModifiedBy:
          $ref: '#/components/schemas/DisplayableObjectIdentifier'
        LastModifiedOn:
          type: string
          format: date-time
        Meta:
          $ref: '#/components/schemas/Meta'
        Actions:
          type: array
          items:
            $ref: '#/components/schemas/Action'
          nullable: true
        WorkspaceAdminGroup:
          $ref: '#/components/schemas/DisplayableObjectIdentifierSecurable'
        UseCase:
          type: string
          nullable: true
        JobID:
          type: string
          nullable: true
      additionalProperties: false
    StringSecurable:
      type: object
      properties:
        Value:
          type: string
          nullable: true
        Secured:
          type: boolean
      additionalProperties: false
    ObjectIdentifier:
      type: object
      properties:
        ArtifactID:
          type: integer
          format: int32
          nullable: true
        Guids:
          type: array
          items:
            type: string
            format: uuid
          nullable: true
      additionalProperties: false
    ProblemDetails:
      type: object
      properties:
        type:
          type: string
          nullable: true
        title:
          type: string
          nullable: true
        status:
          type: integer
          format: int32
          nullable: true
        detail:
          type: string
          nullable: true
        instance:
          type: string
          nullable: true
      additionalProperties: {}
    DisplayableObjectIdentifier:
      type: object
      properties:
        ArtifactID:
          type: integer
          format: int32
          nullable: true
        Guids:
          type: array
          items:
            type: string
            format: uuid
          nullable: true
        Name:
          type: string
          nullable: true
      additionalProperties: false
    NameIDPair:
      type: object
      properties:
        ID:
          type: integer
          format: int32
        Name:
          type: string
          nullable: true
      additionalProperties: false
    Meta:
      type: object
      properties:
        Unsupported:
          type: array
          items:
            type: string
          nullable: true
        ReadOnly:
          type: array
          items:
            type: string
          nullable: true
      additionalProperties: false
    ObjectIdentifierSecurable:
      type: object
      properties:
        Value:
          $ref: '#/components/schemas/ObjectIdentifier'
        Secured:
          type: boolean
      additionalProperties: false
    Action:
      type: object
      properties:
        Name:
          type: string
          nullable: true
        Verb:
          type: string
          nullable: true
        Href:
          type: string
          nullable: true
        IsAvailable:
          type: boolean
        Reason:
          type: array
          items:
            type: string
          nullable: true
      additionalProperties: false
    WorkspaceRequestEnvelope:
      required:
      - WorkspaceRequest
      type: object
      properties:
        WorkspaceRequest:
          $ref: '#/components/schemas/WorkspaceUpdateRequest'
        LastModifiedOn:
          type: string
          format: date-time
          nullable: true
      additionalProperties: false
    KeplerProblemDetails:
      type: object
      properties:
        ErrorType:
          type: string
          nullable: true
        Identifier:
          type: string
          nullable: true
        Message:
          type: string
          nullable: true
        Errors:
          type: array
          items:
            $ref: '#/components/schemas/KeplerValidationError'
          nullable: true
      additionalProperties: false