{"openapi":"3.1.0","$schema":"https://json-schema.org/draft/2020-12/schema","info":{"title":"SDK API V1","version":"v1"},"paths":{"/api/sdk/v1/sign_ins/{sign_in_id}/authenticate":{"post":{"summary":"authenticate a sign-in session","tags":["SDK Authentications"],"description":"No sign-in session found with the provided SID","security":[{"sdk_token":[]}],"parameters":[{"name":"sign_in_id","in":"path","description":"The SID (session ID) of the sign-in session","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"successfully authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"jwt":{"type":"string","description":"JWT token for API calls (includes user claims)"},"refresh_token":{"type":"string","description":"Token to refresh access tokens"}}}}}},"401":{"description":"unauthorized - invalid password or account locked","content":{"application/json":{"schema":{"type":"object","properties":{"error_identifier":{"type":"string","enum":["invalid_password","account_locked"]}}}}}},"422":{"description":"unprocessable - account unconfirmed, validation error, or sign-in already processed","content":{"application/json":{"schema":{"type":"object","properties":{"error_identifier":{"type":"string","enum":["account_unconfirmed","unprocessable_content","sign_in_already_processed"]},"errors":{"type":"array","items":{"type":"string"}}}}}}},"404":{"description":"sign-in not found","content":{"application/json":{"schema":{"type":"object","properties":{"error_identifier":{"type":"string","example":"sign_in_not_found"}}}}}},"424":{"description":"missing required fields"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"password":{"type":"string","example":"secure_password123","description":"User password for authentication"},"code":{"type":"string","example":"5125","description":"Magic link code for authentication"},"captcha_token":{"type":"string","description":"Captcha verification token from the client-side captcha widget"}},"oneOf":[{"required":["password"]},{"required":["code"]}],"additionalProperties":false}}}}}},"/api/sdk/v1/sign_ins/{id}/brand_connect":{"post":{"summary":"connect user to brand","tags":["SDK Brand Connect"],"security":[{"sdk_token":[]}],"description":"Connects the authenticated user to the current brand","parameters":[{"name":"id","in":"path","description":"id of the sign_in session","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"connected"},"422":{"description":"unprocessable entity - not authenticated"},"404":{"description":"not found"}}}},"/api/sdk/v1/jump_to/service/{id}":{"parameters":[{"name":"id","in":"path","description":"OAuth Application ID","required":true,"schema":{"type":"integer"}}],"post":{"summary":"create service jump-to token","tags":["SDK JumpTo"],"security":[{"sdk_token":[]}],"parameters":[{"name":"X-ID-Token","in":"header","required":true,"description":"ID Token for user authentication","schema":{"type":"string"}}],"responses":{"201":{"description":"created"},"401":{"description":"unauthorized - missing or invalid id_token"},"404":{"description":"not found - user or application not found"},"422":{"description":"unprocessable entity - invalid_redirect_uri or invalid_scope"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"redirect_uri":{"type":"string","format":"uri","example":"https://example.com/callback","description":"OAuth redirect URI (optional, defaults to application redirect_uri)"},"scopes":{"type":"array","items":{"type":"string"},"example":["openid","profile"],"description":"OAuth scopes (optional, defaults to [\"openid\"])"},"skip_oauth_authorization":{"type":"boolean","example":false,"description":"Skip OAuth authorization step (optional, defaults to false)"}},"required":[],"additionalProperties":false}}}}}},"/api/sdk/v1/jump_to/unidy":{"post":{"summary":"create unidy jump-to token","tags":["SDK JumpTo"],"security":[{"sdk_token":[]}],"parameters":[{"name":"X-ID-Token","in":"header","required":true,"description":"ID Token for user authentication","schema":{"type":"string"}}],"responses":{"201":{"description":"created"},"401":{"description":"unauthorized - missing or invalid id_token"},"422":{"description":"unprocessable entity - invalid_path"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"path":{"type":"string","example":"/subscriptions","description":"Path to redirect to in Unidy (must start with \"/\")"}},"required":["path"],"additionalProperties":false}}}}}},"/api/sdk/v1/sign_ins/{sign_in_id}/send_magic_code":{"post":{"summary":"send magic code for passwordless authentication","tags":["SDK Magic Codes"],"description":"No sign-in session found with the provided SID","security":[{"sdk_token":[]}],"parameters":[{"name":"sign_in_id","in":"path","description":"The SID (session ID) of the sign-in session","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"magic code sent successfully","content":{"application/json":{"schema":{"type":"object","properties":{"enable_resend_after":{"type":"integer","description":"Unix timestamp when a new code can be requested"}}}}}},"422":{"description":"sign-in already authenticated","content":{"application/json":{"schema":{"type":"object","properties":{"error_identifier":{"type":"string","example":"sign_in_already_processed"},"enable_resend_after":{"type":"integer","description":"Unix timestamp when a new code can be requested"}}}}}},"401":{"description":"unauthorized - account locked"},"404":{"description":"sign-in not found","content":{"application/json":{"schema":{"type":"object","properties":{"error_identifier":{"type":"string","example":"sign_in_not_found"}}}}}}}}},"/api/sdk/v1/newsletters/newsletter_subscription/login_email":{"post":{"summary":"login email","tags":["SDK Newsletter Subscriptions"],"description":"Sends a login email to an existing newsletter subscriber. The email contains a magic link\nthat allows the subscriber to manage their subscription preferences.\n\nThis endpoint is useful for:\n- Allowing subscribers to update their preferences without creating an account\n- Providing a passwordless authentication flow for newsletter management\n- Re-sending access links to subscribers who lost their original confirmation email\n\n**Rate Limiting:** This endpoint may be rate-limited to prevent abuse.\n","security":[{"sdk_token":[]}],"parameters":[],"responses":{"204":{"description":"no content"},"404":{"description":"not found","content":{"application/json":{"schema":{"type":"object","properties":{"error_identifier":{"type":"string","example":"not_found"}}}}}},"403":{"description":"redirect_uri host not in allowed hosts","content":{"application/json":{"schema":{"type":"object","properties":{"error_identifier":{"type":"string","example":"origin_not_allowed"}}}}}},"422":{"description":"missing redirect_uri","content":{"application/json":{"schema":{"type":"object","properties":{"error_identifier":{"type":"string","example":"missing_redirect_uri"}}}}}},"401":{"description":"unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error_identifier":{"type":"string","example":"missing_api_key"}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","example":"user@example.com"},"redirect_uri":{"type":"string","format":"uri","example":"https://example.com/callback"}},"required":["email","redirect_uri"]}}}}}},"/api/sdk/v1/newsletters/newsletter_subscription":{"get":{"summary":"list newsletter subscriptions","tags":["SDK Newsletter Subscriptions"],"security":[{"sdk_token":[]}],"parameters":[{"name":"X-ID-Token","in":"header","required":false,"description":"ID Token for user authentication","schema":{"type":"string"}},{"name":"X-Preference-Token","in":"header","required":false,"description":"Preference token for newsletter subscription authentication","schema":{"type":"string"}}],"responses":{"200":{"description":"successful with preference token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/newsletter_subscriptions"}}}},"401":{"description":"unauthorized"}}},"post":{"summary":"create newsletter subscription","tags":["SDK Newsletter Subscriptions"],"security":[{"sdk_token":[]}],"parameters":[{"name":"X-ID-Token","in":"header","required":false,"description":"ID Token for user authentication","schema":{"type":"string"}}],"responses":{"201":{"description":"created with email only"},"422":{"description":"user validation error with machine-readable details"},"207":{"description":"multi-status"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"email":{"type":"string","format":"email","example":"user@gmail.com","description":"Subscribers email address"},"additional_fields":{"type":"object","properties":{"first_name":{"type":["string","null"],"example":"Herrman"},"last_name":{"type":["string","null"],"example":"Mueller"},"salutation":{"type":["string","null"],"example":"mr","enum":["mr","mrs","mx",null]},"phone_number":{"type":["string","null"],"example":"+49123456789"},"date_of_birth":{"type":["string","null"],"format":"date","example":"1991-06-10"},"company_name":{"type":["string","null"],"example":"Unidy"},"address_line_1":{"type":["string","null"],"example":"Jakob-Kaiser-Str 70a"},"address_line_2":{"type":["string","null"],"example":"5 OG"},"city":{"type":["string","null"],"example":"Hamburg"},"postal_code":{"type":["string","null"],"example":"AA0A 0AA"},"country_code":{"type":["string","null"],"example":"GB","description":"codes follow ISO 3166"},"preferred_language":{"type":["string","null"],"example":"de"},"custom_attributes":{"type":["object","null"],"description":"Object containing key-value pairs where keys are the custom attribute names.The allowed value depends on the custom attribute type.","additionalProperties":true,"example":{"custom_attribute_name":"value","another_custom_attribute_name":12}}},"description":"Additional fields to create the user with","additionalProperties":false},"newsletter_subscriptions":{"type":"array","minItems":1,"items":{"type":"object","properties":{"newsletter_internal_name":{"type":"string","example":"newsletter_internal_name","description":"Unique identifier of the newsletter"},"preference_identifiers":{"type":"array","items":{"type":"string","example":"newsletter_preference_identifier","description":"Newsletter preference identifier"},"example":["newsletter_preference_identifier"],"uniqueItems":true}},"required":["newsletter_internal_name"]}},"redirect_to_after_confirmation":{"type":"string","format":"uri"},"captcha_token":{"type":"string","description":"Captcha verification token from the client-side captcha widget"}},"required":["email","newsletter_subscriptions"]}}}}}},"/api/sdk/v1/newsletters/{internal_name}/newsletter_subscription":{"parameters":[{"name":"internal_name","in":"path","description":"internal name of the newsletter","required":true,"schema":{"type":"string"}}],"get":{"summary":"show newsletter subscription","tags":["SDK Newsletter Subscriptions"],"security":[{"sdk_token":[]}],"parameters":[{"name":"X-ID-Token","in":"header","required":false,"description":"ID Token for user authentication","schema":{"type":"string"}},{"name":"X-Preference-Token","in":"header","required":false,"description":"Preference token for newsletter subscription authentication","schema":{"type":"string"}}],"responses":{"200":{"description":"successful with preference token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/newsletter_subscription"}}}},"401":{"description":"unauthorized"},"404":{"description":"not found"}}},"patch":{"summary":"update newsletter subscription","tags":["SDK Newsletter Subscriptions"],"security":[{"sdk_token":[]}],"parameters":[{"name":"X-ID-Token","in":"header","required":false,"description":"ID Token for user authentication","schema":{"type":"string"}},{"name":"X-Preference-Token","in":"header","required":false,"description":"Preference token for newsletter subscription authentication","schema":{"type":"string"}}],"responses":{"200":{"description":"successful","content":{"application/json":{"schema":{"$ref":"#/components/schemas/newsletter_subscription"}}}},"403":{"description":"subscription not confirmed"},"422":{"description":"preferences not found"},"401":{"description":"unauthorized"},"404":{"description":"not found"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"preference_identifiers":{"type":"array","items":{"type":"string","example":"newsletter_preference_identifier","description":"Newsletter preference identifier"},"example":["newsletter_preference_identifier"],"uniqueItems":true}},"required":["preference_identifiers"]}}}}},"delete":{"summary":"destroy newsletter subscription","tags":["SDK Newsletter Subscriptions"],"security":[{"sdk_token":[]}],"parameters":[{"name":"X-ID-Token","in":"header","required":false,"description":"ID Token for user authentication","schema":{"type":"string"}},{"name":"X-Preference-Token","in":"header","required":false,"description":"Preference token for newsletter subscription authentication","schema":{"type":"string"}}],"responses":{"204":{"description":"no content with preference token"},"401":{"description":"unauthorized"},"404":{"description":"not found"},"422":{"description":"unprocessable entity"}}}},"/api/sdk/v1/newsletters/{internal_name}/newsletter_subscription/resend_doi":{"parameters":[{"name":"internal_name","in":"path","description":"internal name of the newsletter","required":true,"schema":{"type":"string"}}],"post":{"summary":"resend doi","tags":["SDK Newsletter Subscriptions"],"security":[{"sdk_token":[]}],"parameters":[{"name":"X-ID-Token","in":"header","required":false,"description":"ID Token for user authentication","schema":{"type":"string"}},{"name":"X-Preference-Token","in":"header","required":false,"description":"Preference token for newsletter subscription authentication","schema":{"type":"string"}}],"responses":{"204":{"description":"no content"},"422":{"description":"failed to resend"},"401":{"description":"unauthorized"},"404":{"description":"not found"}}}},"/api/sdk/v1/newsletters":{"get":{"summary":"list newsletters","tags":["SDK Newsletter Subscriptions"],"security":[{"sdk_token":[]}],"responses":{"200":{"description":"successful","content":{"application/json":{"schema":{"$ref":"#/components/schemas/newsletters"}}}},"401":{"description":"unauthorized"}}}},"/api/sdk/v1/newsletters/{internal_name}":{"get":{"summary":"show newsletter","tags":["SDK Newsletter Subscriptions"],"security":[{"sdk_token":[]}],"parameters":[{"name":"internal_name","in":"path","description":"internal name of the newsletter","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"successful","content":{"application/json":{"schema":{"$ref":"#/components/schemas/newsletter"}}}},"401":{"description":"unauthorized"},"404":{"description":"not found"}}}},"/api/sdk/v1/newsletter_subscriptions":{"post":{"summary":"create newsletter subscription","tags":["Legacy SDK Newsletter Subscriptions"],"security":[{"sdk_token":[]}],"parameters":[],"responses":{"201":{"description":"created"},"422":{"description":"unprocessable entity"},"207":{"description":"multi-status"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"email":{"type":"string","format":"email","example":"user@gmail.com","description":"Subscribers email address"},"additional_fields":{"type":"object","properties":{"first_name":{"type":["string","null"],"example":"Herrman"},"last_name":{"type":["string","null"],"example":"Mueller"},"salutation":{"type":["string","null"],"example":"mr","enum":["mr","mrs","mx",null]},"phone_number":{"type":["string","null"],"example":"+49123456789"},"date_of_birth":{"type":["string","null"],"format":"date","example":"1991-06-10"},"company_name":{"type":["string","null"],"example":"Unidy"},"address_line_1":{"type":["string","null"],"example":"Jakob-Kaiser-Str 70a"},"address_line_2":{"type":["string","null"],"example":"5 OG"},"city":{"type":["string","null"],"example":"Hamburg"},"postal_code":{"type":["string","null"],"example":"AA0A 0AA"},"country_code":{"type":["string","null"],"example":"GB","description":"codes follow ISO 3166"},"preferred_language":{"type":["string","null"],"example":"de"},"custom_attributes":{"type":["object","null"],"description":"Object containing key-value pairs where keys are the custom attribute names.The allowed value depends on the custom attribute type.","additionalProperties":true,"example":{"custom_attribute_name":"value","another_custom_attribute_name":12}}},"description":"Additional fields to create the user with","additionalProperties":false},"newsletter_subscriptions":{"type":"array","minItems":1,"items":{"type":"object","properties":{"newsletter_internal_name":{"type":"string","example":"newsletter_internal_name","description":"Unique identifier of the newsletter"},"preference_identifiers":{"type":"array","items":{"type":"string","example":"newsletter_preference_identifier","description":"Newsletter preference identifier"},"example":["newsletter_preference_identifier"],"uniqueItems":true}},"required":["newsletter_internal_name"]}},"redirect_to_after_confirmation":{"type":"string","format":"uri"},"captcha_token":{"type":"string","description":"Captcha verification token from the client-side captcha widget"}},"required":["email","newsletter_subscriptions"]}}}}}},"/api/sdk/v1/newsletters/{internal_name}/resend_doi":{"post":{"summary":"resend doi","tags":["Legacy SDK Newsletter Subscriptions"],"security":[{"sdk_token":[]}],"parameters":[{"name":"internal_name","in":"path","description":"internal name of the newsletter","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"no content"},"404":{"description":"not found"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email"}},"required":["email"]}}}}}},"/api/sdk/v1/oauth/{id}/consent":{"get":{"summary":"check consent status","tags":["SDK OAuth"],"description":"Get OAuth application info, consent status, and required/missing fields","security":[{"sdk_token":[]}],"parameters":[{"name":"X-ID-Token","in":"header","required":true,"description":"ID Token for user authentication","schema":{"type":"string"}},{"name":"id","in":"path","required":true,"description":"UID of the OAuth application","schema":{"type":"string"}}],"responses":{"200":{"description":"successful","content":{"application/json":{"example":{"has_consent":false,"required_fields":[],"missing_fields":[],"needs_authentication_confirmation":false,"has_passkeys":false,"application":{"uid":"kLerMEECRJWqRILRPdrEYoMz5rGTbkrEnnH1fosgKgg","name":"Vitae exercitationem cum quasi.","description":"The universe is a cruel, uncaring void. The key to being happy isn't a search for meaning. It's to just keep yourself busy with unimportant nonsense, and eventually, you'll be dead","scopes":[{"scope":"openid","name":"ID"},{"scope":"profile","name":"Profil"},{"scope":"email","name":"Deine E-Mail-Adresse"}],"logo_url":"/assets/default_app_icon.svg","connect_uri":"https://example.com"}},"schema":{"type":"object","properties":{"has_consent":{"type":"boolean"},"required_fields":{"type":"array","items":{"type":"string"}},"missing_fields":{"type":"array","items":{"type":"string"}},"application":{"type":"object","properties":{"uid":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"scopes":{"type":"array","items":{"type":"object","properties":{"scope":{"type":"string"},"name":{"type":"string"}}}},"logo_url":{"type":"string","nullable":true},"connect_uri":{"type":"string","nullable":true}}}}}}}},"401":{"description":"unauthorized"},"404":{"description":"not found"}}},"post":{"summary":"grant consent","tags":["SDK OAuth"],"description":"Grant consent for an OAuth application. Returns a connect token.","security":[{"sdk_token":[]}],"parameters":[{"name":"X-ID-Token","in":"header","required":true,"description":"ID Token for user authentication","schema":{"type":"string"}},{"name":"id","in":"path","required":true,"description":"UID of the OAuth application","schema":{"type":"string"}}],"responses":{"201":{"description":"consent granted","content":{"application/json":{"example":{"token":"a2484f17-e4ce-4e5e-963d-b0f939d0dd2f"},"schema":{"type":"object","properties":{"token":{"type":"string","description":"OneTimeLoginToken for connecting"}}}}}},"422":{"description":"missing required fields","content":{"application/json":{"example":{"error_identifier":"missing_required_fields","error_details":{"missing_fields":["first_name"]}},"schema":{"type":"object","properties":{"error_identifier":{"type":"string"},"error_details":{"type":"object","properties":{"missing_fields":{"type":"array","items":{"type":"string"}}}}}}}}}}},"patch":{"summary":"update user data","tags":["SDK OAuth"],"description":"Update user profile data and return consent status","security":[{"sdk_token":[]}],"parameters":[{"name":"X-ID-Token","in":"header","required":true,"description":"ID Token for user authentication","schema":{"type":"string"}},{"name":"id","in":"path","required":true,"description":"UID of the OAuth application","schema":{"type":"string"}}],"responses":{"200":{"description":"successful","content":{"application/json":{"example":{"has_consent":false,"required_fields":[],"missing_fields":[],"needs_authentication_confirmation":false,"has_passkeys":false,"application":{"uid":"TTN7EhdzFTZl1M6T1b1O-zH7c-FCzHhrwqL7TvC-xw8","name":"Expedita libero esse suscipit.","description":"That's the problem with life, either you know what you want and you don't get what you want, or you get what you want and then you don't know what you want","scopes":[{"scope":"openid","name":"ID"},{"scope":"profile","name":"Profil"},{"scope":"email","name":"Deine E-Mail-Adresse"}],"logo_url":"/assets/default_app_icon.svg","connect_uri":"https://example.com"}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"user_updates":{"type":"object","properties":{"first_name":{"type":"string"},"last_name":{"type":"string"},"custom_attributes":{"type":"object","additionalProperties":true}}}}}}}}}},"/api/sdk/v1/oauth/{id}/connect":{"post":{"summary":"connect to OAuth application","tags":["SDK OAuth"],"description":"Get a OneTimeLoginToken to connect to the OAuth application. Requires consent and all required fields. If the application requires authentication confirmation, a password or passkey credential must be provided.","security":[{"sdk_token":[]}],"parameters":[{"name":"X-ID-Token","in":"header","required":true,"description":"ID Token for user authentication","schema":{"type":"string"}},{"name":"id","in":"path","required":true,"description":"UID of the OAuth application","schema":{"type":"string"}}],"responses":{"201":{"description":"successful","content":{"application/json":{"example":{"token":"0cf17097-86ea-4373-a428-2b0fdc75f8d3"},"schema":{"type":"object","properties":{"token":{"type":"string","description":"OneTimeLoginToken for connecting"}}}}}},"401":{"description":"authentication failed","content":{"application/json":{"example":{"error_identifier":"account_locked"},"schema":{"type":"object","properties":{"error_identifier":{"type":"string"}}}}}},"422":{"description":"consent not granted","content":{"application/json":{"example":{"error_identifier":"consent_not_granted","has_consent":false,"required_fields":[],"missing_fields":[],"needs_authentication_confirmation":false,"has_passkeys":false,"application":{"uid":"nwIq4JbSQu95rhYN1WGkjQKpjBo1oiHOw1TeeavP_iY","name":"Officia culpa deleniti magnam.","description":"Dead on the inside, dead on the outside","scopes":[{"scope":"openid","name":"ID"},{"scope":"profile","name":"Profil"},{"scope":"email","name":"Deine E-Mail-Adresse"}],"logo_url":"/assets/default_app_icon.svg","connect_uri":"https://example.com"}},"schema":{"type":"object","properties":{"error_identifier":{"type":"string"},"error_details":{"type":"object"}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"User password for re-authentication"},"passkey_credential":{"type":"object","description":"WebAuthn passkey credential for re-authentication"},"scopes":{"type":"array","items":{"type":"string"},"description":"Custom scopes"},"redirect_uri":{"type":"string","description":"Custom redirect URI"}}}}}}}},"/api/sdk/v1/oauth/{oauth_id}/passkey_challenge":{"post":{"summary":"create passkey challenge","tags":["SDK OAuth"],"description":"Generate a WebAuthn challenge for passkey-based re-authentication during OAuth connect","security":[{"sdk_token":[]}],"parameters":[{"name":"X-ID-Token","in":"header","required":true,"description":"ID Token for user authentication","schema":{"type":"string"}},{"name":"oauth_id","in":"path","required":true,"description":"UID of the OAuth application","schema":{"type":"string"}}],"responses":{"200":{"description":"challenge created","content":{"application/json":{"example":{"challenge":"BPPgsvAYy0P8Dc8CoMkQ-f0nWZGQDLIxqEa5a_p-msQ","timeout":120000,"extensions":{},"allowCredentials":[{"type":"public-key","id":"b402f79e-30ce-4c94-b4c6-f7443ce26b4b"}],"rpId":"10lind.example","userVerification":"required"},"schema":{"type":"object","properties":{"challenge":{"type":"string"},"timeout":{"type":"integer"},"allowCredentials":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"id":{"type":"string"}}}},"userVerification":{"type":"string"}}}}}},"422":{"description":"no passkeys registered","content":{"application/json":{"example":{"error_identifier":"no_passkeys_registered"},"schema":{"type":"object","properties":{"error_identifier":{"type":"string"}}}}}}}}},"/api/sdk/v1/sign_ins/auth/omniauth/{provider}":{"get":{"summary":"start omniauth sign in","tags":["SDK Omniauth SignIns"],"security":[],"parameters":[{"name":"User-Agent","in":"header","schema":{"type":"string"}},{"name":"provider","in":"path","required":true,"description":"The authentication provider (e.g., google, facebook, linkedin)","schema":{"type":"string"}},{"name":"sdk_redirect_uri","in":"query","required":true,"description":"The URI to redirect to after the authentication process is complete.","schema":{"type":"string"}}],"responses":{"302":{"description":"found"}}}},"/api/sdk/v1/sign_ins/{sign_in_id}/password_reset/send":{"post":{"summary":"send password reset email","tags":["SDK Password Resets"],"description":"No sign-in session found with the provided SID","security":[{"sdk_token":[]}],"parameters":[{"name":"sign_in_id","in":"path","description":"The SID (session ID) of the sign-in session","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"password reset email sent"},"422":{"description":"invalid return_to URL","content":{"application/json":{"schema":{"type":"object","properties":{"error_identifier":{"type":"string","example":"invalid_return_to"}}}}}},"404":{"description":"sign-in not found","content":{"application/json":{"schema":{"type":"object","properties":{"error_identifier":{"type":"string","example":"sign_in_not_found"}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"return_to":{"type":"string","format":"uri","description":"URL to redirect user after password reset (must be in allowed redirect URIs)"}},"required":["return_to"]}}}}}},"/api/sdk/v1/sign_ins/{sign_in_id}/password_reset":{"get":{"summary":"validate password reset token","tags":["SDK Password Resets"],"description":"The reset token has expired","security":[{"sdk_token":[]}],"parameters":[{"name":"sign_in_id","in":"path","description":"The SID (session ID) of the sign-in session","required":true,"schema":{"type":"string"}},{"name":"token","in":"query","required":true,"description":"Password reset token from the email link","schema":{"type":"string"}}],"responses":{"200":{"description":"token is valid"},"404":{"description":"token invalid","content":{"application/json":{"schema":{"type":"object","properties":{"error_identifier":{"type":"string","example":"invalid_reset_token"}}}}}},"422":{"description":"token expired","content":{"application/json":{"schema":{"type":"object","properties":{"error_identifier":{"type":"string","example":"reset_token_expired"}}}}}}}},"patch":{"summary":"reset password with token","tags":["SDK Password Resets"],"description":"The new password does not meet requirements or confirmation does not match","security":[{"sdk_token":[]}],"parameters":[{"name":"sign_in_id","in":"path","description":"The SID (session ID) of the sign-in session","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"password reset successful"},"404":{"description":"token invalid","content":{"application/json":{"schema":{"type":"object","properties":{"error_identifier":{"type":"string","example":"invalid_reset_token"}}}}}},"422":{"description":"invalid password","content":{"application/json":{"schema":{"type":"object","properties":{"error_identifier":{"type":"string","example":"invalid_password"},"error_details":{"type":"object","description":"Detailed validation errors","additionalProperties":{"type":"array","items":{"type":"string"}}}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Password reset token from email"},"password":{"type":"string","description":"New password"},"password_confirmation":{"type":"string","description":"Password confirmation (must match password)"}},"required":["token","password","password_confirmation"]}}}}}},"/api/sdk/v1/profile":{"get":{"summary":"get user profile","tags":["SDK Profile"],"description":"Retrieves the authenticated user's profile information.\n\n**Required Headers:**\n- `Authorization`: Bearer token with SDK API key\n- `X-ID-Token`: JWT ID token obtained from authentication\n\n**Localization:**\nPass `?lang=xx` query parameter to get localized field labels and error messages.\nSupported locales depend on brand configuration.\n","security":[{"sdk_token":[]}],"parameters":[{"name":"X-ID-Token","in":"header","required":true,"description":"JWT ID token obtained from authentication endpoint","schema":{"type":"string"}},{"name":"lang","in":"query","required":false,"description":"Locale for response (e.g., \"en\", \"de\")","schema":{"type":"string"}}],"responses":{"200":{"description":"successful","content":{"application/json":{"schema":{"$ref":"#/components/schemas/profile"}}}},"401":{"description":"unauthorized"},"404":{"description":"not found"}}},"patch":{"summary":"update profile","tags":["SDK Profile"],"security":[{"sdk_token":[]}],"parameters":[{"name":"X-ID-Token","in":"header","required":true,"description":"ID Token for user authentication","schema":{"type":"string"}}],"responses":{"200":{"description":"successful with partial validation - ignores required field not in request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/update_profile"}}}},"401":{"description":"unauthorized"},"404":{"description":"not found"},"422":{"description":"fails without partial validation when required field is too short"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"brand":{"type":"string","example":"mybrand","description":"Change the user in a brand context, in a multi brand scenario. If this paremeter is not supplied brand will\n        be determined by host and if that is not possible it will fall back to default brand.\n        This determines for example, which branding is used for outgoing emails. !!"},"first_name":{"type":["string","null"],"example":"Herrman"},"last_name":{"type":["string","null"],"example":"Mueller"},"salutation":{"type":["string","null"],"example":"mr","enum":["mr","mrs","mx",null]},"phone_number":{"type":["string","null"],"example":"+49123456789"},"date_of_birth":{"type":["string","null"],"format":"date","example":"1991-06-10"},"company_name":{"type":["string","null"],"example":"Unidy"},"address_line_1":{"type":["string","null"],"example":"Jakob-Kaiser-Str 70a"},"address_line_2":{"type":["string","null"],"example":"5 OG"},"city":{"type":["string","null"],"example":"Hamburg"},"postal_code":{"type":["string","null"],"example":"AA0A 0AA"},"country_code":{"type":["string","null"],"example":"GB","description":"codes follow ISO 3166"},"preferred_language":{"type":["string","null"],"example":"de"}},"required":[]}}}}}},"/api/sdk/v1/registration/internal_matching/config":{"get":{"summary":"get internal matching config","tags":["SDK Registration Internal Matching"],"description":"Returns the internal matching plugin configuration for the current brand.","security":[{"sdk_token":[]}],"responses":{"200":{"description":"success","content":{"application/json":{"example":{"enabled":true,"matching_attribute":{"name":"unidy_id","label":"UNIDY ID","format":"string"},"additional_fields":[]}}}}}}},"/api/sdk/v1/registration/internal_matching/check":{"post":{"summary":"check for matching user","tags":["SDK Registration Internal Matching"],"description":"Checks if a registering user matches an existing user based on the configured matching attribute.\nIf a match is found, returns a masked preview of the matched user.\n","security":[{"sdk_token":[]}],"parameters":[],"responses":{"200":{"description":"match found","content":{"application/json":{"example":{"matching_status":"found","matching_user_id":1,"matched_user_preview":{"email_masked":"p****************************r@example.com","created_at":"2023-01-15T10:30:00.000Z"}}}}},"422":{"description":"no match found","content":{"application/json":{"example":{"error_identifier":"internal_matching_match_not_found"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/internal_matching_check"}}}}}},"/api/sdk/v1/registration/internal_matching/confirm":{"post":{"summary":"confirm matching user","tags":["SDK Registration Internal Matching"],"description":"Confirms that the registering user wants to take over the matched existing account.\nThe matching_user_id must match the user found during the check step.\n","security":[{"sdk_token":[]}],"parameters":[],"responses":{"200":{"description":"confirmed","content":{"application/json":{"example":{"rid":"ExzTKAorZsyV9UQ7VmntygTk","email":"test@example.com","newsletter_preferences":{"_clear":true},"registration_profile_data":{"source":"factory"},"social_provider":null,"status":{"initialized":true},"created_at":"2023-01-15T10:30:00.000Z","updated_at":"2023-01-15T10:30:00.000Z","expires_at":"2023-01-15T10:30:00.000Z","has_password":null,"expired":false,"can_finalize":false,"has_passkey":false,"email_verified":false,"matching_status":"confirmed","matching_user_preview":{"email_masked":"h***********a@example.com","created_at":"2023-01-15T10:30:00.000Z"}}}}},"403":{"description":"user mismatch","content":{"application/json":{"example":{"error_identifier":"matching_user_mismatch"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/internal_matching_confirm"}}}}}},"/api/sdk/v1/registration/internal_matching/skip":{"post":{"summary":"skip matching","tags":["SDK Registration Internal Matching"],"description":"Skips the internal matching step and continues registration without account takeover.","security":[{"sdk_token":[]}],"parameters":[],"responses":{"200":{"description":"skipped","content":{"application/json":{"example":{"rid":"AzqNSXeuYTcnk635msxDqZiF","email":"test@example.com","newsletter_preferences":{"_clear":true},"registration_profile_data":{"source":"factory"},"social_provider":null,"status":{"initialized":true},"created_at":"2023-01-15T10:30:00.000Z","updated_at":"2023-01-15T10:30:00.000Z","expires_at":"2023-01-15T10:30:00.000Z","has_password":null,"expired":false,"can_finalize":false,"has_passkey":false,"email_verified":false,"matching_status":"skipped","matching_user_preview":null}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"rid":{"type":"string","description":"Registration flow ID"}},"required":["rid"]}}}}}},"/api/sdk/v1/registration/passkey/new":{"get":{"summary":"get passkey creation options","tags":["SDK Registration Passkeys"],"description":"Returns WebAuthn creation options for registering a passkey during the registration flow.\nThe registration flow must have an email set before requesting passkey options.\nThe challenge is stored in an encrypted cookie for subsequent verification.\n","security":[{"sdk_token":[]}],"parameters":[{"name":"rid","in":"query","required":true,"description":"Registration flow ID","schema":{"type":"string"}}],"responses":{"200":{"description":"success - returns WebAuthn creation options","content":{"application/json":{"example":{"challenge":"iLAtWE-4mpvBYutn8ySboEapdEGkKk9i0gpAWs3Vf18","timeout":120000,"extensions":{},"rp":{"name":"unidy","id":"example.com"},"user":{"name":"test@example.com","id":"-9wsr_L7FKvMv3whBOsLNelbG3a8jf2TUGavX4qJ0K0tu-DbKZRWNypaFTzYtb-c45cYZFAb1-gi3S4q6GVKLA","displayName":"test@example.com"},"pubKeyCredParams":[{"type":"public-key","alg":-7},{"type":"public-key","alg":-257},{"type":"public-key","alg":-37}],"authenticatorSelection":{"authenticatorAttachment":"platform","userVerification":"required"},"excludeCredentials":[]}}}},"422":{"description":"unprocessable entity - expired","content":{"application/json":{"example":{"error_identifier":"registration_expired"}}}},"404":{"description":"not found","content":{"application/json":{"example":{"error_identifier":"registration_not_found"}}}}}}},"/api/sdk/v1/registration/passkey":{"post":{"summary":"verify and store passkey credential","tags":["SDK Registration Passkeys"],"description":"Verifies a WebAuthn credential response and stores the passkey data on the registration flow.\nRequires a prior call to `GET /registration/passkey/new` to obtain the creation options\nand set the challenge cookie.\n\n**Flow:**\n1. Call `GET /registration/passkey/new` to get WebAuthn creation options\n2. Use the options to create a credential in the browser via `navigator.credentials.create()`\n3. Send the credential response to this endpoint along with an optional passkey name\n","security":[{"sdk_token":[]}],"parameters":[{"name":"rid","in":"query","required":true,"description":"Registration flow ID","schema":{"type":"string"}}],"responses":{"400":{"description":"bad request - missing challenge or credential","content":{"application/json":{"example":{"error_identifier":"bad_request"}}}},"404":{"description":"not found","content":{"application/json":{"example":{"error_identifier":"registration_not_found"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"publicKeyCredential":{"type":"string","description":"JSON-encoded WebAuthn credential response from navigator.credentials.create()"},"passkey_name":{"type":"string","description":"Optional human-readable name for the passkey (defaults to \"Passkey\")"}},"required":["publicKeyCredential"]}}}}},"delete":{"summary":"clear passkey from registration flow","tags":["SDK Registration Passkeys"],"description":"Removes the stored passkey data from the registration flow, allowing the user\nto choose a different authentication method or re-register a passkey.\n","security":[{"sdk_token":[]}],"parameters":[{"name":"rid","in":"query","required":true,"description":"Registration flow ID","schema":{"type":"string"}}],"responses":{"200":{"description":"success","content":{"application/json":{"example":{"rid":"R8KmnpYoaWJX9dxXLd4LnpCk","email":"test@example.com","newsletter_preferences":{"_clear":true},"registration_profile_data":{"source":"factory"},"social_provider":null,"status":{"initialized":true},"created_at":"2023-01-15T10:30:00.000Z","updated_at":"2023-01-15T10:30:00.000Z","expires_at":"2023-01-15T10:30:00.000Z","has_password":null,"expired":false,"can_finalize":false,"has_passkey":false,"email_verified":false,"matching_status":null,"matching_user_preview":null}}}},"404":{"description":"not found","content":{"application/json":{"example":{"error_identifier":"registration_not_found"}}}}}}},"/api/sdk/v1/registration":{"get":{"summary":"show registration","tags":["SDK Registrations"],"security":[{"sdk_token":[]}],"parameters":[{"name":"rid","in":"query","required":false,"description":"Registration flow ID. If not provided, will use registration_rid cookie.","schema":{"type":"string"}}],"responses":{"200":{"description":"success","content":{"application/json":{"example":{"rid":"mpyoDLq5zidAY5z8TDcGeQhp","email":"test@example.com","newsletter_preferences":{"_clear":true},"registration_profile_data":{"source":"factory"},"social_provider":null,"status":{"initialized":true},"created_at":"2023-01-15T10:30:00.000Z","updated_at":"2023-01-15T10:30:00.000Z","expires_at":"2023-01-15T10:30:00.000Z","has_password":null,"expired":false,"can_finalize":false,"has_passkey":false,"email_verified":false,"matching_status":null,"matching_user_preview":null}}}},"404":{"description":"not found","content":{"application/json":{"example":{"error_identifier":"registration_not_found"}}}}}},"post":{"summary":"create registration","tags":["SDK Registrations"],"security":[{"sdk_token":[]}],"parameters":[{"name":"User-Agent","in":"header","required":false,"schema":{"type":"string"}}],"responses":{"201":{"description":"created","content":{"application/json":{"example":{"rid":"98zeX5yZXpKwRUGGZYUoyNBY","email":null,"newsletter_preferences":{},"registration_profile_data":{},"social_provider":null,"status":{},"created_at":"2023-01-15T10:30:00.000Z","updated_at":"2023-01-15T10:30:00.000Z","expires_at":"2023-01-15T10:30:00.000Z","has_password":null,"expired":false,"can_finalize":false,"has_passkey":false,"email_verified":false,"matching_status":null,"matching_user_preview":null}}}},"422":{"description":"unprocessable entity","content":{"application/json":{"example":{"error_identifier":"unprocessable_content","error_details":{"errors":["The property '#/' did not contain a required property of 'registration_url'"]}}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/create_registration"}}}}},"patch":{"summary":"update registration","tags":["SDK Registrations"],"security":[{"sdk_token":[]}],"parameters":[{"name":"rid","in":"query","required":false,"description":"Registration flow ID. If not provided, will use registration_rid cookie.","schema":{"type":"string"}}],"responses":{"200":{"description":"success","content":{"application/json":{"example":{"rid":"22e6i5RHL8fTsSFiZ13wBHzB","email":"elois@hessel.example","newsletter_preferences":{"_clear":true},"registration_profile_data":{"source":"factory"},"social_provider":null,"status":{"initialized":true},"created_at":"2023-01-15T10:30:00.000Z","updated_at":"2023-01-15T10:30:00.000Z","expires_at":"2023-01-15T10:30:00.000Z","has_password":null,"expired":false,"can_finalize":false,"has_passkey":false,"email_verified":false,"matching_status":null,"matching_user_preview":null}}}},"404":{"description":"not found","content":{"application/json":{"example":{"error_identifier":"registration_not_found"}}}},"422":{"description":"unprocessable entity - invalid record","content":{"application/json":{"example":{"error_identifier":"email_cannot_be_changed"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/update_registration"}}}}},"delete":{"summary":"destroy registration","tags":["SDK Registrations"],"security":[{"sdk_token":[]}],"parameters":[{"name":"rid","in":"query","required":false,"description":"Registration flow ID. If not provided, will use registration_rid cookie.","schema":{"type":"string"}}],"responses":{"200":{"description":"success","content":{"application/json":{"example":{"success":true}}}},"404":{"description":"not found","content":{"application/json":{"example":{"error_identifier":"registration_not_found"}}}}}}},"/api/sdk/v1/registration/finalize":{"post":{"summary":"finalize registration","tags":["SDK Registrations"],"security":[{"sdk_token":[]}],"parameters":[{"name":"rid","in":"query","required":false,"description":"Registration flow ID. If not provided, will use registration_rid cookie.","schema":{"type":"string"}}],"responses":{"200":{"description":"success","content":{"application/json":{"example":{"rid":"nmBwGAucBJh6dea6RqscgtQZ","email":"test@example.com","newsletter_preferences":{"_clear":true},"registration_profile_data":{"source":"factory"},"social_provider":null,"status":{"initialized":true},"created_at":"2023-01-15T10:30:00.000Z","updated_at":"2023-01-15T10:30:00.000Z","expires_at":"2023-01-15T10:30:00.000Z","has_password":true,"expired":false,"can_finalize":true,"has_passkey":false,"email_verified":false,"matching_status":null,"matching_user_preview":null}}}},"404":{"description":"not found","content":{"application/json":{"example":{"error_identifier":"registration_not_found"}}}},"422":{"description":"unprocessable entity - expired","content":{"application/json":{"example":{"error_identifier":"registration_expired","meta":{"email_missing":true,"auth_method_missing":true}}}}}}}},"/api/sdk/v1/registration/social":{"get":{"summary":"social registration","tags":["SDK Registrations"],"security":[{"sdk_token":[]}],"parameters":[{"name":"User-Agent","in":"header","required":false,"schema":{"type":"string"}},{"name":"provider","in":"query","required":true,"description":"OAuth provider name (e.g., google_oauth2, google)","schema":{"type":"string"}},{"name":"redirect_uri","in":"query","required":false,"description":"URI to redirect to after OAuth callback. Defaults to referer or /","schema":{"type":"string"}}],"responses":{"302":{"description":"redirect"},"422":{"description":"unprocessable entity","content":{"application/json":{"example":{"error":"invalid_provider"}}}}}}},"/api/sdk/v1/registration/email_verification/send_code":{"post":{"summary":"send email verification code","tags":["SDK Registrations"],"security":[{"sdk_token":[]}],"parameters":[{"name":"rid","in":"query","required":false,"description":"Registration flow ID. If not provided, will use registration_rid cookie.","schema":{"type":"string"}}],"responses":{"200":{"description":"success","content":{"application/json":{"example":{"success":true,"enable_resend_after":29000}}}},"404":{"description":"not found","content":{"application/json":{"example":{"error_identifier":"registration_not_found"}}}},"422":{"description":"unprocessable entity - no email","content":{"application/json":{"example":{"error_identifier":"email_required"}}}}}}},"/api/sdk/v1/registration/email_verification/verify":{"post":{"summary":"verify email code","tags":["SDK Registrations"],"security":[{"sdk_token":[]}],"parameters":[{"name":"rid","in":"query","required":false,"description":"Registration flow ID. If not provided, will use registration_rid cookie.","schema":{"type":"string"}}],"responses":{"200":{"description":"success","content":{"application/json":{"example":{"rid":"bukixQT5oNGpU4oQRfd9wtkx","email":"test@example.com","newsletter_preferences":{"_clear":true},"registration_profile_data":{"source":"factory"},"social_provider":null,"status":{"initialized":true,"email_verified":true},"created_at":"2023-01-15T10:30:00.000Z","updated_at":"2023-01-15T10:30:00.000Z","expires_at":"2023-01-15T10:30:00.000Z","has_password":null,"expired":false,"can_finalize":false,"has_passkey":false,"email_verified":true,"matching_status":null,"matching_user_preview":null}}}},"404":{"description":"not found","content":{"application/json":{"example":{"error_identifier":"registration_not_found"}}}},"422":{"description":"unprocessable entity - invalid code","content":{"application/json":{"example":{"error_identifier":"unprocessable_content","error_details":{"errors":["The property '#/code' value \"invalid\" did not match the regex '^\\d{4}$'"]}}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/verify_email"}}}}}},"/api/sdk/v1/registration/resume":{"post":{"summary":"send resume link","tags":["SDK Registrations"],"security":[{"sdk_token":[]}],"parameters":[],"responses":{"200":{"description":"success","content":{"application/json":{"example":{"success":true}}}},"404":{"description":"not found - no registration flow for email","content":{"application/json":{"example":{"error_identifier":"registration_flow_not_found"}}}},"422":{"description":"unprocessable entity - email required","content":{"application/json":{"example":{"error_identifier":"email_required"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/send_resume_link"}}}}}},"/api/sdk/v1/registration/resume/{token}":{"get":{"summary":"process resume link","tags":["SDK Registrations"],"parameters":[{"name":"token","in":"path","required":true,"description":"Signed token from resume link email","schema":{"type":"string"}}],"responses":{"302":{"description":"redirect with error - invalid token"}}}},"/api/sdk/v1/services":{"get":{"summary":"list connected services","tags":["SDK Services"],"description":"Returns a list of services (OAuth applications) the authenticated user is connected to.","security":[{"sdk_token":[]}],"parameters":[{"name":"X-ID-Token","in":"header","required":true,"description":"JWT ID token obtained from authentication endpoint","schema":{"type":"string"}}],"responses":{"200":{"description":"successful with no connections","content":{"application/json":{"example":[{"id":"IzdNjzaYMDkYUoprg2Q9peX4KdW6aQ4hza3l1lVbJB8","name":"Reiciendis aliquam non molestiae.","description":"Dead on the inside, dead on the outside","logo_url":null,"connected_at":"2023-01-15T10:30:00.000Z"}]}}},"401":{"description":"unauthorized - invalid id token"},"404":{"description":"not found - user does not exist"}}}},"/api/sdk/v1/sign_ins":{"post":{"summary":"create sign_in","tags":["SDK SignIns"],"security":[{"sdk_token":[]}],"description":"Creates a new sign-in session for the given email address.","parameters":[{"name":"User-Agent","in":"header","schema":{"type":"string"}}],"responses":{"201":{"description":"created"},"401":{"description":"account locked","content":{"application/json":{"schema":{"type":"object","properties":{"error_identifier":{"type":"string","example":"account_locked"}}}}}},"404":{"description":"not found"},"422":{"description":"account unconfirmed","content":{"application/json":{"schema":{"type":"object","properties":{"error_identifier":{"type":"string","example":"account_unconfirmed"}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email"},"password":{"type":"string"},"sendMagicCode":{"type":"boolean"}},"required":["email"]}}}}}},"/api/sdk/v1/sign_ins/{id}/sign_out":{"post":{"summary":"Sign out","tags":["SDK SignIns"],"security":[{"sdk_token":[]}],"parameters":[{"name":"User-Agent","in":"header","schema":{"type":"string"}},{"name":"X-ID-Token","in":"header","description":"The JWT ID token","schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Signed out successfully"},"401":{"description":"Unauthorized"},"404":{"description":"Sign in not found"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"global_logout":{"type":"boolean","example":false,"nullable":true}}}}}}}},"/api/sdk/v1/sign_ins/{id}/update_required_fields":{"patch":{"summary":"Update required fields","tags":["SDK SignIns"],"security":[{"sdk_token":[]}],"parameters":[{"name":"User-Agent","in":"header","schema":{"type":"string"}},{"name":"id","in":"path","description":"Sign-in session ID (sid)","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Required fields updated successfully"},"404":{"description":"Sign in not found"},"424":{"description":"Missing required fields"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"user":{"type":"object","properties":{"first_name":{"type":"string","example":"John"},"last_name":{"type":"string","example":"Doe"}}}},"required":["user"]}}}}}},"/api/sdk/v1/sign_ins/signed_in":{"get":{"summary":"Signed In","tags":["SDK SignIns"],"security":[{"sdk_token":[]}],"parameters":[{"name":"User-Agent","in":"header","schema":{"type":"string"}}],"responses":{"201":{"description":"Sign in created","content":{"application/json":{"schema":{"type":"object","properties":{"jwt":{"type":"string"}},"required":["jwt"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error_identifier":{"type":"string"},"error_details":{"type":"object"},"meta":{"type":"object"}},"required":["error_identifier"]}}}}}}},"/api/sdk/v1/subscriptions":{"get":{"summary":"list subscriptions","tags":["SDK Subscriptions"],"security":[{"sdk_token":[]}],"parameters":[{"name":"X-ID-Token","in":"header","required":true,"description":"ID Token for user authentication","schema":{"type":"string"}},{"name":"page","in":"query","required":false,"description":"Page number","schema":{"type":"integer"}},{"name":"limit","in":"query","required":false,"description":"Items per page (max 250)","schema":{"type":"integer"}},{"name":"order_by","in":"query","required":false,"description":"Field to order by (starts_at, ends_at, title, created_at)","schema":{"type":"string"}},{"name":"order_direction","in":"query","required":false,"enum":["asc","desc"],"description":"Order direction:\n * `asc` \n * `desc` \n ","schema":{"type":"string"}},{"name":"service_id","in":"query","required":false,"description":"Filter by service ID","schema":{"type":"integer"}},{"name":"state","in":"query","required":false,"description":"Filter by state","schema":{"type":"string"}},{"name":"payment_state","in":"query","required":false,"description":"Filter by payment state","schema":{"type":"string"}},{"name":"venue","in":"query","required":false,"description":"Filter by venue","schema":{"type":"string"}},{"name":"text","in":"query","required":false,"description":"Filter by text","schema":{"type":"string"}},{"name":"title","in":"query","required":false,"description":"Filter by title","schema":{"type":"string"}},{"name":"reference","in":"query","required":false,"description":"Filter by reference","schema":{"type":"string"}},{"name":"starts_at","in":"query","required":false,"description":"Filter by starts_at (ISO8601)","schema":{"type":"string"}},{"name":"ends_at","in":"query","required":false,"description":"Filter by ends_at (ISO8601)","schema":{"type":"string"}},{"name":"subscription_category_id","in":"query","required":false,"description":"Filter by subscription category ID","schema":{"type":"string"}},{"name":"next_payment_at","in":"query","required":false,"description":"Filter by next_payment_at (ISO8601)","schema":{"type":"string"}}],"responses":{"200":{"description":"successful with filtering","content":{"application/json":{"example":{"meta":{"count":1,"page":1,"limit":50,"last":1,"prev":null,"next":null},"results":[{"id":"b402f79e-30ce-4c94-b4c6-f7443ce26b4b","title":"Unique Test Subscription","text":"factory test text which descirbes the subscription","payment_frequency":"yearly","metadata":null,"wallet_export":null,"state":"active","reference":"987654321","payment_state":"payed","currency":"EUR","button_cta_url":null,"subscription_category_id":"b402f79e-30ce-4c94-b4c6-f7443ce26b4b","created_at":"2023-01-15T10:30:00.000Z","updated_at":"2023-01-15T10:30:00.000Z","starts_at":"2023-01-15T10:30:00.000Z","ends_at":"2023-01-15T10:30:00.000Z","next_payment_at":"2023-01-15T10:30:00.000Z","price":100.99,"exportable_to_wallet":false,"user_id":"b402f79e-30ce-4c94-b4c6-f7443ce26b4b"}]}}}},"401":{"description":"unauthorized"}}}},"/api/sdk/v1/subscriptions/{id}":{"get":{"summary":"show subscription","tags":["SDK Subscriptions"],"security":[{"sdk_token":[]}],"parameters":[{"name":"X-ID-Token","in":"header","required":true,"description":"ID Token for user authentication","schema":{"type":"string"}},{"name":"id","in":"path","description":"id of the subscription","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"successful","content":{"application/json":{"example":{"id":"b402f79e-30ce-4c94-b4c6-f7443ce26b4b","title":"factory title","text":"factory test text which descirbes the subscription","payment_frequency":"yearly","metadata":null,"wallet_export":null,"state":"active","reference":"987654321","payment_state":"payed","currency":"EUR","button_cta_url":null,"subscription_category_id":"b402f79e-30ce-4c94-b4c6-f7443ce26b4b","created_at":"2023-01-15T10:30:00.000Z","updated_at":"2023-01-15T10:30:00.000Z","starts_at":"2023-01-15T10:30:00.000Z","ends_at":"2023-01-15T10:30:00.000Z","next_payment_at":"2023-01-15T10:30:00.000Z","price":100.99,"exportable_to_wallet":false,"user_id":"b402f79e-30ce-4c94-b4c6-f7443ce26b4b"}}}},"401":{"description":"unauthorized"},"404":{"description":"not found"}}}},"/api/sdk/v1/tickets/{ticket_id}/exports/pdf":{"get":{"summary":"export ticket as pdf","tags":["SDK Tickets"],"security":[{"sdk_token":[]}],"parameters":[{"name":"X-ID-Token","in":"header","required":true,"description":"ID Token for user authentication","schema":{"type":"string"}},{"name":"ticket_id","in":"path","description":"id of the ticket","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"successful","content":{"application/pdf":{"schema":{"type":"string","format":"binary","description":"PDF file"}}}},"401":{"description":"unauthorized"},"404":{"description":"not found"},"403":{"description":"forbidden - ticket not exportable"}}}},"/api/sdk/v1/tickets/{ticket_id}/exports/pkpass":{"get":{"summary":"export ticket as pkpass","tags":["SDK Tickets"],"security":[{"sdk_token":[]}],"parameters":[{"name":"X-ID-Token","in":"header","required":true,"description":"ID Token for user authentication","schema":{"type":"string"}},{"name":"ticket_id","in":"path","description":"id of the ticket","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"successful","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary","description":"Apple Wallet pass file (.pkpass)"}}}},"401":{"description":"unauthorized"},"404":{"description":"not found"},"403":{"description":"forbidden - ticket not exportable"}}}},"/api/sdk/v1/subscriptions/{subscription_id}/exports/pdf":{"get":{"summary":"export subscription as pdf","tags":["SDK Subscriptions"],"security":[{"sdk_token":[]}],"parameters":[{"name":"X-ID-Token","in":"header","required":true,"description":"ID Token for user authentication","schema":{"type":"string"}},{"name":"subscription_id","in":"path","description":"id of the subscription","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"successful","content":{"application/pdf":{"schema":{"type":"string","format":"binary","description":"PDF file"}}}},"401":{"description":"unauthorized"},"404":{"description":"not found"},"403":{"description":"forbidden - subscription not exportable"}}}},"/api/sdk/v1/subscriptions/{subscription_id}/exports/pkpass":{"get":{"summary":"export subscription as pkpass","tags":["SDK Subscriptions"],"security":[{"sdk_token":[]}],"parameters":[{"name":"X-ID-Token","in":"header","required":true,"description":"ID Token for user authentication","schema":{"type":"string"}},{"name":"subscription_id","in":"path","description":"id of the subscription","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"successful","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary","description":"Apple Wallet pass file (.pkpass)"}}}},"401":{"description":"unauthorized"},"404":{"description":"not found"},"403":{"description":"forbidden - subscription not exportable"}}}},"/api/sdk/v1/tickets/{ticket_id}/export_link":{"post":{"summary":"generate export link for ticket","tags":["SDK Tickets"],"security":[{"sdk_token":[]}],"parameters":[{"name":"X-ID-Token","in":"header","required":true,"description":"ID Token for user authentication","schema":{"type":"string"}},{"name":"ticket_id","in":"path","description":"id of the ticket","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"created","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Signed URL for downloading the export"},"expires_in":{"type":"integer","description":"Seconds until the URL expires"}},"required":["url","expires_in"]}}}},"401":{"description":"unauthorized"},"404":{"description":"not found"},"422":{"description":"invalid format"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"format":{"type":"string","enum":["pdf","pkpass"],"description":"Export format"}},"required":["format"]}}}}}},"/api/sdk/v1/subscriptions/{subscription_id}/export_link":{"post":{"summary":"generate export link for subscription","tags":["SDK Subscriptions"],"security":[{"sdk_token":[]}],"parameters":[{"name":"X-ID-Token","in":"header","required":true,"description":"ID Token for user authentication","schema":{"type":"string"}},{"name":"subscription_id","in":"path","description":"id of the subscription","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"created","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Signed URL for downloading the export"},"expires_in":{"type":"integer","description":"Seconds until the URL expires"}},"required":["url","expires_in"]}}}},"404":{"description":"not found"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"format":{"type":"string","enum":["pdf","pkpass"],"description":"Export format"}},"required":["format"]}}}}}},"/api/sdk/v1/ticketables/{token}":{"get":{"summary":"download export via signed token","tags":["SDK Exports"],"parameters":[{"name":"token","in":"path","description":"Signed JWT token for export","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"successful - PKPass","content":{"application/pdf":{"schema":{"type":"string","format":"binary","description":"PDF file"}},"application/octet-stream":{"schema":{"type":"string","format":"binary","description":"Apple Wallet pass file (.pkpass)"}}}},"401":{"description":"invalid or expired token"}}}},"/api/sdk/v1/tickets":{"get":{"summary":"list tickets","tags":["SDK Tickets"],"security":[{"sdk_token":[]}],"parameters":[{"name":"X-ID-Token","in":"header","required":true,"description":"ID Token for user authentication","schema":{"type":"string"}},{"name":"page","in":"query","required":false,"description":"Page number","schema":{"type":"integer"}},{"name":"limit","in":"query","required":false,"description":"Items per page (max 250)","schema":{"type":"integer"}},{"name":"order_by","in":"query","required":false,"description":"Field to order by (starts_at, ends_at, reference, created_at)","schema":{"type":"string"}},{"name":"order_direction","in":"query","required":false,"enum":["asc","desc"],"description":"Order direction:\n * `asc` \n * `desc` \n ","schema":{"type":"string"}},{"name":"service_id","in":"query","required":false,"description":"Filter by service ID","schema":{"type":"integer"}},{"name":"state","in":"query","required":false,"description":"Filter by state","schema":{"type":"string"}},{"name":"payment_state","in":"query","required":false,"description":"Filter by payment state","schema":{"type":"string"}},{"name":"venue","in":"query","required":false,"description":"Filter by venue","schema":{"type":"string"}},{"name":"text","in":"query","required":false,"description":"Filter by text","schema":{"type":"string"}},{"name":"title","in":"query","required":false,"description":"Filter by title","schema":{"type":"string"}},{"name":"reference","in":"query","required":false,"description":"Filter by reference","schema":{"type":"string"}},{"name":"starts_at","in":"query","required":false,"description":"Filter by starts_at (ISO8601)","schema":{"type":"string"}},{"name":"ends_at","in":"query","required":false,"description":"Filter by ends_at (ISO8601)","schema":{"type":"string"}},{"name":"ticket_category_id","in":"query","required":false,"description":"Filter by ticket category ID","schema":{"type":"string"}}],"responses":{"200":{"description":"successful with filtering","content":{"application/json":{"example":{"meta":{"count":1,"page":1,"limit":50,"last":1,"prev":null,"next":null},"results":[{"id":"b402f79e-30ce-4c94-b4c6-f7443ce26b4b","title":"Unique Test Ticket","text":"factory test text which descirbes the subscription","reference":"987654321","metadata":null,"wallet_export":null,"state":"active","payment_state":"payed","button_cta_url":"https://google.de","info_banner":null,"seating":"factory seating","venue":"factory venue","currency":"EUR","ticket_category_id":"b402f79e-30ce-4c94-b4c6-f7443ce26b4b","starts_at":"2023-01-15T10:30:00.000Z","ends_at":"2023-01-15T10:30:00.000Z","created_at":"2023-01-15T10:30:00.000Z","updated_at":"2023-01-15T10:30:00.000Z","price":100.99,"user_id":"b402f79e-30ce-4c94-b4c6-f7443ce26b4b","exportable_to_wallet":false}]}}}},"401":{"description":"unauthorized"}}}},"/api/sdk/v1/tickets/{id}":{"get":{"summary":"show ticket","tags":["SDK Tickets"],"security":[{"sdk_token":[]}],"parameters":[{"name":"X-ID-Token","in":"header","required":true,"description":"ID Token for user authentication","schema":{"type":"string"}},{"name":"id","in":"path","description":"id of the ticket","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"successful","content":{"application/json":{"example":{"id":"b402f79e-30ce-4c94-b4c6-f7443ce26b4b","title":"factory title","text":"factory test text which descirbes the subscription","reference":"987654321","metadata":null,"wallet_export":null,"state":"active","payment_state":"payed","button_cta_url":"https://google.de","info_banner":null,"seating":"factory seating","venue":"factory venue","currency":"EUR","ticket_category_id":"b402f79e-30ce-4c94-b4c6-f7443ce26b4b","starts_at":"2023-01-15T10:30:00.000Z","ends_at":"2023-01-15T10:30:00.000Z","created_at":"2023-01-15T10:30:00.000Z","updated_at":"2023-01-15T10:30:00.000Z","price":100.99,"user_id":"b402f79e-30ce-4c94-b4c6-f7443ce26b4b","exportable_to_wallet":false}}}},"401":{"description":"unauthorized"},"404":{"description":"not found"}}}},"/api/sdk/v1/sign_ins/{sign_in_id}/refresh_token":{"post":{"summary":"refresh token","tags":["SDK Tokens"],"security":[{"sdk_token":[]}],"parameters":[{"name":"sign_in_id","in":"path","description":"id of the sign_in session","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"created"},"401":{"description":"unauthorized"},"404":{"description":"not found"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"refresh_token":{"type":"string","description":"The refresh token"}},"required":["refresh_token"]}}}}}},"/api/sdk/v1/transactions":{"get":{"summary":"list transactions","tags":["SDK Transactions"],"security":[{"sdk_token":[]}],"parameters":[{"name":"X-ID-Token","in":"header","required":true,"description":"ID Token for user authentication","schema":{"type":"string"}},{"name":"page","in":"query","required":false,"description":"Page number","schema":{"type":"integer"}},{"name":"limit","in":"query","required":false,"description":"Items per page (max 250)","schema":{"type":"integer"}},{"name":"order_by","in":"query","required":false,"description":"Field to order by (placed_at, created_at, total)","schema":{"type":"string"}},{"name":"order_direction","in":"query","required":false,"enum":["asc","desc"],"description":"Order direction:\n * `asc` \n * `desc` \n ","schema":{"type":"string"}},{"name":"state","in":"query","required":false,"description":"Filter by state","schema":{"type":"string"}},{"name":"financial_status","in":"query","required":false,"description":"Filter by financial status","schema":{"type":"string"}},{"name":"order_type","in":"query","required":false,"description":"Filter by order type","schema":{"type":"string"}},{"name":"source_platform","in":"query","required":false,"description":"Filter by source platform","schema":{"type":"string"}},{"name":"placed_at","in":"query","required":false,"description":"Filter by placed_at (ISO8601)","schema":{"type":"string"}},{"name":"external_id","in":"query","required":false,"description":"Filter by external ID","schema":{"type":"string"}}],"responses":{"200":{"description":"successful with filtering","content":{"application/json":{"example":{"meta":{"count":1,"page":1,"limit":50,"last":1,"prev":null,"next":null},"results":[{"id":"b402f79e-30ce-4c94-b4c6-f7443ce26b4b","user_id":"b402f79e-30ce-4c94-b4c6-f7443ce26b4b","transaction_category_id":1,"external_id":"EXT-12345","reference":"ezn0ioozm5","source_platform":"shopify","order_type":null,"state":"partially_paid","financial_status":null,"fulfillment_status":null,"currency":"EUR","payment_method":null,"payment_provider_ref":null,"coupon_code":null,"invoice_number":null,"prices_include_tax":false,"tax_exempt":false,"tags":[],"cancel_reason":null,"customer_note":null,"staff_note":null,"source_channel_id":null,"platform_metadata":null,"placed_at":"2023-01-15T10:30:00.000Z","cancelled_at":null,"completed_at":null,"created_at":"2023-01-15T10:30:00.000Z","updated_at":"2023-01-15T10:30:00.000Z","total":99.99,"subtotal":null,"total_discount":null,"total_paid":null,"total_refunded":null,"total_shipping":null,"total_tax":null,"exchange_rate":null,"billing_address":null,"shipping_address":null,"line_items":[]}]}}}},"401":{"description":"unauthorized"}}}},"/api/sdk/v1/transactions/{id}":{"get":{"summary":"show transaction","tags":["SDK Transactions"],"security":[{"sdk_token":[]}],"parameters":[{"name":"X-ID-Token","in":"header","required":true,"description":"ID Token for user authentication","schema":{"type":"string"}},{"name":"id","in":"path","description":"id of the transaction","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"successful","content":{"application/json":{"example":{"id":"b402f79e-30ce-4c94-b4c6-f7443ce26b4b","user_id":"b402f79e-30ce-4c94-b4c6-f7443ce26b4b","transaction_category_id":1,"external_id":"w438gpzbal","reference":"st5g6rak1y","source_platform":"shopify","order_type":null,"state":"refunded","financial_status":null,"fulfillment_status":null,"currency":"EUR","payment_method":null,"payment_provider_ref":null,"coupon_code":null,"invoice_number":null,"prices_include_tax":false,"tax_exempt":false,"tags":[],"cancel_reason":null,"customer_note":null,"staff_note":null,"source_channel_id":null,"platform_metadata":null,"placed_at":"2023-01-15T10:30:00.000Z","cancelled_at":null,"completed_at":null,"created_at":"2023-01-15T10:30:00.000Z","updated_at":"2023-01-15T10:30:00.000Z","total":99.99,"subtotal":null,"total_discount":null,"total_paid":null,"total_refunded":null,"total_shipping":null,"total_tax":null,"exchange_rate":null,"billing_address":null,"shipping_address":null,"line_items":[]}}}},"401":{"description":"unauthorized"},"404":{"description":"not found"}}}},"/api/sdk/v1/user":{"get":{"summary":"get user with relations","tags":["SDK Users"],"description":"Retrieves the authenticated user's data with optional relation preloading.\n\n**Preloading Relations:**\nUse the `preload` parameter to include related data in the response:\n- `tickets`: User's event tickets\n- `subscriptions`: User's subscriptions (season tickets, memberships)\n- `newsletter_subscriptions`: User's newsletter subscriptions\n\n**Filtering:**\nWhen preloading relations, you can filter results using JSON filter parameters:\n- `ticket_filter`: Filter tickets by `category_id`, `event_date`, etc.\n- `subscription_filter`: Filter subscriptions by `category_id`, `status`, etc.\n- `newsletter_subscription_filter`: Filter by `internal_name` or `confirmed` status\n\n**Example filter:**\n```\n?preload[]=tickets\u0026ticket_filter={\"category_id\":123}\n```\n\n**Limits:**\nEach relation is limited to 101 items maximum for performance.\n","security":[{"sdk_token":[]}],"parameters":[{"name":"X-ID-Token","in":"header","required":true,"description":"JWT ID token obtained from authentication endpoint","schema":{"type":"string"}},{"name":"preload","in":"query","required":false,"description":"Relations to include in response","items":{"type":"string","enum":["tickets","subscriptions","newsletter_subscriptions"]},"style":"form","explode":true,"schema":{"type":"array"}},{"name":"ticket_filter","in":"query","required":false,"description":"JSON object with ticket filter criteria (e.g., {\"category_id\": 123})","schema":{"type":"string"}},{"name":"subscription_filter","in":"query","required":false,"description":"JSON object with subscription filter criteria","schema":{"type":"string"}},{"name":"newsletter_subscription_filter","in":"query","required":false,"description":"JSON object with newsletter subscription filter criteria (e.g., {\"internal_name\": \"weekly\", \"confirmed\": true})","schema":{"type":"string"}}],"responses":{"200":{"description":"successful with preload","content":{"application/json":{"example":{"id":"b402f79e-30ce-4c94-b4c6-f7443ce26b4b","email":"dionysus157.raditz@example.com","first_name":"Raditz","last_name":"Dionysus","salutation":"mr","phone_number":"+494066969123","company_name":"McClure, Schuster and Dibbert","address_line_1":"2989 Glory Skyway","address_line_2":"Apt. 820","city":"Braunbury","postal_code":"15593-5191","country_code":"DE","preferred_language":null,"role":"user","date_of_birth":"1987-11-23","created_at":"2023-01-15T10:30:00.000Z","updated_at":"2023-01-15T10:30:00.000Z","custom_attributes":{},"tickets":[{"id":"b402f79e-30ce-4c94-b4c6-f7443ce26b4b","title":"factory title","text":"factory test text which descirbes the subscription","reference":"987654321","metadata":null,"wallet_export":null,"state":"active","payment_state":"payed","button_cta_url":"https://google.de","info_banner":null,"seating":"factory seating","venue":"factory venue","currency":"EUR","ticket_category_id":"b402f79e-30ce-4c94-b4c6-f7443ce26b4b","starts_at":"2023-01-15T10:30:00.000Z","ends_at":"2023-01-15T10:30:00.000Z","created_at":"2023-01-15T10:30:00.000Z","updated_at":"2023-01-15T10:30:00.000Z","price":100.99,"user_id":"b402f79e-30ce-4c94-b4c6-f7443ce26b4b","exportable_to_wallet":false}],"subscriptions":[{"id":"b402f79e-30ce-4c94-b4c6-f7443ce26b4b","title":"factory title","text":"factory test text which descirbes the subscription","payment_frequency":"yearly","metadata":null,"wallet_export":null,"state":"active","reference":"987654321","payment_state":"payed","currency":"EUR","button_cta_url":null,"subscription_category_id":"b402f79e-30ce-4c94-b4c6-f7443ce26b4b","created_at":"2023-01-15T10:30:00.000Z","updated_at":"2023-01-15T10:30:00.000Z","starts_at":"2023-01-15T10:30:00.000Z","ends_at":"2023-01-15T10:30:00.000Z","next_payment_at":"2023-01-15T10:30:00.000Z","price":100.99,"exportable_to_wallet":false,"user_id":"b402f79e-30ce-4c94-b4c6-f7443ce26b4b"}]}}}},"401":{"description":"unauthorized"},"404":{"description":"not found"}}}}},"components":{"securitySchemes":{"sdk_token":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"profile":{"type":"object","properties":{"salutation":{"type":"object","properties":{"value":{"type":["string","null"]},"type":{"type":"string"},"required":{"type":"boolean"},"label":{"type":"string"},"attr_name":{"type":"string"},"radio_options":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string"},"checked":{"type":"boolean"}}}}}},"first_name":{"type":"object","properties":{"value":{"type":["string","null"]},"type":{"type":"string"},"required":{"type":"boolean"},"label":{"type":"string"},"attr_name":{"type":"string"}}},"last_name":{"type":"object","properties":{"value":{"type":["string","null"]},"type":{"type":"string"},"required":{"type":"boolean"},"label":{"type":"string"},"attr_name":{"type":"string"}}},"phone_number":{"type":"object","properties":{"value":{"type":["string","null"]},"type":{"type":"string"},"required":{"type":"boolean"},"label":{"type":"string"},"attr_name":{"type":"string"}}},"date_of_birth":{"type":"object","properties":{"value":{"type":["string","null"]},"type":{"type":"string"},"required":{"type":"boolean"},"label":{"type":"string"},"attr_name":{"type":"string"}}},"company_name":{"type":"object","properties":{"value":{"type":["string","null"]},"type":{"type":"string"},"required":{"type":"boolean"},"label":{"type":"string"},"attr_name":{"type":"string"}}},"address_line_1":{"type":"object","properties":{"value":{"type":["string","null"]},"type":{"type":"string"},"required":{"type":"boolean"},"label":{"type":"string"},"attr_name":{"type":"string"}}},"address_line_2":{"type":"object","properties":{"value":{"type":["string","null"]},"type":{"type":"string"},"required":{"type":"boolean"},"label":{"type":"string"},"attr_name":{"type":"string"}}},"city":{"type":"object","properties":{"value":{"type":["string","null"]},"type":{"type":"string"},"required":{"type":"boolean"},"label":{"type":"string"},"attr_name":{"type":"string"}}},"postal_code":{"type":"object","properties":{"value":{"type":["string","null"]},"type":{"type":"string"},"required":{"type":"boolean"},"label":{"type":"string"},"attr_name":{"type":"string"}}},"country_code":{"type":"object","properties":{"value":{"type":["string","null"]},"type":{"type":"string"},"required":{"type":"boolean"},"label":{"type":"string"},"attr_name":{"type":"string"},"options":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string"}}}}}},"email":{"type":"object","properties":{"value":{"type":["string","null"]},"type":{"type":"string"},"required":{"type":"boolean"},"label":{"type":"string"},"attr_name":{"type":"string"}}},"preferred_language":{"type":"object","properties":{"value":{"type":["string","null"]},"type":{"type":"string"},"required":{"type":"boolean"},"label":{"type":"string"},"attr_name":{"type":"string"}}},"custom_attributes":{"type":"object","additionalProperties":{"type":"object","properties":{"value":{"type":["string","null"]},"type":{"type":"string"},"required":{"type":"boolean"},"label":{"type":"string"},"attr_name":{"type":"string"},"readonly":{"type":"boolean"},"options":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string"}}}},"radio_options":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string"},"checked":{"type":"boolean"}}}}}}}}},"update_profile":{"type":"object","properties":{"salutation":{"type":"object","properties":{"value":{"type":["string","null"]},"type":{"type":"string"},"required":{"type":"boolean"},"label":{"type":"string"},"attr_name":{"type":"string"},"radio_options":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string"},"checked":{"type":"boolean"}}}}}},"first_name":{"type":"object","properties":{"value":{"type":["string","null"]},"type":{"type":"string"},"required":{"type":"boolean"},"label":{"type":"string"},"attr_name":{"type":"string"}}},"last_name":{"type":"object","properties":{"value":{"type":["string","null"]},"type":{"type":"string"},"required":{"type":"boolean"},"label":{"type":"string"},"attr_name":{"type":"string"}}},"phone_number":{"type":"object","properties":{"value":{"type":["string","null"]},"type":{"type":"string"},"required":{"type":"boolean"},"label":{"type":"string"},"attr_name":{"type":"string"}}},"date_of_birth":{"type":"object","properties":{"value":{"type":["string","null"]},"type":{"type":"string"},"required":{"type":"boolean"},"label":{"type":"string"},"attr_name":{"type":"string"}}},"company_name":{"type":"object","properties":{"value":{"type":["string","null"]},"type":{"type":"string"},"required":{"type":"boolean"},"label":{"type":"string"},"attr_name":{"type":"string"}}},"address_line_1":{"type":"object","properties":{"value":{"type":["string","null"]},"type":{"type":"string"},"required":{"type":"boolean"},"label":{"type":"string"},"attr_name":{"type":"string"}}},"address_line_2":{"type":"object","properties":{"value":{"type":["string","null"]},"type":{"type":"string"},"required":{"type":"boolean"},"label":{"type":"string"},"attr_name":{"type":"string"}}},"city":{"type":"object","properties":{"value":{"type":["string","null"]},"type":{"type":"string"},"required":{"type":"boolean"},"label":{"type":"string"},"attr_name":{"type":"string"}}},"postal_code":{"type":"object","properties":{"value":{"type":["string","null"]},"type":{"type":"string"},"required":{"type":"boolean"},"label":{"type":"string"},"attr_name":{"type":"string"}}},"country_code":{"type":"object","properties":{"value":{"type":["string","null"]},"type":{"type":"string"},"required":{"type":"boolean"},"label":{"type":"string"},"attr_name":{"type":"string"},"options":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string"}}}}}},"email":{"type":"object","properties":{"value":{"type":["string","null"]},"type":{"type":"string"},"required":{"type":"boolean"},"label":{"type":"string"},"attr_name":{"type":"string"}}},"preferred_language":{"type":"object","properties":{"value":{"type":["string","null"]},"type":{"type":"string"},"required":{"type":"boolean"},"label":{"type":"string"},"attr_name":{"type":"string"}}},"custom_attributes":{"type":"object","additionalProperties":{"type":"object","properties":{"value":{"type":["string","null"]},"type":{"type":"string"},"required":{"type":"boolean"},"label":{"type":"string"},"attr_name":{"type":"string"},"readonly":{"type":"boolean"},"options":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string"}}}},"radio_options":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string"},"checked":{"type":"boolean"}}}}}}}}},"newsletter":{"type":"object","properties":{"id":{"type":"integer","example":1},"internal_name":{"type":"string","example":"newsletter_internal_name"},"default":{"type":"boolean","example":false},"position":{"type":"integer","example":0},"opt_in_type":{"type":"string","example":"doi"},"title":{"type":"string","example":"Newsletter title"},"description":{"type":["string","null"],"example":"Newsletter description"},"created_at":{"type":"string","example":"2020-01-01T00:00:00Z","format":"date-time"},"updated_at":{"type":"string","example":"2020-01-01T00:00:00Z","format":"date-time"},"preference_groups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","example":1},"name":{"type":"string","example":"Preference group name"},"position":{"type":"integer","example":0},"flat":{"type":"boolean","example":false},"preferences":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","example":1},"name":{"type":"string","example":"Preference name"},"description":{"type":["string","null"],"example":"Preference description"},"plugin_identifier":{"type":["string","null"],"example":"preference_identifier"},"position":{"type":"integer","example":0},"default":{"type":"boolean","example":false},"hidden":{"type":"boolean","example":false}}}}}}}}},"newsletters":{"type":"object","properties":{"newsletters":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","example":1},"internal_name":{"type":"string","example":"newsletter_internal_name"},"default":{"type":"boolean","example":false},"position":{"type":"integer","example":0},"opt_in_type":{"type":"string","example":"doi"},"title":{"type":"string","example":"Newsletter title"},"description":{"type":["string","null"],"example":"Newsletter description"},"created_at":{"type":"string","example":"2020-01-01T00:00:00Z","format":"date-time"},"updated_at":{"type":"string","example":"2020-01-01T00:00:00Z","format":"date-time"},"preference_groups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","example":1},"name":{"type":"string","example":"Preference group name"},"position":{"type":"integer","example":0},"flat":{"type":"boolean","example":false},"preferences":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","example":1},"name":{"type":"string","example":"Preference name"},"description":{"type":["string","null"],"example":"Preference description"},"plugin_identifier":{"type":["string","null"],"example":"preference_identifier"},"position":{"type":"integer","example":0},"default":{"type":"boolean","example":false},"hidden":{"type":"boolean","example":false}}}}}}}}}}}},"newsletter_subscription":{"type":"object","properties":{"id":{"type":"integer","example":1},"email":{"type":"string","example":"user@gmail.com"},"preference_token":{"type":"string","example":"se7xZa1mzpClveAQPZwANr123","description":"Unique newsletter subscription token"},"preference_identifiers":{"type":"array","items":{"type":"string","example":"newsletter_preference_identifier","description":"Newsletter preference identifier"},"example":["newsletter_preference_identifier"],"uniqueItems":true,"description":"Newsletter preferences"},"confirmed_at":{"type":["string",null],"example":"2020-01-01T00:00:00Z","description":"Date and time when the subscription was confirmed","format":"date-time"},"newsletter_internal_name":{"type":"string","example":"newsletter_internal_name","description":"Unique identifier of the newsletter"}},"required":["id","email","preference_identifiers","newsletter_internal_name"]},"newsletter_subscriptions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","example":1},"email":{"type":"string","example":"user@gmail.com"},"preference_token":{"type":"string","example":"se7xZa1mzpClveAQPZwANr123","description":"Unique newsletter subscription token"},"preference_identifiers":{"type":"array","items":{"type":"string","example":"newsletter_preference_identifier","description":"Newsletter preference identifier"},"example":["newsletter_preference_identifier"],"uniqueItems":true,"description":"Newsletter preferences"},"confirmed_at":{"type":["string",null],"example":"2020-01-01T00:00:00Z","description":"Date and time when the subscription was confirmed","format":"date-time"},"newsletter_internal_name":{"type":"string","example":"newsletter_internal_name","description":"Unique identifier of the newsletter"}},"required":["id","email","preference_identifiers","newsletter_internal_name"]}},"create_registration":{"type":"object","properties":{"registration_url":{"type":"string","format":"uri","example":"https://example.com/registration"},"brand_id":{"type":"integer","example":1,"description":"Brand ID to associate with the registration flow. If not provided, will use Current.brand when finalizing."},"email":{"type":"string","format":"email","example":"user@example.com"},"password":{"type":"string","example":"secure_password123","description":"User password"},"passwordless_flag":{"type":"boolean","example":true,"description":"Flag to indicate passwordless magic link flow"},"registration_profile_data":{"type":"object","properties":{"first_name":{"type":["string","null"],"example":"Herrman"},"last_name":{"type":["string","null"],"example":"Mueller"},"salutation":{"type":["string","null"],"example":"mr","enum":["mr","mrs","mx",null]},"phone_number":{"type":["string","null"],"example":"+49123456789"},"date_of_birth":{"type":["string","null"],"format":"date","example":"1991-06-10"},"company_name":{"type":["string","null"],"example":"Unidy"},"address_line_1":{"type":["string","null"],"example":"Jakob-Kaiser-Str 70a"},"address_line_2":{"type":["string","null"],"example":"5 OG"},"city":{"type":["string","null"],"example":"Hamburg"},"postal_code":{"type":["string","null"],"example":"AA0A 0AA"},"country_code":{"type":["string","null"],"example":"GB","description":"codes follow ISO 3166"},"preferred_language":{"type":["string","null"],"example":"de"},"custom_attributes":{"type":"object","description":"Object containing key-value pairs where keys are the custom attribute names.","properties":{"_clear":{"type":"object","description":"Object with custom attribute keys, values must be true to clear previously set custom attributes","additionalProperties":{"type":"boolean","example":true}}},"additionalProperties":true},"_clear":{"type":"object","description":"Object with same keys as registration_profile_data, values must be true to clear previously set data","properties":{"first_name":{"type":"boolean","example":true,"description":"Set to true to clear this field"},"last_name":{"type":"boolean","example":true,"description":"Set to true to clear this field"},"salutation":{"type":"boolean","example":true,"description":"Set to true to clear this field"},"phone_number":{"type":"boolean","example":true,"description":"Set to true to clear this field"},"date_of_birth":{"type":"boolean","example":true,"description":"Set to true to clear this field"},"company_name":{"type":"boolean","example":true,"description":"Set to true to clear this field"},"address_line_1":{"type":"boolean","example":true,"description":"Set to true to clear this field"},"address_line_2":{"type":"boolean","example":true,"description":"Set to true to clear this field"},"city":{"type":"boolean","example":true,"description":"Set to true to clear this field"},"postal_code":{"type":"boolean","example":true,"description":"Set to true to clear this field"},"country_code":{"type":"boolean","example":true,"description":"Set to true to clear this field"},"preferred_language":{"type":"boolean","example":true,"description":"Set to true to clear this field"},"custom_attributes":{"type":"boolean","example":true,"description":"Set to true to clear all custom attributes"}},"additionalProperties":false}},"additionalProperties":false},"newsletter_preferences":{"type":"object","description":"Newsletter preferences in format {main: [daily], other: []}","properties":{"_clear":{"type":"object","description":"Object with newsletter category keys, values must be true to clear previously set preferences for that category","additionalProperties":{"type":"boolean","example":true}}},"additionalProperties":{"type":"array","items":{"type":"string"}}}},"required":["registration_url"],"additionalProperties":false},"update_registration":{"type":"object","properties":{"email":{"type":"string","format":"email","example":"user@example.com"},"password":{"type":"string","example":"secure_password123","description":"User password"},"passwordless_flag":{"type":"boolean","example":true,"description":"Flag to indicate passwordless magic link flow"},"registration_profile_data":{"type":"object","properties":{"first_name":{"type":["string","null"],"example":"Herrman"},"last_name":{"type":["string","null"],"example":"Mueller"},"salutation":{"type":["string","null"],"example":"mr","enum":["mr","mrs","mx",null]},"phone_number":{"type":["string","null"],"example":"+49123456789"},"date_of_birth":{"type":["string","null"],"format":"date","example":"1991-06-10"},"company_name":{"type":["string","null"],"example":"Unidy"},"address_line_1":{"type":["string","null"],"example":"Jakob-Kaiser-Str 70a"},"address_line_2":{"type":["string","null"],"example":"5 OG"},"city":{"type":["string","null"],"example":"Hamburg"},"postal_code":{"type":["string","null"],"example":"AA0A 0AA"},"country_code":{"type":["string","null"],"example":"GB","description":"codes follow ISO 3166"},"preferred_language":{"type":["string","null"],"example":"de"},"custom_attributes":{"type":"object","description":"Object containing key-value pairs where keys are the custom attribute names.","properties":{"_clear":{"type":"object","description":"Object with custom attribute keys, values must be true to clear previously set custom attributes","additionalProperties":{"type":"boolean","example":true}}},"additionalProperties":true},"_clear":{"type":"object","description":"Object with same keys as registration_profile_data, values must be true to clear previously set data","properties":{"first_name":{"type":"boolean","example":true,"description":"Set to true to clear this field"},"last_name":{"type":"boolean","example":true,"description":"Set to true to clear this field"},"salutation":{"type":"boolean","example":true,"description":"Set to true to clear this field"},"phone_number":{"type":"boolean","example":true,"description":"Set to true to clear this field"},"date_of_birth":{"type":"boolean","example":true,"description":"Set to true to clear this field"},"company_name":{"type":"boolean","example":true,"description":"Set to true to clear this field"},"address_line_1":{"type":"boolean","example":true,"description":"Set to true to clear this field"},"address_line_2":{"type":"boolean","example":true,"description":"Set to true to clear this field"},"city":{"type":"boolean","example":true,"description":"Set to true to clear this field"},"postal_code":{"type":"boolean","example":true,"description":"Set to true to clear this field"},"country_code":{"type":"boolean","example":true,"description":"Set to true to clear this field"},"preferred_language":{"type":"boolean","example":true,"description":"Set to true to clear this field"},"custom_attributes":{"type":"boolean","example":true,"description":"Set to true to clear all custom attributes"}},"additionalProperties":false}},"additionalProperties":false},"newsletter_preferences":{"type":"object","description":"Newsletter preferences in format {main: [daily], other: []}","properties":{"_clear":{"type":"object","description":"Object with newsletter category keys, values must be true to clear previously set preferences for that category","additionalProperties":{"type":"boolean","example":true}}},"additionalProperties":{"type":"array","items":{"type":"string"}}}},"additionalProperties":false},"verify_email":{"type":"object","properties":{"code":{"type":"string","pattern":"^\\d{4}$","example":"1234","description":"The 4-digit verification code sent to the email"}},"required":["code"],"additionalProperties":false},"send_resume_link":{"type":"object","properties":{"email":{"type":"string","format":"email","example":"user@example.com","description":"Email address to send the resume link to"}},"required":["email"],"additionalProperties":false},"internal_matching_check":{"type":"object","properties":{"matching_value":{"type":"string","description":"The value to match (e.g., unidy_id, email, custom attribute)"},"matching_additional_attributes":{"type":"object","description":"Additional attributes for matching verification","additionalProperties":{"type":"string"}}},"required":["matching_value"],"additionalProperties":false},"internal_matching_confirm":{"type":"object","properties":{"matching_user_id":{"type":"integer","description":"The ID of the matched user to confirm takeover for"}},"required":["matching_user_id"],"additionalProperties":false}}}}