@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api Account Management Overview
@base https://api.frontegg.com/tenants
@version 1.0
@auth Bearer bearer
@endpoints 25
@hint download_for_search
@toc resources(25)

@endpoint GET /resources/tenants/v1/{tenantId}
@desc Get account (tenant) by ID
@required {tenantId: str # The account (tenant) ID to get.}
@errors {400: When the account (tenant) ID does not pass the validation.}

@endpoint PUT /resources/tenants/v1/{tenantId}
@desc Update account (tenant)
@required {tenantId: str}
@errors {400: When body doesn't contain any property to change., 404: When given account (tenant) doesn't exist.}

@endpoint DELETE /resources/tenants/v1/{tenantId}
@desc Delete account (tenant)
@required {tenantId: str}
@errors {404: When the given account (tenant) doesn't exist.}

@endpoint POST /resources/tenants/v1
@desc Create an account (tenant)
@optional {tenantId: str # Send your own unique tenantId or Frontegg will auto-generate a UUID, name: str, status: str # This field can be used for custom logic, it is not enforced in Frontegg flows, website: str, applicationUrl: str, logo: str # Base64-encoded image to use as logo., logoUrl: str, address: str, timezone: str, currency: str, creatorName: str, creatorEmail: str, isReseller: bool, parentTenantId: str}
@errors {400: When the account (tenant) ID does not pass the validation.}

@endpoint DELETE /resources/tenants/v1
@desc Delete current account (tenant)
@returns(200) When current account (tenant) has been removed.

@endpoint POST /resources/tenants/v1/{tenantId}/metadata
@desc Add account (tenant) metadata
@required {tenantId: str, metadata: any}
@errors {400: When the given metadata is neither a JSON, nor JSON-string., 404: When the given account (tenant) doesn't exist.}

@endpoint DELETE /resources/tenants/v1/{tenantId}/metadata/{key}
@desc Delete account (tenant) metadata
@required {tenantId: str, key: str}
@errors {404: When the provided account (tenant) doesn't exist.}

@endpoint GET /resources/tenants/v2
@desc Get accounts (tenants)
@optional {_limit: num # The default limit is 50 accounts (tenants) per request, the maximum is 200, _offset: num, _filter: str # This param allows filtering the request using an account's name or tenantId, _sortBy: str # This param allows sorting the results via createdAt, name, tenantId, _order: str # This param can be used together with sortBy and define the order as ACS or DESC, _tenantIds: [str] # This param allows passing specific tenantIds and getting only these accounts (tenants) data}
@returns(200)

@endpoint GET /resources/tenants/v2/alias/{alias}
@desc Get account (tenant) by alias
@required {alias: str}
@returns(200)

@endpoint GET /resources/tenants/v2/{tenantId}
@desc Get an account (tenant)
@required {tenantId: str}
@returns(200)

@endpoint PUT /resources/tenants/v2/{tenantId}
@desc Update an account (tenant)
@required {tenantId: str}
@returns(200)

@endpoint POST /resources/sub-tenants/v1
@desc Create sub-account
@required {tenantId: str, name: str, parentTenantId: str}
@optional {status: str # This field can be used for custom logic, it is not enforced in Frontegg flows, logo: str # Base64-encoded image to use as logo., logoUrl: str, creatorName: str, creatorEmail: str, isReseller: bool}
@errors {400: When account (tenant) ID does not pass validation.}

@endpoint PUT /resources/sub-tenants/v1/{tenantId}/management
@desc Update sub-account (tenant) management
@required {tenantId: str}
@returns(200)

@endpoint PUT /resources/sub-tenants/v1/{tenantId}/hierarchy-settings
@desc Update sub-account hierarchy settings
@required {tenantId: str}
@returns(200)

@endpoint DELETE /resources/sub-tenants/v1/{tenantId}
@desc Delete a sub-account by ID
@required {tenantId: str}
@errors {404: When the given account (tenant) doesn't exist.}

@endpoint GET /resources/account-settings/v1
@desc Get account settings
@required {frontegg-tenant-id: str # The account (tenant) ID identifier}
@returns(200) Settings retrieved successfully
@errors {404: When an account (tenant) with given ID does not exist.}

@endpoint PUT /resources/account-settings/v1
@desc Update account settings
@required {frontegg-tenant-id: str # The account (tenant) ID identifier}
@returns(200) Settings updated successfully
@errors {400: When: a) given parameters do not pass validation b) empty object is passed in request content, 404: When an account (tenant) with given ID does not exist.}

@endpoint GET /resources/account-settings/v1/public
@desc Get public settings
@required {frontegg-tenant-id: str # The account (tenant) ID identifier}
@returns(200) Public settings retrieved successfully
@errors {404: When an account (tenant) with given ID does not exist.}

@endpoint POST /resources/migrations/v1/tenants
@desc Migrate accounts (tenants)
@required {tenants: [str]}
@returns(202)

@endpoint GET /resources/migrations/v1/tenants/status/{migrationId}
@desc Accounts (tenants) migration status
@required {migrationId: str}
@returns(200)

@endpoint GET /resources/hierarchy/v1
@desc Get sub-accounts (tenants)
@required {frontegg-tenant-id: str # The account (tenant) ID identifier}
@returns(200)

@endpoint POST /resources/hierarchy/v1
@desc Create sub-account (tenant)
@optional {parentTenantId: str, childTenantId: str}
@errors {400: When:a) given parameters do not pass validationb) or parent and child account (tenant) are equal:c) or child account (tenant) is already a sub-account in other organization's hierarchy}

@endpoint DELETE /resources/hierarchy/v1
@desc Delete sub-account (tenant)
@errors {400: When provided parameters do not pass validation., 404: When given accounts (tenants) are not in parent-child relation.}

@endpoint GET /resources/hierarchy/v1/parents
@desc Get parent accounts (tenants)
@required {frontegg-tenant-id: str # The account (tenant) ID identifier}
@returns(200)

@endpoint GET /resources/hierarchy/v1/tree
@desc Get sub-accounts (tenanants) hierarchy tree
@required {frontegg-tenant-id: str # The account (tenant) ID identifier}
@errors {400: When circular dependency is detected in the hierarchy}

@end
