Class: Melaya::TeamAPI

Inherits:
Object
  • Object
show all
Defined in:
lib/melaya/team.rb

Overview

Team API — manage project team membership, roles, and invitations.

Maps to:

/api/v1/private/projects/:project/members/*
/api/v1/private/team/*
/api/v1/private/projects/:project/pipelines/:pipeline/visibility

Examples:

members = melaya.team.list_members("my-project")
melaya.team.invite("my-project", username: "alice")
link = melaya.team.create_invite_link("my-project")

Instance Method Summary collapse

Constructor Details

#initialize(http) ⇒ TeamAPI

Returns a new instance of TeamAPI.



16
17
18
# File 'lib/melaya/team.rb', line 16

def initialize(http)
  @http = http
end

Instance Method Details

#accept_invite(token) ⇒ Object

POST /api/v1/private/team/invite/accept Accept a project invite using the token from an invite link.

Parameters:

  • token (String)


47
48
49
# File 'lib/melaya/team.rb', line 47

def accept_invite(token)
  @http.post("/api/v1/private/team/invite/accept", "token" => token)
end

POST /api/v1/private/projects/:project/invite-link Create a shareable invite link for a project. Returns the URL to send to new team members.

Parameters:

  • project (String)


40
41
42
# File 'lib/melaya/team.rb', line 40

def create_invite_link(project)
  @http.post("/api/v1/private/projects/#{enc(project)}/invite-link")
end

#get_pipeline_visibility(project, pipeline) ⇒ Object

GET /api/v1/private/projects/:project/pipelines/:pipeline/visibility Get visibility settings for a pipeline within a project.

Parameters:

  • project (String)
  • pipeline (String)


77
78
79
80
81
# File 'lib/melaya/team.rb', line 77

def get_pipeline_visibility(project, pipeline)
  @http.get(
    "/api/v1/private/projects/#{enc(project)}/pipelines/#{enc(pipeline)}/visibility"
  )
end

#invite(project, username:) ⇒ Object

POST /api/v1/private/projects/:project/members/invite Invite a user to a project team by username.

Parameters:

  • project (String)
  • username (String)


31
32
33
34
# File 'lib/melaya/team.rb', line 31

def invite(project, username:)
  @http.post("/api/v1/private/projects/#{enc(project)}/members/invite",
    "username" => username)
end

#list_members(project) ⇒ Object

GET /api/v1/private/projects/:project/members List members of a project team.

Parameters:

  • project (String)

    project name



23
24
25
# File 'lib/melaya/team.rb', line 23

def list_members(project)
  @http.get("/api/v1/private/projects/#{enc(project)}/members")
end

#remove_member(project, user_id) ⇒ Object

DELETE /api/v1/private/projects/:project/members/:userId Remove a member from a project team.

Parameters:

  • project (String)
  • user_id (String)


67
68
69
# File 'lib/melaya/team.rb', line 67

def remove_member(project, user_id)
  @http.delete("/api/v1/private/projects/#{enc(project)}/members/#{enc(user_id)}")
end

#set_pipeline_visibility(project, pipeline, body = {}) ⇒ Object

PUT /api/v1/private/projects/:project/pipelines/:pipeline/visibility Set pipeline visibility within a project.

Parameters:

  • project (String)
  • pipeline (String)
  • body (Hash) (defaults to: {})


88
89
90
91
92
93
# File 'lib/melaya/team.rb', line 88

def set_pipeline_visibility(project, pipeline, body = {})
  @http.put(
    "/api/v1/private/projects/#{enc(project)}/pipelines/#{enc(pipeline)}/visibility",
    body
  )
end

#update_member_role(project, user_id, role:) ⇒ Object

PATCH /api/v1/private/projects/:project/members/:userId Update a team member's role in a project.

Parameters:

  • project (String)
  • user_id (String)
  • role (String)

    one of "owner", "editor", "viewer"



56
57
58
59
60
61
# File 'lib/melaya/team.rb', line 56

def update_member_role(project, user_id, role:)
  @http.patch(
    "/api/v1/private/projects/#{enc(project)}/members/#{enc(user_id)}",
    "role" => role
  )
end