Skip to content

Feature: Public Job Sharing in TapisJobService #101

Description

@mosoriob

Feature Request: Public Job Sharing in TapisJobService

Summary

Implement public job sharing functionality in TapisJobService to leverage Tapis backend's sharePublic and share with a user capabilities.

Background

TapisJobService currently has basic job sharing through the shareJob() method, but doesn't utilize Tapis backend's full sharing capabilities:

  • sharePublic: Make job outputs publicly accessible
  • share with a user: Share job with specific users

Proposed Implementation

New TapisJobService Methods

class TapisJobService {
    // Make job publicly accessible
    async shareJobPublic(jobId: string): Promise<void>
    
    // Share job with specific user
    async shareJobWithUser(jobId: string, username: string): Promise<void>
    
    // Get sharing status
    async getJobSharingStatus(jobId: string): Promise<JobSharingStatus>
    
    // Revoke sharing
    async revokeJobSharing(jobId: string): Promise<void>
}

API Endpoints

POST /v1/tapis/jobs/{executionId}/share/public
POST /v1/tapis/jobs/{executionId}/share/user
GET  /v1/tapis/jobs/{executionId}/share/status
DELETE /v1/tapis/jobs/{executionId}/share

Implementation Tasks

Phase 1: Core Sharing

  • Add shareJobPublic() method to TapisJobService
  • Add shareJobWithUser() method to TapisJobService

Phase 2: API Integration

  • Create API endpoints for public sharing
  • Create API endpoints for user sharing
  • Add sharing status endpoint
  • Implement sharing revocation

Phase 3: UI Integration

  • Add sharing buttons to job results UI
  • Create sharing status indicators
  • Add user selection for targeted sharing
  • Implement sharing management interface

Acceptance Criteria

  • Jobs can be shared publicly via Tapis sharePublic
  • Jobs can be shared with specific users via Tapis share with a user
  • API endpoints work correctly

Files to Modify

  • src/classes/tapis/adapters/TapisJobService.ts
  • src/api/api-v1/paths/tapis/jobs/
  • src/classes/graphql/queries/

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions