# NOTE: This file is auto generated by OpenAPI Generator 7.17.0 (https://openapi-generator.tech). # Do not edit this file manually. defmodule MollieAPI.Api.ClientLinksAPI do @moduledoc """ API calls for all endpoints tagged `ClientLinksAPI`. """ alias MollieAPI.Connection import MollieAPI.RequestBuilder @doc """ Create client link Link a new or existing organization to your OAuth application, in effect creating a new client. The response contains a `clientLink` where you should redirect your customer to. ## Redirecting the Customer The `clientLink` URL behaves similarly to a standard OAuth authorization URL. Therefore, after receiving the `clientLink` URL in the API response, you need to **append the following query parameters** *before* redirecting the customer: * `client_id` _string (required)_ The client ID you received when you registered your OAuth app. The ID starts with `app_`. For example: `app_abc123qwerty`. * `state` _string (required)_ A random string **generated by your app** to prevent CSRF attacks. This will be reflected in the `state` query parameter when the user returns to the `redirect_uri` after authorizing your app. * `scope` _string (required)_ A space-separated list of permissions ('scopes') your app requires. See the [permissions list](https://docs.mollie.com/docs/connect-permissions) for more information about the available scopes. We recommend at least : `onboarding.read onboarding.write` * `approval_prompt` _string_ Can be set to `force` to force showing the consent screen to the merchant, *even when it is not necessary*. If you force an approval prompt and the user creates a new authorization, previously active authorizations will be revoked. Possible values: `auto` `force` (default: `auto`) ### Example of a Complete Redirect URL After adding the above url parameter your URL will look something like this and you can redirect your client to this page: ``` https://my.mollie.com/dashboard/client-link/{id}?client_id={your_client_id}&state={unique_state}&scope=onboarding.read%20onboarding.write ``` ## Error Handling Error handling is also dealt with similar to the [Authorize](https://docs.mollie.com/reference/authorize) endpoint: the customer is redirected back to your app's redirect URL with the `error` and `error_description` parameters added to the URL. > 🚧 > > A client link must be used within 30 days of creation. After that period, it will expire and you will need to create a new client link. ### Parameters - `connection` (MollieAPI.Connection): Connection to server - `opts` (keyword): Optional parameters - `:"idempotency-key"` (String.t): A unique key to ensure idempotent requests. This key should be a UUID v4 string. - `:body` (ClientLinkRequest): ### Returns - `{:ok, MollieAPI.Model.ClientLinkResponse.t}` on success - `{:error, Tesla.Env.t}` on failure """ @spec create_client_link(Tesla.Env.client, keyword()) :: {:ok, MollieAPI.Model.ErrorResponse.t} | {:ok, MollieAPI.Model.ClientLinkResponse.t} | {:error, Tesla.Env.t} def create_client_link(connection, opts \\ []) do optional_params = %{ :"idempotency-key" => :headers, :body => :body } request = %{} |> method(:post) |> url("/client-links") |> add_optional_params(optional_params, opts) |> ensure_body() |> Enum.into([]) connection |> Connection.request(request) |> evaluate_response([ {201, MollieAPI.Model.ClientLinkResponse}, {404, MollieAPI.Model.ErrorResponse}, {422, MollieAPI.Model.ErrorResponse} ]) end end