Package com.xebialabs.xlrelease.api.v1

# Interface TenantApi

@Path("/api/v1/tenants") @Consumes("application/json") @Produces("application/json") public interface TenantApi
REST API for managing tenants and their configurations in Release.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Tenant`
  `create(TenantRequest tenantRequest)`
  Creates a new tenant.
  `TenantLimit`
  `createLimit(String tenantId, TenantLimit limit)`
  Creates a new limit configuration for a tenant.
  `void`
  `delete(String tenantId)`
  Deletes a tenant by its ID.
  `void`
  `deleteLimit(String tenantId)`
  Deletes the limit configuration for a tenant.
  `TenantLimit`
  `getLimit(String tenantId)`
  Retrieves the limit configuration for a specific tenant.
  `List<TenantLimit>`
  `getLimits()`
  Retrieves all tenant limits in the system.
  `Tenant`
  `getTenant(String tenantId)`
  Retrieves a specific tenant by its ID.
  `List<Tenant>`
  `getTenants()`
  Retrieves all tenants in the system.
  `void`
  `linkResource(String tenantId, List<TenantLinkRequest> linkRequests)`
  Links a tenant with various XL Release objects/resources.
  `void`
  `update(String tenantId, TenantRequest tenantRequest)`
  Updates an existing tenant.
  `void`
  `updateLimit(String tenantId, TenantLimit limit)`
  Updates the limit configuration for a tenant.

- ## Method Details

  - ### getTenants

    @GET List<Tenant> getTenants()
    Retrieves all tenants in the system.
    Returns:
      a list of all tenants

  - ### getTenant

    @GET @Path("/{tenantId}") Tenant getTenant(@PathParam("tenantId") String tenantId)
    Retrieves a specific tenant by its ID.
    Parameters:
      `tenantId` - the unique identifier of the tenant
    Returns:
      the tenant with the specified ID

  - ### create

    @POST Tenant create(TenantRequest tenantRequest)
    Creates a new tenant.
    Parameters:
      `tenantRequest` - the tenant creation request containing tenant details
    Returns:
      the newly created tenant

  - ### update

    @PUT @Path("/{tenantId}") void update(@PathParam("tenantId") String tenantId, TenantRequest tenantRequest)
    Updates an existing tenant.
    Parameters:
      `tenantId` - the unique identifier of the tenant to update
      `tenantRequest` - the tenant update request containing new tenant details

  - ### delete

    @DELETE @Path("/{tenantId}") void delete(@PathParam("tenantId") String tenantId)
    Deletes a tenant by its ID.
    Parameters:
      `tenantId` - the unique identifier of the tenant to delete

  - ### getLimits

    @GET @Path("/limits") List<TenantLimit> getLimits()
    Retrieves all tenant limits in the system.
    Returns:
      a list of all tenant limits

  - ### getLimit

    @GET @Path("/limits/{tenantId}") TenantLimit getLimit(@PathParam("tenantId") String tenantId)
    Retrieves the limit configuration for a specific tenant.
    Parameters:
      `tenantId` - the unique identifier of the tenant
    Returns:
      the tenant limit configuration

  - ### createLimit

    @POST @Path("/limits/{tenantId}") TenantLimit createLimit(@PathParam("tenantId") String tenantId, TenantLimit limit)
    Creates a new limit configuration for a tenant.
    Parameters:
      `tenantId` - the unique identifier of the tenant
      `limit` - the tenant limit configuration to create
    Returns:
      the newly created tenant limit configuration

  - ### updateLimit

    @PUT @Path("/limits/{tenantId}") void updateLimit(@PathParam("tenantId") String tenantId, TenantLimit limit)
    Updates the limit configuration for a tenant.
    Parameters:
      `tenantId` - the unique identifier of the tenant
      `limit` - the updated tenant limit configuration

  - ### deleteLimit

    @DELETE @Path("/limits/{tenantId}") void deleteLimit(@PathParam("tenantId") String tenantId)
    Deletes the limit configuration for a tenant.
    Parameters:
      `tenantId` - the unique identifier of the tenant

  - ### linkResource

    @PUT @Path("/{tenantId}/link") void linkResource(@PathParam("tenantId") String tenantId, List<TenantLinkRequest> linkRequests)
    Links a tenant with various XL Release objects/resources. This operation associates the tenant with different resources in the system.
    Parameters:
      `tenantId` - the unique identifier of the tenant
      `linkRequests` - a list of tenant link requests specifying which resources to link