Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added Support for Self-Service-Profile #683

Merged
merged 4 commits into from
Jan 8, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions src/main/java/com/auth0/client/mgmt/ManagementAPI.java
Original file line number Diff line number Diff line change
Expand Up @@ -388,6 +388,14 @@ public PromptsEntity prompts() {
return new PromptsEntity(client, baseUrl, tokenProvider);
}

/**
* Getter for the SelfServiceProfiles Entity
* @return the SelfServiceProfiles Entity
*/
public SelfServiceProfilesEntity selfServiceProfiles() {
return new SelfServiceProfilesEntity(client, baseUrl, tokenProvider);
}

/**
* Builder for {@link ManagementAPI} API client instances.
*/
Expand Down
239 changes: 239 additions & 0 deletions src/main/java/com/auth0/client/mgmt/SelfServiceProfilesEntity.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,239 @@
package com.auth0.client.mgmt;

import com.auth0.client.mgmt.filter.PageBasedPaginationFilter;
import com.auth0.json.mgmt.selfserviceprofiles.SelfServiceProfile;
import com.auth0.json.mgmt.selfserviceprofiles.SelfServiceProfileResponse;
import com.auth0.json.mgmt.selfserviceprofiles.SelfServiceProfileResponsePage;
import com.auth0.json.mgmt.selfserviceprofiles.SsoAccessTicketResponse;
import com.auth0.net.*;
import com.auth0.net.client.Auth0HttpClient;
import com.auth0.net.client.HttpMethod;
import com.auth0.utils.Asserts;
import com.fasterxml.jackson.core.type.TypeReference;
import okhttp3.HttpUrl;

import java.util.Map;

public class SelfServiceProfilesEntity extends BaseManagementEntity {

private final static String ORGS_PATH = "api/v2/self-service-profiles";

SelfServiceProfilesEntity(Auth0HttpClient client, HttpUrl baseUrl, TokenProvider tokenProvider) {
super(client, baseUrl, tokenProvider);
}

/**
* Request the list of self-service profiles.
* A token with {@code read:self_service_profiles} scope is needed
* @see <a href="https://auth0.com/docs/api/management/v2#!/self-service-profiles/get-self-service-profiles">https://auth0.com/docs/api/management/v2#!/self-service-profiles/get-self-service-profiles</a>
* @param pageFilter the pagination filter to apply. Can be null to use the default values.
* @return a Request to execute.
*/
public Request<SelfServiceProfileResponsePage> get(PageBasedPaginationFilter pageFilter) {
HttpUrl.Builder builder = baseUrl.newBuilder()
.addPathSegments(ORGS_PATH);

if (pageFilter != null) {
for (Map.Entry<String, Object> e : pageFilter.getAsMap().entrySet()) {
builder.addQueryParameter(e.getKey(), String.valueOf(e.getValue()));
}
}

String url = builder.build().toString();
return new BaseRequest<>(this.client, tokenProvider, url, HttpMethod.GET, new TypeReference<SelfServiceProfileResponsePage>() {
});
}

/**
* Create a new self-service profile.
* A token with {@code create:self_service_profiles} scope is needed
* @see <a href="https://auth0.com/docs/api/management/v2#!/self-service-profiles/post-self-service-profiles">https://auth0.com/docs/api/management/v2#!/self-service-profiles/post-self-service-profiles</a>
* @param selfServiceProfile the self-service profile to create.
* @return a Request to execute.
*/
public Request<SelfServiceProfileResponse> create(SelfServiceProfile selfServiceProfile) {
Asserts.assertNotNull(selfServiceProfile, "self service profile");
Asserts.assertNotNull(selfServiceProfile.getName(), "name");

String url = baseUrl.newBuilder()
.addPathSegments(ORGS_PATH)
.build()
.toString();

BaseRequest<SelfServiceProfileResponse> request = new BaseRequest<>(this.client, tokenProvider, url, HttpMethod.POST, new TypeReference<SelfServiceProfileResponse>() {
});
request.setBody(selfServiceProfile);
return request;
}

/**
* Request the self-service profile with the given ID.
* A token with {@code read:self_service_profiles} scope is needed
* @see <a href="https://auth0.com/docs/api/management/v2#!/self-service-profiles/get-self-service-profiles-by-id">https://auth0.com/docs/api/management/v2#!/self-service-profiles/get-self-service-profiles-by-id</a>
* @param id the self-service profile ID.
* @return a Request to execute.
*/
public Request<SelfServiceProfileResponse> getById(String id) {
Asserts.assertNotNull(id, "id");

String url = baseUrl.newBuilder()
.addPathSegments(ORGS_PATH)
.addPathSegment(id)
.build()
.toString();

return new BaseRequest<>(this.client, tokenProvider, url, HttpMethod.GET, new TypeReference<SelfServiceProfileResponse>() {
});
}

/**
* Delete the self-service profile with the given ID.
* A token with {@code delete:self_service_profiles} scope is needed
* @see <a href="https://auth0.com/docs/api/management/v2#!/self-service-profiles/delete-self-service-profiles-by-id">https://auth0.com/docs/api/management/v2#!/self-service-profiles/delete-self-service-profiles-by-id</a>
* @param id the self-service profile ID.
* @return a Request to execute.
*/
public Request<Void> delete(String id) {
Asserts.assertNotNull(id, "id");

String url = baseUrl.newBuilder()
.addPathSegments(ORGS_PATH)
.addPathSegment(id)
.build()
.toString();

return new VoidRequest(this.client, tokenProvider, url, HttpMethod.DELETE);
}

/**
* Update the self-service profile with the given ID.
* A token with {@code update:self_service_profiles} scope is needed
* @see <a href="https://auth0.com/docs/api/management/v2#!/self-service-profiles/patch-self-service-profiles-by-id">https://auth0.com/docs/api/management/v2#!/self-service-profiles/patch-self-service-profiles-by-id</a>
* @param selfServiceProfile the self-service profile to update.
* @param id the self-service profile ID.
* @return a Request to execute.
*/
public Request<SelfServiceProfileResponse> update(SelfServiceProfile selfServiceProfile, String id) {
Asserts.assertNotNull(selfServiceProfile, "self service profile");
Asserts.assertNotNull(id, "id");

String url = baseUrl.newBuilder()
.addPathSegments(ORGS_PATH)
.addPathSegment(id)
.build()
.toString();

BaseRequest<SelfServiceProfileResponse> request = new BaseRequest<>(this.client, tokenProvider, url, HttpMethod.PATCH, new TypeReference<SelfServiceProfileResponse>() {
});
request.setBody(selfServiceProfile);
return request;
}

/**
* Get the custom text for specific self-service profile and language.
* A token with {@code read:self_service_profile_custom_texts} scope is needed
* @see <a href="https://auth0.com/docs/api/management/v2#!/self-service-profiles/get-self-service-profile-custom-text">https://auth0.com/docs/api/management/v2#!/self-service-profiles/get-self-service-profile-custom-text</a>
* @param id the self-service profile ID.
* @param language the language.
* @param page the page.
* @return a Request to execute.
*/
public Request<Object> getCustomText(String id, String language, String page) {
Asserts.assertNotNull(id, "id");
Asserts.assertNotNull(language, "language");
Asserts.assertNotNull(page, "page");

HttpUrl.Builder builder = baseUrl.newBuilder()
.addPathSegments(ORGS_PATH)
.addPathSegment(id)
.addPathSegment("custom-text")
.addPathSegment(language)
.addPathSegment(page);

String url = builder.build().toString();

return new BaseRequest<>(this.client, tokenProvider, url, HttpMethod.GET, new TypeReference<Object>() {
});
}

/**
* Set the custom text for specific self-service profile and language.
* A token with {@code update:self_service_profile_custom_texts} scope is needed
* @see <a href="https://auth0.com/docs/api/management/v2#!/self-service-profiles/put-self-service-profile-custom-text">https://auth0.com/docs/api/management/v2#!/self-service-profiles/put-self-service-profile-custom-text</a>
* @param id the self-service profile ID.
* @param language the language.
* @param page the page.
* @param customText the custom text.
* @return a Request to execute.
*/
public Request<Object> setCustomText(String id, String language, String page, Object customText) {
Asserts.assertNotNull(id, "id");
Asserts.assertNotNull(language, "language");
Asserts.assertNotNull(page, "page");
Asserts.assertNotNull(customText, "custom text");

HttpUrl.Builder builder = baseUrl.newBuilder()
.addPathSegments(ORGS_PATH)
.addPathSegment(id)
.addPathSegment("custom-text")
.addPathSegment(language)
.addPathSegment(page);

String url = builder.build().toString();

BaseRequest<Object> request = new BaseRequest<>(this.client, tokenProvider, url, HttpMethod.PUT, new TypeReference<Object>() {
});
request.setBody(customText);
return request;
}

/**
* Create a new SSO access ticket.
* A token with {@code create:sso_access_tickets} scope is needed
* @see <a href="https://auth0.com/docs/api/management/v2#!/self-service-profiles/post-sso-ticket">https://auth0.com/docs/api/management/v2#!/self-service-profiles/post-sso-ticket</a>
* @param id the self-service profile ID.
* @param payload the payload.
* @return a Request to execute.
*/
public Request<SsoAccessTicketResponse> createSsoAccessTicket(String id, Object payload) {
Asserts.assertNotNull(id, "id");
Asserts.assertNotNull(payload, "payload");

HttpUrl.Builder builder = baseUrl.newBuilder()
.addPathSegments(ORGS_PATH)
.addPathSegment(id)
.addPathSegment("sso-ticket");

String url = builder.build().toString();

BaseRequest<SsoAccessTicketResponse> request = new BaseRequest<>(this.client, tokenProvider, url, HttpMethod.POST, new TypeReference<SsoAccessTicketResponse>() {
});
request.setBody(payload);
return request;
}

/**
* Revoke an SSO ticket.
* A token with {@code delete:sso_access_tickets} scope is needed
* @see <a href="https://auth0.com/docs/api/management/v2#!/self-service-profiles/post-revoke">https://auth0.com/docs/api/management/v2#!/self-service-profiles/post-revoke</a>
* @param id the self-service profile ID.
* @param ticketId the ticket ID.
* @return a Request to execute.
*/
public Request<Void> revokeSsoTicket(String id, String ticketId) {
Asserts.assertNotNull(id, "id");
Asserts.assertNotNull(ticketId, "ticket id");

HttpUrl.Builder builder = baseUrl.newBuilder()
.addPathSegments(ORGS_PATH)
.addPathSegment(id)
.addPathSegment("sso-ticket")
.addPathSegment(ticketId)
.addPathSegment("revoke");

String url = builder.build().toString();

return new EmptyBodyVoidRequest<>(this.client, tokenProvider, url, HttpMethod.POST, new TypeReference<Void>() {
});
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.auth0.client.mgmt.filter;

/**
* Class that represents a filter to be used when requesting a list of items with pagination.
*/
public class PageBasedPaginationFilter extends BaseFilter{

/**
* Filter by page
*
* @param pageNumber the page number to retrieve.
* @param amountPerPage the amount of items per page to retrieve.
* @return this filter instance
*/
public PageBasedPaginationFilter withPage(int pageNumber, int amountPerPage) {
parameters.put("page", pageNumber);
parameters.put("per_page", amountPerPage);
return this;
}

/**
* Include the query summary
*
* @param includeTotals whether to include or not the query summary.
* @return this filter instance
*/
public PageBasedPaginationFilter withTotals(boolean includeTotals) {
parameters.put("include_totals", includeTotals);
return this;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package com.auth0.json.mgmt.selfserviceprofiles;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public class Branding {
@JsonProperty("logo_url")
private String logoUrl;
@JsonProperty("colors")
private Color colors;

/**
* Getter for the logo URL.
* @return the logo URL.
*/
public String getLogoUrl() {
return logoUrl;
}

/**
* Setter for the logo URL.
* @param logoUrl the logo URL to set.
*/
public void setLogoUrl(String logoUrl) {
this.logoUrl = logoUrl;
}

/**
* Getter for the colors.
* @return the colors.
*/
public Color getColors() {
return colors;
}

/**
* Setter for the colors.
* @param colors the colors to set.
*/
public void setColors(Color colors) {
this.colors = colors;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package com.auth0.json.mgmt.selfserviceprofiles;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public class Color {
@JsonProperty("primary")
private String primary;

/**
* Creates a new instance of the Color class.
*/
public Color() {}

/**
* Creates a new instance of the Color class.
* @param primary the primary color.
*/
@JsonCreator
public Color(@JsonProperty("primary") String primary) {
this.primary = primary;
}

/**
* Getter for the primary color.
* @return the primary color.
*/
public String getPrimary() {
return primary;
}

/**
* Setter for the primary color.
* @param primary the primary color to set.
*/
public void setPrimary(String primary) {
this.primary = primary;
}
}
Loading
Loading