// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

import MiniSearch from 'minisearch';
import * as fs from 'node:fs/promises';
import * as path from 'node:path';
import { getLogger } from './logger';

type PerLanguageData = {
  method?: string;
  example?: string;
};

type MethodEntry = {
  name: string;
  endpoint: string;
  httpMethod: string;
  summary: string;
  description: string;
  stainlessPath: string;
  qualified: string;
  params?: string[];
  response?: string;
  markdown?: string;
  perLanguage?: Record<string, PerLanguageData>;
};

type ProseChunk = {
  content: string;
  tag: string;
  sectionContext?: string;
  source?: string;
};

type MiniSearchDocument = {
  id: string;
  kind: 'http_method' | 'prose';
  name?: string;
  endpoint?: string;
  summary?: string;
  description?: string;
  qualified?: string;
  stainlessPath?: string;
  content?: string;
  sectionContext?: string;
  _original: Record<string, unknown>;
};

type SearchResult = {
  results: (string | Record<string, unknown>)[];
};

const EMBEDDED_METHODS: MethodEntry[] = [
  {
    name: 'create',
    endpoint: '/api/v1/user-enrolments',
    httpMethod: 'post',
    summary: 'Create New User Enrolment',
    description:
      'Initiate the user enrolment process. This should always be the first step of the user creation process.',
    stainlessPath: '(resource) user-enrolments > (method) create',
    qualified: 'client.userEnrolments.create',
    params: [
      "enrolmentType: 'PERSONAL_ACCOUNT' | 'BUSINESS_ACCOUNT' | 'TEAM_MEMBER' | 'PERSONAL_LOAN_ACCOUNT';",
      'invitationId?: string;',
      'loanApplicationId?: string;',
      'X-Request-ID?: string;',
    ],
    response: '{ enrolmentId?: string; }',
    markdown:
      "## create\n\n`client.userEnrolments.create(enrolmentType: 'PERSONAL_ACCOUNT' | 'BUSINESS_ACCOUNT' | 'TEAM_MEMBER' | 'PERSONAL_LOAN_ACCOUNT', invitationId?: string, loanApplicationId?: string, X-Request-ID?: string): { enrolmentId?: string; }`\n\n**post** `/api/v1/user-enrolments`\n\nInitiate the user enrolment process. This should always be the first step of the user creation process.\n\n### Parameters\n\n- `enrolmentType: 'PERSONAL_ACCOUNT' | 'BUSINESS_ACCOUNT' | 'TEAM_MEMBER' | 'PERSONAL_LOAN_ACCOUNT'`\n  account type to be created\n\n- `invitationId?: string`\n  The invitation Id if the user was invited to create an account\n\n- `loanApplicationId?: string`\n  The loan application Id if the user is created part of loan origination\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ enrolmentId?: string; }`\n\n  - `enrolmentId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst userEnrolment = await client.userEnrolments.create({ enrolmentType: 'PERSONAL_ACCOUNT' });\n\nconsole.log(userEnrolment);\n```",
    perLanguage: {
      typescript: {
        method: 'client.userEnrolments.create',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst userEnrolment = await client.userEnrolments.create({ enrolmentType: 'PERSONAL_ACCOUNT' });\n\nconsole.log(userEnrolment.enrolmentId);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/user-enrolments \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "enrolmentType": "PERSONAL_ACCOUNT",\n          "invitationId": "36a22460-ebc8-4ffe-a213-1683c5a420c5",\n          "loanApplicationId": "611e9adb-d6eb-4fb2-85c0-5f52a4a40a76"\n        }\'',
      },
      kotlin: {
        method: 'userEnrolments().create',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.userenrolments.UserEnrolmentCreateParams\nimport com.plumery.api.models.userenrolments.UserEnrolmentCreateResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: UserEnrolmentCreateParams = UserEnrolmentCreateParams.builder()\n        .enrolmentType(UserEnrolmentCreateParams.EnrolmentType.PERSONAL_ACCOUNT)\n        .build()\n    val userEnrolment: UserEnrolmentCreateResponse = client.userEnrolments().create(params)\n}',
      },
      java: {
        method: 'userEnrolments().create',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.userenrolments.UserEnrolmentCreateParams;\nimport com.plumery.api.models.userenrolments.UserEnrolmentCreateResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        UserEnrolmentCreateParams params = UserEnrolmentCreateParams.builder()\n            .enrolmentType(UserEnrolmentCreateParams.EnrolmentType.PERSONAL_ACCOUNT)\n            .build();\n        UserEnrolmentCreateResponse userEnrolment = client.userEnrolments().create(params);\n    }\n}',
      },
    },
  },
  {
    name: 'setPhoneNumber',
    endpoint: '/api/v1/user-enrolments/{enrolmentId}:set-phone-number',
    httpMethod: 'post',
    summary: 'Set Phone Number',
    description:
      "Initiates phone number setting for the user.\n\nThis will initiate a one-time password sent as an SMS to the phone number provided to ensure its authenticity.\n\nOnce the OTP is verified, using the 'Verify phone number' endpoint, the phone number will be stored for the user.",
    stainlessPath: '(resource) user-enrolments > (method) setPhoneNumber',
    qualified: 'client.userEnrolments.setPhoneNumber',
    params: [
      'enrolmentId: string;',
      'phoneNumber: string;',
      'accept-language?: string;',
      'X-Request-ID?: string;',
    ],
    response:
      "{ verification?: { endpoint?: '/api/v1/user-enrolments/{enrolmentId}:verify-phone-number'; method?: 'TOTP-SMS'; }; }",
    markdown:
      "## setPhoneNumber\n\n`client.userEnrolments.setPhoneNumber(enrolmentId: string, phoneNumber: string, accept-language?: string, X-Request-ID?: string): { verification?: object; }`\n\n**post** `/api/v1/user-enrolments/{enrolmentId}:set-phone-number`\n\nInitiates phone number setting for the user.\n\nThis will initiate a one-time password sent as an SMS to the phone number provided to ensure its authenticity.\n\nOnce the OTP is verified, using the 'Verify phone number' endpoint, the phone number will be stored for the user.\n\n### Parameters\n\n- `enrolmentId: string`\n\n- `phoneNumber: string`\n\n- `accept-language?: string`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ verification?: { endpoint?: '/api/v1/user-enrolments/{enrolmentId}:verify-phone-number'; method?: 'TOTP-SMS'; }; }`\n  Indicates the next step to take after setting the phone number\n\n  - `verification?: { endpoint?: '/api/v1/user-enrolments/{enrolmentId}:verify-phone-number'; method?: 'TOTP-SMS'; }`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.userEnrolments.setPhoneNumber('36a22460-ebc8-4ffe-a213-1683c5a420c5', { phoneNumber: '+37069584868' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.userEnrolments.setPhoneNumber',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.userEnrolments.setPhoneNumber(\n  '36a22460-ebc8-4ffe-a213-1683c5a420c5',\n  { phoneNumber: '+37069584868' },\n);\n\nconsole.log(response.verification);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/user-enrolments/$ENROLMENT_ID:set-phone-number \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "phoneNumber": "+37069584868"\n        }\'',
      },
      kotlin: {
        method: 'userEnrolments().setPhoneNumber',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.userenrolments.UserEnrolmentSetPhoneNumberParams\nimport com.plumery.api.models.userenrolments.UserEnrolmentSetPhoneNumberResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: UserEnrolmentSetPhoneNumberParams = UserEnrolmentSetPhoneNumberParams.builder()\n        .enrolmentId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .phoneNumber("+37069584868")\n        .build()\n    val response: UserEnrolmentSetPhoneNumberResponse = client.userEnrolments().setPhoneNumber(params)\n}',
      },
      java: {
        method: 'userEnrolments().setPhoneNumber',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.userenrolments.UserEnrolmentSetPhoneNumberParams;\nimport com.plumery.api.models.userenrolments.UserEnrolmentSetPhoneNumberResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        UserEnrolmentSetPhoneNumberParams params = UserEnrolmentSetPhoneNumberParams.builder()\n            .enrolmentId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .phoneNumber("+37069584868")\n            .build();\n        UserEnrolmentSetPhoneNumberResponse response = client.userEnrolments().setPhoneNumber(params);\n    }\n}',
      },
    },
  },
  {
    name: 'verifyPhoneNumber',
    endpoint: '/api/v1/user-enrolments/{enrolmentId}:verify-phone-number',
    httpMethod: 'post',
    summary: 'Verify Phone Number',
    description: 'Verify the one-time password sent to the phone number set by the user.',
    stainlessPath: '(resource) user-enrolments > (method) verifyPhoneNumber',
    qualified: 'client.userEnrolments.verifyPhoneNumber',
    params: ['enrolmentId: string;', 'otp: string;', 'X-Request-ID?: string;'],
    markdown:
      "## verifyPhoneNumber\n\n`client.userEnrolments.verifyPhoneNumber(enrolmentId: string, otp: string, X-Request-ID?: string): void`\n\n**post** `/api/v1/user-enrolments/{enrolmentId}:verify-phone-number`\n\nVerify the one-time password sent to the phone number set by the user.\n\n### Parameters\n\n- `enrolmentId: string`\n\n- `otp: string`\n  The One-Time Password (OTP) sent to the user\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.userEnrolments.verifyPhoneNumber('36a22460-ebc8-4ffe-a213-1683c5a420c5', { otp: '123456' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.userEnrolments.verifyPhoneNumber',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.userEnrolments.verifyPhoneNumber('36a22460-ebc8-4ffe-a213-1683c5a420c5', {\n  otp: '123456',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/user-enrolments/$ENROLMENT_ID:verify-phone-number \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "otp": "123456"\n        }\'',
      },
      kotlin: {
        method: 'userEnrolments().verifyPhoneNumber',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.userenrolments.UserEnrolmentVerifyPhoneNumberParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: UserEnrolmentVerifyPhoneNumberParams = UserEnrolmentVerifyPhoneNumberParams.builder()\n        .enrolmentId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .otp("123456")\n        .build()\n    client.userEnrolments().verifyPhoneNumber(params)\n}',
      },
      java: {
        method: 'userEnrolments().verifyPhoneNumber',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.userenrolments.UserEnrolmentVerifyPhoneNumberParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        UserEnrolmentVerifyPhoneNumberParams params = UserEnrolmentVerifyPhoneNumberParams.builder()\n            .enrolmentId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .otp("123456")\n            .build();\n        client.userEnrolments().verifyPhoneNumber(params);\n    }\n}',
      },
    },
  },
  {
    name: 'setEmailAddress',
    endpoint: '/api/v1/user-enrolments/{enrolmentId}:set-email-address',
    httpMethod: 'post',
    summary: 'Set Email Address',
    description:
      "Initiates email address setting for the user.\n\nThis will initiate a one-time password sent to the email address provided to ensure its authenticity.\n\nOnce the OTP is verified, using the 'Verify Email Address' endpoint, the email address will be stored for the user.\n\n**Note:** if not verified with OTP, the email address will not be stored for the user.",
    stainlessPath: '(resource) user-enrolments > (method) setEmailAddress',
    qualified: 'client.userEnrolments.setEmailAddress',
    params: [
      'enrolmentId: string;',
      'emailAddress: string;',
      'accept-language?: string;',
      'X-Request-ID?: string;',
    ],
    response:
      "{ verification?: { endpoint?: '/api/v1/user-enrolments/{enrolmentId}:verify-email-address'; method?: 'TOTP-EMAIL'; }; }",
    markdown:
      "## setEmailAddress\n\n`client.userEnrolments.setEmailAddress(enrolmentId: string, emailAddress: string, accept-language?: string, X-Request-ID?: string): { verification?: object; }`\n\n**post** `/api/v1/user-enrolments/{enrolmentId}:set-email-address`\n\nInitiates email address setting for the user.\n\nThis will initiate a one-time password sent to the email address provided to ensure its authenticity.\n\nOnce the OTP is verified, using the 'Verify Email Address' endpoint, the email address will be stored for the user.\n\n**Note:** if not verified with OTP, the email address will not be stored for the user.\n\n### Parameters\n\n- `enrolmentId: string`\n\n- `emailAddress: string`\n  A valid email address\n\n- `accept-language?: string`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ verification?: { endpoint?: '/api/v1/user-enrolments/{enrolmentId}:verify-email-address'; method?: 'TOTP-EMAIL'; }; }`\n  Indicates the next step to take after setting email address\n\n  - `verification?: { endpoint?: '/api/v1/user-enrolments/{enrolmentId}:verify-email-address'; method?: 'TOTP-EMAIL'; }`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.userEnrolments.setEmailAddress('36a22460-ebc8-4ffe-a213-1683c5a420c5', { emailAddress: 'user@example.com' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.userEnrolments.setEmailAddress',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.userEnrolments.setEmailAddress(\n  '36a22460-ebc8-4ffe-a213-1683c5a420c5',\n  { emailAddress: 'user@example.com' },\n);\n\nconsole.log(response.verification);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/user-enrolments/$ENROLMENT_ID:set-email-address \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "emailAddress": "user@example.com"\n        }\'',
      },
      kotlin: {
        method: 'userEnrolments().setEmailAddress',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.userenrolments.UserEnrolmentSetEmailAddressParams\nimport com.plumery.api.models.userenrolments.UserEnrolmentSetEmailAddressResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: UserEnrolmentSetEmailAddressParams = UserEnrolmentSetEmailAddressParams.builder()\n        .enrolmentId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .emailAddress("user@example.com")\n        .build()\n    val response: UserEnrolmentSetEmailAddressResponse = client.userEnrolments().setEmailAddress(params)\n}',
      },
      java: {
        method: 'userEnrolments().setEmailAddress',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.userenrolments.UserEnrolmentSetEmailAddressParams;\nimport com.plumery.api.models.userenrolments.UserEnrolmentSetEmailAddressResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        UserEnrolmentSetEmailAddressParams params = UserEnrolmentSetEmailAddressParams.builder()\n            .enrolmentId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .emailAddress("user@example.com")\n            .build();\n        UserEnrolmentSetEmailAddressResponse response = client.userEnrolments().setEmailAddress(params);\n    }\n}',
      },
    },
  },
  {
    name: 'verifyEmailAddress',
    endpoint: '/api/v1/user-enrolments/{enrolmentId}:verify-email-address',
    httpMethod: 'post',
    summary: 'Verify Email Address',
    description:
      'Verify the one-time password sent to the email address set by the user.\n\n**Note:** if not verified with OTP, the email address will not be stored for the user.\n',
    stainlessPath: '(resource) user-enrolments > (method) verifyEmailAddress',
    qualified: 'client.userEnrolments.verifyEmailAddress',
    params: ['enrolmentId: string;', 'otp: string;', 'X-Request-ID?: string;'],
    markdown:
      "## verifyEmailAddress\n\n`client.userEnrolments.verifyEmailAddress(enrolmentId: string, otp: string, X-Request-ID?: string): void`\n\n**post** `/api/v1/user-enrolments/{enrolmentId}:verify-email-address`\n\nVerify the one-time password sent to the email address set by the user.\n\n**Note:** if not verified with OTP, the email address will not be stored for the user.\n\n\n### Parameters\n\n- `enrolmentId: string`\n\n- `otp: string`\n  The One-Time Password (OTP) sent to the user\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.userEnrolments.verifyEmailAddress('36a22460-ebc8-4ffe-a213-1683c5a420c5', { otp: '123456' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.userEnrolments.verifyEmailAddress',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.userEnrolments.verifyEmailAddress('36a22460-ebc8-4ffe-a213-1683c5a420c5', {\n  otp: '123456',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/user-enrolments/$ENROLMENT_ID:verify-email-address \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "otp": "123456"\n        }\'',
      },
      kotlin: {
        method: 'userEnrolments().verifyEmailAddress',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.userenrolments.UserEnrolmentVerifyEmailAddressParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: UserEnrolmentVerifyEmailAddressParams = UserEnrolmentVerifyEmailAddressParams.builder()\n        .enrolmentId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .otp("123456")\n        .build()\n    client.userEnrolments().verifyEmailAddress(params)\n}',
      },
      java: {
        method: 'userEnrolments().verifyEmailAddress',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.userenrolments.UserEnrolmentVerifyEmailAddressParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        UserEnrolmentVerifyEmailAddressParams params = UserEnrolmentVerifyEmailAddressParams.builder()\n            .enrolmentId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .otp("123456")\n            .build();\n        client.userEnrolments().verifyEmailAddress(params);\n    }\n}',
      },
    },
  },
  {
    name: 'initiateEmailAddressVerification',
    endpoint: '/api/v1/user-enrolments/{enrolmentId}:initiate-email-address-verification',
    httpMethod: 'post',
    summary: 'Send Email OTP',
    description: 'Sending the one-time password to the email address associated with enrolment.\n',
    stainlessPath: '(resource) user-enrolments > (method) initiateEmailAddressVerification',
    qualified: 'client.userEnrolments.initiateEmailAddressVerification',
    params: ['enrolmentId: string;', 'accept-language?: string;', 'X-Request-ID?: string;'],
    response:
      "{ verification?: { endpoint?: '/api/v1/user-enrolments/{enrolmentId}:verify-email-address'; method?: 'TOTP-EMAIL'; }; }",
    markdown:
      "## initiateEmailAddressVerification\n\n`client.userEnrolments.initiateEmailAddressVerification(enrolmentId: string, accept-language?: string, X-Request-ID?: string): { verification?: object; }`\n\n**post** `/api/v1/user-enrolments/{enrolmentId}:initiate-email-address-verification`\n\nSending the one-time password to the email address associated with enrolment.\n\n\n### Parameters\n\n- `enrolmentId: string`\n\n- `accept-language?: string`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ verification?: { endpoint?: '/api/v1/user-enrolments/{enrolmentId}:verify-email-address'; method?: 'TOTP-EMAIL'; }; }`\n  Indicates the next step to take after setting email address\n\n  - `verification?: { endpoint?: '/api/v1/user-enrolments/{enrolmentId}:verify-email-address'; method?: 'TOTP-EMAIL'; }`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.userEnrolments.initiateEmailAddressVerification('36a22460-ebc8-4ffe-a213-1683c5a420c5');\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.userEnrolments.initiateEmailAddressVerification',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.userEnrolments.initiateEmailAddressVerification(\n  '36a22460-ebc8-4ffe-a213-1683c5a420c5',\n);\n\nconsole.log(response.verification);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/user-enrolments/$ENROLMENT_ID:initiate-email-address-verification \\\n    -X POST',
      },
      kotlin: {
        method: 'userEnrolments().initiateEmailAddressVerification',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.userenrolments.UserEnrolmentInitiateEmailAddressVerificationParams\nimport com.plumery.api.models.userenrolments.UserEnrolmentInitiateEmailAddressVerificationResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val response: UserEnrolmentInitiateEmailAddressVerificationResponse = client.userEnrolments().initiateEmailAddressVerification("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n}',
      },
      java: {
        method: 'userEnrolments().initiateEmailAddressVerification',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.userenrolments.UserEnrolmentInitiateEmailAddressVerificationParams;\nimport com.plumery.api.models.userenrolments.UserEnrolmentInitiateEmailAddressVerificationResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        UserEnrolmentInitiateEmailAddressVerificationResponse response = client.userEnrolments().initiateEmailAddressVerification("36a22460-ebc8-4ffe-a213-1683c5a420c5");\n    }\n}',
      },
    },
  },
  {
    name: 'setUserProfile',
    endpoint: '/api/v1/user-enrolments/{enrolmentId}:set-user-profile',
    httpMethod: 'post',
    summary: 'Set User Profile',
    description: 'Set user profile',
    stainlessPath: '(resource) user-enrolments > (method) setUserProfile',
    qualified: 'client.userEnrolments.setUserProfile',
    params: [
      'enrolmentId: string;',
      'firstName: string;',
      'lastName: string;',
      'countryCode?: string;',
      'middleNames?: string;',
      'personalId?: string;',
      'salutation?: string;',
      'title?: string;',
      'X-Request-ID?: string;',
    ],
    markdown:
      "## setUserProfile\n\n`client.userEnrolments.setUserProfile(enrolmentId: string, firstName: string, lastName: string, countryCode?: string, middleNames?: string, personalId?: string, salutation?: string, title?: string, X-Request-ID?: string): void`\n\n**post** `/api/v1/user-enrolments/{enrolmentId}:set-user-profile`\n\nSet user profile\n\n### Parameters\n\n- `enrolmentId: string`\n\n- `firstName: string`\n  User first name / given name\n\n- `lastName: string`\n  User last name / surname\n\n- `countryCode?: string`\n  Nation with its own government. ISO 3166, Alpha-2 code\n\n\n- `middleNames?: string`\n  A space-separated string containing one or multiple middle names of the individual\n\n- `personalId?: string`\n  Personal id provided by the user\n\n\n- `salutation?: string`\n  Formal greeting for the individual\n\n- `title?: string`\n  Professional or academic title of the individual\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.userEnrolments.setUserProfile('36a22460-ebc8-4ffe-a213-1683c5a420c5', { firstName: 'John', lastName: 'Doe' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.userEnrolments.setUserProfile',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.userEnrolments.setUserProfile('36a22460-ebc8-4ffe-a213-1683c5a420c5', {\n  firstName: 'John',\n  lastName: 'Doe',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/user-enrolments/$ENROLMENT_ID:set-user-profile \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "firstName": "John",\n          "lastName": "Doe",\n          "countryCode": "UK",\n          "middleNames": "Vigo Sullivan",\n          "personalId": "personalId",\n          "salutation": "Mr",\n          "title": "Dr."\n        }\'',
      },
      kotlin: {
        method: 'userEnrolments().setUserProfile',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.userenrolments.UserEnrolmentSetUserProfileParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: UserEnrolmentSetUserProfileParams = UserEnrolmentSetUserProfileParams.builder()\n        .enrolmentId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .firstName("John")\n        .lastName("Doe")\n        .build()\n    client.userEnrolments().setUserProfile(params)\n}',
      },
      java: {
        method: 'userEnrolments().setUserProfile',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.userenrolments.UserEnrolmentSetUserProfileParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        UserEnrolmentSetUserProfileParams params = UserEnrolmentSetUserProfileParams.builder()\n            .enrolmentId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .firstName("John")\n            .lastName("Doe")\n            .build();\n        client.userEnrolments().setUserProfile(params);\n    }\n}',
      },
    },
  },
  {
    name: 'setOrganisationPartyProfile',
    endpoint: '/api/v1/user-enrolments/{enrolmentId}:set-organisation-party-profile',
    httpMethod: 'post',
    summary: 'Set Organisation Party Profile',
    description: 'Set organisation party profile',
    stainlessPath: '(resource) user-enrolments > (method) setOrganisationPartyProfile',
    qualified: 'client.userEnrolments.setOrganisationPartyProfile',
    params: [
      'enrolmentId: string;',
      'categories?: string[];',
      'country?: string;',
      'dateOfIncorporation?: string;',
      'description?: string;',
      'legalName?: string;',
      'legalType?: string;',
      'operatingAddress?: { buildingName?: string; buildingNumber?: string; country?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; };',
      'postalAddress?: { buildingName?: string; buildingNumber?: string; country?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; };',
      'registrationAddress?: { buildingName?: string; buildingNumber?: string; country?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; };',
      'registrationNumber?: string;',
      'tradingName?: string;',
      'vatNumber?: string;',
      'website?: string;',
      'X-Request-ID?: string;',
    ],
    markdown:
      "## setOrganisationPartyProfile\n\n`client.userEnrolments.setOrganisationPartyProfile(enrolmentId: string, categories?: string[], country?: string, dateOfIncorporation?: string, description?: string, legalName?: string, legalType?: string, operatingAddress?: { buildingName?: string; buildingNumber?: string; country?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }, postalAddress?: { buildingName?: string; buildingNumber?: string; country?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }, registrationAddress?: { buildingName?: string; buildingNumber?: string; country?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }, registrationNumber?: string, tradingName?: string, vatNumber?: string, website?: string, X-Request-ID?: string): void`\n\n**post** `/api/v1/user-enrolments/{enrolmentId}:set-organisation-party-profile`\n\nSet organisation party profile\n\n### Parameters\n\n- `enrolmentId: string`\n\n- `categories?: string[]`\n\n- `country?: string`\n  ISO 3166-1 alpha-2 country code where the company is registered\n\n- `dateOfIncorporation?: string`\n  Date of incorporation of the organisation\n\n- `description?: string`\n  Description of the organisation\n\n- `legalName?: string`\n  Legal name of the organisation\n\n- `legalType?: string`\n  Legal type of the organisation\n\n- `operatingAddress?: { buildingName?: string; buildingNumber?: string; country?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }`\n  Operating address of the organisation\n  - `buildingName?: string`\n    Name of the building or house\n\n  - `buildingNumber?: string`\n    Number that identifies the position of a building on a street\n\n  - `country?: string`\n    Nation with its own government. ISO 3166, Alpha-2 code\n\n  - `countrySubDivision?: string`\n    Identifies a subdivision of a country such as state, region, county\n\n  - `districtName?: string`\n    Identifies a subdivision within a country sub-division\n\n  - `floor?: string`\n    Floor or storey within a building\n\n  - `postBox?: string`\n    Numbered box in a post office, assigned to a person or organisation, where letters are kept until called for\n\n  - `postCode?: string`\n    Identifier consisting of a group of letters and/or numbers that is added to a postal address to assist the sorting of mail\n\n  - `streetName?: string`\n    Name of a street or thoroughfare\n\n  - `suite?: string`\n    Building room number\n\n  - `townLocationName?: string`\n    Specific location name within the town\n\n  - `townName?: string`\n    Name of a built-up area, with defined boundaries, and a local government\n\n\n- `postalAddress?: { buildingName?: string; buildingNumber?: string; country?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }`\n  Postal address of the organisation\n  - `buildingName?: string`\n    Name of the building or house\n\n  - `buildingNumber?: string`\n    Number that identifies the position of a building on a street\n\n  - `country?: string`\n    Nation with its own government. ISO 3166, Alpha-2 code\n\n  - `countrySubDivision?: string`\n    Identifies a subdivision of a country such as state, region, county\n\n  - `districtName?: string`\n    Identifies a subdivision within a country sub-division\n\n  - `floor?: string`\n    Floor or storey within a building\n\n  - `postBox?: string`\n    Numbered box in a post office, assigned to a person or organisation, where letters are kept until called for\n\n  - `postCode?: string`\n    Identifier consisting of a group of letters and/or numbers that is added to a postal address to assist the sorting of mail\n\n  - `streetName?: string`\n    Name of a street or thoroughfare\n\n  - `suite?: string`\n    Building room number\n\n  - `townLocationName?: string`\n    Specific location name within the town\n\n  - `townName?: string`\n    Name of a built-up area, with defined boundaries, and a local government\n\n\n- `registrationAddress?: { buildingName?: string; buildingNumber?: string; country?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }`\n  Registered address of the organisation\n  - `buildingName?: string`\n    Name of the building or house\n\n  - `buildingNumber?: string`\n    Number that identifies the position of a building on a street\n\n  - `country?: string`\n    Nation with its own government. ISO 3166, Alpha-2 code\n\n  - `countrySubDivision?: string`\n    Identifies a subdivision of a country such as state, region, county\n\n  - `districtName?: string`\n    Identifies a subdivision within a country sub-division\n\n  - `floor?: string`\n    Floor or storey within a building\n\n  - `postBox?: string`\n    Numbered box in a post office, assigned to a person or organisation, where letters are kept until called for\n\n  - `postCode?: string`\n    Identifier consisting of a group of letters and/or numbers that is added to a postal address to assist the sorting of mail\n\n  - `streetName?: string`\n    Name of a street or thoroughfare\n\n  - `suite?: string`\n    Building room number\n\n  - `townLocationName?: string`\n    Specific location name within the town\n\n  - `townName?: string`\n    Name of a built-up area, with defined boundaries, and a local government\n\n\n- `registrationNumber?: string`\n  Registration number of the organisation\n\n- `tradingName?: string`\n  Trading name of the organisation\n\n- `vatNumber?: string`\n  Value Added Tax number of the organisation\n\n- `website?: string`\n  Website of the organisation\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.userEnrolments.setOrganisationPartyProfile('36a22460-ebc8-4ffe-a213-1683c5a420c5')\n```",
    perLanguage: {
      typescript: {
        method: 'client.userEnrolments.setOrganisationPartyProfile',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.userEnrolments.setOrganisationPartyProfile('36a22460-ebc8-4ffe-a213-1683c5a420c5');",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/user-enrolments/$ENROLMENT_ID:set-organisation-party-profile \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "country": "US",\n          "dateOfIncorporation": "2022-03-10",\n          "description": "Plumery Inc. is a software company",\n          "legalName": "Plumery Inc.",\n          "legalType": "Limited Liability Company",\n          "registrationNumber": "123456789",\n          "tradingName": "Plumery",\n          "vatNumber": "123456789",\n          "website": "https://plumery.com"\n        }\'',
      },
      kotlin: {
        method: 'userEnrolments().setOrganisationPartyProfile',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.userenrolments.UserEnrolmentSetOrganisationPartyProfileParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    client.userEnrolments().setOrganisationPartyProfile("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n}',
      },
      java: {
        method: 'userEnrolments().setOrganisationPartyProfile',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.userenrolments.UserEnrolmentSetOrganisationPartyProfileParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        client.userEnrolments().setOrganisationPartyProfile("36a22460-ebc8-4ffe-a213-1683c5a420c5");\n    }\n}',
      },
    },
  },
  {
    name: 'setUsername',
    endpoint: '/api/v1/user-enrolments/{enrolmentId}:set-username',
    httpMethod: 'post',
    summary: 'Set Username',
    description: 'Sets the username for the user.',
    stainlessPath: '(resource) user-enrolments > (method) setUsername',
    qualified: 'client.userEnrolments.setUsername',
    params: ['enrolmentId: string;', 'username: string;', 'X-Request-ID?: string;'],
    markdown:
      "## setUsername\n\n`client.userEnrolments.setUsername(enrolmentId: string, username: string, X-Request-ID?: string): void`\n\n**post** `/api/v1/user-enrolments/{enrolmentId}:set-username`\n\nSets the username for the user.\n\n### Parameters\n\n- `enrolmentId: string`\n\n- `username: string`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.userEnrolments.setUsername('36a22460-ebc8-4ffe-a213-1683c5a420c5', { username: 'P' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.userEnrolments.setUsername',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.userEnrolments.setUsername('36a22460-ebc8-4ffe-a213-1683c5a420c5', { username: 'P' });",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/user-enrolments/$ENROLMENT_ID:set-username \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "username": "P"\n        }\'',
      },
      kotlin: {
        method: 'userEnrolments().setUsername',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.userenrolments.UserEnrolmentSetUsernameParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: UserEnrolmentSetUsernameParams = UserEnrolmentSetUsernameParams.builder()\n        .enrolmentId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .username("P")\n        .build()\n    client.userEnrolments().setUsername(params)\n}',
      },
      java: {
        method: 'userEnrolments().setUsername',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.userenrolments.UserEnrolmentSetUsernameParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        UserEnrolmentSetUsernameParams params = UserEnrolmentSetUsernameParams.builder()\n            .enrolmentId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .username("P")\n            .build();\n        client.userEnrolments().setUsername(params);\n    }\n}',
      },
    },
  },
  {
    name: 'setCredential',
    endpoint: '/api/v1/user-enrolments/{enrolmentId}:set-credential',
    httpMethod: 'post',
    summary: 'Set Credentials',
    description: 'Sets credentials for the user.',
    stainlessPath: '(resource) user-enrolments > (method) setCredential',
    qualified: 'client.userEnrolments.setCredential',
    params: ['enrolmentId: string;', 'credential: string;', "type: 'PASSWORD';", 'X-Request-ID?: string;'],
    markdown:
      "## setCredential\n\n`client.userEnrolments.setCredential(enrolmentId: string, credential: string, type: 'PASSWORD', X-Request-ID?: string): void`\n\n**post** `/api/v1/user-enrolments/{enrolmentId}:set-credential`\n\nSets credentials for the user.\n\n### Parameters\n\n- `enrolmentId: string`\n\n- `credential: string`\n  Credential value submitted by the user for PASSWORD credential type.\n\n- `type: 'PASSWORD'`\n  Type of credential to be set for user, currently only PASSWORD is supported.\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.userEnrolments.setCredential('36a22460-ebc8-4ffe-a213-1683c5a420c5', { credential: '1£0UMJ!i5k_8', type: 'PASSWORD' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.userEnrolments.setCredential',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.userEnrolments.setCredential('36a22460-ebc8-4ffe-a213-1683c5a420c5', {\n  credential: '1£0UMJ!i5k_8',\n  type: 'PASSWORD',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/user-enrolments/$ENROLMENT_ID:set-credential \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "credential": "1£0UMJ!i5k_8",\n          "type": "PASSWORD"\n        }\'',
      },
      kotlin: {
        method: 'userEnrolments().setCredential',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.userenrolments.UserEnrolmentSetCredentialParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: UserEnrolmentSetCredentialParams = UserEnrolmentSetCredentialParams.builder()\n        .enrolmentId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .credential("1£0UMJ!i5k_8")\n        .type(UserEnrolmentSetCredentialParams.Type.PASSWORD)\n        .build()\n    client.userEnrolments().setCredential(params)\n}',
      },
      java: {
        method: 'userEnrolments().setCredential',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.userenrolments.UserEnrolmentSetCredentialParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        UserEnrolmentSetCredentialParams params = UserEnrolmentSetCredentialParams.builder()\n            .enrolmentId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .credential("1£0UMJ!i5k_8")\n            .type(UserEnrolmentSetCredentialParams.Type.PASSWORD)\n            .build();\n        client.userEnrolments().setCredential(params);\n    }\n}',
      },
    },
  },
  {
    name: 'setIndividualPartyProfile',
    endpoint: '/api/v1/user-enrolments/{enrolmentId}:set-individual-party-profile',
    httpMethod: 'post',
    summary: 'Set Individual Party Profile',
    description: 'Set individual party profile',
    stainlessPath: '(resource) user-enrolments > (method) setIndividualPartyProfile',
    qualified: 'client.userEnrolments.setIndividualPartyProfile',
    params: [
      'enrolmentId: string;',
      'dateOfBirth?: string;',
      'postalAddress?: { buildingName?: string; buildingNumber?: string; country?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; };',
      'registrationAddress?: { buildingName?: string; buildingNumber?: string; country?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; };',
      "taxIdentifications?: { country?: string; primary?: boolean; reasonDescription?: string; reasonNoTin?: 'NOT_ASSIGNED_YET' | 'NOT_ASSIGNED_BY_COUNTRY' | 'OTHER'; tin?: string; }[];",
      'X-Request-ID?: string;',
    ],
    markdown:
      "## setIndividualPartyProfile\n\n`client.userEnrolments.setIndividualPartyProfile(enrolmentId: string, dateOfBirth?: string, postalAddress?: { buildingName?: string; buildingNumber?: string; country?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }, registrationAddress?: { buildingName?: string; buildingNumber?: string; country?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }, taxIdentifications?: { country?: string; primary?: boolean; reasonDescription?: string; reasonNoTin?: 'NOT_ASSIGNED_YET' | 'NOT_ASSIGNED_BY_COUNTRY' | 'OTHER'; tin?: string; }[], X-Request-ID?: string): void`\n\n**post** `/api/v1/user-enrolments/{enrolmentId}:set-individual-party-profile`\n\nSet individual party profile\n\n### Parameters\n\n- `enrolmentId: string`\n\n- `dateOfBirth?: string`\n  Date of birth of the individual\n\n- `postalAddress?: { buildingName?: string; buildingNumber?: string; country?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }`\n  Postal address where the individual receives mail\n  - `buildingName?: string`\n    Name of the building or house\n\n  - `buildingNumber?: string`\n    Number that identifies the position of a building on a street\n\n  - `country?: string`\n    Nation with its own government. ISO 3166, Alpha-2 code\n\n  - `countrySubDivision?: string`\n    Identifies a subdivision of a country such as state, region, county\n\n  - `districtName?: string`\n    Identifies a subdivision within a country sub-division\n\n  - `floor?: string`\n    Floor or storey within a building\n\n  - `postBox?: string`\n    Numbered box in a post office, assigned to a person or organisation, where letters are kept until called for\n\n  - `postCode?: string`\n    Identifier consisting of a group of letters and/or numbers that is added to a postal address to assist the sorting of mail\n\n  - `streetName?: string`\n    Name of a street or thoroughfare\n\n  - `suite?: string`\n    Building room number\n\n  - `townLocationName?: string`\n    Specific location name within the town\n\n  - `townName?: string`\n    Name of a built-up area, with defined boundaries, and a local government\n\n\n- `registrationAddress?: { buildingName?: string; buildingNumber?: string; country?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }`\n  Registered address of the individual\n  - `buildingName?: string`\n    Name of the building or house\n\n  - `buildingNumber?: string`\n    Number that identifies the position of a building on a street\n\n  - `country?: string`\n    Nation with its own government. ISO 3166, Alpha-2 code\n\n  - `countrySubDivision?: string`\n    Identifies a subdivision of a country such as state, region, county\n\n  - `districtName?: string`\n    Identifies a subdivision within a country sub-division\n\n  - `floor?: string`\n    Floor or storey within a building\n\n  - `postBox?: string`\n    Numbered box in a post office, assigned to a person or organisation, where letters are kept until called for\n\n  - `postCode?: string`\n    Identifier consisting of a group of letters and/or numbers that is added to a postal address to assist the sorting of mail\n\n  - `streetName?: string`\n    Name of a street or thoroughfare\n\n  - `suite?: string`\n    Building room number\n\n  - `townLocationName?: string`\n    Specific location name within the town\n\n  - `townName?: string`\n    Name of a built-up area, with defined boundaries, and a local government\n\n\n- `taxIdentifications?: { country?: string; primary?: boolean; reasonDescription?: string; reasonNoTin?: 'NOT_ASSIGNED_YET' | 'NOT_ASSIGNED_BY_COUNTRY' | 'OTHER'; tin?: string; }[]`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.userEnrolments.setIndividualPartyProfile('36a22460-ebc8-4ffe-a213-1683c5a420c5')\n```",
    perLanguage: {
      typescript: {
        method: 'client.userEnrolments.setIndividualPartyProfile',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.userEnrolments.setIndividualPartyProfile('36a22460-ebc8-4ffe-a213-1683c5a420c5');",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/user-enrolments/$ENROLMENT_ID:set-individual-party-profile \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "dateOfBirth": "2022-03-10"\n        }\'',
      },
      kotlin: {
        method: 'userEnrolments().setIndividualPartyProfile',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.userenrolments.UserEnrolmentSetIndividualPartyProfileParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    client.userEnrolments().setIndividualPartyProfile("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n}',
      },
      java: {
        method: 'userEnrolments().setIndividualPartyProfile',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.userenrolments.UserEnrolmentSetIndividualPartyProfileParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        client.userEnrolments().setIndividualPartyProfile("36a22460-ebc8-4ffe-a213-1683c5a420c5");\n    }\n}',
      },
    },
  },
  {
    name: 'generateIdentityVerificationToken',
    endpoint: '/api/v1/user-enrolments/{enrolmentId}:generate-identity-verification-token',
    httpMethod: 'post',
    summary: 'Initiate User Identity Verification',
    description: 'Initiates user identity verification.',
    stainlessPath: '(resource) user-enrolments > (method) generateIdentityVerificationToken',
    qualified: 'client.userEnrolments.generateIdentityVerificationToken',
    params: ['enrolmentId: string;', 'X-Request-ID?: string;'],
    response: '{ token?: string; }',
    markdown:
      "## generateIdentityVerificationToken\n\n`client.userEnrolments.generateIdentityVerificationToken(enrolmentId: string, X-Request-ID?: string): { token?: string; }`\n\n**post** `/api/v1/user-enrolments/{enrolmentId}:generate-identity-verification-token`\n\nInitiates user identity verification.\n\n### Parameters\n\n- `enrolmentId: string`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ token?: string; }`\n\n  - `token?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.userEnrolments.generateIdentityVerificationToken('36a22460-ebc8-4ffe-a213-1683c5a420c5');\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.userEnrolments.generateIdentityVerificationToken',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.userEnrolments.generateIdentityVerificationToken(\n  '36a22460-ebc8-4ffe-a213-1683c5a420c5',\n);\n\nconsole.log(response.token);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/user-enrolments/$ENROLMENT_ID:generate-identity-verification-token \\\n    -X POST',
      },
      kotlin: {
        method: 'userEnrolments().generateIdentityVerificationToken',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.userenrolments.UserEnrolmentGenerateIdentityVerificationTokenParams\nimport com.plumery.api.models.userenrolments.UserEnrolmentGenerateIdentityVerificationTokenResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val response: UserEnrolmentGenerateIdentityVerificationTokenResponse = client.userEnrolments().generateIdentityVerificationToken("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n}',
      },
      java: {
        method: 'userEnrolments().generateIdentityVerificationToken',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.userenrolments.UserEnrolmentGenerateIdentityVerificationTokenParams;\nimport com.plumery.api.models.userenrolments.UserEnrolmentGenerateIdentityVerificationTokenResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        UserEnrolmentGenerateIdentityVerificationTokenResponse response = client.userEnrolments().generateIdentityVerificationToken("36a22460-ebc8-4ffe-a213-1683c5a420c5");\n    }\n}',
      },
    },
  },
  {
    name: 'setCardDetails',
    endpoint: '/api/v1/user-enrolments/{enrolmentId}:set-card-details',
    httpMethod: 'post',
    summary: 'Set card details',
    description: 'Initiates user identity verification.',
    stainlessPath: '(resource) user-enrolments > (method) setCardDetails',
    qualified: 'client.userEnrolments.setCardDetails',
    params: ['enrolmentId: string;', 'alias?: string;', 'type?: string;', 'X-Request-ID?: string;'],
    markdown:
      "## setCardDetails\n\n`client.userEnrolments.setCardDetails(enrolmentId: string, alias?: string, type?: string, X-Request-ID?: string): void`\n\n**post** `/api/v1/user-enrolments/{enrolmentId}:set-card-details`\n\nInitiates user identity verification.\n\n### Parameters\n\n- `enrolmentId: string`\n\n- `alias?: string`\n  The card alias.\n\n- `type?: string`\n  The Card Type.\n\nThe current set of possible values includes: \n- VIRTUAL\n\n Please note that new possible values can be added in the future.\n\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.userEnrolments.setCardDetails('36a22460-ebc8-4ffe-a213-1683c5a420c5')\n```",
    perLanguage: {
      typescript: {
        method: 'client.userEnrolments.setCardDetails',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.userEnrolments.setCardDetails('36a22460-ebc8-4ffe-a213-1683c5a420c5');",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/user-enrolments/$ENROLMENT_ID:set-card-details \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "alias": "Online Shopping",\n          "type": "VIRTUAL"\n        }\'',
      },
      kotlin: {
        method: 'userEnrolments().setCardDetails',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.userenrolments.UserEnrolmentSetCardDetailsParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    client.userEnrolments().setCardDetails("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n}',
      },
      java: {
        method: 'userEnrolments().setCardDetails',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.userenrolments.UserEnrolmentSetCardDetailsParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        client.userEnrolments().setCardDetails("36a22460-ebc8-4ffe-a213-1683c5a420c5");\n    }\n}',
      },
    },
  },
  {
    name: 'registerDevice',
    endpoint: '/api/v1/user-enrolments/{enrolmentId}:register-device',
    httpMethod: 'post',
    summary: 'Register Device',
    description:
      "Initiates the registration process for the user's device by accepting the device's public key and additional \ninformation.\n\nOnce the device signature is verified, using the 'Verify Device' endpoint, the generated device ID \ncan be used in the login process to establish a secure, authenticated connection.\n\n**Note:** if the device is not verified with signature, the registration process will not be completed, and the \ndevice will not be registered.",
    stainlessPath: '(resource) user-enrolments > (method) registerDevice',
    qualified: 'client.userEnrolments.registerDevice',
    params: ['enrolmentId: string;', 'publicKey: string;', 'info?: object;', 'X-Request-ID?: string;'],
    response:
      "{ deviceId: string; verification?: { endpoint?: '/api/v1/user-enrolments/{enrolmentId}:verify-device'; method?: 'SIGNATURE'; }; }",
    markdown:
      "## registerDevice\n\n`client.userEnrolments.registerDevice(enrolmentId: string, publicKey: string, info?: object, X-Request-ID?: string): { deviceId: string; verification?: object; }`\n\n**post** `/api/v1/user-enrolments/{enrolmentId}:register-device`\n\nInitiates the registration process for the user's device by accepting the device's public key and additional \ninformation.\n\nOnce the device signature is verified, using the 'Verify Device' endpoint, the generated device ID \ncan be used in the login process to establish a secure, authenticated connection.\n\n**Note:** if the device is not verified with signature, the registration process will not be completed, and the \ndevice will not be registered.\n\n### Parameters\n\n- `enrolmentId: string`\n\n- `publicKey: string`\n  The public key provided by the mobile device for the device registration process. It is used to bind the \ndevice to user profile. The corresponding private key is securely stored on the device.\n\n\n- `info?: object`\n  An optional key-value map containing additional information about the device. Each key and value must be a string. \nThe total character length of all keys and values combined must not exceed 4096 characters. This allows for additional\ncontextual data to be sent with the registration request, enhancing the information available for the registration process.\n\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ deviceId: string; verification?: { endpoint?: '/api/v1/user-enrolments/{enrolmentId}:verify-device'; method?: 'SIGNATURE'; }; }`\n\n  - `deviceId: string`\n  - `verification?: { endpoint?: '/api/v1/user-enrolments/{enrolmentId}:verify-device'; method?: 'SIGNATURE'; }`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.userEnrolments.registerDevice('36a22460-ebc8-4ffe-a213-1683c5a420c5', { publicKey: 'publicKey' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.userEnrolments.registerDevice',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.userEnrolments.registerDevice(\n  '36a22460-ebc8-4ffe-a213-1683c5a420c5',\n  { publicKey: 'publicKey' },\n);\n\nconsole.log(response.deviceId);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/user-enrolments/$ENROLMENT_ID:register-device \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "publicKey": "publicKey"\n        }\'',
      },
      kotlin: {
        method: 'userEnrolments().registerDevice',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.userenrolments.UserEnrolmentRegisterDeviceParams\nimport com.plumery.api.models.userenrolments.UserEnrolmentRegisterDeviceResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: UserEnrolmentRegisterDeviceParams = UserEnrolmentRegisterDeviceParams.builder()\n        .enrolmentId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .publicKey("publicKey")\n        .build()\n    val response: UserEnrolmentRegisterDeviceResponse = client.userEnrolments().registerDevice(params)\n}',
      },
      java: {
        method: 'userEnrolments().registerDevice',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.userenrolments.UserEnrolmentRegisterDeviceParams;\nimport com.plumery.api.models.userenrolments.UserEnrolmentRegisterDeviceResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        UserEnrolmentRegisterDeviceParams params = UserEnrolmentRegisterDeviceParams.builder()\n            .enrolmentId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .publicKey("publicKey")\n            .build();\n        UserEnrolmentRegisterDeviceResponse response = client.userEnrolments().registerDevice(params);\n    }\n}',
      },
    },
  },
  {
    name: 'verifyDevice',
    endpoint: '/api/v1/user-enrolments/{enrolmentId}:verify-device',
    httpMethod: 'post',
    summary: 'Verify Device',
    description:
      'Verifies the registered device by requiring a signature of the device ID, created using the private key \ncorresponding to the public key provided during the registration process.\n\n**Note:** if the device is not verified with signature, the registration process will not be completed, and the \ndevice will not be registered.\n',
    stainlessPath: '(resource) user-enrolments > (method) verifyDevice',
    qualified: 'client.userEnrolments.verifyDevice',
    params: ['enrolmentId: string;', 'signature?: string;', 'X-Request-ID?: string;'],
    markdown:
      "## verifyDevice\n\n`client.userEnrolments.verifyDevice(enrolmentId: string, signature?: string, X-Request-ID?: string): void`\n\n**post** `/api/v1/user-enrolments/{enrolmentId}:verify-device`\n\nVerifies the registered device by requiring a signature of the device ID, created using the private key \ncorresponding to the public key provided during the registration process.\n\n**Note:** if the device is not verified with signature, the registration process will not be completed, and the \ndevice will not be registered.\n\n\n### Parameters\n\n- `enrolmentId: string`\n\n- `signature?: string`\n  The cryptographic signature of the `deviceId`, created using the device's private key. This serves to prove \nthat the device possesses the corresponding private key for the public key provided during registration.\nThe signature is verified by the server to complete the device registration process.\n\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.userEnrolments.verifyDevice('36a22460-ebc8-4ffe-a213-1683c5a420c5')\n```",
    perLanguage: {
      typescript: {
        method: 'client.userEnrolments.verifyDevice',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.userEnrolments.verifyDevice('36a22460-ebc8-4ffe-a213-1683c5a420c5');",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/user-enrolments/$ENROLMENT_ID:verify-device \\\n    -X POST',
      },
      kotlin: {
        method: 'userEnrolments().verifyDevice',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.userenrolments.UserEnrolmentVerifyDeviceParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    client.userEnrolments().verifyDevice("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n}',
      },
      java: {
        method: 'userEnrolments().verifyDevice',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.userenrolments.UserEnrolmentVerifyDeviceParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        client.userEnrolments().verifyDevice("36a22460-ebc8-4ffe-a213-1683c5a420c5");\n    }\n}',
      },
    },
  },
  {
    name: 'initiateIdentityAuthentication',
    endpoint: '/api/v1/user-enrolments/{enrolmentId}:initiate-identity-authentication',
    httpMethod: 'post',
    summary: 'Initiate Identity Authentication',
    description:
      'Initiates identity authentication using an external provider (e.g., Mobile-ID, Smart-ID).\nReturns a short **verification code** that the user must compare/confirm in their app.\n',
    stainlessPath: '(resource) user-enrolments > (method) initiateIdentityAuthentication',
    qualified: 'client.userEnrolments.initiateIdentityAuthentication',
    params: [
      'enrolmentId: string;',
      "body: { method: 'MOBILE_ID'; personalId: string; phoneNumber: string; } | { country: string; method: 'SMART_ID'; personalId: string; } | { attributes: object; method: string; };",
      'accept-language?: string;',
      'X-Request-ID?: string;',
    ],
    response: '{ code: string; }',
    perLanguage: {
      typescript: {
        method: 'client.userEnrolments.initiateIdentityAuthentication',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.userEnrolments.initiateIdentityAuthentication(\n  '36a22460-ebc8-4ffe-a213-1683c5a420c5',\n  {\n    method: 'MOBILE_ID',\n    personalId: '49001010001',\n    phoneNumber: '+37069584868',\n  },\n);\n\nconsole.log(response.code);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/user-enrolments/$ENROLMENT_ID:initiate-identity-authentication \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "method": "MOBILE_ID",\n          "personalId": "49001010001",\n          "phoneNumber": "+37069584868"\n        }\'',
      },
      kotlin: {
        method: 'userEnrolments().initiateIdentityAuthentication',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.userenrolments.UserEnrolmentInitiateIdentityAuthenticationParams\nimport com.plumery.api.models.userenrolments.UserEnrolmentInitiateIdentityAuthenticationResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: UserEnrolmentInitiateIdentityAuthenticationParams = UserEnrolmentInitiateIdentityAuthenticationParams.builder()\n        .enrolmentId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .body(UserEnrolmentInitiateIdentityAuthenticationParams.Body.MobileId.builder()\n            .personalId("49001010001")\n            .phoneNumber("+37069584868")\n            .build())\n        .build()\n    val response: UserEnrolmentInitiateIdentityAuthenticationResponse = client.userEnrolments().initiateIdentityAuthentication(params)\n}',
      },
      java: {
        method: 'userEnrolments().initiateIdentityAuthentication',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.userenrolments.UserEnrolmentInitiateIdentityAuthenticationParams;\nimport com.plumery.api.models.userenrolments.UserEnrolmentInitiateIdentityAuthenticationResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        UserEnrolmentInitiateIdentityAuthenticationParams params = UserEnrolmentInitiateIdentityAuthenticationParams.builder()\n            .enrolmentId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .body(UserEnrolmentInitiateIdentityAuthenticationParams.Body.MobileId.builder()\n                .personalId("49001010001")\n                .phoneNumber("+37069584868")\n                .build())\n            .build();\n        UserEnrolmentInitiateIdentityAuthenticationResponse response = client.userEnrolments().initiateIdentityAuthentication(params);\n    }\n}',
      },
    },
  },
  {
    name: 'verifyIdentityAuthentication',
    endpoint: '/api/v1/user-enrolments/{enrolmentId}:verify-identity-authentication',
    httpMethod: 'post',
    summary: 'Verify Identity Authentication',
    description:
      'Completes identity authentication after the user confirms the challenge in their app.\nNo request body is required; the current pending authentication is verified.\n',
    stainlessPath: '(resource) user-enrolments > (method) verifyIdentityAuthentication',
    qualified: 'client.userEnrolments.verifyIdentityAuthentication',
    params: ['enrolmentId: string;', 'X-Request-ID?: string;'],
    markdown:
      "## verifyIdentityAuthentication\n\n`client.userEnrolments.verifyIdentityAuthentication(enrolmentId: string, X-Request-ID?: string): void`\n\n**post** `/api/v1/user-enrolments/{enrolmentId}:verify-identity-authentication`\n\nCompletes identity authentication after the user confirms the challenge in their app.\nNo request body is required; the current pending authentication is verified.\n\n\n### Parameters\n\n- `enrolmentId: string`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.userEnrolments.verifyIdentityAuthentication('36a22460-ebc8-4ffe-a213-1683c5a420c5')\n```",
    perLanguage: {
      typescript: {
        method: 'client.userEnrolments.verifyIdentityAuthentication',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.userEnrolments.verifyIdentityAuthentication('36a22460-ebc8-4ffe-a213-1683c5a420c5');",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/user-enrolments/$ENROLMENT_ID:verify-identity-authentication \\\n    -X POST',
      },
      kotlin: {
        method: 'userEnrolments().verifyIdentityAuthentication',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.userenrolments.UserEnrolmentVerifyIdentityAuthenticationParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    client.userEnrolments().verifyIdentityAuthentication("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n}',
      },
      java: {
        method: 'userEnrolments().verifyIdentityAuthentication',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.userenrolments.UserEnrolmentVerifyIdentityAuthenticationParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        client.userEnrolments().verifyIdentityAuthentication("36a22460-ebc8-4ffe-a213-1683c5a420c5");\n    }\n}',
      },
    },
  },
  {
    name: 'accept',
    endpoint: '/api/v1/user-enrolments/{enrolmentId}/legal-agreements:accept',
    httpMethod: 'post',
    summary: 'Accept Legal Agreements',
    description: 'Record the user acceptance of the presented legal agreements.',
    stainlessPath: '(resource) user-enrolments.legal-agreements > (method) accept',
    qualified: 'client.userEnrolments.legalAgreements.accept',
    params: [
      'enrolmentId: string;',
      'legalAgreements: { type: string; version: string; }[];',
      'X-Request-ID?: string;',
    ],
    markdown:
      "## accept\n\n`client.userEnrolments.legalAgreements.accept(enrolmentId: string, legalAgreements: { type: string; version: string; }[], X-Request-ID?: string): void`\n\n**post** `/api/v1/user-enrolments/{enrolmentId}/legal-agreements:accept`\n\nRecord the user acceptance of the presented legal agreements.\n\n### Parameters\n\n- `enrolmentId: string`\n\n- `legalAgreements: { type: string; version: string; }[]`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.userEnrolments.legalAgreements.accept('36a22460-ebc8-4ffe-a213-1683c5a420c5', { legalAgreements: [{ type: 'terms and conditions', version: '1.0' }] })\n```",
    perLanguage: {
      typescript: {
        method: 'client.userEnrolments.legalAgreements.accept',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.userEnrolments.legalAgreements.accept('36a22460-ebc8-4ffe-a213-1683c5a420c5', {\n  legalAgreements: [{ type: 'terms and conditions', version: '1.0' }],\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/user-enrolments/$ENROLMENT_ID/legal-agreements:accept \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "legalAgreements": [\n            {\n              "type": "terms and conditions",\n              "version": "1.0"\n            }\n          ]\n        }\'',
      },
      kotlin: {
        method: 'userEnrolments().legalAgreements().accept',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.userenrolments.legalagreements.LegalAgreementAcceptParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: LegalAgreementAcceptParams = LegalAgreementAcceptParams.builder()\n        .enrolmentId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .addLegalAgreement(LegalAgreementAcceptParams.LegalAgreement.builder()\n            .type("terms and conditions")\n            .version("1.0")\n            .build())\n        .build()\n    client.userEnrolments().legalAgreements().accept(params)\n}',
      },
      java: {
        method: 'userEnrolments().legalAgreements().accept',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.userenrolments.legalagreements.LegalAgreementAcceptParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        LegalAgreementAcceptParams params = LegalAgreementAcceptParams.builder()\n            .enrolmentId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .addLegalAgreement(LegalAgreementAcceptParams.LegalAgreement.builder()\n                .type("terms and conditions")\n                .version("1.0")\n                .build())\n            .build();\n        client.userEnrolments().legalAgreements().accept(params);\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/user-enrolments/steps/{enrolmentType}',
    httpMethod: 'get',
    summary: 'Get all Enrolment steps',
    description: 'Gets all possible steps for provided enrolment type',
    stainlessPath: '(resource) user-enrolments.steps > (method) retrieve',
    qualified: 'client.userEnrolments.steps.retrieve',
    params: [
      "enrolmentType: 'PERSONAL_ACCOUNT' | 'BUSINESS_ACCOUNT' | 'TEAM_MEMBER' | 'PERSONAL_LOAN_ACCOUNT';",
      'X-Request-ID?: string;',
    ],
    response: '{ enrolmentFlow?: { isMandatory?: boolean; step?: string; }[]; }',
    markdown:
      "## retrieve\n\n`client.userEnrolments.steps.retrieve(enrolmentType: 'PERSONAL_ACCOUNT' | 'BUSINESS_ACCOUNT' | 'TEAM_MEMBER' | 'PERSONAL_LOAN_ACCOUNT', X-Request-ID?: string): { enrolmentFlow?: object[]; }`\n\n**get** `/api/v1/user-enrolments/steps/{enrolmentType}`\n\nGets all possible steps for provided enrolment type\n\n### Parameters\n\n- `enrolmentType: 'PERSONAL_ACCOUNT' | 'BUSINESS_ACCOUNT' | 'TEAM_MEMBER' | 'PERSONAL_LOAN_ACCOUNT'`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ enrolmentFlow?: { isMandatory?: boolean; step?: string; }[]; }`\n  All possible steps for the flow backed by the enrolment type\n\n  - `enrolmentFlow?: { isMandatory?: boolean; step?: string; }[]`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst step = await client.userEnrolments.steps.retrieve('PERSONAL_ACCOUNT');\n\nconsole.log(step);\n```",
    perLanguage: {
      typescript: {
        method: 'client.userEnrolments.steps.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst step = await client.userEnrolments.steps.retrieve('PERSONAL_ACCOUNT');\n\nconsole.log(step.enrolmentFlow);",
      },
      http: {
        example: 'curl https://api.plumery.com/api/v1/user-enrolments/steps/$ENROLMENT_TYPE',
      },
      kotlin: {
        method: 'userEnrolments().steps().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.userenrolments.steps.StepRetrieveParams\nimport com.plumery.api.models.userenrolments.steps.StepRetrieveResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val step: StepRetrieveResponse = client.userEnrolments().steps().retrieve(StepRetrieveParams.EnrolmentType.PERSONAL_ACCOUNT)\n}',
      },
      java: {
        method: 'userEnrolments().steps().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.userenrolments.steps.StepRetrieveParams;\nimport com.plumery.api.models.userenrolments.steps.StepRetrieveResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        StepRetrieveResponse step = client.userEnrolments().steps().retrieve(StepRetrieveParams.EnrolmentType.PERSONAL_ACCOUNT);\n    }\n}',
      },
    },
  },
  {
    name: 'create',
    endpoint: '/api/v1/loan-applications',
    httpMethod: 'post',
    summary: 'Initiate New Loan Application',
    description:
      'Initiate the loan application process. This should always be the first step of the loan application process.',
    stainlessPath: '(resource) loan-applications > (method) create',
    qualified: 'client.loanApplications.create',
    params: ["loanApplicationType: 'RETAIL' | 'BUSINESS';", 'productId?: string;', 'X-Request-ID?: string;'],
    response: '{ loanApplicationId?: string; }',
    markdown:
      "## create\n\n`client.loanApplications.create(loanApplicationType: 'RETAIL' | 'BUSINESS', productId?: string, X-Request-ID?: string): { loanApplicationId?: string; }`\n\n**post** `/api/v1/loan-applications`\n\nInitiate the loan application process. This should always be the first step of the loan application process.\n\n### Parameters\n\n- `loanApplicationType: 'RETAIL' | 'BUSINESS'`\n\n- `productId?: string`\n  The loan product id from core banking engine. Mandatory for business loan applications.\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ loanApplicationId?: string; }`\n\n  - `loanApplicationId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst loanApplication = await client.loanApplications.create({ loanApplicationType: 'RETAIL' });\n\nconsole.log(loanApplication);\n```",
    perLanguage: {
      typescript: {
        method: 'client.loanApplications.create',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst loanApplication = await client.loanApplications.create({ loanApplicationType: 'RETAIL' });\n\nconsole.log(loanApplication.loanApplicationId);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/loan-applications \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "loanApplicationType": "RETAIL"\n        }\'',
      },
      kotlin: {
        method: 'loanApplications().create',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.loanapplications.LoanApplicationCreateParams\nimport com.plumery.api.models.loanapplications.LoanApplicationCreateResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: LoanApplicationCreateParams = LoanApplicationCreateParams.builder()\n        .loanApplicationType(LoanApplicationCreateParams.LoanApplicationType.RETAIL)\n        .build()\n    val loanApplication: LoanApplicationCreateResponse = client.loanApplications().create(params)\n}',
      },
      java: {
        method: 'loanApplications().create',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.loanapplications.LoanApplicationCreateParams;\nimport com.plumery.api.models.loanapplications.LoanApplicationCreateResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        LoanApplicationCreateParams params = LoanApplicationCreateParams.builder()\n            .loanApplicationType(LoanApplicationCreateParams.LoanApplicationType.RETAIL)\n            .build();\n        LoanApplicationCreateResponse loanApplication = client.loanApplications().create(params);\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/loan-applications/{loanApplicationId}',
    httpMethod: 'get',
    summary: 'Get application details by ID',
    description: 'Get loan application details by ID.',
    stainlessPath: '(resource) loan-applications > (method) retrieve',
    qualified: 'client.loanApplications.retrieve',
    params: ['loanApplicationId: string;', 'X-Request-ID?: string;'],
    response:
      "{ id?: string; businessDetails?: object; collateralDetails?: object; employmentDetails?: object; financialInformation?: object; housingDetails?: object; loanDetails?: object; offer?: object; personalDetails?: object; purposeDetails?: string; status?: 'RCVD' | 'ACPT' | 'RJCT'; }",
    markdown:
      "## retrieve\n\n`client.loanApplications.retrieve(loanApplicationId: string, X-Request-ID?: string): { id?: string; businessDetails?: object; collateralDetails?: object; employmentDetails?: object; financialInformation?: object; housingDetails?: object; loanDetails?: object; offer?: object; personalDetails?: object; purposeDetails?: string; status?: 'RCVD' | 'ACPT' | 'RJCT'; }`\n\n**get** `/api/v1/loan-applications/{loanApplicationId}`\n\nGet loan application details by ID.\n\n### Parameters\n\n- `loanApplicationId: string`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ id?: string; businessDetails?: { annualRevenue: { amount: number; currency: string; }; businessType: string; numberOfEmployees: number; yearsInBusiness: number; }; collateralDetails?: { condition: 'EXCELLENT' | 'GOOD' | 'FAIR'; description: string; type: 'VEHICLE' | 'PROPERTY' | 'EQUIPMENT'; value: { amount: number; currency: string; }; }; employmentDetails?: { employmentStatus: 'EMPLOYED' | 'HOMEMAKER' | 'UNEMPLOYED' | 'RETIRED' | 'SELF_EMPLOYED'; incomeFrequency: 'MONTHLY' | 'FORTNIGHTLY' | 'WEEKLY' | 'UNDEFINED'; monthlyIncome: { amount: number; currency: string; }; occupation: string; originOfResources: string; }; financialInformation?: { monthlyExpenses: { amount: number; currency: string; }; monthlyRevenue: { amount: number; currency: string; }; netMonthlyProfit: { amount: number; currency: string; }; }; housingDetails?: { housingSituation: 'RENTER' | 'HOMEOWNER_WITH_MORTGAGE' | 'HOMEOWNER_WITHOUT_MORTGAGE'; monthlyHousingCost: { amount: number; currency: string; }; yearsLivingAtHome: number; landlinePhoneNumber?: string; }; loanDetails?: { firstRepaymentDate: string; loanAmount: { amount: number; currency: string; }; loanDuration: number; repaymentInterval?: number; repaymentUnit?: 'MONTHS'; }; offer?: { amount?: number; currencyCode?: string; firstRepaymentDate?: string; offerId?: string; periodCount?: number; }; personalDetails?: { creditDestination: string; everDivorced: boolean; financialDependents: number; maritalStatus: string; monthlyExpenses: { amount: number; currency: string; }; signatureSerialNumber?: string; }; purposeDetails?: string; status?: 'RCVD' | 'ACPT' | 'RJCT'; }`\n\n  - `id?: string`\n  - `businessDetails?: { annualRevenue: { amount: number; currency: string; }; businessType: string; numberOfEmployees: number; yearsInBusiness: number; }`\n  - `collateralDetails?: { condition: 'EXCELLENT' | 'GOOD' | 'FAIR'; description: string; type: 'VEHICLE' | 'PROPERTY' | 'EQUIPMENT'; value: { amount: number; currency: string; }; }`\n  - `employmentDetails?: { employmentStatus: 'EMPLOYED' | 'HOMEMAKER' | 'UNEMPLOYED' | 'RETIRED' | 'SELF_EMPLOYED'; incomeFrequency: 'MONTHLY' | 'FORTNIGHTLY' | 'WEEKLY' | 'UNDEFINED'; monthlyIncome: { amount: number; currency: string; }; occupation: string; originOfResources: string; }`\n  - `financialInformation?: { monthlyExpenses: { amount: number; currency: string; }; monthlyRevenue: { amount: number; currency: string; }; netMonthlyProfit: { amount: number; currency: string; }; }`\n  - `housingDetails?: { housingSituation: 'RENTER' | 'HOMEOWNER_WITH_MORTGAGE' | 'HOMEOWNER_WITHOUT_MORTGAGE'; monthlyHousingCost: { amount: number; currency: string; }; yearsLivingAtHome: number; landlinePhoneNumber?: string; }`\n  - `loanDetails?: { firstRepaymentDate: string; loanAmount: { amount: number; currency: string; }; loanDuration: number; repaymentInterval?: number; repaymentUnit?: 'MONTHS'; }`\n  - `offer?: { amount?: number; currencyCode?: string; firstRepaymentDate?: string; offerId?: string; periodCount?: number; }`\n  - `personalDetails?: { creditDestination: string; everDivorced: boolean; financialDependents: number; maritalStatus: string; monthlyExpenses: { amount: number; currency: string; }; signatureSerialNumber?: string; }`\n  - `purposeDetails?: string`\n  - `status?: 'RCVD' | 'ACPT' | 'RJCT'`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst loanApplication = await client.loanApplications.retrieve('36a22460-ebc8-4ffe-a213-1683c5a420c5');\n\nconsole.log(loanApplication);\n```",
    perLanguage: {
      typescript: {
        method: 'client.loanApplications.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst loanApplication = await client.loanApplications.retrieve(\n  '36a22460-ebc8-4ffe-a213-1683c5a420c5',\n);\n\nconsole.log(loanApplication.id);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/loan-applications/$LOAN_APPLICATION_ID \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'loanApplications().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.loanapplications.LoanApplicationRetrieveParams\nimport com.plumery.api.models.loanapplications.LoanApplicationRetrieveResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val loanApplication: LoanApplicationRetrieveResponse = client.loanApplications().retrieve("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n}',
      },
      java: {
        method: 'loanApplications().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.loanapplications.LoanApplicationRetrieveParams;\nimport com.plumery.api.models.loanapplications.LoanApplicationRetrieveResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        LoanApplicationRetrieveResponse loanApplication = client.loanApplications().retrieve("36a22460-ebc8-4ffe-a213-1683c5a420c5");\n    }\n}',
      },
    },
  },
  {
    name: 'previewSchedule',
    endpoint: '/api/v1/loan-applications/{loanApplicationId}:preview-schedule',
    httpMethod: 'post',
    summary: 'Generate A Loan Schedule Preview',
    description: 'Generate a schedule preview for a loan application.',
    stainlessPath: '(resource) loan-applications > (method) previewSchedule',
    qualified: 'client.loanApplications.previewSchedule',
    params: [
      'loanApplicationId: string;',
      "loanDetails: { firstRepaymentDate: string; loanAmount: { amount: number; currency: string; }; loanDuration: number; repaymentInterval?: number; repaymentUnit?: 'MONTHS'; };",
      'X-Request-ID?: string;',
    ],
    response:
      '{ installments?: { feeAmount?: { amount: number; currency: string; }; feeTaxAmount?: { amount: number; currency: string; }; interestAmount?: { amount: number; currency: string; }; interestTaxAmount?: { amount: number; currency: string; }; number?: number; principalAmount?: { amount: number; currency: string; }; repaymentDate?: string; }[]; }',
    markdown:
      "## previewSchedule\n\n`client.loanApplications.previewSchedule(loanApplicationId: string, loanDetails: { firstRepaymentDate: string; loanAmount: { amount: number; currency: string; }; loanDuration: number; repaymentInterval?: number; repaymentUnit?: 'MONTHS'; }, X-Request-ID?: string): { installments?: object[]; }`\n\n**post** `/api/v1/loan-applications/{loanApplicationId}:preview-schedule`\n\nGenerate a schedule preview for a loan application.\n\n### Parameters\n\n- `loanApplicationId: string`\n\n- `loanDetails: { firstRepaymentDate: string; loanAmount: { amount: number; currency: string; }; loanDuration: number; repaymentInterval?: number; repaymentUnit?: 'MONTHS'; }`\n  - `firstRepaymentDate: string`\n  - `loanAmount: { amount: number; currency: string; }`\n  - `loanDuration: number`\n  - `repaymentInterval?: number`\n  - `repaymentUnit?: 'MONTHS'`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ installments?: { feeAmount?: { amount: number; currency: string; }; feeTaxAmount?: { amount: number; currency: string; }; interestAmount?: { amount: number; currency: string; }; interestTaxAmount?: { amount: number; currency: string; }; number?: number; principalAmount?: { amount: number; currency: string; }; repaymentDate?: string; }[]; }`\n\n  - `installments?: { feeAmount?: { amount: number; currency: string; }; feeTaxAmount?: { amount: number; currency: string; }; interestAmount?: { amount: number; currency: string; }; interestTaxAmount?: { amount: number; currency: string; }; number?: number; principalAmount?: { amount: number; currency: string; }; repaymentDate?: string; }[]`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.loanApplications.previewSchedule('36a22460-ebc8-4ffe-a213-1683c5a420c5', { loanDetails: {\n  firstRepaymentDate: 'firstRepaymentDate',\n  loanAmount: { amount: 0, currency: 'EUR' },\n  loanDuration: 0,\n} });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.loanApplications.previewSchedule',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.loanApplications.previewSchedule(\n  '36a22460-ebc8-4ffe-a213-1683c5a420c5',\n  {\n    loanDetails: {\n      firstRepaymentDate: 'firstRepaymentDate',\n      loanAmount: { amount: 0, currency: 'EUR' },\n      loanDuration: 0,\n    },\n  },\n);\n\nconsole.log(response.installments);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/loan-applications/$LOAN_APPLICATION_ID:preview-schedule \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "loanDetails": {\n            "firstRepaymentDate": "firstRepaymentDate",\n            "loanAmount": {\n              "amount": 0,\n              "currency": "EUR"\n            },\n            "loanDuration": 0\n          }\n        }\'',
      },
      kotlin: {
        method: 'loanApplications().previewSchedule',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.loanapplications.LoanApplicationPreviewScheduleParams\nimport com.plumery.api.models.loanapplications.LoanApplicationPreviewScheduleResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: LoanApplicationPreviewScheduleParams = LoanApplicationPreviewScheduleParams.builder()\n        .loanApplicationId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .loanDetails(LoanApplicationPreviewScheduleParams.LoanDetails.builder()\n            .firstRepaymentDate("firstRepaymentDate")\n            .loanAmount(LoanApplicationPreviewScheduleParams.LoanDetails.LoanAmount.builder()\n                .amount(0.0)\n                .currency("EUR")\n                .build())\n            .loanDuration(0)\n            .build())\n        .build()\n    val response: LoanApplicationPreviewScheduleResponse = client.loanApplications().previewSchedule(params)\n}',
      },
      java: {
        method: 'loanApplications().previewSchedule',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.loanapplications.LoanApplicationPreviewScheduleParams;\nimport com.plumery.api.models.loanapplications.LoanApplicationPreviewScheduleResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        LoanApplicationPreviewScheduleParams params = LoanApplicationPreviewScheduleParams.builder()\n            .loanApplicationId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .loanDetails(LoanApplicationPreviewScheduleParams.LoanDetails.builder()\n                .firstRepaymentDate("firstRepaymentDate")\n                .loanAmount(LoanApplicationPreviewScheduleParams.LoanDetails.LoanAmount.builder()\n                    .amount(0.0)\n                    .currency("EUR")\n                    .build())\n                .loanDuration(0)\n                .build())\n            .build();\n        LoanApplicationPreviewScheduleResponse response = client.loanApplications().previewSchedule(params);\n    }\n}',
      },
    },
  },
  {
    name: 'submitApplicationDetails',
    endpoint: '/api/v1/loan-applications/{loanApplicationId}:submit-application-details',
    httpMethod: 'post',
    summary: 'Submit Application Details',
    description: 'Triggers the application details submission.',
    stainlessPath: '(resource) loan-applications > (method) submitApplicationDetails',
    qualified: 'client.loanApplications.submitApplicationDetails',
    params: [
      'loanApplicationId: string;',
      "employmentDetails: { employmentStatus: 'EMPLOYED' | 'HOMEMAKER' | 'UNEMPLOYED' | 'RETIRED' | 'SELF_EMPLOYED'; incomeFrequency: 'MONTHLY' | 'FORTNIGHTLY' | 'WEEKLY' | 'UNDEFINED'; monthlyIncome: { amount: number; currency: string; }; occupation: string; originOfResources: string; };",
      "housingDetails: { housingSituation: 'RENTER' | 'HOMEOWNER_WITH_MORTGAGE' | 'HOMEOWNER_WITHOUT_MORTGAGE'; monthlyHousingCost: { amount: number; currency: string; }; yearsLivingAtHome: number; landlinePhoneNumber?: string; };",
      'personalDetails: { creditDestination: string; everDivorced: boolean; financialDependents: number; maritalStatus: string; monthlyExpenses: { amount: number; currency: string; }; signatureSerialNumber?: string; };',
      'X-Request-ID?: string;',
    ],
    markdown:
      "## submitApplicationDetails\n\n`client.loanApplications.submitApplicationDetails(loanApplicationId: string, employmentDetails: { employmentStatus: 'EMPLOYED' | 'HOMEMAKER' | 'UNEMPLOYED' | 'RETIRED' | 'SELF_EMPLOYED'; incomeFrequency: 'MONTHLY' | 'FORTNIGHTLY' | 'WEEKLY' | 'UNDEFINED'; monthlyIncome: { amount: number; currency: string; }; occupation: string; originOfResources: string; }, housingDetails: { housingSituation: 'RENTER' | 'HOMEOWNER_WITH_MORTGAGE' | 'HOMEOWNER_WITHOUT_MORTGAGE'; monthlyHousingCost: { amount: number; currency: string; }; yearsLivingAtHome: number; landlinePhoneNumber?: string; }, personalDetails: { creditDestination: string; everDivorced: boolean; financialDependents: number; maritalStatus: string; monthlyExpenses: { amount: number; currency: string; }; signatureSerialNumber?: string; }, X-Request-ID?: string): void`\n\n**post** `/api/v1/loan-applications/{loanApplicationId}:submit-application-details`\n\nTriggers the application details submission.\n\n### Parameters\n\n- `loanApplicationId: string`\n\n- `employmentDetails: { employmentStatus: 'EMPLOYED' | 'HOMEMAKER' | 'UNEMPLOYED' | 'RETIRED' | 'SELF_EMPLOYED'; incomeFrequency: 'MONTHLY' | 'FORTNIGHTLY' | 'WEEKLY' | 'UNDEFINED'; monthlyIncome: { amount: number; currency: string; }; occupation: string; originOfResources: string; }`\n  - `employmentStatus: 'EMPLOYED' | 'HOMEMAKER' | 'UNEMPLOYED' | 'RETIRED' | 'SELF_EMPLOYED'`\n  - `incomeFrequency: 'MONTHLY' | 'FORTNIGHTLY' | 'WEEKLY' | 'UNDEFINED'`\n  - `monthlyIncome: { amount: number; currency: string; }`\n  - `occupation: string`\n  - `originOfResources: string`\n\n- `housingDetails: { housingSituation: 'RENTER' | 'HOMEOWNER_WITH_MORTGAGE' | 'HOMEOWNER_WITHOUT_MORTGAGE'; monthlyHousingCost: { amount: number; currency: string; }; yearsLivingAtHome: number; landlinePhoneNumber?: string; }`\n  - `housingSituation: 'RENTER' | 'HOMEOWNER_WITH_MORTGAGE' | 'HOMEOWNER_WITHOUT_MORTGAGE'`\n  - `monthlyHousingCost: { amount: number; currency: string; }`\n  - `yearsLivingAtHome: number`\n  - `landlinePhoneNumber?: string`\n\n- `personalDetails: { creditDestination: string; everDivorced: boolean; financialDependents: number; maritalStatus: string; monthlyExpenses: { amount: number; currency: string; }; signatureSerialNumber?: string; }`\n  - `creditDestination: string`\n  - `everDivorced: boolean`\n  - `financialDependents: number`\n  - `maritalStatus: string`\n  - `monthlyExpenses: { amount: number; currency: string; }`\n  - `signatureSerialNumber?: string`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.loanApplications.submitApplicationDetails('36a22460-ebc8-4ffe-a213-1683c5a420c5', {\n  employmentDetails: {\n  employmentStatus: 'EMPLOYED',\n  incomeFrequency: 'MONTHLY',\n  monthlyIncome: { amount: 0, currency: 'EUR' },\n  occupation: 'Developer',\n  originOfResources: 'Salary',\n},\n  housingDetails: {\n  housingSituation: 'RENTER',\n  monthlyHousingCost: { amount: 0, currency: 'EUR' },\n  yearsLivingAtHome: 0,\n},\n  personalDetails: {\n  creditDestination: 'Personal',\n  everDivorced: true,\n  financialDependents: 0,\n  maritalStatus: 'Married',\n  monthlyExpenses: { amount: 0, currency: 'EUR' },\n},\n})\n```",
    perLanguage: {
      typescript: {
        method: 'client.loanApplications.submitApplicationDetails',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.loanApplications.submitApplicationDetails('36a22460-ebc8-4ffe-a213-1683c5a420c5', {\n  employmentDetails: {\n    employmentStatus: 'EMPLOYED',\n    incomeFrequency: 'MONTHLY',\n    monthlyIncome: { amount: 0, currency: 'EUR' },\n    occupation: 'Developer',\n    originOfResources: 'Salary',\n  },\n  housingDetails: {\n    housingSituation: 'RENTER',\n    monthlyHousingCost: { amount: 0, currency: 'EUR' },\n    yearsLivingAtHome: 0,\n  },\n  personalDetails: {\n    creditDestination: 'Personal',\n    everDivorced: true,\n    financialDependents: 0,\n    maritalStatus: 'Married',\n    monthlyExpenses: { amount: 0, currency: 'EUR' },\n  },\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/loan-applications/$LOAN_APPLICATION_ID:submit-application-details \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "employmentDetails": {\n            "employmentStatus": "EMPLOYED",\n            "incomeFrequency": "MONTHLY",\n            "monthlyIncome": {\n              "amount": 0,\n              "currency": "EUR"\n            },\n            "occupation": "Developer",\n            "originOfResources": "Salary"\n          },\n          "housingDetails": {\n            "housingSituation": "RENTER",\n            "monthlyHousingCost": {\n              "amount": 0,\n              "currency": "EUR"\n            },\n            "yearsLivingAtHome": 0\n          },\n          "personalDetails": {\n            "creditDestination": "Personal",\n            "everDivorced": true,\n            "financialDependents": 0,\n            "maritalStatus": "Married",\n            "monthlyExpenses": {\n              "amount": 0,\n              "currency": "EUR"\n            }\n          }\n        }\'',
      },
      kotlin: {
        method: 'loanApplications().submitApplicationDetails',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.loanapplications.LoanApplicationSubmitApplicationDetailsParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: LoanApplicationSubmitApplicationDetailsParams = LoanApplicationSubmitApplicationDetailsParams.builder()\n        .loanApplicationId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .employmentDetails(LoanApplicationSubmitApplicationDetailsParams.EmploymentDetails.builder()\n            .employmentStatus(LoanApplicationSubmitApplicationDetailsParams.EmploymentDetails.EmploymentStatus.EMPLOYED)\n            .incomeFrequency(LoanApplicationSubmitApplicationDetailsParams.EmploymentDetails.IncomeFrequency.MONTHLY)\n            .monthlyIncome(LoanApplicationSubmitApplicationDetailsParams.EmploymentDetails.MonthlyIncome.builder()\n                .amount(0.0)\n                .currency("EUR")\n                .build())\n            .occupation("Developer")\n            .originOfResources("Salary")\n            .build())\n        .housingDetails(LoanApplicationSubmitApplicationDetailsParams.HousingDetails.builder()\n            .housingSituation(LoanApplicationSubmitApplicationDetailsParams.HousingDetails.HousingSituation.RENTER)\n            .monthlyHousingCost(LoanApplicationSubmitApplicationDetailsParams.HousingDetails.MonthlyHousingCost.builder()\n                .amount(0.0)\n                .currency("EUR")\n                .build())\n            .yearsLivingAtHome(0)\n            .build())\n        .personalDetails(LoanApplicationSubmitApplicationDetailsParams.PersonalDetails.builder()\n            .creditDestination("Personal")\n            .everDivorced(true)\n            .financialDependents(0)\n            .maritalStatus("Married")\n            .monthlyExpenses(LoanApplicationSubmitApplicationDetailsParams.PersonalDetails.MonthlyExpenses.builder()\n                .amount(0.0)\n                .currency("EUR")\n                .build())\n            .build())\n        .build()\n    client.loanApplications().submitApplicationDetails(params)\n}',
      },
      java: {
        method: 'loanApplications().submitApplicationDetails',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.loanapplications.LoanApplicationSubmitApplicationDetailsParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        LoanApplicationSubmitApplicationDetailsParams params = LoanApplicationSubmitApplicationDetailsParams.builder()\n            .loanApplicationId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .employmentDetails(LoanApplicationSubmitApplicationDetailsParams.EmploymentDetails.builder()\n                .employmentStatus(LoanApplicationSubmitApplicationDetailsParams.EmploymentDetails.EmploymentStatus.EMPLOYED)\n                .incomeFrequency(LoanApplicationSubmitApplicationDetailsParams.EmploymentDetails.IncomeFrequency.MONTHLY)\n                .monthlyIncome(LoanApplicationSubmitApplicationDetailsParams.EmploymentDetails.MonthlyIncome.builder()\n                    .amount(0.0)\n                    .currency("EUR")\n                    .build())\n                .occupation("Developer")\n                .originOfResources("Salary")\n                .build())\n            .housingDetails(LoanApplicationSubmitApplicationDetailsParams.HousingDetails.builder()\n                .housingSituation(LoanApplicationSubmitApplicationDetailsParams.HousingDetails.HousingSituation.RENTER)\n                .monthlyHousingCost(LoanApplicationSubmitApplicationDetailsParams.HousingDetails.MonthlyHousingCost.builder()\n                    .amount(0.0)\n                    .currency("EUR")\n                    .build())\n                .yearsLivingAtHome(0)\n                .build())\n            .personalDetails(LoanApplicationSubmitApplicationDetailsParams.PersonalDetails.builder()\n                .creditDestination("Personal")\n                .everDivorced(true)\n                .financialDependents(0)\n                .maritalStatus("Married")\n                .monthlyExpenses(LoanApplicationSubmitApplicationDetailsParams.PersonalDetails.MonthlyExpenses.builder()\n                    .amount(0.0)\n                    .currency("EUR")\n                    .build())\n                .build())\n            .build();\n        client.loanApplications().submitApplicationDetails(params);\n    }\n}',
      },
    },
  },
  {
    name: 'submitCreditBureau',
    endpoint: '/api/v1/loan-applications/{loanApplicationId}:submit-credit-bureau',
    httpMethod: 'post',
    summary: 'Submit Information To The Credit Bureau',
    description: 'Triggers the submission of information to the credit bureau.',
    stainlessPath: '(resource) loan-applications > (method) submitCreditBureau',
    qualified: 'client.loanApplications.submitCreditBureau',
    params: ['loanApplicationId: string;', 'X-Request-ID?: string;'],
    markdown:
      "## submitCreditBureau\n\n`client.loanApplications.submitCreditBureau(loanApplicationId: string, X-Request-ID?: string): void`\n\n**post** `/api/v1/loan-applications/{loanApplicationId}:submit-credit-bureau`\n\nTriggers the submission of information to the credit bureau.\n\n### Parameters\n\n- `loanApplicationId: string`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.loanApplications.submitCreditBureau('36a22460-ebc8-4ffe-a213-1683c5a420c5')\n```",
    perLanguage: {
      typescript: {
        method: 'client.loanApplications.submitCreditBureau',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.loanApplications.submitCreditBureau('36a22460-ebc8-4ffe-a213-1683c5a420c5');",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/loan-applications/$LOAN_APPLICATION_ID:submit-credit-bureau \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'loanApplications().submitCreditBureau',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.loanapplications.LoanApplicationSubmitCreditBureauParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    client.loanApplications().submitCreditBureau("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n}',
      },
      java: {
        method: 'loanApplications().submitCreditBureau',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.loanapplications.LoanApplicationSubmitCreditBureauParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        client.loanApplications().submitCreditBureau("36a22460-ebc8-4ffe-a213-1683c5a420c5");\n    }\n}',
      },
    },
  },
  {
    name: 'generateOffer',
    endpoint: '/api/v1/loan-applications/{loanApplicationId}:generate-offer',
    httpMethod: 'post',
    summary: 'Generate Loan Offer',
    description: 'Generate offer taking into account information provided during loan application input.',
    stainlessPath: '(resource) loan-applications > (method) generateOffer',
    qualified: 'client.loanApplications.generateOffer',
    params: ['loanApplicationId: string;', 'X-Request-ID?: string;'],
    response:
      "{ installments?: { feeAmount?: { amount: number; currency: string; }; feeTaxAmount?: { amount: number; currency: string; }; interestAmount?: { amount: number; currency: string; }; interestTaxAmount?: { amount: number; currency: string; }; number?: number; principalAmount?: { amount: number; currency: string; }; repaymentDate?: string; }[]; loanDetails?: { firstRepaymentDate: string; interestRate: number; loanAmount: { amount: number; currency: string; }; loanDuration: number; repaymentInterval?: number; repaymentUnit?: 'MONTHS'; }; }",
    markdown:
      "## generateOffer\n\n`client.loanApplications.generateOffer(loanApplicationId: string, X-Request-ID?: string): { installments?: object[]; loanDetails?: object; }`\n\n**post** `/api/v1/loan-applications/{loanApplicationId}:generate-offer`\n\nGenerate offer taking into account information provided during loan application input.\n\n### Parameters\n\n- `loanApplicationId: string`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ installments?: { feeAmount?: { amount: number; currency: string; }; feeTaxAmount?: { amount: number; currency: string; }; interestAmount?: { amount: number; currency: string; }; interestTaxAmount?: { amount: number; currency: string; }; number?: number; principalAmount?: { amount: number; currency: string; }; repaymentDate?: string; }[]; loanDetails?: { firstRepaymentDate: string; interestRate: number; loanAmount: { amount: number; currency: string; }; loanDuration: number; repaymentInterval?: number; repaymentUnit?: 'MONTHS'; }; }`\n\n  - `installments?: { feeAmount?: { amount: number; currency: string; }; feeTaxAmount?: { amount: number; currency: string; }; interestAmount?: { amount: number; currency: string; }; interestTaxAmount?: { amount: number; currency: string; }; number?: number; principalAmount?: { amount: number; currency: string; }; repaymentDate?: string; }[]`\n  - `loanDetails?: { firstRepaymentDate: string; interestRate: number; loanAmount: { amount: number; currency: string; }; loanDuration: number; repaymentInterval?: number; repaymentUnit?: 'MONTHS'; }`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.loanApplications.generateOffer('36a22460-ebc8-4ffe-a213-1683c5a420c5');\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.loanApplications.generateOffer',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.loanApplications.generateOffer(\n  '36a22460-ebc8-4ffe-a213-1683c5a420c5',\n);\n\nconsole.log(response.installments);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/loan-applications/$LOAN_APPLICATION_ID:generate-offer \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'loanApplications().generateOffer',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.loanapplications.LoanApplicationGenerateOfferParams\nimport com.plumery.api.models.loanapplications.LoanApplicationGenerateOfferResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val response: LoanApplicationGenerateOfferResponse = client.loanApplications().generateOffer("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n}',
      },
      java: {
        method: 'loanApplications().generateOffer',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.loanapplications.LoanApplicationGenerateOfferParams;\nimport com.plumery.api.models.loanapplications.LoanApplicationGenerateOfferResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        LoanApplicationGenerateOfferResponse response = client.loanApplications().generateOffer("36a22460-ebc8-4ffe-a213-1683c5a420c5");\n    }\n}',
      },
    },
  },
  {
    name: 'acceptOffer',
    endpoint: '/api/v1/loan-applications/{loanApplicationId}:accept-offer',
    httpMethod: 'post',
    summary: 'Accept Loan Offer',
    description: 'Accept offer.',
    stainlessPath: '(resource) loan-applications > (method) acceptOffer',
    qualified: 'client.loanApplications.acceptOffer',
    params: ['loanApplicationId: string;', 'X-Request-ID?: string;'],
    response: '{ links?: { href?: string; rel?: string; }[]; }',
    markdown:
      "## acceptOffer\n\n`client.loanApplications.acceptOffer(loanApplicationId: string, X-Request-ID?: string): { links?: object[]; }`\n\n**post** `/api/v1/loan-applications/{loanApplicationId}:accept-offer`\n\nAccept offer.\n\n### Parameters\n\n- `loanApplicationId: string`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ links?: { href?: string; rel?: string; }[]; }`\n\n  - `links?: { href?: string; rel?: string; }[]`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.loanApplications.acceptOffer('36a22460-ebc8-4ffe-a213-1683c5a420c5');\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.loanApplications.acceptOffer',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.loanApplications.acceptOffer('36a22460-ebc8-4ffe-a213-1683c5a420c5');\n\nconsole.log(response.links);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/loan-applications/$LOAN_APPLICATION_ID:accept-offer \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'loanApplications().acceptOffer',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.loanapplications.LoanApplicationAcceptOfferParams\nimport com.plumery.api.models.loanapplications.LoanApplicationAcceptOfferResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val response: LoanApplicationAcceptOfferResponse = client.loanApplications().acceptOffer("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n}',
      },
      java: {
        method: 'loanApplications().acceptOffer',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.loanapplications.LoanApplicationAcceptOfferParams;\nimport com.plumery.api.models.loanapplications.LoanApplicationAcceptOfferResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        LoanApplicationAcceptOfferResponse response = client.loanApplications().acceptOffer("36a22460-ebc8-4ffe-a213-1683c5a420c5");\n    }\n}',
      },
    },
  },
  {
    name: 'setBankAccountDetails',
    endpoint: '/api/v1/loan-applications/{loanApplicationId}:set-bank-account-details',
    httpMethod: 'post',
    summary: 'Collect Bank Account Details',
    description: 'Collects bank account details for a loan application.',
    stainlessPath: '(resource) loan-applications > (method) setBankAccountDetails',
    qualified: 'client.loanApplications.setBankAccountDetails',
    params: [
      'loanApplicationId: string;',
      'accountNumber: string;',
      'bankNumber: string;',
      'accountName?: string;',
      'accountType?: string;',
      'bankName?: string;',
      'X-Request-ID?: string;',
    ],
    markdown:
      "## setBankAccountDetails\n\n`client.loanApplications.setBankAccountDetails(loanApplicationId: string, accountNumber: string, bankNumber: string, accountName?: string, accountType?: string, bankName?: string, X-Request-ID?: string): void`\n\n**post** `/api/v1/loan-applications/{loanApplicationId}:set-bank-account-details`\n\nCollects bank account details for a loan application.\n\n### Parameters\n\n- `loanApplicationId: string`\n\n- `accountNumber: string`\n\n- `bankNumber: string`\n\n- `accountName?: string`\n\n- `accountType?: string`\n\n- `bankName?: string`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.loanApplications.setBankAccountDetails('36a22460-ebc8-4ffe-a213-1683c5a420c5', { accountNumber: '123456789012345678', bankNumber: '123' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.loanApplications.setBankAccountDetails',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.loanApplications.setBankAccountDetails('36a22460-ebc8-4ffe-a213-1683c5a420c5', {\n  accountNumber: '123456789012345678',\n  bankNumber: '123',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/loan-applications/$LOAN_APPLICATION_ID:set-bank-account-details \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "accountNumber": "123456789012345678",\n          "bankNumber": "123",\n          "accountName": "Account Name",\n          "accountType": "Checking",\n          "bankName": "Bank Name"\n        }\'',
      },
      kotlin: {
        method: 'loanApplications().setBankAccountDetails',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.loanapplications.LoanApplicationSetBankAccountDetailsParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: LoanApplicationSetBankAccountDetailsParams = LoanApplicationSetBankAccountDetailsParams.builder()\n        .loanApplicationId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .accountNumber("123456789012345678")\n        .bankNumber("123")\n        .build()\n    client.loanApplications().setBankAccountDetails(params)\n}',
      },
      java: {
        method: 'loanApplications().setBankAccountDetails',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.loanapplications.LoanApplicationSetBankAccountDetailsParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        LoanApplicationSetBankAccountDetailsParams params = LoanApplicationSetBankAccountDetailsParams.builder()\n            .loanApplicationId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .accountNumber("123456789012345678")\n            .bankNumber("123")\n            .build();\n        client.loanApplications().setBankAccountDetails(params);\n    }\n}',
      },
    },
  },
  {
    name: 'uploadDocument',
    endpoint: '/api/v1/loan-applications/{loanApplicationId}:upload-document',
    httpMethod: 'post',
    summary: 'Upload Document',
    description: 'Upload a document for a loan application.',
    stainlessPath: '(resource) loan-applications > (method) uploadDocument',
    qualified: 'client.loanApplications.uploadDocument',
    params: [
      'loanApplicationId: string;',
      "documentType: 'INCOME_PROOF' | 'BUSINESS_LICENSE' | 'FINANCIAL_STATEMENTS';",
      'file: string;',
      'filename: string;',
      'X-Request-ID?: string;',
    ],
    markdown:
      "## uploadDocument\n\n`client.loanApplications.uploadDocument(loanApplicationId: string, documentType: 'INCOME_PROOF' | 'BUSINESS_LICENSE' | 'FINANCIAL_STATEMENTS', file: string, filename: string, X-Request-ID?: string): void`\n\n**post** `/api/v1/loan-applications/{loanApplicationId}:upload-document`\n\nUpload a document for a loan application.\n\n### Parameters\n\n- `loanApplicationId: string`\n\n- `documentType: 'INCOME_PROOF' | 'BUSINESS_LICENSE' | 'FINANCIAL_STATEMENTS'`\n\n- `file: string`\n\n- `filename: string`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.loanApplications.uploadDocument('36a22460-ebc8-4ffe-a213-1683c5a420c5', {\n  documentType: 'INCOME_PROOF',\n  file: fs.createReadStream('path/to/file'),\n  filename: 'filename',\n})\n```",
    perLanguage: {
      typescript: {
        method: 'client.loanApplications.uploadDocument',
        example:
          "import fs from 'fs';\nimport Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.loanApplications.uploadDocument('36a22460-ebc8-4ffe-a213-1683c5a420c5', {\n  documentType: 'INCOME_PROOF',\n  file: fs.createReadStream('path/to/file'),\n  filename: 'filename',\n});",
      },
      http: {
        example:
          "curl https://api.plumery.com/api/v1/loan-applications/$LOAN_APPLICATION_ID:upload-document \\\n    -H 'Content-Type: multipart/form-data' \\\n    -H \"Cookie: $SESSION\" \\\n    -F documentType=INCOME_PROOF \\\n    -F 'file=@/path/to/file' \\\n    -F filename=filename",
      },
      kotlin: {
        method: 'loanApplications().uploadDocument',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.loanapplications.LoanApplicationUploadDocumentParams\nimport java.io.ByteArrayInputStream\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: LoanApplicationUploadDocumentParams = LoanApplicationUploadDocumentParams.builder()\n        .loanApplicationId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .documentType(LoanApplicationUploadDocumentParams.DocumentType.INCOME_PROOF)\n        .file("Example data".byteInputStream())\n        .filename("filename")\n        .build()\n    client.loanApplications().uploadDocument(params)\n}',
      },
      java: {
        method: 'loanApplications().uploadDocument',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.loanapplications.LoanApplicationUploadDocumentParams;\nimport java.io.ByteArrayInputStream;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        LoanApplicationUploadDocumentParams params = LoanApplicationUploadDocumentParams.builder()\n            .loanApplicationId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .documentType(LoanApplicationUploadDocumentParams.DocumentType.INCOME_PROOF)\n            .file(new ByteArrayInputStream("Example data".getBytes()))\n            .filename("filename")\n            .build();\n        client.loanApplications().uploadDocument(params);\n    }\n}',
      },
    },
  },
  {
    name: 'list',
    endpoint: '/api/v1/parties/{partyId}/accounts',
    httpMethod: 'get',
    summary: 'List Accounts',
    description:
      "Allows retrieval of accounts associated with the current authorised user. It's possible to filter the accounts list by status or by cashAccountType.",
    stainlessPath: '(resource) parties.accounts > (method) list',
    qualified: 'client.parties.accounts.list',
    params: [
      'partyId: string;',
      'cashAccountType?: string[];',
      'iban?: string;',
      "status?: 'ENABLED' | 'DELETED' | 'BLOCKED'[];",
      'plmr-user-action?: boolean;',
    ],
    response:
      "{ accounts?: { accountId: string; currency: string; status: 'ENABLED' | 'DELETED' | 'BLOCKED'; additionalAttributes?: object; balances?: { balanceAmount: object; balanceType: 'closingBooked' | 'openingBooked' | 'interimAvailable' | 'interimBooked' | 'expected' | 'accrued'; creditLimitIncluded?: boolean; lastRetrievedDateTime?: string; }[]; bic?: string; cashAccountType?: string; creationDate?: string; details?: string; displayName?: string; identification?: { bban?: string; iban?: string; maskedPan?: string; msisdn?: string; other?: object; }; interestRate?: number; name?: string; ownerName?: string; product?: string; productId?: string; usage?: 'INDIVIDUAL' | 'ORGANISATION'; }[]; }",
    markdown:
      "## list\n\n`client.parties.accounts.list(partyId: string, cashAccountType?: string[], iban?: string, status?: 'ENABLED' | 'DELETED' | 'BLOCKED'[], plmr-user-action?: boolean): { accounts?: object[]; }`\n\n**get** `/api/v1/parties/{partyId}/accounts`\n\nAllows retrieval of accounts associated with the current authorised user. It's possible to filter the accounts list by status or by cashAccountType.\n\n### Parameters\n\n- `partyId: string`\n\n- `cashAccountType?: string[]`\n  A filter on the list based on the cashAccountType field. The value must be a 4 characters string as defined in ISO 20022\n\n\n- `iban?: string`\n  A filter on the account iban\n\n\n- `status?: 'ENABLED' | 'DELETED' | 'BLOCKED'[]`\n  A filter on the list based on the account status field. Available values:  \n  * ENABLED - account is available\n  * DELETED - account is terminated\n  * BLOCKED - account is blocked e.g. for legal reasons\n\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ accounts?: { accountId: string; currency: string; status: 'ENABLED' | 'DELETED' | 'BLOCKED'; additionalAttributes?: object; balances?: { balanceAmount: object; balanceType: 'closingBooked' | 'openingBooked' | 'interimAvailable' | 'interimBooked' | 'expected' | 'accrued'; creditLimitIncluded?: boolean; lastRetrievedDateTime?: string; }[]; bic?: string; cashAccountType?: string; creationDate?: string; details?: string; displayName?: string; identification?: { bban?: string; iban?: string; maskedPan?: string; msisdn?: string; other?: object; }; interestRate?: number; name?: string; ownerName?: string; product?: string; productId?: string; usage?: 'INDIVIDUAL' | 'ORGANISATION'; }[]; }`\n\n  - `accounts?: { accountId: string; currency: string; status: 'ENABLED' | 'DELETED' | 'BLOCKED'; additionalAttributes?: object; balances?: { balanceAmount: { amount: string; currency: string; }; balanceType: 'closingBooked' | 'openingBooked' | 'interimAvailable' | 'interimBooked' | 'expected' | 'accrued'; creditLimitIncluded?: boolean; lastRetrievedDateTime?: string; }[]; bic?: string; cashAccountType?: string; creationDate?: string; details?: string; displayName?: string; identification?: { bban?: string; iban?: string; maskedPan?: string; msisdn?: string; other?: { identification?: string; issuer?: string; schemeNameCode?: string; schemeNameProprietary?: string; }; }; interestRate?: number; name?: string; ownerName?: string; product?: string; productId?: string; usage?: 'INDIVIDUAL' | 'ORGANISATION'; }[]`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst accounts = await client.parties.accounts.list('6878951b-256b-4baa-9e81-ad4c577adc4e');\n\nconsole.log(accounts);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.accounts.list',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst accounts = await client.parties.accounts.list('6878951b-256b-4baa-9e81-ad4c577adc4e');\n\nconsole.log(accounts.accounts);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/accounts \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().accounts().list',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.accounts.AccountListParams\nimport com.plumery.api.models.parties.accounts.AccountListResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val accounts: AccountListResponse = client.parties().accounts().list("6878951b-256b-4baa-9e81-ad4c577adc4e")\n}',
      },
      java: {
        method: 'parties().accounts().list',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.accounts.AccountListParams;\nimport com.plumery.api.models.parties.accounts.AccountListResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        AccountListResponse accounts = client.parties().accounts().list("6878951b-256b-4baa-9e81-ad4c577adc4e");\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/parties/{partyId}/accounts/{accountId}',
    httpMethod: 'get',
    summary: 'Retrieve Account',
    description: 'Allows retrieval of a single account, fetched by its ID.',
    stainlessPath: '(resource) parties.accounts > (method) retrieve',
    qualified: 'client.parties.accounts.retrieve',
    params: ['partyId: string;', 'accountId: string;', 'plmr-user-action?: boolean;'],
    response:
      "{ account?: { accountId: string; currency: string; status: 'ENABLED' | 'DELETED' | 'BLOCKED'; additionalAttributes?: object; balances?: { balanceAmount: object; balanceType: 'closingBooked' | 'openingBooked' | 'interimAvailable' | 'interimBooked' | 'expected' | 'accrued'; creditLimitIncluded?: boolean; lastRetrievedDateTime?: string; }[]; bic?: string; cashAccountType?: string; creationDate?: string; details?: string; displayName?: string; identification?: { bban?: string; iban?: string; maskedPan?: string; msisdn?: string; other?: object; }; interestRate?: number; name?: string; ownerName?: string; product?: string; productId?: string; usage?: 'INDIVIDUAL' | 'ORGANISATION'; }; }",
    markdown:
      "## retrieve\n\n`client.parties.accounts.retrieve(partyId: string, accountId: string, plmr-user-action?: boolean): { account?: object; }`\n\n**get** `/api/v1/parties/{partyId}/accounts/{accountId}`\n\nAllows retrieval of a single account, fetched by its ID.\n\n### Parameters\n\n- `partyId: string`\n\n- `accountId: string`\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ account?: { accountId: string; currency: string; status: 'ENABLED' | 'DELETED' | 'BLOCKED'; additionalAttributes?: object; balances?: { balanceAmount: object; balanceType: 'closingBooked' | 'openingBooked' | 'interimAvailable' | 'interimBooked' | 'expected' | 'accrued'; creditLimitIncluded?: boolean; lastRetrievedDateTime?: string; }[]; bic?: string; cashAccountType?: string; creationDate?: string; details?: string; displayName?: string; identification?: { bban?: string; iban?: string; maskedPan?: string; msisdn?: string; other?: object; }; interestRate?: number; name?: string; ownerName?: string; product?: string; productId?: string; usage?: 'INDIVIDUAL' | 'ORGANISATION'; }; }`\n\n  - `account?: { accountId: string; currency: string; status: 'ENABLED' | 'DELETED' | 'BLOCKED'; additionalAttributes?: object; balances?: { balanceAmount: { amount: string; currency: string; }; balanceType: 'closingBooked' | 'openingBooked' | 'interimAvailable' | 'interimBooked' | 'expected' | 'accrued'; creditLimitIncluded?: boolean; lastRetrievedDateTime?: string; }[]; bic?: string; cashAccountType?: string; creationDate?: string; details?: string; displayName?: string; identification?: { bban?: string; iban?: string; maskedPan?: string; msisdn?: string; other?: { identification?: string; issuer?: string; schemeNameCode?: string; schemeNameProprietary?: string; }; }; interestRate?: number; name?: string; ownerName?: string; product?: string; productId?: string; usage?: 'INDIVIDUAL' | 'ORGANISATION'; }`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst account = await client.parties.accounts.retrieve('3dc3d5b3-7023-4848-9853-f5400a64e80f', { partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e' });\n\nconsole.log(account);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.accounts.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst account = await client.parties.accounts.retrieve('3dc3d5b3-7023-4848-9853-f5400a64e80f', {\n  partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n});\n\nconsole.log(account.account);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/accounts/$ACCOUNT_ID \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().accounts().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.accounts.AccountRetrieveParams\nimport com.plumery.api.models.parties.accounts.AccountRetrieveResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: AccountRetrieveParams = AccountRetrieveParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .accountId("3dc3d5b3-7023-4848-9853-f5400a64e80f")\n        .build()\n    val account: AccountRetrieveResponse = client.parties().accounts().retrieve(params)\n}',
      },
      java: {
        method: 'parties().accounts().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.accounts.AccountRetrieveParams;\nimport com.plumery.api.models.parties.accounts.AccountRetrieveResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        AccountRetrieveParams params = AccountRetrieveParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .accountId("3dc3d5b3-7023-4848-9853-f5400a64e80f")\n            .build();\n        AccountRetrieveResponse account = client.parties().accounts().retrieve(params);\n    }\n}',
      },
    },
  },
  {
    name: 'updateName',
    endpoint: '/api/v1/parties/{partyId}/accounts/{accountId}:update-name',
    httpMethod: 'post',
    summary: 'Update account name',
    description: 'Update the account name.',
    stainlessPath: '(resource) parties.accounts > (method) updateName',
    qualified: 'client.parties.accounts.updateName',
    params: ['partyId: string;', 'accountId: string;', 'name: string;', 'plmr-user-action?: boolean;'],
    markdown:
      "## updateName\n\n`client.parties.accounts.updateName(partyId: string, accountId: string, name: string, plmr-user-action?: boolean): void`\n\n**post** `/api/v1/parties/{partyId}/accounts/{accountId}:update-name`\n\nUpdate the account name.\n\n### Parameters\n\n- `partyId: string`\n\n- `accountId: string`\n\n- `name: string`\n\n- `plmr-user-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.accounts.updateName('3dc3d5b3-7023-4848-9853-f5400a64e80f', { partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e', name: 'name' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.accounts.updateName',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.accounts.updateName('3dc3d5b3-7023-4848-9853-f5400a64e80f', {\n  partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  name: 'name',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/accounts/$ACCOUNT_ID:update-name \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "name": "name"\n        }\'',
      },
      kotlin: {
        method: 'parties().accounts().updateName',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.accounts.AccountUpdateNameParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: AccountUpdateNameParams = AccountUpdateNameParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .accountId("3dc3d5b3-7023-4848-9853-f5400a64e80f")\n        .name("name")\n        .build()\n    client.parties().accounts().updateName(params)\n}',
      },
      java: {
        method: 'parties().accounts().updateName',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.accounts.AccountUpdateNameParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        AccountUpdateNameParams params = AccountUpdateNameParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .accountId("3dc3d5b3-7023-4848-9853-f5400a64e80f")\n            .name("name")\n            .build();\n        client.parties().accounts().updateName(params);\n    }\n}',
      },
    },
  },
  {
    name: 'create',
    endpoint: '/api/v1/parties/{partyId}/accounts',
    httpMethod: 'post',
    summary: 'Open account',
    description:
      'Opens a new account for the specified party in the given currency.\nYou must provide at least one of the following fields in the request body: `cashAccountType` or `overrideProductId`.\n\n- If `cashAccountType` or `overrideProductId` is provided, an account will be opened using the standard product associated with that type and currency, or the specified product ID, respectively.\n- If both are provided, `overrideProductId` takes precedence and will be used instead of `cashAccountType`.\n\n ',
    stainlessPath: '(resource) parties.accounts > (method) create',
    qualified: 'client.parties.accounts.create',
    params: [
      'partyId: string;',
      'currency: string;',
      'additionalAttributes?: object;',
      'cashAccountType?: string;',
      'generateNewIban?: boolean;',
      'iban?: string;',
      'name?: string;',
      'overrideProductId?: string;',
      'plmr-user-action?: boolean;',
      'x-request-id?: string;',
    ],
    markdown:
      "## create\n\n`client.parties.accounts.create(partyId: string, currency: string, additionalAttributes?: object, cashAccountType?: string, generateNewIban?: boolean, iban?: string, name?: string, overrideProductId?: string, plmr-user-action?: boolean, x-request-id?: string): void`\n\n**post** `/api/v1/parties/{partyId}/accounts`\n\nOpens a new account for the specified party in the given currency.\nYou must provide at least one of the following fields in the request body: `cashAccountType` or `overrideProductId`.\n\n- If `cashAccountType` or `overrideProductId` is provided, an account will be opened using the standard product associated with that type and currency, or the specified product ID, respectively.\n- If both are provided, `overrideProductId` takes precedence and will be used instead of `cashAccountType`.\n\n \n\n### Parameters\n\n- `partyId: string`\n\n- `currency: string`\n\n- `additionalAttributes?: object`\n  Free-form map of non-standard attributes for the account. Values are passed through events.\n\n\n- `cashAccountType?: string`\n  ExternalCashAccountType1Code from ISO 20022.\n\n\n- `generateNewIban?: boolean`\n\n- `iban?: string`\n\n- `name?: string`\n\n- `overrideProductId?: string`\n\n- `plmr-user-action?: boolean`\n\n- `x-request-id?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.accounts.create('6878951b-256b-4baa-9e81-ad4c577adc4e', { currency: 'EUR' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.accounts.create',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.accounts.create('6878951b-256b-4baa-9e81-ad4c577adc4e', { currency: 'EUR' });",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/accounts \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "currency": "EUR",\n          "generateNewIban": false,\n          "iban": "FR7612345987650123456789014",\n          "overrideProductId": "3a35d1e598ebbc6g5587ec2cdc0d0b91"\n        }\'',
      },
      kotlin: {
        method: 'parties().accounts().create',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.accounts.AccountCreateParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: AccountCreateParams = AccountCreateParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .currency("EUR")\n        .build()\n    client.parties().accounts().create(params)\n}',
      },
      java: {
        method: 'parties().accounts().create',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.accounts.AccountCreateParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        AccountCreateParams params = AccountCreateParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .currency("EUR")\n            .build();\n        client.parties().accounts().create(params);\n    }\n}',
      },
    },
  },
  {
    name: 'generateStatement',
    endpoint: '/api/v1/parties/{partyId}/accounts/{accountId}:generate-statement',
    httpMethod: 'post',
    summary: 'Generate Account Statement',
    description:
      'Initiate account statement generation, which will be generated async. Requires a template for the snapshot to be configured in advance.',
    stainlessPath: '(resource) parties.accounts > (method) generateStatement',
    qualified: 'client.parties.accounts.generateStatement',
    params: [
      'partyId: string;',
      'accountId: string;',
      'dateFrom: string;',
      'dateTo: string;',
      'amountFrom?: number;',
      'amountTo?: number;',
      'search?: string;',
      "transactionDirection?: 'INCOMING' | 'OUTGOING';",
      'validateBalances?: boolean;',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    markdown:
      "## generateStatement\n\n`client.parties.accounts.generateStatement(partyId: string, accountId: string, dateFrom: string, dateTo: string, amountFrom?: number, amountTo?: number, search?: string, transactionDirection?: 'INCOMING' | 'OUTGOING', validateBalances?: boolean, plmr-user-action?: boolean, X-Request-ID?: string): void`\n\n**post** `/api/v1/parties/{partyId}/accounts/{accountId}:generate-statement`\n\nInitiate account statement generation, which will be generated async. Requires a template for the snapshot to be configured in advance.\n\n### Parameters\n\n- `partyId: string`\n\n- `accountId: string`\n  The unique identifier of the account associated to the transaction. ID can be used to retrieve additional\nrelated information via Accounts APIs.\n\n\n- `dateFrom: string`\n  Starting date (inclusive of the date entered) of the transaction list based on the booking date.\n\n- `dateTo: string`\n  End date (inclusive of the date entered) of the transaction list based on the booking date, default is \"now\" if not given.\n\n\n- `amountFrom?: number`\n  Allows you to filter transactions based on the transaction amount. \nSet this parameter to the minimum transaction amount you want to include in the retrieved list, using only positive values as input. \nHowever, the filter will retrieve both positive and negative transactions within the range.\n\n\n- `amountTo?: number`\n  Allows you to filter transactions based on the transaction amount. \nSet this parameter to the maximum transaction amount you want to include in the retrieved list, using only positive values as input. \nHowever, the filter will retrieve both positive and negative transactions within the range.\n\n\n- `search?: string`\n  Free-text search within the transactions list.\n\n- `transactionDirection?: 'INCOMING' | 'OUTGOING'`\n  Specifies the direction of a transaction, allowing you to filter transactions based on their flow.\nUse it to distinguish between \"incoming\" transactions (money received) and \"outgoing\" transactions (money spent or sent):\n  * INCOMING - Select this value to retrieve transactions representing money received or credited to the account\n  * OUTGOING - Select this value to retrieve transactions representing money spent or debited from the account\n\n\n- `validateBalances?: boolean`\n  Enables validation of the balances of the account.\nIf set to true, the API will check that the balances of the account are consistent with the transactions in the statement.\nIf set to false, the API will not check the balances of the account.\nIf not present, the validation enablement is determined by a default value set in the environment configuration.\n\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.accounts.generateStatement('5f0d3de8-d521-11ed-afa1-0242ac120002', {\n  partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  dateFrom: '2019-12-27',\n  dateTo: '2019-12-27',\n})\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.accounts.generateStatement',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.accounts.generateStatement('5f0d3de8-d521-11ed-afa1-0242ac120002', {\n  partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  dateFrom: '2019-12-27',\n  dateTo: '2019-12-27',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/accounts/$ACCOUNT_ID:generate-statement \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().accounts().generateStatement',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.accounts.AccountGenerateStatementParams\nimport java.time.LocalDate\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: AccountGenerateStatementParams = AccountGenerateStatementParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .accountId("5f0d3de8-d521-11ed-afa1-0242ac120002")\n        .dateFrom(LocalDate.parse("2019-12-27"))\n        .dateTo(LocalDate.parse("2019-12-27"))\n        .build()\n    client.parties().accounts().generateStatement(params)\n}',
      },
      java: {
        method: 'parties().accounts().generateStatement',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.accounts.AccountGenerateStatementParams;\nimport java.time.LocalDate;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        AccountGenerateStatementParams params = AccountGenerateStatementParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .accountId("5f0d3de8-d521-11ed-afa1-0242ac120002")\n            .dateFrom(LocalDate.parse("2019-12-27"))\n            .dateTo(LocalDate.parse("2019-12-27"))\n            .build();\n        client.parties().accounts().generateStatement(params);\n    }\n}',
      },
    },
  },
  {
    name: 'close',
    endpoint: '/api/v1/parties/{partyId}/accounts/{accountId}:close',
    httpMethod: 'post',
    summary: 'Close Account',
    description: 'Allows closure of a single account.',
    stainlessPath: '(resource) parties.accounts > (method) close',
    qualified: 'client.parties.accounts.close',
    params: [
      'partyId: string;',
      'accountId: string;',
      'idempotencyKey?: string;',
      'plmr-user-action?: boolean;',
    ],
    markdown:
      "## close\n\n`client.parties.accounts.close(partyId: string, accountId: string, idempotencyKey?: string, plmr-user-action?: boolean): void`\n\n**post** `/api/v1/parties/{partyId}/accounts/{accountId}:close`\n\nAllows closure of a single account.\n\n### Parameters\n\n- `partyId: string`\n\n- `accountId: string`\n\n- `idempotencyKey?: string`\n\n- `plmr-user-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.accounts.close('3dc3d5b3-7023-4848-9853-f5400a64e80f', { partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.accounts.close',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.accounts.close('3dc3d5b3-7023-4848-9853-f5400a64e80f', {\n  partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/accounts/$ACCOUNT_ID:close \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().accounts().close',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.accounts.AccountCloseParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: AccountCloseParams = AccountCloseParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .accountId("3dc3d5b3-7023-4848-9853-f5400a64e80f")\n        .build()\n    client.parties().accounts().close(params)\n}',
      },
      java: {
        method: 'parties().accounts().close',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.accounts.AccountCloseParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        AccountCloseParams params = AccountCloseParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .accountId("3dc3d5b3-7023-4848-9853-f5400a64e80f")\n            .build();\n        client.parties().accounts().close(params);\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/parties/{partyId}/accounts/{accountId}/transaction-exports',
    httpMethod: 'get',
    summary: 'Download Transactions Exports',
    description: 'Export transactions for a selected account and time range',
    stainlessPath: '(resource) parties.accounts.transaction-exports > (method) retrieve',
    qualified: 'client.parties.accounts.transactionExports.retrieve',
    params: [
      'partyId: string;',
      'accountId: string;',
      'amountFrom?: number;',
      'amountTo?: number;',
      'dateFrom?: string;',
      'dateTo?: string;',
      'search?: string;',
      "sortBy?: 'DATE' | 'AMOUNT';",
      "sortDirection?: 'ASCENDING' | 'DESCENDING';",
      'timeZone?: string;',
      "transactionDirection?: 'INCOMING' | 'OUTGOING';",
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    markdown:
      "## retrieve\n\n`client.parties.accounts.transactionExports.retrieve(partyId: string, accountId: string, amountFrom?: number, amountTo?: number, dateFrom?: string, dateTo?: string, search?: string, sortBy?: 'DATE' | 'AMOUNT', sortDirection?: 'ASCENDING' | 'DESCENDING', timeZone?: string, transactionDirection?: 'INCOMING' | 'OUTGOING', plmr-user-action?: boolean, X-Request-ID?: string): void`\n\n**get** `/api/v1/parties/{partyId}/accounts/{accountId}/transaction-exports`\n\nExport transactions for a selected account and time range\n\n### Parameters\n\n- `partyId: string`\n\n- `accountId: string`\n  The unique identifier of the account associated to the transaction. ID can be used to retrieve additional\nrelated information via Accounts APIs.\n\n\n- `amountFrom?: number`\n  Allows you to filter transactions based on the transaction amount. \nSet this parameter to the minimum transaction amount you want to include in the retrieved list, using only positive values as input. \nHowever, the filter will retrieve both positive and negative transactions within the range.\n\n\n- `amountTo?: number`\n  Allows you to filter transactions based on the transaction amount. \nSet this parameter to the maximum transaction amount you want to include in the retrieved list, using only positive values as input. \nHowever, the filter will retrieve both positive and negative transactions within the range.\n\n\n- `dateFrom?: string`\n  Starting date (inclusive of the date entered) of the transaction list based on the booking date.\n\n- `dateTo?: string`\n  End date (inclusive of the date entered) of the transaction list based on the booking date, default is \"now\" if not given.\n\n\n- `search?: string`\n  Free-text search within the transactions list.\n\n- `sortBy?: 'DATE' | 'AMOUNT'`\n  Specifies the sorting field that determines the order of the results.\nDefaults to DATE. Transactions are ordered by bookingDate, falling back to valueDate when bookingDate\nis unavailable, and further to createdDate when neither is available. When multiple transactions\nshare the same bookingDate, they are further sorted by valueDate, then by createdDate.\n\n\n- `sortDirection?: 'ASCENDING' | 'DESCENDING'`\n  Specifies the direction of the sorting field.\nBy default DESCENDING is used.\n\n\n- `timeZone?: string`\n  IANA time zone used to resolve dateFrom and dateTo to whole calendar days. Required when dateFrom or dateTo is provided.\n\n\n- `transactionDirection?: 'INCOMING' | 'OUTGOING'`\n  Specifies the direction of a transaction, allowing you to filter transactions based on their flow.\nUse it to distinguish between \"incoming\" transactions (money received) and \"outgoing\" transactions (money spent or sent):\n  * INCOMING - Select this value to retrieve transactions representing money received or credited to the account\n  * OUTGOING - Select this value to retrieve transactions representing money spent or debited from the account\n\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.accounts.transactionExports.retrieve('5f0d3de8-d521-11ed-afa1-0242ac120002', { partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.accounts.transactionExports.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.accounts.transactionExports.retrieve('5f0d3de8-d521-11ed-afa1-0242ac120002', {\n  partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/accounts/$ACCOUNT_ID/transaction-exports \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().accounts().transactionExports().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.accounts.transactionexports.TransactionExportRetrieveParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: TransactionExportRetrieveParams = TransactionExportRetrieveParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .accountId("5f0d3de8-d521-11ed-afa1-0242ac120002")\n        .build()\n    client.parties().accounts().transactionExports().retrieve(params)\n}',
      },
      java: {
        method: 'parties().accounts().transactionExports().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.accounts.transactionexports.TransactionExportRetrieveParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        TransactionExportRetrieveParams params = TransactionExportRetrieveParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .accountId("5f0d3de8-d521-11ed-afa1-0242ac120002")\n            .build();\n        client.parties().accounts().transactionExports().retrieve(params);\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/parties/{partyId}/accounts/{accountId}/end-of-day-balances/{balanceDate}',
    httpMethod: 'get',
    summary: 'Retrieve Account End Of Day Balance',
    description:
      'Returns end-of-day balance for the requested date.\nIf not found for the requested date, computes the record using the closing balance of the most recent end-of-day balance\nwith balanceDate smaller than the requested date for the same account, party and user.\nIf no end-of-day balance exists, returns zero balances.\n',
    stainlessPath: '(resource) parties.accounts.end-of-day-balances > (method) retrieve',
    qualified: 'client.parties.accounts.endOfDayBalances.retrieve',
    params: ['partyId: string;', 'accountId: string;', 'balanceDate: string;', 'plmr-user-action?: boolean;'],
    response:
      '{ accountId: string; balanceDate: string; closingBalance: number; openingBalance: number; currency?: string; }',
    markdown:
      "## retrieve\n\n`client.parties.accounts.endOfDayBalances.retrieve(partyId: string, accountId: string, balanceDate: string, plmr-user-action?: boolean): { accountId: string; balanceDate: string; closingBalance: number; openingBalance: number; currency?: string; }`\n\n**get** `/api/v1/parties/{partyId}/accounts/{accountId}/end-of-day-balances/{balanceDate}`\n\nReturns end-of-day balance for the requested date.\nIf not found for the requested date, computes the record using the closing balance of the most recent end-of-day balance\nwith balanceDate smaller than the requested date for the same account, party and user.\nIf no end-of-day balance exists, returns zero balances.\n\n\n### Parameters\n\n- `partyId: string`\n\n- `accountId: string`\n\n- `balanceDate: string`\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ accountId: string; balanceDate: string; closingBalance: number; openingBalance: number; currency?: string; }`\n\n  - `accountId: string`\n  - `balanceDate: string`\n  - `closingBalance: number`\n  - `openingBalance: number`\n  - `currency?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst endOfDayBalance = await client.parties.accounts.endOfDayBalances.retrieve('2022-03-10', { partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e', accountId: '3dc3d5b3-7023-4848-9853-f5400a64e80f' });\n\nconsole.log(endOfDayBalance);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.accounts.endOfDayBalances.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst endOfDayBalance = await client.parties.accounts.endOfDayBalances.retrieve('2022-03-10', {\n  partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  accountId: '3dc3d5b3-7023-4848-9853-f5400a64e80f',\n});\n\nconsole.log(endOfDayBalance.accountId);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/accounts/$ACCOUNT_ID/end-of-day-balances/$BALANCE_DATE \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().accounts().endOfDayBalances().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.accounts.endofdaybalances.EndOfDayBalanceRetrieveParams\nimport com.plumery.api.models.parties.accounts.endofdaybalances.EndOfDayBalanceRetrieveResponse\nimport java.time.LocalDate\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: EndOfDayBalanceRetrieveParams = EndOfDayBalanceRetrieveParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .accountId("3dc3d5b3-7023-4848-9853-f5400a64e80f")\n        .balanceDate(LocalDate.parse("2022-03-10"))\n        .build()\n    val endOfDayBalance: EndOfDayBalanceRetrieveResponse = client.parties().accounts().endOfDayBalances().retrieve(params)\n}',
      },
      java: {
        method: 'parties().accounts().endOfDayBalances().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.accounts.endofdaybalances.EndOfDayBalanceRetrieveParams;\nimport com.plumery.api.models.parties.accounts.endofdaybalances.EndOfDayBalanceRetrieveResponse;\nimport java.time.LocalDate;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        EndOfDayBalanceRetrieveParams params = EndOfDayBalanceRetrieveParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .accountId("3dc3d5b3-7023-4848-9853-f5400a64e80f")\n            .balanceDate(LocalDate.parse("2022-03-10"))\n            .build();\n        EndOfDayBalanceRetrieveResponse endOfDayBalance = client.parties().accounts().endOfDayBalances().retrieve(params);\n    }\n}',
      },
    },
  },
  {
    name: 'create',
    endpoint: '/api/v1/parties/{partyId}/accounts/{accountId}/bulk-payments',
    httpMethod: 'post',
    summary: 'Initiate Bulk Payments',
    description: 'Initiate bulk payments via uploaded CSV data.\n',
    stainlessPath: '(resource) parties.accounts.bulk-payments > (method) create',
    qualified: 'client.parties.accounts.bulkPayments.create',
    params: [
      'partyId: string;',
      'accountId: string;',
      'body: string;',
      'Content-Disposition?: string;',
      'plmr-mfa-challenge-id?: string;',
      'plmr-mfa-signature?: string;',
      'plmr-user-action?: boolean;',
      'X-Device-Integrity-Token?: string;',
      'X-Request-ID?: string;',
    ],
    response:
      "{ bulkPaymentsRequestId: string; payments: { paymentStatus: 'ACCC' | 'RCVD' | 'RJCT'; sequenceNumber: string; paymentId?: string; rejectReason?: string; }[]; }",
    markdown:
      "## create\n\n`client.parties.accounts.bulkPayments.create(partyId: string, accountId: string, body: string, Content-Disposition?: string, plmr-mfa-challenge-id?: string, plmr-mfa-signature?: string, plmr-user-action?: boolean, X-Device-Integrity-Token?: string, X-Request-ID?: string): { bulkPaymentsRequestId: string; payments: object[]; }`\n\n**post** `/api/v1/parties/{partyId}/accounts/{accountId}/bulk-payments`\n\nInitiate bulk payments via uploaded CSV data.\n\n\n### Parameters\n\n- `partyId: string`\n\n- `accountId: string`\n\n- `body: string`\n  ### Raw CSV file content. \nEither **IBAN** or **Account number** must be provided.\n  | Column | Required | Description |\n  |----------|----------|-------------|\n  | **Recipient name** | Yes | Recipient name (max 70 chars) |\n  | **IBAN** | Conditional | Required if **Account number** is not provided |\n  | **Account number** | Conditional | Required if **IBAN** is not provided |\n  | **Bank identifier** | Conditional | Required when **IBAN** is not provided |\n  | **Amount** | Yes | Format: `123.45` |\n  | **Currency** | Yes | ISO 4217 Alpha-3 (e.g. `EUR`) |\n  | **Payment reference** | No | Max 140 chars |\n  | **Recipient country** | Yes | ISO 3166 Alpha-2 (e.g. `LT`) |\n  | **State or province** | No | Recipient state/province |\n  | **City** | No | Recipient city |\n  | **Postal code** | No | Recipient postal code |\n  | **Street** | No | Recipient street |\n  | **Building number** | No | Recipient building number |\n  | **Payment Type** | No | `SEPA`, `SEPA_INSTANT`, `SWIFT` |\n  | **Cash Account Type** | No | Recipient account cash account type |\n\n\n- `Content-Disposition?: string`\n\n- `plmr-mfa-challenge-id?: string`\n\n- `plmr-mfa-signature?: string`\n\n- `plmr-user-action?: boolean`\n\n- `X-Device-Integrity-Token?: string`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ bulkPaymentsRequestId: string; payments: { paymentStatus: 'ACCC' | 'RCVD' | 'RJCT'; sequenceNumber: string; paymentId?: string; rejectReason?: string; }[]; }`\n  Body of the response for a successful bulk payments initiation request.\n\n  - `bulkPaymentsRequestId: string`\n  - `payments: { paymentStatus: 'ACCC' | 'RCVD' | 'RJCT'; sequenceNumber: string; paymentId?: string; rejectReason?: string; }[]`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst bulkPayment = await client.parties.accounts.bulkPayments.create('6878951b-256b-4baa-9e81-ad4c577adc4e', { partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e', body: 'Recipient name,IBAN,Account number,Bank identifier,Amount,Currency,Payment reference,Recipient country,State or province,City,Postal code,Street,Building number,Payment Type,Cash Account Type\\nJohn Doe,AA121000011101001000,,,,100.50,EUR,Invoice 123,LT,Vilnius,Vilnius,01100,Gedimino pr.,10,SEPA,CACC\\n' });\n\nconsole.log(bulkPayment);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.accounts.bulkPayments.create',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst bulkPayment = await client.parties.accounts.bulkPayments.create(\n  '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  {\n    partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n    body: 'Recipient name,IBAN,Account number,Bank identifier,Amount,Currency,Payment reference,Recipient country,State or province,City,Postal code,Street,Building number,Payment Type,Cash Account Type\\nJohn Doe,AA121000011101001000,,,,100.50,EUR,Invoice 123,LT,Vilnius,Vilnius,01100,Gedimino pr.,10,SEPA,CACC\\n',\n  },\n);\n\nconsole.log(bulkPayment.bulkPaymentsRequestId);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/accounts/$ACCOUNT_ID/bulk-payments \\\n    -H \'Content-Type: text/csv\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'"Recipient name,IBAN,Account number,Bank identifier,Amount,Currency,Payment reference,Recipient country,State or province,City,Postal code,Street,Building number,Payment Type,Cash Account Type\\\\nJohn Doe,AA121000011101001000,,,,100.50,EUR,Invoice 123,LT,Vilnius,Vilnius,01100,Gedimino pr.,10,SEPA,CACC\\\\n"\'',
      },
      kotlin: {
        method: 'parties().accounts().bulkPayments().create',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.accounts.bulkpayments.BulkPaymentCreateParams\nimport com.plumery.api.models.parties.accounts.bulkpayments.BulkPaymentCreateResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: BulkPaymentCreateParams = BulkPaymentCreateParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .accountId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .body("Recipient name,IBAN,Account number,Bank identifier,Amount,Currency,Payment reference,Recipient country,State or province,City,Postal code,Street,Building number,Payment Type,Cash Account Type\\nJohn Doe,AA121000011101001000,,,,100.50,EUR,Invoice 123,LT,Vilnius,Vilnius,01100,Gedimino pr.,10,SEPA,CACC\\n")\n        .build()\n    val bulkPayment: BulkPaymentCreateResponse = client.parties().accounts().bulkPayments().create(params)\n}',
      },
      java: {
        method: 'parties().accounts().bulkPayments().create',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.accounts.bulkpayments.BulkPaymentCreateParams;\nimport com.plumery.api.models.parties.accounts.bulkpayments.BulkPaymentCreateResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        BulkPaymentCreateParams params = BulkPaymentCreateParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .accountId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .body("Recipient name,IBAN,Account number,Bank identifier,Amount,Currency,Payment reference,Recipient country,State or province,City,Postal code,Street,Building number,Payment Type,Cash Account Type\\nJohn Doe,AA121000011101001000,,,,100.50,EUR,Invoice 123,LT,Vilnius,Vilnius,01100,Gedimino pr.,10,SEPA,CACC\\n")\n            .build();\n        BulkPaymentCreateResponse bulkPayment = client.parties().accounts().bulkPayments().create(params);\n    }\n}',
      },
    },
  },
  {
    name: 'list',
    endpoint: '/api/v1/parties/{partyId}/transactions',
    httpMethod: 'get',
    summary: 'List transactions',
    description:
      "Allows retrieval of transactions. It's possible to filter the transactions list by various criteria.",
    stainlessPath: '(resource) parties.transactions > (method) list',
    qualified: 'client.parties.transactions.list',
    params: [
      'partyId: string;',
      'accounts?: string[];',
      'amountFrom?: number;',
      'amountTo?: number;',
      'cards?: string[];',
      'cursor?: string;',
      'dateFrom?: string;',
      'dateTo?: string;',
      'limit?: number;',
      'search?: string;',
      "sortBy?: 'DATE' | 'AMOUNT';",
      "sortDirection?: 'ASCENDING' | 'DESCENDING';",
      "transactionDirection?: 'INCOMING' | 'OUTGOING';",
      "transactionStatuses?: 'PENDING' | 'BOOKED' | 'INFORMATION'[];",
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    response: '{ items?: object | object[]; nextCursor?: string; }',
    markdown:
      "## list\n\n`client.parties.transactions.list(partyId: string, accounts?: string[], amountFrom?: number, amountTo?: number, cards?: string[], cursor?: string, dateFrom?: string, dateTo?: string, limit?: number, search?: string, sortBy?: 'DATE' | 'AMOUNT', sortDirection?: 'ASCENDING' | 'DESCENDING', transactionDirection?: 'INCOMING' | 'OUTGOING', transactionStatuses?: 'PENDING' | 'BOOKED' | 'INFORMATION'[], plmr-user-action?: boolean, X-Request-ID?: string): { items?: object | object[]; nextCursor?: string; }`\n\n**get** `/api/v1/parties/{partyId}/transactions`\n\nAllows retrieval of transactions. It's possible to filter the transactions list by various criteria.\n\n### Parameters\n\n- `partyId: string`\n\n- `accounts?: string[]`\n  Allows filtering transactions by list of Account IDs. Account ID is the \"accountId\" attribute of the account structure.\n\n\n- `amountFrom?: number`\n  Allows you to filter transactions based on the transaction amount. \nSet this parameter to the minimum transaction amount you want to include in the retrieved list, using only positive values as input. \nHowever, the filter will retrieve both positive and negative transactions within the range.\n\n\n- `amountTo?: number`\n  Allows you to filter transactions based on the transaction amount. \nSet this parameter to the maximum transaction amount you want to include in the retrieved list, using only positive values as input. \nHowever, the filter will retrieve both positive and negative transactions within the range.\n\n\n- `cards?: string[]`\n  Allows filtering transactions by list of Card IDs.\n\n\n- `cursor?: string`\n  The cursor is a pointer to the next page of transactions. \nIt is returned in the response body of the previous request. \nUse it to retrieve the next page of transactions.\n\n\n- `dateFrom?: string`\n  Starting date (inclusive of the date entered) of the transaction list based on the booking date.\n\n- `dateTo?: string`\n  End date (inclusive of the date entered) of the transaction list based on the booking date, default is \"now\" if not given.\n\n\n- `limit?: number`\n  Specifies the number of transactions to retrieve.\n\n\n- `search?: string`\n  Free-text search within the transactions list.\n\n- `sortBy?: 'DATE' | 'AMOUNT'`\n  Specifies the sorting field that determines the order of the results.\nDefaults to DATE. Transactions are ordered by bookingDate, falling back to valueDate when bookingDate\nis unavailable, and further to createdDate when neither is available. When multiple transactions\nshare the same bookingDate, they are further sorted by valueDate, then by createdDate.\n\n\n- `sortDirection?: 'ASCENDING' | 'DESCENDING'`\n  Specifies the direction of the sorting field.\nBy default DESCENDING is used.\n\n\n- `transactionDirection?: 'INCOMING' | 'OUTGOING'`\n  Specifies the direction of a transaction, allowing you to filter transactions based on their flow.\nUse it to distinguish between \"incoming\" transactions (money received) and \"outgoing\" transactions (money spent or sent):\n  * INCOMING - Select this value to retrieve transactions representing money received or credited to the account\n  * OUTGOING - Select this value to retrieve transactions representing money spent or debited from the account\n\n\n- `transactionStatuses?: 'PENDING' | 'BOOKED' | 'INFORMATION'[]`\n  Allows filtering transactions by list of transaction statuses.\n\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ items?: { accountId: string; transactionAmount: { amount?: number; currency?: string; }; transactionId: string; transactionStatus: 'PENDING' | 'BOOKED' | 'INFORMATION'; additionalAttributes?: object; additionalCounterpartyData?: { address?: object; industryCategoryCode?: number; logo?: string; website?: string; }; additionalInformation?: { description?: string; }; balanceAfterTransaction?: { balanceAmount?: object; }; bankTransactionCode?: string; bookingDate?: string; bookingDateTime?: string; cardId?: string; createdDate?: string; createdDateTime?: string; debtorAccount?: { currency?: string; iban?: string; } | { currency?: string; other?: object; } | { currency?: string; }; debtorAgent?: string; debtorName?: string; debtorNameOriginal?: string; endToEndId?: string; exchangeDetails?: { exchangeRate?: number; fee?: number; }; fundsTransferId?: string; paymentOrderId?: string; remittanceInformationStructuredArray?: { reference?: string; referenceIssuer?: string; referenceType?: string; }; remittanceInformationUnstructured?: string; transactionCategory?: { icon?: string; name?: string; }; valueDate?: string; valueDateTime?: string; } | { accountId: string; transactionAmount: { amount?: number; currency?: string; }; transactionId: string; transactionStatus: 'PENDING' | 'BOOKED' | 'INFORMATION'; additionalAttributes?: object; additionalCounterpartyData?: { address?: object; industryCategoryCode?: number; logo?: string; website?: string; }; additionalInformation?: { description?: string; }; balanceAfterTransaction?: { balanceAmount?: object; }; bankTransactionCode?: string; bookingDate?: string; bookingDateTime?: string; cardId?: string; creditorAccount?: { currency?: string; iban?: string; } | { currency?: string; other?: object; } | { currency?: string; }; creditorAgent?: string; creditorName?: string; creditorNameOriginal?: string; endToEndId?: string; exchangeDetails?: { exchangeRate?: number; fee?: number; }; fundsTransferId?: string; paymentOrderId?: string; remittanceInformationStructuredArray?: { reference?: string; referenceIssuer?: string; referenceType?: string; }; remittanceInformationUnstructured?: string; transactionCategory?: { icon?: string; name?: string; }; valueDate?: string; valueDateTime?: string; }[]; nextCursor?: string; }`\n\n  - `items?: { accountId: string; transactionAmount: { amount?: number; currency?: string; }; transactionId: string; transactionStatus: 'PENDING' | 'BOOKED' | 'INFORMATION'; additionalAttributes?: object; additionalCounterpartyData?: { address?: { city?: string; country?: string; latitude?: number; longitude?: number; state?: string; street?: string; zip?: string; }; industryCategoryCode?: number; logo?: string; website?: string; }; additionalInformation?: { description?: string; }; balanceAfterTransaction?: { balanceAmount?: { amount?: number; currency?: string; }; }; bankTransactionCode?: string; bookingDate?: string; bookingDateTime?: string; cardId?: string; createdDate?: string; createdDateTime?: string; debtorAccount?: { currency?: string; iban?: string; } | { currency?: string; other?: { identification?: string; schemeNameCone?: string; }; } | { currency?: string; }; debtorAgent?: string; debtorName?: string; debtorNameOriginal?: string; endToEndId?: string; exchangeDetails?: { exchangeRate?: number; fee?: number; }; fundsTransferId?: string; paymentOrderId?: string; remittanceInformationStructuredArray?: { reference?: string; referenceIssuer?: string; referenceType?: string; }; remittanceInformationUnstructured?: string; transactionCategory?: { icon?: string; name?: string; }; valueDate?: string; valueDateTime?: string; } | { accountId: string; transactionAmount: { amount?: number; currency?: string; }; transactionId: string; transactionStatus: 'PENDING' | 'BOOKED' | 'INFORMATION'; additionalAttributes?: object; additionalCounterpartyData?: { address?: { city?: string; country?: string; latitude?: number; longitude?: number; state?: string; street?: string; zip?: string; }; industryCategoryCode?: number; logo?: string; website?: string; }; additionalInformation?: { description?: string; }; balanceAfterTransaction?: { balanceAmount?: { amount?: number; currency?: string; }; }; bankTransactionCode?: string; bookingDate?: string; bookingDateTime?: string; cardId?: string; creditorAccount?: { currency?: string; iban?: string; } | { currency?: string; other?: { identification?: string; schemeNameCone?: string; }; } | { currency?: string; }; creditorAgent?: string; creditorName?: string; creditorNameOriginal?: string; endToEndId?: string; exchangeDetails?: { exchangeRate?: number; fee?: number; }; fundsTransferId?: string; paymentOrderId?: string; remittanceInformationStructuredArray?: { reference?: string; referenceIssuer?: string; referenceType?: string; }; remittanceInformationUnstructured?: string; transactionCategory?: { icon?: string; name?: string; }; valueDate?: string; valueDateTime?: string; }[]`\n  - `nextCursor?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst transactions = await client.parties.transactions.list('6878951b-256b-4baa-9e81-ad4c577adc4e');\n\nconsole.log(transactions);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.transactions.list',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst transactions = await client.parties.transactions.list('6878951b-256b-4baa-9e81-ad4c577adc4e');\n\nconsole.log(transactions.items);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/transactions \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().transactions().list',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.transactions.TransactionListParams\nimport com.plumery.api.models.parties.transactions.TransactionListResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val transactions: TransactionListResponse = client.parties().transactions().list("6878951b-256b-4baa-9e81-ad4c577adc4e")\n}',
      },
      java: {
        method: 'parties().transactions().list',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.transactions.TransactionListParams;\nimport com.plumery.api.models.parties.transactions.TransactionListResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        TransactionListResponse transactions = client.parties().transactions().list("6878951b-256b-4baa-9e81-ad4c577adc4e");\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/parties/{partyId}/transactions/{transactionId}',
    httpMethod: 'get',
    summary: 'Retrieve transaction details',
    description: 'Allows retrieval of a single transaction, fetched by its ID.',
    stainlessPath: '(resource) parties.transactions > (method) retrieve',
    qualified: 'client.parties.transactions.retrieve',
    params: [
      'partyId: string;',
      'transactionId: string;',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    response: '{ transactionDetails?: object | object; }',
    markdown:
      "## retrieve\n\n`client.parties.transactions.retrieve(partyId: string, transactionId: string, plmr-user-action?: boolean, X-Request-ID?: string): { transactionDetails?: object | object; }`\n\n**get** `/api/v1/parties/{partyId}/transactions/{transactionId}`\n\nAllows retrieval of a single transaction, fetched by its ID.\n\n### Parameters\n\n- `partyId: string`\n\n- `transactionId: string`\n  The unique identifier of the transaction\n\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ transactionDetails?: { accountId: string; transactionAmount: { amount?: number; currency?: string; }; transactionId: string; transactionStatus: 'PENDING' | 'BOOKED' | 'INFORMATION'; additionalAttributes?: object; additionalCounterpartyData?: { address?: object; industryCategoryCode?: number; logo?: string; website?: string; }; additionalInformation?: { description?: string; }; balanceAfterTransaction?: { balanceAmount?: object; }; bankTransactionCode?: string; bookingDate?: string; bookingDateTime?: string; cardId?: string; createdDate?: string; createdDateTime?: string; debtorAccount?: { currency?: string; iban?: string; } | { currency?: string; other?: object; } | { currency?: string; }; debtorAgent?: string; debtorName?: string; debtorNameOriginal?: string; endToEndId?: string; exchangeDetails?: { exchangeRate?: number; fee?: number; }; fundsTransferId?: string; paymentOrderId?: string; remittanceInformationStructuredArray?: { reference?: string; referenceIssuer?: string; referenceType?: string; }; remittanceInformationUnstructured?: string; transactionCategory?: { icon?: string; name?: string; }; valueDate?: string; valueDateTime?: string; } | { accountId: string; transactionAmount: { amount?: number; currency?: string; }; transactionId: string; transactionStatus: 'PENDING' | 'BOOKED' | 'INFORMATION'; additionalAttributes?: object; additionalCounterpartyData?: { address?: object; industryCategoryCode?: number; logo?: string; website?: string; }; additionalInformation?: { description?: string; }; balanceAfterTransaction?: { balanceAmount?: object; }; bankTransactionCode?: string; bookingDate?: string; bookingDateTime?: string; cardId?: string; creditorAccount?: { currency?: string; iban?: string; } | { currency?: string; other?: object; } | { currency?: string; }; creditorAgent?: string; creditorName?: string; creditorNameOriginal?: string; endToEndId?: string; exchangeDetails?: { exchangeRate?: number; fee?: number; }; fundsTransferId?: string; paymentOrderId?: string; remittanceInformationStructuredArray?: { reference?: string; referenceIssuer?: string; referenceType?: string; }; remittanceInformationUnstructured?: string; transactionCategory?: { icon?: string; name?: string; }; valueDate?: string; valueDateTime?: string; }; }`\n\n  - `transactionDetails?: { accountId: string; transactionAmount: { amount?: number; currency?: string; }; transactionId: string; transactionStatus: 'PENDING' | 'BOOKED' | 'INFORMATION'; additionalAttributes?: object; additionalCounterpartyData?: { address?: { city?: string; country?: string; latitude?: number; longitude?: number; state?: string; street?: string; zip?: string; }; industryCategoryCode?: number; logo?: string; website?: string; }; additionalInformation?: { description?: string; }; balanceAfterTransaction?: { balanceAmount?: { amount?: number; currency?: string; }; }; bankTransactionCode?: string; bookingDate?: string; bookingDateTime?: string; cardId?: string; createdDate?: string; createdDateTime?: string; debtorAccount?: { currency?: string; iban?: string; } | { currency?: string; other?: { identification?: string; schemeNameCone?: string; }; } | { currency?: string; }; debtorAgent?: string; debtorName?: string; debtorNameOriginal?: string; endToEndId?: string; exchangeDetails?: { exchangeRate?: number; fee?: number; }; fundsTransferId?: string; paymentOrderId?: string; remittanceInformationStructuredArray?: { reference?: string; referenceIssuer?: string; referenceType?: string; }; remittanceInformationUnstructured?: string; transactionCategory?: { icon?: string; name?: string; }; valueDate?: string; valueDateTime?: string; } | { accountId: string; transactionAmount: { amount?: number; currency?: string; }; transactionId: string; transactionStatus: 'PENDING' | 'BOOKED' | 'INFORMATION'; additionalAttributes?: object; additionalCounterpartyData?: { address?: { city?: string; country?: string; latitude?: number; longitude?: number; state?: string; street?: string; zip?: string; }; industryCategoryCode?: number; logo?: string; website?: string; }; additionalInformation?: { description?: string; }; balanceAfterTransaction?: { balanceAmount?: { amount?: number; currency?: string; }; }; bankTransactionCode?: string; bookingDate?: string; bookingDateTime?: string; cardId?: string; creditorAccount?: { currency?: string; iban?: string; } | { currency?: string; other?: { identification?: string; schemeNameCone?: string; }; } | { currency?: string; }; creditorAgent?: string; creditorName?: string; creditorNameOriginal?: string; endToEndId?: string; exchangeDetails?: { exchangeRate?: number; fee?: number; }; fundsTransferId?: string; paymentOrderId?: string; remittanceInformationStructuredArray?: { reference?: string; referenceIssuer?: string; referenceType?: string; }; remittanceInformationUnstructured?: string; transactionCategory?: { icon?: string; name?: string; }; valueDate?: string; valueDateTime?: string; }`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst transaction = await client.parties.transactions.retrieve('5f0d3de8-d521-11ed-afa1-0242ac120002', { partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e' });\n\nconsole.log(transaction);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.transactions.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst transaction = await client.parties.transactions.retrieve(\n  '5f0d3de8-d521-11ed-afa1-0242ac120002',\n  { partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e' },\n);\n\nconsole.log(transaction.transactionDetails);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/transactions/$TRANSACTION_ID \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().transactions().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.transactions.TransactionRetrieveParams\nimport com.plumery.api.models.parties.transactions.TransactionRetrieveResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: TransactionRetrieveParams = TransactionRetrieveParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .transactionId("5f0d3de8-d521-11ed-afa1-0242ac120002")\n        .build()\n    val transaction: TransactionRetrieveResponse = client.parties().transactions().retrieve(params)\n}',
      },
      java: {
        method: 'parties().transactions().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.transactions.TransactionRetrieveParams;\nimport com.plumery.api.models.parties.transactions.TransactionRetrieveResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        TransactionRetrieveParams params = TransactionRetrieveParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .transactionId("5f0d3de8-d521-11ed-afa1-0242ac120002")\n            .build();\n        TransactionRetrieveResponse transaction = client.parties().transactions().retrieve(params);\n    }\n}',
      },
    },
  },
  {
    name: 'generateSnapshot',
    endpoint: '/api/v1/parties/{partyId}/transactions/{transactionId}:generate-snapshot',
    httpMethod: 'post',
    summary: 'Generate Single Transaction Snapshot',
    description:
      'Allows retrieval of a single transaction’s snapshot (Simple transaction of Payment transaction). \nIt requires a template for the transaction or payment snapshot to be configured in advance.\n',
    stainlessPath: '(resource) parties.transactions > (method) generateSnapshot',
    qualified: 'client.parties.transactions.generateSnapshot',
    params: [
      'partyId: string;',
      'transactionId: string;',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    response: 'string',
    markdown:
      "## generateSnapshot\n\n`client.parties.transactions.generateSnapshot(partyId: string, transactionId: string, plmr-user-action?: boolean, X-Request-ID?: string): string`\n\n**post** `/api/v1/parties/{partyId}/transactions/{transactionId}:generate-snapshot`\n\nAllows retrieval of a single transaction’s snapshot (Simple transaction of Payment transaction). \nIt requires a template for the transaction or payment snapshot to be configured in advance.\n\n\n### Parameters\n\n- `partyId: string`\n\n- `transactionId: string`\n  The unique identifier of the transaction\n\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.parties.transactions.generateSnapshot('5f0d3de8-d521-11ed-afa1-0242ac120002', { partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e' });\n\nconsole.log(response);\n\nconst content = await response.blob()\nconsole.log(content)\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.transactions.generateSnapshot',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.parties.transactions.generateSnapshot(\n  '5f0d3de8-d521-11ed-afa1-0242ac120002',\n  { partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e' },\n);\n\nconsole.log(response);\n\nconst content = await response.blob();\nconsole.log(content);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/transactions/$TRANSACTION_ID:generate-snapshot \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().transactions().generateSnapshot',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.core.http.HttpResponse\nimport com.plumery.api.models.parties.transactions.TransactionGenerateSnapshotParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: TransactionGenerateSnapshotParams = TransactionGenerateSnapshotParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .transactionId("5f0d3de8-d521-11ed-afa1-0242ac120002")\n        .build()\n    val response: HttpResponse = client.parties().transactions().generateSnapshot(params)\n}',
      },
      java: {
        method: 'parties().transactions().generateSnapshot',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.core.http.HttpResponse;\nimport com.plumery.api.models.parties.transactions.TransactionGenerateSnapshotParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        TransactionGenerateSnapshotParams params = TransactionGenerateSnapshotParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .transactionId("5f0d3de8-d521-11ed-afa1-0242ac120002")\n            .build();\n        HttpResponse response = client.parties().transactions().generateSnapshot(params);\n    }\n}',
      },
    },
  },
  {
    name: 'list',
    endpoint: '/api/v1/parties/{partyId}/transactions/insights/turnovers',
    httpMethod: 'get',
    summary: 'Get accounts turnovers',
    description: 'Get accounts turnovers',
    stainlessPath: '(resource) parties.transactions.insights.turnovers > (method) list',
    qualified: 'client.parties.transactions.insights.turnovers.list',
    params: [
      'partyId: string;',
      "cadence: 'DAILY' | 'MONTHLY' | 'YEARLY';",
      'accounts?: string[];',
      'dateFrom?: string;',
      'dateTo?: string;',
      'offset?: string;',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    response:
      '{ accountsTurnovers?: { accountId?: string; turnovers?: { deposit?: number; period?: string; withdraw?: number; }[]; }[]; }',
    markdown:
      "## list\n\n`client.parties.transactions.insights.turnovers.list(partyId: string, cadence: 'DAILY' | 'MONTHLY' | 'YEARLY', accounts?: string[], dateFrom?: string, dateTo?: string, offset?: string, plmr-user-action?: boolean, X-Request-ID?: string): { accountsTurnovers?: object[]; }`\n\n**get** `/api/v1/parties/{partyId}/transactions/insights/turnovers`\n\nGet accounts turnovers\n\n### Parameters\n\n- `partyId: string`\n\n- `cadence: 'DAILY' | 'MONTHLY' | 'YEARLY'`\n  The cadence of the insights report.\n\n- `accounts?: string[]`\n  Allows filtering transactions by list of Account IDs. Account ID is the \"accountId\" attribute of the account structure.\n\n\n- `dateFrom?: string`\n  Starting date (inclusive of the date entered) of the transaction list based on the booking date. Must be bigger than 2020-01-01.\n\n- `dateTo?: string`\n  End date (inclusive of the date entered) of the transaction list based on the booking date, default is \"now\" if not given.\n\n\n- `offset?: string`\n  The time offset for the date range, default is UTC.\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ accountsTurnovers?: { accountId?: string; turnovers?: { deposit?: number; period?: string; withdraw?: number; }[]; }[]; }`\n\n  - `accountsTurnovers?: { accountId?: string; turnovers?: { deposit?: number; period?: string; withdraw?: number; }[]; }[]`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst turnovers = await client.parties.transactions.insights.turnovers.list('6878951b-256b-4baa-9e81-ad4c577adc4e', { cadence: 'DAILY' });\n\nconsole.log(turnovers);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.transactions.insights.turnovers.list',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst turnovers = await client.parties.transactions.insights.turnovers.list(\n  '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  { cadence: 'DAILY' },\n);\n\nconsole.log(turnovers.accountsTurnovers);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/transactions/insights/turnovers \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().transactions().insights().turnovers().list',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.transactions.insights.turnovers.TurnoverListParams\nimport com.plumery.api.models.parties.transactions.insights.turnovers.TurnoverListResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: TurnoverListParams = TurnoverListParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .cadence(TurnoverListParams.Cadence.DAILY)\n        .build()\n    val turnovers: TurnoverListResponse = client.parties().transactions().insights().turnovers().list(params)\n}',
      },
      java: {
        method: 'parties().transactions().insights().turnovers().list',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.transactions.insights.turnovers.TurnoverListParams;\nimport com.plumery.api.models.parties.transactions.insights.turnovers.TurnoverListResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        TurnoverListParams params = TurnoverListParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .cadence(TurnoverListParams.Cadence.DAILY)\n            .build();\n        TurnoverListResponse turnovers = client.parties().transactions().insights().turnovers().list(params);\n    }\n}',
      },
    },
  },
  {
    name: 'list',
    endpoint: '/api/v1/parties/{partyId}/transactions/insights/balances',
    httpMethod: 'get',
    summary: 'Get accounts balances',
    description: 'Get accounts balances',
    stainlessPath: '(resource) parties.transactions.insights.balances > (method) list',
    qualified: 'client.parties.transactions.insights.balances.list',
    params: [
      'partyId: string;',
      "cadence: 'DAILY' | 'MONTHLY' | 'YEARLY';",
      'accounts?: string[];',
      'dateFrom?: string;',
      'dateTo?: string;',
      'offset?: string;',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    response:
      '{ accountsBalances?: { accountId?: string; balances?: { amount?: number; period?: string; }[]; }[]; }',
    markdown:
      "## list\n\n`client.parties.transactions.insights.balances.list(partyId: string, cadence: 'DAILY' | 'MONTHLY' | 'YEARLY', accounts?: string[], dateFrom?: string, dateTo?: string, offset?: string, plmr-user-action?: boolean, X-Request-ID?: string): { accountsBalances?: object[]; }`\n\n**get** `/api/v1/parties/{partyId}/transactions/insights/balances`\n\nGet accounts balances\n\n### Parameters\n\n- `partyId: string`\n\n- `cadence: 'DAILY' | 'MONTHLY' | 'YEARLY'`\n  The cadence of the insights report.\n\n- `accounts?: string[]`\n  Allows filtering transactions by list of Account IDs. Account ID is the \"accountId\" attribute of the account structure.\n\n\n- `dateFrom?: string`\n  Starting date (inclusive of the date entered) of the transaction list based on the booking date. Must be bigger than 2020-01-01.\n\n- `dateTo?: string`\n  End date (inclusive of the date entered) of the transaction list based on the booking date, default is \"now\" if not given.\n\n\n- `offset?: string`\n  The time offset for the date range, default is UTC.\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ accountsBalances?: { accountId?: string; balances?: { amount?: number; period?: string; }[]; }[]; }`\n\n  - `accountsBalances?: { accountId?: string; balances?: { amount?: number; period?: string; }[]; }[]`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst balances = await client.parties.transactions.insights.balances.list('6878951b-256b-4baa-9e81-ad4c577adc4e', { cadence: 'DAILY' });\n\nconsole.log(balances);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.transactions.insights.balances.list',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst balances = await client.parties.transactions.insights.balances.list(\n  '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  { cadence: 'DAILY' },\n);\n\nconsole.log(balances.accountsBalances);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/transactions/insights/balances \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().transactions().insights().balances().list',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.transactions.insights.balances.BalanceListParams\nimport com.plumery.api.models.parties.transactions.insights.balances.BalanceListResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: BalanceListParams = BalanceListParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .cadence(BalanceListParams.Cadence.DAILY)\n        .build()\n    val balances: BalanceListResponse = client.parties().transactions().insights().balances().list(params)\n}',
      },
      java: {
        method: 'parties().transactions().insights().balances().list',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.transactions.insights.balances.BalanceListParams;\nimport com.plumery.api.models.parties.transactions.insights.balances.BalanceListResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        BalanceListParams params = BalanceListParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .cadence(BalanceListParams.Cadence.DAILY)\n            .build();\n        BalanceListResponse balances = client.parties().transactions().insights().balances().list(params);\n    }\n}',
      },
    },
  },
  {
    name: 'list',
    endpoint: '/api/v1/parties/{partyId}/transactions/insights/spending-summary',
    httpMethod: 'get',
    summary: 'Get spending summary by category',
    description: 'Get spending summary by category',
    stainlessPath: '(resource) parties.transactions.insights.spending-summary > (method) list',
    qualified: 'client.parties.transactions.insights.spendingSummary.list',
    params: [
      'partyId: string;',
      'accounts?: string[];',
      'dateFrom?: string;',
      'dateTo?: string;',
      'offset?: string;',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    response:
      '{ summaries?: { accountId?: string; categories?: { amount?: number; name?: string; percentageOfTotal?: number; }[]; totalAmount?: string; }[]; }',
    markdown:
      '## list\n\n`client.parties.transactions.insights.spendingSummary.list(partyId: string, accounts?: string[], dateFrom?: string, dateTo?: string, offset?: string, plmr-user-action?: boolean, X-Request-ID?: string): { summaries?: object[]; }`\n\n**get** `/api/v1/parties/{partyId}/transactions/insights/spending-summary`\n\nGet spending summary by category\n\n### Parameters\n\n- `partyId: string`\n\n- `accounts?: string[]`\n  Allows filtering transactions by list of Account IDs. Account ID is the "accountId" attribute of the account structure.\n\n\n- `dateFrom?: string`\n  Starting date (inclusive of the date entered) of the transaction list based on the booking date. Must be bigger than 2020-01-01.\n\n- `dateTo?: string`\n  End date (inclusive of the date entered) of the transaction list based on the booking date, default is "now" if not given.\n\n\n- `offset?: string`\n  The time offset for the date range, default is UTC.\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ summaries?: { accountId?: string; categories?: { amount?: number; name?: string; percentageOfTotal?: number; }[]; totalAmount?: string; }[]; }`\n\n  - `summaries?: { accountId?: string; categories?: { amount?: number; name?: string; percentageOfTotal?: number; }[]; totalAmount?: string; }[]`\n\n### Example\n\n```typescript\nimport Plumery from \'plumery\';\n\nconst client = new Plumery();\n\nconst spendingSummaries = await client.parties.transactions.insights.spendingSummary.list(\'6878951b-256b-4baa-9e81-ad4c577adc4e\');\n\nconsole.log(spendingSummaries);\n```',
    perLanguage: {
      typescript: {
        method: 'client.parties.transactions.insights.spendingSummary.list',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst spendingSummaries = await client.parties.transactions.insights.spendingSummary.list(\n  '6878951b-256b-4baa-9e81-ad4c577adc4e',\n);\n\nconsole.log(spendingSummaries.summaries);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/transactions/insights/spending-summary \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().transactions().insights().spendingSummary().list',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.transactions.insights.spendingsummary.SpendingSummaryListParams\nimport com.plumery.api.models.parties.transactions.insights.spendingsummary.SpendingSummaryListResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val spendingSummaries: SpendingSummaryListResponse = client.parties().transactions().insights().spendingSummary().list("6878951b-256b-4baa-9e81-ad4c577adc4e")\n}',
      },
      java: {
        method: 'parties().transactions().insights().spendingSummary().list',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.transactions.insights.spendingsummary.SpendingSummaryListParams;\nimport com.plumery.api.models.parties.transactions.insights.spendingsummary.SpendingSummaryListResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        SpendingSummaryListResponse spendingSummaries = client.parties().transactions().insights().spendingSummary().list("6878951b-256b-4baa-9e81-ad4c577adc4e");\n    }\n}',
      },
    },
  },
  {
    name: 'list',
    endpoint: '/api/v1/parties/{partyId}/loans',
    httpMethod: 'get',
    summary: 'Get Loans',
    description: 'Get user loans',
    stainlessPath: '(resource) parties.loans > (method) list',
    qualified: 'client.parties.loans.list',
    params: ['partyId: string;', 'plmr-user-action?: boolean;', 'X-Request-ID?: string;'],
    response:
      '{ loans?: { amount?: number; applicationId?: string; approvedDate?: string; balances?: { interestBalance?: number; interestPaid?: number; principalBalance?: number; principalPaid?: number; totalBalance?: number; totalPaid?: number; }; clientScore?: string; creationDate?: string; currency?: string; disbursementDate?: string; iban?: string; interestRate?: number; loanId?: string; name?: string; repayments?: { firstRepaymentDate?: string; interestRepayment?: number; principalRepayment?: number; repaymentInstallmentsNumber?: number; repaymentPeriodUnit?: string; totalRepayment?: number; }; state?: string; }[]; }',
    markdown:
      "## list\n\n`client.parties.loans.list(partyId: string, plmr-user-action?: boolean, X-Request-ID?: string): { loans?: object[]; }`\n\n**get** `/api/v1/parties/{partyId}/loans`\n\nGet user loans\n\n### Parameters\n\n- `partyId: string`\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ loans?: { amount?: number; applicationId?: string; approvedDate?: string; balances?: { interestBalance?: number; interestPaid?: number; principalBalance?: number; principalPaid?: number; totalBalance?: number; totalPaid?: number; }; clientScore?: string; creationDate?: string; currency?: string; disbursementDate?: string; iban?: string; interestRate?: number; loanId?: string; name?: string; repayments?: { firstRepaymentDate?: string; interestRepayment?: number; principalRepayment?: number; repaymentInstallmentsNumber?: number; repaymentPeriodUnit?: string; totalRepayment?: number; }; state?: string; }[]; }`\n\n  - `loans?: { amount?: number; applicationId?: string; approvedDate?: string; balances?: { interestBalance?: number; interestPaid?: number; principalBalance?: number; principalPaid?: number; totalBalance?: number; totalPaid?: number; }; clientScore?: string; creationDate?: string; currency?: string; disbursementDate?: string; iban?: string; interestRate?: number; loanId?: string; name?: string; repayments?: { firstRepaymentDate?: string; interestRepayment?: number; principalRepayment?: number; repaymentInstallmentsNumber?: number; repaymentPeriodUnit?: string; totalRepayment?: number; }; state?: string; }[]`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst loans = await client.parties.loans.list('36a22460-ebc8-4ffe-a213-1683c5a420c5');\n\nconsole.log(loans);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.loans.list',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst loans = await client.parties.loans.list('36a22460-ebc8-4ffe-a213-1683c5a420c5');\n\nconsole.log(loans.loans);",
      },
      http: {
        example: 'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/loans \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().loans().list',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.loans.LoanListParams\nimport com.plumery.api.models.parties.loans.LoanListResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val loans: LoanListResponse = client.parties().loans().list("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n}',
      },
      java: {
        method: 'parties().loans().list',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.loans.LoanListParams;\nimport com.plumery.api.models.parties.loans.LoanListResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        LoanListResponse loans = client.parties().loans().list("36a22460-ebc8-4ffe-a213-1683c5a420c5");\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/parties/{partyId}/loans/{loanId}',
    httpMethod: 'get',
    summary: 'Get loan details',
    description: 'Get loan details',
    stainlessPath: '(resource) parties.loans > (method) retrieve',
    qualified: 'client.parties.loans.retrieve',
    params: ['partyId: string;', 'loanId: string;', 'plmr-user-action?: boolean;', 'X-Request-ID?: string;'],
    response:
      "{ amount?: number; applicationId?: string; approvedDate?: string; balances?: { interestBalance?: number; interestPaid?: number; principalBalance?: number; principalPaid?: number; totalBalance?: number; totalPaid?: number; }; clientScore?: string; creationDate?: string; currency?: string; disbursementDate?: string; iban?: string; interestRate?: number; loanId?: string; name?: string; repayments?: { firstRepaymentDate?: string; interestRepayment?: number; principalRepayment?: number; repaymentInstallments?: { dueDate?: string; lastPaidDate?: string; number?: number; repaidDate?: string; state?: 'PAID' | 'PENDING' | 'PARTIALLY_PAID' | 'LATE' | 'GRACE'; totalDueAmount?: number; totalExpectedAmount?: number; totalPaidAmount?: number; }[]; repaymentInstallmentsNumber?: number; repaymentPeriodUnit?: string; totalRepayment?: number; }; state?: string; }",
    markdown:
      "## retrieve\n\n`client.parties.loans.retrieve(partyId: string, loanId: string, plmr-user-action?: boolean, X-Request-ID?: string): { amount?: number; applicationId?: string; approvedDate?: string; balances?: object; clientScore?: string; creationDate?: string; currency?: string; disbursementDate?: string; iban?: string; interestRate?: number; loanId?: string; name?: string; repayments?: object; state?: string; }`\n\n**get** `/api/v1/parties/{partyId}/loans/{loanId}`\n\nGet loan details\n\n### Parameters\n\n- `partyId: string`\n\n- `loanId: string`\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ amount?: number; applicationId?: string; approvedDate?: string; balances?: { interestBalance?: number; interestPaid?: number; principalBalance?: number; principalPaid?: number; totalBalance?: number; totalPaid?: number; }; clientScore?: string; creationDate?: string; currency?: string; disbursementDate?: string; iban?: string; interestRate?: number; loanId?: string; name?: string; repayments?: { firstRepaymentDate?: string; interestRepayment?: number; principalRepayment?: number; repaymentInstallments?: { dueDate?: string; lastPaidDate?: string; number?: number; repaidDate?: string; state?: 'PAID' | 'PENDING' | 'PARTIALLY_PAID' | 'LATE' | 'GRACE'; totalDueAmount?: number; totalExpectedAmount?: number; totalPaidAmount?: number; }[]; repaymentInstallmentsNumber?: number; repaymentPeriodUnit?: string; totalRepayment?: number; }; state?: string; }`\n\n  - `amount?: number`\n  - `applicationId?: string`\n  - `approvedDate?: string`\n  - `balances?: { interestBalance?: number; interestPaid?: number; principalBalance?: number; principalPaid?: number; totalBalance?: number; totalPaid?: number; }`\n  - `clientScore?: string`\n  - `creationDate?: string`\n  - `currency?: string`\n  - `disbursementDate?: string`\n  - `iban?: string`\n  - `interestRate?: number`\n  - `loanId?: string`\n  - `name?: string`\n  - `repayments?: { firstRepaymentDate?: string; interestRepayment?: number; principalRepayment?: number; repaymentInstallments?: { dueDate?: string; lastPaidDate?: string; number?: number; repaidDate?: string; state?: 'PAID' | 'PENDING' | 'PARTIALLY_PAID' | 'LATE' | 'GRACE'; totalDueAmount?: number; totalExpectedAmount?: number; totalPaidAmount?: number; }[]; repaymentInstallmentsNumber?: number; repaymentPeriodUnit?: string; totalRepayment?: number; }`\n  - `state?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst loan = await client.parties.loans.retrieve('8a19aed29227d089019227dd42c601e5', { partyId: '36a22460-ebc8-4ffe-a213-1683c5a420c5' });\n\nconsole.log(loan);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.loans.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst loan = await client.parties.loans.retrieve('8a19aed29227d089019227dd42c601e5', {\n  partyId: '36a22460-ebc8-4ffe-a213-1683c5a420c5',\n});\n\nconsole.log(loan.amount);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/loans/$LOAN_ID \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().loans().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.loans.LoanRetrieveParams\nimport com.plumery.api.models.parties.loans.LoanRetrieveResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: LoanRetrieveParams = LoanRetrieveParams.builder()\n        .partyId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .loanId("8a19aed29227d089019227dd42c601e5")\n        .build()\n    val loan: LoanRetrieveResponse = client.parties().loans().retrieve(params)\n}',
      },
      java: {
        method: 'parties().loans().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.loans.LoanRetrieveParams;\nimport com.plumery.api.models.parties.loans.LoanRetrieveResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        LoanRetrieveParams params = LoanRetrieveParams.builder()\n            .partyId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .loanId("8a19aed29227d089019227dd42c601e5")\n            .build();\n        LoanRetrieveResponse loan = client.parties().loans().retrieve(params);\n    }\n}',
      },
    },
  },
  {
    name: 'create',
    endpoint: '/api/v1/parties/{partyId}/payments',
    httpMethod: 'post',
    summary: 'Initiate Payment',
    description:
      'Initiate a new payment.<br>\nPayment can be initiated with either ``counterpartyId`` or counterparty details.<br>\nFor initiation with counterpartyId, ``counterpartyId`` field is mandatory.<br>\nFor initiation with counterparty details, ``creditorAccount`` and ``creditorName`` are mandatory.<br>\nProviding both ``counterpartyId`` and counterparty details like ``creditorAddress`` will result in 400 Bad request response.\n',
    stainlessPath: '(resource) parties.payments > (method) create',
    qualified: 'client.parties.payments.create',
    params: [
      'partyId: string;',
      'debtorAccount: { accountId: string; currency: string; };',
      'instructedAmount: { amount: string; currency: string; };',
      'additionalAttributes?: object;',
      'counterpartyId?: string;',
      'creditorAccount?: { bban?: string; cashAccountType?: string; currency?: string; iban?: string; msisdn?: string; other?: { identification: string; issuer?: string; schemeNameCode?: string; schemeNameProprietary?: string; }; };',
      'creditorAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; };',
      'creditorAgent?: string;',
      'creditorName?: string;',
      'debtorAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; };',
      'endToEndIdentification?: string;',
      'paymentMethodId?: string;',
      "paymentType?: { serviceLevel: 'SEPA' | 'INTERNAL' | 'SDVA' | 'OTHER'; categoryPurpose?: string; localInstrument?: string; routingPreference?: 'NONE' | 'HIGH_PRIORITY' | 'INSTANT'; };",
      'remittanceInformationStructured?: { reference: string; referenceIssuer?: string; referenceType?: string; };',
      'remittanceInformationUnstructured?: string;',
      'supplementaryData?: { amkCode?: string; };',
      'plmr-mfa-challenge-id?: string;',
      'plmr-mfa-signature?: string;',
      'plmr-user-action?: boolean;',
      'X-Device-Integrity-Token?: string;',
      'X-Request-ID?: string;',
    ],
    response: "{ paymentId: string; paymentStatus: 'ACCC' | 'RCVD' | 'RJCT'; }",
    markdown:
      '## create\n\n`client.parties.payments.create(partyId: string, debtorAccount: { accountId: string; currency: string; }, instructedAmount: { amount: string; currency: string; }, additionalAttributes?: object, counterpartyId?: string, creditorAccount?: { bban?: string; cashAccountType?: string; currency?: string; iban?: string; msisdn?: string; other?: { identification: string; issuer?: string; schemeNameCode?: string; schemeNameProprietary?: string; }; }, creditorAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }, creditorAgent?: string, creditorName?: string, debtorAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }, endToEndIdentification?: string, paymentMethodId?: string, paymentType?: { serviceLevel: \'SEPA\' | \'INTERNAL\' | \'SDVA\' | \'OTHER\'; categoryPurpose?: string; localInstrument?: string; routingPreference?: \'NONE\' | \'HIGH_PRIORITY\' | \'INSTANT\'; }, remittanceInformationStructured?: { reference: string; referenceIssuer?: string; referenceType?: string; }, remittanceInformationUnstructured?: string, supplementaryData?: { amkCode?: string; }, plmr-mfa-challenge-id?: string, plmr-mfa-signature?: string, plmr-user-action?: boolean, X-Device-Integrity-Token?: string, X-Request-ID?: string): { paymentId: string; paymentStatus: \'ACCC\' | \'RCVD\' | \'RJCT\'; }`\n\n**post** `/api/v1/parties/{partyId}/payments`\n\nInitiate a new payment.<br>\nPayment can be initiated with either ``counterpartyId`` or counterparty details.<br>\nFor initiation with counterpartyId, ``counterpartyId`` field is mandatory.<br>\nFor initiation with counterparty details, ``creditorAccount`` and ``creditorName`` are mandatory.<br>\nProviding both ``counterpartyId`` and counterparty details like ``creditorAddress`` will result in 400 Bad request response.\n\n\n### Parameters\n\n- `partyId: string`\n\n- `debtorAccount: { accountId: string; currency: string; }`\n  Details of the account from which the amount will be debited.\n  - `accountId: string`\n    The ID of the account that will be debited.\n  - `currency: string`\n    ISO 4217 Alpha 3 currency code.\n\n\n- `instructedAmount: { amount: string; currency: string; }`\n  - `amount: string`\n    The amount given with fractional digits, where fractions must be compliant to the currency definition.\nUp to 14 significant figures. Negative amounts are signed by minus.\nThe decimal separator is a dot.\n\n**Example:**\nValid representations for EUR with up to two decimals are:\n\n  * 1056\n  * 5768.2\n  * -1.50\n  * 5877.78\n\n  - `currency: string`\n    ISO 4217 Alpha 3 currency code.\n\n\n- `additionalAttributes?: object`\n  Free-form map of non-standard attributes forwarded with the payment initiation request.\nValues are passed through unchanged to the payment order command for downstream consumers.\n\n\n- `counterpartyId?: string`\n  The Id of the counterparty.\n\n\n- `creditorAccount?: { bban?: string; cashAccountType?: string; currency?: string; iban?: string; msisdn?: string; other?: { identification: string; issuer?: string; schemeNameCode?: string; schemeNameProprietary?: string; }; }`\n  Reference to a creditor account.\n\n  - `bban?: string`\n    Basic Bank Account Number (BBAN) Identifier.\n  - `cashAccountType?: string`\n    ExternalCashAccountType1Code from ISO 20022.\n  - `currency?: string`\n    ISO 4217 Alpha 3 currency code.\n\n  - `iban?: string`\n    IBAN of an account.\n  - `msisdn?: string`\n    Mobile phone number.\n  - `other?: { identification: string; issuer?: string; schemeNameCode?: string; schemeNameProprietary?: string; }`\n    In cases where the specifically defined criteria (IBAN, BBAN, MSISDN) are not provided to identify an instance of the respective account type (e.g. a savings account), the ASPSP shall include a proprietary ID of the respective account that uniquely identifies the account for this ASPSP.\n\n- `creditorAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }`\n  - `country: string`\n    Nation with its own government. ISO 3166, Alpha-2 code\n\n  - `buildingName?: string`\n    Name of the building or house\n\n  - `buildingNumber?: string`\n    Number that identifies the position of a building on a street\n\n  - `countrySubDivision?: string`\n    Identifies a subdivision of a country such as state, region, county\n\n  - `districtName?: string`\n    Identifies a subdivision within a country sub-division\n\n  - `floor?: string`\n    Floor or storey within a building\n\n  - `postBox?: string`\n    Numbered box in a post office, assigned to a person or organisation, where letters are kept until called for\n\n  - `postCode?: string`\n    Identifier consisting of a group of letters and/or numbers that is added to a postal address to assist the sorting of mail\n\n  - `streetName?: string`\n    Name of a street or thoroughfare\n\n  - `suite?: string`\n    Building room number\n\n  - `townLocationName?: string`\n    Specific location name within the town\n\n  - `townName?: string`\n    Name of a built-up area, with defined boundaries, and a local government\n\n\n- `creditorAgent?: string`\n  BICFI\n\n\n- `creditorName?: string`\n  Creditor name.\n\n- `debtorAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }`\n  - `country: string`\n    Nation with its own government. ISO 3166, Alpha-2 code\n\n  - `buildingName?: string`\n    Name of the building or house\n\n  - `buildingNumber?: string`\n    Number that identifies the position of a building on a street\n\n  - `countrySubDivision?: string`\n    Identifies a subdivision of a country such as state, region, county\n\n  - `districtName?: string`\n    Identifies a subdivision within a country sub-division\n\n  - `floor?: string`\n    Floor or storey within a building\n\n  - `postBox?: string`\n    Numbered box in a post office, assigned to a person or organisation, where letters are kept until called for\n\n  - `postCode?: string`\n    Identifier consisting of a group of letters and/or numbers that is added to a postal address to assist the sorting of mail\n\n  - `streetName?: string`\n    Name of a street or thoroughfare\n\n  - `suite?: string`\n    Building room number\n\n  - `townLocationName?: string`\n    Specific location name within the town\n\n  - `townName?: string`\n    Name of a built-up area, with defined boundaries, and a local government\n\n\n- `endToEndIdentification?: string`\n\n- `paymentMethodId?: string`\n  The Id of the payment method.\n\n\n- `paymentType?: { serviceLevel: \'SEPA\' | \'INTERNAL\' | \'SDVA\' | \'OTHER\'; categoryPurpose?: string; localInstrument?: string; routingPreference?: \'NONE\' | \'HIGH_PRIORITY\' | \'INSTANT\'; }`\n  Specifies the payment type.\nAllowed values:\n- SEPA Instant payment          \n  ```\n  "paymentType": {\n      "serviceLevel": "SEPA",\n      "localInstrument": "INST",\n      "categoryPurpose": null,\n      "routingPreference": "INSTANT"\n     }\n  }\n  ```\n- SEPA Regular payment\n  ```\n  "paymentType": {\n      "serviceLevel": "SEPA",\n      "localInstrument": "SCT",\n      "categoryPurpose": null,\n      "routingPreference": "NONE"\n    }\n  }\n  ```\n- SEPA Any payment\n  ```\n  "paymentType": {\n      "serviceLevel": "SEPA",\n      "localInstrument": null,\n      "categoryPurpose": null,\n      "routingPreference": "NONE"\n     }\n  }\n  ```\n- Internal payment\n  ```\n  "paymentType": {\n      "serviceLevel": "INTERNAL",\n      "localInstrument": "INTERNAL",\n      "categoryPurpose": null,\n      "routingPreference": "NONE"\n      }\n   }\n    ```\n- SWIFT payment\n  ```\n  "paymentType": {\n      "serviceLevel": "SDVA",\n      "localInstrument": "SWIFT",\n      "categoryPurpose": null,\n      "routingPreference": "HIGH_PRIORITY"\n      }\n  }\n  ```\n- OTHER payment\n  ```\n  "paymentType": {\n      "serviceLevel": "OTHER",\n      "localInstrument": "OTHER",\n      "categoryPurpose": null,\n      "routingPreference": "NONE"\n     }\n  }\n  ```\n- Proprietary payment (any bank-specific local instrument, only when serviceLevel is OTHER)\n  ```\n  "paymentType": {\n      "serviceLevel": "OTHER",\n      "localInstrument": "NIP",\n      "categoryPurpose": null,\n      "routingPreference": "INSTANT"\n     }\n  }\n  ```\n\n  - `serviceLevel: \'SEPA\' | \'INTERNAL\' | \'SDVA\' | \'OTHER\'`\n    Specifies the service level for the payment\n\n  - `categoryPurpose?: string`\n    Specifies the category purpose for the payment\n\n  - `localInstrument?: string`\n    Specifies the local instrument for the payment.\nPredefined values: OTHER, SWIFT, INTERNAL, SCT, INST.\nSupports Proprietary value of 1 to 35 characters.\n\n  - `routingPreference?: \'NONE\' | \'HIGH_PRIORITY\' | \'INSTANT\'`\n    Specifies the routing preference for the payment\n\n\n- `remittanceInformationStructured?: { reference: string; referenceIssuer?: string; referenceType?: string; }`\n  - `reference: string`\n  - `referenceIssuer?: string`\n  - `referenceType?: string`\n\n- `remittanceInformationUnstructured?: string`\n  Unstructured remittance information.\n\n\n- `supplementaryData?: { amkCode?: string; }`\n  Additional information that cannot be captured in the structured elements and/or any other specific block.\n\n  - `amkCode?: string`\n\n- `plmr-mfa-challenge-id?: string`\n\n- `plmr-mfa-signature?: string`\n\n- `plmr-user-action?: boolean`\n\n- `X-Device-Integrity-Token?: string`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ paymentId: string; paymentStatus: \'ACCC\' | \'RCVD\' | \'RJCT\'; }`\n  Body of the response for a successful payment initiation request.\n\n  - `paymentId: string`\n  - `paymentStatus: \'ACCC\' | \'RCVD\' | \'RJCT\'`\n\n### Example\n\n```typescript\nimport Plumery from \'plumery\';\n\nconst client = new Plumery();\n\nconst payment = await client.parties.payments.create(\'6878951b-256b-4baa-9e81-ad4c577adc4e\', {\n  debtorAccount: { accountId: \'4ec4e5f6-1124-5678-abcd-1234567890ef\', currency: \'EUR\' },\n  instructedAmount: { amount: \'5877.78\', currency: \'EUR\' },\n});\n\nconsole.log(payment);\n```',
    perLanguage: {
      typescript: {
        method: 'client.parties.payments.create',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst payment = await client.parties.payments.create('6878951b-256b-4baa-9e81-ad4c577adc4e', {\n  debtorAccount: { accountId: '4ec4e5f6-1124-5678-abcd-1234567890ef', currency: 'EUR' },\n  instructedAmount: { amount: '5877.78', currency: 'EUR' },\n});\n\nconsole.log(payment.paymentId);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/payments \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "debtorAccount": {\n            "accountId": "4ec4e5f6-1124-5678-abcd-1234567890ef",\n            "currency": "EUR"\n          },\n          "instructedAmount": {\n            "amount": "5877.78",\n            "currency": "EUR"\n          },\n          "counterpartyId": "9857dab5-973b-4bf4-8031-e9baa5e61607",\n          "creditorAgent": "AAAADEBBXXX",\n          "creditorName": "Creditor Name",\n          "paymentMethodId": "494bbc67-387c-4e5a-b625-00287a8fc5cc",\n          "remittanceInformationUnstructured": "Ref Number Merchant"\n        }\'',
      },
      kotlin: {
        method: 'parties().payments().create',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.payments.PaymentCreateParams\nimport com.plumery.api.models.parties.payments.PaymentCreateResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: PaymentCreateParams = PaymentCreateParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .debtorAccount(PaymentCreateParams.DebtorAccount.builder()\n            .accountId("4ec4e5f6-1124-5678-abcd-1234567890ef")\n            .currency("EUR")\n            .build())\n        .instructedAmount(PaymentCreateParams.InstructedAmount.builder()\n            .amount("5877.78")\n            .currency("EUR")\n            .build())\n        .build()\n    val payment: PaymentCreateResponse = client.parties().payments().create(params)\n}',
      },
      java: {
        method: 'parties().payments().create',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.payments.PaymentCreateParams;\nimport com.plumery.api.models.parties.payments.PaymentCreateResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        PaymentCreateParams params = PaymentCreateParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .debtorAccount(PaymentCreateParams.DebtorAccount.builder()\n                .accountId("4ec4e5f6-1124-5678-abcd-1234567890ef")\n                .currency("EUR")\n                .build())\n            .instructedAmount(PaymentCreateParams.InstructedAmount.builder()\n                .amount("5877.78")\n                .currency("EUR")\n                .build())\n            .build();\n        PaymentCreateResponse payment = client.parties().payments().create(params);\n    }\n}',
      },
    },
  },
  {
    name: 'list',
    endpoint: '/api/v1/parties/{partyId}/payments',
    httpMethod: 'get',
    summary: 'List payments',
    description:
      'Retrieve payments for a specific party filtered by `counterpartyId` or `standingOrderId`.\n',
    stainlessPath: '(resource) parties.payments > (method) list',
    qualified: 'client.parties.payments.list',
    params: [
      'partyId: string;',
      'counterpartyId?: string;',
      'cursor?: string;',
      'limit?: number;',
      'standingOrderId?: string;',
      'plmr-user-action?: boolean;',
    ],
    response:
      "{ items?: { additionalAttributes?: object; counterpartyId?: string; creditorAccount?: object; creditorAddress?: object; creditorAgent?: string; creditorName?: string; debtorAccount?: object; debtorAddress?: object; debtorName?: string; endToEndIdentification?: string; instructedAmount?: object; memberId?: string; paymentId?: string; paymentStatus?: 'ACCC' | 'RCVD' | 'RJCT'; paymentStatusHistory?: object[]; paymentType?: object; rejectionReason?: object; remittanceInformationStructured?: object; remittanceInformationUnstructured?: string; standingOrderId?: string; statusDateTime?: string; supplementaryData?: object; teamId?: string; }[]; nextCursor?: string; }",
    markdown:
      "## list\n\n`client.parties.payments.list(partyId: string, counterpartyId?: string, cursor?: string, limit?: number, standingOrderId?: string, plmr-user-action?: boolean): { items?: object[]; nextCursor?: string; }`\n\n**get** `/api/v1/parties/{partyId}/payments`\n\nRetrieve payments for a specific party filtered by `counterpartyId` or `standingOrderId`.\n\n\n### Parameters\n\n- `partyId: string`\n\n- `counterpartyId?: string`\n  The ID of the counterparty to filter payments.\n\n- `cursor?: string`\n  The cursor is a pointer to the next page of payments. \nIt is returned in the response body of the previous request. \nUse it to retrieve the next page of payments.\n\n\n- `limit?: number`\n  Specifies the number of payments to retrieve.\n\n- `standingOrderId?: string`\n  The ID of the standing order to filter payments.\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ items?: { additionalAttributes?: object; counterpartyId?: string; creditorAccount?: { bban?: string; cashAccountType?: string; currency?: string; iban?: string; msisdn?: string; other?: object; }; creditorAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }; creditorAgent?: string; creditorName?: string; debtorAccount?: { currency: string; iban: string; }; debtorAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }; debtorName?: string; endToEndIdentification?: string; instructedAmount?: { amount: string; currency: string; }; memberId?: string; paymentId?: string; paymentStatus?: 'ACCC' | 'RCVD' | 'RJCT'; paymentStatusHistory?: { paymentStatus?: 'ACCC' | 'RCVD' | 'RJCT'; statusDateTime?: string; }[]; paymentType?: { serviceLevel: 'SEPA' | 'INTERNAL' | 'SDVA' | 'OTHER'; categoryPurpose?: string; localInstrument?: string; routingPreference?: 'NONE' | 'HIGH_PRIORITY' | 'INSTANT'; }; rejectionReason?: { code: string; message: string; }; remittanceInformationStructured?: { reference: string; referenceIssuer?: string; referenceType?: string; }; remittanceInformationUnstructured?: string; standingOrderId?: string; statusDateTime?: string; supplementaryData?: { amkCode?: string; }; teamId?: string; }[]; nextCursor?: string; }`\n\n  - `items?: { additionalAttributes?: object; counterpartyId?: string; creditorAccount?: { bban?: string; cashAccountType?: string; currency?: string; iban?: string; msisdn?: string; other?: { identification: string; issuer?: string; schemeNameCode?: string; schemeNameProprietary?: string; }; }; creditorAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }; creditorAgent?: string; creditorName?: string; debtorAccount?: { currency: string; iban: string; }; debtorAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }; debtorName?: string; endToEndIdentification?: string; instructedAmount?: { amount: string; currency: string; }; memberId?: string; paymentId?: string; paymentStatus?: 'ACCC' | 'RCVD' | 'RJCT'; paymentStatusHistory?: { paymentStatus?: 'ACCC' | 'RCVD' | 'RJCT'; statusDateTime?: string; }[]; paymentType?: { serviceLevel: 'SEPA' | 'INTERNAL' | 'SDVA' | 'OTHER'; categoryPurpose?: string; localInstrument?: string; routingPreference?: 'NONE' | 'HIGH_PRIORITY' | 'INSTANT'; }; rejectionReason?: { code: string; message: string; }; remittanceInformationStructured?: { reference: string; referenceIssuer?: string; referenceType?: string; }; remittanceInformationUnstructured?: string; standingOrderId?: string; statusDateTime?: string; supplementaryData?: { amkCode?: string; }; teamId?: string; }[]`\n  - `nextCursor?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst payments = await client.parties.payments.list('6878951b-256b-4baa-9e81-ad4c577adc4e');\n\nconsole.log(payments);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.payments.list',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst payments = await client.parties.payments.list('6878951b-256b-4baa-9e81-ad4c577adc4e');\n\nconsole.log(payments.items);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/payments \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().payments().list',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.payments.PaymentListParams\nimport com.plumery.api.models.parties.payments.PaymentListResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val payments: PaymentListResponse = client.parties().payments().list("6878951b-256b-4baa-9e81-ad4c577adc4e")\n}',
      },
      java: {
        method: 'parties().payments().list',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.payments.PaymentListParams;\nimport com.plumery.api.models.parties.payments.PaymentListResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        PaymentListResponse payments = client.parties().payments().list("6878951b-256b-4baa-9e81-ad4c577adc4e");\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/parties/{partyId}/payments/{paymentId}',
    httpMethod: 'get',
    summary: 'Retrieve Payment Details',
    description: 'Retrieve payment details.\n',
    stainlessPath: '(resource) parties.payments > (method) retrieve',
    qualified: 'client.parties.payments.retrieve',
    params: ['partyId: string;', 'paymentId: string;', 'plmr-user-action?: boolean;'],
    response:
      "{ additionalAttributes?: object; counterpartyId?: string; creditorAccount?: object; creditorAddress?: object; creditorAgent?: string; creditorName?: string; debtorAccount?: object; debtorAddress?: object; debtorName?: string; endToEndIdentification?: string; instructedAmount?: object; memberId?: string; paymentId?: string; paymentStatus?: 'ACCC' | 'RCVD' | 'RJCT'; paymentStatusHistory?: object[]; paymentType?: object; rejectionReason?: object; remittanceInformationStructured?: object; remittanceInformationUnstructured?: string; standingOrderId?: string; statusDateTime?: string; supplementaryData?: object; teamId?: string; }",
    markdown:
      "## retrieve\n\n`client.parties.payments.retrieve(partyId: string, paymentId: string, plmr-user-action?: boolean): { additionalAttributes?: object; counterpartyId?: string; creditorAccount?: object; creditorAddress?: object; creditorAgent?: string; creditorName?: string; debtorAccount?: object; debtorAddress?: object; debtorName?: string; endToEndIdentification?: string; instructedAmount?: object; memberId?: string; paymentId?: string; paymentStatus?: 'ACCC' | 'RCVD' | 'RJCT'; paymentStatusHistory?: object[]; paymentType?: object; rejectionReason?: object; remittanceInformationStructured?: object; remittanceInformationUnstructured?: string; standingOrderId?: string; statusDateTime?: string; supplementaryData?: object; teamId?: string; }`\n\n**get** `/api/v1/parties/{partyId}/payments/{paymentId}`\n\nRetrieve payment details.\n\n\n### Parameters\n\n- `partyId: string`\n\n- `paymentId: string`\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ additionalAttributes?: object; counterpartyId?: string; creditorAccount?: { bban?: string; cashAccountType?: string; currency?: string; iban?: string; msisdn?: string; other?: { identification: string; issuer?: string; schemeNameCode?: string; schemeNameProprietary?: string; }; }; creditorAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }; creditorAgent?: string; creditorName?: string; debtorAccount?: { currency: string; iban: string; }; debtorAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }; debtorName?: string; endToEndIdentification?: string; instructedAmount?: { amount: string; currency: string; }; memberId?: string; paymentId?: string; paymentStatus?: 'ACCC' | 'RCVD' | 'RJCT'; paymentStatusHistory?: { paymentStatus?: 'ACCC' | 'RCVD' | 'RJCT'; statusDateTime?: string; }[]; paymentType?: { serviceLevel: 'SEPA' | 'INTERNAL' | 'SDVA' | 'OTHER'; categoryPurpose?: string; localInstrument?: string; routingPreference?: 'NONE' | 'HIGH_PRIORITY' | 'INSTANT'; }; rejectionReason?: { code: string; message: string; }; remittanceInformationStructured?: { reference: string; referenceIssuer?: string; referenceType?: string; }; remittanceInformationUnstructured?: string; standingOrderId?: string; statusDateTime?: string; supplementaryData?: { amkCode?: string; }; teamId?: string; }`\n\n  - `additionalAttributes?: object`\n  - `counterpartyId?: string`\n  - `creditorAccount?: { bban?: string; cashAccountType?: string; currency?: string; iban?: string; msisdn?: string; other?: { identification: string; issuer?: string; schemeNameCode?: string; schemeNameProprietary?: string; }; }`\n  - `creditorAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }`\n  - `creditorAgent?: string`\n  - `creditorName?: string`\n  - `debtorAccount?: { currency: string; iban: string; }`\n  - `debtorAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }`\n  - `debtorName?: string`\n  - `endToEndIdentification?: string`\n  - `instructedAmount?: { amount: string; currency: string; }`\n  - `memberId?: string`\n  - `paymentId?: string`\n  - `paymentStatus?: 'ACCC' | 'RCVD' | 'RJCT'`\n  - `paymentStatusHistory?: { paymentStatus?: 'ACCC' | 'RCVD' | 'RJCT'; statusDateTime?: string; }[]`\n  - `paymentType?: { serviceLevel: 'SEPA' | 'INTERNAL' | 'SDVA' | 'OTHER'; categoryPurpose?: string; localInstrument?: string; routingPreference?: 'NONE' | 'HIGH_PRIORITY' | 'INSTANT'; }`\n  - `rejectionReason?: { code: string; message: string; }`\n  - `remittanceInformationStructured?: { reference: string; referenceIssuer?: string; referenceType?: string; }`\n  - `remittanceInformationUnstructured?: string`\n  - `standingOrderId?: string`\n  - `statusDateTime?: string`\n  - `supplementaryData?: { amkCode?: string; }`\n  - `teamId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst payment = await client.parties.payments.retrieve('2751d7d9-df79-4412-b4c4-28aaa7075548', { partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e' });\n\nconsole.log(payment);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.payments.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst payment = await client.parties.payments.retrieve('2751d7d9-df79-4412-b4c4-28aaa7075548', {\n  partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n});\n\nconsole.log(payment.additionalAttributes);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/payments/$PAYMENT_ID \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().payments().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.payments.PaymentRetrieveParams\nimport com.plumery.api.models.parties.payments.PaymentRetrieveResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: PaymentRetrieveParams = PaymentRetrieveParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .paymentId("2751d7d9-df79-4412-b4c4-28aaa7075548")\n        .build()\n    val payment: PaymentRetrieveResponse = client.parties().payments().retrieve(params)\n}',
      },
      java: {
        method: 'parties().payments().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.payments.PaymentRetrieveParams;\nimport com.plumery.api.models.parties.payments.PaymentRetrieveResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        PaymentRetrieveParams params = PaymentRetrieveParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .paymentId("2751d7d9-df79-4412-b4c4-28aaa7075548")\n            .build();\n        PaymentRetrieveResponse payment = client.parties().payments().retrieve(params);\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/parties/{partyId}/payments/{paymentId}/status',
    httpMethod: 'get',
    summary: 'Retrieve Payment Execution Status',
    description: 'Retrieve payment execution status.\n',
    stainlessPath: '(resource) parties.payments.status > (method) retrieve',
    qualified: 'client.parties.payments.status.retrieve',
    params: ['partyId: string;', 'paymentId: string;', 'plmr-user-action?: boolean;'],
    response:
      "{ paymentStatus?: 'ACCC' | 'RCVD' | 'RJCT'; paymentStatusHistory?: { paymentStatus?: 'ACCC' | 'RCVD' | 'RJCT'; statusDateTime?: string; }[]; rejectionReason?: { code: string; message: string; }; statusDateTime?: string; }",
    markdown:
      "## retrieve\n\n`client.parties.payments.status.retrieve(partyId: string, paymentId: string, plmr-user-action?: boolean): { paymentStatus?: 'ACCC' | 'RCVD' | 'RJCT'; paymentStatusHistory?: object[]; rejectionReason?: object; statusDateTime?: string; }`\n\n**get** `/api/v1/parties/{partyId}/payments/{paymentId}/status`\n\nRetrieve payment execution status.\n\n\n### Parameters\n\n- `partyId: string`\n\n- `paymentId: string`\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ paymentStatus?: 'ACCC' | 'RCVD' | 'RJCT'; paymentStatusHistory?: { paymentStatus?: 'ACCC' | 'RCVD' | 'RJCT'; statusDateTime?: string; }[]; rejectionReason?: { code: string; message: string; }; statusDateTime?: string; }`\n  Body of the response for payment execution status.\n\nWhen a payment is rejected via team approvals, the `rejectionReason` will contain:\n- `code`: `urn:plmr:payments:approval:DECLINED`\n- `message`: The approver's decline reason\n\n\n  - `paymentStatus?: 'ACCC' | 'RCVD' | 'RJCT'`\n  - `paymentStatusHistory?: { paymentStatus?: 'ACCC' | 'RCVD' | 'RJCT'; statusDateTime?: string; }[]`\n  - `rejectionReason?: { code: string; message: string; }`\n  - `statusDateTime?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst status = await client.parties.payments.status.retrieve('2751d7d9-df79-4412-b4c4-28aaa7075548', { partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e' });\n\nconsole.log(status);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.payments.status.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst status = await client.parties.payments.status.retrieve(\n  '2751d7d9-df79-4412-b4c4-28aaa7075548',\n  { partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e' },\n);\n\nconsole.log(status.paymentStatus);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/payments/$PAYMENT_ID/status \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().payments().status().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.payments.status.StatusRetrieveParams\nimport com.plumery.api.models.parties.payments.status.StatusRetrieveResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: StatusRetrieveParams = StatusRetrieveParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .paymentId("2751d7d9-df79-4412-b4c4-28aaa7075548")\n        .build()\n    val status: StatusRetrieveResponse = client.parties().payments().status().retrieve(params)\n}',
      },
      java: {
        method: 'parties().payments().status().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.payments.status.StatusRetrieveParams;\nimport com.plumery.api.models.parties.payments.status.StatusRetrieveResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        StatusRetrieveParams params = StatusRetrieveParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .paymentId("2751d7d9-df79-4412-b4c4-28aaa7075548")\n            .build();\n        StatusRetrieveResponse status = client.parties().payments().status().retrieve(params);\n    }\n}',
      },
    },
  },
  {
    name: 'create',
    endpoint: '/api/v1/parties/{partyId}/standing-orders',
    httpMethod: 'post',
    summary: 'Create Standing Order',
    description:
      'Created a new standing order.<br>\nThe standing order can be created with either ``counterpartyId`` or counterparty details.<br>\nFor creation with counterpartyId, ``counterpartyId`` field is mandatory.<br>\nFor creation with counterparty details, ``creditorAccount`` and ``creditorName`` are mandatory.<br>\nProviding both ``counterpartyId`` and counterparty details like ``creditorAddress`` will result in 400 Bad request response.\n',
    stainlessPath: '(resource) parties.standing-orders > (method) create',
    qualified: 'client.parties.standingOrders.create',
    params: [
      'partyId: string;',
      'debtorAccount: { accountId: string; currency: string; };',
      'instructedAmount: { amount: string; currency: string; };',
      'additionalAttributes?: object;',
      'counterpartyId?: string;',
      'creditorAccount?: { bban?: string; cashAccountType?: string; currency?: string; iban?: string; msisdn?: string; other?: { identification: string; issuer?: string; schemeNameCode?: string; schemeNameProprietary?: string; }; };',
      'creditorAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; };',
      'creditorAgent?: string;',
      'creditorName?: string;',
      'debtorAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; };',
      'endToEndIdentification?: string;',
      'paymentMethodId?: string;',
      "paymentType?: { serviceLevel: 'SEPA' | 'INTERNAL' | 'SDVA' | 'OTHER'; categoryPurpose?: string; localInstrument?: string; routingPreference?: 'NONE' | 'HIGH_PRIORITY' | 'INSTANT'; };",
      'remittanceInformationStructured?: { reference: string; referenceIssuer?: string; referenceType?: string; };',
      'remittanceInformationUnstructured?: string;',
      'supplementaryData?: { amkCode?: string; };',
      'plmr-mfa-challenge-id?: string;',
      'plmr-mfa-signature?: string;',
      'plmr-user-action?: boolean;',
      'X-Device-Integrity-Token?: string;',
      'X-Request-ID?: string;',
    ],
    response: "{ standingOrderId: string; standingOrderStatus: 'PENDING' | 'ACTIVE' | 'PAUSED'; }",
    markdown:
      '## create\n\n`client.parties.standingOrders.create(partyId: string, debtorAccount: { accountId: string; currency: string; }, instructedAmount: { amount: string; currency: string; }, additionalAttributes?: object, counterpartyId?: string, creditorAccount?: { bban?: string; cashAccountType?: string; currency?: string; iban?: string; msisdn?: string; other?: { identification: string; issuer?: string; schemeNameCode?: string; schemeNameProprietary?: string; }; }, creditorAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }, creditorAgent?: string, creditorName?: string, debtorAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }, endToEndIdentification?: string, paymentMethodId?: string, paymentType?: { serviceLevel: \'SEPA\' | \'INTERNAL\' | \'SDVA\' | \'OTHER\'; categoryPurpose?: string; localInstrument?: string; routingPreference?: \'NONE\' | \'HIGH_PRIORITY\' | \'INSTANT\'; }, remittanceInformationStructured?: { reference: string; referenceIssuer?: string; referenceType?: string; }, remittanceInformationUnstructured?: string, supplementaryData?: { amkCode?: string; }, plmr-mfa-challenge-id?: string, plmr-mfa-signature?: string, plmr-user-action?: boolean, X-Device-Integrity-Token?: string, X-Request-ID?: string): { standingOrderId: string; standingOrderStatus: \'PENDING\' | \'ACTIVE\' | \'PAUSED\'; }`\n\n**post** `/api/v1/parties/{partyId}/standing-orders`\n\nCreated a new standing order.<br>\nThe standing order can be created with either ``counterpartyId`` or counterparty details.<br>\nFor creation with counterpartyId, ``counterpartyId`` field is mandatory.<br>\nFor creation with counterparty details, ``creditorAccount`` and ``creditorName`` are mandatory.<br>\nProviding both ``counterpartyId`` and counterparty details like ``creditorAddress`` will result in 400 Bad request response.\n\n\n### Parameters\n\n- `partyId: string`\n\n- `debtorAccount: { accountId: string; currency: string; }`\n  Details of the account from which the amount will be debited.\n  - `accountId: string`\n    The ID of the account that will be debited.\n  - `currency: string`\n    ISO 4217 Alpha 3 currency code.\n\n\n- `instructedAmount: { amount: string; currency: string; }`\n  - `amount: string`\n    The amount given with fractional digits, where fractions must be compliant to the currency definition.\nUp to 14 significant figures. Negative amounts are signed by minus.\nThe decimal separator is a dot.\n\n**Example:**\nValid representations for EUR with up to two decimals are:\n\n  * 1056\n  * 5768.2\n  * -1.50\n  * 5877.78\n\n  - `currency: string`\n    ISO 4217 Alpha 3 currency code.\n\n\n- `additionalAttributes?: object`\n  Free-form map of non-standard attributes forwarded with the payment initiation request.\nValues are passed through unchanged to the payment order command for downstream consumers.\n\n\n- `counterpartyId?: string`\n  The ID of the counterparty.\n\n\n- `creditorAccount?: { bban?: string; cashAccountType?: string; currency?: string; iban?: string; msisdn?: string; other?: { identification: string; issuer?: string; schemeNameCode?: string; schemeNameProprietary?: string; }; }`\n  Reference to a creditor account.\n\n  - `bban?: string`\n    Basic Bank Account Number (BBAN) Identifier.\n  - `cashAccountType?: string`\n    ExternalCashAccountType1Code from ISO 20022.\n  - `currency?: string`\n    ISO 4217 Alpha 3 currency code.\n\n  - `iban?: string`\n    IBAN of an account.\n  - `msisdn?: string`\n    Mobile phone number.\n  - `other?: { identification: string; issuer?: string; schemeNameCode?: string; schemeNameProprietary?: string; }`\n    In cases where the specifically defined criteria (IBAN, BBAN, MSISDN) are not provided to identify an instance of the respective account type (e.g. a savings account), the ASPSP shall include a proprietary ID of the respective account that uniquely identifies the account for this ASPSP.\n\n- `creditorAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }`\n  - `country: string`\n    Nation with its own government. ISO 3166, Alpha-2 code\n\n  - `buildingName?: string`\n    Name of the building or house\n\n  - `buildingNumber?: string`\n    Number that identifies the position of a building on a street\n\n  - `countrySubDivision?: string`\n    Identifies a subdivision of a country such as state, region, county\n\n  - `districtName?: string`\n    Identifies a subdivision within a country sub-division\n\n  - `floor?: string`\n    Floor or storey within a building\n\n  - `postBox?: string`\n    Numbered box in a post office, assigned to a person or organisation, where letters are kept until called for\n\n  - `postCode?: string`\n    Identifier consisting of a group of letters and/or numbers that is added to a postal address to assist the sorting of mail\n\n  - `streetName?: string`\n    Name of a street or thoroughfare\n\n  - `suite?: string`\n    Building room number\n\n  - `townLocationName?: string`\n    Specific location name within the town\n\n  - `townName?: string`\n    Name of a built-up area, with defined boundaries, and a local government\n\n\n- `creditorAgent?: string`\n  BICFI\n\n\n- `creditorName?: string`\n  Creditor name.\n\n- `debtorAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }`\n  - `country: string`\n    Nation with its own government. ISO 3166, Alpha-2 code\n\n  - `buildingName?: string`\n    Name of the building or house\n\n  - `buildingNumber?: string`\n    Number that identifies the position of a building on a street\n\n  - `countrySubDivision?: string`\n    Identifies a subdivision of a country such as state, region, county\n\n  - `districtName?: string`\n    Identifies a subdivision within a country sub-division\n\n  - `floor?: string`\n    Floor or storey within a building\n\n  - `postBox?: string`\n    Numbered box in a post office, assigned to a person or organisation, where letters are kept until called for\n\n  - `postCode?: string`\n    Identifier consisting of a group of letters and/or numbers that is added to a postal address to assist the sorting of mail\n\n  - `streetName?: string`\n    Name of a street or thoroughfare\n\n  - `suite?: string`\n    Building room number\n\n  - `townLocationName?: string`\n    Specific location name within the town\n\n  - `townName?: string`\n    Name of a built-up area, with defined boundaries, and a local government\n\n\n- `endToEndIdentification?: string`\n\n- `paymentMethodId?: string`\n  The Id of the payment method.\n\n\n- `paymentType?: { serviceLevel: \'SEPA\' | \'INTERNAL\' | \'SDVA\' | \'OTHER\'; categoryPurpose?: string; localInstrument?: string; routingPreference?: \'NONE\' | \'HIGH_PRIORITY\' | \'INSTANT\'; }`\n  Specifies the payment type.\nAllowed values:\n- SEPA Instant payment          \n  ```\n  "paymentType": {\n      "serviceLevel": "SEPA",\n      "localInstrument": "INST",\n      "categoryPurpose": null,\n      "routingPreference": "INSTANT"\n     }\n  }\n  ```\n- SEPA Regular payment\n  ```\n  "paymentType": {\n      "serviceLevel": "SEPA",\n      "localInstrument": "SCT",\n      "categoryPurpose": null,\n      "routingPreference": "NONE"\n    }\n  }\n  ```\n- SEPA Any payment\n  ```\n  "paymentType": {\n      "serviceLevel": "SEPA",\n      "localInstrument": null,\n      "categoryPurpose": null,\n      "routingPreference": "NONE"\n     }\n  }\n  ```\n- Internal payment\n  ```\n  "paymentType": {\n      "serviceLevel": "INTERNAL",\n      "localInstrument": "INTERNAL",\n      "categoryPurpose": null,\n      "routingPreference": "NONE"\n      }\n   }\n    ```\n- SWIFT payment\n  ```\n  "paymentType": {\n      "serviceLevel": "SDVA",\n      "localInstrument": "SWIFT",\n      "categoryPurpose": null,\n      "routingPreference": "HIGH_PRIORITY"\n      }\n  }\n  ```\n- OTHER payment\n  ```\n  "paymentType": {\n      "serviceLevel": "OTHER",\n      "localInstrument": "OTHER",\n      "categoryPurpose": null,\n      "routingPreference": "NONE"\n     }\n  }\n  ```\n- Proprietary payment (any bank-specific local instrument, only when serviceLevel is OTHER)\n  ```\n  "paymentType": {\n      "serviceLevel": "OTHER",\n      "localInstrument": "NIP",\n      "categoryPurpose": null,\n      "routingPreference": "INSTANT"\n     }\n  }\n  ```\n\n  - `serviceLevel: \'SEPA\' | \'INTERNAL\' | \'SDVA\' | \'OTHER\'`\n    Specifies the service level for the payment\n\n  - `categoryPurpose?: string`\n    Specifies the category purpose for the payment\n\n  - `localInstrument?: string`\n    Specifies the local instrument for the payment.\nPredefined values: OTHER, SWIFT, INTERNAL, SCT, INST.\nSupports Proprietary value of 1 to 35 characters.\n\n  - `routingPreference?: \'NONE\' | \'HIGH_PRIORITY\' | \'INSTANT\'`\n    Specifies the routing preference for the payment\n\n\n- `remittanceInformationStructured?: { reference: string; referenceIssuer?: string; referenceType?: string; }`\n  - `reference: string`\n  - `referenceIssuer?: string`\n  - `referenceType?: string`\n\n- `remittanceInformationUnstructured?: string`\n  Unstructured remittance information.\n\n\n- `supplementaryData?: { amkCode?: string; }`\n  Additional information that cannot be captured in the structured elements and/or any other specific block.\n\n  - `amkCode?: string`\n\n- `plmr-mfa-challenge-id?: string`\n\n- `plmr-mfa-signature?: string`\n\n- `plmr-user-action?: boolean`\n\n- `X-Device-Integrity-Token?: string`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ standingOrderId: string; standingOrderStatus: \'PENDING\' | \'ACTIVE\' | \'PAUSED\'; }`\n  Body of the response for a successful standing order initiation request.\n\n  - `standingOrderId: string`\n  - `standingOrderStatus: \'PENDING\' | \'ACTIVE\' | \'PAUSED\'`\n\n### Example\n\n```typescript\nimport Plumery from \'plumery\';\n\nconst client = new Plumery();\n\nconst standingOrder = await client.parties.standingOrders.create(\'6878951b-256b-4baa-9e81-ad4c577adc4e\', {\n  debtorAccount: { accountId: \'4ec4e5f6-1124-5678-abcd-1234567890ef\', currency: \'EUR\' },\n  instructedAmount: { amount: \'5877.78\', currency: \'EUR\' },\n});\n\nconsole.log(standingOrder);\n```',
    perLanguage: {
      typescript: {
        method: 'client.parties.standingOrders.create',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst standingOrder = await client.parties.standingOrders.create(\n  '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  {\n    debtorAccount: { accountId: '4ec4e5f6-1124-5678-abcd-1234567890ef', currency: 'EUR' },\n    instructedAmount: { amount: '5877.78', currency: 'EUR' },\n  },\n);\n\nconsole.log(standingOrder.standingOrderId);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/standing-orders \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "debtorAccount": {\n            "accountId": "4ec4e5f6-1124-5678-abcd-1234567890ef",\n            "currency": "EUR"\n          },\n          "instructedAmount": {\n            "amount": "5877.78",\n            "currency": "EUR"\n          },\n          "counterpartyId": "9857dab5-973b-4bf4-8031-e9baa5e61607",\n          "creditorAgent": "AAAADEBBXXX",\n          "creditorName": "Creditor Name",\n          "paymentMethodId": "494bbc67-387c-4e5a-b625-00287a8fc5cc",\n          "remittanceInformationUnstructured": "Ref Number Merchant"\n        }\'',
      },
      kotlin: {
        method: 'parties().standingOrders().create',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.standingorders.StandingOrderCreateParams\nimport com.plumery.api.models.parties.standingorders.StandingOrderCreateResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: StandingOrderCreateParams = StandingOrderCreateParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .debtorAccount(StandingOrderCreateParams.DebtorAccount.builder()\n            .accountId("4ec4e5f6-1124-5678-abcd-1234567890ef")\n            .currency("EUR")\n            .build())\n        .instructedAmount(StandingOrderCreateParams.InstructedAmount.builder()\n            .amount("5877.78")\n            .currency("EUR")\n            .build())\n        .build()\n    val standingOrder: StandingOrderCreateResponse = client.parties().standingOrders().create(params)\n}',
      },
      java: {
        method: 'parties().standingOrders().create',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.standingorders.StandingOrderCreateParams;\nimport com.plumery.api.models.parties.standingorders.StandingOrderCreateResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        StandingOrderCreateParams params = StandingOrderCreateParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .debtorAccount(StandingOrderCreateParams.DebtorAccount.builder()\n                .accountId("4ec4e5f6-1124-5678-abcd-1234567890ef")\n                .currency("EUR")\n                .build())\n            .instructedAmount(StandingOrderCreateParams.InstructedAmount.builder()\n                .amount("5877.78")\n                .currency("EUR")\n                .build())\n            .build();\n        StandingOrderCreateResponse standingOrder = client.parties().standingOrders().create(params);\n    }\n}',
      },
    },
  },
  {
    name: 'list',
    endpoint: '/api/v1/parties/{partyId}/standing-orders',
    httpMethod: 'get',
    summary: 'Get All Standing Orders',
    description: 'Retrieve all standing orders\n',
    stainlessPath: '(resource) parties.standing-orders > (method) list',
    qualified: 'client.parties.standingOrders.list',
    params: ['partyId: string;', 'plmr-user-action?: boolean;'],
    response:
      "{ standingOrders?: { additionalAttributes?: object; creditorAccount?: object; creditorAddress?: object; creditorAgent?: string; creditorName?: string; debtorAccount?: object; endToEndIdentification?: string; executionSchedule?: object; instructedAmount?: object; nextExecutionDate?: string; paymentType?: object; remittanceInformationStructured?: object; remittanceInformationUnstructured?: string; standingOrderId?: string; standingOrderStatus?: 'PENDING' | 'ACTIVE' | 'PAUSED'; supplementaryData?: object; }[]; }",
    markdown:
      "## list\n\n`client.parties.standingOrders.list(partyId: string, plmr-user-action?: boolean): { standingOrders?: object[]; }`\n\n**get** `/api/v1/parties/{partyId}/standing-orders`\n\nRetrieve all standing orders\n\n\n### Parameters\n\n- `partyId: string`\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ standingOrders?: { additionalAttributes?: object; creditorAccount?: { bban?: string; cashAccountType?: string; currency?: string; iban?: string; msisdn?: string; other?: object; }; creditorAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }; creditorAgent?: string; creditorName?: string; debtorAccount?: { accountId: string; currency: string; }; endToEndIdentification?: string; executionSchedule?: { frequency: 'ONE_TIME' | 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'YEARLY' | 'CUSTOM'; startDate: string; customFrequency?: object; endDate?: string; totalNumberOfExecutions?: number; }; instructedAmount?: { amount: string; currency: string; }; nextExecutionDate?: string; paymentType?: { serviceLevel: 'SEPA' | 'INTERNAL' | 'SDVA' | 'OTHER'; categoryPurpose?: string; localInstrument?: string; routingPreference?: 'NONE' | 'HIGH_PRIORITY' | 'INSTANT'; }; remittanceInformationStructured?: { reference: string; referenceIssuer?: string; referenceType?: string; }; remittanceInformationUnstructured?: string; standingOrderId?: string; standingOrderStatus?: 'PENDING' | 'ACTIVE' | 'PAUSED'; supplementaryData?: { amkCode?: string; }; }[]; }`\n  Standing orders associated with a party\n\n\n  - `standingOrders?: { additionalAttributes?: object; creditorAccount?: { bban?: string; cashAccountType?: string; currency?: string; iban?: string; msisdn?: string; other?: { identification: string; issuer?: string; schemeNameCode?: string; schemeNameProprietary?: string; }; }; creditorAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }; creditorAgent?: string; creditorName?: string; debtorAccount?: { accountId: string; currency: string; }; endToEndIdentification?: string; executionSchedule?: { frequency: 'ONE_TIME' | 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'YEARLY' | 'CUSTOM'; startDate: string; customFrequency?: { number: number; period: 'DAYS' | 'WEEKS' | 'MONTHS' | 'YEARS'; }; endDate?: string; totalNumberOfExecutions?: number; }; instructedAmount?: { amount: string; currency: string; }; nextExecutionDate?: string; paymentType?: { serviceLevel: 'SEPA' | 'INTERNAL' | 'SDVA' | 'OTHER'; categoryPurpose?: string; localInstrument?: string; routingPreference?: 'NONE' | 'HIGH_PRIORITY' | 'INSTANT'; }; remittanceInformationStructured?: { reference: string; referenceIssuer?: string; referenceType?: string; }; remittanceInformationUnstructured?: string; standingOrderId?: string; standingOrderStatus?: 'PENDING' | 'ACTIVE' | 'PAUSED'; supplementaryData?: { amkCode?: string; }; }[]`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst standingOrders = await client.parties.standingOrders.list('6878951b-256b-4baa-9e81-ad4c577adc4e');\n\nconsole.log(standingOrders);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.standingOrders.list',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst standingOrders = await client.parties.standingOrders.list(\n  '6878951b-256b-4baa-9e81-ad4c577adc4e',\n);\n\nconsole.log(standingOrders.standingOrders);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/standing-orders \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().standingOrders().list',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.standingorders.StandingOrderListParams\nimport com.plumery.api.models.parties.standingorders.StandingOrderListResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val standingOrders: StandingOrderListResponse = client.parties().standingOrders().list("6878951b-256b-4baa-9e81-ad4c577adc4e")\n}',
      },
      java: {
        method: 'parties().standingOrders().list',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.standingorders.StandingOrderListParams;\nimport com.plumery.api.models.parties.standingorders.StandingOrderListResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        StandingOrderListResponse standingOrders = client.parties().standingOrders().list("6878951b-256b-4baa-9e81-ad4c577adc4e");\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/parties/{partyId}/standing-orders/{standingOrderId}',
    httpMethod: 'get',
    summary: 'Get Standing Order',
    description: 'Retrieve a standing order by ID\n',
    stainlessPath: '(resource) parties.standing-orders > (method) retrieve',
    qualified: 'client.parties.standingOrders.retrieve',
    params: ['partyId: string;', 'standingOrderId: string;', 'plmr-user-action?: boolean;'],
    response:
      "{ additionalAttributes?: object; creditorAccount?: object; creditorAddress?: object; creditorAgent?: string; creditorName?: string; debtorAccount?: object; endToEndIdentification?: string; executionSchedule?: object; instructedAmount?: object; nextExecutionDate?: string; paymentType?: object; remittanceInformationStructured?: object; remittanceInformationUnstructured?: string; standingOrderId?: string; standingOrderStatus?: 'PENDING' | 'ACTIVE' | 'PAUSED'; supplementaryData?: object; }",
    markdown:
      "## retrieve\n\n`client.parties.standingOrders.retrieve(partyId: string, standingOrderId: string, plmr-user-action?: boolean): { additionalAttributes?: object; creditorAccount?: object; creditorAddress?: object; creditorAgent?: string; creditorName?: string; debtorAccount?: object; endToEndIdentification?: string; executionSchedule?: object; instructedAmount?: object; nextExecutionDate?: string; paymentType?: object; remittanceInformationStructured?: object; remittanceInformationUnstructured?: string; standingOrderId?: string; standingOrderStatus?: 'PENDING' | 'ACTIVE' | 'PAUSED'; supplementaryData?: object; }`\n\n**get** `/api/v1/parties/{partyId}/standing-orders/{standingOrderId}`\n\nRetrieve a standing order by ID\n\n\n### Parameters\n\n- `partyId: string`\n\n- `standingOrderId: string`\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ additionalAttributes?: object; creditorAccount?: { bban?: string; cashAccountType?: string; currency?: string; iban?: string; msisdn?: string; other?: { identification: string; issuer?: string; schemeNameCode?: string; schemeNameProprietary?: string; }; }; creditorAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }; creditorAgent?: string; creditorName?: string; debtorAccount?: { accountId: string; currency: string; }; endToEndIdentification?: string; executionSchedule?: { frequency: 'ONE_TIME' | 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'YEARLY' | 'CUSTOM'; startDate: string; customFrequency?: { number: number; period: 'DAYS' | 'WEEKS' | 'MONTHS' | 'YEARS'; }; endDate?: string; totalNumberOfExecutions?: number; }; instructedAmount?: { amount: string; currency: string; }; nextExecutionDate?: string; paymentType?: { serviceLevel: 'SEPA' | 'INTERNAL' | 'SDVA' | 'OTHER'; categoryPurpose?: string; localInstrument?: string; routingPreference?: 'NONE' | 'HIGH_PRIORITY' | 'INSTANT'; }; remittanceInformationStructured?: { reference: string; referenceIssuer?: string; referenceType?: string; }; remittanceInformationUnstructured?: string; standingOrderId?: string; standingOrderStatus?: 'PENDING' | 'ACTIVE' | 'PAUSED'; supplementaryData?: { amkCode?: string; }; }`\n  Details of a standing order\n\n  - `additionalAttributes?: object`\n  - `creditorAccount?: { bban?: string; cashAccountType?: string; currency?: string; iban?: string; msisdn?: string; other?: { identification: string; issuer?: string; schemeNameCode?: string; schemeNameProprietary?: string; }; }`\n  - `creditorAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }`\n  - `creditorAgent?: string`\n  - `creditorName?: string`\n  - `debtorAccount?: { accountId: string; currency: string; }`\n  - `endToEndIdentification?: string`\n  - `executionSchedule?: { frequency: 'ONE_TIME' | 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'YEARLY' | 'CUSTOM'; startDate: string; customFrequency?: { number: number; period: 'DAYS' | 'WEEKS' | 'MONTHS' | 'YEARS'; }; endDate?: string; totalNumberOfExecutions?: number; }`\n  - `instructedAmount?: { amount: string; currency: string; }`\n  - `nextExecutionDate?: string`\n  - `paymentType?: { serviceLevel: 'SEPA' | 'INTERNAL' | 'SDVA' | 'OTHER'; categoryPurpose?: string; localInstrument?: string; routingPreference?: 'NONE' | 'HIGH_PRIORITY' | 'INSTANT'; }`\n  - `remittanceInformationStructured?: { reference: string; referenceIssuer?: string; referenceType?: string; }`\n  - `remittanceInformationUnstructured?: string`\n  - `standingOrderId?: string`\n  - `standingOrderStatus?: 'PENDING' | 'ACTIVE' | 'PAUSED'`\n  - `supplementaryData?: { amkCode?: string; }`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst standingOrder = await client.parties.standingOrders.retrieve('2751d7d9-df79-4412-b4c4-28aaa7075548', { partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e' });\n\nconsole.log(standingOrder);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.standingOrders.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst standingOrder = await client.parties.standingOrders.retrieve(\n  '2751d7d9-df79-4412-b4c4-28aaa7075548',\n  { partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e' },\n);\n\nconsole.log(standingOrder.additionalAttributes);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/standing-orders/$STANDING_ORDER_ID \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().standingOrders().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.standingorders.StandingOrderRetrieveParams\nimport com.plumery.api.models.parties.standingorders.StandingOrderRetrieveResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: StandingOrderRetrieveParams = StandingOrderRetrieveParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .standingOrderId("2751d7d9-df79-4412-b4c4-28aaa7075548")\n        .build()\n    val standingOrder: StandingOrderRetrieveResponse = client.parties().standingOrders().retrieve(params)\n}',
      },
      java: {
        method: 'parties().standingOrders().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.standingorders.StandingOrderRetrieveParams;\nimport com.plumery.api.models.parties.standingorders.StandingOrderRetrieveResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        StandingOrderRetrieveParams params = StandingOrderRetrieveParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .standingOrderId("2751d7d9-df79-4412-b4c4-28aaa7075548")\n            .build();\n        StandingOrderRetrieveResponse standingOrder = client.parties().standingOrders().retrieve(params);\n    }\n}',
      },
    },
  },
  {
    name: 'update',
    endpoint: '/api/v1/parties/{partyId}/standing-orders/{standingOrderId}:update',
    httpMethod: 'post',
    summary: 'Update Standing Order',
    description: 'Update a standing order.\n',
    stainlessPath: '(resource) parties.standing-orders > (method) update',
    qualified: 'client.parties.standingOrders.update',
    params: [
      'partyId: string;',
      'standingOrderId: string;',
      'debtorAccount: { accountId: string; currency: string; };',
      'instructedAmount: { amount: string; currency: string; };',
      'additionalAttributes?: object;',
      'creditorAccount?: { bban?: string; cashAccountType?: string; currency?: string; iban?: string; msisdn?: string; other?: { identification: string; issuer?: string; schemeNameCode?: string; schemeNameProprietary?: string; }; };',
      'creditorAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; };',
      'creditorAgent?: string;',
      'creditorName?: string;',
      'debtorAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; };',
      'endToEndIdentification?: string;',
      "paymentType?: { serviceLevel: 'SEPA' | 'INTERNAL' | 'SDVA' | 'OTHER'; categoryPurpose?: string; localInstrument?: string; routingPreference?: 'NONE' | 'HIGH_PRIORITY' | 'INSTANT'; };",
      'remittanceInformationStructured?: { reference: string; referenceIssuer?: string; referenceType?: string; };',
      'remittanceInformationUnstructured?: string;',
      'supplementaryData?: { amkCode?: string; };',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    markdown:
      '## update\n\n`client.parties.standingOrders.update(partyId: string, standingOrderId: string, debtorAccount: { accountId: string; currency: string; }, instructedAmount: { amount: string; currency: string; }, additionalAttributes?: object, creditorAccount?: { bban?: string; cashAccountType?: string; currency?: string; iban?: string; msisdn?: string; other?: { identification: string; issuer?: string; schemeNameCode?: string; schemeNameProprietary?: string; }; }, creditorAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }, creditorAgent?: string, creditorName?: string, debtorAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }, endToEndIdentification?: string, paymentType?: { serviceLevel: \'SEPA\' | \'INTERNAL\' | \'SDVA\' | \'OTHER\'; categoryPurpose?: string; localInstrument?: string; routingPreference?: \'NONE\' | \'HIGH_PRIORITY\' | \'INSTANT\'; }, remittanceInformationStructured?: { reference: string; referenceIssuer?: string; referenceType?: string; }, remittanceInformationUnstructured?: string, supplementaryData?: { amkCode?: string; }, plmr-user-action?: boolean, X-Request-ID?: string): void`\n\n**post** `/api/v1/parties/{partyId}/standing-orders/{standingOrderId}:update`\n\nUpdate a standing order.\n\n\n### Parameters\n\n- `partyId: string`\n\n- `standingOrderId: string`\n\n- `debtorAccount: { accountId: string; currency: string; }`\n  Details of the account from which the amount will be debited.\n  - `accountId: string`\n    The ID of the account that will be debited.\n  - `currency: string`\n    ISO 4217 Alpha 3 currency code.\n\n\n- `instructedAmount: { amount: string; currency: string; }`\n  - `amount: string`\n    The amount given with fractional digits, where fractions must be compliant to the currency definition.\nUp to 14 significant figures. Negative amounts are signed by minus.\nThe decimal separator is a dot.\n\n**Example:**\nValid representations for EUR with up to two decimals are:\n\n  * 1056\n  * 5768.2\n  * -1.50\n  * 5877.78\n\n  - `currency: string`\n    ISO 4217 Alpha 3 currency code.\n\n\n- `additionalAttributes?: object`\n  Free-form map of non-standard attributes forwarded with the payment initiation request.\nValues are passed through unchanged to the payment order command for downstream consumers.\n\n\n- `creditorAccount?: { bban?: string; cashAccountType?: string; currency?: string; iban?: string; msisdn?: string; other?: { identification: string; issuer?: string; schemeNameCode?: string; schemeNameProprietary?: string; }; }`\n  Reference to a creditor account.\n\n  - `bban?: string`\n    Basic Bank Account Number (BBAN) Identifier.\n  - `cashAccountType?: string`\n    ExternalCashAccountType1Code from ISO 20022.\n  - `currency?: string`\n    ISO 4217 Alpha 3 currency code.\n\n  - `iban?: string`\n    IBAN of an account.\n  - `msisdn?: string`\n    Mobile phone number.\n  - `other?: { identification: string; issuer?: string; schemeNameCode?: string; schemeNameProprietary?: string; }`\n    In cases where the specifically defined criteria (IBAN, BBAN, MSISDN) are not provided to identify an instance of the respective account type (e.g. a savings account), the ASPSP shall include a proprietary ID of the respective account that uniquely identifies the account for this ASPSP.\n\n- `creditorAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }`\n  - `country: string`\n    Nation with its own government. ISO 3166, Alpha-2 code\n\n  - `buildingName?: string`\n    Name of the building or house\n\n  - `buildingNumber?: string`\n    Number that identifies the position of a building on a street\n\n  - `countrySubDivision?: string`\n    Identifies a subdivision of a country such as state, region, county\n\n  - `districtName?: string`\n    Identifies a subdivision within a country sub-division\n\n  - `floor?: string`\n    Floor or storey within a building\n\n  - `postBox?: string`\n    Numbered box in a post office, assigned to a person or organisation, where letters are kept until called for\n\n  - `postCode?: string`\n    Identifier consisting of a group of letters and/or numbers that is added to a postal address to assist the sorting of mail\n\n  - `streetName?: string`\n    Name of a street or thoroughfare\n\n  - `suite?: string`\n    Building room number\n\n  - `townLocationName?: string`\n    Specific location name within the town\n\n  - `townName?: string`\n    Name of a built-up area, with defined boundaries, and a local government\n\n\n- `creditorAgent?: string`\n  BICFI\n\n\n- `creditorName?: string`\n  Creditor name.\n\n- `debtorAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }`\n  - `country: string`\n    Nation with its own government. ISO 3166, Alpha-2 code\n\n  - `buildingName?: string`\n    Name of the building or house\n\n  - `buildingNumber?: string`\n    Number that identifies the position of a building on a street\n\n  - `countrySubDivision?: string`\n    Identifies a subdivision of a country such as state, region, county\n\n  - `districtName?: string`\n    Identifies a subdivision within a country sub-division\n\n  - `floor?: string`\n    Floor or storey within a building\n\n  - `postBox?: string`\n    Numbered box in a post office, assigned to a person or organisation, where letters are kept until called for\n\n  - `postCode?: string`\n    Identifier consisting of a group of letters and/or numbers that is added to a postal address to assist the sorting of mail\n\n  - `streetName?: string`\n    Name of a street or thoroughfare\n\n  - `suite?: string`\n    Building room number\n\n  - `townLocationName?: string`\n    Specific location name within the town\n\n  - `townName?: string`\n    Name of a built-up area, with defined boundaries, and a local government\n\n\n- `endToEndIdentification?: string`\n\n- `paymentType?: { serviceLevel: \'SEPA\' | \'INTERNAL\' | \'SDVA\' | \'OTHER\'; categoryPurpose?: string; localInstrument?: string; routingPreference?: \'NONE\' | \'HIGH_PRIORITY\' | \'INSTANT\'; }`\n  Specifies the payment type.\nAllowed values:\n- SEPA Instant payment          \n  ```\n  "paymentType": {\n      "serviceLevel": "SEPA",\n      "localInstrument": "INST",\n      "categoryPurpose": null,\n      "routingPreference": "INSTANT"\n     }\n  }\n  ```\n- SEPA Regular payment\n  ```\n  "paymentType": {\n      "serviceLevel": "SEPA",\n      "localInstrument": "SCT",\n      "categoryPurpose": null,\n      "routingPreference": "NONE"\n    }\n  }\n  ```\n- SEPA Any payment\n  ```\n  "paymentType": {\n      "serviceLevel": "SEPA",\n      "localInstrument": null,\n      "categoryPurpose": null,\n      "routingPreference": "NONE"\n     }\n  }\n  ```\n- Internal payment\n  ```\n  "paymentType": {\n      "serviceLevel": "INTERNAL",\n      "localInstrument": "INTERNAL",\n      "categoryPurpose": null,\n      "routingPreference": "NONE"\n      }\n   }\n    ```\n- SWIFT payment\n  ```\n  "paymentType": {\n      "serviceLevel": "SDVA",\n      "localInstrument": "SWIFT",\n      "categoryPurpose": null,\n      "routingPreference": "HIGH_PRIORITY"\n      }\n  }\n  ```\n- OTHER payment\n  ```\n  "paymentType": {\n      "serviceLevel": "OTHER",\n      "localInstrument": "OTHER",\n      "categoryPurpose": null,\n      "routingPreference": "NONE"\n     }\n  }\n  ```\n- Proprietary payment (any bank-specific local instrument, only when serviceLevel is OTHER)\n  ```\n  "paymentType": {\n      "serviceLevel": "OTHER",\n      "localInstrument": "NIP",\n      "categoryPurpose": null,\n      "routingPreference": "INSTANT"\n     }\n  }\n  ```\n\n  - `serviceLevel: \'SEPA\' | \'INTERNAL\' | \'SDVA\' | \'OTHER\'`\n    Specifies the service level for the payment\n\n  - `categoryPurpose?: string`\n    Specifies the category purpose for the payment\n\n  - `localInstrument?: string`\n    Specifies the local instrument for the payment.\nPredefined values: OTHER, SWIFT, INTERNAL, SCT, INST.\nSupports Proprietary value of 1 to 35 characters.\n\n  - `routingPreference?: \'NONE\' | \'HIGH_PRIORITY\' | \'INSTANT\'`\n    Specifies the routing preference for the payment\n\n\n- `remittanceInformationStructured?: { reference: string; referenceIssuer?: string; referenceType?: string; }`\n  - `reference: string`\n  - `referenceIssuer?: string`\n  - `referenceType?: string`\n\n- `remittanceInformationUnstructured?: string`\n  Unstructured remittance information.\n\n\n- `supplementaryData?: { amkCode?: string; }`\n  Additional information that cannot be captured in the structured elements and/or any other specific block.\n\n  - `amkCode?: string`\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from \'plumery\';\n\nconst client = new Plumery();\n\nawait client.parties.standingOrders.update(\'2751d7d9-df79-4412-b4c4-28aaa7075548\', {\n  partyId: \'6878951b-256b-4baa-9e81-ad4c577adc4e\',\n  debtorAccount: { accountId: \'4ec4e5f6-1124-5678-abcd-1234567890ef\', currency: \'EUR\' },\n  instructedAmount: { amount: \'5877.78\', currency: \'EUR\' },\n})\n```',
    perLanguage: {
      typescript: {
        method: 'client.parties.standingOrders.update',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.standingOrders.update('2751d7d9-df79-4412-b4c4-28aaa7075548', {\n  partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  debtorAccount: { accountId: '4ec4e5f6-1124-5678-abcd-1234567890ef', currency: 'EUR' },\n  instructedAmount: { amount: '5877.78', currency: 'EUR' },\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/standing-orders/$STANDING_ORDER_ID:update \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "debtorAccount": {\n            "accountId": "4ec4e5f6-1124-5678-abcd-1234567890ef",\n            "currency": "EUR"\n          },\n          "instructedAmount": {\n            "amount": "5877.78",\n            "currency": "EUR"\n          },\n          "creditorAgent": "AAAADEBBXXX",\n          "creditorName": "Creditor Name",\n          "remittanceInformationUnstructured": "Ref Number Merchant"\n        }\'',
      },
      kotlin: {
        method: 'parties().standingOrders().update',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.standingorders.StandingOrderUpdateParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: StandingOrderUpdateParams = StandingOrderUpdateParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .standingOrderId("2751d7d9-df79-4412-b4c4-28aaa7075548")\n        .debtorAccount(StandingOrderUpdateParams.DebtorAccount.builder()\n            .accountId("4ec4e5f6-1124-5678-abcd-1234567890ef")\n            .currency("EUR")\n            .build())\n        .instructedAmount(StandingOrderUpdateParams.InstructedAmount.builder()\n            .amount("5877.78")\n            .currency("EUR")\n            .build())\n        .build()\n    client.parties().standingOrders().update(params)\n}',
      },
      java: {
        method: 'parties().standingOrders().update',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.standingorders.StandingOrderUpdateParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        StandingOrderUpdateParams params = StandingOrderUpdateParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .standingOrderId("2751d7d9-df79-4412-b4c4-28aaa7075548")\n            .debtorAccount(StandingOrderUpdateParams.DebtorAccount.builder()\n                .accountId("4ec4e5f6-1124-5678-abcd-1234567890ef")\n                .currency("EUR")\n                .build())\n            .instructedAmount(StandingOrderUpdateParams.InstructedAmount.builder()\n                .amount("5877.78")\n                .currency("EUR")\n                .build())\n            .build();\n        client.parties().standingOrders().update(params);\n    }\n}',
      },
    },
  },
  {
    name: 'pause',
    endpoint: '/api/v1/parties/{partyId}/standing-orders/{standingOrderId}:pause',
    httpMethod: 'post',
    summary: 'Pause Standing Order',
    description: 'Pause the execution of a standing order.\n',
    stainlessPath: '(resource) parties.standing-orders > (method) pause',
    qualified: 'client.parties.standingOrders.pause',
    params: [
      'partyId: string;',
      'standingOrderId: string;',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    markdown:
      "## pause\n\n`client.parties.standingOrders.pause(partyId: string, standingOrderId: string, plmr-user-action?: boolean, X-Request-ID?: string): void`\n\n**post** `/api/v1/parties/{partyId}/standing-orders/{standingOrderId}:pause`\n\nPause the execution of a standing order.\n\n\n### Parameters\n\n- `partyId: string`\n\n- `standingOrderId: string`\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.standingOrders.pause('2751d7d9-df79-4412-b4c4-28aaa7075548', { partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.standingOrders.pause',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.standingOrders.pause('2751d7d9-df79-4412-b4c4-28aaa7075548', {\n  partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/standing-orders/$STANDING_ORDER_ID:pause \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().standingOrders().pause',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.standingorders.StandingOrderPauseParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: StandingOrderPauseParams = StandingOrderPauseParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .standingOrderId("2751d7d9-df79-4412-b4c4-28aaa7075548")\n        .build()\n    client.parties().standingOrders().pause(params)\n}',
      },
      java: {
        method: 'parties().standingOrders().pause',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.standingorders.StandingOrderPauseParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        StandingOrderPauseParams params = StandingOrderPauseParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .standingOrderId("2751d7d9-df79-4412-b4c4-28aaa7075548")\n            .build();\n        client.parties().standingOrders().pause(params);\n    }\n}',
      },
    },
  },
  {
    name: 'resume',
    endpoint: '/api/v1/parties/{partyId}/standing-orders/{standingOrderId}:resume',
    httpMethod: 'post',
    summary: 'Resume Standing Order',
    description: 'Resume the execution of a standing order.\n',
    stainlessPath: '(resource) parties.standing-orders > (method) resume',
    qualified: 'client.parties.standingOrders.resume',
    params: [
      'partyId: string;',
      'standingOrderId: string;',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    markdown:
      "## resume\n\n`client.parties.standingOrders.resume(partyId: string, standingOrderId: string, plmr-user-action?: boolean, X-Request-ID?: string): void`\n\n**post** `/api/v1/parties/{partyId}/standing-orders/{standingOrderId}:resume`\n\nResume the execution of a standing order.\n\n\n### Parameters\n\n- `partyId: string`\n\n- `standingOrderId: string`\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.standingOrders.resume('2751d7d9-df79-4412-b4c4-28aaa7075548', { partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.standingOrders.resume',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.standingOrders.resume('2751d7d9-df79-4412-b4c4-28aaa7075548', {\n  partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/standing-orders/$STANDING_ORDER_ID:resume \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().standingOrders().resume',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.standingorders.StandingOrderResumeParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: StandingOrderResumeParams = StandingOrderResumeParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .standingOrderId("2751d7d9-df79-4412-b4c4-28aaa7075548")\n        .build()\n    client.parties().standingOrders().resume(params)\n}',
      },
      java: {
        method: 'parties().standingOrders().resume',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.standingorders.StandingOrderResumeParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        StandingOrderResumeParams params = StandingOrderResumeParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .standingOrderId("2751d7d9-df79-4412-b4c4-28aaa7075548")\n            .build();\n        client.parties().standingOrders().resume(params);\n    }\n}',
      },
    },
  },
  {
    name: 'cancel',
    endpoint: '/api/v1/parties/{partyId}/standing-orders/{standingOrderId}:cancel',
    httpMethod: 'post',
    summary: 'Cancel Standing Order',
    description: 'Cancel a standing order.\n',
    stainlessPath: '(resource) parties.standing-orders > (method) cancel',
    qualified: 'client.parties.standingOrders.cancel',
    params: [
      'partyId: string;',
      'standingOrderId: string;',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    markdown:
      "## cancel\n\n`client.parties.standingOrders.cancel(partyId: string, standingOrderId: string, plmr-user-action?: boolean, X-Request-ID?: string): void`\n\n**post** `/api/v1/parties/{partyId}/standing-orders/{standingOrderId}:cancel`\n\nCancel a standing order.\n\n\n### Parameters\n\n- `partyId: string`\n\n- `standingOrderId: string`\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.standingOrders.cancel('2751d7d9-df79-4412-b4c4-28aaa7075548', { partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.standingOrders.cancel',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.standingOrders.cancel('2751d7d9-df79-4412-b4c4-28aaa7075548', {\n  partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/standing-orders/$STANDING_ORDER_ID:cancel \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().standingOrders().cancel',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.standingorders.StandingOrderCancelParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: StandingOrderCancelParams = StandingOrderCancelParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .standingOrderId("2751d7d9-df79-4412-b4c4-28aaa7075548")\n        .build()\n    client.parties().standingOrders().cancel(params)\n}',
      },
      java: {
        method: 'parties().standingOrders().cancel',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.standingorders.StandingOrderCancelParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        StandingOrderCancelParams params = StandingOrderCancelParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .standingOrderId("2751d7d9-df79-4412-b4c4-28aaa7075548")\n            .build();\n        client.parties().standingOrders().cancel(params);\n    }\n}',
      },
    },
  },
  {
    name: 'create',
    endpoint: '/api/v1/parties/{partyId}/counterparties',
    httpMethod: 'post',
    summary: 'Create a New Counterparty',
    description: 'Create a new counterparty to transact with',
    stainlessPath: '(resource) parties.counterparties > (method) create',
    qualified: 'client.parties.counterparties.create',
    params: [
      'partyId: string;',
      'paymentMethods: { account: { bban?: string; cashAccountType?: string; currency?: string; iban?: string; msisdn?: string; other?: { identification: string; issuer?: string; schemeNameCode?: string; schemeNameProprietary?: string; }; }; country: string; name: string; id?: string; agent?: string; bankName?: string; }[];',
      'additionalAttributes?: object;',
      'address?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; };',
      'alias?: string;',
      'email?: string;',
      'individual?: { firstName: string; lastName: string; middleNames?: string; };',
      'organisation?: { legalName?: string; };',
      'phoneNumber?: string;',
      'plmr-user-action?: boolean;',
    ],
    response: '{ counterpartyId?: string; }',
    markdown:
      "## create\n\n`client.parties.counterparties.create(partyId: string, paymentMethods: { account: { bban?: string; cashAccountType?: string; currency?: string; iban?: string; msisdn?: string; other?: object; }; country: string; name: string; id?: string; agent?: string; bankName?: string; }[], additionalAttributes?: object, address?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }, alias?: string, email?: string, individual?: { firstName: string; lastName: string; middleNames?: string; }, organisation?: { legalName?: string; }, phoneNumber?: string, plmr-user-action?: boolean): { counterpartyId?: string; }`\n\n**post** `/api/v1/parties/{partyId}/counterparties`\n\nCreate a new counterparty to transact with\n\n### Parameters\n\n- `partyId: string`\n\n- `paymentMethods: { account: { bban?: string; cashAccountType?: string; currency?: string; iban?: string; msisdn?: string; other?: { identification: string; issuer?: string; schemeNameCode?: string; schemeNameProprietary?: string; }; }; country: string; name: string; id?: string; agent?: string; bankName?: string; }[]`\n\n- `additionalAttributes?: object`\n  Free-form map of non-standard attributes forwarded with the payment initiation request.\nValues are passed through unchanged to the payment order command for downstream consumers.\n\n\n- `address?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }`\n  - `country: string`\n    Nation with its own government. ISO 3166, Alpha-2 code\n\n  - `buildingName?: string`\n    Name of the building or house\n\n  - `buildingNumber?: string`\n    Number that identifies the position of a building on a street\n\n  - `countrySubDivision?: string`\n    Identifies a subdivision of a country such as state, region, county\n\n  - `districtName?: string`\n    Identifies a subdivision within a country sub-division\n\n  - `floor?: string`\n    Floor or storey within a building\n\n  - `postBox?: string`\n    Numbered box in a post office, assigned to a person or organisation, where letters are kept until called for\n\n  - `postCode?: string`\n    Identifier consisting of a group of letters and/or numbers that is added to a postal address to assist the sorting of mail\n\n  - `streetName?: string`\n    Name of a street or thoroughfare\n\n  - `suite?: string`\n    Building room number\n\n  - `townLocationName?: string`\n    Specific location name within the town\n\n  - `townName?: string`\n    Name of a built-up area, with defined boundaries, and a local government\n\n\n- `alias?: string`\n  Display alias of the counterparty, as defined by the user.\n\n- `email?: string`\n  Email address of the counterparty\n\n- `individual?: { firstName: string; lastName: string; middleNames?: string; }`\n  The name of the individual in case the counterparty is an individual. Either **organisation** or **individual** should be provided.\n\n  - `firstName: string`\n  - `lastName: string`\n  - `middleNames?: string`\n\n- `organisation?: { legalName?: string; }`\n  The name of the individual in case the counterparty is an individual. Either **organisation** or **individual** should be provided.\n\n  - `legalName?: string`\n\n- `phoneNumber?: string`\n  Phone number of the counterparty\n\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ counterpartyId?: string; }`\n\n  - `counterpartyId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst counterparty = await client.parties.counterparties.create('6878951b-256b-4baa-9e81-ad4c577adc4e', { paymentMethods: [{\n  account: {},\n  country: 'FR',\n  name: 'name',\n}] });\n\nconsole.log(counterparty);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.counterparties.create',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst counterparty = await client.parties.counterparties.create(\n  '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  {\n    paymentMethods: [\n      {\n        account: {},\n        country: 'FR',\n        name: 'name',\n      },\n    ],\n  },\n);\n\nconsole.log(counterparty.counterpartyId);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/counterparties \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "paymentMethods": [\n            {\n              "account": {},\n              "country": "FR",\n              "name": "name"\n            }\n          ],\n          "alias": "Mum",\n          "email": "john.doe@example.com",\n          "phoneNumber": "+1669910"\n        }\'',
      },
      kotlin: {
        method: 'parties().counterparties().create',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.counterparties.CounterpartyCreateParams\nimport com.plumery.api.models.parties.counterparties.CounterpartyCreateResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: CounterpartyCreateParams = CounterpartyCreateParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .addPaymentMethod(CounterpartyCreateParams.PaymentMethod.builder()\n            .account(CounterpartyCreateParams.PaymentMethod.Account.builder().build())\n            .country("FR")\n            .name("name")\n            .build())\n        .build()\n    val counterparty: CounterpartyCreateResponse = client.parties().counterparties().create(params)\n}',
      },
      java: {
        method: 'parties().counterparties().create',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.counterparties.CounterpartyCreateParams;\nimport com.plumery.api.models.parties.counterparties.CounterpartyCreateResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        CounterpartyCreateParams params = CounterpartyCreateParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .addPaymentMethod(CounterpartyCreateParams.PaymentMethod.builder()\n                .account(CounterpartyCreateParams.PaymentMethod.Account.builder().build())\n                .country("FR")\n                .name("name")\n                .build())\n            .build();\n        CounterpartyCreateResponse counterparty = client.parties().counterparties().create(params);\n    }\n}',
      },
    },
  },
  {
    name: 'list',
    endpoint: '/api/v1/parties/{partyId}/counterparties',
    httpMethod: 'get',
    summary: 'Get All Counterparties',
    description: 'Get all counterparties for a specific party.\n',
    stainlessPath: '(resource) parties.counterparties > (method) list',
    qualified: 'client.parties.counterparties.list',
    params: [
      'partyId: string;',
      'cursor?: string;',
      'limit?: number;',
      "sortBy?: 'NAME' | 'LAST_USED';",
      "sortDirection?: 'ASCENDING' | 'DESCENDING';",
      'plmr-user-action?: boolean;',
    ],
    response:
      '{ counterparties?: { paymentMethods: { account: object; country: string; name: string; id?: string; agent?: string; bankName?: string; }[]; additionalAttributes?: object; address?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }; alias?: string; counterpartyId?: string; email?: string; individual?: { firstName: string; lastName: string; middleNames?: string; }; organisation?: { legalName?: string; }; phoneNumber?: string; }[]; cursor?: string; limit?: number; }',
    markdown:
      "## list\n\n`client.parties.counterparties.list(partyId: string, cursor?: string, limit?: number, sortBy?: 'NAME' | 'LAST_USED', sortDirection?: 'ASCENDING' | 'DESCENDING', plmr-user-action?: boolean): { counterparties?: object[]; cursor?: string; limit?: number; }`\n\n**get** `/api/v1/parties/{partyId}/counterparties`\n\nGet all counterparties for a specific party.\n\n\n### Parameters\n\n- `partyId: string`\n\n- `cursor?: string`\n  Opaque pointer to the next page. Pass this value as the `cursor` query parameter on the\nnext request to retrieve the following page. Absent or null when there are no more pages.\n\n\n- `limit?: number`\n  Specifies the amount of records returned.\nBy default 50 is used.\n\n\n- `sortBy?: 'NAME' | 'LAST_USED'`\n  Specifies the sorting field that determines the order of the results.\nDefaults to NAME, which orders by the counterparty's legal name.\nLAST_USED orders by the moment the counterparty was last paid by a single payment;\ncounterparties that have never been paid are always placed last, in either direction,\nand counterparties sharing a moment are further ordered by name.\n\n\n- `sortDirection?: 'ASCENDING' | 'DESCENDING'`\n  Specifies the direction of the sorting field.\nBy default ASCENDING is used.\n\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ counterparties?: { paymentMethods: { account: object; country: string; name: string; id?: string; agent?: string; bankName?: string; }[]; additionalAttributes?: object; address?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }; alias?: string; counterpartyId?: string; email?: string; individual?: { firstName: string; lastName: string; middleNames?: string; }; organisation?: { legalName?: string; }; phoneNumber?: string; }[]; cursor?: string; limit?: number; }`\n  Counterparties associated with a party\n\n\n  - `counterparties?: { paymentMethods: { account: { bban?: string; cashAccountType?: string; currency?: string; iban?: string; msisdn?: string; other?: { identification: string; issuer?: string; schemeNameCode?: string; schemeNameProprietary?: string; }; }; country: string; name: string; id?: string; agent?: string; bankName?: string; }[]; additionalAttributes?: object; address?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }; alias?: string; counterpartyId?: string; email?: string; individual?: { firstName: string; lastName: string; middleNames?: string; }; organisation?: { legalName?: string; }; phoneNumber?: string; }[]`\n  - `cursor?: string`\n  - `limit?: number`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst counterparties = await client.parties.counterparties.list('6878951b-256b-4baa-9e81-ad4c577adc4e');\n\nconsole.log(counterparties);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.counterparties.list',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst counterparties = await client.parties.counterparties.list(\n  '6878951b-256b-4baa-9e81-ad4c577adc4e',\n);\n\nconsole.log(counterparties.counterparties);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/counterparties \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().counterparties().list',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.counterparties.CounterpartyListParams\nimport com.plumery.api.models.parties.counterparties.CounterpartyListResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val counterparties: CounterpartyListResponse = client.parties().counterparties().list("6878951b-256b-4baa-9e81-ad4c577adc4e")\n}',
      },
      java: {
        method: 'parties().counterparties().list',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.counterparties.CounterpartyListParams;\nimport com.plumery.api.models.parties.counterparties.CounterpartyListResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        CounterpartyListResponse counterparties = client.parties().counterparties().list("6878951b-256b-4baa-9e81-ad4c577adc4e");\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/parties/{partyId}/counterparties/{counterpartyId}',
    httpMethod: 'get',
    summary: 'Get Counterparty',
    description: 'Retrieve a counterparty by ID\n',
    stainlessPath: '(resource) parties.counterparties > (method) retrieve',
    qualified: 'client.parties.counterparties.retrieve',
    params: ['partyId: string;', 'counterpartyId: string;', 'plmr-user-action?: boolean;'],
    response:
      '{ paymentMethods: { account: { bban?: string; cashAccountType?: string; currency?: string; iban?: string; msisdn?: string; other?: object; }; country: string; name: string; id?: string; agent?: string; bankName?: string; }[]; additionalAttributes?: object; address?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }; alias?: string; counterpartyId?: string; email?: string; individual?: { firstName: string; lastName: string; middleNames?: string; }; organisation?: { legalName?: string; }; phoneNumber?: string; }',
    markdown:
      "## retrieve\n\n`client.parties.counterparties.retrieve(partyId: string, counterpartyId: string, plmr-user-action?: boolean): { paymentMethods: object[]; additionalAttributes?: object; address?: object; alias?: string; counterpartyId?: string; email?: string; individual?: object; organisation?: object; phoneNumber?: string; }`\n\n**get** `/api/v1/parties/{partyId}/counterparties/{counterpartyId}`\n\nRetrieve a counterparty by ID\n\n\n### Parameters\n\n- `partyId: string`\n\n- `counterpartyId: string`\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ paymentMethods: { account: { bban?: string; cashAccountType?: string; currency?: string; iban?: string; msisdn?: string; other?: object; }; country: string; name: string; id?: string; agent?: string; bankName?: string; }[]; additionalAttributes?: object; address?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }; alias?: string; counterpartyId?: string; email?: string; individual?: { firstName: string; lastName: string; middleNames?: string; }; organisation?: { legalName?: string; }; phoneNumber?: string; }`\n\n  - `paymentMethods: { account: { bban?: string; cashAccountType?: string; currency?: string; iban?: string; msisdn?: string; other?: { identification: string; issuer?: string; schemeNameCode?: string; schemeNameProprietary?: string; }; }; country: string; name: string; id?: string; agent?: string; bankName?: string; }[]`\n  - `additionalAttributes?: object`\n  - `address?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }`\n  - `alias?: string`\n  - `counterpartyId?: string`\n  - `email?: string`\n  - `individual?: { firstName: string; lastName: string; middleNames?: string; }`\n  - `organisation?: { legalName?: string; }`\n  - `phoneNumber?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst counterparty = await client.parties.counterparties.retrieve('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', { partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e' });\n\nconsole.log(counterparty);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.counterparties.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst counterparty = await client.parties.counterparties.retrieve(\n  'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',\n  { partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e' },\n);\n\nconsole.log(counterparty.individual);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/counterparties/$COUNTERPARTY_ID \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().counterparties().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.counterparties.CounterpartyRetrieveParams\nimport com.plumery.api.models.parties.counterparties.CounterpartyRetrieveResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: CounterpartyRetrieveParams = CounterpartyRetrieveParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .counterpartyId("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")\n        .build()\n    val counterparty: CounterpartyRetrieveResponse = client.parties().counterparties().retrieve(params)\n}',
      },
      java: {
        method: 'parties().counterparties().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.counterparties.CounterpartyRetrieveParams;\nimport com.plumery.api.models.parties.counterparties.CounterpartyRetrieveResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        CounterpartyRetrieveParams params = CounterpartyRetrieveParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .counterpartyId("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")\n            .build();\n        CounterpartyRetrieveResponse counterparty = client.parties().counterparties().retrieve(params);\n    }\n}',
      },
    },
  },
  {
    name: 'search',
    endpoint: '/api/v1/parties/{partyId}/counterparties:search',
    httpMethod: 'post',
    summary: 'Search for a Counterparty',
    description:
      'Search for a counterparty based on counterparty details like name, alias, phone and email\naddress, or by an account identifier of one of its payment methods (IBAN, BBAN, MSISDN or\nother identification). The search is partial and case insensitive; spaces in account\nidentifiers are ignored.\n',
    stainlessPath: '(resource) parties.counterparties > (method) search',
    qualified: 'client.parties.counterparties.search',
    params: [
      'partyId: string;',
      'query: string;',
      'cursor?: string;',
      'limit?: number;',
      "sortBy?: 'NAME' | 'LAST_USED';",
      "sortDirection?: 'ASCENDING' | 'DESCENDING';",
      'plmr-user-action?: boolean;',
    ],
    response:
      '{ counterparties?: { paymentMethods: { account: object; country: string; name: string; id?: string; agent?: string; bankName?: string; }[]; additionalAttributes?: object; address?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }; alias?: string; counterpartyId?: string; email?: string; individual?: { firstName: string; lastName: string; middleNames?: string; }; organisation?: { legalName?: string; }; phoneNumber?: string; }[]; cursor?: string; limit?: number; }',
    markdown:
      "## search\n\n`client.parties.counterparties.search(partyId: string, query: string, cursor?: string, limit?: number, sortBy?: 'NAME' | 'LAST_USED', sortDirection?: 'ASCENDING' | 'DESCENDING', plmr-user-action?: boolean): { counterparties?: object[]; cursor?: string; limit?: number; }`\n\n**post** `/api/v1/parties/{partyId}/counterparties:search`\n\nSearch for a counterparty based on counterparty details like name, alias, phone and email\naddress, or by an account identifier of one of its payment methods (IBAN, BBAN, MSISDN or\nother identification). The search is partial and case insensitive; spaces in account\nidentifiers are ignored.\n\n\n### Parameters\n\n- `partyId: string`\n\n- `query: string`\n  Partial text of name, alias, phone, email or of an account identifier\n(IBAN, BBAN, MSISDN or other identification). Case insensitive; spaces in account\nidentifiers are ignored, so `NL91 ABNA 0417` and `nl91abna0417` match the same account.\n\n\n- `cursor?: string`\n  Opaque pointer to the next page. Pass this value as the `cursor` query parameter on the\nnext request to retrieve the following page. Absent or null when there are no more pages.\n\n\n- `limit?: number`\n  Specifies the amount of records returned.\nBy default 50 is used.\n\n\n- `sortBy?: 'NAME' | 'LAST_USED'`\n  Specifies the sorting field that determines the order of the results.\nDefaults to NAME, which orders by the counterparty's legal name.\nLAST_USED orders by the moment the counterparty was last paid by a single payment;\ncounterparties that have never been paid are always placed last, in either direction,\nand counterparties sharing a moment are further ordered by name.\n\n\n- `sortDirection?: 'ASCENDING' | 'DESCENDING'`\n  Specifies the direction of the sorting field.\nBy default ASCENDING is used.\n\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ counterparties?: { paymentMethods: { account: object; country: string; name: string; id?: string; agent?: string; bankName?: string; }[]; additionalAttributes?: object; address?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }; alias?: string; counterpartyId?: string; email?: string; individual?: { firstName: string; lastName: string; middleNames?: string; }; organisation?: { legalName?: string; }; phoneNumber?: string; }[]; cursor?: string; limit?: number; }`\n  Counterparties associated with a party\n\n\n  - `counterparties?: { paymentMethods: { account: { bban?: string; cashAccountType?: string; currency?: string; iban?: string; msisdn?: string; other?: { identification: string; issuer?: string; schemeNameCode?: string; schemeNameProprietary?: string; }; }; country: string; name: string; id?: string; agent?: string; bankName?: string; }[]; additionalAttributes?: object; address?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }; alias?: string; counterpartyId?: string; email?: string; individual?: { firstName: string; lastName: string; middleNames?: string; }; organisation?: { legalName?: string; }; phoneNumber?: string; }[]`\n  - `cursor?: string`\n  - `limit?: number`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.parties.counterparties.search('6878951b-256b-4baa-9e81-ad4c577adc4e', { query: 'john.doe@' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.counterparties.search',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.parties.counterparties.search(\n  '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  { query: 'john.doe@' },\n);\n\nconsole.log(response.counterparties);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/counterparties:search \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "query": "john.doe@"\n        }\'',
      },
      kotlin: {
        method: 'parties().counterparties().search',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.counterparties.CounterpartySearchParams\nimport com.plumery.api.models.parties.counterparties.CounterpartySearchResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: CounterpartySearchParams = CounterpartySearchParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .query("john.doe@")\n        .build()\n    val response: CounterpartySearchResponse = client.parties().counterparties().search(params)\n}',
      },
      java: {
        method: 'parties().counterparties().search',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.counterparties.CounterpartySearchParams;\nimport com.plumery.api.models.parties.counterparties.CounterpartySearchResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        CounterpartySearchParams params = CounterpartySearchParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .query("john.doe@")\n            .build();\n        CounterpartySearchResponse response = client.parties().counterparties().search(params);\n    }\n}',
      },
    },
  },
  {
    name: 'remove',
    endpoint: '/api/v1/parties/{partyId}/counterparties/{counterpartyId}:remove',
    httpMethod: 'post',
    summary: 'Remove Counterparty',
    description:
      'Remove a specific counterparty identified by the counterpartyId path parameter for a specific party.\n',
    stainlessPath: '(resource) parties.counterparties > (method) remove',
    qualified: 'client.parties.counterparties.remove',
    params: ['partyId: string;', 'counterpartyId: string;', 'plmr-user-action?: boolean;'],
    markdown:
      "## remove\n\n`client.parties.counterparties.remove(partyId: string, counterpartyId: string, plmr-user-action?: boolean): void`\n\n**post** `/api/v1/parties/{partyId}/counterparties/{counterpartyId}:remove`\n\nRemove a specific counterparty identified by the counterpartyId path parameter for a specific party.\n\n\n### Parameters\n\n- `partyId: string`\n\n- `counterpartyId: string`\n\n- `plmr-user-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.counterparties.remove('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', { partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.counterparties.remove',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.counterparties.remove('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', {\n  partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/counterparties/$COUNTERPARTY_ID:remove \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().counterparties().remove',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.counterparties.CounterpartyRemoveParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: CounterpartyRemoveParams = CounterpartyRemoveParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .counterpartyId("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")\n        .build()\n    client.parties().counterparties().remove(params)\n}',
      },
      java: {
        method: 'parties().counterparties().remove',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.counterparties.CounterpartyRemoveParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        CounterpartyRemoveParams params = CounterpartyRemoveParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .counterpartyId("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")\n            .build();\n        client.parties().counterparties().remove(params);\n    }\n}',
      },
    },
  },
  {
    name: 'addPaymentMethod',
    endpoint: '/api/v1/parties/{partyId}/counterparties/{counterpartyId}:add-payment-method',
    httpMethod: 'post',
    summary: 'Add Payment Method',
    description: 'Add a new payment method on the counterparty identified by ID\n',
    stainlessPath: '(resource) parties.counterparties > (method) addPaymentMethod',
    qualified: 'client.parties.counterparties.addPaymentMethod',
    params: [
      'partyId: string;',
      'counterpartyId: string;',
      'account: { bban?: string; cashAccountType?: string; currency?: string; iban?: string; msisdn?: string; other?: { identification: string; issuer?: string; schemeNameCode?: string; schemeNameProprietary?: string; }; };',
      'country: string;',
      'name: string;',
      'agent?: string;',
      'bankName?: string;',
      'plmr-user-action?: boolean;',
    ],
    markdown:
      "## addPaymentMethod\n\n`client.parties.counterparties.addPaymentMethod(partyId: string, counterpartyId: string, account: { bban?: string; cashAccountType?: string; currency?: string; iban?: string; msisdn?: string; other?: { identification: string; issuer?: string; schemeNameCode?: string; schemeNameProprietary?: string; }; }, country: string, name: string, agent?: string, bankName?: string, plmr-user-action?: boolean): void`\n\n**post** `/api/v1/parties/{partyId}/counterparties/{counterpartyId}:add-payment-method`\n\nAdd a new payment method on the counterparty identified by ID\n\n\n### Parameters\n\n- `partyId: string`\n\n- `counterpartyId: string`\n\n- `account: { bban?: string; cashAccountType?: string; currency?: string; iban?: string; msisdn?: string; other?: { identification: string; issuer?: string; schemeNameCode?: string; schemeNameProprietary?: string; }; }`\n  Reference to a creditor account.\n\n  - `bban?: string`\n    Basic Bank Account Number (BBAN) Identifier.\n  - `cashAccountType?: string`\n    ExternalCashAccountType1Code from ISO 20022.\n  - `currency?: string`\n    ISO 4217 Alpha 3 currency code.\n\n  - `iban?: string`\n    IBAN of an account.\n  - `msisdn?: string`\n    Mobile phone number.\n  - `other?: { identification: string; issuer?: string; schemeNameCode?: string; schemeNameProprietary?: string; }`\n    In cases where the specifically defined criteria (IBAN, BBAN, MSISDN) are not provided to identify an instance of the respective account type (e.g. a savings account), the ASPSP shall include a proprietary ID of the respective account that uniquely identifies the account for this ASPSP.\n\n- `country: string`\n  Nation with its own government. ISO 3166, Alpha-2 code\n\n\n- `name: string`\n  The name of the method of payment\n\n\n- `agent?: string`\n  BICFI, the BIC/SWIFT code of the financial institution of the counterparty.\n\n\n- `bankName?: string`\n  The name of the bank\n\n\n- `plmr-user-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.counterparties.addPaymentMethod('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', {\n  partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  account: {},\n  country: 'FR',\n  name: 'name',\n})\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.counterparties.addPaymentMethod',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.counterparties.addPaymentMethod('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', {\n  partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  account: {},\n  country: 'FR',\n  name: 'name',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/counterparties/$COUNTERPARTY_ID:add-payment-method \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "account": {},\n          "country": "FR",\n          "name": "name",\n          "agent": "AAAADEBBXXX",\n          "bankName": "ING Bank"\n        }\'',
      },
      kotlin: {
        method: 'parties().counterparties().addPaymentMethod',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.counterparties.CounterpartyAddPaymentMethodParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: CounterpartyAddPaymentMethodParams = CounterpartyAddPaymentMethodParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .counterpartyId("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")\n        .account(CounterpartyAddPaymentMethodParams.Account.builder().build())\n        .country("FR")\n        .name("name")\n        .build()\n    client.parties().counterparties().addPaymentMethod(params)\n}',
      },
      java: {
        method: 'parties().counterparties().addPaymentMethod',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.counterparties.CounterpartyAddPaymentMethodParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        CounterpartyAddPaymentMethodParams params = CounterpartyAddPaymentMethodParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .counterpartyId("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")\n            .account(CounterpartyAddPaymentMethodParams.Account.builder().build())\n            .country("FR")\n            .name("name")\n            .build();\n        client.parties().counterparties().addPaymentMethod(params);\n    }\n}',
      },
    },
  },
  {
    name: 'removePaymentMethod',
    endpoint: '/api/v1/parties/{partyId}/counterparties/{counterpartyId}:remove-payment-method',
    httpMethod: 'post',
    summary: 'Remove Payment Method',
    description: 'Remove a payment method for a counterparty identified by ID\n',
    stainlessPath: '(resource) parties.counterparties > (method) removePaymentMethod',
    qualified: 'client.parties.counterparties.removePaymentMethod',
    params: [
      'partyId: string;',
      'counterpartyId: string;',
      'paymentMethodId: string;',
      'plmr-user-action?: boolean;',
    ],
    markdown:
      "## removePaymentMethod\n\n`client.parties.counterparties.removePaymentMethod(partyId: string, counterpartyId: string, paymentMethodId: string, plmr-user-action?: boolean): void`\n\n**post** `/api/v1/parties/{partyId}/counterparties/{counterpartyId}:remove-payment-method`\n\nRemove a payment method for a counterparty identified by ID\n\n\n### Parameters\n\n- `partyId: string`\n\n- `counterpartyId: string`\n\n- `paymentMethodId: string`\n  The Id of the payment method to be removed.\n\n\n- `plmr-user-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.counterparties.removePaymentMethod('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', { partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e', paymentMethodId: '494bbc67-387c-4e5a-b625-00287a8fc5cc' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.counterparties.removePaymentMethod',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.counterparties.removePaymentMethod('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', {\n  partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  paymentMethodId: '494bbc67-387c-4e5a-b625-00287a8fc5cc',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/counterparties/$COUNTERPARTY_ID:remove-payment-method \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "paymentMethodId": "494bbc67-387c-4e5a-b625-00287a8fc5cc"\n        }\'',
      },
      kotlin: {
        method: 'parties().counterparties().removePaymentMethod',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.counterparties.CounterpartyRemovePaymentMethodParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: CounterpartyRemovePaymentMethodParams = CounterpartyRemovePaymentMethodParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .counterpartyId("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")\n        .paymentMethodId("494bbc67-387c-4e5a-b625-00287a8fc5cc")\n        .build()\n    client.parties().counterparties().removePaymentMethod(params)\n}',
      },
      java: {
        method: 'parties().counterparties().removePaymentMethod',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.counterparties.CounterpartyRemovePaymentMethodParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        CounterpartyRemovePaymentMethodParams params = CounterpartyRemovePaymentMethodParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .counterpartyId("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")\n            .paymentMethodId("494bbc67-387c-4e5a-b625-00287a8fc5cc")\n            .build();\n        client.parties().counterparties().removePaymentMethod(params);\n    }\n}',
      },
    },
  },
  {
    name: 'updateDetails',
    endpoint: '/api/v1/parties/{partyId}/counterparties/{counterpartyId}:update-details',
    httpMethod: 'post',
    summary: 'Update Counterparty Details',
    description: 'Update a counterparty details for the counterparty identified by ID\n',
    stainlessPath: '(resource) parties.counterparties > (method) updateDetails',
    qualified: 'client.parties.counterparties.updateDetails',
    params: [
      'partyId: string;',
      'counterpartyId: string;',
      'address?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; };',
      'alias?: string;',
      'email?: string;',
      'individual?: { firstName: string; lastName: string; middleNames?: string; };',
      'organisation?: { legalName?: string; };',
      'phoneNumber?: string;',
      'plmr-user-action?: boolean;',
    ],
    markdown:
      "## updateDetails\n\n`client.parties.counterparties.updateDetails(partyId: string, counterpartyId: string, address?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }, alias?: string, email?: string, individual?: { firstName: string; lastName: string; middleNames?: string; }, organisation?: { legalName?: string; }, phoneNumber?: string, plmr-user-action?: boolean): void`\n\n**post** `/api/v1/parties/{partyId}/counterparties/{counterpartyId}:update-details`\n\nUpdate a counterparty details for the counterparty identified by ID\n\n\n### Parameters\n\n- `partyId: string`\n\n- `counterpartyId: string`\n\n- `address?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }`\n  - `country: string`\n    Nation with its own government. ISO 3166, Alpha-2 code\n\n  - `buildingName?: string`\n    Name of the building or house\n\n  - `buildingNumber?: string`\n    Number that identifies the position of a building on a street\n\n  - `countrySubDivision?: string`\n    Identifies a subdivision of a country such as state, region, county\n\n  - `districtName?: string`\n    Identifies a subdivision within a country sub-division\n\n  - `floor?: string`\n    Floor or storey within a building\n\n  - `postBox?: string`\n    Numbered box in a post office, assigned to a person or organisation, where letters are kept until called for\n\n  - `postCode?: string`\n    Identifier consisting of a group of letters and/or numbers that is added to a postal address to assist the sorting of mail\n\n  - `streetName?: string`\n    Name of a street or thoroughfare\n\n  - `suite?: string`\n    Building room number\n\n  - `townLocationName?: string`\n    Specific location name within the town\n\n  - `townName?: string`\n    Name of a built-up area, with defined boundaries, and a local government\n\n\n- `alias?: string`\n  Display alias of the counterparty, as defined by the user.\n\n- `email?: string`\n  Email address of the counterparty\n\n- `individual?: { firstName: string; lastName: string; middleNames?: string; }`\n  The name of the individual in case the counterparty is an individual. Either **organisation** or **individual** should be provided.\n\n  - `firstName: string`\n  - `lastName: string`\n  - `middleNames?: string`\n\n- `organisation?: { legalName?: string; }`\n  The name of the individual in case the counterparty is an individual. Either **organisation** or **individual** should be provided.\n\n  - `legalName?: string`\n\n- `phoneNumber?: string`\n  Phone number of the counterparty\n\n\n- `plmr-user-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.counterparties.updateDetails('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', { partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.counterparties.updateDetails',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.counterparties.updateDetails('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', {\n  partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/counterparties/$COUNTERPARTY_ID:update-details \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "alias": "Mum",\n          "email": "john.doe@example.com",\n          "phoneNumber": "+1669910"\n        }\'',
      },
      kotlin: {
        method: 'parties().counterparties().updateDetails',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.counterparties.CounterpartyUpdateDetailsParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: CounterpartyUpdateDetailsParams = CounterpartyUpdateDetailsParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .counterpartyId("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")\n        .build()\n    client.parties().counterparties().updateDetails(params)\n}',
      },
      java: {
        method: 'parties().counterparties().updateDetails',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.counterparties.CounterpartyUpdateDetailsParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        CounterpartyUpdateDetailsParams params = CounterpartyUpdateDetailsParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .counterpartyId("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")\n            .build();\n        client.parties().counterparties().updateDetails(params);\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/parties/individuals/{individualPartyId}',
    httpMethod: 'get',
    summary: 'Retrieve an Individual Party',
    description: 'Allows retrieval of an individual party, fetched by its ID.',
    stainlessPath: '(resource) parties.individuals > (method) retrieve',
    qualified: 'client.parties.individuals.retrieve',
    params: ['individualPartyId: string;', 'plmr-user-action?: boolean;'],
    response:
      '{ dateOfBirth?: string; firstName?: string; lastName?: string; middleNames?: string; postalAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }; registrationAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }; salutation?: string; title?: string; }',
    markdown:
      "## retrieve\n\n`client.parties.individuals.retrieve(individualPartyId: string, plmr-user-action?: boolean): { dateOfBirth?: string; firstName?: string; lastName?: string; middleNames?: string; postalAddress?: object; registrationAddress?: object; salutation?: string; title?: string; }`\n\n**get** `/api/v1/parties/individuals/{individualPartyId}`\n\nAllows retrieval of an individual party, fetched by its ID.\n\n### Parameters\n\n- `individualPartyId: string`\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ dateOfBirth?: string; firstName?: string; lastName?: string; middleNames?: string; postalAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }; registrationAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }; salutation?: string; title?: string; }`\n\n  - `dateOfBirth?: string`\n  - `firstName?: string`\n  - `lastName?: string`\n  - `middleNames?: string`\n  - `postalAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }`\n  - `registrationAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }`\n  - `salutation?: string`\n  - `title?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst individual = await client.parties.individuals.retrieve('6878951b-256b-4baa-9e81-ad4c577adc4e');\n\nconsole.log(individual);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.individuals.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst individual = await client.parties.individuals.retrieve(\n  '6878951b-256b-4baa-9e81-ad4c577adc4e',\n);\n\nconsole.log(individual.middleNames);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/individuals/$INDIVIDUAL_PARTY_ID \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().individuals().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.individuals.IndividualRetrieveParams\nimport com.plumery.api.models.parties.individuals.IndividualRetrieveResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val individual: IndividualRetrieveResponse = client.parties().individuals().retrieve("6878951b-256b-4baa-9e81-ad4c577adc4e")\n}',
      },
      java: {
        method: 'parties().individuals().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.individuals.IndividualRetrieveParams;\nimport com.plumery.api.models.parties.individuals.IndividualRetrieveResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        IndividualRetrieveResponse individual = client.parties().individuals().retrieve("6878951b-256b-4baa-9e81-ad4c577adc4e");\n    }\n}',
      },
    },
  },
  {
    name: 'updatePostalAddress',
    endpoint: '/api/v1/parties/individuals/{individualPartyId}:update-postal-address',
    httpMethod: 'post',
    summary: 'Update Postal Address of an Individual',
    description: "Modifies an individual party's postal address based on their ID.",
    stainlessPath: '(resource) parties.individuals > (method) updatePostalAddress',
    qualified: 'client.parties.individuals.updatePostalAddress',
    params: [
      'individualPartyId: string;',
      'country: string;',
      'buildingName?: string;',
      'buildingNumber?: string;',
      'countrySubDivision?: string;',
      'districtName?: string;',
      'floor?: string;',
      'postBox?: string;',
      'postCode?: string;',
      'streetName?: string;',
      'suite?: string;',
      'townLocationName?: string;',
      'townName?: string;',
      'plmr-user-action?: boolean;',
    ],
    markdown:
      "## updatePostalAddress\n\n`client.parties.individuals.updatePostalAddress(individualPartyId: string, country: string, buildingName?: string, buildingNumber?: string, countrySubDivision?: string, districtName?: string, floor?: string, postBox?: string, postCode?: string, streetName?: string, suite?: string, townLocationName?: string, townName?: string, plmr-user-action?: boolean): void`\n\n**post** `/api/v1/parties/individuals/{individualPartyId}:update-postal-address`\n\nModifies an individual party's postal address based on their ID.\n\n### Parameters\n\n- `individualPartyId: string`\n\n- `country: string`\n  Nation with its own government. ISO 3166, Alpha-2 code\n\n\n- `buildingName?: string`\n  Name of the building or house\n\n\n- `buildingNumber?: string`\n  Number that identifies the position of a building on a street\n\n\n- `countrySubDivision?: string`\n  Identifies a subdivision of a country such as state, region, county\n\n\n- `districtName?: string`\n  Identifies a subdivision within a country sub-division\n\n\n- `floor?: string`\n  Floor or storey within a building\n\n\n- `postBox?: string`\n  Numbered box in a post office, assigned to a person or organisation, where letters are kept until called for\n\n\n- `postCode?: string`\n  Identifier consisting of a group of letters and/or numbers that is added to a postal address to assist the sorting of mail\n\n\n- `streetName?: string`\n  Name of a street or thoroughfare\n\n\n- `suite?: string`\n  Building room number\n\n\n- `townLocationName?: string`\n  Specific location name within the town\n\n\n- `townName?: string`\n  Name of a built-up area, with defined boundaries, and a local government\n\n\n- `plmr-user-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.individuals.updatePostalAddress('6878951b-256b-4baa-9e81-ad4c577adc4e', { country: 'US' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.individuals.updatePostalAddress',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.individuals.updatePostalAddress('6878951b-256b-4baa-9e81-ad4c577adc4e', {\n  country: 'US',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/individuals/$INDIVIDUAL_PARTY_ID:update-postal-address \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "country": "US",\n          "buildingName": "Empire State Building",\n          "buildingNumber": "123",\n          "countrySubDivision": "New York State",\n          "districtName": "Financial District",\n          "floor": "5",\n          "postBox": "PO Box 789",\n          "postCode": "90210",\n          "streetName": "Main St",\n          "suite": "Suite 101",\n          "townLocationName": "Manhattan",\n          "townName": "New York"\n        }\'',
      },
      kotlin: {
        method: 'parties().individuals().updatePostalAddress',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.individuals.IndividualUpdatePostalAddressParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: IndividualUpdatePostalAddressParams = IndividualUpdatePostalAddressParams.builder()\n        .individualPartyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .country("US")\n        .build()\n    client.parties().individuals().updatePostalAddress(params)\n}',
      },
      java: {
        method: 'parties().individuals().updatePostalAddress',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.individuals.IndividualUpdatePostalAddressParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        IndividualUpdatePostalAddressParams params = IndividualUpdatePostalAddressParams.builder()\n            .individualPartyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .country("US")\n            .build();\n        client.parties().individuals().updatePostalAddress(params);\n    }\n}',
      },
    },
  },
  {
    name: 'updateRegistrationAddress',
    endpoint: '/api/v1/parties/individuals/{individualPartyId}:update-registration-address',
    httpMethod: 'post',
    summary: 'Update Registration Address of an Individual',
    description: "Modifies an individual party's registration address based on their ID.",
    stainlessPath: '(resource) parties.individuals > (method) updateRegistrationAddress',
    qualified: 'client.parties.individuals.updateRegistrationAddress',
    params: [
      'individualPartyId: string;',
      'country: string;',
      'buildingName?: string;',
      'buildingNumber?: string;',
      'countrySubDivision?: string;',
      'districtName?: string;',
      'floor?: string;',
      'postBox?: string;',
      'postCode?: string;',
      'streetName?: string;',
      'suite?: string;',
      'townLocationName?: string;',
      'townName?: string;',
      'plmr-user-action?: boolean;',
    ],
    markdown:
      "## updateRegistrationAddress\n\n`client.parties.individuals.updateRegistrationAddress(individualPartyId: string, country: string, buildingName?: string, buildingNumber?: string, countrySubDivision?: string, districtName?: string, floor?: string, postBox?: string, postCode?: string, streetName?: string, suite?: string, townLocationName?: string, townName?: string, plmr-user-action?: boolean): void`\n\n**post** `/api/v1/parties/individuals/{individualPartyId}:update-registration-address`\n\nModifies an individual party's registration address based on their ID.\n\n### Parameters\n\n- `individualPartyId: string`\n\n- `country: string`\n  Nation with its own government. ISO 3166, Alpha-2 code\n\n\n- `buildingName?: string`\n  Name of the building or house\n\n\n- `buildingNumber?: string`\n  Number that identifies the position of a building on a street\n\n\n- `countrySubDivision?: string`\n  Identifies a subdivision of a country such as state, region, county\n\n\n- `districtName?: string`\n  Identifies a subdivision within a country sub-division\n\n\n- `floor?: string`\n  Floor or storey within a building\n\n\n- `postBox?: string`\n  Numbered box in a post office, assigned to a person or organisation, where letters are kept until called for\n\n\n- `postCode?: string`\n  Identifier consisting of a group of letters and/or numbers that is added to a postal address to assist the sorting of mail\n\n\n- `streetName?: string`\n  Name of a street or thoroughfare\n\n\n- `suite?: string`\n  Building room number\n\n\n- `townLocationName?: string`\n  Specific location name within the town\n\n\n- `townName?: string`\n  Name of a built-up area, with defined boundaries, and a local government\n\n\n- `plmr-user-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.individuals.updateRegistrationAddress('6878951b-256b-4baa-9e81-ad4c577adc4e', { country: 'US' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.individuals.updateRegistrationAddress',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.individuals.updateRegistrationAddress('6878951b-256b-4baa-9e81-ad4c577adc4e', {\n  country: 'US',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/individuals/$INDIVIDUAL_PARTY_ID:update-registration-address \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "country": "US",\n          "buildingName": "Empire State Building",\n          "buildingNumber": "123",\n          "countrySubDivision": "New York State",\n          "districtName": "Financial District",\n          "floor": "5",\n          "postBox": "PO Box 789",\n          "postCode": "90210",\n          "streetName": "Main St",\n          "suite": "Suite 101",\n          "townLocationName": "Manhattan",\n          "townName": "New York"\n        }\'',
      },
      kotlin: {
        method: 'parties().individuals().updateRegistrationAddress',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.individuals.IndividualUpdateRegistrationAddressParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: IndividualUpdateRegistrationAddressParams = IndividualUpdateRegistrationAddressParams.builder()\n        .individualPartyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .country("US")\n        .build()\n    client.parties().individuals().updateRegistrationAddress(params)\n}',
      },
      java: {
        method: 'parties().individuals().updateRegistrationAddress',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.individuals.IndividualUpdateRegistrationAddressParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        IndividualUpdateRegistrationAddressParams params = IndividualUpdateRegistrationAddressParams.builder()\n            .individualPartyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .country("US")\n            .build();\n        client.parties().individuals().updateRegistrationAddress(params);\n    }\n}',
      },
    },
  },
  {
    name: 'list',
    endpoint: '/api/v1/parties/individuals/{individualPartyId}/tax-identifications',
    httpMethod: 'get',
    summary: 'List Tax Identifications of an Individual',
    description: 'Allows retrieval of all of the given individual party tax identifications.',
    stainlessPath: '(resource) parties.individuals.tax-identifications > (method) list',
    qualified: 'client.parties.individuals.taxIdentifications.list',
    params: ['individualPartyId: string;', 'plmr-user-action?: boolean;'],
    response:
      "{ taxIdentifications?: { id: string; country?: string; primary?: boolean; reasonDescription?: string; reasonNoTin?: 'NOT_ASSIGNED_YET' | 'NOT_ASSIGNED_BY_COUNTRY' | 'OTHER'; tin?: string; }[]; }",
    markdown:
      "## list\n\n`client.parties.individuals.taxIdentifications.list(individualPartyId: string, plmr-user-action?: boolean): { taxIdentifications?: object[]; }`\n\n**get** `/api/v1/parties/individuals/{individualPartyId}/tax-identifications`\n\nAllows retrieval of all of the given individual party tax identifications.\n\n### Parameters\n\n- `individualPartyId: string`\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ taxIdentifications?: { id: string; country?: string; primary?: boolean; reasonDescription?: string; reasonNoTin?: 'NOT_ASSIGNED_YET' | 'NOT_ASSIGNED_BY_COUNTRY' | 'OTHER'; tin?: string; }[]; }`\n\n  - `taxIdentifications?: { id: string; country?: string; primary?: boolean; reasonDescription?: string; reasonNoTin?: 'NOT_ASSIGNED_YET' | 'NOT_ASSIGNED_BY_COUNTRY' | 'OTHER'; tin?: string; }[]`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst taxIdentifications = await client.parties.individuals.taxIdentifications.list('6878951b-256b-4baa-9e81-ad4c577adc4e');\n\nconsole.log(taxIdentifications);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.individuals.taxIdentifications.list',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst taxIdentifications = await client.parties.individuals.taxIdentifications.list(\n  '6878951b-256b-4baa-9e81-ad4c577adc4e',\n);\n\nconsole.log(taxIdentifications.taxIdentifications);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/individuals/$INDIVIDUAL_PARTY_ID/tax-identifications \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().individuals().taxIdentifications().list',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.individuals.taxidentifications.TaxIdentificationListParams\nimport com.plumery.api.models.parties.individuals.taxidentifications.TaxIdentificationListResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val taxIdentifications: TaxIdentificationListResponse = client.parties().individuals().taxIdentifications().list("6878951b-256b-4baa-9e81-ad4c577adc4e")\n}',
      },
      java: {
        method: 'parties().individuals().taxIdentifications().list',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.individuals.taxidentifications.TaxIdentificationListParams;\nimport com.plumery.api.models.parties.individuals.taxidentifications.TaxIdentificationListResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        TaxIdentificationListResponse taxIdentifications = client.parties().individuals().taxIdentifications().list("6878951b-256b-4baa-9e81-ad4c577adc4e");\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/parties/individuals/{individualPartyId}/tax-identifications/{taxIdentificationId}',
    httpMethod: 'get',
    summary: 'Retrieve Tax Identification of an Individual',
    description: 'Allows retrieval of a single tax identification, fetched by its ID.',
    stainlessPath: '(resource) parties.individuals.tax-identifications > (method) retrieve',
    qualified: 'client.parties.individuals.taxIdentifications.retrieve',
    params: ['individualPartyId: string;', 'taxIdentificationId: string;', 'plmr-user-action?: boolean;'],
    response:
      "{ id: string; country?: string; primary?: boolean; reasonDescription?: string; reasonNoTin?: 'NOT_ASSIGNED_YET' | 'NOT_ASSIGNED_BY_COUNTRY' | 'OTHER'; tin?: string; }",
    markdown:
      "## retrieve\n\n`client.parties.individuals.taxIdentifications.retrieve(individualPartyId: string, taxIdentificationId: string, plmr-user-action?: boolean): { id: string; country?: string; primary?: boolean; reasonDescription?: string; reasonNoTin?: 'NOT_ASSIGNED_YET' | 'NOT_ASSIGNED_BY_COUNTRY' | 'OTHER'; tin?: string; }`\n\n**get** `/api/v1/parties/individuals/{individualPartyId}/tax-identifications/{taxIdentificationId}`\n\nAllows retrieval of a single tax identification, fetched by its ID.\n\n### Parameters\n\n- `individualPartyId: string`\n\n- `taxIdentificationId: string`\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ id: string; country?: string; primary?: boolean; reasonDescription?: string; reasonNoTin?: 'NOT_ASSIGNED_YET' | 'NOT_ASSIGNED_BY_COUNTRY' | 'OTHER'; tin?: string; }`\n\n  - `id: string`\n  - `country?: string`\n  - `primary?: boolean`\n  - `reasonDescription?: string`\n  - `reasonNoTin?: 'NOT_ASSIGNED_YET' | 'NOT_ASSIGNED_BY_COUNTRY' | 'OTHER'`\n  - `tin?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst taxIdentification = await client.parties.individuals.taxIdentifications.retrieve('123456789', { individualPartyId: '6878951b-256b-4baa-9e81-ad4c577adc4e' });\n\nconsole.log(taxIdentification);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.individuals.taxIdentifications.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst taxIdentification = await client.parties.individuals.taxIdentifications.retrieve(\n  '123456789',\n  { individualPartyId: '6878951b-256b-4baa-9e81-ad4c577adc4e' },\n);\n\nconsole.log(taxIdentification.id);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/individuals/$INDIVIDUAL_PARTY_ID/tax-identifications/$TAX_IDENTIFICATION_ID \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().individuals().taxIdentifications().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.individuals.taxidentifications.TaxIdentificationRetrieveParams\nimport com.plumery.api.models.parties.individuals.taxidentifications.TaxIdentificationRetrieveResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: TaxIdentificationRetrieveParams = TaxIdentificationRetrieveParams.builder()\n        .individualPartyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .taxIdentificationId("123456789")\n        .build()\n    val taxIdentification: TaxIdentificationRetrieveResponse = client.parties().individuals().taxIdentifications().retrieve(params)\n}',
      },
      java: {
        method: 'parties().individuals().taxIdentifications().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.individuals.taxidentifications.TaxIdentificationRetrieveParams;\nimport com.plumery.api.models.parties.individuals.taxidentifications.TaxIdentificationRetrieveResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        TaxIdentificationRetrieveParams params = TaxIdentificationRetrieveParams.builder()\n            .individualPartyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .taxIdentificationId("123456789")\n            .build();\n        TaxIdentificationRetrieveResponse taxIdentification = client.parties().individuals().taxIdentifications().retrieve(params);\n    }\n}',
      },
    },
  },
  {
    name: 'updateTaxIdentification',
    endpoint:
      '/api/v1/parties/individuals/{individualPartyId}/tax-identifications/{taxIdentificationId}:updateTaxIdentification',
    httpMethod: 'post',
    summary: 'Update Tax Identification of an Individual',
    description:
      "**[Marked as internal as it was not implemented yet]** Modifies an individual party's tax identification based on its ID.",
    stainlessPath: '(resource) parties.individuals.tax-identifications > (method) updateTaxIdentification',
    qualified: 'client.parties.individuals.taxIdentifications.updateTaxIdentification',
    params: [
      'individualPartyId: string;',
      'taxIdentificationId: string;',
      'id: string;',
      'country?: string;',
      'primary?: boolean;',
      'reasonDescription?: string;',
      "reasonNoTin?: 'NOT_ASSIGNED_YET' | 'NOT_ASSIGNED_BY_COUNTRY' | 'OTHER';",
      'tin?: string;',
      'plmr-user-action?: boolean;',
    ],
    markdown:
      "## updateTaxIdentification\n\n`client.parties.individuals.taxIdentifications.updateTaxIdentification(individualPartyId: string, taxIdentificationId: string, id: string, country?: string, primary?: boolean, reasonDescription?: string, reasonNoTin?: 'NOT_ASSIGNED_YET' | 'NOT_ASSIGNED_BY_COUNTRY' | 'OTHER', tin?: string, plmr-user-action?: boolean): void`\n\n**post** `/api/v1/parties/individuals/{individualPartyId}/tax-identifications/{taxIdentificationId}:updateTaxIdentification`\n\n**[Marked as internal as it was not implemented yet]** Modifies an individual party's tax identification based on its ID.\n\n### Parameters\n\n- `individualPartyId: string`\n\n- `taxIdentificationId: string`\n\n- `id: string`\n  Unique identifier for the tax identification record\n\n- `country?: string`\n  ISO 3166-1 alpha-2 country code where the TIN is issued\n\n- `primary?: boolean`\n  Indicates if this TIN is the primary one for the individual\n\n- `reasonDescription?: string`\n  Additional context around why there is no TIN. Only required if OTHER was the value for the reasonNoTin field\n\n\n- `reasonNoTin?: 'NOT_ASSIGNED_YET' | 'NOT_ASSIGNED_BY_COUNTRY' | 'OTHER'`\n  Reason code for why a TIN is not provided\n\n- `tin?: string`\n  Tax Identification Number assigned by the tax authority\n\n- `plmr-user-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.individuals.taxIdentifications.updateTaxIdentification('123456789', { individualPartyId: '6878951b-256b-4baa-9e81-ad4c577adc4e', id: '1178951b-256b-4baa-9e81-ad4c577adc4e' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.individuals.taxIdentifications.updateTaxIdentification',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.individuals.taxIdentifications.updateTaxIdentification('123456789', {\n  individualPartyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  id: '1178951b-256b-4baa-9e81-ad4c577adc4e',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/individuals/$INDIVIDUAL_PARTY_ID/tax-identifications/$TAX_IDENTIFICATION_ID:updateTaxIdentification \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "id": "1178951b-256b-4baa-9e81-ad4c577adc4e",\n          "country": "US",\n          "primary": true,\n          "reasonDescription": "Pending application",\n          "reasonNoTin": "NOT_ASSIGNED_YET",\n          "tin": "123456789"\n        }\'',
      },
      kotlin: {
        method: 'parties().individuals().taxIdentifications().updateTaxIdentification',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.individuals.taxidentifications.TaxIdentificationUpdateTaxIdentificationParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: TaxIdentificationUpdateTaxIdentificationParams = TaxIdentificationUpdateTaxIdentificationParams.builder()\n        .individualPartyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .taxIdentificationId("123456789")\n        .id("1178951b-256b-4baa-9e81-ad4c577adc4e")\n        .build()\n    client.parties().individuals().taxIdentifications().updateTaxIdentification(params)\n}',
      },
      java: {
        method: 'parties().individuals().taxIdentifications().updateTaxIdentification',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.individuals.taxidentifications.TaxIdentificationUpdateTaxIdentificationParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        TaxIdentificationUpdateTaxIdentificationParams params = TaxIdentificationUpdateTaxIdentificationParams.builder()\n            .individualPartyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .taxIdentificationId("123456789")\n            .id("1178951b-256b-4baa-9e81-ad4c577adc4e")\n            .build();\n        client.parties().individuals().taxIdentifications().updateTaxIdentification(params);\n    }\n}',
      },
    },
  },
  {
    name: 'removeTaxIdentification',
    endpoint:
      '/api/v1/parties/individuals/{individualPartyId}/tax-identifications/{taxIdentificationId}:removeTaxIdentification',
    httpMethod: 'post',
    summary: 'Remove Tax Identification of an Individual',
    description:
      "**[Marked as internal as it was not implemented yet]** Removes an individual party's tax identification based on its ID.",
    stainlessPath: '(resource) parties.individuals.tax-identifications > (method) removeTaxIdentification',
    qualified: 'client.parties.individuals.taxIdentifications.removeTaxIdentification',
    params: ['individualPartyId: string;', 'taxIdentificationId: string;', 'plmr-user-action?: boolean;'],
    markdown:
      "## removeTaxIdentification\n\n`client.parties.individuals.taxIdentifications.removeTaxIdentification(individualPartyId: string, taxIdentificationId: string, plmr-user-action?: boolean): void`\n\n**post** `/api/v1/parties/individuals/{individualPartyId}/tax-identifications/{taxIdentificationId}:removeTaxIdentification`\n\n**[Marked as internal as it was not implemented yet]** Removes an individual party's tax identification based on its ID.\n\n### Parameters\n\n- `individualPartyId: string`\n\n- `taxIdentificationId: string`\n\n- `plmr-user-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.individuals.taxIdentifications.removeTaxIdentification('123456789', { individualPartyId: '6878951b-256b-4baa-9e81-ad4c577adc4e' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.individuals.taxIdentifications.removeTaxIdentification',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.individuals.taxIdentifications.removeTaxIdentification('123456789', {\n  individualPartyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/individuals/$INDIVIDUAL_PARTY_ID/tax-identifications/$TAX_IDENTIFICATION_ID:removeTaxIdentification \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().individuals().taxIdentifications().removeTaxIdentification',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.individuals.taxidentifications.TaxIdentificationRemoveTaxIdentificationParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: TaxIdentificationRemoveTaxIdentificationParams = TaxIdentificationRemoveTaxIdentificationParams.builder()\n        .individualPartyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .taxIdentificationId("123456789")\n        .build()\n    client.parties().individuals().taxIdentifications().removeTaxIdentification(params)\n}',
      },
      java: {
        method: 'parties().individuals().taxIdentifications().removeTaxIdentification',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.individuals.taxidentifications.TaxIdentificationRemoveTaxIdentificationParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        TaxIdentificationRemoveTaxIdentificationParams params = TaxIdentificationRemoveTaxIdentificationParams.builder()\n            .individualPartyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .taxIdentificationId("123456789")\n            .build();\n        client.parties().individuals().taxIdentifications().removeTaxIdentification(params);\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/parties/organisations/{organisationPartyId}',
    httpMethod: 'get',
    summary: 'Retrieve an Organisation Party',
    description: 'Allows retrieval of an organisation party, fetched by its ID.',
    stainlessPath: '(resource) parties.organisations > (method) retrieve',
    qualified: 'client.parties.organisations.retrieve',
    params: ['organisationPartyId: string;', 'plmr-user-action?: boolean;'],
    response:
      '{ countryOfRegistration?: string; dateOfIncorporation?: string; legalName?: string; legalType?: string; operatingAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }; postalAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }; registrationAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }; registrationNumber?: string; tradingName?: string; typeOfOrganisation?: { categories?: string[]; description?: string; website?: string; }; vatNumber?: string; }',
    markdown:
      "## retrieve\n\n`client.parties.organisations.retrieve(organisationPartyId: string, plmr-user-action?: boolean): { countryOfRegistration?: string; dateOfIncorporation?: string; legalName?: string; legalType?: string; operatingAddress?: object; postalAddress?: object; registrationAddress?: object; registrationNumber?: string; tradingName?: string; typeOfOrganisation?: object; vatNumber?: string; }`\n\n**get** `/api/v1/parties/organisations/{organisationPartyId}`\n\nAllows retrieval of an organisation party, fetched by its ID.\n\n### Parameters\n\n- `organisationPartyId: string`\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ countryOfRegistration?: string; dateOfIncorporation?: string; legalName?: string; legalType?: string; operatingAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }; postalAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }; registrationAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }; registrationNumber?: string; tradingName?: string; typeOfOrganisation?: { categories?: string[]; description?: string; website?: string; }; vatNumber?: string; }`\n\n  - `countryOfRegistration?: string`\n  - `dateOfIncorporation?: string`\n  - `legalName?: string`\n  - `legalType?: string`\n  - `operatingAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }`\n  - `postalAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }`\n  - `registrationAddress?: { country: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }`\n  - `registrationNumber?: string`\n  - `tradingName?: string`\n  - `typeOfOrganisation?: { categories?: string[]; description?: string; website?: string; }`\n  - `vatNumber?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst organisation = await client.parties.organisations.retrieve('organisationPartyId');\n\nconsole.log(organisation);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.organisations.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst organisation = await client.parties.organisations.retrieve('organisationPartyId');\n\nconsole.log(organisation.countryOfRegistration);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/organisations/$ORGANISATION_PARTY_ID \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().organisations().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.organisations.OrganisationRetrieveParams\nimport com.plumery.api.models.parties.organisations.OrganisationRetrieveResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val organisation: OrganisationRetrieveResponse = client.parties().organisations().retrieve("organisationPartyId")\n}',
      },
      java: {
        method: 'parties().organisations().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.organisations.OrganisationRetrieveParams;\nimport com.plumery.api.models.parties.organisations.OrganisationRetrieveResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        OrganisationRetrieveResponse organisation = client.parties().organisations().retrieve("organisationPartyId");\n    }\n}',
      },
    },
  },
  {
    name: 'updateOrganisationDetails',
    endpoint: '/api/v1/parties/organisations/{organisationPartyId}:update-organisation-details',
    httpMethod: 'post',
    summary: 'Update Organisation Details',
    description: "Modifies an organisation party's details based on their ID.",
    stainlessPath: '(resource) parties.organisations > (method) updateOrganisationDetails',
    qualified: 'client.parties.organisations.updateOrganisationDetails',
    params: [
      'organisationPartyId: string;',
      'legalName: string;',
      'country?: string;',
      'dateOfIncorporation?: string;',
      'legalType?: string;',
      'registrationNumber?: string;',
      'tradingName?: string;',
      'vatNumber?: string;',
      'plmr-user-action?: boolean;',
    ],
    markdown:
      "## updateOrganisationDetails\n\n`client.parties.organisations.updateOrganisationDetails(organisationPartyId: string, legalName: string, country?: string, dateOfIncorporation?: string, legalType?: string, registrationNumber?: string, tradingName?: string, vatNumber?: string, plmr-user-action?: boolean): void`\n\n**post** `/api/v1/parties/organisations/{organisationPartyId}:update-organisation-details`\n\nModifies an organisation party's details based on their ID.\n\n### Parameters\n\n- `organisationPartyId: string`\n\n- `legalName: string`\n  The legally registered name of the organisation.\n\n- `country?: string`\n  The two-letter ISO country code representing the country of the organisation.\n\n- `dateOfIncorporation?: string`\n  The date when the organisation was incorporated. Must be a past date.\n\n- `legalType?: string`\n  The legal form or type of the organisation.\n\n- `registrationNumber?: string`\n  The registration number of the organisation.\n\n- `tradingName?: string`\n  The trading name of the organisation.\n\n- `vatNumber?: string`\n  The VAT number of the organisation.\n\n- `plmr-user-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.organisations.updateOrganisationDetails('organisationPartyId', { legalName: 'legalName' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.organisations.updateOrganisationDetails',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.organisations.updateOrganisationDetails('organisationPartyId', {\n  legalName: 'legalName',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/organisations/$ORGANISATION_PARTY_ID:update-organisation-details \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "legalName": "legalName"\n        }\'',
      },
      kotlin: {
        method: 'parties().organisations().updateOrganisationDetails',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.organisations.OrganisationUpdateOrganisationDetailsParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: OrganisationUpdateOrganisationDetailsParams = OrganisationUpdateOrganisationDetailsParams.builder()\n        .organisationPartyId("organisationPartyId")\n        .legalName("legalName")\n        .build()\n    client.parties().organisations().updateOrganisationDetails(params)\n}',
      },
      java: {
        method: 'parties().organisations().updateOrganisationDetails',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.organisations.OrganisationUpdateOrganisationDetailsParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        OrganisationUpdateOrganisationDetailsParams params = OrganisationUpdateOrganisationDetailsParams.builder()\n            .organisationPartyId("organisationPartyId")\n            .legalName("legalName")\n            .build();\n        client.parties().organisations().updateOrganisationDetails(params);\n    }\n}',
      },
    },
  },
  {
    name: 'updateRegistrationAddress',
    endpoint: '/api/v1/parties/organisations/{organisationPartyId}:update-registration-address',
    httpMethod: 'post',
    summary: 'Update Registration Address of an Organisation',
    description: "Modifies an organisation party's registration address based on their ID.",
    stainlessPath: '(resource) parties.organisations > (method) updateRegistrationAddress',
    qualified: 'client.parties.organisations.updateRegistrationAddress',
    params: [
      'organisationPartyId: string;',
      'buildingName?: string;',
      'buildingNumber?: string;',
      'country?: string;',
      'countrySubDivision?: string;',
      'districtName?: string;',
      'floor?: string;',
      'postBox?: string;',
      'postCode?: string;',
      'streetName?: string;',
      'suite?: string;',
      'townLocationName?: string;',
      'townName?: string;',
      'plmr-user-action?: boolean;',
    ],
    markdown:
      "## updateRegistrationAddress\n\n`client.parties.organisations.updateRegistrationAddress(organisationPartyId: string, buildingName?: string, buildingNumber?: string, country?: string, countrySubDivision?: string, districtName?: string, floor?: string, postBox?: string, postCode?: string, streetName?: string, suite?: string, townLocationName?: string, townName?: string, plmr-user-action?: boolean): void`\n\n**post** `/api/v1/parties/organisations/{organisationPartyId}:update-registration-address`\n\nModifies an organisation party's registration address based on their ID.\n\n### Parameters\n\n- `organisationPartyId: string`\n\n- `buildingName?: string`\n  Name of the building or house\n\n\n- `buildingNumber?: string`\n  Number that identifies the position of a building on a street\n\n\n- `country?: string`\n  Nation with its own government. ISO 3166, Alpha-2 code\n\n\n- `countrySubDivision?: string`\n  Identifies a subdivision of a country such as state, region, county\n\n\n- `districtName?: string`\n  Identifies a subdivision within a country sub-division\n\n\n- `floor?: string`\n  Floor or storey within a building\n\n\n- `postBox?: string`\n  Numbered box in a post office, assigned to a person or organisation, where letters are kept until called for\n\n\n- `postCode?: string`\n  Identifier consisting of a group of letters and/or numbers that is added to a postal address to assist the sorting of mail\n\n\n- `streetName?: string`\n  Name of a street or thoroughfare\n\n\n- `suite?: string`\n  Building room number\n\n\n- `townLocationName?: string`\n  Specific location name within the town\n\n\n- `townName?: string`\n  Name of a built-up area, with defined boundaries, and a local government\n\n\n- `plmr-user-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.organisations.updateRegistrationAddress('6878951b-256b-4baa-9e81-ad4c577adc4e')\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.organisations.updateRegistrationAddress',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.organisations.updateRegistrationAddress(\n  '6878951b-256b-4baa-9e81-ad4c577adc4e',\n);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/organisations/$ORGANISATION_PARTY_ID:update-registration-address \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().organisations().updateRegistrationAddress',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.organisations.OrganisationUpdateRegistrationAddressParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    client.parties().organisations().updateRegistrationAddress("6878951b-256b-4baa-9e81-ad4c577adc4e")\n}',
      },
      java: {
        method: 'parties().organisations().updateRegistrationAddress',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.organisations.OrganisationUpdateRegistrationAddressParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        client.parties().organisations().updateRegistrationAddress("6878951b-256b-4baa-9e81-ad4c577adc4e");\n    }\n}',
      },
    },
  },
  {
    name: 'updatePostalAddress',
    endpoint: '/api/v1/parties/organisations/{organisationPartyId}:update-postal-address',
    httpMethod: 'post',
    summary: 'Update Postal Address of an Organisation',
    description: "Modifies an organisation party's postal address based on their ID.",
    stainlessPath: '(resource) parties.organisations > (method) updatePostalAddress',
    qualified: 'client.parties.organisations.updatePostalAddress',
    params: [
      'organisationPartyId: string;',
      'buildingName?: string;',
      'buildingNumber?: string;',
      'country?: string;',
      'countrySubDivision?: string;',
      'districtName?: string;',
      'floor?: string;',
      'postBox?: string;',
      'postCode?: string;',
      'streetName?: string;',
      'suite?: string;',
      'townLocationName?: string;',
      'townName?: string;',
      'plmr-user-action?: boolean;',
    ],
    markdown:
      "## updatePostalAddress\n\n`client.parties.organisations.updatePostalAddress(organisationPartyId: string, buildingName?: string, buildingNumber?: string, country?: string, countrySubDivision?: string, districtName?: string, floor?: string, postBox?: string, postCode?: string, streetName?: string, suite?: string, townLocationName?: string, townName?: string, plmr-user-action?: boolean): void`\n\n**post** `/api/v1/parties/organisations/{organisationPartyId}:update-postal-address`\n\nModifies an organisation party's postal address based on their ID.\n\n### Parameters\n\n- `organisationPartyId: string`\n\n- `buildingName?: string`\n  Name of the building or house\n\n\n- `buildingNumber?: string`\n  Number that identifies the position of a building on a street\n\n\n- `country?: string`\n  Nation with its own government. ISO 3166, Alpha-2 code\n\n\n- `countrySubDivision?: string`\n  Identifies a subdivision of a country such as state, region, county\n\n\n- `districtName?: string`\n  Identifies a subdivision within a country sub-division\n\n\n- `floor?: string`\n  Floor or storey within a building\n\n\n- `postBox?: string`\n  Numbered box in a post office, assigned to a person or organisation, where letters are kept until called for\n\n\n- `postCode?: string`\n  Identifier consisting of a group of letters and/or numbers that is added to a postal address to assist the sorting of mail\n\n\n- `streetName?: string`\n  Name of a street or thoroughfare\n\n\n- `suite?: string`\n  Building room number\n\n\n- `townLocationName?: string`\n  Specific location name within the town\n\n\n- `townName?: string`\n  Name of a built-up area, with defined boundaries, and a local government\n\n\n- `plmr-user-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.organisations.updatePostalAddress('6878951b-256b-4baa-9e81-ad4c577adc4e')\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.organisations.updatePostalAddress',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.organisations.updatePostalAddress('6878951b-256b-4baa-9e81-ad4c577adc4e');",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/organisations/$ORGANISATION_PARTY_ID:update-postal-address \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().organisations().updatePostalAddress',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.organisations.OrganisationUpdatePostalAddressParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    client.parties().organisations().updatePostalAddress("6878951b-256b-4baa-9e81-ad4c577adc4e")\n}',
      },
      java: {
        method: 'parties().organisations().updatePostalAddress',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.organisations.OrganisationUpdatePostalAddressParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        client.parties().organisations().updatePostalAddress("6878951b-256b-4baa-9e81-ad4c577adc4e");\n    }\n}',
      },
    },
  },
  {
    name: 'updateOperatingAddress',
    endpoint: '/api/v1/parties/organisations/{organisationPartyId}:update-operating-address',
    httpMethod: 'post',
    summary: 'Update Operating Address of an Organisation',
    description: "Modifies an organisation party's operating address based on their ID.",
    stainlessPath: '(resource) parties.organisations > (method) updateOperatingAddress',
    qualified: 'client.parties.organisations.updateOperatingAddress',
    params: [
      'organisationPartyId: string;',
      'buildingName?: string;',
      'buildingNumber?: string;',
      'country?: string;',
      'countrySubDivision?: string;',
      'districtName?: string;',
      'floor?: string;',
      'postBox?: string;',
      'postCode?: string;',
      'streetName?: string;',
      'suite?: string;',
      'townLocationName?: string;',
      'townName?: string;',
      'plmr-user-action?: boolean;',
    ],
    markdown:
      "## updateOperatingAddress\n\n`client.parties.organisations.updateOperatingAddress(organisationPartyId: string, buildingName?: string, buildingNumber?: string, country?: string, countrySubDivision?: string, districtName?: string, floor?: string, postBox?: string, postCode?: string, streetName?: string, suite?: string, townLocationName?: string, townName?: string, plmr-user-action?: boolean): void`\n\n**post** `/api/v1/parties/organisations/{organisationPartyId}:update-operating-address`\n\nModifies an organisation party's operating address based on their ID.\n\n### Parameters\n\n- `organisationPartyId: string`\n\n- `buildingName?: string`\n  Name of the building or house\n\n\n- `buildingNumber?: string`\n  Number that identifies the position of a building on a street\n\n\n- `country?: string`\n  Nation with its own government. ISO 3166, Alpha-2 code\n\n\n- `countrySubDivision?: string`\n  Identifies a subdivision of a country such as state, region, county\n\n\n- `districtName?: string`\n  Identifies a subdivision within a country sub-division\n\n\n- `floor?: string`\n  Floor or storey within a building\n\n\n- `postBox?: string`\n  Numbered box in a post office, assigned to a person or organisation, where letters are kept until called for\n\n\n- `postCode?: string`\n  Identifier consisting of a group of letters and/or numbers that is added to a postal address to assist the sorting of mail\n\n\n- `streetName?: string`\n  Name of a street or thoroughfare\n\n\n- `suite?: string`\n  Building room number\n\n\n- `townLocationName?: string`\n  Specific location name within the town\n\n\n- `townName?: string`\n  Name of a built-up area, with defined boundaries, and a local government\n\n\n- `plmr-user-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.organisations.updateOperatingAddress('6878951b-256b-4baa-9e81-ad4c577adc4e')\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.organisations.updateOperatingAddress',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.organisations.updateOperatingAddress('6878951b-256b-4baa-9e81-ad4c577adc4e');",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/organisations/$ORGANISATION_PARTY_ID:update-operating-address \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().organisations().updateOperatingAddress',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.organisations.OrganisationUpdateOperatingAddressParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    client.parties().organisations().updateOperatingAddress("6878951b-256b-4baa-9e81-ad4c577adc4e")\n}',
      },
      java: {
        method: 'parties().organisations().updateOperatingAddress',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.organisations.OrganisationUpdateOperatingAddressParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        client.parties().organisations().updateOperatingAddress("6878951b-256b-4baa-9e81-ad4c577adc4e");\n    }\n}',
      },
    },
  },
  {
    name: 'updateOrganisationType',
    endpoint: '/api/v1/parties/organisations/{organisationPartyId}:update-organisation-type',
    httpMethod: 'post',
    summary: 'Update Organisation type',
    description: "Modifies an organisation party's type based on their ID.",
    stainlessPath: '(resource) parties.organisations > (method) updateOrganisationType',
    qualified: 'client.parties.organisations.updateOrganisationType',
    params: [
      'organisationPartyId: string;',
      'categories?: string[];',
      'description?: string;',
      'website?: string;',
      'plmr-user-action?: boolean;',
    ],
    markdown:
      "## updateOrganisationType\n\n`client.parties.organisations.updateOrganisationType(organisationPartyId: string, categories?: string[], description?: string, website?: string, plmr-user-action?: boolean): void`\n\n**post** `/api/v1/parties/organisations/{organisationPartyId}:update-organisation-type`\n\nModifies an organisation party's type based on their ID.\n\n### Parameters\n\n- `organisationPartyId: string`\n\n- `categories?: string[]`\n\n- `description?: string`\n  Description of the organisation\n\n- `website?: string`\n  Website of the organisation\n\n- `plmr-user-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.organisations.updateOrganisationType('organisationPartyId')\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.organisations.updateOrganisationType',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.organisations.updateOrganisationType('organisationPartyId');",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/organisations/$ORGANISATION_PARTY_ID:update-organisation-type \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().organisations().updateOrganisationType',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.organisations.OrganisationUpdateOrganisationTypeParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    client.parties().organisations().updateOrganisationType("organisationPartyId")\n}',
      },
      java: {
        method: 'parties().organisations().updateOrganisationType',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.organisations.OrganisationUpdateOrganisationTypeParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        client.parties().organisations().updateOrganisationType("organisationPartyId");\n    }\n}',
      },
    },
  },
  {
    name: 'list',
    endpoint: '/api/v1/parties/{organisationPartyId}/teams',
    httpMethod: 'get',
    summary: 'Retrieve teams',
    description: 'Retrieve a list of teams associated with the specified organisation party.\n',
    stainlessPath: '(resource) parties.teams > (method) list',
    qualified: 'client.parties.teams.list',
    params: ['organisationPartyId: string;', 'plmr-user-action?: boolean;', 'X-Request-ID?: string;'],
    response: '{ teams?: { name?: string; teamId?: string; }[]; }',
    markdown:
      "## list\n\n`client.parties.teams.list(organisationPartyId: string, plmr-user-action?: boolean, X-Request-ID?: string): { teams?: object[]; }`\n\n**get** `/api/v1/parties/{organisationPartyId}/teams`\n\nRetrieve a list of teams associated with the specified organisation party.\n\n\n### Parameters\n\n- `organisationPartyId: string`\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ teams?: { name?: string; teamId?: string; }[]; }`\n  Team response details\n\n  - `teams?: { name?: string; teamId?: string; }[]`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst teams = await client.parties.teams.list('6878951b-256b-4baa-9e81-ad4c577adc4e');\n\nconsole.log(teams);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.teams.list',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst teams = await client.parties.teams.list('6878951b-256b-4baa-9e81-ad4c577adc4e');\n\nconsole.log(teams.teams);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$ORGANISATION_PARTY_ID/teams \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().teams().list',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.teams.TeamListParams\nimport com.plumery.api.models.parties.teams.TeamListResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val teams: TeamListResponse = client.parties().teams().list("6878951b-256b-4baa-9e81-ad4c577adc4e")\n}',
      },
      java: {
        method: 'parties().teams().list',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.teams.TeamListParams;\nimport com.plumery.api.models.parties.teams.TeamListResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        TeamListResponse teams = client.parties().teams().list("6878951b-256b-4baa-9e81-ad4c577adc4e");\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/parties/{organisationPartyId}/teams/me',
    httpMethod: 'get',
    summary: 'Retrieve teams access',
    description:
      'Retrieve the detailed information of the active teams that the current has access to, in the context of the \nspecified organisation party.\n',
    stainlessPath: '(resource) parties.teams.me > (method) retrieve',
    qualified: 'client.parties.teams.me.retrieve',
    params: [
      'organisationPartyId: string;',
      'expandPermissions?: boolean;',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    response:
      "{ teams?: { context?: string; name?: string; permissions?: { action?: string; category?: string; resource?: string; }[]; role?: { name?: string; roleId?: string; }; status?: 'PENDING' | 'ACTIVE' | 'SUSPENDED'; teamId?: string; }[]; }",
    markdown:
      "## retrieve\n\n`client.parties.teams.me.retrieve(organisationPartyId: string, expandPermissions?: boolean, plmr-user-action?: boolean, X-Request-ID?: string): { teams?: object[]; }`\n\n**get** `/api/v1/parties/{organisationPartyId}/teams/me`\n\nRetrieve the detailed information of the active teams that the current has access to, in the context of the \nspecified organisation party.\n\n\n### Parameters\n\n- `organisationPartyId: string`\n\n- `expandPermissions?: boolean`\n  This parameter influences the information about roles provided in the response. If it is set to 'true', \nthe response will include permissions associated with each role. If 'false' or not provided, the response \nwill only include roles without their respective permissions.\n\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ teams?: { context?: string; name?: string; permissions?: { action?: string; category?: string; resource?: string; }[]; role?: { name?: string; roleId?: string; }; status?: 'PENDING' | 'ACTIVE' | 'SUSPENDED'; teamId?: string; }[]; }`\n  Represents a detailed contextual view of a user's access across all teams they are part of within an organisation.\n\n  - `teams?: { context?: string; name?: string; permissions?: { action?: string; category?: string; resource?: string; }[]; role?: { name?: string; roleId?: string; }; status?: 'PENDING' | 'ACTIVE' | 'SUSPENDED'; teamId?: string; }[]`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst me = await client.parties.teams.me.retrieve('6878951b-256b-4baa-9e81-ad4c577adc4e');\n\nconsole.log(me);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.teams.me.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst me = await client.parties.teams.me.retrieve('6878951b-256b-4baa-9e81-ad4c577adc4e');\n\nconsole.log(me.teams);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$ORGANISATION_PARTY_ID/teams/me \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().teams().me().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.teams.me.MeRetrieveParams\nimport com.plumery.api.models.parties.teams.me.MeRetrieveResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val me: MeRetrieveResponse = client.parties().teams().me().retrieve("6878951b-256b-4baa-9e81-ad4c577adc4e")\n}',
      },
      java: {
        method: 'parties().teams().me().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.teams.me.MeRetrieveParams;\nimport com.plumery.api.models.parties.teams.me.MeRetrieveResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        MeRetrieveResponse me = client.parties().teams().me().retrieve("6878951b-256b-4baa-9e81-ad4c577adc4e");\n    }\n}',
      },
    },
  },
  {
    name: 'list',
    endpoint: '/api/v1/parties/{organisationPartyId}/teams/{teamId}/members',
    httpMethod: 'get',
    summary: 'Retrieve team members',
    description: 'Retrieve a list of members associated with the specified team.\n',
    stainlessPath: '(resource) parties.teams.members > (method) list',
    qualified: 'client.parties.teams.members.list',
    params: [
      'organisationPartyId: string;',
      'teamId: string;',
      "status?: 'PENDING' | 'ACTIVE' | 'SUSPENDED'[];",
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    response:
      "{ members?: { memberId?: string; name?: string; role?: { name?: string; roleId?: string; }; status?: 'PENDING' | 'ACTIVE' | 'SUSPENDED'; }[]; }",
    markdown:
      "## list\n\n`client.parties.teams.members.list(organisationPartyId: string, teamId: string, status?: 'PENDING' | 'ACTIVE' | 'SUSPENDED'[], plmr-user-action?: boolean, X-Request-ID?: string): { members?: object[]; }`\n\n**get** `/api/v1/parties/{organisationPartyId}/teams/{teamId}/members`\n\nRetrieve a list of members associated with the specified team.\n\n\n### Parameters\n\n- `organisationPartyId: string`\n\n- `teamId: string`\n\n- `status?: 'PENDING' | 'ACTIVE' | 'SUSPENDED'[]`\n  Retrieve members matching a specific status (e.g., PENDING, ACTIVE, SUSPENDED). If unset, the filter will be \nignored and all team members will be retrieved.\n\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ members?: { memberId?: string; name?: string; role?: { name?: string; roleId?: string; }; status?: 'PENDING' | 'ACTIVE' | 'SUSPENDED'; }[]; }`\n  Team members response details\n\n  - `members?: { memberId?: string; name?: string; role?: { name?: string; roleId?: string; }; status?: 'PENDING' | 'ACTIVE' | 'SUSPENDED'; }[]`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst members = await client.parties.teams.members.list('ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31', { organisationPartyId: '6878951b-256b-4baa-9e81-ad4c577adc4e' });\n\nconsole.log(members);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.teams.members.list',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst members = await client.parties.teams.members.list('ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31', {\n  organisationPartyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n});\n\nconsole.log(members.members);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$ORGANISATION_PARTY_ID/teams/$TEAM_ID/members \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().teams().members().list',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.teams.members.MemberListParams\nimport com.plumery.api.models.parties.teams.members.MemberListResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: MemberListParams = MemberListParams.builder()\n        .organisationPartyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .teamId("ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31")\n        .build()\n    val members: MemberListResponse = client.parties().teams().members().list(params)\n}',
      },
      java: {
        method: 'parties().teams().members().list',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.teams.members.MemberListParams;\nimport com.plumery.api.models.parties.teams.members.MemberListResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        MemberListParams params = MemberListParams.builder()\n            .organisationPartyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .teamId("ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31")\n            .build();\n        MemberListResponse members = client.parties().teams().members().list(params);\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/parties/{organisationPartyId}/teams/{teamId}/members/{memberId}',
    httpMethod: 'get',
    summary: 'Retrieve team member details',
    description: 'Retrieve detailed information for a specified team member.\n',
    stainlessPath: '(resource) parties.teams.members > (method) retrieve',
    qualified: 'client.parties.teams.members.retrieve',
    params: [
      'organisationPartyId: string;',
      'teamId: string;',
      'memberId: string;',
      "details?: 'MEMBER' | 'CONTACT' | 'PERSONAL'[];",
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    response:
      "{ memberId?: string; name?: string; role?: { name?: string; roleId?: string; }; status?: 'PENDING' | 'ACTIVE' | 'SUSPENDED'; } | { contactInfo?: { emailAddress?: string; phoneNumber?: string; }; } | { personalInfo?: { dateOfBirth?: string; firstName?: string; lastName?: string; middleNames?: string; postalAddress?: { buildingName?: string; buildingNumber?: string; country?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }; preferredName?: string; registrationAddress?: { buildingName?: string; buildingNumber?: string; country?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }; }; }",
    markdown:
      "## retrieve\n\n`client.parties.teams.members.retrieve(organisationPartyId: string, teamId: string, memberId: string, details?: 'MEMBER' | 'CONTACT' | 'PERSONAL'[], plmr-user-action?: boolean, X-Request-ID?: string): { memberId?: string; name?: string; role?: object; status?: 'PENDING' | 'ACTIVE' | 'SUSPENDED'; } | { contactInfo?: object; } | { personalInfo?: object; }`\n\n**get** `/api/v1/parties/{organisationPartyId}/teams/{teamId}/members/{memberId}`\n\nRetrieve detailed information for a specified team member.\n\n\n### Parameters\n\n- `organisationPartyId: string`\n\n- `teamId: string`\n\n- `memberId: string`\n  Member unique identifier.\n\n- `details?: 'MEMBER' | 'CONTACT' | 'PERSONAL'[]`\n  Retrieve member details matching a specific level of detail. Different level of details might require\nelevated permissions.\n\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ memberId?: string; name?: string; role?: { name?: string; roleId?: string; }; status?: 'PENDING' | 'ACTIVE' | 'SUSPENDED'; } | { contactInfo?: { emailAddress?: string; phoneNumber?: string; }; } | { personalInfo?: { dateOfBirth?: string; firstName?: string; lastName?: string; middleNames?: string; postalAddress?: { buildingName?: string; buildingNumber?: string; country?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }; preferredName?: string; registrationAddress?: { buildingName?: string; buildingNumber?: string; country?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }; }; }`\n  Team member response details\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst member = await client.parties.teams.members.retrieve('4c3882fd-ac4c-41da-9bc0-4d5ce5f55727', { organisationPartyId: '6878951b-256b-4baa-9e81-ad4c577adc4e', teamId: 'ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31' });\n\nconsole.log(member);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.teams.members.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst member = await client.parties.teams.members.retrieve('4c3882fd-ac4c-41da-9bc0-4d5ce5f55727', {\n  organisationPartyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  teamId: 'ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31',\n});\n\nconsole.log(member);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$ORGANISATION_PARTY_ID/teams/$TEAM_ID/members/$MEMBER_ID \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().teams().members().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.teams.members.MemberRetrieveParams\nimport com.plumery.api.models.parties.teams.members.MemberRetrieveResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: MemberRetrieveParams = MemberRetrieveParams.builder()\n        .organisationPartyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .teamId("ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31")\n        .memberId("4c3882fd-ac4c-41da-9bc0-4d5ce5f55727")\n        .build()\n    val member: MemberRetrieveResponse = client.parties().teams().members().retrieve(params)\n}',
      },
      java: {
        method: 'parties().teams().members().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.teams.members.MemberRetrieveParams;\nimport com.plumery.api.models.parties.teams.members.MemberRetrieveResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        MemberRetrieveParams params = MemberRetrieveParams.builder()\n            .organisationPartyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .teamId("ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31")\n            .memberId("4c3882fd-ac4c-41da-9bc0-4d5ce5f55727")\n            .build();\n        MemberRetrieveResponse member = client.parties().teams().members().retrieve(params);\n    }\n}',
      },
    },
  },
  {
    name: 'suspend',
    endpoint: '/api/v1/parties/{organisationPartyId}/teams/{teamId}/members/{memberId}:suspend',
    httpMethod: 'post',
    summary: 'Suspend team member',
    description: 'Suspend a specified team member by revoking their team access.\n',
    stainlessPath: '(resource) parties.teams.members > (method) suspend',
    qualified: 'client.parties.teams.members.suspend',
    params: [
      'organisationPartyId: string;',
      'teamId: string;',
      'memberId: string;',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    markdown:
      "## suspend\n\n`client.parties.teams.members.suspend(organisationPartyId: string, teamId: string, memberId: string, plmr-user-action?: boolean, X-Request-ID?: string): void`\n\n**post** `/api/v1/parties/{organisationPartyId}/teams/{teamId}/members/{memberId}:suspend`\n\nSuspend a specified team member by revoking their team access.\n\n\n### Parameters\n\n- `organisationPartyId: string`\n\n- `teamId: string`\n\n- `memberId: string`\n  Member unique identifier.\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.teams.members.suspend('4c3882fd-ac4c-41da-9bc0-4d5ce5f55727', { organisationPartyId: '6878951b-256b-4baa-9e81-ad4c577adc4e', teamId: 'ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.teams.members.suspend',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.teams.members.suspend('4c3882fd-ac4c-41da-9bc0-4d5ce5f55727', {\n  organisationPartyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  teamId: 'ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$ORGANISATION_PARTY_ID/teams/$TEAM_ID/members/$MEMBER_ID:suspend \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().teams().members().suspend',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.teams.members.MemberSuspendParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: MemberSuspendParams = MemberSuspendParams.builder()\n        .organisationPartyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .teamId("ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31")\n        .memberId("4c3882fd-ac4c-41da-9bc0-4d5ce5f55727")\n        .build()\n    client.parties().teams().members().suspend(params)\n}',
      },
      java: {
        method: 'parties().teams().members().suspend',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.teams.members.MemberSuspendParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        MemberSuspendParams params = MemberSuspendParams.builder()\n            .organisationPartyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .teamId("ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31")\n            .memberId("4c3882fd-ac4c-41da-9bc0-4d5ce5f55727")\n            .build();\n        client.parties().teams().members().suspend(params);\n    }\n}',
      },
    },
  },
  {
    name: 'unsuspend',
    endpoint: '/api/v1/parties/{organisationPartyId}/teams/{teamId}/members/{memberId}:unsuspend',
    httpMethod: 'post',
    summary: 'Unsuspend team member',
    description: 'Unsuspend a specified team member by reinstating their team access.\n',
    stainlessPath: '(resource) parties.teams.members > (method) unsuspend',
    qualified: 'client.parties.teams.members.unsuspend',
    params: [
      'organisationPartyId: string;',
      'teamId: string;',
      'memberId: string;',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    markdown:
      "## unsuspend\n\n`client.parties.teams.members.unsuspend(organisationPartyId: string, teamId: string, memberId: string, plmr-user-action?: boolean, X-Request-ID?: string): void`\n\n**post** `/api/v1/parties/{organisationPartyId}/teams/{teamId}/members/{memberId}:unsuspend`\n\nUnsuspend a specified team member by reinstating their team access.\n\n\n### Parameters\n\n- `organisationPartyId: string`\n\n- `teamId: string`\n\n- `memberId: string`\n  Member unique identifier.\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.teams.members.unsuspend('4c3882fd-ac4c-41da-9bc0-4d5ce5f55727', { organisationPartyId: '6878951b-256b-4baa-9e81-ad4c577adc4e', teamId: 'ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.teams.members.unsuspend',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.teams.members.unsuspend('4c3882fd-ac4c-41da-9bc0-4d5ce5f55727', {\n  organisationPartyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  teamId: 'ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$ORGANISATION_PARTY_ID/teams/$TEAM_ID/members/$MEMBER_ID:unsuspend \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().teams().members().unsuspend',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.teams.members.MemberUnsuspendParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: MemberUnsuspendParams = MemberUnsuspendParams.builder()\n        .organisationPartyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .teamId("ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31")\n        .memberId("4c3882fd-ac4c-41da-9bc0-4d5ce5f55727")\n        .build()\n    client.parties().teams().members().unsuspend(params)\n}',
      },
      java: {
        method: 'parties().teams().members().unsuspend',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.teams.members.MemberUnsuspendParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        MemberUnsuspendParams params = MemberUnsuspendParams.builder()\n            .organisationPartyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .teamId("ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31")\n            .memberId("4c3882fd-ac4c-41da-9bc0-4d5ce5f55727")\n            .build();\n        client.parties().teams().members().unsuspend(params);\n    }\n}',
      },
    },
  },
  {
    name: 'updateRole',
    endpoint: '/api/v1/parties/{organisationPartyId}/teams/{teamId}/members/{memberId}:update-role',
    httpMethod: 'post',
    summary: 'Update team member role',
    description:
      'Update the role of a specified team member within the team. A member with the OWNER role assigned cannot\nbe updated to another role. The OWNER role is only revoked from a member when updating another member\nto have the OWNER role. In such scenario the original OWNER is relegated to the role identified by\n`fallbackRoleId`. Therefore `fallbackRoleId` is mandatory when `roleId` is the OWNER role, and must\nreference an existing role; it is ignored for any other `roleId`.\n',
    stainlessPath: '(resource) parties.teams.members > (method) updateRole',
    qualified: 'client.parties.teams.members.updateRole',
    params: [
      'organisationPartyId: string;',
      'teamId: string;',
      'memberId: string;',
      'roleId: string;',
      'fallbackRoleId?: string;',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    markdown:
      "## updateRole\n\n`client.parties.teams.members.updateRole(organisationPartyId: string, teamId: string, memberId: string, roleId: string, fallbackRoleId?: string, plmr-user-action?: boolean, X-Request-ID?: string): void`\n\n**post** `/api/v1/parties/{organisationPartyId}/teams/{teamId}/members/{memberId}:update-role`\n\nUpdate the role of a specified team member within the team. A member with the OWNER role assigned cannot\nbe updated to another role. The OWNER role is only revoked from a member when updating another member\nto have the OWNER role. In such scenario the original OWNER is relegated to the role identified by\n`fallbackRoleId`. Therefore `fallbackRoleId` is mandatory when `roleId` is the OWNER role, and must\nreference an existing role; it is ignored for any other `roleId`.\n\n\n### Parameters\n\n- `organisationPartyId: string`\n\n- `teamId: string`\n\n- `memberId: string`\n  Member unique identifier.\n\n- `roleId: string`\n  The stable role ID which will remain consistent even if the role's actual name is changed.\n\n- `fallbackRoleId?: string`\n  The stable role ID which will remain consistent even if the role's actual name is changed.\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.teams.members.updateRole('4c3882fd-ac4c-41da-9bc0-4d5ce5f55727', {\n  organisationPartyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  teamId: 'ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31',\n  roleId: '3e1250a2-742f-4808-a10a-b9bb8af32f53',\n})\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.teams.members.updateRole',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.teams.members.updateRole('4c3882fd-ac4c-41da-9bc0-4d5ce5f55727', {\n  organisationPartyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  teamId: 'ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31',\n  roleId: '3e1250a2-742f-4808-a10a-b9bb8af32f53',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$ORGANISATION_PARTY_ID/teams/$TEAM_ID/members/$MEMBER_ID:update-role \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "roleId": "3e1250a2-742f-4808-a10a-b9bb8af32f53",\n          "fallbackRoleId": "3e1250a2-742f-4808-a10a-b9bb8af32f53"\n        }\'',
      },
      kotlin: {
        method: 'parties().teams().members().updateRole',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.teams.members.MemberUpdateRoleParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: MemberUpdateRoleParams = MemberUpdateRoleParams.builder()\n        .organisationPartyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .teamId("ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31")\n        .memberId("4c3882fd-ac4c-41da-9bc0-4d5ce5f55727")\n        .roleId("3e1250a2-742f-4808-a10a-b9bb8af32f53")\n        .build()\n    client.parties().teams().members().updateRole(params)\n}',
      },
      java: {
        method: 'parties().teams().members().updateRole',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.teams.members.MemberUpdateRoleParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        MemberUpdateRoleParams params = MemberUpdateRoleParams.builder()\n            .organisationPartyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .teamId("ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31")\n            .memberId("4c3882fd-ac4c-41da-9bc0-4d5ce5f55727")\n            .roleId("3e1250a2-742f-4808-a10a-b9bb8af32f53")\n            .build();\n        client.parties().teams().members().updateRole(params);\n    }\n}',
      },
    },
  },
  {
    name: 'list',
    endpoint: '/api/v1/parties/{partyId}/teams/{teamId}/members/{memberId}/payment-limits',
    httpMethod: 'get',
    summary: 'Get Member Limit Profile',
    description: 'Retrieve the payment limit profile for a team member within an organisation party\n',
    stainlessPath: '(resource) parties.teams.members.payment-limits > (method) list',
    qualified: 'client.parties.teams.members.paymentLimits.list',
    params: ['partyId: string;', 'teamId: string;', 'memberId: string;', 'plmr-user-action?: boolean;'],
    response: '{ id: string; limits: { type: string; paymentTypes?: string[]; }[]; }',
    markdown:
      "## list\n\n`client.parties.teams.members.paymentLimits.list(partyId: string, teamId: string, memberId: string, plmr-user-action?: boolean): { id: string; limits: object[]; }`\n\n**get** `/api/v1/parties/{partyId}/teams/{teamId}/members/{memberId}/payment-limits`\n\nRetrieve the payment limit profile for a team member within an organisation party\n\n\n### Parameters\n\n- `partyId: string`\n\n- `teamId: string`\n\n- `memberId: string`\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ id: string; limits: { type: string; paymentTypes?: string[]; }[]; }`\n\n  - `id: string`\n  - `limits: { type: string; paymentTypes?: string[]; }[]`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst paymentLimits = await client.parties.teams.members.paymentLimits.list('8c3a2f0e-7b1d-4f6a-9c2e-1e6a2f0b8d3c', { partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e', teamId: 'c7068fec-0c6d-40bf-93fa-ad8ca8aeed4a' });\n\nconsole.log(paymentLimits);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.teams.members.paymentLimits.list',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst paymentLimits = await client.parties.teams.members.paymentLimits.list(\n  '8c3a2f0e-7b1d-4f6a-9c2e-1e6a2f0b8d3c',\n  {\n    partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n    teamId: 'c7068fec-0c6d-40bf-93fa-ad8ca8aeed4a',\n  },\n);\n\nconsole.log(paymentLimits.id);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/teams/$TEAM_ID/members/$MEMBER_ID/payment-limits \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().teams().members().paymentLimits().list',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.teams.members.paymentlimits.PaymentLimitListParams\nimport com.plumery.api.models.parties.teams.members.paymentlimits.PaymentLimitListResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: PaymentLimitListParams = PaymentLimitListParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .teamId("c7068fec-0c6d-40bf-93fa-ad8ca8aeed4a")\n        .memberId("8c3a2f0e-7b1d-4f6a-9c2e-1e6a2f0b8d3c")\n        .build()\n    val paymentLimits: PaymentLimitListResponse = client.parties().teams().members().paymentLimits().list(params)\n}',
      },
      java: {
        method: 'parties().teams().members().paymentLimits().list',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.teams.members.paymentlimits.PaymentLimitListParams;\nimport com.plumery.api.models.parties.teams.members.paymentlimits.PaymentLimitListResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        PaymentLimitListParams params = PaymentLimitListParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .teamId("c7068fec-0c6d-40bf-93fa-ad8ca8aeed4a")\n            .memberId("8c3a2f0e-7b1d-4f6a-9c2e-1e6a2f0b8d3c")\n            .build();\n        PaymentLimitListResponse paymentLimits = client.parties().teams().members().paymentLimits().list(params);\n    }\n}',
      },
    },
  },
  {
    name: 'update',
    endpoint: '/api/v1/parties/{partyId}/teams/{teamId}/members/{memberId}/payment-limits',
    httpMethod: 'put',
    summary: 'Replace Member Limit Profile',
    description:
      'Replace the payment limit profile for a team member within an organisation party\nSubmitting an empty `limits` array clears all member-level limits\n',
    stainlessPath: '(resource) parties.teams.members.payment-limits > (method) update',
    qualified: 'client.parties.teams.members.paymentLimits.update',
    params: [
      'partyId: string;',
      'teamId: string;',
      'memberId: string;',
      'limits: { type: string; paymentTypes?: string[]; }[];',
      'If-Match: string;',
      'plmr-user-action?: boolean;',
    ],
    markdown:
      "## update\n\n`client.parties.teams.members.paymentLimits.update(partyId: string, teamId: string, memberId: string, limits: { type: string; paymentTypes?: string[]; }[], If-Match: string, plmr-user-action?: boolean): void`\n\n**put** `/api/v1/parties/{partyId}/teams/{teamId}/members/{memberId}/payment-limits`\n\nReplace the payment limit profile for a team member within an organisation party\nSubmitting an empty `limits` array clears all member-level limits\n\n\n### Parameters\n\n- `partyId: string`\n\n- `teamId: string`\n\n- `memberId: string`\n\n- `limits: { type: string; paymentTypes?: string[]; }[]`\n\n- `If-Match: string`\n\n- `plmr-user-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.teams.members.paymentLimits.update('8c3a2f0e-7b1d-4f6a-9c2e-1e6a2f0b8d3c', {\n  partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  teamId: 'c7068fec-0c6d-40bf-93fa-ad8ca8aeed4a',\n  limits: [{ type: 'type' }],\n  'If-Match': '\"1\"',\n})\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.teams.members.paymentLimits.update',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.teams.members.paymentLimits.update('8c3a2f0e-7b1d-4f6a-9c2e-1e6a2f0b8d3c', {\n  partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  teamId: 'c7068fec-0c6d-40bf-93fa-ad8ca8aeed4a',\n  limits: [{ type: 'type' }],\n  'If-Match': '\"1\"',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/teams/$TEAM_ID/members/$MEMBER_ID/payment-limits \\\n    -X PUT \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "limits": [\n            {\n              "type": "type"\n            }\n          ]\n        }\'',
      },
      kotlin: {
        method: 'parties().teams().members().paymentLimits().update',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.teams.members.paymentlimits.PaymentLimitUpdateParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: PaymentLimitUpdateParams = PaymentLimitUpdateParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .teamId("c7068fec-0c6d-40bf-93fa-ad8ca8aeed4a")\n        .memberId("8c3a2f0e-7b1d-4f6a-9c2e-1e6a2f0b8d3c")\n        .ifMatch("\\"1\\"")\n        .addLimit(PaymentLimitUpdateParams.Limit.builder()\n            .type("type")\n            .build())\n        .build()\n    client.parties().teams().members().paymentLimits().update(params)\n}',
      },
      java: {
        method: 'parties().teams().members().paymentLimits().update',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.teams.members.paymentlimits.PaymentLimitUpdateParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        PaymentLimitUpdateParams params = PaymentLimitUpdateParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .teamId("c7068fec-0c6d-40bf-93fa-ad8ca8aeed4a")\n            .memberId("8c3a2f0e-7b1d-4f6a-9c2e-1e6a2f0b8d3c")\n            .ifMatch("\\"1\\"")\n            .addLimit(PaymentLimitUpdateParams.Limit.builder()\n                .type("type")\n                .build())\n            .build();\n        client.parties().teams().members().paymentLimits().update(params);\n    }\n}',
      },
    },
  },
  {
    name: 'create',
    endpoint: '/api/v1/parties/{organisationPartyId}/teams/{teamId}/invitations',
    httpMethod: 'post',
    summary: 'Send invitation',
    description:
      'Send an invitation to new or existing user to join the specific team. The invitation cannot be\nsent with an OWNER role requested as only existing members can be updated to have the OWNER role assigned.\n',
    stainlessPath: '(resource) parties.teams.invitations > (method) create',
    qualified: 'client.parties.teams.invitations.create',
    params: [
      'organisationPartyId: string;',
      'teamId: string;',
      "delivery?: { destination?: string; method?: 'EMAIL'; };",
      'roleId?: string;',
      'plmr-user-action?: boolean;',
    ],
    response:
      "{ delivery?: { destination?: string; method?: 'EMAIL'; }; invitationId?: string; issuerMemberId?: string; role?: { name?: string; roleId?: string; }; status?: 'PENDING_APPROVAL' | 'PENDING' | 'ACCEPTED' | 'REVOKED' | 'REJECTED' | 'EXPIRED'; statusDateTime?: string; }",
    markdown:
      "## create\n\n`client.parties.teams.invitations.create(organisationPartyId: string, teamId: string, delivery?: { destination?: string; method?: 'EMAIL'; }, roleId?: string, plmr-user-action?: boolean): { delivery?: object; invitationId?: string; issuerMemberId?: string; role?: object; status?: 'PENDING_APPROVAL' | 'PENDING' | 'ACCEPTED' | 'REVOKED' | 'REJECTED' | 'EXPIRED'; statusDateTime?: string; }`\n\n**post** `/api/v1/parties/{organisationPartyId}/teams/{teamId}/invitations`\n\nSend an invitation to new or existing user to join the specific team. The invitation cannot be\nsent with an OWNER role requested as only existing members can be updated to have the OWNER role assigned.\n\n\n### Parameters\n\n- `organisationPartyId: string`\n\n- `teamId: string`\n\n- `delivery?: { destination?: string; method?: 'EMAIL'; }`\n  Details about the delivery method and destination of an invitation.\n  - `destination?: string`\n    The specific destination (email or phone number) where the invitation was sent.\n  - `method?: 'EMAIL'`\n    The method used to deliver the invitation.\n\n- `roleId?: string`\n  The stable role ID which will remain consistent even if the role's actual name is changed.\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ delivery?: { destination?: string; method?: 'EMAIL'; }; invitationId?: string; issuerMemberId?: string; role?: { name?: string; roleId?: string; }; status?: 'PENDING_APPROVAL' | 'PENDING' | 'ACCEPTED' | 'REVOKED' | 'REJECTED' | 'EXPIRED'; statusDateTime?: string; }`\n  Represents information on the invite to join the team, if available. This information will not be populated if \nthe system created the member without an invitation.\n\n\n  - `delivery?: { destination?: string; method?: 'EMAIL'; }`\n  - `invitationId?: string`\n  - `issuerMemberId?: string`\n  - `role?: { name?: string; roleId?: string; }`\n  - `status?: 'PENDING_APPROVAL' | 'PENDING' | 'ACCEPTED' | 'REVOKED' | 'REJECTED' | 'EXPIRED'`\n  - `statusDateTime?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst invitation = await client.parties.teams.invitations.create('ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31', { organisationPartyId: '6878951b-256b-4baa-9e81-ad4c577adc4e' });\n\nconsole.log(invitation);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.teams.invitations.create',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst invitation = await client.parties.teams.invitations.create(\n  'ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31',\n  { organisationPartyId: '6878951b-256b-4baa-9e81-ad4c577adc4e' },\n);\n\nconsole.log(invitation.delivery);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$ORGANISATION_PARTY_ID/teams/$TEAM_ID/invitations \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().teams().invitations().create',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.teams.invitations.InvitationCreateParams\nimport com.plumery.api.models.parties.teams.invitations.InvitationCreateResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: InvitationCreateParams = InvitationCreateParams.builder()\n        .organisationPartyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .teamId("ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31")\n        .build()\n    val invitation: InvitationCreateResponse = client.parties().teams().invitations().create(params)\n}',
      },
      java: {
        method: 'parties().teams().invitations().create',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.teams.invitations.InvitationCreateParams;\nimport com.plumery.api.models.parties.teams.invitations.InvitationCreateResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        InvitationCreateParams params = InvitationCreateParams.builder()\n            .organisationPartyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .teamId("ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31")\n            .build();\n        InvitationCreateResponse invitation = client.parties().teams().invitations().create(params);\n    }\n}',
      },
    },
  },
  {
    name: 'list',
    endpoint: '/api/v1/parties/{organisationPartyId}/teams/{teamId}/invitations',
    httpMethod: 'get',
    summary: 'Retrieve invitations',
    description: 'Retrieve a list of invitations associated with the specified team.\n',
    stainlessPath: '(resource) parties.teams.invitations > (method) list',
    qualified: 'client.parties.teams.invitations.list',
    params: [
      'organisationPartyId: string;',
      'teamId: string;',
      "status?: 'PENDING_APPROVAL' | 'PENDING' | 'ACCEPTED' | 'REVOKED' | 'REJECTED' | 'EXPIRED'[];",
      'plmr-user-action?: boolean;',
    ],
    response:
      "{ invitations?: { delivery?: { destination?: string; method?: 'EMAIL'; }; invitationId?: string; issuerMemberId?: string; role?: { name?: string; roleId?: string; }; status?: 'PENDING_APPROVAL' | 'PENDING' | 'ACCEPTED' | 'REVOKED' | 'REJECTED' | 'EXPIRED'; statusDateTime?: string; }[]; }",
    markdown:
      "## list\n\n`client.parties.teams.invitations.list(organisationPartyId: string, teamId: string, status?: 'PENDING_APPROVAL' | 'PENDING' | 'ACCEPTED' | 'REVOKED' | 'REJECTED' | 'EXPIRED'[], plmr-user-action?: boolean): { invitations?: object[]; }`\n\n**get** `/api/v1/parties/{organisationPartyId}/teams/{teamId}/invitations`\n\nRetrieve a list of invitations associated with the specified team.\n\n\n### Parameters\n\n- `organisationPartyId: string`\n\n- `teamId: string`\n\n- `status?: 'PENDING_APPROVAL' | 'PENDING' | 'ACCEPTED' | 'REVOKED' | 'REJECTED' | 'EXPIRED'[]`\n  Retrieve invitations matching a specific status (e.g., PENDING, EXPIRED). If unset, the filter will be ignored \nand all invitations will be retrieved.\n\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ invitations?: { delivery?: { destination?: string; method?: 'EMAIL'; }; invitationId?: string; issuerMemberId?: string; role?: { name?: string; roleId?: string; }; status?: 'PENDING_APPROVAL' | 'PENDING' | 'ACCEPTED' | 'REVOKED' | 'REJECTED' | 'EXPIRED'; statusDateTime?: string; }[]; }`\n  Invitations response details\n\n  - `invitations?: { delivery?: { destination?: string; method?: 'EMAIL'; }; invitationId?: string; issuerMemberId?: string; role?: { name?: string; roleId?: string; }; status?: 'PENDING_APPROVAL' | 'PENDING' | 'ACCEPTED' | 'REVOKED' | 'REJECTED' | 'EXPIRED'; statusDateTime?: string; }[]`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst invitations = await client.parties.teams.invitations.list('ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31', { organisationPartyId: '6878951b-256b-4baa-9e81-ad4c577adc4e' });\n\nconsole.log(invitations);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.teams.invitations.list',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst invitations = await client.parties.teams.invitations.list(\n  'ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31',\n  { organisationPartyId: '6878951b-256b-4baa-9e81-ad4c577adc4e' },\n);\n\nconsole.log(invitations.invitations);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$ORGANISATION_PARTY_ID/teams/$TEAM_ID/invitations \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().teams().invitations().list',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.teams.invitations.InvitationListParams\nimport com.plumery.api.models.parties.teams.invitations.InvitationListResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: InvitationListParams = InvitationListParams.builder()\n        .organisationPartyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .teamId("ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31")\n        .build()\n    val invitations: InvitationListResponse = client.parties().teams().invitations().list(params)\n}',
      },
      java: {
        method: 'parties().teams().invitations().list',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.teams.invitations.InvitationListParams;\nimport com.plumery.api.models.parties.teams.invitations.InvitationListResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        InvitationListParams params = InvitationListParams.builder()\n            .organisationPartyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .teamId("ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31")\n            .build();\n        InvitationListResponse invitations = client.parties().teams().invitations().list(params);\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/parties/{organisationPartyId}/teams/{teamId}/invitations/{invitationId}',
    httpMethod: 'get',
    summary: 'Retrieve invitation',
    description: 'Retrieve a detailed information of a specified invitation\n',
    stainlessPath: '(resource) parties.teams.invitations > (method) retrieve',
    qualified: 'client.parties.teams.invitations.retrieve',
    params: [
      'organisationPartyId: string;',
      'teamId: string;',
      'invitationId: string;',
      'plmr-user-action?: boolean;',
    ],
    response:
      "{ delivery?: { destination?: string; method?: 'EMAIL'; }; invitationId?: string; issuerMemberId?: string; role?: { name?: string; roleId?: string; }; status?: 'PENDING_APPROVAL' | 'PENDING' | 'ACCEPTED' | 'REVOKED' | 'REJECTED' | 'EXPIRED'; statusDateTime?: string; }",
    markdown:
      "## retrieve\n\n`client.parties.teams.invitations.retrieve(organisationPartyId: string, teamId: string, invitationId: string, plmr-user-action?: boolean): { delivery?: object; invitationId?: string; issuerMemberId?: string; role?: object; status?: 'PENDING_APPROVAL' | 'PENDING' | 'ACCEPTED' | 'REVOKED' | 'REJECTED' | 'EXPIRED'; statusDateTime?: string; }`\n\n**get** `/api/v1/parties/{organisationPartyId}/teams/{teamId}/invitations/{invitationId}`\n\nRetrieve a detailed information of a specified invitation\n\n\n### Parameters\n\n- `organisationPartyId: string`\n\n- `teamId: string`\n\n- `invitationId: string`\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ delivery?: { destination?: string; method?: 'EMAIL'; }; invitationId?: string; issuerMemberId?: string; role?: { name?: string; roleId?: string; }; status?: 'PENDING_APPROVAL' | 'PENDING' | 'ACCEPTED' | 'REVOKED' | 'REJECTED' | 'EXPIRED'; statusDateTime?: string; }`\n  Represents information on the invite to join the team, if available. This information will not be populated if \nthe system created the member without an invitation.\n\n\n  - `delivery?: { destination?: string; method?: 'EMAIL'; }`\n  - `invitationId?: string`\n  - `issuerMemberId?: string`\n  - `role?: { name?: string; roleId?: string; }`\n  - `status?: 'PENDING_APPROVAL' | 'PENDING' | 'ACCEPTED' | 'REVOKED' | 'REJECTED' | 'EXPIRED'`\n  - `statusDateTime?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst invitation = await client.parties.teams.invitations.retrieve('1adcdcc1-e39e-4fd0-91d7-22a606c25622', { organisationPartyId: '6878951b-256b-4baa-9e81-ad4c577adc4e', teamId: 'ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31' });\n\nconsole.log(invitation);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.teams.invitations.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst invitation = await client.parties.teams.invitations.retrieve(\n  '1adcdcc1-e39e-4fd0-91d7-22a606c25622',\n  {\n    organisationPartyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n    teamId: 'ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31',\n  },\n);\n\nconsole.log(invitation.delivery);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$ORGANISATION_PARTY_ID/teams/$TEAM_ID/invitations/$INVITATION_ID \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().teams().invitations().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.teams.invitations.InvitationRetrieveParams\nimport com.plumery.api.models.parties.teams.invitations.InvitationRetrieveResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: InvitationRetrieveParams = InvitationRetrieveParams.builder()\n        .organisationPartyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .teamId("ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31")\n        .invitationId("1adcdcc1-e39e-4fd0-91d7-22a606c25622")\n        .build()\n    val invitation: InvitationRetrieveResponse = client.parties().teams().invitations().retrieve(params)\n}',
      },
      java: {
        method: 'parties().teams().invitations().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.teams.invitations.InvitationRetrieveParams;\nimport com.plumery.api.models.parties.teams.invitations.InvitationRetrieveResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        InvitationRetrieveParams params = InvitationRetrieveParams.builder()\n            .organisationPartyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .teamId("ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31")\n            .invitationId("1adcdcc1-e39e-4fd0-91d7-22a606c25622")\n            .build();\n        InvitationRetrieveResponse invitation = client.parties().teams().invitations().retrieve(params);\n    }\n}',
      },
    },
  },
  {
    name: 'resend',
    endpoint: '/api/v1/parties/{organisationPartyId}/teams/{teamId}/invitations/{invitationId}:resend',
    httpMethod: 'post',
    summary: 'Resend invitation',
    description:
      'Resend already existing invitation. This operation can only be called for invitations with status PENDING. Will \nreturn BadRequest for other invitation statuses.\n',
    stainlessPath: '(resource) parties.teams.invitations > (method) resend',
    qualified: 'client.parties.teams.invitations.resend',
    params: [
      'organisationPartyId: string;',
      'teamId: string;',
      'invitationId: string;',
      'plmr-user-action?: boolean;',
    ],
    markdown:
      "## resend\n\n`client.parties.teams.invitations.resend(organisationPartyId: string, teamId: string, invitationId: string, plmr-user-action?: boolean): void`\n\n**post** `/api/v1/parties/{organisationPartyId}/teams/{teamId}/invitations/{invitationId}:resend`\n\nResend already existing invitation. This operation can only be called for invitations with status PENDING. Will \nreturn BadRequest for other invitation statuses.\n\n\n### Parameters\n\n- `organisationPartyId: string`\n\n- `teamId: string`\n\n- `invitationId: string`\n\n- `plmr-user-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.teams.invitations.resend('1adcdcc1-e39e-4fd0-91d7-22a606c25622', { organisationPartyId: '6878951b-256b-4baa-9e81-ad4c577adc4e', teamId: 'ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.teams.invitations.resend',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.teams.invitations.resend('1adcdcc1-e39e-4fd0-91d7-22a606c25622', {\n  organisationPartyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  teamId: 'ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$ORGANISATION_PARTY_ID/teams/$TEAM_ID/invitations/$INVITATION_ID:resend \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().teams().invitations().resend',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.teams.invitations.InvitationResendParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: InvitationResendParams = InvitationResendParams.builder()\n        .organisationPartyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .teamId("ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31")\n        .invitationId("1adcdcc1-e39e-4fd0-91d7-22a606c25622")\n        .build()\n    client.parties().teams().invitations().resend(params)\n}',
      },
      java: {
        method: 'parties().teams().invitations().resend',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.teams.invitations.InvitationResendParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        InvitationResendParams params = InvitationResendParams.builder()\n            .organisationPartyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .teamId("ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31")\n            .invitationId("1adcdcc1-e39e-4fd0-91d7-22a606c25622")\n            .build();\n        client.parties().teams().invitations().resend(params);\n    }\n}',
      },
    },
  },
  {
    name: 'revoke',
    endpoint: '/api/v1/parties/{organisationPartyId}/teams/{teamId}/invitations/{invitationId}:revoke',
    httpMethod: 'post',
    summary: 'Revoke invitation',
    description:
      'Revoke invitation that is already sent. This operation can only be called for invitations with status PENDING. \nWill return BadRequest for other invitation statuses.\n',
    stainlessPath: '(resource) parties.teams.invitations > (method) revoke',
    qualified: 'client.parties.teams.invitations.revoke',
    params: [
      'organisationPartyId: string;',
      'teamId: string;',
      'invitationId: string;',
      'plmr-user-action?: boolean;',
    ],
    markdown:
      "## revoke\n\n`client.parties.teams.invitations.revoke(organisationPartyId: string, teamId: string, invitationId: string, plmr-user-action?: boolean): void`\n\n**post** `/api/v1/parties/{organisationPartyId}/teams/{teamId}/invitations/{invitationId}:revoke`\n\nRevoke invitation that is already sent. This operation can only be called for invitations with status PENDING. \nWill return BadRequest for other invitation statuses.\n\n\n### Parameters\n\n- `organisationPartyId: string`\n\n- `teamId: string`\n\n- `invitationId: string`\n\n- `plmr-user-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.teams.invitations.revoke('1adcdcc1-e39e-4fd0-91d7-22a606c25622', { organisationPartyId: '6878951b-256b-4baa-9e81-ad4c577adc4e', teamId: 'ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.teams.invitations.revoke',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.teams.invitations.revoke('1adcdcc1-e39e-4fd0-91d7-22a606c25622', {\n  organisationPartyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  teamId: 'ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$ORGANISATION_PARTY_ID/teams/$TEAM_ID/invitations/$INVITATION_ID:revoke \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().teams().invitations().revoke',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.teams.invitations.InvitationRevokeParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: InvitationRevokeParams = InvitationRevokeParams.builder()\n        .organisationPartyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .teamId("ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31")\n        .invitationId("1adcdcc1-e39e-4fd0-91d7-22a606c25622")\n        .build()\n    client.parties().teams().invitations().revoke(params)\n}',
      },
      java: {
        method: 'parties().teams().invitations().revoke',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.teams.invitations.InvitationRevokeParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        InvitationRevokeParams params = InvitationRevokeParams.builder()\n            .organisationPartyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .teamId("ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31")\n            .invitationId("1adcdcc1-e39e-4fd0-91d7-22a606c25622")\n            .build();\n        client.parties().teams().invitations().revoke(params);\n    }\n}',
      },
    },
  },
  {
    name: 'list',
    endpoint: '/api/v1/parties/{organisationPartyId}/teams/{teamId}/approval-processes',
    httpMethod: 'get',
    summary: 'Get approval processes for a team',
    description: 'Get approval processes for a team',
    stainlessPath: '(resource) parties.teams.approval-processes > (method) list',
    qualified: 'client.parties.teams.approvalProcesses.list',
    params: [
      'organisationPartyId: string;',
      'teamId: string;',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    response:
      '{ items?: { id: string; approvalProcessType: string; orderedRules: { approvalsRequired: object[]; condition?: string; initiatorRoles?: string[]; }[]; }[]; }',
    markdown:
      "## list\n\n`client.parties.teams.approvalProcesses.list(organisationPartyId: string, teamId: string, plmr-user-action?: boolean, X-Request-ID?: string): { items?: object[]; }`\n\n**get** `/api/v1/parties/{organisationPartyId}/teams/{teamId}/approval-processes`\n\nGet approval processes for a team\n\n### Parameters\n\n- `organisationPartyId: string`\n\n- `teamId: string`\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ items?: { id: string; approvalProcessType: string; orderedRules: { approvalsRequired: object[]; condition?: string; initiatorRoles?: string[]; }[]; }[]; }`\n\n  - `items?: { id: string; approvalProcessType: string; orderedRules: { approvalsRequired: { numberOfApprovals: number; roles: string[]; }[]; condition?: string; initiatorRoles?: string[]; }[]; }[]`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst approvalProcesses = await client.parties.teams.approvalProcesses.list('teamId', { organisationPartyId: 'organisationPartyId' });\n\nconsole.log(approvalProcesses);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.teams.approvalProcesses.list',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst approvalProcesses = await client.parties.teams.approvalProcesses.list('teamId', {\n  organisationPartyId: 'organisationPartyId',\n});\n\nconsole.log(approvalProcesses.items);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$ORGANISATION_PARTY_ID/teams/$TEAM_ID/approval-processes \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().teams().approvalProcesses().list',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.teams.approvalprocesses.ApprovalProcessListParams\nimport com.plumery.api.models.parties.teams.approvalprocesses.ApprovalProcessListResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: ApprovalProcessListParams = ApprovalProcessListParams.builder()\n        .organisationPartyId("organisationPartyId")\n        .teamId("teamId")\n        .build()\n    val approvalProcesses: ApprovalProcessListResponse = client.parties().teams().approvalProcesses().list(params)\n}',
      },
      java: {
        method: 'parties().teams().approvalProcesses().list',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.teams.approvalprocesses.ApprovalProcessListParams;\nimport com.plumery.api.models.parties.teams.approvalprocesses.ApprovalProcessListResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        ApprovalProcessListParams params = ApprovalProcessListParams.builder()\n            .organisationPartyId("organisationPartyId")\n            .teamId("teamId")\n            .build();\n        ApprovalProcessListResponse approvalProcesses = client.parties().teams().approvalProcesses().list(params);\n    }\n}',
      },
    },
  },
  {
    name: 'create',
    endpoint: '/api/v1/parties/{organisationPartyId}/teams/{teamId}/approval-processes',
    httpMethod: 'post',
    summary: 'Create a new approval process',
    description: 'Create a new approval process',
    stainlessPath: '(resource) parties.teams.approval-processes > (method) create',
    qualified: 'client.parties.teams.approvalProcesses.create',
    params: [
      'organisationPartyId: string;',
      'teamId: string;',
      'approvalProcessType: string;',
      'orderedRules: { approvalsRequired: { numberOfApprovals: number; roles: string[]; }[]; condition?: string; initiatorRoles?: string[]; }[];',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    markdown:
      "## create\n\n`client.parties.teams.approvalProcesses.create(organisationPartyId: string, teamId: string, approvalProcessType: string, orderedRules: { approvalsRequired: { numberOfApprovals: number; roles: string[]; }[]; condition?: string; initiatorRoles?: string[]; }[], plmr-user-action?: boolean, X-Request-ID?: string): void`\n\n**post** `/api/v1/parties/{organisationPartyId}/teams/{teamId}/approval-processes`\n\nCreate a new approval process\n\n### Parameters\n\n- `organisationPartyId: string`\n\n- `teamId: string`\n\n- `approvalProcessType: string`\n  The type of approval process, used to determine which rules apply. There may only be one approval process per process type for a team. \n\nThe type may be custom if custom capabilities that require team approvals are used within the environment.\nCurrently the following predefined types are available for use with Plumery capabilities:\n* **`PAYMENT_INITIATION`**\n\n\n- `orderedRules: { approvalsRequired: { numberOfApprovals: number; roles: string[]; }[]; condition?: string; initiatorRoles?: string[]; }[]`\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.teams.approvalProcesses.create('teamId', {\n  organisationPartyId: 'organisationPartyId',\n  approvalProcessType: 'CAPABILITY_ACTION',\n  orderedRules: [{ approvalsRequired: [{ numberOfApprovals: 1, roles: ['3227ebb9-148a-467f-a13b-87424b996eeb', '2b761bf6-4322-42fa-8ac0-098b3cca819c'] }] }],\n})\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.teams.approvalProcesses.create',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.teams.approvalProcesses.create('teamId', {\n  organisationPartyId: 'organisationPartyId',\n  approvalProcessType: 'CAPABILITY_ACTION',\n  orderedRules: [\n    {\n      approvalsRequired: [\n        {\n          numberOfApprovals: 1,\n          roles: ['3227ebb9-148a-467f-a13b-87424b996eeb', '2b761bf6-4322-42fa-8ac0-098b3cca819c'],\n        },\n      ],\n    },\n  ],\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$ORGANISATION_PARTY_ID/teams/$TEAM_ID/approval-processes \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "approvalProcessType": "CAPABILITY_ACTION",\n          "orderedRules": [\n            {\n              "approvalsRequired": [\n                {\n                  "numberOfApprovals": 1,\n                  "roles": [\n                    "3227ebb9-148a-467f-a13b-87424b996eeb",\n                    "2b761bf6-4322-42fa-8ac0-098b3cca819c"\n                  ]\n                }\n              ]\n            }\n          ]\n        }\'',
      },
      kotlin: {
        method: 'parties().teams().approvalProcesses().create',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.teams.approvalprocesses.ApprovalProcessCreateParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: ApprovalProcessCreateParams = ApprovalProcessCreateParams.builder()\n        .organisationPartyId("organisationPartyId")\n        .teamId("teamId")\n        .approvalProcessType("CAPABILITY_ACTION")\n        .addOrderedRule(ApprovalProcessCreateParams.OrderedRule.builder()\n            .addApprovalsRequired(ApprovalProcessCreateParams.OrderedRule.ApprovalsRequired.builder()\n                .numberOfApprovals(1L)\n                .addRole("3227ebb9-148a-467f-a13b-87424b996eeb")\n                .addRole("2b761bf6-4322-42fa-8ac0-098b3cca819c")\n                .build())\n            .build())\n        .build()\n    client.parties().teams().approvalProcesses().create(params)\n}',
      },
      java: {
        method: 'parties().teams().approvalProcesses().create',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.teams.approvalprocesses.ApprovalProcessCreateParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        ApprovalProcessCreateParams params = ApprovalProcessCreateParams.builder()\n            .organisationPartyId("organisationPartyId")\n            .teamId("teamId")\n            .approvalProcessType("CAPABILITY_ACTION")\n            .addOrderedRule(ApprovalProcessCreateParams.OrderedRule.builder()\n                .addApprovalsRequired(ApprovalProcessCreateParams.OrderedRule.ApprovalsRequired.builder()\n                    .numberOfApprovals(1L)\n                    .addRole("3227ebb9-148a-467f-a13b-87424b996eeb")\n                    .addRole("2b761bf6-4322-42fa-8ac0-098b3cca819c")\n                    .build())\n                .build())\n            .build();\n        client.parties().teams().approvalProcesses().create(params);\n    }\n}',
      },
    },
  },
  {
    name: 'update',
    endpoint: '/api/v1/parties/{organisationPartyId}/teams/{teamId}/approval-processes/{processId}',
    httpMethod: 'put',
    summary: 'Update an existing approval process',
    description:
      'Updates the configuration of an existing approval process. All configurable properties\ncan be updated except for the `approvalProcessType`, which is immutable.\n\nThe updated configuration is applied to new approval requests created after the change.\nApproval requests already in progress continue using the configuration that applied when\nthey were created.\n',
    stainlessPath: '(resource) parties.teams.approval-processes > (method) update',
    qualified: 'client.parties.teams.approvalProcesses.update',
    params: [
      'organisationPartyId: string;',
      'teamId: string;',
      'processId: string;',
      'orderedRules: { approvalsRequired: { numberOfApprovals: number; roles: string[]; }[]; condition?: string; initiatorRoles?: string[]; }[];',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    markdown:
      "## update\n\n`client.parties.teams.approvalProcesses.update(organisationPartyId: string, teamId: string, processId: string, orderedRules: { approvalsRequired: { numberOfApprovals: number; roles: string[]; }[]; condition?: string; initiatorRoles?: string[]; }[], plmr-user-action?: boolean, X-Request-ID?: string): void`\n\n**put** `/api/v1/parties/{organisationPartyId}/teams/{teamId}/approval-processes/{processId}`\n\nUpdates the configuration of an existing approval process. All configurable properties\ncan be updated except for the `approvalProcessType`, which is immutable.\n\nThe updated configuration is applied to new approval requests created after the change.\nApproval requests already in progress continue using the configuration that applied when\nthey were created.\n\n\n### Parameters\n\n- `organisationPartyId: string`\n\n- `teamId: string`\n\n- `processId: string`\n\n- `orderedRules: { approvalsRequired: { numberOfApprovals: number; roles: string[]; }[]; condition?: string; initiatorRoles?: string[]; }[]`\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.teams.approvalProcesses.update('processId', {\n  organisationPartyId: 'organisationPartyId',\n  teamId: 'teamId',\n  orderedRules: [{ approvalsRequired: [{ numberOfApprovals: 1, roles: ['3227ebb9-148a-467f-a13b-87424b996eeb', '2b761bf6-4322-42fa-8ac0-098b3cca819c'] }] }],\n})\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.teams.approvalProcesses.update',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.teams.approvalProcesses.update('processId', {\n  organisationPartyId: 'organisationPartyId',\n  teamId: 'teamId',\n  orderedRules: [\n    {\n      approvalsRequired: [\n        {\n          numberOfApprovals: 1,\n          roles: ['3227ebb9-148a-467f-a13b-87424b996eeb', '2b761bf6-4322-42fa-8ac0-098b3cca819c'],\n        },\n      ],\n    },\n  ],\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$ORGANISATION_PARTY_ID/teams/$TEAM_ID/approval-processes/$PROCESS_ID \\\n    -X PUT \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "orderedRules": [\n            {\n              "approvalsRequired": [\n                {\n                  "numberOfApprovals": 1,\n                  "roles": [\n                    "3227ebb9-148a-467f-a13b-87424b996eeb",\n                    "2b761bf6-4322-42fa-8ac0-098b3cca819c"\n                  ]\n                }\n              ]\n            }\n          ]\n        }\'',
      },
      kotlin: {
        method: 'parties().teams().approvalProcesses().update',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.teams.approvalprocesses.ApprovalProcessUpdateParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: ApprovalProcessUpdateParams = ApprovalProcessUpdateParams.builder()\n        .organisationPartyId("organisationPartyId")\n        .teamId("teamId")\n        .processId("processId")\n        .addOrderedRule(ApprovalProcessUpdateParams.OrderedRule.builder()\n            .addApprovalsRequired(ApprovalProcessUpdateParams.OrderedRule.ApprovalsRequired.builder()\n                .numberOfApprovals(1L)\n                .addRole("3227ebb9-148a-467f-a13b-87424b996eeb")\n                .addRole("2b761bf6-4322-42fa-8ac0-098b3cca819c")\n                .build())\n            .build())\n        .build()\n    client.parties().teams().approvalProcesses().update(params)\n}',
      },
      java: {
        method: 'parties().teams().approvalProcesses().update',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.teams.approvalprocesses.ApprovalProcessUpdateParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        ApprovalProcessUpdateParams params = ApprovalProcessUpdateParams.builder()\n            .organisationPartyId("organisationPartyId")\n            .teamId("teamId")\n            .processId("processId")\n            .addOrderedRule(ApprovalProcessUpdateParams.OrderedRule.builder()\n                .addApprovalsRequired(ApprovalProcessUpdateParams.OrderedRule.ApprovalsRequired.builder()\n                    .numberOfApprovals(1L)\n                    .addRole("3227ebb9-148a-467f-a13b-87424b996eeb")\n                    .addRole("2b761bf6-4322-42fa-8ac0-098b3cca819c")\n                    .build())\n                .build())\n            .build();\n        client.parties().teams().approvalProcesses().update(params);\n    }\n}',
      },
    },
  },
  {
    name: 'delete',
    endpoint: '/api/v1/parties/{organisationPartyId}/teams/{teamId}/approval-processes/{processId}',
    httpMethod: 'delete',
    summary: 'Delete an approval process',
    description: 'Delete an approval process',
    stainlessPath: '(resource) parties.teams.approval-processes > (method) delete',
    qualified: 'client.parties.teams.approvalProcesses.delete',
    params: [
      'organisationPartyId: string;',
      'teamId: string;',
      'processId: string;',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    markdown:
      "## delete\n\n`client.parties.teams.approvalProcesses.delete(organisationPartyId: string, teamId: string, processId: string, plmr-user-action?: boolean, X-Request-ID?: string): void`\n\n**delete** `/api/v1/parties/{organisationPartyId}/teams/{teamId}/approval-processes/{processId}`\n\nDelete an approval process\n\n### Parameters\n\n- `organisationPartyId: string`\n\n- `teamId: string`\n\n- `processId: string`\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.teams.approvalProcesses.delete('processId', { organisationPartyId: 'organisationPartyId', teamId: 'teamId' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.teams.approvalProcesses.delete',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.teams.approvalProcesses.delete('processId', {\n  organisationPartyId: 'organisationPartyId',\n  teamId: 'teamId',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$ORGANISATION_PARTY_ID/teams/$TEAM_ID/approval-processes/$PROCESS_ID \\\n    -X DELETE \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().teams().approvalProcesses().delete',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.teams.approvalprocesses.ApprovalProcessDeleteParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: ApprovalProcessDeleteParams = ApprovalProcessDeleteParams.builder()\n        .organisationPartyId("organisationPartyId")\n        .teamId("teamId")\n        .processId("processId")\n        .build()\n    client.parties().teams().approvalProcesses().delete(params)\n}',
      },
      java: {
        method: 'parties().teams().approvalProcesses().delete',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.teams.approvalprocesses.ApprovalProcessDeleteParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        ApprovalProcessDeleteParams params = ApprovalProcessDeleteParams.builder()\n            .organisationPartyId("organisationPartyId")\n            .teamId("teamId")\n            .processId("processId")\n            .build();\n        client.parties().teams().approvalProcesses().delete(params);\n    }\n}',
      },
    },
  },
  {
    name: 'list',
    endpoint: '/api/v1/parties/{organisationPartyId}/teams/{teamId}/approval-requests',
    httpMethod: 'get',
    summary: 'Get approval requests for a team',
    description: 'Get approval requests for a team',
    stainlessPath: '(resource) parties.teams.approval-requests > (method) list',
    qualified: 'client.parties.teams.approvalRequests.list',
    params: [
      'organisationPartyId: string;',
      'teamId: string;',
      "approvalRequestStatuses?: 'PENDING_APPROVAL' | 'APPROVED' | 'REJECTED' | 'FAILED'[];",
      'approvalRequestTypes?: string[];',
      'cursor?: string;',
      'limit?: number;',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    response:
      "{ items?: { approvalRequestId: string; approvalRequestStatus: 'PENDING_APPROVAL' | 'APPROVED' | 'REJECTED' | 'FAILED'; approvalRequestType: string; approvalsRequired: { numberOfApprovals: number; roles: string[]; }[]; createdAt: string; initiatorTeamMemberId: string; updatedAt: string; approvalContext?: object; approvalRequestFailure?: { code: 'RULE_EVALUATION_FAILED' | 'TEAM_MEMBER_NOT_FOUND' | 'UNEXPECTED_ERROR'; reason: string; }; decisions?: { decision: 'APPROVED' | 'REJECTED'; decisionDateTime: string; teamMemberId: string; }[]; }[]; nextCursor?: string; }",
    markdown:
      "## list\n\n`client.parties.teams.approvalRequests.list(organisationPartyId: string, teamId: string, approvalRequestStatuses?: 'PENDING_APPROVAL' | 'APPROVED' | 'REJECTED' | 'FAILED'[], approvalRequestTypes?: string[], cursor?: string, limit?: number, plmr-user-action?: boolean, X-Request-ID?: string): { items?: object[]; nextCursor?: string; }`\n\n**get** `/api/v1/parties/{organisationPartyId}/teams/{teamId}/approval-requests`\n\nGet approval requests for a team\n\n### Parameters\n\n- `organisationPartyId: string`\n\n- `teamId: string`\n\n- `approvalRequestStatuses?: 'PENDING_APPROVAL' | 'APPROVED' | 'REJECTED' | 'FAILED'[]`\n  Allows filtering approval requests by the specified approval request statuses. Accepts a comma-separated list.\n\n- `approvalRequestTypes?: string[]`\n  Allows filtering approval requests by the specified approval request types. Accepts a comma-separated list.\n\n- `cursor?: string`\n  The cursor is a pointer to the next page of requests. \nIt is returned in the response body of the previous request. \nUse it to retrieve the next page.\n\n\n- `limit?: number`\n  Specifies the number of entries to retrieve.\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ items?: { approvalRequestId: string; approvalRequestStatus: 'PENDING_APPROVAL' | 'APPROVED' | 'REJECTED' | 'FAILED'; approvalRequestType: string; approvalsRequired: { numberOfApprovals: number; roles: string[]; }[]; createdAt: string; initiatorTeamMemberId: string; updatedAt: string; approvalContext?: object; approvalRequestFailure?: { code: 'RULE_EVALUATION_FAILED' | 'TEAM_MEMBER_NOT_FOUND' | 'UNEXPECTED_ERROR'; reason: string; }; decisions?: { decision: 'APPROVED' | 'REJECTED'; decisionDateTime: string; teamMemberId: string; }[]; }[]; nextCursor?: string; }`\n\n  - `items?: { approvalRequestId: string; approvalRequestStatus: 'PENDING_APPROVAL' | 'APPROVED' | 'REJECTED' | 'FAILED'; approvalRequestType: string; approvalsRequired: { numberOfApprovals: number; roles: string[]; }[]; createdAt: string; initiatorTeamMemberId: string; updatedAt: string; approvalContext?: object; approvalRequestFailure?: { code: 'RULE_EVALUATION_FAILED' | 'TEAM_MEMBER_NOT_FOUND' | 'UNEXPECTED_ERROR'; reason: string; }; decisions?: { decision: 'APPROVED' | 'REJECTED'; decisionDateTime: string; teamMemberId: string; }[]; }[]`\n  - `nextCursor?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst approvalRequests = await client.parties.teams.approvalRequests.list('teamId', { organisationPartyId: 'organisationPartyId' });\n\nconsole.log(approvalRequests);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.teams.approvalRequests.list',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst approvalRequests = await client.parties.teams.approvalRequests.list('teamId', {\n  organisationPartyId: 'organisationPartyId',\n});\n\nconsole.log(approvalRequests.items);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$ORGANISATION_PARTY_ID/teams/$TEAM_ID/approval-requests \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().teams().approvalRequests().list',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.teams.approvalrequests.ApprovalRequestListParams\nimport com.plumery.api.models.parties.teams.approvalrequests.ApprovalRequestListResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: ApprovalRequestListParams = ApprovalRequestListParams.builder()\n        .organisationPartyId("organisationPartyId")\n        .teamId("teamId")\n        .build()\n    val approvalRequests: ApprovalRequestListResponse = client.parties().teams().approvalRequests().list(params)\n}',
      },
      java: {
        method: 'parties().teams().approvalRequests().list',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.teams.approvalrequests.ApprovalRequestListParams;\nimport com.plumery.api.models.parties.teams.approvalrequests.ApprovalRequestListResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        ApprovalRequestListParams params = ApprovalRequestListParams.builder()\n            .organisationPartyId("organisationPartyId")\n            .teamId("teamId")\n            .build();\n        ApprovalRequestListResponse approvalRequests = client.parties().teams().approvalRequests().list(params);\n    }\n}',
      },
    },
  },
  {
    name: 'create',
    endpoint:
      '/api/v1/parties/{organisationPartyId}/teams/{teamId}/approval-requests/{approvalRequestId}/decisions',
    httpMethod: 'post',
    summary: 'Submit a decision for an approval request',
    description: 'Submit a decision for an approval request',
    stainlessPath: '(resource) parties.teams.approval-requests.decisions > (method) create',
    qualified: 'client.parties.teams.approvalRequests.decisions.create',
    params: [
      'organisationPartyId: string;',
      'teamId: string;',
      'approvalRequestId: string;',
      "decision: 'APPROVED' | 'REJECTED';",
      'plmr-member-id: string;',
      'plmr-role-id: string;',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    markdown:
      "## create\n\n`client.parties.teams.approvalRequests.decisions.create(organisationPartyId: string, teamId: string, approvalRequestId: string, decision: 'APPROVED' | 'REJECTED', plmr-member-id: string, plmr-role-id: string, plmr-user-action?: boolean, X-Request-ID?: string): void`\n\n**post** `/api/v1/parties/{organisationPartyId}/teams/{teamId}/approval-requests/{approvalRequestId}/decisions`\n\nSubmit a decision for an approval request\n\n### Parameters\n\n- `organisationPartyId: string`\n\n- `teamId: string`\n\n- `approvalRequestId: string`\n\n- `decision: 'APPROVED' | 'REJECTED'`\n\n- `plmr-member-id: string`\n\n- `plmr-role-id: string`\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.teams.approvalRequests.decisions.create('approvalRequestId', {\n  organisationPartyId: 'organisationPartyId',\n  teamId: 'teamId',\n  decision: 'APPROVED',\n  'plmr-member-id': '1234-2345-5678',\n  'plmr-role-id': '1234-2345-3456-4567-5678',\n})\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.teams.approvalRequests.decisions.create',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.teams.approvalRequests.decisions.create('approvalRequestId', {\n  organisationPartyId: 'organisationPartyId',\n  teamId: 'teamId',\n  decision: 'APPROVED',\n  'plmr-member-id': '1234-2345-5678',\n  'plmr-role-id': '1234-2345-3456-4567-5678',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$ORGANISATION_PARTY_ID/teams/$TEAM_ID/approval-requests/$APPROVAL_REQUEST_ID/decisions \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "decision": "APPROVED"\n        }\'',
      },
      kotlin: {
        method: 'parties().teams().approvalRequests().decisions().create',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.teams.approvalrequests.decisions.DecisionCreateParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: DecisionCreateParams = DecisionCreateParams.builder()\n        .organisationPartyId("organisationPartyId")\n        .teamId("teamId")\n        .approvalRequestId("approvalRequestId")\n        .plmrMemberId("1234-2345-5678")\n        .plmrRoleId("1234-2345-3456-4567-5678")\n        .decision(DecisionCreateParams.Decision.APPROVED)\n        .build()\n    client.parties().teams().approvalRequests().decisions().create(params)\n}',
      },
      java: {
        method: 'parties().teams().approvalRequests().decisions().create',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.teams.approvalrequests.decisions.DecisionCreateParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        DecisionCreateParams params = DecisionCreateParams.builder()\n            .organisationPartyId("organisationPartyId")\n            .teamId("teamId")\n            .approvalRequestId("approvalRequestId")\n            .plmrMemberId("1234-2345-5678")\n            .plmrRoleId("1234-2345-3456-4567-5678")\n            .decision(DecisionCreateParams.Decision.APPROVED)\n            .build();\n        client.parties().teams().approvalRequests().decisions().create(params);\n    }\n}',
      },
    },
  },
  {
    name: 'list',
    endpoint: '/api/v1/parties/{organisationPartyId}/roles',
    httpMethod: 'get',
    summary: 'Retrieve organisation roles',
    description:
      'This endpoint provides a list of roles that can be assigned to teams within a specified organisation. There are several\npredefined roles - OWNER, ADMIN, FINANCE_MANAGER and other which could be added in the future each with its own \nassociated permissions. These roles are fixed and their permissions cannot be updated. In the future users will be able \nto add new roles and assign permissions to these newly created roles. The roles and permissions \nassignments are organisation-specific, which means changes made to a role in one organisation do not reflect in\nanother. This allows each organisation to have its own  uniquely defined roles along with the fixed predefined roles.\n',
    stainlessPath: '(resource) parties.roles > (method) list',
    qualified: 'client.parties.roles.list',
    params: [
      'organisationPartyId: string;',
      'expandPermissions?: boolean;',
      'teamTypeId?: string;',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    response:
      '{ roles?: { name?: string; permissions?: { action?: string; category?: string; resource?: string; }[]; roleId?: string; }[]; }',
    markdown:
      "## list\n\n`client.parties.roles.list(organisationPartyId: string, expandPermissions?: boolean, teamTypeId?: string, plmr-user-action?: boolean, X-Request-ID?: string): { roles?: object[]; }`\n\n**get** `/api/v1/parties/{organisationPartyId}/roles`\n\nThis endpoint provides a list of roles that can be assigned to teams within a specified organisation. There are several\npredefined roles - OWNER, ADMIN, FINANCE_MANAGER and other which could be added in the future each with its own \nassociated permissions. These roles are fixed and their permissions cannot be updated. In the future users will be able \nto add new roles and assign permissions to these newly created roles. The roles and permissions \nassignments are organisation-specific, which means changes made to a role in one organisation do not reflect in\nanother. This allows each organisation to have its own  uniquely defined roles along with the fixed predefined roles.\n\n\n### Parameters\n\n- `organisationPartyId: string`\n\n- `expandPermissions?: boolean`\n  This parameter influences the information about roles provided in the response. If it is set to 'true', \nthe response will include permissions associated with each role. If 'false' or not provided, the response \nwill only include roles without their respective permissions.\n\n\n- `teamTypeId?: string`\n  When provided, only roles associated with the given team type are returned. If not provided,\nall roles are returned.\n\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ roles?: { name?: string; permissions?: { action?: string; category?: string; resource?: string; }[]; roleId?: string; }[]; }`\n  Contains the details of all roles available within a specified organisation, including their associated permissions, if this was requested.\n\n  - `roles?: { name?: string; permissions?: { action?: string; category?: string; resource?: string; }[]; roleId?: string; }[]`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst roles = await client.parties.roles.list('6878951b-256b-4baa-9e81-ad4c577adc4e');\n\nconsole.log(roles);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.roles.list',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst roles = await client.parties.roles.list('6878951b-256b-4baa-9e81-ad4c577adc4e');\n\nconsole.log(roles.roles);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$ORGANISATION_PARTY_ID/roles \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().roles().list',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.roles.RoleListParams\nimport com.plumery.api.models.parties.roles.RoleListResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val roles: RoleListResponse = client.parties().roles().list("6878951b-256b-4baa-9e81-ad4c577adc4e")\n}',
      },
      java: {
        method: 'parties().roles().list',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.roles.RoleListParams;\nimport com.plumery.api.models.parties.roles.RoleListResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        RoleListResponse roles = client.parties().roles().list("6878951b-256b-4baa-9e81-ad4c577adc4e");\n    }\n}',
      },
    },
  },
  {
    name: 'list',
    endpoint: '/api/v1/parties/{organisationPartyId}/roles/{roleId}/permissions',
    httpMethod: 'get',
    summary: 'Retrieve specific role permissions',
    description:
      "Retrieve the list of permissions assigned to a particular role within a given organisation. The allows\ngranular understanding of the role's responsibilities within the specific context.\n",
    stainlessPath: '(resource) parties.roles.permissions > (method) list',
    qualified: 'client.parties.roles.permissions.list',
    params: [
      'organisationPartyId: string;',
      'roleId: string;',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    response: '{ permissions?: { action?: string; category?: string; resource?: string; }[]; }',
    markdown:
      "## list\n\n`client.parties.roles.permissions.list(organisationPartyId: string, roleId: string, plmr-user-action?: boolean, X-Request-ID?: string): { permissions?: object[]; }`\n\n**get** `/api/v1/parties/{organisationPartyId}/roles/{roleId}/permissions`\n\nRetrieve the list of permissions assigned to a particular role within a given organisation. The allows\ngranular understanding of the role's responsibilities within the specific context.\n\n\n### Parameters\n\n- `organisationPartyId: string`\n\n- `roleId: string`\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ permissions?: { action?: string; category?: string; resource?: string; }[]; }`\n  Contains a list of all permissions that can be assigned within an organisation.\n\n  - `permissions?: { action?: string; category?: string; resource?: string; }[]`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst permissions = await client.parties.roles.permissions.list('3e1250a2-742f-4808-a10a-b9bb8af32f53', { organisationPartyId: '6878951b-256b-4baa-9e81-ad4c577adc4e' });\n\nconsole.log(permissions);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.roles.permissions.list',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst permissions = await client.parties.roles.permissions.list(\n  '3e1250a2-742f-4808-a10a-b9bb8af32f53',\n  { organisationPartyId: '6878951b-256b-4baa-9e81-ad4c577adc4e' },\n);\n\nconsole.log(permissions.permissions);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$ORGANISATION_PARTY_ID/roles/$ROLE_ID/permissions \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().roles().permissions().list',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.roles.permissions.PermissionListParams\nimport com.plumery.api.models.parties.roles.permissions.PermissionListResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: PermissionListParams = PermissionListParams.builder()\n        .organisationPartyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .roleId("3e1250a2-742f-4808-a10a-b9bb8af32f53")\n        .build()\n    val permissions: PermissionListResponse = client.parties().roles().permissions().list(params)\n}',
      },
      java: {
        method: 'parties().roles().permissions().list',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.roles.permissions.PermissionListParams;\nimport com.plumery.api.models.parties.roles.permissions.PermissionListResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        PermissionListParams params = PermissionListParams.builder()\n            .organisationPartyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .roleId("3e1250a2-742f-4808-a10a-b9bb8af32f53")\n            .build();\n        PermissionListResponse permissions = client.parties().roles().permissions().list(params);\n    }\n}',
      },
    },
  },
  {
    name: 'create',
    endpoint: '/api/v1/parties/{partyId}/loan-applications',
    httpMethod: 'post',
    summary: 'Initiate New Loan Application For An Existing Party',
    description:
      'Initiate the loan application process for an existing party. This should always be the first step of the loan application process.',
    stainlessPath: '(resource) parties.loan-applications > (method) create',
    qualified: 'client.parties.loanApplications.create',
    params: [
      'partyId: string;',
      "loanApplicationType: 'RETAIL' | 'BUSINESS';",
      'productId?: string;',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    response: '{ loanApplicationId?: string; }',
    markdown:
      "## create\n\n`client.parties.loanApplications.create(partyId: string, loanApplicationType: 'RETAIL' | 'BUSINESS', productId?: string, plmr-user-action?: boolean, X-Request-ID?: string): { loanApplicationId?: string; }`\n\n**post** `/api/v1/parties/{partyId}/loan-applications`\n\nInitiate the loan application process for an existing party. This should always be the first step of the loan application process.\n\n### Parameters\n\n- `partyId: string`\n\n- `loanApplicationType: 'RETAIL' | 'BUSINESS'`\n\n- `productId?: string`\n  The loan product id from core banking engine. Mandatory for business loan applications.\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ loanApplicationId?: string; }`\n\n  - `loanApplicationId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst loanApplication = await client.parties.loanApplications.create('36a22460-ebc8-4ffe-a213-1683c5a420c5', { loanApplicationType: 'RETAIL' });\n\nconsole.log(loanApplication);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.loanApplications.create',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst loanApplication = await client.parties.loanApplications.create(\n  '36a22460-ebc8-4ffe-a213-1683c5a420c5',\n  { loanApplicationType: 'RETAIL' },\n);\n\nconsole.log(loanApplication.loanApplicationId);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/loan-applications \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "loanApplicationType": "RETAIL"\n        }\'',
      },
      kotlin: {
        method: 'parties().loanApplications().create',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.loanapplications.LoanApplicationCreateParams\nimport com.plumery.api.models.parties.loanapplications.LoanApplicationCreateResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: LoanApplicationCreateParams = LoanApplicationCreateParams.builder()\n        .partyId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .loanApplicationType(LoanApplicationCreateParams.LoanApplicationType.RETAIL)\n        .build()\n    val loanApplication: LoanApplicationCreateResponse = client.parties().loanApplications().create(params)\n}',
      },
      java: {
        method: 'parties().loanApplications().create',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.loanapplications.LoanApplicationCreateParams;\nimport com.plumery.api.models.parties.loanapplications.LoanApplicationCreateResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        LoanApplicationCreateParams params = LoanApplicationCreateParams.builder()\n            .partyId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .loanApplicationType(LoanApplicationCreateParams.LoanApplicationType.RETAIL)\n            .build();\n        LoanApplicationCreateResponse loanApplication = client.parties().loanApplications().create(params);\n    }\n}',
      },
    },
  },
  {
    name: 'previewSchedule',
    endpoint: '/api/v1/parties/{partyId}/loan-applications/{loanApplicationId}:preview-schedule',
    httpMethod: 'post',
    summary: 'Generate A Loan Schedule Preview For An Existing Party',
    description: 'Generate a schedule preview for a loan application for an existing party.',
    stainlessPath: '(resource) parties.loan-applications > (method) previewSchedule',
    qualified: 'client.parties.loanApplications.previewSchedule',
    params: [
      'partyId: string;',
      'loanApplicationId: string;',
      "loanDetails: { firstRepaymentDate: string; loanAmount: { amount: number; currency: string; }; loanDuration: number; repaymentInterval?: number; repaymentUnit?: 'MONTHS'; };",
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    response:
      '{ installments?: { feeAmount?: { amount: number; currency: string; }; feeTaxAmount?: { amount: number; currency: string; }; interestAmount?: { amount: number; currency: string; }; interestTaxAmount?: { amount: number; currency: string; }; number?: number; principalAmount?: { amount: number; currency: string; }; repaymentDate?: string; }[]; }',
    markdown:
      "## previewSchedule\n\n`client.parties.loanApplications.previewSchedule(partyId: string, loanApplicationId: string, loanDetails: { firstRepaymentDate: string; loanAmount: { amount: number; currency: string; }; loanDuration: number; repaymentInterval?: number; repaymentUnit?: 'MONTHS'; }, plmr-user-action?: boolean, X-Request-ID?: string): { installments?: object[]; }`\n\n**post** `/api/v1/parties/{partyId}/loan-applications/{loanApplicationId}:preview-schedule`\n\nGenerate a schedule preview for a loan application for an existing party.\n\n### Parameters\n\n- `partyId: string`\n\n- `loanApplicationId: string`\n\n- `loanDetails: { firstRepaymentDate: string; loanAmount: { amount: number; currency: string; }; loanDuration: number; repaymentInterval?: number; repaymentUnit?: 'MONTHS'; }`\n  - `firstRepaymentDate: string`\n  - `loanAmount: { amount: number; currency: string; }`\n  - `loanDuration: number`\n  - `repaymentInterval?: number`\n  - `repaymentUnit?: 'MONTHS'`\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ installments?: { feeAmount?: { amount: number; currency: string; }; feeTaxAmount?: { amount: number; currency: string; }; interestAmount?: { amount: number; currency: string; }; interestTaxAmount?: { amount: number; currency: string; }; number?: number; principalAmount?: { amount: number; currency: string; }; repaymentDate?: string; }[]; }`\n\n  - `installments?: { feeAmount?: { amount: number; currency: string; }; feeTaxAmount?: { amount: number; currency: string; }; interestAmount?: { amount: number; currency: string; }; interestTaxAmount?: { amount: number; currency: string; }; number?: number; principalAmount?: { amount: number; currency: string; }; repaymentDate?: string; }[]`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.parties.loanApplications.previewSchedule('36a22460-ebc8-4ffe-a213-1683c5a420c5', {\n  partyId: '36a22460-ebc8-4ffe-a213-1683c5a420c5',\n  loanDetails: {\n  firstRepaymentDate: 'firstRepaymentDate',\n  loanAmount: { amount: 0, currency: 'EUR' },\n  loanDuration: 0,\n},\n});\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.loanApplications.previewSchedule',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.parties.loanApplications.previewSchedule(\n  '36a22460-ebc8-4ffe-a213-1683c5a420c5',\n  {\n    partyId: '36a22460-ebc8-4ffe-a213-1683c5a420c5',\n    loanDetails: {\n      firstRepaymentDate: 'firstRepaymentDate',\n      loanAmount: { amount: 0, currency: 'EUR' },\n      loanDuration: 0,\n    },\n  },\n);\n\nconsole.log(response.installments);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/loan-applications/$LOAN_APPLICATION_ID:preview-schedule \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "loanDetails": {\n            "firstRepaymentDate": "firstRepaymentDate",\n            "loanAmount": {\n              "amount": 0,\n              "currency": "EUR"\n            },\n            "loanDuration": 0\n          }\n        }\'',
      },
      kotlin: {
        method: 'parties().loanApplications().previewSchedule',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.loanapplications.LoanApplicationPreviewScheduleParams\nimport com.plumery.api.models.parties.loanapplications.LoanApplicationPreviewScheduleResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: LoanApplicationPreviewScheduleParams = LoanApplicationPreviewScheduleParams.builder()\n        .partyId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .loanApplicationId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .loanDetails(LoanApplicationPreviewScheduleParams.LoanDetails.builder()\n            .firstRepaymentDate("firstRepaymentDate")\n            .loanAmount(LoanApplicationPreviewScheduleParams.LoanDetails.LoanAmount.builder()\n                .amount(0.0)\n                .currency("EUR")\n                .build())\n            .loanDuration(0)\n            .build())\n        .build()\n    val response: LoanApplicationPreviewScheduleResponse = client.parties().loanApplications().previewSchedule(params)\n}',
      },
      java: {
        method: 'parties().loanApplications().previewSchedule',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.loanapplications.LoanApplicationPreviewScheduleParams;\nimport com.plumery.api.models.parties.loanapplications.LoanApplicationPreviewScheduleResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        LoanApplicationPreviewScheduleParams params = LoanApplicationPreviewScheduleParams.builder()\n            .partyId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .loanApplicationId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .loanDetails(LoanApplicationPreviewScheduleParams.LoanDetails.builder()\n                .firstRepaymentDate("firstRepaymentDate")\n                .loanAmount(LoanApplicationPreviewScheduleParams.LoanDetails.LoanAmount.builder()\n                    .amount(0.0)\n                    .currency("EUR")\n                    .build())\n                .loanDuration(0)\n                .build())\n            .build();\n        LoanApplicationPreviewScheduleResponse response = client.parties().loanApplications().previewSchedule(params);\n    }\n}',
      },
    },
  },
  {
    name: 'submitApplicationDetails',
    endpoint: '/api/v1/parties/{partyId}/loan-applications/{loanApplicationId}:submit-application-details',
    httpMethod: 'post',
    summary: 'Submit Application Details For An Existing Party',
    description: 'Triggers the application details submission for an existing party.',
    stainlessPath: '(resource) parties.loan-applications > (method) submitApplicationDetails',
    qualified: 'client.parties.loanApplications.submitApplicationDetails',
    params: [
      'partyId: string;',
      'loanApplicationId: string;',
      "employmentDetails: { employmentStatus: 'EMPLOYED' | 'HOMEMAKER' | 'UNEMPLOYED' | 'RETIRED' | 'SELF_EMPLOYED'; incomeFrequency: 'MONTHLY' | 'FORTNIGHTLY' | 'WEEKLY' | 'UNDEFINED'; monthlyIncome: { amount: number; currency: string; }; occupation: string; originOfResources: string; };",
      "housingDetails: { housingSituation: 'RENTER' | 'HOMEOWNER_WITH_MORTGAGE' | 'HOMEOWNER_WITHOUT_MORTGAGE'; monthlyHousingCost: { amount: number; currency: string; }; yearsLivingAtHome: number; landlinePhoneNumber?: string; };",
      'personalDetails: { creditDestination: string; everDivorced: boolean; financialDependents: number; maritalStatus: string; monthlyExpenses: { amount: number; currency: string; }; signatureSerialNumber?: string; };',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    markdown:
      "## submitApplicationDetails\n\n`client.parties.loanApplications.submitApplicationDetails(partyId: string, loanApplicationId: string, employmentDetails: { employmentStatus: 'EMPLOYED' | 'HOMEMAKER' | 'UNEMPLOYED' | 'RETIRED' | 'SELF_EMPLOYED'; incomeFrequency: 'MONTHLY' | 'FORTNIGHTLY' | 'WEEKLY' | 'UNDEFINED'; monthlyIncome: { amount: number; currency: string; }; occupation: string; originOfResources: string; }, housingDetails: { housingSituation: 'RENTER' | 'HOMEOWNER_WITH_MORTGAGE' | 'HOMEOWNER_WITHOUT_MORTGAGE'; monthlyHousingCost: { amount: number; currency: string; }; yearsLivingAtHome: number; landlinePhoneNumber?: string; }, personalDetails: { creditDestination: string; everDivorced: boolean; financialDependents: number; maritalStatus: string; monthlyExpenses: { amount: number; currency: string; }; signatureSerialNumber?: string; }, plmr-user-action?: boolean, X-Request-ID?: string): void`\n\n**post** `/api/v1/parties/{partyId}/loan-applications/{loanApplicationId}:submit-application-details`\n\nTriggers the application details submission for an existing party.\n\n### Parameters\n\n- `partyId: string`\n\n- `loanApplicationId: string`\n\n- `employmentDetails: { employmentStatus: 'EMPLOYED' | 'HOMEMAKER' | 'UNEMPLOYED' | 'RETIRED' | 'SELF_EMPLOYED'; incomeFrequency: 'MONTHLY' | 'FORTNIGHTLY' | 'WEEKLY' | 'UNDEFINED'; monthlyIncome: { amount: number; currency: string; }; occupation: string; originOfResources: string; }`\n  - `employmentStatus: 'EMPLOYED' | 'HOMEMAKER' | 'UNEMPLOYED' | 'RETIRED' | 'SELF_EMPLOYED'`\n  - `incomeFrequency: 'MONTHLY' | 'FORTNIGHTLY' | 'WEEKLY' | 'UNDEFINED'`\n  - `monthlyIncome: { amount: number; currency: string; }`\n  - `occupation: string`\n  - `originOfResources: string`\n\n- `housingDetails: { housingSituation: 'RENTER' | 'HOMEOWNER_WITH_MORTGAGE' | 'HOMEOWNER_WITHOUT_MORTGAGE'; monthlyHousingCost: { amount: number; currency: string; }; yearsLivingAtHome: number; landlinePhoneNumber?: string; }`\n  - `housingSituation: 'RENTER' | 'HOMEOWNER_WITH_MORTGAGE' | 'HOMEOWNER_WITHOUT_MORTGAGE'`\n  - `monthlyHousingCost: { amount: number; currency: string; }`\n  - `yearsLivingAtHome: number`\n  - `landlinePhoneNumber?: string`\n\n- `personalDetails: { creditDestination: string; everDivorced: boolean; financialDependents: number; maritalStatus: string; monthlyExpenses: { amount: number; currency: string; }; signatureSerialNumber?: string; }`\n  - `creditDestination: string`\n  - `everDivorced: boolean`\n  - `financialDependents: number`\n  - `maritalStatus: string`\n  - `monthlyExpenses: { amount: number; currency: string; }`\n  - `signatureSerialNumber?: string`\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.loanApplications.submitApplicationDetails('36a22460-ebc8-4ffe-a213-1683c5a420c5', {\n  partyId: '36a22460-ebc8-4ffe-a213-1683c5a420c5',\n  employmentDetails: {\n  employmentStatus: 'EMPLOYED',\n  incomeFrequency: 'MONTHLY',\n  monthlyIncome: { amount: 0, currency: 'EUR' },\n  occupation: 'Developer',\n  originOfResources: 'Salary',\n},\n  housingDetails: {\n  housingSituation: 'RENTER',\n  monthlyHousingCost: { amount: 0, currency: 'EUR' },\n  yearsLivingAtHome: 0,\n},\n  personalDetails: {\n  creditDestination: 'Personal',\n  everDivorced: true,\n  financialDependents: 0,\n  maritalStatus: 'Married',\n  monthlyExpenses: { amount: 0, currency: 'EUR' },\n},\n})\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.loanApplications.submitApplicationDetails',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.loanApplications.submitApplicationDetails(\n  '36a22460-ebc8-4ffe-a213-1683c5a420c5',\n  {\n    partyId: '36a22460-ebc8-4ffe-a213-1683c5a420c5',\n    employmentDetails: {\n      employmentStatus: 'EMPLOYED',\n      incomeFrequency: 'MONTHLY',\n      monthlyIncome: { amount: 0, currency: 'EUR' },\n      occupation: 'Developer',\n      originOfResources: 'Salary',\n    },\n    housingDetails: {\n      housingSituation: 'RENTER',\n      monthlyHousingCost: { amount: 0, currency: 'EUR' },\n      yearsLivingAtHome: 0,\n    },\n    personalDetails: {\n      creditDestination: 'Personal',\n      everDivorced: true,\n      financialDependents: 0,\n      maritalStatus: 'Married',\n      monthlyExpenses: { amount: 0, currency: 'EUR' },\n    },\n  },\n);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/loan-applications/$LOAN_APPLICATION_ID:submit-application-details \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "employmentDetails": {\n            "employmentStatus": "EMPLOYED",\n            "incomeFrequency": "MONTHLY",\n            "monthlyIncome": {\n              "amount": 0,\n              "currency": "EUR"\n            },\n            "occupation": "Developer",\n            "originOfResources": "Salary"\n          },\n          "housingDetails": {\n            "housingSituation": "RENTER",\n            "monthlyHousingCost": {\n              "amount": 0,\n              "currency": "EUR"\n            },\n            "yearsLivingAtHome": 0\n          },\n          "personalDetails": {\n            "creditDestination": "Personal",\n            "everDivorced": true,\n            "financialDependents": 0,\n            "maritalStatus": "Married",\n            "monthlyExpenses": {\n              "amount": 0,\n              "currency": "EUR"\n            }\n          }\n        }\'',
      },
      kotlin: {
        method: 'parties().loanApplications().submitApplicationDetails',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.loanapplications.LoanApplicationSubmitApplicationDetailsParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: LoanApplicationSubmitApplicationDetailsParams = LoanApplicationSubmitApplicationDetailsParams.builder()\n        .partyId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .loanApplicationId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .employmentDetails(LoanApplicationSubmitApplicationDetailsParams.EmploymentDetails.builder()\n            .employmentStatus(LoanApplicationSubmitApplicationDetailsParams.EmploymentDetails.EmploymentStatus.EMPLOYED)\n            .incomeFrequency(LoanApplicationSubmitApplicationDetailsParams.EmploymentDetails.IncomeFrequency.MONTHLY)\n            .monthlyIncome(LoanApplicationSubmitApplicationDetailsParams.EmploymentDetails.MonthlyIncome.builder()\n                .amount(0.0)\n                .currency("EUR")\n                .build())\n            .occupation("Developer")\n            .originOfResources("Salary")\n            .build())\n        .housingDetails(LoanApplicationSubmitApplicationDetailsParams.HousingDetails.builder()\n            .housingSituation(LoanApplicationSubmitApplicationDetailsParams.HousingDetails.HousingSituation.RENTER)\n            .monthlyHousingCost(LoanApplicationSubmitApplicationDetailsParams.HousingDetails.MonthlyHousingCost.builder()\n                .amount(0.0)\n                .currency("EUR")\n                .build())\n            .yearsLivingAtHome(0)\n            .build())\n        .personalDetails(LoanApplicationSubmitApplicationDetailsParams.PersonalDetails.builder()\n            .creditDestination("Personal")\n            .everDivorced(true)\n            .financialDependents(0)\n            .maritalStatus("Married")\n            .monthlyExpenses(LoanApplicationSubmitApplicationDetailsParams.PersonalDetails.MonthlyExpenses.builder()\n                .amount(0.0)\n                .currency("EUR")\n                .build())\n            .build())\n        .build()\n    client.parties().loanApplications().submitApplicationDetails(params)\n}',
      },
      java: {
        method: 'parties().loanApplications().submitApplicationDetails',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.loanapplications.LoanApplicationSubmitApplicationDetailsParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        LoanApplicationSubmitApplicationDetailsParams params = LoanApplicationSubmitApplicationDetailsParams.builder()\n            .partyId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .loanApplicationId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .employmentDetails(LoanApplicationSubmitApplicationDetailsParams.EmploymentDetails.builder()\n                .employmentStatus(LoanApplicationSubmitApplicationDetailsParams.EmploymentDetails.EmploymentStatus.EMPLOYED)\n                .incomeFrequency(LoanApplicationSubmitApplicationDetailsParams.EmploymentDetails.IncomeFrequency.MONTHLY)\n                .monthlyIncome(LoanApplicationSubmitApplicationDetailsParams.EmploymentDetails.MonthlyIncome.builder()\n                    .amount(0.0)\n                    .currency("EUR")\n                    .build())\n                .occupation("Developer")\n                .originOfResources("Salary")\n                .build())\n            .housingDetails(LoanApplicationSubmitApplicationDetailsParams.HousingDetails.builder()\n                .housingSituation(LoanApplicationSubmitApplicationDetailsParams.HousingDetails.HousingSituation.RENTER)\n                .monthlyHousingCost(LoanApplicationSubmitApplicationDetailsParams.HousingDetails.MonthlyHousingCost.builder()\n                    .amount(0.0)\n                    .currency("EUR")\n                    .build())\n                .yearsLivingAtHome(0)\n                .build())\n            .personalDetails(LoanApplicationSubmitApplicationDetailsParams.PersonalDetails.builder()\n                .creditDestination("Personal")\n                .everDivorced(true)\n                .financialDependents(0)\n                .maritalStatus("Married")\n                .monthlyExpenses(LoanApplicationSubmitApplicationDetailsParams.PersonalDetails.MonthlyExpenses.builder()\n                    .amount(0.0)\n                    .currency("EUR")\n                    .build())\n                .build())\n            .build();\n        client.parties().loanApplications().submitApplicationDetails(params);\n    }\n}',
      },
    },
  },
  {
    name: 'submitBusinessApplicationDetails',
    endpoint:
      '/api/v1/parties/{partyId}/loan-applications/{loanApplicationId}:submit-business-application-details',
    httpMethod: 'post',
    summary: 'Submit Business Loan Application Details For An Existing Party',
    description: 'Triggers the business application details submission for an existing party.',
    stainlessPath: '(resource) parties.loan-applications > (method) submitBusinessApplicationDetails',
    qualified: 'client.parties.loanApplications.submitBusinessApplicationDetails',
    params: [
      'partyId: string;',
      'loanApplicationId: string;',
      'businessDetails: { annualRevenue: { amount: number; currency: string; }; businessType: string; numberOfEmployees: number; yearsInBusiness: number; };',
      'financialInformation: { monthlyExpenses: { amount: number; currency: string; }; monthlyRevenue: { amount: number; currency: string; }; netMonthlyProfit: { amount: number; currency: string; }; };',
      'purposeDetails: string;',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    markdown:
      "## submitBusinessApplicationDetails\n\n`client.parties.loanApplications.submitBusinessApplicationDetails(partyId: string, loanApplicationId: string, businessDetails: { annualRevenue: { amount: number; currency: string; }; businessType: string; numberOfEmployees: number; yearsInBusiness: number; }, financialInformation: { monthlyExpenses: { amount: number; currency: string; }; monthlyRevenue: { amount: number; currency: string; }; netMonthlyProfit: { amount: number; currency: string; }; }, purposeDetails: string, plmr-user-action?: boolean, X-Request-ID?: string): void`\n\n**post** `/api/v1/parties/{partyId}/loan-applications/{loanApplicationId}:submit-business-application-details`\n\nTriggers the business application details submission for an existing party.\n\n### Parameters\n\n- `partyId: string`\n\n- `loanApplicationId: string`\n\n- `businessDetails: { annualRevenue: { amount: number; currency: string; }; businessType: string; numberOfEmployees: number; yearsInBusiness: number; }`\n  - `annualRevenue: { amount: number; currency: string; }`\n  - `businessType: string`\n  - `numberOfEmployees: number`\n  - `yearsInBusiness: number`\n    Only values between 0 and 50 are allowed\n\n- `financialInformation: { monthlyExpenses: { amount: number; currency: string; }; monthlyRevenue: { amount: number; currency: string; }; netMonthlyProfit: { amount: number; currency: string; }; }`\n  - `monthlyExpenses: { amount: number; currency: string; }`\n  - `monthlyRevenue: { amount: number; currency: string; }`\n  - `netMonthlyProfit: { amount: number; currency: string; }`\n\n- `purposeDetails: string`\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.loanApplications.submitBusinessApplicationDetails('36a22460-ebc8-4ffe-a213-1683c5a420c5', {\n  partyId: '36a22460-ebc8-4ffe-a213-1683c5a420c5',\n  businessDetails: {\n  annualRevenue: { amount: 0, currency: 'EUR' },\n  businessType: 'RETAIL',\n  numberOfEmployees: 0,\n  yearsInBusiness: 0,\n},\n  financialInformation: {\n  monthlyExpenses: { amount: 0, currency: 'EUR' },\n  monthlyRevenue: { amount: 0, currency: 'EUR' },\n  netMonthlyProfit: { amount: 0, currency: 'EUR' },\n},\n  purposeDetails: 'purposeDetails',\n})\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.loanApplications.submitBusinessApplicationDetails',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.loanApplications.submitBusinessApplicationDetails(\n  '36a22460-ebc8-4ffe-a213-1683c5a420c5',\n  {\n    partyId: '36a22460-ebc8-4ffe-a213-1683c5a420c5',\n    businessDetails: {\n      annualRevenue: { amount: 0, currency: 'EUR' },\n      businessType: 'RETAIL',\n      numberOfEmployees: 0,\n      yearsInBusiness: 0,\n    },\n    financialInformation: {\n      monthlyExpenses: { amount: 0, currency: 'EUR' },\n      monthlyRevenue: { amount: 0, currency: 'EUR' },\n      netMonthlyProfit: { amount: 0, currency: 'EUR' },\n    },\n    purposeDetails: 'purposeDetails',\n  },\n);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/loan-applications/$LOAN_APPLICATION_ID:submit-business-application-details \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "businessDetails": {\n            "annualRevenue": {\n              "amount": 0,\n              "currency": "EUR"\n            },\n            "businessType": "RETAIL",\n            "numberOfEmployees": 0,\n            "yearsInBusiness": 0\n          },\n          "financialInformation": {\n            "monthlyExpenses": {\n              "amount": 0,\n              "currency": "EUR"\n            },\n            "monthlyRevenue": {\n              "amount": 0,\n              "currency": "EUR"\n            },\n            "netMonthlyProfit": {\n              "amount": 0,\n              "currency": "EUR"\n            }\n          },\n          "purposeDetails": "purposeDetails"\n        }\'',
      },
      kotlin: {
        method: 'parties().loanApplications().submitBusinessApplicationDetails',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.loanapplications.LoanApplicationSubmitBusinessApplicationDetailsParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: LoanApplicationSubmitBusinessApplicationDetailsParams = LoanApplicationSubmitBusinessApplicationDetailsParams.builder()\n        .partyId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .loanApplicationId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .businessDetails(LoanApplicationSubmitBusinessApplicationDetailsParams.BusinessDetails.builder()\n            .annualRevenue(LoanApplicationSubmitBusinessApplicationDetailsParams.BusinessDetails.AnnualRevenue.builder()\n                .amount(0.0)\n                .currency("EUR")\n                .build())\n            .businessType(LoanApplicationSubmitBusinessApplicationDetailsParams.BusinessDetails.BusinessType.RETAIL)\n            .numberOfEmployees(0L)\n            .yearsInBusiness(0L)\n            .build())\n        .financialInformation(LoanApplicationSubmitBusinessApplicationDetailsParams.FinancialInformation.builder()\n            .monthlyExpenses(LoanApplicationSubmitBusinessApplicationDetailsParams.FinancialInformation.MonthlyExpenses.builder()\n                .amount(0.0)\n                .currency("EUR")\n                .build())\n            .monthlyRevenue(LoanApplicationSubmitBusinessApplicationDetailsParams.FinancialInformation.MonthlyRevenue.builder()\n                .amount(0.0)\n                .currency("EUR")\n                .build())\n            .netMonthlyProfit(LoanApplicationSubmitBusinessApplicationDetailsParams.FinancialInformation.NetMonthlyProfit.builder()\n                .amount(0.0)\n                .currency("EUR")\n                .build())\n            .build())\n        .purposeDetails("purposeDetails")\n        .build()\n    client.parties().loanApplications().submitBusinessApplicationDetails(params)\n}',
      },
      java: {
        method: 'parties().loanApplications().submitBusinessApplicationDetails',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.loanapplications.LoanApplicationSubmitBusinessApplicationDetailsParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        LoanApplicationSubmitBusinessApplicationDetailsParams params = LoanApplicationSubmitBusinessApplicationDetailsParams.builder()\n            .partyId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .loanApplicationId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .businessDetails(LoanApplicationSubmitBusinessApplicationDetailsParams.BusinessDetails.builder()\n                .annualRevenue(LoanApplicationSubmitBusinessApplicationDetailsParams.BusinessDetails.AnnualRevenue.builder()\n                    .amount(0.0)\n                    .currency("EUR")\n                    .build())\n                .businessType(LoanApplicationSubmitBusinessApplicationDetailsParams.BusinessDetails.BusinessType.RETAIL)\n                .numberOfEmployees(0L)\n                .yearsInBusiness(0L)\n                .build())\n            .financialInformation(LoanApplicationSubmitBusinessApplicationDetailsParams.FinancialInformation.builder()\n                .monthlyExpenses(LoanApplicationSubmitBusinessApplicationDetailsParams.FinancialInformation.MonthlyExpenses.builder()\n                    .amount(0.0)\n                    .currency("EUR")\n                    .build())\n                .monthlyRevenue(LoanApplicationSubmitBusinessApplicationDetailsParams.FinancialInformation.MonthlyRevenue.builder()\n                    .amount(0.0)\n                    .currency("EUR")\n                    .build())\n                .netMonthlyProfit(LoanApplicationSubmitBusinessApplicationDetailsParams.FinancialInformation.NetMonthlyProfit.builder()\n                    .amount(0.0)\n                    .currency("EUR")\n                    .build())\n                .build())\n            .purposeDetails("purposeDetails")\n            .build();\n        client.parties().loanApplications().submitBusinessApplicationDetails(params);\n    }\n}',
      },
    },
  },
  {
    name: 'submitCollateralDetails',
    endpoint: '/api/v1/parties/{partyId}/loan-applications/{loanApplicationId}:submit-collateral-details',
    httpMethod: 'post',
    summary: 'Submit Collateral Details For An Existing Party',
    description: 'Triggers the collateral details submission for an existing party.',
    stainlessPath: '(resource) parties.loan-applications > (method) submitCollateralDetails',
    qualified: 'client.parties.loanApplications.submitCollateralDetails',
    params: [
      'partyId: string;',
      'loanApplicationId: string;',
      "condition: 'EXCELLENT' | 'GOOD' | 'FAIR';",
      'description: string;',
      "type: 'VEHICLE' | 'PROPERTY' | 'EQUIPMENT';",
      'value: { amount: number; currency: string; };',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    markdown:
      "## submitCollateralDetails\n\n`client.parties.loanApplications.submitCollateralDetails(partyId: string, loanApplicationId: string, condition: 'EXCELLENT' | 'GOOD' | 'FAIR', description: string, type: 'VEHICLE' | 'PROPERTY' | 'EQUIPMENT', value: { amount: number; currency: string; }, plmr-user-action?: boolean, X-Request-ID?: string): void`\n\n**post** `/api/v1/parties/{partyId}/loan-applications/{loanApplicationId}:submit-collateral-details`\n\nTriggers the collateral details submission for an existing party.\n\n### Parameters\n\n- `partyId: string`\n\n- `loanApplicationId: string`\n\n- `condition: 'EXCELLENT' | 'GOOD' | 'FAIR'`\n\n- `description: string`\n\n- `type: 'VEHICLE' | 'PROPERTY' | 'EQUIPMENT'`\n\n- `value: { amount: number; currency: string; }`\n  - `amount: number`\n  - `currency: string`\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.loanApplications.submitCollateralDetails('36a22460-ebc8-4ffe-a213-1683c5a420c5', {\n  partyId: '36a22460-ebc8-4ffe-a213-1683c5a420c5',\n  condition: 'EXCELLENT',\n  description: 'description',\n  type: 'VEHICLE',\n  value: { amount: 0, currency: 'EUR' },\n})\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.loanApplications.submitCollateralDetails',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.loanApplications.submitCollateralDetails(\n  '36a22460-ebc8-4ffe-a213-1683c5a420c5',\n  {\n    partyId: '36a22460-ebc8-4ffe-a213-1683c5a420c5',\n    condition: 'EXCELLENT',\n    description: 'description',\n    type: 'VEHICLE',\n    value: { amount: 0, currency: 'EUR' },\n  },\n);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/loan-applications/$LOAN_APPLICATION_ID:submit-collateral-details \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "condition": "EXCELLENT",\n          "description": "description",\n          "type": "VEHICLE",\n          "value": {\n            "amount": 0,\n            "currency": "EUR"\n          }\n        }\'',
      },
      kotlin: {
        method: 'parties().loanApplications().submitCollateralDetails',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.loanapplications.LoanApplicationSubmitCollateralDetailsParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: LoanApplicationSubmitCollateralDetailsParams = LoanApplicationSubmitCollateralDetailsParams.builder()\n        .partyId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .loanApplicationId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .condition(LoanApplicationSubmitCollateralDetailsParams.Condition.EXCELLENT)\n        .description("description")\n        .type(LoanApplicationSubmitCollateralDetailsParams.Type.VEHICLE)\n        .value(LoanApplicationSubmitCollateralDetailsParams.Value.builder()\n            .amount(0.0)\n            .currency("EUR")\n            .build())\n        .build()\n    client.parties().loanApplications().submitCollateralDetails(params)\n}',
      },
      java: {
        method: 'parties().loanApplications().submitCollateralDetails',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.loanapplications.LoanApplicationSubmitCollateralDetailsParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        LoanApplicationSubmitCollateralDetailsParams params = LoanApplicationSubmitCollateralDetailsParams.builder()\n            .partyId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .loanApplicationId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .condition(LoanApplicationSubmitCollateralDetailsParams.Condition.EXCELLENT)\n            .description("description")\n            .type(LoanApplicationSubmitCollateralDetailsParams.Type.VEHICLE)\n            .value(LoanApplicationSubmitCollateralDetailsParams.Value.builder()\n                .amount(0.0)\n                .currency("EUR")\n                .build())\n            .build();\n        client.parties().loanApplications().submitCollateralDetails(params);\n    }\n}',
      },
    },
  },
  {
    name: 'submitCreditBureau',
    endpoint: '/api/v1/parties/{partyId}/loan-applications/{loanApplicationId}:submit-credit-bureau',
    httpMethod: 'post',
    summary: 'Submit Information To The Credit Bureau For An Existing Party',
    description: 'Triggers the submission of information to the credit bureau for an existing party.',
    stainlessPath: '(resource) parties.loan-applications > (method) submitCreditBureau',
    qualified: 'client.parties.loanApplications.submitCreditBureau',
    params: [
      'partyId: string;',
      'loanApplicationId: string;',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    markdown:
      "## submitCreditBureau\n\n`client.parties.loanApplications.submitCreditBureau(partyId: string, loanApplicationId: string, plmr-user-action?: boolean, X-Request-ID?: string): void`\n\n**post** `/api/v1/parties/{partyId}/loan-applications/{loanApplicationId}:submit-credit-bureau`\n\nTriggers the submission of information to the credit bureau for an existing party.\n\n### Parameters\n\n- `partyId: string`\n\n- `loanApplicationId: string`\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.loanApplications.submitCreditBureau('36a22460-ebc8-4ffe-a213-1683c5a420c5', { partyId: '36a22460-ebc8-4ffe-a213-1683c5a420c5' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.loanApplications.submitCreditBureau',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.loanApplications.submitCreditBureau('36a22460-ebc8-4ffe-a213-1683c5a420c5', {\n  partyId: '36a22460-ebc8-4ffe-a213-1683c5a420c5',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/loan-applications/$LOAN_APPLICATION_ID:submit-credit-bureau \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().loanApplications().submitCreditBureau',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.loanapplications.LoanApplicationSubmitCreditBureauParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: LoanApplicationSubmitCreditBureauParams = LoanApplicationSubmitCreditBureauParams.builder()\n        .partyId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .loanApplicationId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .build()\n    client.parties().loanApplications().submitCreditBureau(params)\n}',
      },
      java: {
        method: 'parties().loanApplications().submitCreditBureau',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.loanapplications.LoanApplicationSubmitCreditBureauParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        LoanApplicationSubmitCreditBureauParams params = LoanApplicationSubmitCreditBureauParams.builder()\n            .partyId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .loanApplicationId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .build();\n        client.parties().loanApplications().submitCreditBureau(params);\n    }\n}',
      },
    },
  },
  {
    name: 'generateOffer',
    endpoint: '/api/v1/parties/{partyId}/loan-applications/{loanApplicationId}:generate-offer',
    httpMethod: 'post',
    summary: 'Generate Loan Offer For An Existing Party',
    description:
      'Generate offer taking into account information provided during loan application input for an existing party.',
    stainlessPath: '(resource) parties.loan-applications > (method) generateOffer',
    qualified: 'client.parties.loanApplications.generateOffer',
    params: [
      'partyId: string;',
      'loanApplicationId: string;',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    response:
      "{ installments?: { feeAmount?: { amount: number; currency: string; }; feeTaxAmount?: { amount: number; currency: string; }; interestAmount?: { amount: number; currency: string; }; interestTaxAmount?: { amount: number; currency: string; }; number?: number; principalAmount?: { amount: number; currency: string; }; repaymentDate?: string; }[]; loanDetails?: { firstRepaymentDate: string; interestRate: number; loanAmount: { amount: number; currency: string; }; loanDuration: number; repaymentInterval?: number; repaymentUnit?: 'MONTHS'; }; }",
    markdown:
      "## generateOffer\n\n`client.parties.loanApplications.generateOffer(partyId: string, loanApplicationId: string, plmr-user-action?: boolean, X-Request-ID?: string): { installments?: object[]; loanDetails?: object; }`\n\n**post** `/api/v1/parties/{partyId}/loan-applications/{loanApplicationId}:generate-offer`\n\nGenerate offer taking into account information provided during loan application input for an existing party.\n\n### Parameters\n\n- `partyId: string`\n\n- `loanApplicationId: string`\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ installments?: { feeAmount?: { amount: number; currency: string; }; feeTaxAmount?: { amount: number; currency: string; }; interestAmount?: { amount: number; currency: string; }; interestTaxAmount?: { amount: number; currency: string; }; number?: number; principalAmount?: { amount: number; currency: string; }; repaymentDate?: string; }[]; loanDetails?: { firstRepaymentDate: string; interestRate: number; loanAmount: { amount: number; currency: string; }; loanDuration: number; repaymentInterval?: number; repaymentUnit?: 'MONTHS'; }; }`\n\n  - `installments?: { feeAmount?: { amount: number; currency: string; }; feeTaxAmount?: { amount: number; currency: string; }; interestAmount?: { amount: number; currency: string; }; interestTaxAmount?: { amount: number; currency: string; }; number?: number; principalAmount?: { amount: number; currency: string; }; repaymentDate?: string; }[]`\n  - `loanDetails?: { firstRepaymentDate: string; interestRate: number; loanAmount: { amount: number; currency: string; }; loanDuration: number; repaymentInterval?: number; repaymentUnit?: 'MONTHS'; }`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.parties.loanApplications.generateOffer('36a22460-ebc8-4ffe-a213-1683c5a420c5', { partyId: '36a22460-ebc8-4ffe-a213-1683c5a420c5' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.loanApplications.generateOffer',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.parties.loanApplications.generateOffer(\n  '36a22460-ebc8-4ffe-a213-1683c5a420c5',\n  { partyId: '36a22460-ebc8-4ffe-a213-1683c5a420c5' },\n);\n\nconsole.log(response.installments);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/loan-applications/$LOAN_APPLICATION_ID:generate-offer \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().loanApplications().generateOffer',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.loanapplications.LoanApplicationGenerateOfferParams\nimport com.plumery.api.models.parties.loanapplications.LoanApplicationGenerateOfferResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: LoanApplicationGenerateOfferParams = LoanApplicationGenerateOfferParams.builder()\n        .partyId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .loanApplicationId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .build()\n    val response: LoanApplicationGenerateOfferResponse = client.parties().loanApplications().generateOffer(params)\n}',
      },
      java: {
        method: 'parties().loanApplications().generateOffer',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.loanapplications.LoanApplicationGenerateOfferParams;\nimport com.plumery.api.models.parties.loanapplications.LoanApplicationGenerateOfferResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        LoanApplicationGenerateOfferParams params = LoanApplicationGenerateOfferParams.builder()\n            .partyId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .loanApplicationId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .build();\n        LoanApplicationGenerateOfferResponse response = client.parties().loanApplications().generateOffer(params);\n    }\n}',
      },
    },
  },
  {
    name: 'acceptOffer',
    endpoint: '/api/v1/parties/{partyId}/loan-applications/{loanApplicationId}:accept-offer',
    httpMethod: 'post',
    summary: 'Accept Loan Offer For An Existing Party',
    description: 'Accept offer for an existing party.',
    stainlessPath: '(resource) parties.loan-applications > (method) acceptOffer',
    qualified: 'client.parties.loanApplications.acceptOffer',
    params: [
      'partyId: string;',
      'loanApplicationId: string;',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    response: '{ links?: { href?: string; rel?: string; }[]; }',
    markdown:
      "## acceptOffer\n\n`client.parties.loanApplications.acceptOffer(partyId: string, loanApplicationId: string, plmr-user-action?: boolean, X-Request-ID?: string): { links?: object[]; }`\n\n**post** `/api/v1/parties/{partyId}/loan-applications/{loanApplicationId}:accept-offer`\n\nAccept offer for an existing party.\n\n### Parameters\n\n- `partyId: string`\n\n- `loanApplicationId: string`\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ links?: { href?: string; rel?: string; }[]; }`\n\n  - `links?: { href?: string; rel?: string; }[]`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.parties.loanApplications.acceptOffer('36a22460-ebc8-4ffe-a213-1683c5a420c5', { partyId: '36a22460-ebc8-4ffe-a213-1683c5a420c5' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.loanApplications.acceptOffer',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.parties.loanApplications.acceptOffer(\n  '36a22460-ebc8-4ffe-a213-1683c5a420c5',\n  { partyId: '36a22460-ebc8-4ffe-a213-1683c5a420c5' },\n);\n\nconsole.log(response.links);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/loan-applications/$LOAN_APPLICATION_ID:accept-offer \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().loanApplications().acceptOffer',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.loanapplications.LoanApplicationAcceptOfferParams\nimport com.plumery.api.models.parties.loanapplications.LoanApplicationAcceptOfferResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: LoanApplicationAcceptOfferParams = LoanApplicationAcceptOfferParams.builder()\n        .partyId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .loanApplicationId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .build()\n    val response: LoanApplicationAcceptOfferResponse = client.parties().loanApplications().acceptOffer(params)\n}',
      },
      java: {
        method: 'parties().loanApplications().acceptOffer',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.loanapplications.LoanApplicationAcceptOfferParams;\nimport com.plumery.api.models.parties.loanapplications.LoanApplicationAcceptOfferResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        LoanApplicationAcceptOfferParams params = LoanApplicationAcceptOfferParams.builder()\n            .partyId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .loanApplicationId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .build();\n        LoanApplicationAcceptOfferResponse response = client.parties().loanApplications().acceptOffer(params);\n    }\n}',
      },
    },
  },
  {
    name: 'setBankAccountDetails',
    endpoint: '/api/v1/parties/{partyId}/loan-applications/{loanApplicationId}:set-bank-account-details',
    httpMethod: 'post',
    summary: 'Collect Bank Account Details For An Existing Party',
    description: 'Collects party bank account details for a loan application for an existing party.',
    stainlessPath: '(resource) parties.loan-applications > (method) setBankAccountDetails',
    qualified: 'client.parties.loanApplications.setBankAccountDetails',
    params: [
      'partyId: string;',
      'loanApplicationId: string;',
      'accountNumber: string;',
      'bankNumber: string;',
      'accountName?: string;',
      'accountType?: string;',
      'bankName?: string;',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    markdown:
      "## setBankAccountDetails\n\n`client.parties.loanApplications.setBankAccountDetails(partyId: string, loanApplicationId: string, accountNumber: string, bankNumber: string, accountName?: string, accountType?: string, bankName?: string, plmr-user-action?: boolean, X-Request-ID?: string): void`\n\n**post** `/api/v1/parties/{partyId}/loan-applications/{loanApplicationId}:set-bank-account-details`\n\nCollects party bank account details for a loan application for an existing party.\n\n### Parameters\n\n- `partyId: string`\n\n- `loanApplicationId: string`\n\n- `accountNumber: string`\n\n- `bankNumber: string`\n\n- `accountName?: string`\n\n- `accountType?: string`\n\n- `bankName?: string`\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.loanApplications.setBankAccountDetails('36a22460-ebc8-4ffe-a213-1683c5a420c5', {\n  partyId: '36a22460-ebc8-4ffe-a213-1683c5a420c5',\n  accountNumber: '123456789012345678',\n  bankNumber: '123',\n})\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.loanApplications.setBankAccountDetails',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.loanApplications.setBankAccountDetails(\n  '36a22460-ebc8-4ffe-a213-1683c5a420c5',\n  {\n    partyId: '36a22460-ebc8-4ffe-a213-1683c5a420c5',\n    accountNumber: '123456789012345678',\n    bankNumber: '123',\n  },\n);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/loan-applications/$LOAN_APPLICATION_ID:set-bank-account-details \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "accountNumber": "123456789012345678",\n          "bankNumber": "123",\n          "accountName": "Account Name",\n          "accountType": "Checking",\n          "bankName": "Bank Name"\n        }\'',
      },
      kotlin: {
        method: 'parties().loanApplications().setBankAccountDetails',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.loanapplications.LoanApplicationSetBankAccountDetailsParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: LoanApplicationSetBankAccountDetailsParams = LoanApplicationSetBankAccountDetailsParams.builder()\n        .partyId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .loanApplicationId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .accountNumber("123456789012345678")\n        .bankNumber("123")\n        .build()\n    client.parties().loanApplications().setBankAccountDetails(params)\n}',
      },
      java: {
        method: 'parties().loanApplications().setBankAccountDetails',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.loanapplications.LoanApplicationSetBankAccountDetailsParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        LoanApplicationSetBankAccountDetailsParams params = LoanApplicationSetBankAccountDetailsParams.builder()\n            .partyId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .loanApplicationId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .accountNumber("123456789012345678")\n            .bankNumber("123")\n            .build();\n        client.parties().loanApplications().setBankAccountDetails(params);\n    }\n}',
      },
    },
  },
  {
    name: 'uploadDocument',
    endpoint: '/api/v1/parties/{partyId}/loan-applications/{loanApplicationId}:upload-document',
    httpMethod: 'post',
    summary: 'Upload Document For An Existing Party',
    description: 'Upload a document for a loan application for an existing party.',
    stainlessPath: '(resource) parties.loan-applications > (method) uploadDocument',
    qualified: 'client.parties.loanApplications.uploadDocument',
    params: [
      'partyId: string;',
      'loanApplicationId: string;',
      "documentType: 'INCOME_PROOF' | 'BUSINESS_LICENSE' | 'FINANCIAL_STATEMENTS';",
      'file: string;',
      'filename: string;',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    markdown:
      "## uploadDocument\n\n`client.parties.loanApplications.uploadDocument(partyId: string, loanApplicationId: string, documentType: 'INCOME_PROOF' | 'BUSINESS_LICENSE' | 'FINANCIAL_STATEMENTS', file: string, filename: string, plmr-user-action?: boolean, X-Request-ID?: string): void`\n\n**post** `/api/v1/parties/{partyId}/loan-applications/{loanApplicationId}:upload-document`\n\nUpload a document for a loan application for an existing party.\n\n### Parameters\n\n- `partyId: string`\n\n- `loanApplicationId: string`\n\n- `documentType: 'INCOME_PROOF' | 'BUSINESS_LICENSE' | 'FINANCIAL_STATEMENTS'`\n\n- `file: string`\n\n- `filename: string`\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.loanApplications.uploadDocument('36a22460-ebc8-4ffe-a213-1683c5a420c5', {\n  partyId: '36a22460-ebc8-4ffe-a213-1683c5a420c5',\n  documentType: 'INCOME_PROOF',\n  file: fs.createReadStream('path/to/file'),\n  filename: 'filename',\n})\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.loanApplications.uploadDocument',
        example:
          "import fs from 'fs';\nimport Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.loanApplications.uploadDocument('36a22460-ebc8-4ffe-a213-1683c5a420c5', {\n  partyId: '36a22460-ebc8-4ffe-a213-1683c5a420c5',\n  documentType: 'INCOME_PROOF',\n  file: fs.createReadStream('path/to/file'),\n  filename: 'filename',\n});",
      },
      http: {
        example:
          "curl https://api.plumery.com/api/v1/parties/$PARTY_ID/loan-applications/$LOAN_APPLICATION_ID:upload-document \\\n    -H 'Content-Type: multipart/form-data' \\\n    -H \"Cookie: $SESSION\" \\\n    -F documentType=INCOME_PROOF \\\n    -F 'file=@/path/to/file' \\\n    -F filename=filename",
      },
      kotlin: {
        method: 'parties().loanApplications().uploadDocument',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.loanapplications.LoanApplicationUploadDocumentParams\nimport java.io.ByteArrayInputStream\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: LoanApplicationUploadDocumentParams = LoanApplicationUploadDocumentParams.builder()\n        .partyId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .loanApplicationId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .documentType(LoanApplicationUploadDocumentParams.DocumentType.INCOME_PROOF)\n        .file("Example data".byteInputStream())\n        .filename("filename")\n        .build()\n    client.parties().loanApplications().uploadDocument(params)\n}',
      },
      java: {
        method: 'parties().loanApplications().uploadDocument',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.loanapplications.LoanApplicationUploadDocumentParams;\nimport java.io.ByteArrayInputStream;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        LoanApplicationUploadDocumentParams params = LoanApplicationUploadDocumentParams.builder()\n            .partyId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .loanApplicationId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .documentType(LoanApplicationUploadDocumentParams.DocumentType.INCOME_PROOF)\n            .file(new ByteArrayInputStream("Example data".getBytes()))\n            .filename("filename")\n            .build();\n        client.parties().loanApplications().uploadDocument(params);\n    }\n}',
      },
    },
  },
  {
    name: 'list',
    endpoint: '/api/v1/parties/{partyId}/loan-applications',
    httpMethod: 'get',
    summary: 'Get Loan Applications',
    description: 'Get user loans applications.',
    stainlessPath: '(resource) parties.loan-applications > (method) list',
    qualified: 'client.parties.loanApplications.list',
    params: ['partyId: string;', 'plmr-user-action?: boolean;', 'X-Request-ID?: string;'],
    response:
      "{ loanApplications?: { id?: string; businessDetails?: object; collateralDetails?: object; employmentDetails?: object; financialInformation?: object; housingDetails?: object; loanDetails?: object; offer?: object; personalDetails?: object; purposeDetails?: string; status?: 'RCVD' | 'ACPT' | 'RJCT'; }[]; }",
    markdown:
      "## list\n\n`client.parties.loanApplications.list(partyId: string, plmr-user-action?: boolean, X-Request-ID?: string): { loanApplications?: object[]; }`\n\n**get** `/api/v1/parties/{partyId}/loan-applications`\n\nGet user loans applications.\n\n### Parameters\n\n- `partyId: string`\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ loanApplications?: { id?: string; businessDetails?: { annualRevenue: object; businessType: string; numberOfEmployees: number; yearsInBusiness: number; }; collateralDetails?: { condition: 'EXCELLENT' | 'GOOD' | 'FAIR'; description: string; type: 'VEHICLE' | 'PROPERTY' | 'EQUIPMENT'; value: object; }; employmentDetails?: { employmentStatus: 'EMPLOYED' | 'HOMEMAKER' | 'UNEMPLOYED' | 'RETIRED' | 'SELF_EMPLOYED'; incomeFrequency: 'MONTHLY' | 'FORTNIGHTLY' | 'WEEKLY' | 'UNDEFINED'; monthlyIncome: object; occupation: string; originOfResources: string; }; financialInformation?: { monthlyExpenses: object; monthlyRevenue: object; netMonthlyProfit: object; }; housingDetails?: { housingSituation: 'RENTER' | 'HOMEOWNER_WITH_MORTGAGE' | 'HOMEOWNER_WITHOUT_MORTGAGE'; monthlyHousingCost: object; yearsLivingAtHome: number; landlinePhoneNumber?: string; }; loanDetails?: { firstRepaymentDate: string; loanAmount: object; loanDuration: number; repaymentInterval?: number; repaymentUnit?: 'MONTHS'; }; offer?: { amount?: number; currencyCode?: string; firstRepaymentDate?: string; offerId?: string; periodCount?: number; }; personalDetails?: { creditDestination: string; everDivorced: boolean; financialDependents: number; maritalStatus: string; monthlyExpenses: object; signatureSerialNumber?: string; }; purposeDetails?: string; status?: 'RCVD' | 'ACPT' | 'RJCT'; }[]; }`\n\n  - `loanApplications?: { id?: string; businessDetails?: { annualRevenue: { amount: number; currency: string; }; businessType: string; numberOfEmployees: number; yearsInBusiness: number; }; collateralDetails?: { condition: 'EXCELLENT' | 'GOOD' | 'FAIR'; description: string; type: 'VEHICLE' | 'PROPERTY' | 'EQUIPMENT'; value: { amount: number; currency: string; }; }; employmentDetails?: { employmentStatus: 'EMPLOYED' | 'HOMEMAKER' | 'UNEMPLOYED' | 'RETIRED' | 'SELF_EMPLOYED'; incomeFrequency: 'MONTHLY' | 'FORTNIGHTLY' | 'WEEKLY' | 'UNDEFINED'; monthlyIncome: { amount: number; currency: string; }; occupation: string; originOfResources: string; }; financialInformation?: { monthlyExpenses: { amount: number; currency: string; }; monthlyRevenue: { amount: number; currency: string; }; netMonthlyProfit: { amount: number; currency: string; }; }; housingDetails?: { housingSituation: 'RENTER' | 'HOMEOWNER_WITH_MORTGAGE' | 'HOMEOWNER_WITHOUT_MORTGAGE'; monthlyHousingCost: { amount: number; currency: string; }; yearsLivingAtHome: number; landlinePhoneNumber?: string; }; loanDetails?: { firstRepaymentDate: string; loanAmount: { amount: number; currency: string; }; loanDuration: number; repaymentInterval?: number; repaymentUnit?: 'MONTHS'; }; offer?: { amount?: number; currencyCode?: string; firstRepaymentDate?: string; offerId?: string; periodCount?: number; }; personalDetails?: { creditDestination: string; everDivorced: boolean; financialDependents: number; maritalStatus: string; monthlyExpenses: { amount: number; currency: string; }; signatureSerialNumber?: string; }; purposeDetails?: string; status?: 'RCVD' | 'ACPT' | 'RJCT'; }[]`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst loanApplications = await client.parties.loanApplications.list('36a22460-ebc8-4ffe-a213-1683c5a420c5');\n\nconsole.log(loanApplications);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.loanApplications.list',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst loanApplications = await client.parties.loanApplications.list(\n  '36a22460-ebc8-4ffe-a213-1683c5a420c5',\n);\n\nconsole.log(loanApplications.loanApplications);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/loan-applications \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().loanApplications().list',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.loanapplications.LoanApplicationListParams\nimport com.plumery.api.models.parties.loanapplications.LoanApplicationListResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val loanApplications: LoanApplicationListResponse = client.parties().loanApplications().list("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n}',
      },
      java: {
        method: 'parties().loanApplications().list',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.loanapplications.LoanApplicationListParams;\nimport com.plumery.api.models.parties.loanapplications.LoanApplicationListResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        LoanApplicationListResponse loanApplications = client.parties().loanApplications().list("36a22460-ebc8-4ffe-a213-1683c5a420c5");\n    }\n}',
      },
    },
  },
  {
    name: 'create',
    endpoint: '/api/v1/parties/{partyId}/cards',
    httpMethod: 'post',
    summary: 'Create new card',
    description:
      'Initiates a new card creation. \nOnce card creation is completed, card can be viewed in the list of cards \nand cardholder will be notified about successful card creation.\n',
    stainlessPath: '(resource) parties.cards > (method) create',
    qualified: 'client.parties.cards.create',
    params: [
      'partyId: string;',
      "body?: { primaryAccountId: string; additionalAttributes?: object; alias?: string; customisation?: { colour?: string; designId?: string; text?: string; }; holderId?: string; productId?: string; type?: string; } | { primaryAccountId: string; additionalAttributes?: object; alias?: string; customisation?: { colour?: string; designId?: string; text?: string; }; holderId?: string; productId?: string; shippingAddress?: { buildingNumber: string; country: string; streetName: string; townName: string; buildingName?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; suite?: string; townLocationName?: string; }; shippingMethod?: 'STANDARD' | 'EXPEDITE'; type?: string; };",
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    markdown:
      "## create\n\n`client.parties.cards.create(partyId: string, body?: { primaryAccountId: string; additionalAttributes?: object; alias?: string; customisation?: { colour?: string; designId?: string; text?: string; }; holderId?: string; productId?: string; type?: string; } | { primaryAccountId: string; additionalAttributes?: object; alias?: string; customisation?: { colour?: string; designId?: string; text?: string; }; holderId?: string; productId?: string; shippingAddress?: { buildingNumber: string; country: string; streetName: string; townName: string; buildingName?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; suite?: string; townLocationName?: string; }; shippingMethod?: 'STANDARD' | 'EXPEDITE'; type?: string; }, plmr-user-action?: boolean, X-Request-ID?: string): void`\n\n**post** `/api/v1/parties/{partyId}/cards`\n\nInitiates a new card creation. \nOnce card creation is completed, card can be viewed in the list of cards \nand cardholder will be notified about successful card creation.\n\n\n### Parameters\n\n- `partyId: string`\n\n- `body?: { primaryAccountId: string; additionalAttributes?: object; alias?: string; customisation?: { colour?: string; designId?: string; text?: string; }; holderId?: string; productId?: string; type?: string; } | { primaryAccountId: string; additionalAttributes?: object; alias?: string; customisation?: { colour?: string; designId?: string; text?: string; }; holderId?: string; productId?: string; shippingAddress?: { buildingNumber: string; country: string; streetName: string; townName: string; buildingName?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; suite?: string; townLocationName?: string; }; shippingMethod?: 'STANDARD' | 'EXPEDITE'; type?: string; }`\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.cards.create('6878951b-256b-4baa-9e81-ad4c577adc4e')\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.cards.create',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.cards.create('6878951b-256b-4baa-9e81-ad4c577adc4e', {\n  primaryAccountId: '332cb801-1510-46c8-b4c5-a16b2ebc3757',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/cards \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().cards().create',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.cards.CardCreateParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    client.parties().cards().create("6878951b-256b-4baa-9e81-ad4c577adc4e")\n}',
      },
      java: {
        method: 'parties().cards().create',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.cards.CardCreateParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        client.parties().cards().create("6878951b-256b-4baa-9e81-ad4c577adc4e");\n    }\n}',
      },
    },
  },
  {
    name: 'list',
    endpoint: '/api/v1/parties/{partyId}/cards',
    httpMethod: 'get',
    summary: 'Get cards',
    description: 'Retrieve all cards. It only provides non-sensitive card information.',
    stainlessPath: '(resource) parties.cards > (method) list',
    qualified: 'client.parties.cards.list',
    params: [
      'partyId: string;',
      'accounts?: string[];',
      'cardHolderName?: string;',
      "cardStatus?: 'ACTIVE' | 'INACTIVE' | 'FROZEN' | 'TERMINATED' | 'EXPIRED'[];",
      'includeStatusHistory?: boolean;',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    response:
      "{ cards: { cardholder: string; cardId: string; cardStatus: 'ACTIVE' | 'INACTIVE' | 'FROZEN' | 'TERMINATED' | 'EXPIRED'; cardStatusDateTime: string; expirationDate: string; fulfillmentStatus: 'ISSUED' | 'ORDERED' | 'SHIPPED' | 'DELIVERED' | 'REQUESTED'; fulfillmentStatusDateTime: string; maskedPan: string; primaryAccountId: string; additionalAttributes?: object; alias?: string; atmWithdrawalsAllowed?: boolean; cardStatusHistory?: { cardStatus?: 'ACTIVE' | 'INACTIVE' | 'FROZEN' | 'TERMINATED' | 'EXPIRED'; cardStatusDateTime?: string; }[]; contactlessAllowed?: boolean; customisation?: { colour?: string; designId?: string; text?: string; }; freezeReason?: string; fulfillmentStatusHistory?: { fulfillmentStatus?: 'ISSUED' | 'ORDERED' | 'SHIPPED' | 'DELIVERED' | 'REQUESTED'; fulfillmentStatusDateTime?: string; }[]; limitsList?: { amount: string; type: 'ATM_WITHDRAWAL' | 'PURCHASE'; window: 'DAILY' | 'WEEKLY' | 'MONTHLY'; }[]; onlinePaymentsAllowed?: boolean; productId?: string; type?: string; walletTokens?: { state: string; stateDateTime: string; walletType: string; walletToken?: string; }[]; }[]; }",
    markdown:
      "## list\n\n`client.parties.cards.list(partyId: string, accounts?: string[], cardHolderName?: string, cardStatus?: 'ACTIVE' | 'INACTIVE' | 'FROZEN' | 'TERMINATED' | 'EXPIRED'[], includeStatusHistory?: boolean, plmr-user-action?: boolean, X-Request-ID?: string): { cards: object[]; }`\n\n**get** `/api/v1/parties/{partyId}/cards`\n\nRetrieve all cards. It only provides non-sensitive card information.\n\n### Parameters\n\n- `partyId: string`\n\n- `accounts?: string[]`\n  Comma separated account ids to be contained in response.\n\n- `cardHolderName?: string`\n  Retrieve cards matching a specific card holder name. If unset, the filter will be \nignored and all cards will be retrieved.\n\n\n- `cardStatus?: 'ACTIVE' | 'INACTIVE' | 'FROZEN' | 'TERMINATED' | 'EXPIRED'[]`\n  Retrieve cards matching a specific card status (e.g., ACTIVE, FROZEN). If unset, the filter will be \nignored and all cards will be retrieved.\n\n\n- `includeStatusHistory?: boolean`\n  Set to `true` to include history of card transitions in the response.\n\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ cards: { cardholder: string; cardId: string; cardStatus: 'ACTIVE' | 'INACTIVE' | 'FROZEN' | 'TERMINATED' | 'EXPIRED'; cardStatusDateTime: string; expirationDate: string; fulfillmentStatus: 'ISSUED' | 'ORDERED' | 'SHIPPED' | 'DELIVERED' | 'REQUESTED'; fulfillmentStatusDateTime: string; maskedPan: string; primaryAccountId: string; additionalAttributes?: object; alias?: string; atmWithdrawalsAllowed?: boolean; cardStatusHistory?: { cardStatus?: 'ACTIVE' | 'INACTIVE' | 'FROZEN' | 'TERMINATED' | 'EXPIRED'; cardStatusDateTime?: string; }[]; contactlessAllowed?: boolean; customisation?: { colour?: string; designId?: string; text?: string; }; freezeReason?: string; fulfillmentStatusHistory?: { fulfillmentStatus?: 'ISSUED' | 'ORDERED' | 'SHIPPED' | 'DELIVERED' | 'REQUESTED'; fulfillmentStatusDateTime?: string; }[]; limitsList?: { amount: string; type: 'ATM_WITHDRAWAL' | 'PURCHASE'; window: 'DAILY' | 'WEEKLY' | 'MONTHLY'; }[]; onlinePaymentsAllowed?: boolean; productId?: string; type?: string; walletTokens?: { state: string; stateDateTime: string; walletType: string; walletToken?: string; }[]; }[]; }`\n\n  - `cards: { cardholder: string; cardId: string; cardStatus: 'ACTIVE' | 'INACTIVE' | 'FROZEN' | 'TERMINATED' | 'EXPIRED'; cardStatusDateTime: string; expirationDate: string; fulfillmentStatus: 'ISSUED' | 'ORDERED' | 'SHIPPED' | 'DELIVERED' | 'REQUESTED'; fulfillmentStatusDateTime: string; maskedPan: string; primaryAccountId: string; additionalAttributes?: object; alias?: string; atmWithdrawalsAllowed?: boolean; cardStatusHistory?: { cardStatus?: 'ACTIVE' | 'INACTIVE' | 'FROZEN' | 'TERMINATED' | 'EXPIRED'; cardStatusDateTime?: string; }[]; contactlessAllowed?: boolean; customisation?: { colour?: string; designId?: string; text?: string; }; freezeReason?: string; fulfillmentStatusHistory?: { fulfillmentStatus?: 'ISSUED' | 'ORDERED' | 'SHIPPED' | 'DELIVERED' | 'REQUESTED'; fulfillmentStatusDateTime?: string; }[]; limitsList?: { amount: string; type: 'ATM_WITHDRAWAL' | 'PURCHASE'; window: 'DAILY' | 'WEEKLY' | 'MONTHLY'; }[]; onlinePaymentsAllowed?: boolean; productId?: string; type?: string; walletTokens?: { state: string; stateDateTime: string; walletType: string; walletToken?: string; }[]; }[]`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst cards = await client.parties.cards.list('6878951b-256b-4baa-9e81-ad4c577adc4e');\n\nconsole.log(cards);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.cards.list',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst cards = await client.parties.cards.list('6878951b-256b-4baa-9e81-ad4c577adc4e');\n\nconsole.log(cards.cards);",
      },
      http: {
        example: 'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/cards \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().cards().list',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.cards.CardListParams\nimport com.plumery.api.models.parties.cards.CardListResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val cards: CardListResponse = client.parties().cards().list("6878951b-256b-4baa-9e81-ad4c577adc4e")\n}',
      },
      java: {
        method: 'parties().cards().list',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.cards.CardListParams;\nimport com.plumery.api.models.parties.cards.CardListResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        CardListResponse cards = client.parties().cards().list("6878951b-256b-4baa-9e81-ad4c577adc4e");\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/parties/{partyId}/cards/{cardId}',
    httpMethod: 'get',
    summary: 'Get card',
    description:
      'Retrieve details of a specific card. By default, it provides non-sensitive card information.\n\nWhen the query parameter `includeSensitiveData` is set to `true`, the response includes confidential card \ndetails such as the full Primary Account Number (PAN) and CVV2 number. Please note, for accessing such\nsensitive data, Multi-Factor Authentication (MFA) is recommended to ensure data security and privacy. This is \nbehaviour is pre-configured by default.\n',
    stainlessPath: '(resource) parties.cards > (method) retrieve',
    qualified: 'client.parties.cards.retrieve',
    params: [
      'partyId: string;',
      'cardId: string;',
      'includeSensitiveData?: boolean;',
      'includeStatusHistory?: boolean;',
      'plmr-mfa-challenge-id?: string;',
      'plmr-mfa-signature?: string;',
      'plmr-user-action?: boolean;',
      'X-Client-Public-Key?: string;',
      'X-Device-Integrity-Token?: string;',
      'X-Request-ID?: string;',
    ],
    response: 'object | object',
    markdown:
      "## retrieve\n\n`client.parties.cards.retrieve(partyId: string, cardId: string, includeSensitiveData?: boolean, includeStatusHistory?: boolean, plmr-mfa-challenge-id?: string, plmr-mfa-signature?: string, plmr-user-action?: boolean, X-Client-Public-Key?: string, X-Device-Integrity-Token?: string, X-Request-ID?: string): { cardholder: string; cardId: string; cardStatus: 'ACTIVE' | 'INACTIVE' | 'FROZEN' | 'TERMINATED' | 'EXPIRED'; cardStatusDateTime: string; expirationDate: string; fulfillmentStatus: 'ISSUED' | 'ORDERED' | 'SHIPPED' | 'DELIVERED' | 'REQUESTED'; fulfillmentStatusDateTime: string; maskedPan: string; primaryAccountId: string; additionalAttributes?: object; alias?: string; atmWithdrawalsAllowed?: boolean; cardStatusHistory?: object[]; contactlessAllowed?: boolean; customisation?: object; freezeReason?: string; fulfillmentStatusHistory?: object[]; limitsList?: object[]; onlinePaymentsAllowed?: boolean; productId?: string; type?: string; walletTokens?: object[]; } | { cardholder: string; cardId: string; cardStatus: 'ACTIVE' | 'INACTIVE' | 'FROZEN' | 'TERMINATED' | 'EXPIRED'; cardStatusDateTime: string; encryptedPayload: object; expirationDate: string; fulfillmentStatus: 'ISSUED' | 'ORDERED' | 'SHIPPED' | 'DELIVERED' | 'REQUESTED'; fulfillmentStatusDateTime: string; maskedPan: string; primaryAccountId: string; additionalAttributes?: object; alias?: string; atmWithdrawalsAllowed?: boolean; cardStatusHistory?: object[]; contactlessAllowed?: boolean; customisation?: object; freezeReason?: string; fulfillmentStatusHistory?: object[]; limitsList?: object[]; onlinePaymentsAllowed?: boolean; productId?: string; type?: string; walletTokens?: object[]; }`\n\n**get** `/api/v1/parties/{partyId}/cards/{cardId}`\n\nRetrieve details of a specific card. By default, it provides non-sensitive card information.\n\nWhen the query parameter `includeSensitiveData` is set to `true`, the response includes confidential card \ndetails such as the full Primary Account Number (PAN) and CVV2 number. Please note, for accessing such\nsensitive data, Multi-Factor Authentication (MFA) is recommended to ensure data security and privacy. This is \nbehaviour is pre-configured by default.\n\n\n### Parameters\n\n- `partyId: string`\n\n- `cardId: string`\n  Unique identifier for the card.\n\n- `includeSensitiveData?: boolean`\n  Set to `true` to include sensitive card data in the response.\n\n\n- `includeStatusHistory?: boolean`\n  Set to `true` to include history of card transitions in the response.\n\n\n- `plmr-mfa-challenge-id?: string`\n\n- `plmr-mfa-signature?: string`\n\n- `plmr-user-action?: boolean`\n\n- `X-Client-Public-Key?: string`\n\n- `X-Device-Integrity-Token?: string`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ cardholder: string; cardId: string; cardStatus: 'ACTIVE' | 'INACTIVE' | 'FROZEN' | 'TERMINATED' | 'EXPIRED'; cardStatusDateTime: string; expirationDate: string; fulfillmentStatus: 'ISSUED' | 'ORDERED' | 'SHIPPED' | 'DELIVERED' | 'REQUESTED'; fulfillmentStatusDateTime: string; maskedPan: string; primaryAccountId: string; additionalAttributes?: object; alias?: string; atmWithdrawalsAllowed?: boolean; cardStatusHistory?: { cardStatus?: 'ACTIVE' | 'INACTIVE' | 'FROZEN' | 'TERMINATED' | 'EXPIRED'; cardStatusDateTime?: string; }[]; contactlessAllowed?: boolean; customisation?: { colour?: string; designId?: string; text?: string; }; freezeReason?: string; fulfillmentStatusHistory?: { fulfillmentStatus?: 'ISSUED' | 'ORDERED' | 'SHIPPED' | 'DELIVERED' | 'REQUESTED'; fulfillmentStatusDateTime?: string; }[]; limitsList?: { amount: string; type: 'ATM_WITHDRAWAL' | 'PURCHASE'; window: 'DAILY' | 'WEEKLY' | 'MONTHLY'; }[]; onlinePaymentsAllowed?: boolean; productId?: string; type?: string; walletTokens?: { state: string; stateDateTime: string; walletType: string; walletToken?: string; }[]; } | { cardholder: string; cardId: string; cardStatus: 'ACTIVE' | 'INACTIVE' | 'FROZEN' | 'TERMINATED' | 'EXPIRED'; cardStatusDateTime: string; encryptedPayload: { encryptedData: string; iv: string; salt: string; serverPublicKey: string; }; expirationDate: string; fulfillmentStatus: 'ISSUED' | 'ORDERED' | 'SHIPPED' | 'DELIVERED' | 'REQUESTED'; fulfillmentStatusDateTime: string; maskedPan: string; primaryAccountId: string; additionalAttributes?: object; alias?: string; atmWithdrawalsAllowed?: boolean; cardStatusHistory?: { cardStatus?: 'ACTIVE' | 'INACTIVE' | 'FROZEN' | 'TERMINATED' | 'EXPIRED'; cardStatusDateTime?: string; }[]; contactlessAllowed?: boolean; customisation?: { colour?: string; designId?: string; text?: string; }; freezeReason?: string; fulfillmentStatusHistory?: { fulfillmentStatus?: 'ISSUED' | 'ORDERED' | 'SHIPPED' | 'DELIVERED' | 'REQUESTED'; fulfillmentStatusDateTime?: string; }[]; limitsList?: { amount: string; type: 'ATM_WITHDRAWAL' | 'PURCHASE'; window: 'DAILY' | 'WEEKLY' | 'MONTHLY'; }[]; onlinePaymentsAllowed?: boolean; productId?: string; type?: string; walletTokens?: { state: string; stateDateTime: string; walletType: string; walletToken?: string; }[]; }`\n  Safe representation of a card, excluding any sensitive data.\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst card = await client.parties.cards.retrieve('d932902f-6832-4083-8c4e-77328b0e05d1', { partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e' });\n\nconsole.log(card);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.cards.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst card = await client.parties.cards.retrieve('d932902f-6832-4083-8c4e-77328b0e05d1', {\n  partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n});\n\nconsole.log(card);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/cards/$CARD_ID \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().cards().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.cards.CardRetrieveParams\nimport com.plumery.api.models.parties.cards.CardRetrieveResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: CardRetrieveParams = CardRetrieveParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .cardId("d932902f-6832-4083-8c4e-77328b0e05d1")\n        .build()\n    val card: CardRetrieveResponse = client.parties().cards().retrieve(params)\n}',
      },
      java: {
        method: 'parties().cards().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.cards.CardRetrieveParams;\nimport com.plumery.api.models.parties.cards.CardRetrieveResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        CardRetrieveParams params = CardRetrieveParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .cardId("d932902f-6832-4083-8c4e-77328b0e05d1")\n            .build();\n        CardRetrieveResponse card = client.parties().cards().retrieve(params);\n    }\n}',
      },
    },
  },
  {
    name: 'activate',
    endpoint: '/api/v1/parties/{partyId}/cards/{cardId}:activate',
    httpMethod: 'post',
    summary: 'Activate card',
    description: 'Activate a specific card.\n',
    stainlessPath: '(resource) parties.cards > (method) activate',
    qualified: 'client.parties.cards.activate',
    params: ['partyId: string;', 'cardId: string;', 'plmr-user-action?: boolean;', 'X-Request-ID?: string;'],
    response: "{ cardStatus: 'ACTIVE' | 'INACTIVE' | 'FROZEN' | 'TERMINATED' | 'EXPIRED'; }",
    markdown:
      "## activate\n\n`client.parties.cards.activate(partyId: string, cardId: string, plmr-user-action?: boolean, X-Request-ID?: string): { cardStatus: 'ACTIVE' | 'INACTIVE' | 'FROZEN' | 'TERMINATED' | 'EXPIRED'; }`\n\n**post** `/api/v1/parties/{partyId}/cards/{cardId}:activate`\n\nActivate a specific card.\n\n\n### Parameters\n\n- `partyId: string`\n\n- `cardId: string`\n  Unique identifier for the card.\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ cardStatus: 'ACTIVE' | 'INACTIVE' | 'FROZEN' | 'TERMINATED' | 'EXPIRED'; }`\n  The card status that was updated\n\n  - `cardStatus: 'ACTIVE' | 'INACTIVE' | 'FROZEN' | 'TERMINATED' | 'EXPIRED'`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.parties.cards.activate('d932902f-6832-4083-8c4e-77328b0e05d1', { partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.cards.activate',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.parties.cards.activate('d932902f-6832-4083-8c4e-77328b0e05d1', {\n  partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n});\n\nconsole.log(response.cardStatus);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/cards/$CARD_ID:activate \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().cards().activate',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.cards.CardActivateParams\nimport com.plumery.api.models.parties.cards.CardActivateResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: CardActivateParams = CardActivateParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .cardId("d932902f-6832-4083-8c4e-77328b0e05d1")\n        .build()\n    val response: CardActivateResponse = client.parties().cards().activate(params)\n}',
      },
      java: {
        method: 'parties().cards().activate',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.cards.CardActivateParams;\nimport com.plumery.api.models.parties.cards.CardActivateResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        CardActivateParams params = CardActivateParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .cardId("d932902f-6832-4083-8c4e-77328b0e05d1")\n            .build();\n        CardActivateResponse response = client.parties().cards().activate(params);\n    }\n}',
      },
    },
  },
  {
    name: 'updateAlias',
    endpoint: '/api/v1/parties/{partyId}/cards/{cardId}:update-alias',
    httpMethod: 'post',
    summary: 'Update alias',
    description: 'Update (or create if not exists) the card alias.\n',
    stainlessPath: '(resource) parties.cards > (method) updateAlias',
    qualified: 'client.parties.cards.updateAlias',
    params: [
      'partyId: string;',
      'cardId: string;',
      'alias: string;',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    response: '{ alias: string; }',
    markdown:
      "## updateAlias\n\n`client.parties.cards.updateAlias(partyId: string, cardId: string, alias: string, plmr-user-action?: boolean, X-Request-ID?: string): { alias: string; }`\n\n**post** `/api/v1/parties/{partyId}/cards/{cardId}:update-alias`\n\nUpdate (or create if not exists) the card alias.\n\n\n### Parameters\n\n- `partyId: string`\n\n- `cardId: string`\n  Unique identifier for the card.\n\n- `alias: string`\n  The card alias.\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ alias: string; }`\n  The card alias that was updated\n\n  - `alias: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.parties.cards.updateAlias('d932902f-6832-4083-8c4e-77328b0e05d1', { partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e', alias: 'Online Shopping' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.cards.updateAlias',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.parties.cards.updateAlias('d932902f-6832-4083-8c4e-77328b0e05d1', {\n  partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  alias: 'Online Shopping',\n});\n\nconsole.log(response.alias);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/cards/$CARD_ID:update-alias \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "alias": "Online Shopping"\n        }\'',
      },
      kotlin: {
        method: 'parties().cards().updateAlias',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.cards.CardUpdateAliasParams\nimport com.plumery.api.models.parties.cards.CardUpdateAliasResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: CardUpdateAliasParams = CardUpdateAliasParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .cardId("d932902f-6832-4083-8c4e-77328b0e05d1")\n        .alias("Online Shopping")\n        .build()\n    val response: CardUpdateAliasResponse = client.parties().cards().updateAlias(params)\n}',
      },
      java: {
        method: 'parties().cards().updateAlias',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.cards.CardUpdateAliasParams;\nimport com.plumery.api.models.parties.cards.CardUpdateAliasResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        CardUpdateAliasParams params = CardUpdateAliasParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .cardId("d932902f-6832-4083-8c4e-77328b0e05d1")\n            .alias("Online Shopping")\n            .build();\n        CardUpdateAliasResponse response = client.parties().cards().updateAlias(params);\n    }\n}',
      },
    },
  },
  {
    name: 'freeze',
    endpoint: '/api/v1/parties/{partyId}/cards/{cardId}:freeze',
    httpMethod: 'post',
    summary: 'Freeze card',
    description:
      'Freeze specific card associated with the party. Useful in scenarios like suspected fraudulent activities,\ncard is not actively used or when the cardholder misplaces the card.\n',
    stainlessPath: '(resource) parties.cards > (method) freeze',
    qualified: 'client.parties.cards.freeze',
    params: [
      'partyId: string;',
      'cardId: string;',
      'freezeReason?: string;',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    response: "{ cardStatus: 'ACTIVE' | 'INACTIVE' | 'FROZEN' | 'TERMINATED' | 'EXPIRED'; }",
    markdown:
      "## freeze\n\n`client.parties.cards.freeze(partyId: string, cardId: string, freezeReason?: string, plmr-user-action?: boolean, X-Request-ID?: string): { cardStatus: 'ACTIVE' | 'INACTIVE' | 'FROZEN' | 'TERMINATED' | 'EXPIRED'; }`\n\n**post** `/api/v1/parties/{partyId}/cards/{cardId}:freeze`\n\nFreeze specific card associated with the party. Useful in scenarios like suspected fraudulent activities,\ncard is not actively used or when the cardholder misplaces the card.\n\n\n### Parameters\n\n- `partyId: string`\n\n- `cardId: string`\n  Unique identifier for the card.\n\n- `freezeReason?: string`\n  Text value describing the reason for card freeze. \nOnly present when card is frozen and cleared on other card status change operations.\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ cardStatus: 'ACTIVE' | 'INACTIVE' | 'FROZEN' | 'TERMINATED' | 'EXPIRED'; }`\n  The card status that was updated\n\n  - `cardStatus: 'ACTIVE' | 'INACTIVE' | 'FROZEN' | 'TERMINATED' | 'EXPIRED'`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.parties.cards.freeze('d932902f-6832-4083-8c4e-77328b0e05d1', { partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.cards.freeze',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.parties.cards.freeze('d932902f-6832-4083-8c4e-77328b0e05d1', {\n  partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n});\n\nconsole.log(response.cardStatus);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/cards/$CARD_ID:freeze \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().cards().freeze',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.cards.CardFreezeParams\nimport com.plumery.api.models.parties.cards.CardFreezeResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: CardFreezeParams = CardFreezeParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .cardId("d932902f-6832-4083-8c4e-77328b0e05d1")\n        .build()\n    val response: CardFreezeResponse = client.parties().cards().freeze(params)\n}',
      },
      java: {
        method: 'parties().cards().freeze',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.cards.CardFreezeParams;\nimport com.plumery.api.models.parties.cards.CardFreezeResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        CardFreezeParams params = CardFreezeParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .cardId("d932902f-6832-4083-8c4e-77328b0e05d1")\n            .build();\n        CardFreezeResponse response = client.parties().cards().freeze(params);\n    }\n}',
      },
    },
  },
  {
    name: 'unfreeze',
    endpoint: '/api/v1/parties/{partyId}/cards/{cardId}:unfreeze',
    httpMethod: 'post',
    summary: 'Unfreeze card',
    description: 'Unfreeze a specific card that was previously frozen.',
    stainlessPath: '(resource) parties.cards > (method) unfreeze',
    qualified: 'client.parties.cards.unfreeze',
    params: ['partyId: string;', 'cardId: string;', 'plmr-user-action?: boolean;', 'X-Request-ID?: string;'],
    response: "{ cardStatus: 'ACTIVE' | 'INACTIVE' | 'FROZEN' | 'TERMINATED' | 'EXPIRED'; }",
    markdown:
      "## unfreeze\n\n`client.parties.cards.unfreeze(partyId: string, cardId: string, plmr-user-action?: boolean, X-Request-ID?: string): { cardStatus: 'ACTIVE' | 'INACTIVE' | 'FROZEN' | 'TERMINATED' | 'EXPIRED'; }`\n\n**post** `/api/v1/parties/{partyId}/cards/{cardId}:unfreeze`\n\nUnfreeze a specific card that was previously frozen.\n\n### Parameters\n\n- `partyId: string`\n\n- `cardId: string`\n  Unique identifier for the card.\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ cardStatus: 'ACTIVE' | 'INACTIVE' | 'FROZEN' | 'TERMINATED' | 'EXPIRED'; }`\n  The card status that was updated\n\n  - `cardStatus: 'ACTIVE' | 'INACTIVE' | 'FROZEN' | 'TERMINATED' | 'EXPIRED'`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.parties.cards.unfreeze('d932902f-6832-4083-8c4e-77328b0e05d1', { partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.cards.unfreeze',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.parties.cards.unfreeze('d932902f-6832-4083-8c4e-77328b0e05d1', {\n  partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n});\n\nconsole.log(response.cardStatus);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/cards/$CARD_ID:unfreeze \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().cards().unfreeze',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.cards.CardUnfreezeParams\nimport com.plumery.api.models.parties.cards.CardUnfreezeResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: CardUnfreezeParams = CardUnfreezeParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .cardId("d932902f-6832-4083-8c4e-77328b0e05d1")\n        .build()\n    val response: CardUnfreezeResponse = client.parties().cards().unfreeze(params)\n}',
      },
      java: {
        method: 'parties().cards().unfreeze',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.cards.CardUnfreezeParams;\nimport com.plumery.api.models.parties.cards.CardUnfreezeResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        CardUnfreezeParams params = CardUnfreezeParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .cardId("d932902f-6832-4083-8c4e-77328b0e05d1")\n            .build();\n        CardUnfreezeResponse response = client.parties().cards().unfreeze(params);\n    }\n}',
      },
    },
  },
  {
    name: 'terminate',
    endpoint: '/api/v1/parties/{partyId}/cards/{cardId}:terminate',
    httpMethod: 'post',
    summary: 'Terminate card',
    description:
      'Terminate a specific card no matter the current cart status. Once a card has been terminated, it can not be\nreinstated or unfrozen. A new card would need to be issued for the party after the termination.\n',
    stainlessPath: '(resource) parties.cards > (method) terminate',
    qualified: 'client.parties.cards.terminate',
    params: ['partyId: string;', 'cardId: string;', 'plmr-user-action?: boolean;', 'X-Request-ID?: string;'],
    response: "{ cardStatus: 'ACTIVE' | 'INACTIVE' | 'FROZEN' | 'TERMINATED' | 'EXPIRED'; }",
    markdown:
      "## terminate\n\n`client.parties.cards.terminate(partyId: string, cardId: string, plmr-user-action?: boolean, X-Request-ID?: string): { cardStatus: 'ACTIVE' | 'INACTIVE' | 'FROZEN' | 'TERMINATED' | 'EXPIRED'; }`\n\n**post** `/api/v1/parties/{partyId}/cards/{cardId}:terminate`\n\nTerminate a specific card no matter the current cart status. Once a card has been terminated, it can not be\nreinstated or unfrozen. A new card would need to be issued for the party after the termination.\n\n\n### Parameters\n\n- `partyId: string`\n\n- `cardId: string`\n  Unique identifier for the card.\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ cardStatus: 'ACTIVE' | 'INACTIVE' | 'FROZEN' | 'TERMINATED' | 'EXPIRED'; }`\n  The card status that was updated\n\n  - `cardStatus: 'ACTIVE' | 'INACTIVE' | 'FROZEN' | 'TERMINATED' | 'EXPIRED'`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.parties.cards.terminate('d932902f-6832-4083-8c4e-77328b0e05d1', { partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.cards.terminate',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.parties.cards.terminate('d932902f-6832-4083-8c4e-77328b0e05d1', {\n  partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n});\n\nconsole.log(response.cardStatus);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/cards/$CARD_ID:terminate \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().cards().terminate',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.cards.CardTerminateParams\nimport com.plumery.api.models.parties.cards.CardTerminateResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: CardTerminateParams = CardTerminateParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .cardId("d932902f-6832-4083-8c4e-77328b0e05d1")\n        .build()\n    val response: CardTerminateResponse = client.parties().cards().terminate(params)\n}',
      },
      java: {
        method: 'parties().cards().terminate',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.cards.CardTerminateParams;\nimport com.plumery.api.models.parties.cards.CardTerminateResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        CardTerminateParams params = CardTerminateParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .cardId("d932902f-6832-4083-8c4e-77328b0e05d1")\n            .build();\n        CardTerminateResponse response = client.parties().cards().terminate(params);\n    }\n}',
      },
    },
  },
  {
    name: 'updateLimits',
    endpoint: '/api/v1/parties/{partyId}/cards/{cardId}:update-limits',
    httpMethod: 'post',
    summary: 'Update limits',
    description:
      'Update (or create if not exists) limits for the card. The existing limits will be replaced with the list provided.\n',
    stainlessPath: '(resource) parties.cards > (method) updateLimits',
    qualified: 'client.parties.cards.updateLimits',
    params: [
      'partyId: string;',
      'cardId: string;',
      "body?: { amount: string; type: 'ATM_WITHDRAWAL' | 'PURCHASE'; window: 'DAILY' | 'WEEKLY' | 'MONTHLY'; }[];",
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    markdown:
      "## updateLimits\n\n`client.parties.cards.updateLimits(partyId: string, cardId: string, body?: { amount: string; type: 'ATM_WITHDRAWAL' | 'PURCHASE'; window: 'DAILY' | 'WEEKLY' | 'MONTHLY'; }[], plmr-user-action?: boolean, X-Request-ID?: string): void`\n\n**post** `/api/v1/parties/{partyId}/cards/{cardId}:update-limits`\n\nUpdate (or create if not exists) limits for the card. The existing limits will be replaced with the list provided.\n\n\n### Parameters\n\n- `partyId: string`\n\n- `cardId: string`\n  Unique identifier for the card.\n\n- `body?: { amount: string; type: 'ATM_WITHDRAWAL' | 'PURCHASE'; window: 'DAILY' | 'WEEKLY' | 'MONTHLY'; }[]`\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.cards.updateLimits('d932902f-6832-4083-8c4e-77328b0e05d1', { partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.cards.updateLimits',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.cards.updateLimits('d932902f-6832-4083-8c4e-77328b0e05d1', {\n  partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/cards/$CARD_ID:update-limits \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().cards().updateLimits',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.cards.CardUpdateLimitsParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: CardUpdateLimitsParams = CardUpdateLimitsParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .cardId("d932902f-6832-4083-8c4e-77328b0e05d1")\n        .build()\n    client.parties().cards().updateLimits(params)\n}',
      },
      java: {
        method: 'parties().cards().updateLimits',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.cards.CardUpdateLimitsParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        CardUpdateLimitsParams params = CardUpdateLimitsParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .cardId("d932902f-6832-4083-8c4e-77328b0e05d1")\n            .build();\n        client.parties().cards().updateLimits(params);\n    }\n}',
      },
    },
  },
  {
    name: 'updateControls',
    endpoint: '/api/v1/parties/{partyId}/cards/{cardId}:update-controls',
    httpMethod: 'post',
    summary: 'Update controls',
    description: 'Update controls for the card.\n',
    stainlessPath: '(resource) parties.cards > (method) updateControls',
    qualified: 'client.parties.cards.updateControls',
    params: [
      'partyId: string;',
      'cardId: string;',
      'additionalAttributes?: object;',
      'atmWithdrawalsAllowed?: boolean;',
      'contactlessAllowed?: boolean;',
      'onlinePaymentsAllowed?: boolean;',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    markdown:
      "## updateControls\n\n`client.parties.cards.updateControls(partyId: string, cardId: string, additionalAttributes?: object, atmWithdrawalsAllowed?: boolean, contactlessAllowed?: boolean, onlinePaymentsAllowed?: boolean, plmr-user-action?: boolean, X-Request-ID?: string): void`\n\n**post** `/api/v1/parties/{partyId}/cards/{cardId}:update-controls`\n\nUpdate controls for the card.\n\n\n### Parameters\n\n- `partyId: string`\n\n- `cardId: string`\n  Unique identifier for the card.\n\n- `additionalAttributes?: object`\n  The `additionalAttributes` provided will replace the card's existing\n`additionalAttributes` in full. The two objects are not merged, so any key that is\nnot present in the request is removed. Omitting the field, or sending an empty\nobject, leaves the stored attributes unchanged; there is no way to clear them.\n\n\n- `atmWithdrawalsAllowed?: boolean`\n  Indicates whether ATM cash withdrawals are permitted for the card. By default at card creation this is true.\n\n\n- `contactlessAllowed?: boolean`\n  Indicates whether contactless payments are permitted for the card. By default at card creation this is true.\n\n\n- `onlinePaymentsAllowed?: boolean`\n  Indicates whether online (e-commerce) payments are permitted for the card. By default at card creation this is true.\n\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.cards.updateControls('d932902f-6832-4083-8c4e-77328b0e05d1', { partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.cards.updateControls',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.cards.updateControls('d932902f-6832-4083-8c4e-77328b0e05d1', {\n  partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/cards/$CARD_ID:update-controls \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().cards().updateControls',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.cards.CardUpdateControlsParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: CardUpdateControlsParams = CardUpdateControlsParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .cardId("d932902f-6832-4083-8c4e-77328b0e05d1")\n        .build()\n    client.parties().cards().updateControls(params)\n}',
      },
      java: {
        method: 'parties().cards().updateControls',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.cards.CardUpdateControlsParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        CardUpdateControlsParams params = CardUpdateControlsParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .cardId("d932902f-6832-4083-8c4e-77328b0e05d1")\n            .build();\n        client.parties().cards().updateControls(params);\n    }\n}',
      },
    },
  },
  {
    name: 'provisionGoogleWallet',
    endpoint: '/api/v1/parties/{partyId}/cards/{cardId}:provision-google-wallet',
    httpMethod: 'post',
    summary: 'Provision Google Wallet',
    description: 'Initiates the provisioning of a card to Google Wallet.\n',
    stainlessPath: '(resource) parties.cards > (method) provisionGoogleWallet',
    qualified: 'client.parties.cards.provisionGoogleWallet',
    params: [
      'partyId: string;',
      'cardId: string;',
      'deviceId: string;',
      "deviceType: 'MOBILE_PHONE' | 'TABLET' | 'WATCH';",
      'provisioningAppVersion: string;',
      'walletAccountId: string;',
      'stableHardwareId?: string;',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    response: '{ provisioningData: string; }',
    markdown:
      "## provisionGoogleWallet\n\n`client.parties.cards.provisionGoogleWallet(partyId: string, cardId: string, deviceId: string, deviceType: 'MOBILE_PHONE' | 'TABLET' | 'WATCH', provisioningAppVersion: string, walletAccountId: string, stableHardwareId?: string, plmr-user-action?: boolean, X-Request-ID?: string): { provisioningData: string; }`\n\n**post** `/api/v1/parties/{partyId}/cards/{cardId}:provision-google-wallet`\n\nInitiates the provisioning of a card to Google Wallet.\n\n\n### Parameters\n\n- `partyId: string`\n\n- `cardId: string`\n  Unique identifier for the card.\n\n- `deviceId: string`\n  Unique identifier of the user’s Google device. Must be between 1 and 24 characters.\n\n- `deviceType: 'MOBILE_PHONE' | 'TABLET' | 'WATCH'`\n  Type of device where the digital wallet token will be provisioned.\n\n- `provisioningAppVersion: string`\n  Version of the application initiating the provisioning request.\n\n- `walletAccountId: string`\n  The user's Google Wallet account ID, provided by Google during the provisioning process.\n\n- `stableHardwareId?: string`\n  A stable hardware identifier for the user's device, used to enhance security during provisioning.\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ provisioningData: string; }`\n  The necessary details to complete the card provisioning.\n\n  - `provisioningData: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.parties.cards.provisionGoogleWallet('d932902f-6832-4083-8c4e-77328b0e05d1', {\n  partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  deviceId: 'x',\n  deviceType: 'MOBILE_PHONE',\n  provisioningAppVersion: 'x',\n  walletAccountId: 'x',\n});\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.cards.provisionGoogleWallet',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.parties.cards.provisionGoogleWallet(\n  'd932902f-6832-4083-8c4e-77328b0e05d1',\n  {\n    partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n    deviceId: 'x',\n    deviceType: 'MOBILE_PHONE',\n    provisioningAppVersion: 'x',\n    walletAccountId: 'x',\n  },\n);\n\nconsole.log(response.provisioningData);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/cards/$CARD_ID:provision-google-wallet \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "deviceId": "x",\n          "deviceType": "MOBILE_PHONE",\n          "provisioningAppVersion": "x",\n          "walletAccountId": "x"\n        }\'',
      },
      kotlin: {
        method: 'parties().cards().provisionGoogleWallet',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.cards.CardProvisionGoogleWalletParams\nimport com.plumery.api.models.parties.cards.CardProvisionGoogleWalletResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: CardProvisionGoogleWalletParams = CardProvisionGoogleWalletParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .cardId("d932902f-6832-4083-8c4e-77328b0e05d1")\n        .deviceId("x")\n        .deviceType(CardProvisionGoogleWalletParams.DeviceType.MOBILE_PHONE)\n        .provisioningAppVersion("x")\n        .walletAccountId("x")\n        .build()\n    val response: CardProvisionGoogleWalletResponse = client.parties().cards().provisionGoogleWallet(params)\n}',
      },
      java: {
        method: 'parties().cards().provisionGoogleWallet',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.cards.CardProvisionGoogleWalletParams;\nimport com.plumery.api.models.parties.cards.CardProvisionGoogleWalletResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        CardProvisionGoogleWalletParams params = CardProvisionGoogleWalletParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .cardId("d932902f-6832-4083-8c4e-77328b0e05d1")\n            .deviceId("x")\n            .deviceType(CardProvisionGoogleWalletParams.DeviceType.MOBILE_PHONE)\n            .provisioningAppVersion("x")\n            .walletAccountId("x")\n            .build();\n        CardProvisionGoogleWalletResponse response = client.parties().cards().provisionGoogleWallet(params);\n    }\n}',
      },
    },
  },
  {
    name: 'provisionAppleWallet',
    endpoint: '/api/v1/parties/{partyId}/cards/{cardId}:provision-apple-wallet',
    httpMethod: 'post',
    summary: 'Provision Apple Wallet',
    description: 'Initiates the provisioning of a card to Apple Wallet.\n',
    stainlessPath: '(resource) parties.cards > (method) provisionAppleWallet',
    qualified: 'client.parties.cards.provisionAppleWallet',
    params: [
      'partyId: string;',
      'cardId: string;',
      'certificates: string[];',
      "deviceType: 'MOBILE_PHONE' | 'TABLET' | 'WATCH';",
      'nonce: string;',
      'nonceSignature: string;',
      'provisioningAppVersion: string;',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    response: '{ activationData: string; encryptedPassData: string; ephemeralPublicKey: string; }',
    markdown:
      "## provisionAppleWallet\n\n`client.parties.cards.provisionAppleWallet(partyId: string, cardId: string, certificates: string[], deviceType: 'MOBILE_PHONE' | 'TABLET' | 'WATCH', nonce: string, nonceSignature: string, provisioningAppVersion: string, plmr-user-action?: boolean, X-Request-ID?: string): { activationData: string; encryptedPassData: string; ephemeralPublicKey: string; }`\n\n**post** `/api/v1/parties/{partyId}/cards/{cardId}:provision-apple-wallet`\n\nInitiates the provisioning of a card to Apple Wallet.\n\n\n### Parameters\n\n- `partyId: string`\n\n- `cardId: string`\n  Unique identifier for the card.\n\n- `certificates: string[]`\n  An array of Base64-encoded certificates provided by Apple.\nThe first element must be the leaf certificate, followed by any subordinate CA certificates, in order.\n\n\n- `deviceType: 'MOBILE_PHONE' | 'TABLET' | 'WATCH'`\n  Type of device where the digital wallet token will be provisioned.\n\n- `nonce: string`\n  A one-time-use, Base64-encoded nonce provided by Apple for security purposes.\n\n- `nonceSignature: string`\n  A Base64-encoded signature of the nonce.\n\n- `provisioningAppVersion: string`\n  Version of the application initiating the provisioning request.\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ activationData: string; encryptedPassData: string; ephemeralPublicKey: string; }`\n  The necessary details to complete the card provisioning.\n\n  - `activationData: string`\n  - `encryptedPassData: string`\n  - `ephemeralPublicKey: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.parties.cards.provisionAppleWallet('d932902f-6832-4083-8c4e-77328b0e05d1', {\n  partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  certificates: ['string'],\n  deviceType: 'MOBILE_PHONE',\n  nonce: 'nonce',\n  nonceSignature: 'nonceSignature',\n  provisioningAppVersion: 'x',\n});\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.cards.provisionAppleWallet',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.parties.cards.provisionAppleWallet(\n  'd932902f-6832-4083-8c4e-77328b0e05d1',\n  {\n    partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n    certificates: ['string'],\n    deviceType: 'MOBILE_PHONE',\n    nonce: 'nonce',\n    nonceSignature: 'nonceSignature',\n    provisioningAppVersion: 'x',\n  },\n);\n\nconsole.log(response.activationData);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/cards/$CARD_ID:provision-apple-wallet \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "certificates": [\n            "string"\n          ],\n          "deviceType": "MOBILE_PHONE",\n          "nonce": "nonce",\n          "nonceSignature": "nonceSignature",\n          "provisioningAppVersion": "x"\n        }\'',
      },
      kotlin: {
        method: 'parties().cards().provisionAppleWallet',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.cards.CardProvisionAppleWalletParams\nimport com.plumery.api.models.parties.cards.CardProvisionAppleWalletResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: CardProvisionAppleWalletParams = CardProvisionAppleWalletParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .cardId("d932902f-6832-4083-8c4e-77328b0e05d1")\n        .addCertificate("string")\n        .deviceType(CardProvisionAppleWalletParams.DeviceType.MOBILE_PHONE)\n        .nonce("nonce")\n        .nonceSignature("nonceSignature")\n        .provisioningAppVersion("x")\n        .build()\n    val response: CardProvisionAppleWalletResponse = client.parties().cards().provisionAppleWallet(params)\n}',
      },
      java: {
        method: 'parties().cards().provisionAppleWallet',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.cards.CardProvisionAppleWalletParams;\nimport com.plumery.api.models.parties.cards.CardProvisionAppleWalletResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        CardProvisionAppleWalletParams params = CardProvisionAppleWalletParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .cardId("d932902f-6832-4083-8c4e-77328b0e05d1")\n            .addCertificate("string")\n            .deviceType(CardProvisionAppleWalletParams.DeviceType.MOBILE_PHONE)\n            .nonce("nonce")\n            .nonceSignature("nonceSignature")\n            .provisioningAppVersion("x")\n            .build();\n        CardProvisionAppleWalletResponse response = client.parties().cards().provisionAppleWallet(params);\n    }\n}',
      },
    },
  },
  {
    name: 'convertToPhysical',
    endpoint: '/api/v1/parties/{partyId}/cards/{cardId}:convert-to-physical',
    httpMethod: 'post',
    summary: 'Convert to physical card',
    description:
      'Initiates a conversion from a virtual card to a physical one. \nOnce it is completed, the card type is updated.\n',
    stainlessPath: '(resource) parties.cards > (method) convertToPhysical',
    qualified: 'client.parties.cards.convertToPhysical',
    params: [
      'partyId: string;',
      'cardId: string;',
      'shippingAddress: { buildingNumber: string; country: string; streetName: string; townName: string; buildingName?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; suite?: string; townLocationName?: string; };',
      "shippingMethod: 'STANDARD' | 'EXPEDITE';",
      'customisation?: { colour?: string; designId?: string; text?: string; };',
      'productId?: string;',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    markdown:
      "## convertToPhysical\n\n`client.parties.cards.convertToPhysical(partyId: string, cardId: string, shippingAddress: { buildingNumber: string; country: string; streetName: string; townName: string; buildingName?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; suite?: string; townLocationName?: string; }, shippingMethod: 'STANDARD' | 'EXPEDITE', customisation?: { colour?: string; designId?: string; text?: string; }, productId?: string, plmr-user-action?: boolean, X-Request-ID?: string): void`\n\n**post** `/api/v1/parties/{partyId}/cards/{cardId}:convert-to-physical`\n\nInitiates a conversion from a virtual card to a physical one. \nOnce it is completed, the card type is updated.\n\n\n### Parameters\n\n- `partyId: string`\n\n- `cardId: string`\n  Unique identifier for the card.\n\n- `shippingAddress: { buildingNumber: string; country: string; streetName: string; townName: string; buildingName?: string; countrySubDivision?: string; districtName?: string; floor?: string; postBox?: string; postCode?: string; suite?: string; townLocationName?: string; }`\n  - `buildingNumber: string`\n    Number that identifies the position of a building on a street\n\n  - `country: string`\n    Nation with its own government. ISO 3166, Alpha-2 code\n\n  - `streetName: string`\n    Name of a street or thoroughfare\n\n  - `townName: string`\n    Name of a built-up area, with defined boundaries, and a local government\n\n  - `buildingName?: string`\n    Name of the building or house\n\n  - `countrySubDivision?: string`\n    Identifies a subdivision of a country such as state, region, county\n\n  - `districtName?: string`\n    Identifies a subdivision within a country sub-division\n\n  - `floor?: string`\n    Floor or storey within a building\n\n  - `postBox?: string`\n    Numbered box in a post office, assigned to a person or organisation, where letters are kept until called for\n\n  - `postCode?: string`\n    Identifier consisting of a group of letters and/or numbers that is added to a postal address to assist the sorting of mail\n\n  - `suite?: string`\n    Building room number\n\n  - `townLocationName?: string`\n    Specific location name within the town\n\n\n- `shippingMethod: 'STANDARD' | 'EXPEDITE'`\n  The shipping method used to deliver the physical card. This is required for physical cards.\n\n\n- `customisation?: { colour?: string; designId?: string; text?: string; }`\n  The customisation to be applied on the card.\n  - `colour?: string`\n    The colour of the card as supported by the fulfilment provider.\n\n  - `designId?: string`\n    Unique identifier of the design to be applied on the card.\n  - `text?: string`\n    Custom text to be displayed on the card. Maximum of 21 characters allowed.\n\n\n- `productId?: string`\n  The product id value associated with the card. If none is provided, then the default product id for virtual cards will be used.\n\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.cards.convertToPhysical('d932902f-6832-4083-8c4e-77328b0e05d1', {\n  partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  shippingAddress: {\n  buildingNumber: '123',\n  country: 'US',\n  streetName: 'Main St',\n  townName: 'New York',\n},\n  shippingMethod: 'EXPEDITE',\n})\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.cards.convertToPhysical',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.cards.convertToPhysical('d932902f-6832-4083-8c4e-77328b0e05d1', {\n  partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  shippingAddress: {\n    buildingNumber: '123',\n    country: 'US',\n    streetName: 'Main St',\n    townName: 'New York',\n  },\n  shippingMethod: 'EXPEDITE',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/cards/$CARD_ID:convert-to-physical \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "shippingAddress": {\n            "buildingNumber": "123",\n            "country": "US",\n            "streetName": "Main St",\n            "townName": "New York"\n          },\n          "shippingMethod": "EXPEDITE",\n          "productId": "abc123"\n        }\'',
      },
      kotlin: {
        method: 'parties().cards().convertToPhysical',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.cards.CardConvertToPhysicalParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: CardConvertToPhysicalParams = CardConvertToPhysicalParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .cardId("d932902f-6832-4083-8c4e-77328b0e05d1")\n        .shippingAddress(CardConvertToPhysicalParams.ShippingAddress.builder()\n            .buildingNumber("123")\n            .country("US")\n            .streetName("Main St")\n            .townName("New York")\n            .build())\n        .shippingMethod(CardConvertToPhysicalParams.ShippingMethod.EXPEDITE)\n        .build()\n    client.parties().cards().convertToPhysical(params)\n}',
      },
      java: {
        method: 'parties().cards().convertToPhysical',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.cards.CardConvertToPhysicalParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        CardConvertToPhysicalParams params = CardConvertToPhysicalParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .cardId("d932902f-6832-4083-8c4e-77328b0e05d1")\n            .shippingAddress(CardConvertToPhysicalParams.ShippingAddress.builder()\n                .buildingNumber("123")\n                .country("US")\n                .streetName("Main St")\n                .townName("New York")\n                .build())\n            .shippingMethod(CardConvertToPhysicalParams.ShippingMethod.EXPEDITE)\n            .build();\n        client.parties().cards().convertToPhysical(params);\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/parties/{partyId}/cards/{cardId}/pin',
    httpMethod: 'get',
    summary: 'Get Card Pin',
    description: 'Get pin code of a specific card.\n',
    stainlessPath: '(resource) parties.cards.pin > (method) retrieve',
    qualified: 'client.parties.cards.pin.retrieve',
    params: [
      'partyId: string;',
      'cardId: string;',
      'X-Client-Public-Key: string;',
      'plmr-mfa-challenge-id?: string;',
      'plmr-mfa-signature?: string;',
      'plmr-user-action?: boolean;',
      'X-Device-Integrity-Token?: string;',
      'X-Request-ID?: string;',
    ],
    response:
      '{ encryptedPayload: { encryptedData: string; iv: string; salt: string; serverPublicKey: string; }; }',
    markdown:
      "## retrieve\n\n`client.parties.cards.pin.retrieve(partyId: string, cardId: string, X-Client-Public-Key: string, plmr-mfa-challenge-id?: string, plmr-mfa-signature?: string, plmr-user-action?: boolean, X-Device-Integrity-Token?: string, X-Request-ID?: string): { encryptedPayload: object; }`\n\n**get** `/api/v1/parties/{partyId}/cards/{cardId}/pin`\n\nGet pin code of a specific card.\n\n\n### Parameters\n\n- `partyId: string`\n\n- `cardId: string`\n  Unique identifier for the card.\n\n- `X-Client-Public-Key: string`\n\n- `plmr-mfa-challenge-id?: string`\n\n- `plmr-mfa-signature?: string`\n\n- `plmr-user-action?: boolean`\n\n- `X-Device-Integrity-Token?: string`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ encryptedPayload: { encryptedData: string; iv: string; salt: string; serverPublicKey: string; }; }`\n  The card PIN is encrypted in the `encryptedPayload` field.\n\nAfter decryption, the JSON structure will conform to `DecryptedCardPin` structure.\n\n\n  - `encryptedPayload: { encryptedData: string; iv: string; salt: string; serverPublicKey: string; }`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst pin = await client.parties.cards.pin.retrieve('d932902f-6832-4083-8c4e-77328b0e05d1', { partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e', 'X-Client-Public-Key': '+/+K==w2k+1v' });\n\nconsole.log(pin);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.cards.pin.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst pin = await client.parties.cards.pin.retrieve('d932902f-6832-4083-8c4e-77328b0e05d1', {\n  partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  'X-Client-Public-Key': '+/+K==w2k+1v',\n});\n\nconsole.log(pin.encryptedPayload);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/cards/$CARD_ID/pin \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().cards().pin().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.cards.pin.PinRetrieveParams\nimport com.plumery.api.models.parties.cards.pin.PinRetrieveResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: PinRetrieveParams = PinRetrieveParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .cardId("d932902f-6832-4083-8c4e-77328b0e05d1")\n        .xClientPublicKey("+/+K==w2k+1v")\n        .build()\n    val pin: PinRetrieveResponse = client.parties().cards().pin().retrieve(params)\n}',
      },
      java: {
        method: 'parties().cards().pin().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.cards.pin.PinRetrieveParams;\nimport com.plumery.api.models.parties.cards.pin.PinRetrieveResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        PinRetrieveParams params = PinRetrieveParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .cardId("d932902f-6832-4083-8c4e-77328b0e05d1")\n            .xClientPublicKey("+/+K==w2k+1v")\n            .build();\n        PinRetrieveResponse pin = client.parties().cards().pin().retrieve(params);\n    }\n}',
      },
    },
  },
  {
    name: 'generate',
    endpoint: '/api/v1/parties/{partyId}/quotes:generate',
    httpMethod: 'post',
    summary: 'Generate Currency Exchange Quote',
    description:
      'Generates a currency exchange quote between specified currencies.\n\nDepending on the backend integration with the currency exchange provider, the option to lock in a currency rate \nmay be enabled. If enabled, the response will include:\n\n- **quoteId**: An identifier for the generated quote.\n- **expirationDateTime**: The expiration date and time for the locked rate.\n',
    stainlessPath: '(resource) parties.quotes > (method) generate',
    qualified: 'client.parties.quotes.generate',
    params: [
      'partyId: string;',
      'amount: string;',
      'creditCurrency: string;',
      'debitCurrency: string;',
      "fixedAmountSide: 'DEBIT' | 'CREDIT';",
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    response:
      '{ creditAmount: { amount: string; currency: string; }; debitAmount: { amount: string; currency: string; }; rate: number; rateDateTime: string; feeAmount?: { amount: string; currency: string; }; } | { creditAmount: { amount: string; currency: string; }; debitAmount: { amount: string; currency: string; }; expirationDateTime: string; quoteId: string; rate: number; rateDateTime: string; feeAmount?: { amount: string; currency: string; }; }',
    markdown:
      "## generate\n\n`client.parties.quotes.generate(partyId: string, amount: string, creditCurrency: string, debitCurrency: string, fixedAmountSide: 'DEBIT' | 'CREDIT', plmr-user-action?: boolean, X-Request-ID?: string): { creditAmount: object; debitAmount: object; rate: number; rateDateTime: string; feeAmount?: object; } | { creditAmount: object; debitAmount: object; expirationDateTime: string; quoteId: string; rate: number; rateDateTime: string; feeAmount?: object; }`\n\n**post** `/api/v1/parties/{partyId}/quotes:generate`\n\nGenerates a currency exchange quote between specified currencies.\n\nDepending on the backend integration with the currency exchange provider, the option to lock in a currency rate \nmay be enabled. If enabled, the response will include:\n\n- **quoteId**: An identifier for the generated quote.\n- **expirationDateTime**: The expiration date and time for the locked rate.\n\n\n### Parameters\n\n- `partyId: string`\n\n- `amount: string`\n  The amount given with fractional digits, where fractions must be compliant to the currency definition.\nUp to 14 significant figures. Negative amounts are signed by minus.\nThe decimal separator is a dot.\n\n**Example:**\nValid representations for EUR with up to two decimals are:\n\n  * 1056\n  * 5768.2\n  * -1.50\n  * 5877.78\n\n\n- `creditCurrency: string`\n  ISO 4217 Alpha 3 currency code.\n\n\n- `debitCurrency: string`\n  ISO 4217 Alpha 3 currency code.\n\n\n- `fixedAmountSide: 'DEBIT' | 'CREDIT'`\n  Indicates which amount is fixed during the currency conversion:\n- `DEBIT` keeps the debit amount fixed\n- `CREDIT` keeps the credit amount fixed,\n\nadjusting the other side based on the exchange rate.\n\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ creditAmount: { amount: string; currency: string; }; debitAmount: { amount: string; currency: string; }; rate: number; rateDateTime: string; feeAmount?: { amount: string; currency: string; }; } | { creditAmount: { amount: string; currency: string; }; debitAmount: { amount: string; currency: string; }; expirationDateTime: string; quoteId: string; rate: number; rateDateTime: string; feeAmount?: { amount: string; currency: string; }; }`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.parties.quotes.generate('6878951b-256b-4baa-9e81-ad4c577adc4e', {\n  amount: '5877.78',\n  creditCurrency: 'EUR',\n  debitCurrency: 'EUR',\n  fixedAmountSide: 'DEBIT',\n});\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.quotes.generate',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.parties.quotes.generate('6878951b-256b-4baa-9e81-ad4c577adc4e', {\n  amount: '5877.78',\n  creditCurrency: 'EUR',\n  debitCurrency: 'EUR',\n  fixedAmountSide: 'DEBIT',\n});\n\nconsole.log(response);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/quotes:generate \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "amount": "5877.78",\n          "creditCurrency": "EUR",\n          "debitCurrency": "EUR",\n          "fixedAmountSide": "DEBIT"\n        }\'',
      },
      kotlin: {
        method: 'parties().quotes().generate',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.quotes.QuoteGenerateParams\nimport com.plumery.api.models.parties.quotes.QuoteGenerateResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: QuoteGenerateParams = QuoteGenerateParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .amount("5877.78")\n        .creditCurrency("EUR")\n        .debitCurrency("EUR")\n        .fixedAmountSide(QuoteGenerateParams.FixedAmountSide.DEBIT)\n        .build()\n    val response: QuoteGenerateResponse = client.parties().quotes().generate(params)\n}',
      },
      java: {
        method: 'parties().quotes().generate',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.quotes.QuoteGenerateParams;\nimport com.plumery.api.models.parties.quotes.QuoteGenerateResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        QuoteGenerateParams params = QuoteGenerateParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .amount("5877.78")\n            .creditCurrency("EUR")\n            .debitCurrency("EUR")\n            .fixedAmountSide(QuoteGenerateParams.FixedAmountSide.DEBIT)\n            .build();\n        QuoteGenerateResponse response = client.parties().quotes().generate(params);\n    }\n}',
      },
    },
  },
  {
    name: 'create',
    endpoint: '/api/v1/parties/{partyId}/funds-transfers',
    httpMethod: 'post',
    summary: 'Transfer Funds',
    description:
      "Transfer funds between the party-owned accounts.\nThe operation might involve a currency conversion, depending on the accounts' currencies.\n\n### Currency Exchange\nIf the transfer involves different currencies, `currencyExchange` object must be specified. \n`fixedAmountSide` parameter is required to determine which amount (debit or credit) remains fixed during the \ncurrency exchange:\n\n- **DEBIT**: The debit amount is fixed.\n- **CREDIT**: The credit amount is fixed.\n\nBased on the provided `fixedAmountSide`, the other amount will be adjusted according to the exchange rate.\n\n**Note**: If the transfer involves different currencies and `fixedAmountSide` is not provided, the operation \nwill be rejected asynchronously.\n",
    stainlessPath: '(resource) parties.funds-transfers > (method) create',
    qualified: 'client.parties.fundsTransfers.create',
    params: [
      'partyId: string;',
      'creditAccount: { accountId: string; currency: string; };',
      'debitAccount: { accountId: string; currency: string; };',
      'instructedAmount: { amount: string; currency: string; };',
      "currencyExchange?: { fixedAmountSide: 'DEBIT' | 'CREDIT'; quoteId?: string; };",
      'reference?: string;',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    response: '{ fundsTransferId: string; }',
    markdown:
      "## create\n\n`client.parties.fundsTransfers.create(partyId: string, creditAccount: { accountId: string; currency: string; }, debitAccount: { accountId: string; currency: string; }, instructedAmount: { amount: string; currency: string; }, currencyExchange?: { fixedAmountSide: 'DEBIT' | 'CREDIT'; quoteId?: string; }, reference?: string, plmr-user-action?: boolean, X-Request-ID?: string): { fundsTransferId: string; }`\n\n**post** `/api/v1/parties/{partyId}/funds-transfers`\n\nTransfer funds between the party-owned accounts.\nThe operation might involve a currency conversion, depending on the accounts' currencies.\n\n### Currency Exchange\nIf the transfer involves different currencies, `currencyExchange` object must be specified. \n`fixedAmountSide` parameter is required to determine which amount (debit or credit) remains fixed during the \ncurrency exchange:\n\n- **DEBIT**: The debit amount is fixed.\n- **CREDIT**: The credit amount is fixed.\n\nBased on the provided `fixedAmountSide`, the other amount will be adjusted according to the exchange rate.\n\n**Note**: If the transfer involves different currencies and `fixedAmountSide` is not provided, the operation \nwill be rejected asynchronously.\n\n\n### Parameters\n\n- `partyId: string`\n\n- `creditAccount: { accountId: string; currency: string; }`\n  Details of the account to which the amount will be credited.\n  - `accountId: string`\n    The ID of the account that will be credited.\n  - `currency: string`\n    ISO 4217 Alpha 3 currency code.\n\n\n- `debitAccount: { accountId: string; currency: string; }`\n  Details of the account from which the amount will be debited.\n  - `accountId: string`\n    The ID of the account that will be debited.\n  - `currency: string`\n    ISO 4217 Alpha 3 currency code.\n\n\n- `instructedAmount: { amount: string; currency: string; }`\n  - `amount: string`\n    The amount given with fractional digits, where fractions must be compliant to the currency definition.\nUp to 14 significant figures. Negative amounts are signed by minus.\nThe decimal separator is a dot.\n\n**Example:**\nValid representations for EUR with up to two decimals are:\n\n  * 1056\n  * 5768.2\n  * -1.50\n  * 5877.78\n\n  - `currency: string`\n    ISO 4217 Alpha 3 currency code.\n\n\n- `currencyExchange?: { fixedAmountSide: 'DEBIT' | 'CREDIT'; quoteId?: string; }`\n  Currency exchange details if the transfer involves different currencies.\n  - `fixedAmountSide: 'DEBIT' | 'CREDIT'`\n    Indicates which amount is fixed during the currency conversion:\n- `DEBIT` keeps the debit amount fixed\n- `CREDIT` keeps the credit amount fixed,\n\nadjusting the other side based on the exchange rate.\n\n  - `quoteId?: string`\n    The ID of the currency exchange quote to be used during currency exchange. If provided, the quote must \nbe valid and not expired.\n\n\n- `reference?: string`\n  A reference for the transfer.\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ fundsTransferId: string; }`\n  Acknowledgement of an accepted funds transfer request.\n\n  - `fundsTransferId: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst fundsTransfer = await client.parties.fundsTransfers.create('6878951b-256b-4baa-9e81-ad4c577adc4e', {\n  creditAccount: { accountId: '3dc3d5b3-7023-4848-9853-f5400a64e80f', currency: 'EUR' },\n  debitAccount: { accountId: '4ec4e5f6-1124-5678-abcd-1234567890ef', currency: 'EUR' },\n  instructedAmount: { amount: '5877.78', currency: 'EUR' },\n});\n\nconsole.log(fundsTransfer);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.fundsTransfers.create',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst fundsTransfer = await client.parties.fundsTransfers.create(\n  '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  {\n    creditAccount: { accountId: '3dc3d5b3-7023-4848-9853-f5400a64e80f', currency: 'EUR' },\n    debitAccount: { accountId: '4ec4e5f6-1124-5678-abcd-1234567890ef', currency: 'EUR' },\n    instructedAmount: { amount: '5877.78', currency: 'EUR' },\n  },\n);\n\nconsole.log(fundsTransfer.fundsTransferId);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/funds-transfers \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "creditAccount": {\n            "accountId": "3dc3d5b3-7023-4848-9853-f5400a64e80f",\n            "currency": "EUR"\n          },\n          "debitAccount": {\n            "accountId": "4ec4e5f6-1124-5678-abcd-1234567890ef",\n            "currency": "EUR"\n          },\n          "instructedAmount": {\n            "amount": "5877.78",\n            "currency": "EUR"\n          },\n          "reference": "Business Expense"\n        }\'',
      },
      kotlin: {
        method: 'parties().fundsTransfers().create',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.fundstransfers.FundsTransferCreateParams\nimport com.plumery.api.models.parties.fundstransfers.FundsTransferCreateResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: FundsTransferCreateParams = FundsTransferCreateParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .creditAccount(FundsTransferCreateParams.CreditAccount.builder()\n            .accountId("3dc3d5b3-7023-4848-9853-f5400a64e80f")\n            .currency("EUR")\n            .build())\n        .debitAccount(FundsTransferCreateParams.DebitAccount.builder()\n            .accountId("4ec4e5f6-1124-5678-abcd-1234567890ef")\n            .currency("EUR")\n            .build())\n        .instructedAmount(FundsTransferCreateParams.InstructedAmount.builder()\n            .amount("5877.78")\n            .currency("EUR")\n            .build())\n        .build()\n    val fundsTransfer: FundsTransferCreateResponse = client.parties().fundsTransfers().create(params)\n}',
      },
      java: {
        method: 'parties().fundsTransfers().create',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.fundstransfers.FundsTransferCreateParams;\nimport com.plumery.api.models.parties.fundstransfers.FundsTransferCreateResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        FundsTransferCreateParams params = FundsTransferCreateParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .creditAccount(FundsTransferCreateParams.CreditAccount.builder()\n                .accountId("3dc3d5b3-7023-4848-9853-f5400a64e80f")\n                .currency("EUR")\n                .build())\n            .debitAccount(FundsTransferCreateParams.DebitAccount.builder()\n                .accountId("4ec4e5f6-1124-5678-abcd-1234567890ef")\n                .currency("EUR")\n                .build())\n            .instructedAmount(FundsTransferCreateParams.InstructedAmount.builder()\n                .amount("5877.78")\n                .currency("EUR")\n                .build())\n            .build();\n        FundsTransferCreateResponse fundsTransfer = client.parties().fundsTransfers().create(params);\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/parties/{partyId}/funds-transfers/{fundsTransferId}',
    httpMethod: 'get',
    summary: 'Get a funds transfer by id',
    description: 'Retrieve a single funds transfer for the given party.\n',
    stainlessPath: '(resource) parties.funds-transfers > (method) retrieve',
    qualified: 'client.parties.fundsTransfers.retrieve',
    params: ['partyId: string;', 'fundsTransferId: string;', 'plmr-user-action?: boolean;'],
    response:
      "{ id: string; createdAt: string; status: 'INITIATED' | 'COMPLETED' | 'INITIATION_FAILED' | 'FAILED'; statusHistory: { status: 'INITIATED' | 'COMPLETED' | 'INITIATION_FAILED' | 'FAILED'; statusDateTime: string; }[]; credit?: { accountId?: string; currency?: string; }; credited?: { amount: number; accountId?: string; currency?: string; }; debit?: { accountId?: string; currency?: string; }; debited?: { amount: number; accountId?: string; currency?: string; }; failure?: { code: string; reason?: string; }; fixedAmountSide?: 'DEBIT' | 'CREDIT'; instructedAmount?: number; partyId?: string; partyType?: string; quoteId?: string; rate?: number; reference?: string; updatedAt?: string; }",
    markdown:
      "## retrieve\n\n`client.parties.fundsTransfers.retrieve(partyId: string, fundsTransferId: string, plmr-user-action?: boolean): { id: string; createdAt: string; status: 'INITIATED' | 'COMPLETED' | 'INITIATION_FAILED' | 'FAILED'; statusHistory: object[]; credit?: object; credited?: object; debit?: object; debited?: object; failure?: object; fixedAmountSide?: 'DEBIT' | 'CREDIT'; instructedAmount?: number; partyId?: string; partyType?: string; quoteId?: string; rate?: number; reference?: string; updatedAt?: string; }`\n\n**get** `/api/v1/parties/{partyId}/funds-transfers/{fundsTransferId}`\n\nRetrieve a single funds transfer for the given party.\n\n\n### Parameters\n\n- `partyId: string`\n\n- `fundsTransferId: string`\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ id: string; createdAt: string; status: 'INITIATED' | 'COMPLETED' | 'INITIATION_FAILED' | 'FAILED'; statusHistory: { status: 'INITIATED' | 'COMPLETED' | 'INITIATION_FAILED' | 'FAILED'; statusDateTime: string; }[]; credit?: { accountId?: string; currency?: string; }; credited?: { amount: number; accountId?: string; currency?: string; }; debit?: { accountId?: string; currency?: string; }; debited?: { amount: number; accountId?: string; currency?: string; }; failure?: { code: string; reason?: string; }; fixedAmountSide?: 'DEBIT' | 'CREDIT'; instructedAmount?: number; partyId?: string; partyType?: string; quoteId?: string; rate?: number; reference?: string; updatedAt?: string; }`\n  Read-model projection of a single funds transfer assembled from the workflow's\nlifecycle events (`FundsTransferInitiated`, `FundsTransferCompleted`,\n`FundsTransferInitiationFailed`, `FundsTransferFailed`).\n\n\n  - `id: string`\n  - `createdAt: string`\n  - `status: 'INITIATED' | 'COMPLETED' | 'INITIATION_FAILED' | 'FAILED'`\n  - `statusHistory: { status: 'INITIATED' | 'COMPLETED' | 'INITIATION_FAILED' | 'FAILED'; statusDateTime: string; }[]`\n  - `credit?: { accountId?: string; currency?: string; }`\n  - `credited?: { amount: number; accountId?: string; currency?: string; }`\n  - `debit?: { accountId?: string; currency?: string; }`\n  - `debited?: { amount: number; accountId?: string; currency?: string; }`\n  - `failure?: { code: string; reason?: string; }`\n  - `fixedAmountSide?: 'DEBIT' | 'CREDIT'`\n  - `instructedAmount?: number`\n  - `partyId?: string`\n  - `partyType?: string`\n  - `quoteId?: string`\n  - `rate?: number`\n  - `reference?: string`\n  - `updatedAt?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst fundsTransfer = await client.parties.fundsTransfers.retrieve('fundsTransferId', { partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e' });\n\nconsole.log(fundsTransfer);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.fundsTransfers.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst fundsTransfer = await client.parties.fundsTransfers.retrieve('fundsTransferId', {\n  partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n});\n\nconsole.log(fundsTransfer.id);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/funds-transfers/$FUNDS_TRANSFER_ID \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().fundsTransfers().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.fundstransfers.FundsTransferRetrieveParams\nimport com.plumery.api.models.parties.fundstransfers.FundsTransferRetrieveResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: FundsTransferRetrieveParams = FundsTransferRetrieveParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .fundsTransferId("fundsTransferId")\n        .build()\n    val fundsTransfer: FundsTransferRetrieveResponse = client.parties().fundsTransfers().retrieve(params)\n}',
      },
      java: {
        method: 'parties().fundsTransfers().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.fundstransfers.FundsTransferRetrieveParams;\nimport com.plumery.api.models.parties.fundstransfers.FundsTransferRetrieveResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        FundsTransferRetrieveParams params = FundsTransferRetrieveParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .fundsTransferId("fundsTransferId")\n            .build();\n        FundsTransferRetrieveResponse fundsTransfer = client.parties().fundsTransfers().retrieve(params);\n    }\n}',
      },
    },
  },
  {
    name: 'list',
    endpoint: '/api/v1/parties/{partyId}/funds-transfers',
    httpMethod: 'get',
    summary: 'List funds transfers',
    description:
      'Retrieve a list of funds transfers for the given party, newest-first.\nUse the `cursor` query parameter to page through the results.\n',
    stainlessPath: '(resource) parties.funds-transfers > (method) list',
    qualified: 'client.parties.fundsTransfers.list',
    params: ['partyId: string;', 'cursor?: string;', 'limit?: number;', 'plmr-user-action?: boolean;'],
    response:
      "{ items: { id: string; createdAt: string; status: 'INITIATED' | 'COMPLETED' | 'INITIATION_FAILED' | 'FAILED'; credit?: { accountId?: string; currency?: string; }; credited?: { amount: number; accountId?: string; currency?: string; }; debit?: { accountId?: string; currency?: string; }; debited?: { amount: number; accountId?: string; currency?: string; }; failure?: { code: string; reason?: string; }; fixedAmountSide?: 'DEBIT' | 'CREDIT'; instructedAmount?: number; partyId?: string; partyType?: string; quoteId?: string; rate?: number; reference?: string; updatedAt?: string; }[]; limit: number; cursor?: string; }",
    markdown:
      "## list\n\n`client.parties.fundsTransfers.list(partyId: string, cursor?: string, limit?: number, plmr-user-action?: boolean): { items: object[]; limit: number; cursor?: string; }`\n\n**get** `/api/v1/parties/{partyId}/funds-transfers`\n\nRetrieve a list of funds transfers for the given party, newest-first.\nUse the `cursor` query parameter to page through the results.\n\n\n### Parameters\n\n- `partyId: string`\n\n- `cursor?: string`\n  Opaque pointer to the next page of funds transfers, returned in the response body of the previous request.\nUse it to retrieve the next page.\n\n\n- `limit?: number`\n  Page size.\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ items: { id: string; createdAt: string; status: 'INITIATED' | 'COMPLETED' | 'INITIATION_FAILED' | 'FAILED'; credit?: { accountId?: string; currency?: string; }; credited?: { amount: number; accountId?: string; currency?: string; }; debit?: { accountId?: string; currency?: string; }; debited?: { amount: number; accountId?: string; currency?: string; }; failure?: { code: string; reason?: string; }; fixedAmountSide?: 'DEBIT' | 'CREDIT'; instructedAmount?: number; partyId?: string; partyType?: string; quoteId?: string; rate?: number; reference?: string; updatedAt?: string; }[]; limit: number; cursor?: string; }`\n  Paged list of funds transfers for a party.\n\n  - `items: { id: string; createdAt: string; status: 'INITIATED' | 'COMPLETED' | 'INITIATION_FAILED' | 'FAILED'; credit?: { accountId?: string; currency?: string; }; credited?: { amount: number; accountId?: string; currency?: string; }; debit?: { accountId?: string; currency?: string; }; debited?: { amount: number; accountId?: string; currency?: string; }; failure?: { code: string; reason?: string; }; fixedAmountSide?: 'DEBIT' | 'CREDIT'; instructedAmount?: number; partyId?: string; partyType?: string; quoteId?: string; rate?: number; reference?: string; updatedAt?: string; }[]`\n  - `limit: number`\n  - `cursor?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst fundsTransfers = await client.parties.fundsTransfers.list('6878951b-256b-4baa-9e81-ad4c577adc4e');\n\nconsole.log(fundsTransfers);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.fundsTransfers.list',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst fundsTransfers = await client.parties.fundsTransfers.list(\n  '6878951b-256b-4baa-9e81-ad4c577adc4e',\n);\n\nconsole.log(fundsTransfers.items);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/funds-transfers \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().fundsTransfers().list',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.fundstransfers.FundsTransferListParams\nimport com.plumery.api.models.parties.fundstransfers.FundsTransferListResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val fundsTransfers: FundsTransferListResponse = client.parties().fundsTransfers().list("6878951b-256b-4baa-9e81-ad4c577adc4e")\n}',
      },
      java: {
        method: 'parties().fundsTransfers().list',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.fundstransfers.FundsTransferListParams;\nimport com.plumery.api.models.parties.fundstransfers.FundsTransferListResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        FundsTransferListResponse fundsTransfers = client.parties().fundsTransfers().list("6878951b-256b-4baa-9e81-ad4c577adc4e");\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/parties/{partyId}/funds-transfers/{fundsTransferId}/status',
    httpMethod: 'get',
    summary: 'Retrieve Funds Transfer Execution Status',
    description:
      'Retrieve the execution status of a funds transfer along with its status transition history.\n',
    stainlessPath: '(resource) parties.funds-transfers.status > (method) retrieve',
    qualified: 'client.parties.fundsTransfers.status.retrieve',
    params: ['partyId: string;', 'fundsTransferId: string;', 'plmr-user-action?: boolean;'],
    response:
      "{ status: 'INITIATED' | 'COMPLETED' | 'INITIATION_FAILED' | 'FAILED'; statusDateTime: string; statusHistory: { status: 'INITIATED' | 'COMPLETED' | 'INITIATION_FAILED' | 'FAILED'; statusDateTime: string; }[]; failure?: { code: string; reason?: string; }; }",
    markdown:
      "## retrieve\n\n`client.parties.fundsTransfers.status.retrieve(partyId: string, fundsTransferId: string, plmr-user-action?: boolean): { status: 'INITIATED' | 'COMPLETED' | 'INITIATION_FAILED' | 'FAILED'; statusDateTime: string; statusHistory: object[]; failure?: object; }`\n\n**get** `/api/v1/parties/{partyId}/funds-transfers/{fundsTransferId}/status`\n\nRetrieve the execution status of a funds transfer along with its status transition history.\n\n\n### Parameters\n\n- `partyId: string`\n\n- `fundsTransferId: string`\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ status: 'INITIATED' | 'COMPLETED' | 'INITIATION_FAILED' | 'FAILED'; statusDateTime: string; statusHistory: { status: 'INITIATED' | 'COMPLETED' | 'INITIATION_FAILED' | 'FAILED'; statusDateTime: string; }[]; failure?: { code: string; reason?: string; }; }`\n  Execution status of a funds transfer along with the full history of status transitions.\n\n\n  - `status: 'INITIATED' | 'COMPLETED' | 'INITIATION_FAILED' | 'FAILED'`\n  - `statusDateTime: string`\n  - `statusHistory: { status: 'INITIATED' | 'COMPLETED' | 'INITIATION_FAILED' | 'FAILED'; statusDateTime: string; }[]`\n  - `failure?: { code: string; reason?: string; }`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst status = await client.parties.fundsTransfers.status.retrieve('fundsTransferId', { partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e' });\n\nconsole.log(status);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.fundsTransfers.status.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst status = await client.parties.fundsTransfers.status.retrieve('fundsTransferId', {\n  partyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n});\n\nconsole.log(status.status);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/funds-transfers/$FUNDS_TRANSFER_ID/status \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().fundsTransfers().status().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.fundstransfers.status.StatusRetrieveParams\nimport com.plumery.api.models.parties.fundstransfers.status.StatusRetrieveResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: StatusRetrieveParams = StatusRetrieveParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .fundsTransferId("fundsTransferId")\n        .build()\n    val status: StatusRetrieveResponse = client.parties().fundsTransfers().status().retrieve(params)\n}',
      },
      java: {
        method: 'parties().fundsTransfers().status().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.fundstransfers.status.StatusRetrieveParams;\nimport com.plumery.api.models.parties.fundstransfers.status.StatusRetrieveResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        StatusRetrieveParams params = StatusRetrieveParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .fundsTransferId("fundsTransferId")\n            .build();\n        StatusRetrieveResponse status = client.parties().fundsTransfers().status().retrieve(params);\n    }\n}',
      },
    },
  },
  {
    name: 'list',
    endpoint: '/api/v1/parties/{partyId}/financial-operations',
    httpMethod: 'get',
    summary: 'List Financial Operations',
    description:
      "Allows retrieval of financial operations. It's possible to filter the financial operations list by various criteria.",
    stainlessPath: '(resource) parties.financial-operations > (method) list',
    qualified: 'client.parties.financialOperations.list',
    params: [
      'partyId: string;',
      'accounts?: string[];',
      'amountFrom?: number;',
      'amountTo?: number;',
      'cards?: string[];',
      'cursor?: string;',
      'dateFrom?: string;',
      'dateTo?: string;',
      "direction?: 'INCOMING' | 'OUTGOING';",
      'limit?: number;',
      "sortBy?: 'DATE' | 'AMOUNT';",
      "sortDirection?: 'DESCENDING' | 'ASCENDING';",
      "statuses?: 'PROCESSING' | 'HOLD' | 'REJECTED' | 'EXPIRED' | 'SETTLED' | 'REVERSED'[];",
      'types?: string[];',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    response:
      "{ items?: { accountId: string; amount: { amount?: number; currency?: string; }; parentOperationId: string; state: { status: 'PROCESSING' | 'HOLD' | 'REJECTED' | 'EXPIRED' | 'SETTLED' | 'REVERSED'; type: string; otherType?: string; }; additionalAttributes?: object; additionalCounterpartyData?: { address?: object; industryCategoryCode?: number; logo?: string; website?: string; }; additionalInformation?: { description?: string; }; bookingDate?: string; cardId?: string; category?: { icon?: string; name?: string; }; counterpartyAccount?: { currency?: string; iban?: string; } | { currency?: string; other?: object; } | { currency?: string; }; counterpartyAgent?: string; counterpartyName?: string; counterpartyNameOriginal?: string; createdDate?: string; endToEndId?: string; exchangeDetails?: { exchangeRate?: number; fee?: number; }; fundsTransferId?: string; paymentOrderId?: string; remittanceInformationStructuredArray?: { reference?: string; referenceIssuer?: string; referenceType?: string; }; remittanceInformationUnstructured?: string; valueDate?: string; }[]; nextCursor?: string; }",
    markdown:
      "## list\n\n`client.parties.financialOperations.list(partyId: string, accounts?: string[], amountFrom?: number, amountTo?: number, cards?: string[], cursor?: string, dateFrom?: string, dateTo?: string, direction?: 'INCOMING' | 'OUTGOING', limit?: number, sortBy?: 'DATE' | 'AMOUNT', sortDirection?: 'DESCENDING' | 'ASCENDING', statuses?: 'PROCESSING' | 'HOLD' | 'REJECTED' | 'EXPIRED' | 'SETTLED' | 'REVERSED'[], types?: string[], plmr-user-action?: boolean, X-Request-ID?: string): { items?: object[]; nextCursor?: string; }`\n\n**get** `/api/v1/parties/{partyId}/financial-operations`\n\nAllows retrieval of financial operations. It's possible to filter the financial operations list by various criteria.\n\n### Parameters\n\n- `partyId: string`\n\n- `accounts?: string[]`\n  Allows filtering financial operations by list of Account IDs. Account ID is the \"accountId\" attribute of the account structure.\n\n\n- `amountFrom?: number`\n  Allows you to filter financial operations based on the operation amount. \nSet this parameter to the minimum operation amount you want to include in the retrieved list, using only positive values as input. \nHowever, the filter will retrieve both positive and negative financial operations within the range.\n\n\n- `amountTo?: number`\n  Allows you to filter financial operations based on the operation amount. \nSet this parameter to the maximum operation amount you want to include in the retrieved list, using only positive values as input. \nHowever, the filter will retrieve both positive and negative financial operations within the range.\n\n\n- `cards?: string[]`\n  Allows filtering financial operations by list of Card IDs.\n\n\n- `cursor?: string`\n  The cursor is a pointer to the next page of financial operations. \nIt is returned in the response body of the previous request. \nUse it to retrieve the next page of financial operations.\n\n\n- `dateFrom?: string`\n  Starting date (inclusive of the date entered) of the financial operations list based on the creation date of the operation entry.\n\n- `dateTo?: string`\n  End date (inclusive of the date entered) of the financial operation list based on the creation date of the operation entry.\n\n\n- `direction?: 'INCOMING' | 'OUTGOING'`\n  Specifies the direction of a financial operation, allowing you to filter financial operations based on their flow.\nUse it to distinguish between \"incoming\" financial operations (money received) and \"outgoing\" financial operations (money spent or sent):\n  * INCOMING - Select this value to retrieve financial operations representing money received or credited to the account\n  * OUTGOING - Select this value to retrieve financial operations representing money spent or debited from the account\n\n\n- `limit?: number`\n  Specifies the number of financial operations to retrieve.\n\n\n- `sortBy?: 'DATE' | 'AMOUNT'`\n  Specifies the sorting field that determines the order of the results.\nDefaults to DATE. Transactions are ordered by bookingDate, falling back to valueDate when bookingDate\nis unavailable, and further to createdDate when neither is available. When multiple transactions\nshare the same bookingDate, they are further sorted by valueDate, then by createdDate.\n\n\n- `sortDirection?: 'DESCENDING' | 'ASCENDING'`\n  Specifies the direction of the sorting field.\nBy default DESCENDING is used.\n\n\n- `statuses?: 'PROCESSING' | 'HOLD' | 'REJECTED' | 'EXPIRED' | 'SETTLED' | 'REVERSED'[]`\n  Specifies the statuses of financial operations, allowing you to filter financial operations based on selected operation statuses.\n\n\n- `types?: string[]`\n  Specifies the types of financial operations, allowing you to filter financial operations based on selected operation types.\n\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ items?: { accountId: string; amount: { amount?: number; currency?: string; }; parentOperationId: string; state: { status: 'PROCESSING' | 'HOLD' | 'REJECTED' | 'EXPIRED' | 'SETTLED' | 'REVERSED'; type: string; otherType?: string; }; additionalAttributes?: object; additionalCounterpartyData?: { address?: object; industryCategoryCode?: number; logo?: string; website?: string; }; additionalInformation?: { description?: string; }; bookingDate?: string; cardId?: string; category?: { icon?: string; name?: string; }; counterpartyAccount?: { currency?: string; iban?: string; } | { currency?: string; other?: object; } | { currency?: string; }; counterpartyAgent?: string; counterpartyName?: string; counterpartyNameOriginal?: string; createdDate?: string; endToEndId?: string; exchangeDetails?: { exchangeRate?: number; fee?: number; }; fundsTransferId?: string; paymentOrderId?: string; remittanceInformationStructuredArray?: { reference?: string; referenceIssuer?: string; referenceType?: string; }; remittanceInformationUnstructured?: string; valueDate?: string; }[]; nextCursor?: string; }`\n\n  - `items?: { accountId: string; amount: { amount?: number; currency?: string; }; parentOperationId: string; state: { status: 'PROCESSING' | 'HOLD' | 'REJECTED' | 'EXPIRED' | 'SETTLED' | 'REVERSED'; type: string; otherType?: string; }; additionalAttributes?: object; additionalCounterpartyData?: { address?: { city?: string; country?: string; latitude?: number; longitude?: number; state?: string; street?: string; zip?: string; }; industryCategoryCode?: number; logo?: string; website?: string; }; additionalInformation?: { description?: string; }; bookingDate?: string; cardId?: string; category?: { icon?: string; name?: string; }; counterpartyAccount?: { currency?: string; iban?: string; } | { currency?: string; other?: { identification?: string; schemeNameCone?: string; }; } | { currency?: string; }; counterpartyAgent?: string; counterpartyName?: string; counterpartyNameOriginal?: string; createdDate?: string; endToEndId?: string; exchangeDetails?: { exchangeRate?: number; fee?: number; }; fundsTransferId?: string; paymentOrderId?: string; remittanceInformationStructuredArray?: { reference?: string; referenceIssuer?: string; referenceType?: string; }; remittanceInformationUnstructured?: string; valueDate?: string; }[]`\n  - `nextCursor?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst financialOperations = await client.parties.financialOperations.list('6878951b-256b-4baa-9e81-ad4c577adc4e');\n\nconsole.log(financialOperations);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.financialOperations.list',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst financialOperations = await client.parties.financialOperations.list(\n  '6878951b-256b-4baa-9e81-ad4c577adc4e',\n);\n\nconsole.log(financialOperations.items);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/financial-operations \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().financialOperations().list',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.financialoperations.FinancialOperationListParams\nimport com.plumery.api.models.parties.financialoperations.FinancialOperationListResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val financialOperations: FinancialOperationListResponse = client.parties().financialOperations().list("6878951b-256b-4baa-9e81-ad4c577adc4e")\n}',
      },
      java: {
        method: 'parties().financialOperations().list',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.financialoperations.FinancialOperationListParams;\nimport com.plumery.api.models.parties.financialoperations.FinancialOperationListResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        FinancialOperationListResponse financialOperations = client.parties().financialOperations().list("6878951b-256b-4baa-9e81-ad4c577adc4e");\n    }\n}',
      },
    },
  },
  {
    name: 'search',
    endpoint: '/api/v1/parties/{partyId}/financial-operations:search',
    httpMethod: 'post',
    summary: 'Search Financial Operations',
    description:
      'Performs free-text search over financial operations for the given party. In addition to the `search` text, optional filters, sorting and pagination can be provided.\n',
    stainlessPath: '(resource) parties.financial-operations > (method) search',
    qualified: 'client.parties.financialOperations.search',
    params: [
      'partyId: string;',
      'search: string;',
      'accounts?: string[];',
      'amountFrom?: number;',
      'amountTo?: number;',
      'cards?: string[];',
      'cursor?: string;',
      'dateFrom?: string;',
      'dateTo?: string;',
      "direction?: 'INCOMING' | 'OUTGOING';",
      'limit?: number;',
      "sortBy?: 'DATE' | 'AMOUNT';",
      "sortDirection?: 'DESCENDING' | 'ASCENDING';",
      "statuses?: 'PROCESSING' | 'HOLD' | 'REJECTED' | 'EXPIRED' | 'SETTLED' | 'REVERSED'[];",
      'types?: string[];',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    response:
      "{ items?: { accountId: string; amount: { amount?: number; currency?: string; }; parentOperationId: string; state: { status: 'PROCESSING' | 'HOLD' | 'REJECTED' | 'EXPIRED' | 'SETTLED' | 'REVERSED'; type: string; otherType?: string; }; additionalAttributes?: object; additionalCounterpartyData?: { address?: object; industryCategoryCode?: number; logo?: string; website?: string; }; additionalInformation?: { description?: string; }; bookingDate?: string; cardId?: string; category?: { icon?: string; name?: string; }; counterpartyAccount?: { currency?: string; iban?: string; } | { currency?: string; other?: object; } | { currency?: string; }; counterpartyAgent?: string; counterpartyName?: string; counterpartyNameOriginal?: string; createdDate?: string; endToEndId?: string; exchangeDetails?: { exchangeRate?: number; fee?: number; }; fundsTransferId?: string; paymentOrderId?: string; remittanceInformationStructuredArray?: { reference?: string; referenceIssuer?: string; referenceType?: string; }; remittanceInformationUnstructured?: string; valueDate?: string; }[]; nextCursor?: string; }",
    markdown:
      "## search\n\n`client.parties.financialOperations.search(partyId: string, search: string, accounts?: string[], amountFrom?: number, amountTo?: number, cards?: string[], cursor?: string, dateFrom?: string, dateTo?: string, direction?: 'INCOMING' | 'OUTGOING', limit?: number, sortBy?: 'DATE' | 'AMOUNT', sortDirection?: 'DESCENDING' | 'ASCENDING', statuses?: 'PROCESSING' | 'HOLD' | 'REJECTED' | 'EXPIRED' | 'SETTLED' | 'REVERSED'[], types?: string[], plmr-user-action?: boolean, X-Request-ID?: string): { items?: object[]; nextCursor?: string; }`\n\n**post** `/api/v1/parties/{partyId}/financial-operations:search`\n\nPerforms free-text search over financial operations for the given party. In addition to the `search` text, optional filters, sorting and pagination can be provided.\n\n\n### Parameters\n\n- `partyId: string`\n\n- `search: string`\n  Free-text search query to search across financial operations.\n\n- `accounts?: string[]`\n  Allows filtering financial operations by list of Account IDs. Account ID is the \"accountId\" attribute of the account structure.\n\n\n- `amountFrom?: number`\n  Allows you to filter financial operations based on the operation amount. \nSet this parameter to the minimum operation amount you want to include in the retrieved list, using only positive values as input. \nHowever, the filter will retrieve both positive and negative financial operations within the range.\n\n\n- `amountTo?: number`\n  Allows you to filter financial operations based on the operation amount. \nSet this parameter to the maximum operation amount you want to include in the retrieved list, using only positive values as input. \nHowever, the filter will retrieve both positive and negative financial operations within the range.\n\n\n- `cards?: string[]`\n  Allows filtering financial operations by list of Card IDs.\n\n\n- `cursor?: string`\n  The cursor is a pointer to the next page of financial operations. \nIt is returned in the response body of the previous request. \nUse it to retrieve the next page of financial operations.\n\n\n- `dateFrom?: string`\n  Starting date (inclusive of the date entered) of the financial operations list based on the creation date of the operation entry.\n\n\n- `dateTo?: string`\n  End date (inclusive of the date entered) of the financial operation list based on the creation date of the operation entry.\n\n\n- `direction?: 'INCOMING' | 'OUTGOING'`\n  Direction of a financial operation relative to the account:\n- INCOMING: money is credited to the account\n- OUTGOING: money is debited from the account\n\n\n- `limit?: number`\n  Specifies the number of financial operations to retrieve.\n\n\n- `sortBy?: 'DATE' | 'AMOUNT'`\n  Specifies the sorting field that determines the order of the results.\nDefaults to DATE. Transactions are ordered by bookingDate, falling back to valueDate when bookingDate\nis unavailable, and further to createdDate when neither is available. When multiple transactions\nshare the same bookingDate, they are further sorted by valueDate, then by createdDate.\n\n\n- `sortDirection?: 'DESCENDING' | 'ASCENDING'`\n\n- `statuses?: 'PROCESSING' | 'HOLD' | 'REJECTED' | 'EXPIRED' | 'SETTLED' | 'REVERSED'[]`\n  Specifies the statuses of financial operations, allowing you to filter financial operations based on selected operation statuses.\n\n\n- `types?: string[]`\n  Specifies the types of financial operations, allowing you to filter financial operations based on selected operation types.\n\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ items?: { accountId: string; amount: { amount?: number; currency?: string; }; parentOperationId: string; state: { status: 'PROCESSING' | 'HOLD' | 'REJECTED' | 'EXPIRED' | 'SETTLED' | 'REVERSED'; type: string; otherType?: string; }; additionalAttributes?: object; additionalCounterpartyData?: { address?: object; industryCategoryCode?: number; logo?: string; website?: string; }; additionalInformation?: { description?: string; }; bookingDate?: string; cardId?: string; category?: { icon?: string; name?: string; }; counterpartyAccount?: { currency?: string; iban?: string; } | { currency?: string; other?: object; } | { currency?: string; }; counterpartyAgent?: string; counterpartyName?: string; counterpartyNameOriginal?: string; createdDate?: string; endToEndId?: string; exchangeDetails?: { exchangeRate?: number; fee?: number; }; fundsTransferId?: string; paymentOrderId?: string; remittanceInformationStructuredArray?: { reference?: string; referenceIssuer?: string; referenceType?: string; }; remittanceInformationUnstructured?: string; valueDate?: string; }[]; nextCursor?: string; }`\n\n  - `items?: { accountId: string; amount: { amount?: number; currency?: string; }; parentOperationId: string; state: { status: 'PROCESSING' | 'HOLD' | 'REJECTED' | 'EXPIRED' | 'SETTLED' | 'REVERSED'; type: string; otherType?: string; }; additionalAttributes?: object; additionalCounterpartyData?: { address?: { city?: string; country?: string; latitude?: number; longitude?: number; state?: string; street?: string; zip?: string; }; industryCategoryCode?: number; logo?: string; website?: string; }; additionalInformation?: { description?: string; }; bookingDate?: string; cardId?: string; category?: { icon?: string; name?: string; }; counterpartyAccount?: { currency?: string; iban?: string; } | { currency?: string; other?: { identification?: string; schemeNameCone?: string; }; } | { currency?: string; }; counterpartyAgent?: string; counterpartyName?: string; counterpartyNameOriginal?: string; createdDate?: string; endToEndId?: string; exchangeDetails?: { exchangeRate?: number; fee?: number; }; fundsTransferId?: string; paymentOrderId?: string; remittanceInformationStructuredArray?: { reference?: string; referenceIssuer?: string; referenceType?: string; }; remittanceInformationUnstructured?: string; valueDate?: string; }[]`\n  - `nextCursor?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.parties.financialOperations.search('6878951b-256b-4baa-9e81-ad4c577adc4e', { search: 'Paul Simpson' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.financialOperations.search',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.parties.financialOperations.search(\n  '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  { search: 'Paul Simpson' },\n);\n\nconsole.log(response.items);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/financial-operations:search \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "search": "Paul Simpson"\n        }\'',
      },
      kotlin: {
        method: 'parties().financialOperations().search',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.financialoperations.FinancialOperationSearchParams\nimport com.plumery.api.models.parties.financialoperations.FinancialOperationSearchResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: FinancialOperationSearchParams = FinancialOperationSearchParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .search("Paul Simpson")\n        .build()\n    val response: FinancialOperationSearchResponse = client.parties().financialOperations().search(params)\n}',
      },
      java: {
        method: 'parties().financialOperations().search',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.financialoperations.FinancialOperationSearchParams;\nimport com.plumery.api.models.parties.financialoperations.FinancialOperationSearchResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        FinancialOperationSearchParams params = FinancialOperationSearchParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .search("Paul Simpson")\n            .build();\n        FinancialOperationSearchResponse response = client.parties().financialOperations().search(params);\n    }\n}',
      },
    },
  },
  {
    name: 'list',
    endpoint: '/api/v1/parties/{partyId}/payment-limits',
    httpMethod: 'get',
    summary: 'Get Party Limit Profile',
    description: 'Retrieve the payment limit profile for a specific party\n',
    stainlessPath: '(resource) parties.payment-limits > (method) list',
    qualified: 'client.parties.paymentLimits.list',
    params: ['partyId: string;', 'plmr-user-action?: boolean;'],
    response: '{ id: string; limits: { type: string; paymentTypes?: string[]; }[]; }',
    markdown:
      "## list\n\n`client.parties.paymentLimits.list(partyId: string, plmr-user-action?: boolean): { id: string; limits: object[]; }`\n\n**get** `/api/v1/parties/{partyId}/payment-limits`\n\nRetrieve the payment limit profile for a specific party\n\n\n### Parameters\n\n- `partyId: string`\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ id: string; limits: { type: string; paymentTypes?: string[]; }[]; }`\n\n  - `id: string`\n  - `limits: { type: string; paymentTypes?: string[]; }[]`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst paymentLimits = await client.parties.paymentLimits.list('6878951b-256b-4baa-9e81-ad4c577adc4e');\n\nconsole.log(paymentLimits);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.paymentLimits.list',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst paymentLimits = await client.parties.paymentLimits.list(\n  '6878951b-256b-4baa-9e81-ad4c577adc4e',\n);\n\nconsole.log(paymentLimits.id);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/payment-limits \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().paymentLimits().list',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.paymentlimits.PaymentLimitListParams\nimport com.plumery.api.models.parties.paymentlimits.PaymentLimitListResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val paymentLimits: PaymentLimitListResponse = client.parties().paymentLimits().list("6878951b-256b-4baa-9e81-ad4c577adc4e")\n}',
      },
      java: {
        method: 'parties().paymentLimits().list',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.paymentlimits.PaymentLimitListParams;\nimport com.plumery.api.models.parties.paymentlimits.PaymentLimitListResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        PaymentLimitListResponse paymentLimits = client.parties().paymentLimits().list("6878951b-256b-4baa-9e81-ad4c577adc4e");\n    }\n}',
      },
    },
  },
  {
    name: 'update',
    endpoint: '/api/v1/parties/{partyId}/payment-limits',
    httpMethod: 'put',
    summary: 'Replace Party Limit Profile',
    description:
      'Replace the payment limit profile for a specific party\nSubmitting an empty `limits` array clears all party-level limits, reverting to bank defaults\n',
    stainlessPath: '(resource) parties.payment-limits > (method) update',
    qualified: 'client.parties.paymentLimits.update',
    params: [
      'partyId: string;',
      'limits: { type: string; paymentTypes?: string[]; }[];',
      'If-Match: string;',
      'plmr-mfa-challenge-id?: string;',
      'plmr-mfa-signature?: string;',
      'plmr-user-action?: boolean;',
    ],
    markdown:
      "## update\n\n`client.parties.paymentLimits.update(partyId: string, limits: { type: string; paymentTypes?: string[]; }[], If-Match: string, plmr-mfa-challenge-id?: string, plmr-mfa-signature?: string, plmr-user-action?: boolean): void`\n\n**put** `/api/v1/parties/{partyId}/payment-limits`\n\nReplace the payment limit profile for a specific party\nSubmitting an empty `limits` array clears all party-level limits, reverting to bank defaults\n\n\n### Parameters\n\n- `partyId: string`\n\n- `limits: { type: string; paymentTypes?: string[]; }[]`\n\n- `If-Match: string`\n\n- `plmr-mfa-challenge-id?: string`\n\n- `plmr-mfa-signature?: string`\n\n- `plmr-user-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.parties.paymentLimits.update('6878951b-256b-4baa-9e81-ad4c577adc4e', { limits: [{ type: 'type' }], 'If-Match': '\"1\"' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.paymentLimits.update',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.parties.paymentLimits.update('6878951b-256b-4baa-9e81-ad4c577adc4e', {\n  limits: [{ type: 'type' }],\n  'If-Match': '\"1\"',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/payment-limits \\\n    -X PUT \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "limits": [\n            {\n              "type": "type"\n            }\n          ]\n        }\'',
      },
      kotlin: {
        method: 'parties().paymentLimits().update',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.paymentlimits.PaymentLimitUpdateParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: PaymentLimitUpdateParams = PaymentLimitUpdateParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .ifMatch("\\"1\\"")\n        .addLimit(PaymentLimitUpdateParams.Limit.builder()\n            .type("type")\n            .build())\n        .build()\n    client.parties().paymentLimits().update(params)\n}',
      },
      java: {
        method: 'parties().paymentLimits().update',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.paymentlimits.PaymentLimitUpdateParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        PaymentLimitUpdateParams params = PaymentLimitUpdateParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .ifMatch("\\"1\\"")\n            .addLimit(PaymentLimitUpdateParams.Limit.builder()\n                .type("type")\n                .build())\n            .build();\n        client.parties().paymentLimits().update(params);\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/parties/{partyId}/payment-limits/remaining',
    httpMethod: 'get',
    summary: 'Get Party Available Payment Limit',
    description:
      "Retrieve the remaining payment limit (daily and monthly) still available to a party,\nexpressed in the bank's default currency and covering all payment types.\nAlready-spent amounts include completed, in-progress and awaiting-approval payments;\nonly rejected payments are excluded.\n",
    stainlessPath: '(resource) parties.payment-limits.remaining > (method) retrieve',
    qualified: 'client.parties.paymentLimits.remaining.retrieve',
    params: ['partyId: string;', 'plmr-user-action?: boolean;'],
    response:
      '{ id: string; daily?: { amount: string; currency: string; }; monthly?: { amount: string; currency: string; }; }',
    markdown:
      "## retrieve\n\n`client.parties.paymentLimits.remaining.retrieve(partyId: string, plmr-user-action?: boolean): { id: string; daily?: object; monthly?: object; }`\n\n**get** `/api/v1/parties/{partyId}/payment-limits/remaining`\n\nRetrieve the remaining payment limit (daily and monthly) still available to a party,\nexpressed in the bank's default currency and covering all payment types.\nAlready-spent amounts include completed, in-progress and awaiting-approval payments;\nonly rejected payments are excluded.\n\n\n### Parameters\n\n- `partyId: string`\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ id: string; daily?: { amount: string; currency: string; }; monthly?: { amount: string; currency: string; }; }`\n\n  - `id: string`\n  - `daily?: { amount: string; currency: string; }`\n  - `monthly?: { amount: string; currency: string; }`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst remaining = await client.parties.paymentLimits.remaining.retrieve('6878951b-256b-4baa-9e81-ad4c577adc4e');\n\nconsole.log(remaining);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.paymentLimits.remaining.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst remaining = await client.parties.paymentLimits.remaining.retrieve(\n  '6878951b-256b-4baa-9e81-ad4c577adc4e',\n);\n\nconsole.log(remaining.id);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/payment-limits/remaining \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().paymentLimits().remaining().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.paymentlimits.remaining.RemainingRetrieveParams\nimport com.plumery.api.models.parties.paymentlimits.remaining.RemainingRetrieveResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val remaining: RemainingRetrieveResponse = client.parties().paymentLimits().remaining().retrieve("6878951b-256b-4baa-9e81-ad4c577adc4e")\n}',
      },
      java: {
        method: 'parties().paymentLimits().remaining().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.paymentlimits.remaining.RemainingRetrieveParams;\nimport com.plumery.api.models.parties.paymentlimits.remaining.RemainingRetrieveResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        RemainingRetrieveResponse remaining = client.parties().paymentLimits().remaining().retrieve("6878951b-256b-4baa-9e81-ad4c577adc4e");\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/parties/{partyId}/novatalks/contacts/me',
    httpMethod: 'get',
    summary: 'Obtains chatting contact details for the user',
    description:
      "Allows Web/Mobile apps to retrieve user's chat contact details from Novatalks. \nContact details can be later used by Web/Mobile app to retrieve or create new conversations and messages in Novatalks.\n",
    stainlessPath: '(resource) parties.novatalks.contacts.me > (method) retrieve',
    qualified: 'client.parties.novatalks.contacts.me.retrieve',
    params: ['partyId: string;', 'X-Request-ID: string;'],
    response:
      '{ chatInboxId?: number; contactId?: number; identifier?: string; inboxes?: { id?: number; sourceId?: string; }[]; }',
    markdown:
      "## retrieve\n\n`client.parties.novatalks.contacts.me.retrieve(partyId: string, X-Request-ID: string): { chatInboxId?: number; contactId?: number; identifier?: string; inboxes?: object[]; }`\n\n**get** `/api/v1/parties/{partyId}/novatalks/contacts/me`\n\nAllows Web/Mobile apps to retrieve user's chat contact details from Novatalks. \nContact details can be later used by Web/Mobile app to retrieve or create new conversations and messages in Novatalks.\n\n\n### Parameters\n\n- `partyId: string`\n\n- `X-Request-ID: string`\n\n### Returns\n\n- `{ chatInboxId?: number; contactId?: number; identifier?: string; inboxes?: { id?: number; sourceId?: string; }[]; }`\n  Contact details required to retrieve and create new conversations and messages\n\n  - `chatInboxId?: number`\n  - `contactId?: number`\n  - `identifier?: string`\n  - `inboxes?: { id?: number; sourceId?: string; }[]`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst me = await client.parties.novatalks.contacts.me.retrieve('6878951b-256b-4baa-9e81-ad4c577adc4e', { 'X-Request-ID': 'f0e2c8e1-ec1f-4bcc-8e05-449d288d0c37' });\n\nconsole.log(me);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.novatalks.contacts.me.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst me = await client.parties.novatalks.contacts.me.retrieve(\n  '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  { 'X-Request-ID': 'f0e2c8e1-ec1f-4bcc-8e05-449d288d0c37' },\n);\n\nconsole.log(me.identifier);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/novatalks/contacts/me \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().novatalks().contacts().me().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.novatalks.contacts.me.MeRetrieveParams\nimport com.plumery.api.models.parties.novatalks.contacts.me.MeRetrieveResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: MeRetrieveParams = MeRetrieveParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .xRequestId("f0e2c8e1-ec1f-4bcc-8e05-449d288d0c37")\n        .build()\n    val me: MeRetrieveResponse = client.parties().novatalks().contacts().me().retrieve(params)\n}',
      },
      java: {
        method: 'parties().novatalks().contacts().me().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.novatalks.contacts.me.MeRetrieveParams;\nimport com.plumery.api.models.parties.novatalks.contacts.me.MeRetrieveResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        MeRetrieveParams params = MeRetrieveParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .xRequestId("f0e2c8e1-ec1f-4bcc-8e05-449d288d0c37")\n            .build();\n        MeRetrieveResponse me = client.parties().novatalks().contacts().me().retrieve(params);\n    }\n}',
      },
    },
  },
  {
    name: 'list',
    endpoint: '/api/v1/parties/{partyId}/account-balances',
    httpMethod: 'get',
    summary: 'Aggregate Party Accounts Balances',
    description:
      'Returns the aggregated balance of all accounts belonging to the party, converted into\na target currency, with a breakdown by balance type and per contributing account.\n\nWhen no identifier filter is provided, every account owned by the party contributes.\nWhen one or more identifier filters are provided (`accountId`, `iban`, `bban`, `msisdn`,\n`otherIdentification`), only accounts matching **any** of the filters contribute\n(OR semantics; duplicates by `accountId` are deduped).\n\nBalances held in currencies other than the target currency are converted into the\ntarget currency using the latest known exchange rate. The API returns 503 if a\nrequired rate is not available.\n',
    stainlessPath: '(resource) parties.account-balances > (method) list',
    qualified: 'client.parties.accountBalances.list',
    params: [
      'partyId: string;',
      'targetCurrency: string;',
      'accountId?: string;',
      "balanceTypes?: 'closingBooked' | 'openingBooked' | 'interimAvailable' | 'interimBooked' | 'expected' | 'accrued'[];",
      'bban?: string;',
      'iban?: string;',
      'msisdn?: string;',
      'otherIdentification?: string;',
      'plmr-user-action?: boolean;',
    ],
    response:
      "{ accounts: { accountId: string; balances: { amount: string; convertedAmount: string; type: 'closingBooked' | 'openingBooked' | 'interimAvailable' | 'interimBooked' | 'expected' | 'accrued'; }[]; currency: string; identification?: { bban?: string; iban?: string; maskedPan?: string; msisdn?: string; other?: object; }; rate?: { asOf: string; fromCurrency: string; toCurrency: string; value: string; }; }[]; currency: string; totals: { amount: string; balanceType: 'closingBooked' | 'openingBooked' | 'interimAvailable' | 'interimBooked' | 'expected' | 'accrued'; }[]; }",
    markdown:
      "## list\n\n`client.parties.accountBalances.list(partyId: string, targetCurrency: string, accountId?: string, balanceTypes?: 'closingBooked' | 'openingBooked' | 'interimAvailable' | 'interimBooked' | 'expected' | 'accrued'[], bban?: string, iban?: string, msisdn?: string, otherIdentification?: string, plmr-user-action?: boolean): { accounts: object[]; currency: string; totals: object[]; }`\n\n**get** `/api/v1/parties/{partyId}/account-balances`\n\nReturns the aggregated balance of all accounts belonging to the party, converted into\na target currency, with a breakdown by balance type and per contributing account.\n\nWhen no identifier filter is provided, every account owned by the party contributes.\nWhen one or more identifier filters are provided (`accountId`, `iban`, `bban`, `msisdn`,\n`otherIdentification`), only accounts matching **any** of the filters contribute\n(OR semantics; duplicates by `accountId` are deduped).\n\nBalances held in currencies other than the target currency are converted into the\ntarget currency using the latest known exchange rate. The API returns 503 if a\nrequired rate is not available.\n\n\n### Parameters\n\n- `partyId: string`\n\n- `targetCurrency: string`\n  Target currency (ISO 4217) to convert all balances into.\n\n- `accountId?: string`\n  Include the account with this internal `accountId`.\n\n- `balanceTypes?: 'closingBooked' | 'openingBooked' | 'interimAvailable' | 'interimBooked' | 'expected' | 'accrued'[]`\n  Restrict to specific balance types, provided as a comma-separated string\n(e.g. `interimAvailable,expected`). When omitted, all six balance types are returned.\n\n\n- `bban?: string`\n  Include the account with this BBAN.\n\n- `iban?: string`\n  Include the account with this IBAN.\n\n- `msisdn?: string`\n  Include the account with this MSISDN.\n\n- `otherIdentification?: string`\n  Include the account whose `other.identification` value matches.\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ accounts: { accountId: string; balances: { amount: string; convertedAmount: string; type: 'closingBooked' | 'openingBooked' | 'interimAvailable' | 'interimBooked' | 'expected' | 'accrued'; }[]; currency: string; identification?: { bban?: string; iban?: string; maskedPan?: string; msisdn?: string; other?: object; }; rate?: { asOf: string; fromCurrency: string; toCurrency: string; value: string; }; }[]; currency: string; totals: { amount: string; balanceType: 'closingBooked' | 'openingBooked' | 'interimAvailable' | 'interimBooked' | 'expected' | 'accrued'; }[]; }`\n  Aggregated balances of a party's accounts, converted into a single target currency.\nContains one row per balance type in `totals` and one entry per contributing account\nin `accounts`.\n\n\n  - `accounts: { accountId: string; balances: { amount: string; convertedAmount: string; type: 'closingBooked' | 'openingBooked' | 'interimAvailable' | 'interimBooked' | 'expected' | 'accrued'; }[]; currency: string; identification?: { bban?: string; iban?: string; maskedPan?: string; msisdn?: string; other?: { identification?: string; issuer?: string; schemeNameCode?: string; schemeNameProprietary?: string; }; }; rate?: { asOf: string; fromCurrency: string; toCurrency: string; value: string; }; }[]`\n  - `currency: string`\n  - `totals: { amount: string; balanceType: 'closingBooked' | 'openingBooked' | 'interimAvailable' | 'interimBooked' | 'expected' | 'accrued'; }[]`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst accountBalances = await client.parties.accountBalances.list('6878951b-256b-4baa-9e81-ad4c577adc4e', { targetCurrency: 'EUR' });\n\nconsole.log(accountBalances);\n```",
    perLanguage: {
      typescript: {
        method: 'client.parties.accountBalances.list',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst accountBalances = await client.parties.accountBalances.list(\n  '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  { targetCurrency: 'EUR' },\n);\n\nconsole.log(accountBalances.accounts);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/parties/$PARTY_ID/account-balances \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'parties().accountBalances().list',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.accountbalances.AccountBalanceListParams\nimport com.plumery.api.models.parties.accountbalances.AccountBalanceListResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: AccountBalanceListParams = AccountBalanceListParams.builder()\n        .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .targetCurrency("EUR")\n        .build()\n    val accountBalances: AccountBalanceListResponse = client.parties().accountBalances().list(params)\n}',
      },
      java: {
        method: 'parties().accountBalances().list',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.accountbalances.AccountBalanceListParams;\nimport com.plumery.api.models.parties.accountbalances.AccountBalanceListResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        AccountBalanceListParams params = AccountBalanceListParams.builder()\n            .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .targetCurrency("EUR")\n            .build();\n        AccountBalanceListResponse accountBalances = client.parties().accountBalances().list(params);\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/statements/{statementId}',
    httpMethod: 'get',
    summary: 'Retrieve Account Statement',
    description: 'Allows retrieval of a previously generated account statement.',
    stainlessPath: '(resource) statements > (method) retrieve',
    qualified: 'client.statements.retrieve',
    params: ['statementId: string;', 'plmr-user-action?: boolean;'],
    response: 'string',
    markdown:
      "## retrieve\n\n`client.statements.retrieve(statementId: string, plmr-user-action?: boolean): string`\n\n**get** `/api/v1/statements/{statementId}`\n\nAllows retrieval of a previously generated account statement.\n\n### Parameters\n\n- `statementId: string`\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst statement = await client.statements.retrieve('P');\n\nconsole.log(statement);\n\nconst content = await statement.blob()\nconsole.log(content)\n```",
    perLanguage: {
      typescript: {
        method: 'client.statements.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst statement = await client.statements.retrieve('P');\n\nconsole.log(statement);\n\nconst content = await statement.blob();\nconsole.log(content);",
      },
      http: {
        example: 'curl https://api.plumery.com/api/v1/statements/$STATEMENT_ID \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'statements().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.core.http.HttpResponse\nimport com.plumery.api.models.statements.StatementRetrieveParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val statement: HttpResponse = client.statements().retrieve("P")\n}',
      },
      java: {
        method: 'statements().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.core.http.HttpResponse;\nimport com.plumery.api.models.statements.StatementRetrieveParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        HttpResponse statement = client.statements().retrieve("P");\n    }\n}',
      },
    },
  },
  {
    name: 'list',
    endpoint: '/api/v1/legal-agreements',
    httpMethod: 'get',
    summary: 'List Legal Agreements',
    description: 'Returns a list of the legal agreements based on the request criteria.\n',
    stainlessPath: '(resource) legal-agreements > (method) list',
    qualified: 'client.legalAgreements.list',
    params: ['type?: string;', 'accept-language?: string;', 'X-Request-ID?: string;'],
    response:
      '{ legalAgreements?: { downloadLink?: string; embedLink?: string; language?: string; type?: string; version?: string; }[]; }',
    markdown:
      "## list\n\n`client.legalAgreements.list(type?: string, accept-language?: string, X-Request-ID?: string): { legalAgreements?: object[]; }`\n\n**get** `/api/v1/legal-agreements`\n\nReturns a list of the legal agreements based on the request criteria.\n\n\n### Parameters\n\n- `type?: string`\n  Type of document, used to filter legal agreement documents based on their type\n\n\n- `accept-language?: string`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ legalAgreements?: { downloadLink?: string; embedLink?: string; language?: string; type?: string; version?: string; }[]; }`\n\n  - `legalAgreements?: { downloadLink?: string; embedLink?: string; language?: string; type?: string; version?: string; }[]`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst legalAgreements = await client.legalAgreements.list();\n\nconsole.log(legalAgreements);\n```",
    perLanguage: {
      typescript: {
        method: 'client.legalAgreements.list',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst legalAgreements = await client.legalAgreements.list();\n\nconsole.log(legalAgreements.legalAgreements);",
      },
      http: {
        example: 'curl https://api.plumery.com/api/v1/legal-agreements',
      },
      kotlin: {
        method: 'legalAgreements().list',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.legalagreements.LegalAgreementListParams\nimport com.plumery.api.models.legalagreements.LegalAgreementListResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val legalAgreements: LegalAgreementListResponse = client.legalAgreements().list()\n}',
      },
      java: {
        method: 'legalAgreements().list',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.legalagreements.LegalAgreementListParams;\nimport com.plumery.api.models.legalagreements.LegalAgreementListResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        LegalAgreementListResponse legalAgreements = client.legalAgreements().list();\n    }\n}',
      },
    },
  },
  {
    name: 'login',
    endpoint: '/api/v1/auth:login',
    httpMethod: 'post',
    summary: 'User Login',
    description:
      'The Login API is used to authenticate a user. \nAfter calling this endpoint, there will always be a next step to follow to complete the user authentication.\n\nExpected next steps:\n- When the login is done from a `BROWSER`, next step would be OTP, for two-factor authentication.\n- When the login is done from an `APP` and `deviceId` is not provided, next step would be Device Registration.\n- When the login is done from an `APP` and `deviceId` is provided, next step would be Device Binding.',
    stainlessPath: '(resource) auth > (method) login',
    qualified: 'client.auth.login',
    params: [
      'password: string;',
      "platform: 'BROWSER' | 'APP';",
      'username: string;',
      "challengeMethod?: 'TOTP_SMS' | 'TOTP_EMAIL' | 'SMART_ID' | 'MOBILE_ID';",
      'deviceId?: string;',
      'X-Device-Integrity-Token?: string;',
    ],
    response:
      "{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }",
    markdown:
      "## login\n\n`client.auth.login(password: string, platform: 'BROWSER' | 'APP', username: string, challengeMethod?: 'TOTP_SMS' | 'TOTP_EMAIL' | 'SMART_ID' | 'MOBILE_ID', deviceId?: string, X-Device-Integrity-Token?: string): { nextStep: object; sessionId?: string; }`\n\n**post** `/api/v1/auth:login`\n\nThe Login API is used to authenticate a user. \nAfter calling this endpoint, there will always be a next step to follow to complete the user authentication.\n\nExpected next steps:\n- When the login is done from a `BROWSER`, next step would be OTP, for two-factor authentication.\n- When the login is done from an `APP` and `deviceId` is not provided, next step would be Device Registration.\n- When the login is done from an `APP` and `deviceId` is provided, next step would be Device Binding.\n\n### Parameters\n\n- `password: string`\n  The user's password\n\n- `platform: 'BROWSER' | 'APP'`\n  The platform that is being used for this login.\n- `APP` for native applications (e.g. iOS app) \n- `BROWSER` for web application\n\n- `username: string`\n  The user's username\n\n- `challengeMethod?: 'TOTP_SMS' | 'TOTP_EMAIL' | 'SMART_ID' | 'MOBILE_ID'`\n  In case the login is from a BROWSER, you must provide here the challengeMethod which can be TOTP_SMS or TOTP_EMAIL\n\n- `deviceId?: string`\n  In case the login is from an APP, you can provide here the deviceId generated during the device registration (if available)\n\n- `X-Device-Integrity-Token?: string`\n\n### Returns\n\n- `{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }`\n\n  - `nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }`\n  - `sessionId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.login({\n  password: '1FMArc9)Ll6*',\n  platform: 'BROWSER',\n  username: 'john.doe',\n});\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.auth.login',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.login({\n  password: '1FMArc9)Ll6*',\n  platform: 'BROWSER',\n  username: 'john.doe',\n});\n\nconsole.log(response.nextStep);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/auth:login \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "password": "1FMArc9)Ll6*",\n          "platform": "BROWSER",\n          "username": "john.doe",\n          "deviceId": "3191daaeed978b5b4bd29c161899df72"\n        }\'',
      },
      kotlin: {
        method: 'auth().login',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.auth.AuthLoginParams\nimport com.plumery.api.models.auth.AuthLoginResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: AuthLoginParams = AuthLoginParams.builder()\n        .password("1FMArc9)Ll6*")\n        .platform(AuthLoginParams.Platform.BROWSER)\n        .username("john.doe")\n        .build()\n    val response: AuthLoginResponse = client.auth().login(params)\n}',
      },
      java: {
        method: 'auth().login',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.auth.AuthLoginParams;\nimport com.plumery.api.models.auth.AuthLoginResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        AuthLoginParams params = AuthLoginParams.builder()\n            .password("1FMArc9)Ll6*")\n            .platform(AuthLoginParams.Platform.BROWSER)\n            .username("john.doe")\n            .build();\n        AuthLoginResponse response = client.auth().login(params);\n    }\n}',
      },
    },
  },
  {
    name: 'logout',
    endpoint: '/api/v1/auth:logout',
    httpMethod: 'post',
    summary: 'User Logout',
    description: 'Terminates the current active session of the user.',
    stainlessPath: '(resource) auth > (method) logout',
    qualified: 'client.auth.logout',
    params: ['plmr-user-action?: boolean;'],
    markdown:
      "## logout\n\n`client.auth.logout(plmr-user-action?: boolean): void`\n\n**post** `/api/v1/auth:logout`\n\nTerminates the current active session of the user.\n\n### Parameters\n\n- `plmr-user-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.auth.logout()\n```",
    perLanguage: {
      typescript: {
        method: 'client.auth.logout',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.auth.logout();",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/auth:logout \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'auth().logout',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.auth.AuthLogoutParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    client.auth().logout()\n}',
      },
      java: {
        method: 'auth().logout',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.auth.AuthLogoutParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        client.auth().logout();\n    }\n}',
      },
    },
  },
  {
    name: 'refresh',
    endpoint: '/api/v1/auth:refresh',
    httpMethod: 'post',
    summary: 'User Login from Binded Device',
    description: 'User Login from Binded Device',
    stainlessPath: '(resource) auth > (method) refresh',
    qualified: 'client.auth.refresh',
    params: ['deviceId: string;', 'refreshToken: string;', 'plmr-user-action?: boolean;'],
    response:
      "{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }",
    markdown:
      "## refresh\n\n`client.auth.refresh(deviceId: string, refreshToken: string, plmr-user-action?: boolean): { nextStep: object; sessionId?: string; }`\n\n**post** `/api/v1/auth:refresh`\n\nUser Login from Binded Device\n\n### Parameters\n\n- `deviceId: string`\n\n- `refreshToken: string`\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }`\n\n  - `nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }`\n  - `sessionId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.refresh({ deviceId: 'P', refreshToken: 'P' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.auth.refresh',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.refresh({ deviceId: 'P', refreshToken: 'P' });\n\nconsole.log(response.nextStep);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/auth:refresh \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "deviceId": "P",\n          "refreshToken": "P"\n        }\'',
      },
      kotlin: {
        method: 'auth().refresh',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.auth.AuthRefreshParams\nimport com.plumery.api.models.auth.AuthRefreshResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: AuthRefreshParams = AuthRefreshParams.builder()\n        .deviceId("P")\n        .refreshToken("P")\n        .build()\n    val response: AuthRefreshResponse = client.auth().refresh(params)\n}',
      },
      java: {
        method: 'auth().refresh',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.auth.AuthRefreshParams;\nimport com.plumery.api.models.auth.AuthRefreshResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        AuthRefreshParams params = AuthRefreshParams.builder()\n            .deviceId("P")\n            .refreshToken("P")\n            .build();\n        AuthRefreshResponse response = client.auth().refresh(params);\n    }\n}',
      },
    },
  },
  {
    name: 'loginSmartId',
    endpoint: '/api/v1/auth:login-smart-id',
    httpMethod: 'post',
    summary: 'Smart-ID Login',
    description:
      'The Smart-ID Login API is used to authenticate a user using the Smart-ID authentication method.\nAfter calling this endpoint, there will be a next step to follow to complete the user authentication.',
    stainlessPath: '(resource) auth > (method) loginSmartId',
    qualified: 'client.auth.loginSmartID',
    params: [
      "body: { method: 'SAME_DEVICE_SMART_ID'; personalId: string; platform: 'BROWSER' | 'APP'; username: string; deviceId?: string; } | { method: 'CROSS_DEVICE_SMART_ID'; platform: 'BROWSER' | 'APP'; username: string; };",
      'plmr-user-action?: boolean;',
      'X-Device-Integrity-Token?: string;',
    ],
    response:
      "{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }",
    perLanguage: {
      typescript: {
        method: 'client.auth.loginSmartID',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.loginSmartID({\n  method: 'SAME_DEVICE_SMART_ID',\n  personalId: '38807182715',\n  platform: 'BROWSER',\n  username: 'john.doe',\n});\n\nconsole.log(response.nextStep);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/auth:login-smart-id \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "method": "SAME_DEVICE_SMART_ID",\n          "personalId": "38807182715",\n          "platform": "BROWSER",\n          "username": "john.doe",\n          "deviceId": "3191daaeed978b5b4bd29c161899df72"\n        }\'',
      },
      kotlin: {
        method: 'auth().loginSmartId',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.auth.AuthLoginSmartIdParams\nimport com.plumery.api.models.auth.AuthLoginSmartIdResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: AuthLoginSmartIdParams.Body.SameDeviceSmartId = AuthLoginSmartIdParams.Body.SameDeviceSmartId.builder()\n        .personalId("38807182715")\n        .platform(AuthLoginSmartIdParams.Body.SameDeviceSmartId.Platform.BROWSER)\n        .username("john.doe")\n        .build()\n    val response: AuthLoginSmartIdResponse = client.auth().loginSmartId(params)\n}',
      },
      java: {
        method: 'auth().loginSmartId',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.auth.AuthLoginSmartIdParams;\nimport com.plumery.api.models.auth.AuthLoginSmartIdResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        AuthLoginSmartIdParams.Body.SameDeviceSmartId params = AuthLoginSmartIdParams.Body.SameDeviceSmartId.builder()\n            .personalId("38807182715")\n            .platform(AuthLoginSmartIdParams.Body.SameDeviceSmartId.Platform.BROWSER)\n            .username("john.doe")\n            .build();\n        AuthLoginSmartIdResponse response = client.auth().loginSmartId(params);\n    }\n}',
      },
    },
  },
  {
    name: 'loginMobileId',
    endpoint: '/api/v1/auth:login-mobile-id',
    httpMethod: 'post',
    summary: 'Mobile-ID Login',
    description:
      'The Mobile-ID Login API is used to authenticate a user using the Mobile-ID authentication method.\nAfter calling this endpoint, there will be a next step to follow to complete the user authentication.',
    stainlessPath: '(resource) auth > (method) loginMobileId',
    qualified: 'client.auth.loginMobileID',
    params: [
      "body: { method: 'SAME_DEVICE_MOBILE_ID'; phoneNumber: string; platform: 'BROWSER' | 'APP'; username: string; deviceId?: string; } | { method: 'CROSS_DEVICE_MOBILE_ID'; phoneNumber: string; platform: 'BROWSER' | 'APP'; username: string; };",
      'X-Device-Integrity-Token?: string;',
    ],
    response:
      "{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }",
    perLanguage: {
      typescript: {
        method: 'client.auth.loginMobileID',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.loginMobileID({\n  method: 'SAME_DEVICE_MOBILE_ID',\n  phoneNumber: '+37061234567',\n  platform: 'BROWSER',\n  username: 'john.doe',\n});\n\nconsole.log(response.nextStep);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/auth:login-mobile-id \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "method": "SAME_DEVICE_MOBILE_ID",\n          "phoneNumber": "+37061234567",\n          "platform": "BROWSER",\n          "username": "john.doe",\n          "deviceId": "3191daaeed978b5b4bd29c161899df72"\n        }\'',
      },
      kotlin: {
        method: 'auth().loginMobileId',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.auth.AuthLoginMobileIdParams\nimport com.plumery.api.models.auth.AuthLoginMobileIdResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: AuthLoginMobileIdParams.Body.SameDeviceMobileId = AuthLoginMobileIdParams.Body.SameDeviceMobileId.builder()\n        .phoneNumber("+37061234567")\n        .platform(AuthLoginMobileIdParams.Body.SameDeviceMobileId.Platform.BROWSER)\n        .username("john.doe")\n        .build()\n    val response: AuthLoginMobileIdResponse = client.auth().loginMobileId(params)\n}',
      },
      java: {
        method: 'auth().loginMobileId',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.auth.AuthLoginMobileIdParams;\nimport com.plumery.api.models.auth.AuthLoginMobileIdResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        AuthLoginMobileIdParams.Body.SameDeviceMobileId params = AuthLoginMobileIdParams.Body.SameDeviceMobileId.builder()\n            .phoneNumber("+37061234567")\n            .platform(AuthLoginMobileIdParams.Body.SameDeviceMobileId.Platform.BROWSER)\n            .username("john.doe")\n            .build();\n        AuthLoginMobileIdResponse response = client.auth().loginMobileId(params);\n    }\n}',
      },
    },
  },
  {
    name: 'loginCustom',
    endpoint: '/api/v1/auth:login-custom',
    httpMethod: 'post',
    summary: 'Custom Login',
    description:
      'The Custom Login API is used to initiate the authentication for a user using the custom authentication method, defined in the request body under method field.\nAfter calling this endpoint, there will be a next step to follow to confirm the user authentication.',
    stainlessPath: '(resource) auth > (method) loginCustom',
    qualified: 'client.auth.loginCustom',
    params: [
      'method: string;',
      "platform: 'BROWSER' | 'APP';",
      'username: string;',
      'deviceId?: string;',
      'loginDetails?: object;',
    ],
    response:
      "{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }",
    markdown:
      "## loginCustom\n\n`client.auth.loginCustom(method: string, platform: 'BROWSER' | 'APP', username: string, deviceId?: string, loginDetails?: object): { nextStep: object; sessionId?: string; }`\n\n**post** `/api/v1/auth:login-custom`\n\nThe Custom Login API is used to initiate the authentication for a user using the custom authentication method, defined in the request body under method field.\nAfter calling this endpoint, there will be a next step to follow to confirm the user authentication.\n\n### Parameters\n\n- `method: string`\n  Indicates the custom login method.\n\n- `platform: 'BROWSER' | 'APP'`\n  The platform that is being used for this login.\n- `APP` for native applications (e.g. iOS app) \n- `BROWSER` for web application\n\n- `username: string`\n  The user's username\n\n- `deviceId?: string`\n  In case the login is from an APP, you can provide here the deviceId generated during the device registration (if available)\n\n- `loginDetails?: object`\n  Additional details required for the custom login method.\n\n### Returns\n\n- `{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }`\n\n  - `nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }`\n  - `sessionId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.loginCustom({\n  method: 'method',\n  platform: 'BROWSER',\n  username: 'john.doe',\n});\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.auth.loginCustom',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.loginCustom({\n  method: 'method',\n  platform: 'BROWSER',\n  username: 'john.doe',\n});\n\nconsole.log(response.nextStep);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/auth:login-custom \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "method": "method",\n          "platform": "BROWSER",\n          "username": "john.doe",\n          "deviceId": "3191daaeed978b5b4bd29c161899df72"\n        }\'',
      },
      kotlin: {
        method: 'auth().loginCustom',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.auth.AuthLoginCustomParams\nimport com.plumery.api.models.auth.AuthLoginCustomResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: AuthLoginCustomParams = AuthLoginCustomParams.builder()\n        .method("method")\n        .platform(AuthLoginCustomParams.Platform.BROWSER)\n        .username("john.doe")\n        .build()\n    val response: AuthLoginCustomResponse = client.auth().loginCustom(params)\n}',
      },
      java: {
        method: 'auth().loginCustom',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.auth.AuthLoginCustomParams;\nimport com.plumery.api.models.auth.AuthLoginCustomResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        AuthLoginCustomParams params = AuthLoginCustomParams.builder()\n            .method("method")\n            .platform(AuthLoginCustomParams.Platform.BROWSER)\n            .username("john.doe")\n            .build();\n        AuthLoginCustomResponse response = client.auth().loginCustom(params);\n    }\n}',
      },
    },
  },
  {
    name: 'passwordlessLogin',
    endpoint: '/api/v1/auth:passwordless-login',
    httpMethod: 'post',
    summary: 'Passwordless User Login',
    description:
      'The Passwordless Login API is used to authenticate a user without requiring a password. \nAfter calling this endpoint, there will always be a next step to follow to complete the user authentication.\n\nExpected next steps:\n- When the login is done from a `BROWSER`, next step would be OTP, for two-factor authentication.\n- When the login is done from an `APP` and `deviceId` is not provided, next step would be Device Registration.\n- When the login is done from an `APP` and `deviceId` is provided, next step would be Device Binding.\n\nPasswordless phone number login is only supported if the phone number is unique.\nIt may be disabled if phone number uniqueness is not guaranteed at environment level.',
    stainlessPath: '(resource) auth > (method) passwordlessLogin',
    qualified: 'client.auth.passwordlessLogin',
    params: [
      "body: { email: string; method: 'PASSWORDLESS_EMAIL_LOGIN'; deviceId?: string; platform?: 'BROWSER' | 'APP'; } | { method: 'PASSWORDLESS_PHONE_LOGIN'; phoneNumber: string; deviceId?: string; platform?: 'BROWSER' | 'APP'; } | { email: string; method: 'PASSWORDLESS_PASSKEY_LOGIN'; deviceId?: string; platform?: 'BROWSER' | 'APP'; } | { token: string; method: 'PASSWORDLESS_TOKEN_LOGIN'; deviceId?: string; platform?: 'BROWSER' | 'APP'; };",
      'X-Device-Integrity-Token?: string;',
    ],
    response:
      "{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }",
    perLanguage: {
      typescript: {
        method: 'client.auth.passwordlessLogin',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.passwordlessLogin({\n  email: 'john.snow@example.com',\n  method: 'PASSWORDLESS_EMAIL_LOGIN',\n});\n\nconsole.log(response.nextStep);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/auth:passwordless-login \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "email": "john.snow@example.com",\n          "method": "PASSWORDLESS_EMAIL_LOGIN",\n          "deviceId": "7f200a2fa12c4797a00a2fa12c0797a2"\n        }\'',
      },
      kotlin: {
        method: 'auth().passwordlessLogin',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.auth.AuthPasswordlessLoginParams\nimport com.plumery.api.models.auth.AuthPasswordlessLoginResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: AuthPasswordlessLoginParams.Body.PasswordlessEmailLogin = AuthPasswordlessLoginParams.Body.PasswordlessEmailLogin.builder()\n        .email("john.snow@example.com")\n        .build()\n    val response: AuthPasswordlessLoginResponse = client.auth().passwordlessLogin(params)\n}',
      },
      java: {
        method: 'auth().passwordlessLogin',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.auth.AuthPasswordlessLoginParams;\nimport com.plumery.api.models.auth.AuthPasswordlessLoginResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        AuthPasswordlessLoginParams.Body.PasswordlessEmailLogin params = AuthPasswordlessLoginParams.Body.PasswordlessEmailLogin.builder()\n            .email("john.snow@example.com")\n            .build();\n        AuthPasswordlessLoginResponse response = client.auth().passwordlessLogin(params);\n    }\n}',
      },
    },
  },
  {
    name: 'crossDeviceLogin',
    endpoint: '/api/v1/auth:cross-device-login',
    httpMethod: 'post',
    summary: 'Cross device login',
    description:
      'Initiate a cross device login session. This session can be initiated only from a browser platform.\n\nThe `method` field selects the login variant and must always be sent:\n- `QR` - the initiating device displays a QR code.\n- `IDENTIFIER` - the user is identified by `username` and `personalId`, which are then required.\n\nFor backwards compatibility a payload without `method` is still accepted and treated as `QR`.\nNew integrations must send it explicitly.',
    stainlessPath: '(resource) auth > (method) crossDeviceLogin',
    qualified: 'client.auth.crossDeviceLogin',
    params: [
      "{ method: 'QR'; platform: 'BROWSER' | 'APP'; } | { method: 'IDENTIFIER'; personalId: string; platform: 'BROWSER' | 'APP'; username: string; };",
    ],
    response:
      '{ nextStep: { challenge: string; info?: { crossDeviceSecret: string; expiresAt: string; visualVerificationCode: string; }; }; }',
    perLanguage: {
      typescript: {
        method: 'client.auth.crossDeviceLogin',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.crossDeviceLogin({ method: 'QR', platform: 'BROWSER' });\n\nconsole.log(response.nextStep);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/auth:cross-device-login \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "method": "QR",\n          "platform": "BROWSER"\n        }\'',
      },
      kotlin: {
        method: 'auth().crossDeviceLogin',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.auth.AuthCrossDeviceLoginParams\nimport com.plumery.api.models.auth.AuthCrossDeviceLoginResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: AuthCrossDeviceLoginParams.Body.Qr = AuthCrossDeviceLoginParams.Body.Qr.builder()\n        .platform(AuthCrossDeviceLoginParams.Body.Qr.Platform.BROWSER)\n        .build()\n    val response: AuthCrossDeviceLoginResponse = client.auth().crossDeviceLogin(params)\n}',
      },
      java: {
        method: 'auth().crossDeviceLogin',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.auth.AuthCrossDeviceLoginParams;\nimport com.plumery.api.models.auth.AuthCrossDeviceLoginResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        AuthCrossDeviceLoginParams.Body.Qr params = AuthCrossDeviceLoginParams.Body.Qr.builder()\n            .platform(AuthCrossDeviceLoginParams.Body.Qr.Platform.BROWSER)\n            .build();\n        AuthCrossDeviceLoginResponse response = client.auth().crossDeviceLogin(params);\n    }\n}',
      },
    },
  },
  {
    name: 'confirm',
    endpoint: '/api/v1/auth/challenges:confirm',
    httpMethod: 'post',
    summary: 'Confirm Session',
    description:
      'Use this endpoint after receiving `confirm` as next step.\n\nThis is the final step to authenticate the user, after all challenges completed successfully.',
    stainlessPath: '(resource) auth.challenges > (method) confirm',
    qualified: 'client.auth.challenges.confirm',
    params: ['sessionId: string;', 'plmr-user-action?: boolean;'],
    response:
      '{ representations: { parties: { id: string; name: string; type: string; }[]; selfIndividualParty: { id: string; name: string; type: string; }; }; deviceId?: string; refreshToken?: string; }',
    markdown:
      "## confirm\n\n`client.auth.challenges.confirm(sessionId: string, plmr-user-action?: boolean): { representations: object; deviceId?: string; refreshToken?: string; }`\n\n**post** `/api/v1/auth/challenges:confirm`\n\nUse this endpoint after receiving `confirm` as next step.\n\nThis is the final step to authenticate the user, after all challenges completed successfully.\n\n### Parameters\n\n- `sessionId: string`\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ representations: { parties: { id: string; name: string; type: string; }[]; selfIndividualParty: { id: string; name: string; type: string; }; }; deviceId?: string; refreshToken?: string; }`\n\n  - `representations: { parties: { id: string; name: string; type: string; }[]; selfIndividualParty: { id: string; name: string; type: string; }; }`\n  - `deviceId?: string`\n  - `refreshToken?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.challenges.confirm({ sessionId: '3191daaeed978b5b4bd29c161899df72' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.auth.challenges.confirm',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.challenges.confirm({\n  sessionId: '3191daaeed978b5b4bd29c161899df72',\n});\n\nconsole.log(response.representations);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/auth/challenges:confirm \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "sessionId": "3191daaeed978b5b4bd29c161899df72"\n        }\'',
      },
      kotlin: {
        method: 'auth().challenges().confirm',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.auth.challenges.ChallengeConfirmParams\nimport com.plumery.api.models.auth.challenges.ChallengeConfirmResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: ChallengeConfirmParams = ChallengeConfirmParams.builder()\n        .sessionId("3191daaeed978b5b4bd29c161899df72")\n        .build()\n    val response: ChallengeConfirmResponse = client.auth().challenges().confirm(params)\n}',
      },
      java: {
        method: 'auth().challenges().confirm',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.auth.challenges.ChallengeConfirmParams;\nimport com.plumery.api.models.auth.challenges.ChallengeConfirmResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        ChallengeConfirmParams params = ChallengeConfirmParams.builder()\n            .sessionId("3191daaeed978b5b4bd29c161899df72")\n            .build();\n        ChallengeConfirmResponse response = client.auth().challenges().confirm(params);\n    }\n}',
      },
    },
  },
  {
    name: 'registerDevice',
    endpoint: '/api/v1/auth/challenges:register-device',
    httpMethod: 'post',
    summary: 'Register Device',
    description:
      'Use this endpoint after receiving `DeviceRegistration` as next step.\n\nThis initiate the process of registering the device as a trusted one.\nNext step is `DeviceBinding`',
    stainlessPath: '(resource) auth.challenges > (method) registerDevice',
    qualified: 'client.auth.challenges.registerDevice',
    params: ['sessionId: string;', 'info?: object;', 'plmr-user-action?: boolean;'],
    response:
      "{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }",
    markdown:
      "## registerDevice\n\n`client.auth.challenges.registerDevice(sessionId: string, info?: object, plmr-user-action?: boolean): { nextStep: object; sessionId?: string; }`\n\n**post** `/api/v1/auth/challenges:register-device`\n\nUse this endpoint after receiving `DeviceRegistration` as next step.\n\nThis initiate the process of registering the device as a trusted one.\nNext step is `DeviceBinding`\n\n### Parameters\n\n- `sessionId: string`\n  The ID of the session\n\n- `info?: object`\n  Any sort of information about the device that needs to be stored\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }`\n\n  - `nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }`\n  - `sessionId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.challenges.registerDevice({ sessionId: '3191daaeed978b5b4bd29c161899df72' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.auth.challenges.registerDevice',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.challenges.registerDevice({\n  sessionId: '3191daaeed978b5b4bd29c161899df72',\n});\n\nconsole.log(response.nextStep);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/auth/challenges:register-device \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "sessionId": "3191daaeed978b5b4bd29c161899df72"\n        }\'',
      },
      kotlin: {
        method: 'auth().challenges().registerDevice',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.auth.challenges.ChallengeRegisterDeviceParams\nimport com.plumery.api.models.auth.challenges.ChallengeRegisterDeviceResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: ChallengeRegisterDeviceParams = ChallengeRegisterDeviceParams.builder()\n        .sessionId("3191daaeed978b5b4bd29c161899df72")\n        .build()\n    val response: ChallengeRegisterDeviceResponse = client.auth().challenges().registerDevice(params)\n}',
      },
      java: {
        method: 'auth().challenges().registerDevice',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.auth.challenges.ChallengeRegisterDeviceParams;\nimport com.plumery.api.models.auth.challenges.ChallengeRegisterDeviceResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        ChallengeRegisterDeviceParams params = ChallengeRegisterDeviceParams.builder()\n            .sessionId("3191daaeed978b5b4bd29c161899df72")\n            .build();\n        ChallengeRegisterDeviceResponse response = client.auth().challenges().registerDevice(params);\n    }\n}',
      },
    },
  },
  {
    name: 'sign',
    endpoint: '/api/v1/auth/challenges:sign',
    httpMethod: 'post',
    summary: 'Bind Device',
    description:
      'Use this endpoint after receiving `DeviceBinding` as next step.\n\nBind device by signing it - this will enable the user to seamlessly login from the same device.\nIf device signature is successful, next step may be `OTP` based on the environment configuration.\nIf the challenge method is `TOTP_SMS`, the OTP code will be sent to the phone number. \nOtherwise, if the challenge method is `TOTP_EMAIL`, the OTP code will be sent to the email address.',
    stainlessPath: '(resource) auth.challenges > (method) sign',
    qualified: 'client.auth.challenges.sign',
    params: [
      "challengeMethod: 'TOTP_SMS' | 'TOTP_EMAIL' | 'SMART_ID' | 'MOBILE_ID';",
      'sessionId: string;',
      'signature: string;',
      'plmr-user-action?: boolean;',
    ],
    response:
      "{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }",
    markdown:
      "## sign\n\n`client.auth.challenges.sign(challengeMethod: 'TOTP_SMS' | 'TOTP_EMAIL' | 'SMART_ID' | 'MOBILE_ID', sessionId: string, signature: string, plmr-user-action?: boolean): { nextStep: object; sessionId?: string; }`\n\n**post** `/api/v1/auth/challenges:sign`\n\nUse this endpoint after receiving `DeviceBinding` as next step.\n\nBind device by signing it - this will enable the user to seamlessly login from the same device.\nIf device signature is successful, next step may be `OTP` based on the environment configuration.\nIf the challenge method is `TOTP_SMS`, the OTP code will be sent to the phone number. \nOtherwise, if the challenge method is `TOTP_EMAIL`, the OTP code will be sent to the email address.\n\n### Parameters\n\n- `challengeMethod: 'TOTP_SMS' | 'TOTP_EMAIL' | 'SMART_ID' | 'MOBILE_ID'`\n  Specifies the method by which the OTP code will be delivered, such as via SMS or email\n\n- `sessionId: string`\n  The ID of the session\n\n- `signature: string`\n  A Base64-encoded RSA signature over Base64-encoded `dataToSign` provided when receiving `DeviceBinding` as the next step.\nThe signature is generated with the device’s private key using the SHA256withRSA (PKCS#1 v1.5) algorithm. The `dataToSign` is to be Base64-decoded for signing.\n\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }`\n\n  - `nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }`\n  - `sessionId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.challenges.sign({\n  challengeMethod: 'TOTP_SMS',\n  sessionId: '3191daaeed978b5b4bd29c161899df72',\n  signature: 'P',\n});\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.auth.challenges.sign',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.challenges.sign({\n  challengeMethod: 'TOTP_SMS',\n  sessionId: '3191daaeed978b5b4bd29c161899df72',\n  signature: 'P',\n});\n\nconsole.log(response.nextStep);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/auth/challenges:sign \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "challengeMethod": "TOTP_SMS",\n          "sessionId": "3191daaeed978b5b4bd29c161899df72",\n          "signature": "P"\n        }\'',
      },
      kotlin: {
        method: 'auth().challenges().sign',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.auth.challenges.ChallengeSignParams\nimport com.plumery.api.models.auth.challenges.ChallengeSignResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: ChallengeSignParams = ChallengeSignParams.builder()\n        .challengeMethod(ChallengeSignParams.ChallengeMethod.TOTP_SMS)\n        .sessionId("3191daaeed978b5b4bd29c161899df72")\n        .signature("P")\n        .build()\n    val response: ChallengeSignResponse = client.auth().challenges().sign(params)\n}',
      },
      java: {
        method: 'auth().challenges().sign',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.auth.challenges.ChallengeSignParams;\nimport com.plumery.api.models.auth.challenges.ChallengeSignResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        ChallengeSignParams params = ChallengeSignParams.builder()\n            .challengeMethod(ChallengeSignParams.ChallengeMethod.TOTP_SMS)\n            .sessionId("3191daaeed978b5b4bd29c161899df72")\n            .signature("P")\n            .build();\n        ChallengeSignResponse response = client.auth().challenges().sign(params);\n    }\n}',
      },
    },
  },
  {
    name: 'enablePasscode',
    endpoint: '/api/v1/auth/challenges:enable-passcode',
    httpMethod: 'post',
    summary: 'Enable passcode Challenge',
    description:
      'Use this endpoint after receiving `EnablePasscode` as a next step.\n\nThis enables or disables passcode based authentication for the user session.',
    stainlessPath: '(resource) auth.challenges > (method) enablePasscode',
    qualified: 'client.auth.challenges.enablePasscode',
    params: ['enabled: boolean;', 'sessionId: string;', 'publicKey?: string;', 'plmr-user-action?: boolean;'],
    response:
      "{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }",
    markdown:
      "## enablePasscode\n\n`client.auth.challenges.enablePasscode(enabled: boolean, sessionId: string, publicKey?: string, plmr-user-action?: boolean): { nextStep: object; sessionId?: string; }`\n\n**post** `/api/v1/auth/challenges:enable-passcode`\n\nUse this endpoint after receiving `EnablePasscode` as a next step.\n\nThis enables or disables passcode based authentication for the user session.\n\n### Parameters\n\n- `enabled: boolean`\n  Flag indicating whether the passcode is to be enabled\n\n- `sessionId: string`\n  The ID of the session\n\n- `publicKey?: string`\n  A Base64-encoded RSA public key (up to 4096 bytes) generated using SHA-256 hashing. Only required if `enabled` value is `true`.\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }`\n\n  - `nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }`\n  - `sessionId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.challenges.enablePasscode({ enabled: true, sessionId: '3191daaeed978b5b4bd29c161899df72' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.auth.challenges.enablePasscode',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.challenges.enablePasscode({\n  enabled: true,\n  sessionId: '3191daaeed978b5b4bd29c161899df72',\n});\n\nconsole.log(response.nextStep);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/auth/challenges:enable-passcode \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "enabled": true,\n          "sessionId": "3191daaeed978b5b4bd29c161899df72"\n        }\'',
      },
      kotlin: {
        method: 'auth().challenges().enablePasscode',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.auth.challenges.ChallengeEnablePasscodeParams\nimport com.plumery.api.models.auth.challenges.ChallengeEnablePasscodeResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: ChallengeEnablePasscodeParams = ChallengeEnablePasscodeParams.builder()\n        .enabled(true)\n        .sessionId("3191daaeed978b5b4bd29c161899df72")\n        .build()\n    val response: ChallengeEnablePasscodeResponse = client.auth().challenges().enablePasscode(params)\n}',
      },
      java: {
        method: 'auth().challenges().enablePasscode',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.auth.challenges.ChallengeEnablePasscodeParams;\nimport com.plumery.api.models.auth.challenges.ChallengeEnablePasscodeResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        ChallengeEnablePasscodeParams params = ChallengeEnablePasscodeParams.builder()\n            .enabled(true)\n            .sessionId("3191daaeed978b5b4bd29c161899df72")\n            .build();\n        ChallengeEnablePasscodeResponse response = client.auth().challenges().enablePasscode(params);\n    }\n}',
      },
    },
  },
  {
    name: 'enableBiometrics',
    endpoint: '/api/v1/auth/challenges:enable-biometrics',
    httpMethod: 'post',
    summary: 'Enable Biometrics Challenge',
    description:
      'Use this endpoint after receiving `EnableBiometrics` as a next step.\n\nThis enables or disables biometric authentication for the user session.',
    stainlessPath: '(resource) auth.challenges > (method) enableBiometrics',
    qualified: 'client.auth.challenges.enableBiometrics',
    params: ['enabled: boolean;', 'sessionId: string;', 'publicKey?: string;', 'plmr-user-action?: boolean;'],
    response:
      "{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }",
    markdown:
      "## enableBiometrics\n\n`client.auth.challenges.enableBiometrics(enabled: boolean, sessionId: string, publicKey?: string, plmr-user-action?: boolean): { nextStep: object; sessionId?: string; }`\n\n**post** `/api/v1/auth/challenges:enable-biometrics`\n\nUse this endpoint after receiving `EnableBiometrics` as a next step.\n\nThis enables or disables biometric authentication for the user session.\n\n### Parameters\n\n- `enabled: boolean`\n  Flag indicating whether the biometrics is to be enabled\n\n- `sessionId: string`\n  The ID of the session\n\n- `publicKey?: string`\n  A Base64-encoded RSA public key (up to 4096 bytes) generated using SHA-256 hashing. Only required if `enabled` value is `true`.\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }`\n\n  - `nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }`\n  - `sessionId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.challenges.enableBiometrics({ enabled: true, sessionId: '3191daaeed978b5b4bd29c161899df72' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.auth.challenges.enableBiometrics',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.challenges.enableBiometrics({\n  enabled: true,\n  sessionId: '3191daaeed978b5b4bd29c161899df72',\n});\n\nconsole.log(response.nextStep);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/auth/challenges:enable-biometrics \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "enabled": true,\n          "sessionId": "3191daaeed978b5b4bd29c161899df72"\n        }\'',
      },
      kotlin: {
        method: 'auth().challenges().enableBiometrics',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.auth.challenges.ChallengeEnableBiometricsParams\nimport com.plumery.api.models.auth.challenges.ChallengeEnableBiometricsResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: ChallengeEnableBiometricsParams = ChallengeEnableBiometricsParams.builder()\n        .enabled(true)\n        .sessionId("3191daaeed978b5b4bd29c161899df72")\n        .build()\n    val response: ChallengeEnableBiometricsResponse = client.auth().challenges().enableBiometrics(params)\n}',
      },
      java: {
        method: 'auth().challenges().enableBiometrics',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.auth.challenges.ChallengeEnableBiometricsParams;\nimport com.plumery.api.models.auth.challenges.ChallengeEnableBiometricsResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        ChallengeEnableBiometricsParams params = ChallengeEnableBiometricsParams.builder()\n            .enabled(true)\n            .sessionId("3191daaeed978b5b4bd29c161899df72")\n            .build();\n        ChallengeEnableBiometricsResponse response = client.auth().challenges().enableBiometrics(params);\n    }\n}',
      },
    },
  },
  {
    name: 'initiateSigning',
    endpoint: '/api/v1/auth/challenges:initiate-signing',
    httpMethod: 'post',
    summary: 'Initiate Device Signing',
    description:
      'Use this endpoint after receiving `InitiateDeviceSigning` as next step along with the available signing methods.',
    stainlessPath: '(resource) auth.challenges > (method) initiateSigning',
    qualified: 'client.auth.challenges.initiateSigning',
    params: [
      "deviceSigningMethod: 'BIOMETRICS' | 'PASSCODE';",
      'sessionId: string;',
      'plmr-user-action?: boolean;',
    ],
    response:
      "{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }",
    markdown:
      "## initiateSigning\n\n`client.auth.challenges.initiateSigning(deviceSigningMethod: 'BIOMETRICS' | 'PASSCODE', sessionId: string, plmr-user-action?: boolean): { nextStep: object; sessionId?: string; }`\n\n**post** `/api/v1/auth/challenges:initiate-signing`\n\nUse this endpoint after receiving `InitiateDeviceSigning` as next step along with the available signing methods.\n\n### Parameters\n\n- `deviceSigningMethod: 'BIOMETRICS' | 'PASSCODE'`\n  Device signing method to be used for signing.\n\n- `sessionId: string`\n  The ID of the session\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }`\n\n  - `nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }`\n  - `sessionId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.challenges.initiateSigning({ deviceSigningMethod: 'BIOMETRICS', sessionId: '3191daaeed978b5b4bd29c161899df72' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.auth.challenges.initiateSigning',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.challenges.initiateSigning({\n  deviceSigningMethod: 'BIOMETRICS',\n  sessionId: '3191daaeed978b5b4bd29c161899df72',\n});\n\nconsole.log(response.nextStep);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/auth/challenges:initiate-signing \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "deviceSigningMethod": "BIOMETRICS",\n          "sessionId": "3191daaeed978b5b4bd29c161899df72"\n        }\'',
      },
      kotlin: {
        method: 'auth().challenges().initiateSigning',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.auth.challenges.ChallengeInitiateSigningParams\nimport com.plumery.api.models.auth.challenges.ChallengeInitiateSigningResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: ChallengeInitiateSigningParams = ChallengeInitiateSigningParams.builder()\n        .deviceSigningMethod(ChallengeInitiateSigningParams.DeviceSigningMethod.BIOMETRICS)\n        .sessionId("3191daaeed978b5b4bd29c161899df72")\n        .build()\n    val response: ChallengeInitiateSigningResponse = client.auth().challenges().initiateSigning(params)\n}',
      },
      java: {
        method: 'auth().challenges().initiateSigning',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.auth.challenges.ChallengeInitiateSigningParams;\nimport com.plumery.api.models.auth.challenges.ChallengeInitiateSigningResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        ChallengeInitiateSigningParams params = ChallengeInitiateSigningParams.builder()\n            .deviceSigningMethod(ChallengeInitiateSigningParams.DeviceSigningMethod.BIOMETRICS)\n            .sessionId("3191daaeed978b5b4bd29c161899df72")\n            .build();\n        ChallengeInitiateSigningResponse response = client.auth().challenges().initiateSigning(params);\n    }\n}',
      },
    },
  },
  {
    name: 'confirmPendingAuthentication',
    endpoint: '/api/v1/auth/challenges:confirm-pending-authentication',
    httpMethod: 'post',
    summary: 'Confirm Pending Authentication',
    description:
      'Final step of a pending authentication flow.  \nOnce all required challenges are completed successfully, this endpoint confirms\nthe pending authentication and finalizes the process.\n',
    stainlessPath: '(resource) auth.challenges > (method) confirmPendingAuthentication',
    qualified: 'client.auth.challenges.confirmPendingAuthentication',
    params: ['sessionId: string;', 'plmr-user-action?: boolean;'],
    markdown:
      "## confirmPendingAuthentication\n\n`client.auth.challenges.confirmPendingAuthentication(sessionId: string, plmr-user-action?: boolean): void`\n\n**post** `/api/v1/auth/challenges:confirm-pending-authentication`\n\nFinal step of a pending authentication flow.  \nOnce all required challenges are completed successfully, this endpoint confirms\nthe pending authentication and finalizes the process.\n\n\n### Parameters\n\n- `sessionId: string`\n\n- `plmr-user-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.auth.challenges.confirmPendingAuthentication({ sessionId: '3191daaeed978b5b4bd29c161899df72' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.auth.challenges.confirmPendingAuthentication',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.auth.challenges.confirmPendingAuthentication({\n  sessionId: '3191daaeed978b5b4bd29c161899df72',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/auth/challenges:confirm-pending-authentication \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "sessionId": "3191daaeed978b5b4bd29c161899df72"\n        }\'',
      },
      kotlin: {
        method: 'auth().challenges().confirmPendingAuthentication',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.auth.challenges.ChallengeConfirmPendingAuthenticationParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: ChallengeConfirmPendingAuthenticationParams = ChallengeConfirmPendingAuthenticationParams.builder()\n        .sessionId("3191daaeed978b5b4bd29c161899df72")\n        .build()\n    client.auth().challenges().confirmPendingAuthentication(params)\n}',
      },
      java: {
        method: 'auth().challenges().confirmPendingAuthentication',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.auth.challenges.ChallengeConfirmPendingAuthenticationParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        ChallengeConfirmPendingAuthenticationParams params = ChallengeConfirmPendingAuthenticationParams.builder()\n            .sessionId("3191daaeed978b5b4bd29c161899df72")\n            .build();\n        client.auth().challenges().confirmPendingAuthentication(params);\n    }\n}',
      },
    },
  },
  {
    name: 'rejectPendingAuthentication',
    endpoint: '/api/v1/auth/challenges:reject-pending-authentication',
    httpMethod: 'post',
    summary: 'Reject Pending Authentication',
    description: 'Allows the user to explicitly reject a pending authentication\n',
    stainlessPath: '(resource) auth.challenges > (method) rejectPendingAuthentication',
    qualified: 'client.auth.challenges.rejectPendingAuthentication',
    params: ['sessionId: string;', 'plmr-user-action?: boolean;'],
    markdown:
      "## rejectPendingAuthentication\n\n`client.auth.challenges.rejectPendingAuthentication(sessionId: string, plmr-user-action?: boolean): void`\n\n**post** `/api/v1/auth/challenges:reject-pending-authentication`\n\nAllows the user to explicitly reject a pending authentication\n\n\n### Parameters\n\n- `sessionId: string`\n\n- `plmr-user-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.auth.challenges.rejectPendingAuthentication({ sessionId: '3191daaeed978b5b4bd29c161899df72' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.auth.challenges.rejectPendingAuthentication',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.auth.challenges.rejectPendingAuthentication({\n  sessionId: '3191daaeed978b5b4bd29c161899df72',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/auth/challenges:reject-pending-authentication \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "sessionId": "3191daaeed978b5b4bd29c161899df72"\n        }\'',
      },
      kotlin: {
        method: 'auth().challenges().rejectPendingAuthentication',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.auth.challenges.ChallengeRejectPendingAuthenticationParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: ChallengeRejectPendingAuthenticationParams = ChallengeRejectPendingAuthenticationParams.builder()\n        .sessionId("3191daaeed978b5b4bd29c161899df72")\n        .build()\n    client.auth().challenges().rejectPendingAuthentication(params)\n}',
      },
      java: {
        method: 'auth().challenges().rejectPendingAuthentication',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.auth.challenges.ChallengeRejectPendingAuthenticationParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        ChallengeRejectPendingAuthenticationParams params = ChallengeRejectPendingAuthenticationParams.builder()\n            .sessionId("3191daaeed978b5b4bd29c161899df72")\n            .build();\n        client.auth().challenges().rejectPendingAuthentication(params);\n    }\n}',
      },
    },
  },
  {
    name: 'verify',
    endpoint: '/api/v1/auth/challenges/otp:verify',
    httpMethod: 'post',
    summary: 'Verify OTP',
    description:
      'Use this endpoint after receiving `OTP` as next step. \n\nIf OTP verified successfully, next step is to either accepting terms and conditions if that was not done\nbefore or confirm of the session.',
    stainlessPath: '(resource) auth.challenges.otp > (method) verify',
    qualified: 'client.auth.challenges.otp.verify',
    params: ['code: string;', 'sessionId: string;', 'plmr-user-action?: boolean;'],
    response:
      "{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }",
    markdown:
      "## verify\n\n`client.auth.challenges.otp.verify(code: string, sessionId: string, plmr-user-action?: boolean): { nextStep: object; sessionId?: string; }`\n\n**post** `/api/v1/auth/challenges/otp:verify`\n\nUse this endpoint after receiving `OTP` as next step. \n\nIf OTP verified successfully, next step is to either accepting terms and conditions if that was not done\nbefore or confirm of the session.\n\n### Parameters\n\n- `code: string`\n  The OTP code provided to the user\n\n- `sessionId: string`\n  the ID of the session\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }`\n\n  - `nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }`\n  - `sessionId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.challenges.otp.verify({ code: '123456', sessionId: '3191daaeed978b5b4bd29c161899df72' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.auth.challenges.otp.verify',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.challenges.otp.verify({\n  code: '123456',\n  sessionId: '3191daaeed978b5b4bd29c161899df72',\n});\n\nconsole.log(response.nextStep);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/auth/challenges/otp:verify \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "code": "123456",\n          "sessionId": "3191daaeed978b5b4bd29c161899df72"\n        }\'',
      },
      kotlin: {
        method: 'auth().challenges().otp().verify',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.auth.challenges.otp.OtpVerifyParams\nimport com.plumery.api.models.auth.challenges.otp.OtpVerifyResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: OtpVerifyParams = OtpVerifyParams.builder()\n        .code("123456")\n        .sessionId("3191daaeed978b5b4bd29c161899df72")\n        .build()\n    val response: OtpVerifyResponse = client.auth().challenges().otp().verify(params)\n}',
      },
      java: {
        method: 'auth().challenges().otp().verify',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.auth.challenges.otp.OtpVerifyParams;\nimport com.plumery.api.models.auth.challenges.otp.OtpVerifyResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        OtpVerifyParams params = OtpVerifyParams.builder()\n            .code("123456")\n            .sessionId("3191daaeed978b5b4bd29c161899df72")\n            .build();\n        OtpVerifyResponse response = client.auth().challenges().otp().verify(params);\n    }\n}',
      },
    },
  },
  {
    name: 'confirm',
    endpoint: '/api/v1/auth/challenges/sk-id:confirm',
    httpMethod: 'post',
    summary: 'Confirm SK-ID Authentication',
    description:
      'Use this endpoint after receiving a next step from either the Smart-ID or Mobile-ID login endpoints.\nThis confirms the SK-ID authentication process and progresses to the next step in the authentication flow.',
    stainlessPath: '(resource) auth.challenges.sk-id > (method) confirm',
    qualified: 'client.auth.challenges.skID.confirm',
    params: ['sessionId: string;', 'plmr-user-action?: boolean;'],
    response:
      "{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }",
    markdown:
      "## confirm\n\n`client.auth.challenges.skID.confirm(sessionId: string, plmr-user-action?: boolean): { nextStep: object; sessionId?: string; }`\n\n**post** `/api/v1/auth/challenges/sk-id:confirm`\n\nUse this endpoint after receiving a next step from either the Smart-ID or Mobile-ID login endpoints.\nThis confirms the SK-ID authentication process and progresses to the next step in the authentication flow.\n\n### Parameters\n\n- `sessionId: string`\n  The ID of the session\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }`\n\n  - `nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }`\n  - `sessionId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.challenges.skID.confirm({ sessionId: '3191daaeed978b5b4bd29c161899df72' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.auth.challenges.skID.confirm',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.challenges.skID.confirm({\n  sessionId: '3191daaeed978b5b4bd29c161899df72',\n});\n\nconsole.log(response.nextStep);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/auth/challenges/sk-id:confirm \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "sessionId": "3191daaeed978b5b4bd29c161899df72"\n        }\'',
      },
      kotlin: {
        method: 'auth().challenges().skId().confirm',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.auth.challenges.skid.SkIdConfirmParams\nimport com.plumery.api.models.auth.challenges.skid.SkIdConfirmResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: SkIdConfirmParams = SkIdConfirmParams.builder()\n        .sessionId("3191daaeed978b5b4bd29c161899df72")\n        .build()\n    val response: SkIdConfirmResponse = client.auth().challenges().skId().confirm(params)\n}',
      },
      java: {
        method: 'auth().challenges().skId().confirm',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.auth.challenges.skid.SkIdConfirmParams;\nimport com.plumery.api.models.auth.challenges.skid.SkIdConfirmResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        SkIdConfirmParams params = SkIdConfirmParams.builder()\n            .sessionId("3191daaeed978b5b4bd29c161899df72")\n            .build();\n        SkIdConfirmResponse response = client.auth().challenges().skId().confirm(params);\n    }\n}',
      },
    },
  },
  {
    name: 'sign',
    endpoint: '/api/v1/auth/challenges/sk-id:sign',
    httpMethod: 'post',
    summary: 'Confirm SK-ID Signature Challenge',
    description:
      'Use this endpoint to confirm the SK-ID signature challenge after receiving it in the Smart-ID/Mobile-ID login flow.',
    stainlessPath: '(resource) auth.challenges.sk-id > (method) sign',
    qualified: 'client.auth.challenges.skID.sign',
    params: ['sessionId: string;', 'plmr-user-action?: boolean;'],
    response:
      "{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }",
    markdown:
      "## sign\n\n`client.auth.challenges.skID.sign(sessionId: string, plmr-user-action?: boolean): { nextStep: object; sessionId?: string; }`\n\n**post** `/api/v1/auth/challenges/sk-id:sign`\n\nUse this endpoint to confirm the SK-ID signature challenge after receiving it in the Smart-ID/Mobile-ID login flow.\n\n### Parameters\n\n- `sessionId: string`\n  The ID of the session\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }`\n\n  - `nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }`\n  - `sessionId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.challenges.skID.sign({ sessionId: '3191daaeed978b5b4bd29c161899df72' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.auth.challenges.skID.sign',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.challenges.skID.sign({\n  sessionId: '3191daaeed978b5b4bd29c161899df72',\n});\n\nconsole.log(response.nextStep);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/auth/challenges/sk-id:sign \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "sessionId": "3191daaeed978b5b4bd29c161899df72"\n        }\'',
      },
      kotlin: {
        method: 'auth().challenges().skId().sign',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.auth.challenges.skid.SkIdSignParams\nimport com.plumery.api.models.auth.challenges.skid.SkIdSignResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: SkIdSignParams = SkIdSignParams.builder()\n        .sessionId("3191daaeed978b5b4bd29c161899df72")\n        .build()\n    val response: SkIdSignResponse = client.auth().challenges().skId().sign(params)\n}',
      },
      java: {
        method: 'auth().challenges().skId().sign',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.auth.challenges.skid.SkIdSignParams;\nimport com.plumery.api.models.auth.challenges.skid.SkIdSignResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        SkIdSignParams params = SkIdSignParams.builder()\n            .sessionId("3191daaeed978b5b4bd29c161899df72")\n            .build();\n        SkIdSignResponse response = client.auth().challenges().skId().sign(params);\n    }\n}',
      },
    },
  },
  {
    name: 'cancel',
    endpoint: '/api/v1/auth/challenges/sk-id:cancel',
    httpMethod: 'post',
    summary: 'Cancel SK-ID Authentication',
    description:
      'Cancels an in-progress cross-device Smart-ID or Mobile-ID login that is still waiting for the user\nto approve it. The variant is derived from the session — no method needs to be supplied. Same-device\nSK-ID logins cannot be cancelled through this endpoint.\n\nNeither SK-ID provider supports aborting a request that has already been dispatched, so the local\nsession is terminated instead: a later approval on the phone or in the Smart-ID app can no longer\ncomplete the login.\n\nCancelling also revokes the OIDC session and is recorded as a failed authentication attempt,\ncounting towards the same lockout threshold as a refusal or a timeout on the device.\n\nThe call is idempotent — cancelling a login that has already ended returns `204` as well.',
    stainlessPath: '(resource) auth.challenges.sk-id > (method) cancel',
    qualified: 'client.auth.challenges.skID.cancel',
    params: ['sessionId: string;', 'plmr-user-action?: boolean;'],
    markdown:
      "## cancel\n\n`client.auth.challenges.skID.cancel(sessionId: string, plmr-user-action?: boolean): void`\n\n**post** `/api/v1/auth/challenges/sk-id:cancel`\n\nCancels an in-progress cross-device Smart-ID or Mobile-ID login that is still waiting for the user\nto approve it. The variant is derived from the session — no method needs to be supplied. Same-device\nSK-ID logins cannot be cancelled through this endpoint.\n\nNeither SK-ID provider supports aborting a request that has already been dispatched, so the local\nsession is terminated instead: a later approval on the phone or in the Smart-ID app can no longer\ncomplete the login.\n\nCancelling also revokes the OIDC session and is recorded as a failed authentication attempt,\ncounting towards the same lockout threshold as a refusal or a timeout on the device.\n\nThe call is idempotent — cancelling a login that has already ended returns `204` as well.\n\n### Parameters\n\n- `sessionId: string`\n  The ID of the session to cancel\n\n- `plmr-user-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.auth.challenges.skID.cancel({ sessionId: '3191daaeed978b5b4bd29c161899df72' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.auth.challenges.skID.cancel',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.auth.challenges.skID.cancel({ sessionId: '3191daaeed978b5b4bd29c161899df72' });",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/auth/challenges/sk-id:cancel \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "sessionId": "3191daaeed978b5b4bd29c161899df72"\n        }\'',
      },
      kotlin: {
        method: 'auth().challenges().skId().cancel',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.auth.challenges.skid.SkIdCancelParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: SkIdCancelParams = SkIdCancelParams.builder()\n        .sessionId("3191daaeed978b5b4bd29c161899df72")\n        .build()\n    client.auth().challenges().skId().cancel(params)\n}',
      },
      java: {
        method: 'auth().challenges().skId().cancel',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.auth.challenges.skid.SkIdCancelParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        SkIdCancelParams params = SkIdCancelParams.builder()\n            .sessionId("3191daaeed978b5b4bd29c161899df72")\n            .build();\n        client.auth().challenges().skId().cancel(params);\n    }\n}',
      },
    },
  },
  {
    name: 'accept',
    endpoint: '/api/v1/auth/challenges/terms-and-conditions:accept',
    httpMethod: 'post',
    summary: 'Accept terms and conditions',
    description:
      'Use this endpoint after receiving `TermsAndConditions` as next step. \n\nIf accepted, next step is to confirm the session.',
    stainlessPath: '(resource) auth.challenges.terms-and-conditions > (method) accept',
    qualified: 'client.auth.challenges.termsAndConditions.accept',
    params: [
      'sessionId: string;',
      'termsAndConditions: { acceptVersion: string; type: string; }[];',
      'plmr-user-action?: boolean;',
    ],
    response:
      "{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }",
    markdown:
      "## accept\n\n`client.auth.challenges.termsAndConditions.accept(sessionId: string, termsAndConditions: { acceptVersion: string; type: string; }[], plmr-user-action?: boolean): { nextStep: object; sessionId?: string; }`\n\n**post** `/api/v1/auth/challenges/terms-and-conditions:accept`\n\nUse this endpoint after receiving `TermsAndConditions` as next step. \n\nIf accepted, next step is to confirm the session.\n\n### Parameters\n\n- `sessionId: string`\n  the ID of the session\n\n- `termsAndConditions: { acceptVersion: string; type: string; }[]`\n  list of terms and conditions that needs to be accepted\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }`\n\n  - `nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }`\n  - `sessionId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.challenges.termsAndConditions.accept({ sessionId: '3191daaeed978b5b4bd29c161899df72', termsAndConditions: [{ acceptVersion: 'v1.0', type: 'PrivacyPolicy' }] });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.auth.challenges.termsAndConditions.accept',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.challenges.termsAndConditions.accept({\n  sessionId: '3191daaeed978b5b4bd29c161899df72',\n  termsAndConditions: [{ acceptVersion: 'v1.0', type: 'PrivacyPolicy' }],\n});\n\nconsole.log(response.nextStep);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/auth/challenges/terms-and-conditions:accept \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "sessionId": "3191daaeed978b5b4bd29c161899df72",\n          "termsAndConditions": [\n            {\n              "acceptVersion": "v1.0",\n              "type": "PrivacyPolicy"\n            }\n          ]\n        }\'',
      },
      kotlin: {
        method: 'auth().challenges().termsAndConditions().accept',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.auth.challenges.termsandconditions.TermsAndConditionAcceptParams\nimport com.plumery.api.models.auth.challenges.termsandconditions.TermsAndConditionAcceptResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: TermsAndConditionAcceptParams = TermsAndConditionAcceptParams.builder()\n        .sessionId("3191daaeed978b5b4bd29c161899df72")\n        .addTermsAndCondition(TermsAndConditionAcceptParams.TermsAndCondition.builder()\n            .acceptVersion("v1.0")\n            .type("PrivacyPolicy")\n            .build())\n        .build()\n    val response: TermsAndConditionAcceptResponse = client.auth().challenges().termsAndConditions().accept(params)\n}',
      },
      java: {
        method: 'auth().challenges().termsAndConditions().accept',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.auth.challenges.termsandconditions.TermsAndConditionAcceptParams;\nimport com.plumery.api.models.auth.challenges.termsandconditions.TermsAndConditionAcceptResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        TermsAndConditionAcceptParams params = TermsAndConditionAcceptParams.builder()\n            .sessionId("3191daaeed978b5b4bd29c161899df72")\n            .addTermsAndCondition(TermsAndConditionAcceptParams.TermsAndCondition.builder()\n                .acceptVersion("v1.0")\n                .type("PrivacyPolicy")\n                .build())\n            .build();\n        TermsAndConditionAcceptResponse response = client.auth().challenges().termsAndConditions().accept(params);\n    }\n}',
      },
    },
  },
  {
    name: 'initiateSigning',
    endpoint: '/api/v1/auth/challenges/custom:initiate-signing',
    httpMethod: 'post',
    summary: 'Custom Signing Initiation',
    description:
      'Use this endpoint after receiving `InitiateCustomSigning` as next step from the Custom Login endpoint.\nThis initiates the custom signing process and provides the necessary details to proceed with the signing.',
    stainlessPath: '(resource) auth.challenges.custom > (method) initiateSigning',
    qualified: 'client.auth.challenges.custom.initiateSigning',
    params: ['method: string;', 'sessionId: string;', 'additionalDetails?: object;'],
    response:
      "{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }",
    markdown:
      "## initiateSigning\n\n`client.auth.challenges.custom.initiateSigning(method: string, sessionId: string, additionalDetails?: object): { nextStep: object; sessionId?: string; }`\n\n**post** `/api/v1/auth/challenges/custom:initiate-signing`\n\nUse this endpoint after receiving `InitiateCustomSigning` as next step from the Custom Login endpoint.\nThis initiates the custom signing process and provides the necessary details to proceed with the signing.\n\n### Parameters\n\n- `method: string`\n  Indicates the custom signing method.\n\n- `sessionId: string`\n  The ID of the session\n\n- `additionalDetails?: object`\n  Additional details required for the custom signing method.\n\n### Returns\n\n- `{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }`\n\n  - `nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }`\n  - `sessionId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.challenges.custom.initiateSigning({ method: 'method', sessionId: '3191daaeed978b5b4bd29c161899df72' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.auth.challenges.custom.initiateSigning',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.challenges.custom.initiateSigning({\n  method: 'method',\n  sessionId: '3191daaeed978b5b4bd29c161899df72',\n});\n\nconsole.log(response.nextStep);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/auth/challenges/custom:initiate-signing \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "method": "method",\n          "sessionId": "3191daaeed978b5b4bd29c161899df72"\n        }\'',
      },
      kotlin: {
        method: 'auth().challenges().custom().initiateSigning',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.auth.challenges.custom.CustomInitiateSigningParams\nimport com.plumery.api.models.auth.challenges.custom.CustomInitiateSigningResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: CustomInitiateSigningParams = CustomInitiateSigningParams.builder()\n        .method("method")\n        .sessionId("3191daaeed978b5b4bd29c161899df72")\n        .build()\n    val response: CustomInitiateSigningResponse = client.auth().challenges().custom().initiateSigning(params)\n}',
      },
      java: {
        method: 'auth().challenges().custom().initiateSigning',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.auth.challenges.custom.CustomInitiateSigningParams;\nimport com.plumery.api.models.auth.challenges.custom.CustomInitiateSigningResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        CustomInitiateSigningParams params = CustomInitiateSigningParams.builder()\n            .method("method")\n            .sessionId("3191daaeed978b5b4bd29c161899df72")\n            .build();\n        CustomInitiateSigningResponse response = client.auth().challenges().custom().initiateSigning(params);\n    }\n}',
      },
    },
  },
  {
    name: 'confirm',
    endpoint: '/api/v1/auth/challenges/custom:confirm',
    httpMethod: 'post',
    summary: 'Custom Signing Confirmation',
    description:
      'Use this endpoint after receiving `CustomSigning` as next step from the Custom Signing Initiation endpoint.\nThis confirms the custom signing process and progresses to the next step in the authentication flow.',
    stainlessPath: '(resource) auth.challenges.custom > (method) confirm',
    qualified: 'client.auth.challenges.custom.confirm',
    params: ['sessionId: string;', 'additionalDetails?: object;'],
    response:
      "{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }",
    markdown:
      "## confirm\n\n`client.auth.challenges.custom.confirm(sessionId: string, additionalDetails?: object): { nextStep: object; sessionId?: string; }`\n\n**post** `/api/v1/auth/challenges/custom:confirm`\n\nUse this endpoint after receiving `CustomSigning` as next step from the Custom Signing Initiation endpoint.\nThis confirms the custom signing process and progresses to the next step in the authentication flow.\n\n### Parameters\n\n- `sessionId: string`\n  The ID of the session\n\n- `additionalDetails?: object`\n  Additional details required for the custom signing method.\n\n### Returns\n\n- `{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }`\n\n  - `nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }`\n  - `sessionId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.challenges.custom.confirm({ sessionId: '3191daaeed978b5b4bd29c161899df72' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.auth.challenges.custom.confirm',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.challenges.custom.confirm({\n  sessionId: '3191daaeed978b5b4bd29c161899df72',\n});\n\nconsole.log(response.nextStep);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/auth/challenges/custom:confirm \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "sessionId": "3191daaeed978b5b4bd29c161899df72"\n        }\'',
      },
      kotlin: {
        method: 'auth().challenges().custom().confirm',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.auth.challenges.custom.CustomConfirmParams\nimport com.plumery.api.models.auth.challenges.custom.CustomConfirmResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: CustomConfirmParams = CustomConfirmParams.builder()\n        .sessionId("3191daaeed978b5b4bd29c161899df72")\n        .build()\n    val response: CustomConfirmResponse = client.auth().challenges().custom().confirm(params)\n}',
      },
      java: {
        method: 'auth().challenges().custom().confirm',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.auth.challenges.custom.CustomConfirmParams;\nimport com.plumery.api.models.auth.challenges.custom.CustomConfirmResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        CustomConfirmParams params = CustomConfirmParams.builder()\n            .sessionId("3191daaeed978b5b4bd29c161899df72")\n            .build();\n        CustomConfirmResponse response = client.auth().challenges().custom().confirm(params);\n    }\n}',
      },
    },
  },
  {
    name: 'confirm',
    endpoint: '/api/v1/auth/challenges/login-custom:confirm',
    httpMethod: 'post',
    summary: 'Confirm Custom Authentication',
    description:
      'Use this endpoint after receiving a next step from the Custom Login endpoint.\nThis confirms the custom authentication process and progresses to the next step in the authentication flow.',
    stainlessPath: '(resource) auth.challenges.login-custom > (method) confirm',
    qualified: 'client.auth.challenges.loginCustom.confirm',
    params: ['confirmationDetails?: object;', 'sessionId?: string;', 'plmr-user-action?: boolean;'],
    response:
      "{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }",
    markdown:
      "## confirm\n\n`client.auth.challenges.loginCustom.confirm(confirmationDetails?: object, sessionId?: string, plmr-user-action?: boolean): { nextStep: object; sessionId?: string; }`\n\n**post** `/api/v1/auth/challenges/login-custom:confirm`\n\nUse this endpoint after receiving a next step from the Custom Login endpoint.\nThis confirms the custom authentication process and progresses to the next step in the authentication flow.\n\n### Parameters\n\n- `confirmationDetails?: object`\n  Additional details required for confirming the custom login.\n\n- `sessionId?: string`\n  The ID of the session\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }`\n\n  - `nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }`\n  - `sessionId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.challenges.loginCustom.confirm();\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.auth.challenges.loginCustom.confirm',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.challenges.loginCustom.confirm();\n\nconsole.log(response.nextStep);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/auth/challenges/login-custom:confirm \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "sessionId": "3191daaeed978b5b4bd29c161899df72"\n        }\'',
      },
      kotlin: {
        method: 'auth().challenges().loginCustom().confirm',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.auth.challenges.logincustom.LoginCustomConfirmParams\nimport com.plumery.api.models.auth.challenges.logincustom.LoginCustomConfirmResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val response: LoginCustomConfirmResponse = client.auth().challenges().loginCustom().confirm()\n}',
      },
      java: {
        method: 'auth().challenges().loginCustom().confirm',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.auth.challenges.logincustom.LoginCustomConfirmParams;\nimport com.plumery.api.models.auth.challenges.logincustom.LoginCustomConfirmResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        LoginCustomConfirmResponse response = client.auth().challenges().loginCustom().confirm();\n    }\n}',
      },
    },
  },
  {
    name: 'create',
    endpoint: '/api/v1/auth/challenges/cross-device:create',
    httpMethod: 'post',
    summary: 'Cross device create session',
    description: 'Creates a  plumery session based on the provided crossDeviceSecret.',
    stainlessPath: '(resource) auth.challenges.cross-device > (method) create',
    qualified: 'client.auth.challenges.crossDevice.create',
    params: ['crossDeviceSecret: string;'],
    response:
      '{ nextStep: { challenge: string; info?: { activityType: string; approvalNonce: string; confirmationExpiration: string; deviceIp: string; deviceName: string; loginDateTime: string; deviceLocation?: object; visualVerificationCode?: string; }; }; sessionId?: string; }',
    markdown:
      "## create\n\n`client.auth.challenges.crossDevice.create(crossDeviceSecret: string): { nextStep: object; sessionId?: string; }`\n\n**post** `/api/v1/auth/challenges/cross-device:create`\n\nCreates a  plumery session based on the provided crossDeviceSecret.\n\n### Parameters\n\n- `crossDeviceSecret: string`\n  A base 64 encoded string that is used to pass cross device session information between devices.\n\n### Returns\n\n- `{ nextStep: { challenge: string; info?: { activityType: string; approvalNonce: string; confirmationExpiration: string; deviceIp: string; deviceName: string; loginDateTime: string; deviceLocation?: object; visualVerificationCode?: string; }; }; sessionId?: string; }`\n\n  - `nextStep: { challenge: string; info?: { activityType: string; approvalNonce: string; confirmationExpiration: string; deviceIp: string; deviceName: string; loginDateTime: string; deviceLocation?: { city?: string; country?: string; countryCode?: string; region?: string; status?: 'RESOLVED' | 'NOT_FOUND' | 'UNAVAILABLE' | 'INVALID_IP'; }; visualVerificationCode?: string; }; }`\n  - `sessionId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst crossDevice = await client.auth.challenges.crossDevice.create({ crossDeviceSecret: 'crossDeviceSecret' });\n\nconsole.log(crossDevice);\n```",
    perLanguage: {
      typescript: {
        method: 'client.auth.challenges.crossDevice.create',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst crossDevice = await client.auth.challenges.crossDevice.create({\n  crossDeviceSecret: 'crossDeviceSecret',\n});\n\nconsole.log(crossDevice.nextStep);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/auth/challenges/cross-device:create \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "crossDeviceSecret": "crossDeviceSecret"\n        }\'',
      },
      kotlin: {
        method: 'auth().challenges().crossDevice().create',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.auth.challenges.crossdevice.CrossDeviceCreateParams\nimport com.plumery.api.models.auth.challenges.crossdevice.CrossDeviceCreateResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: CrossDeviceCreateParams = CrossDeviceCreateParams.builder()\n        .crossDeviceSecret("crossDeviceSecret")\n        .build()\n    val crossDevice: CrossDeviceCreateResponse = client.auth().challenges().crossDevice().create(params)\n}',
      },
      java: {
        method: 'auth().challenges().crossDevice().create',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.auth.challenges.crossdevice.CrossDeviceCreateParams;\nimport com.plumery.api.models.auth.challenges.crossdevice.CrossDeviceCreateResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        CrossDeviceCreateParams params = CrossDeviceCreateParams.builder()\n            .crossDeviceSecret("crossDeviceSecret")\n            .build();\n        CrossDeviceCreateResponse crossDevice = client.auth().challenges().crossDevice().create(params);\n    }\n}',
      },
    },
  },
  {
    name: 'confirm',
    endpoint: '/api/v1/auth/challenges/cross-device:confirm',
    httpMethod: 'post',
    summary: 'Cross device confirm',
    description:
      'Use this endpoint after receiving a next step from the Approve Cross Device endpoint.\nThis endpoint can be polled until the request has been approved from the authenticated device.\nIf the request has not been approved yet, the current cross device challenge will be returned.',
    stainlessPath: '(resource) auth.challenges.cross-device > (method) confirm',
    qualified: 'client.auth.challenges.crossDevice.confirm',
    params: ['crossDeviceSecret: string;'],
    response:
      "{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }",
    markdown:
      "## confirm\n\n`client.auth.challenges.crossDevice.confirm(crossDeviceSecret: string): { nextStep: object; sessionId?: string; }`\n\n**post** `/api/v1/auth/challenges/cross-device:confirm`\n\nUse this endpoint after receiving a next step from the Approve Cross Device endpoint.\nThis endpoint can be polled until the request has been approved from the authenticated device.\nIf the request has not been approved yet, the current cross device challenge will be returned.\n\n### Parameters\n\n- `crossDeviceSecret: string`\n  A base 64 encoded string that is used to pass cross device session information between devices.\n\n### Returns\n\n- `{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }`\n\n  - `nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }`\n  - `sessionId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.challenges.crossDevice.confirm({ crossDeviceSecret: 'crossDeviceSecret' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.auth.challenges.crossDevice.confirm',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.challenges.crossDevice.confirm({\n  crossDeviceSecret: 'crossDeviceSecret',\n});\n\nconsole.log(response.nextStep);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/auth/challenges/cross-device:confirm \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "crossDeviceSecret": "crossDeviceSecret"\n        }\'',
      },
      kotlin: {
        method: 'auth().challenges().crossDevice().confirm',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.auth.challenges.crossdevice.CrossDeviceConfirmParams\nimport com.plumery.api.models.auth.challenges.crossdevice.CrossDeviceConfirmResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: CrossDeviceConfirmParams = CrossDeviceConfirmParams.builder()\n        .crossDeviceSecret("crossDeviceSecret")\n        .build()\n    val response: CrossDeviceConfirmResponse = client.auth().challenges().crossDevice().confirm(params)\n}',
      },
      java: {
        method: 'auth().challenges().crossDevice().confirm',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.auth.challenges.crossdevice.CrossDeviceConfirmParams;\nimport com.plumery.api.models.auth.challenges.crossdevice.CrossDeviceConfirmResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        CrossDeviceConfirmParams params = CrossDeviceConfirmParams.builder()\n            .crossDeviceSecret("crossDeviceSecret")\n            .build();\n        CrossDeviceConfirmResponse response = client.auth().challenges().crossDevice().confirm(params);\n    }\n}',
      },
    },
  },
  {
    name: 'approve',
    endpoint: '/api/v1/auth/challenges/cross-device:approve',
    httpMethod: 'post',
    summary: 'Cross device approve',
    description: 'Approves a cross device login session.',
    stainlessPath: '(resource) auth.challenges.cross-device > (method) approve',
    qualified: 'client.auth.challenges.crossDevice.approve',
    params: [
      'approvalNonce: string;',
      'approve: boolean;',
      'targetSessionId: string;',
      'visualVerificationCode: string;',
    ],
    response:
      "{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }",
    markdown:
      "## approve\n\n`client.auth.challenges.crossDevice.approve(approvalNonce: string, approve: boolean, targetSessionId: string, visualVerificationCode: string): { nextStep: object; sessionId?: string; }`\n\n**post** `/api/v1/auth/challenges/cross-device:approve`\n\nApproves a cross device login session.\n\n### Parameters\n\n- `approvalNonce: string`\n  The single-use nonce returned with the approval challenge.\n\n- `approve: boolean`\n  Indicates whether the user approves the login.\n\n- `targetSessionId: string`\n  The ID of the target session for the approval.\n\n- `visualVerificationCode: string`\n  A 6 digit code displayed to visually confirm cross-device login.\n\n### Returns\n\n- `{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }`\n\n  - `nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }`\n  - `sessionId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.challenges.crossDevice.approve({\n  approvalNonce: 'approvalNonce',\n  approve: true,\n  targetSessionId: '3191daaeed978b5b4bd29c161899df72',\n  visualVerificationCode: '123456',\n});\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.auth.challenges.crossDevice.approve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.challenges.crossDevice.approve({\n  approvalNonce: 'approvalNonce',\n  approve: true,\n  targetSessionId: '3191daaeed978b5b4bd29c161899df72',\n  visualVerificationCode: '123456',\n});\n\nconsole.log(response.nextStep);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/auth/challenges/cross-device:approve \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "approvalNonce": "approvalNonce",\n          "approve": true,\n          "targetSessionId": "3191daaeed978b5b4bd29c161899df72",\n          "visualVerificationCode": "123456"\n        }\'',
      },
      kotlin: {
        method: 'auth().challenges().crossDevice().approve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.auth.challenges.crossdevice.CrossDeviceApproveParams\nimport com.plumery.api.models.auth.challenges.crossdevice.CrossDeviceApproveResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: CrossDeviceApproveParams = CrossDeviceApproveParams.builder()\n        .approvalNonce("approvalNonce")\n        .approve(true)\n        .targetSessionId("3191daaeed978b5b4bd29c161899df72")\n        .visualVerificationCode("123456")\n        .build()\n    val response: CrossDeviceApproveResponse = client.auth().challenges().crossDevice().approve(params)\n}',
      },
      java: {
        method: 'auth().challenges().crossDevice().approve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.auth.challenges.crossdevice.CrossDeviceApproveParams;\nimport com.plumery.api.models.auth.challenges.crossdevice.CrossDeviceApproveResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        CrossDeviceApproveParams params = CrossDeviceApproveParams.builder()\n            .approvalNonce("approvalNonce")\n            .approve(true)\n            .targetSessionId("3191daaeed978b5b4bd29c161899df72")\n            .visualVerificationCode("123456")\n            .build();\n        CrossDeviceApproveResponse response = client.auth().challenges().crossDevice().approve(params);\n    }\n}',
      },
    },
  },
  {
    name: 'list',
    endpoint: '/api/v1/auth/challenges/cross-device-pending-authentications',
    httpMethod: 'get',
    summary: 'Cross device pending authentications',
    description:
      'Lists the cross device login requests waiting for the authenticated user to decide on.\n\nUsed as the fallback channel when a push notification does not reach the secondary device,\neither because notifications are turned off or because the device is not a mobile one.\nRequests that have been picked up on another device, rejected or expired are not returned.',
    stainlessPath: '(resource) auth.challenges.cross-device-pending-authentications > (method) list',
    qualified: 'client.auth.challenges.crossDevicePendingAuthentications.list',
    response:
      '{ pendingAuthentications: { activityType: string; crossDeviceSecret: string; deviceIp: string; deviceName: string; expiresAt: string; loginDateTime: string; visualVerificationCode: string; }[]; }',
    markdown:
      "## list\n\n`client.auth.challenges.crossDevicePendingAuthentications.list(): { pendingAuthentications: object[]; }`\n\n**get** `/api/v1/auth/challenges/cross-device-pending-authentications`\n\nLists the cross device login requests waiting for the authenticated user to decide on.\n\nUsed as the fallback channel when a push notification does not reach the secondary device,\neither because notifications are turned off or because the device is not a mobile one.\nRequests that have been picked up on another device, rejected or expired are not returned.\n\n### Returns\n\n- `{ pendingAuthentications: { activityType: string; crossDeviceSecret: string; deviceIp: string; deviceName: string; expiresAt: string; loginDateTime: string; visualVerificationCode: string; }[]; }`\n\n  - `pendingAuthentications: { activityType: string; crossDeviceSecret: string; deviceIp: string; deviceName: string; expiresAt: string; loginDateTime: string; visualVerificationCode: string; }[]`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst crossDevicePendingAuthentications = await client.auth.challenges.crossDevicePendingAuthentications.list();\n\nconsole.log(crossDevicePendingAuthentications);\n```",
    perLanguage: {
      typescript: {
        method: 'client.auth.challenges.crossDevicePendingAuthentications.list',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst crossDevicePendingAuthentications =\n  await client.auth.challenges.crossDevicePendingAuthentications.list();\n\nconsole.log(crossDevicePendingAuthentications.pendingAuthentications);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/auth/challenges/cross-device-pending-authentications \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'auth().challenges().crossDevicePendingAuthentications().list',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.auth.challenges.crossdevicependingauthentications.CrossDevicePendingAuthenticationListParams\nimport com.plumery.api.models.auth.challenges.crossdevicependingauthentications.CrossDevicePendingAuthenticationListResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val crossDevicePendingAuthentications: CrossDevicePendingAuthenticationListResponse = client.auth().challenges().crossDevicePendingAuthentications().list()\n}',
      },
      java: {
        method: 'auth().challenges().crossDevicePendingAuthentications().list',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.auth.challenges.crossdevicependingauthentications.CrossDevicePendingAuthenticationListParams;\nimport com.plumery.api.models.auth.challenges.crossdevicependingauthentications.CrossDevicePendingAuthenticationListResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        CrossDevicePendingAuthenticationListResponse crossDevicePendingAuthentications = client.auth().challenges().crossDevicePendingAuthentications().list();\n    }\n}',
      },
    },
  },
  {
    name: 'loginInitiate',
    endpoint: '/api/v1/auth/challenges/webauthn:login-initiate',
    httpMethod: 'post',
    summary: 'Initiate WebAuthn Login',
    description:
      'Starts the WebAuthn authentication challenge.\nReturns `PublicKeyCredentialRequestOptions` object compliant with W3C spec.',
    stainlessPath: '(resource) auth.challenges.webauthn > (method) loginInitiate',
    qualified: 'client.auth.challenges.webauthn.loginInitiate',
    params: ['sessionId: string;'],
    response:
      "{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }",
    markdown:
      "## loginInitiate\n\n`client.auth.challenges.webauthn.loginInitiate(sessionId: string): { nextStep: object; sessionId?: string; }`\n\n**post** `/api/v1/auth/challenges/webauthn:login-initiate`\n\nStarts the WebAuthn authentication challenge.\nReturns `PublicKeyCredentialRequestOptions` object compliant with W3C spec.\n\n### Parameters\n\n- `sessionId: string`\n  The active session ID from the passwordless-login response.\n\n### Returns\n\n- `{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }`\n\n  - `nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }`\n  - `sessionId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.challenges.webauthn.loginInitiate({ sessionId: 'sessionId' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.auth.challenges.webauthn.loginInitiate',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.challenges.webauthn.loginInitiate({ sessionId: 'sessionId' });\n\nconsole.log(response.nextStep);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/auth/challenges/webauthn:login-initiate \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "sessionId": "sessionId"\n        }\'',
      },
      kotlin: {
        method: 'auth().challenges().webauthn().loginInitiate',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.auth.challenges.webauthn.WebauthnLoginInitiateParams\nimport com.plumery.api.models.auth.challenges.webauthn.WebauthnLoginInitiateResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: WebauthnLoginInitiateParams = WebauthnLoginInitiateParams.builder()\n        .sessionId("sessionId")\n        .build()\n    val response: WebauthnLoginInitiateResponse = client.auth().challenges().webauthn().loginInitiate(params)\n}',
      },
      java: {
        method: 'auth().challenges().webauthn().loginInitiate',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.auth.challenges.webauthn.WebauthnLoginInitiateParams;\nimport com.plumery.api.models.auth.challenges.webauthn.WebauthnLoginInitiateResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        WebauthnLoginInitiateParams params = WebauthnLoginInitiateParams.builder()\n            .sessionId("sessionId")\n            .build();\n        WebauthnLoginInitiateResponse response = client.auth().challenges().webauthn().loginInitiate(params);\n    }\n}',
      },
    },
  },
  {
    name: 'loginVerify',
    endpoint: '/api/v1/auth/challenges/webauthn:login-verify',
    httpMethod: 'post',
    summary: 'Verify WebAuthn Login',
    description:
      "Completes the WebAuthn authentication challenge.\nhttps://www.w3.org/TR/webauthn-3/#sctn-verifying-assertion\nThe client (e.g. browser) submits the authenticator's assertion response.\nThe server verifies the challenge and signature against the stored credential,\nchecks the signature counter, then returns the next authentication step.",
    stainlessPath: '(resource) auth.challenges.webauthn > (method) loginVerify',
    qualified: 'client.auth.challenges.webauthn.loginVerify',
    params: ['response: object;', 'sessionId: string;'],
    response:
      "{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }",
    markdown:
      "## loginVerify\n\n`client.auth.challenges.webauthn.loginVerify(response: object, sessionId: string): { nextStep: object; sessionId?: string; }`\n\n**post** `/api/v1/auth/challenges/webauthn:login-verify`\n\nCompletes the WebAuthn authentication challenge.\nhttps://www.w3.org/TR/webauthn-3/#sctn-verifying-assertion\nThe client (e.g. browser) submits the authenticator's assertion response.\nThe server verifies the challenge and signature against the stored credential,\nchecks the signature counter, then returns the next authentication step.\n\n### Parameters\n\n- `response: object`\n  The W3C `AuthenticationResponseJSON` returned by `navigator.credentials.get(...)`.\nSee https://www.w3.org/TR/webauthn-3/#dictdef-authenticationresponsejson.\n\n\n- `sessionId: string`\n  The active session ID whose current challenge is `WebAuthnLoginVerify`.\n\n### Returns\n\n- `{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }`\n\n  - `nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }`\n  - `sessionId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.challenges.webauthn.loginVerify({\n  response: {},\n  sessionId: 'sessionId',\n});\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.auth.challenges.webauthn.loginVerify',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.challenges.webauthn.loginVerify({\n  response: {},\n  sessionId: 'sessionId',\n});\n\nconsole.log(response.nextStep);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/auth/challenges/webauthn:login-verify \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "response": {},\n          "sessionId": "sessionId"\n        }\'',
      },
      kotlin: {
        method: 'auth().challenges().webauthn().loginVerify',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.core.JsonValue\nimport com.plumery.api.models.auth.challenges.webauthn.WebauthnLoginVerifyParams\nimport com.plumery.api.models.auth.challenges.webauthn.WebauthnLoginVerifyResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: WebauthnLoginVerifyParams = WebauthnLoginVerifyParams.builder()\n        .response(JsonValue.from(mapOf<String, Any>()))\n        .sessionId("sessionId")\n        .build()\n    val response: WebauthnLoginVerifyResponse = client.auth().challenges().webauthn().loginVerify(params)\n}',
      },
      java: {
        method: 'auth().challenges().webauthn().loginVerify',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.core.JsonValue;\nimport com.plumery.api.models.auth.challenges.webauthn.WebauthnLoginVerifyParams;\nimport com.plumery.api.models.auth.challenges.webauthn.WebauthnLoginVerifyResponse;\nimport java.util.Map;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        WebauthnLoginVerifyParams params = WebauthnLoginVerifyParams.builder()\n            .response(JsonValue.from(<String, Object>Map.of()))\n            .sessionId("sessionId")\n            .build();\n        WebauthnLoginVerifyResponse response = client.auth().challenges().webauthn().loginVerify(params);\n    }\n}',
      },
    },
  },
  {
    name: 'list',
    endpoint: '/api/v1/auth/pending',
    httpMethod: 'get',
    summary: 'List Pending Authentications',
    description: 'Retrieve all pending authentications for a given username.\n',
    stainlessPath: '(resource) auth.pending > (method) list',
    qualified: 'client.auth.pending.list',
    params: ['username: string;', 'publicKey?: string;'],
    response:
      '{ pendingAuthentications?: { id: string; createdAt: string; username: string; bindingMessage?: string; }[]; }',
    markdown:
      "## list\n\n`client.auth.pending.list(username: string, publicKey?: string): { pendingAuthentications?: object[]; }`\n\n**get** `/api/v1/auth/pending`\n\nRetrieve all pending authentications for a given username.\n\n\n### Parameters\n\n- `username: string`\n  Username whose pending authentications should be listed.\n\n- `publicKey?: string`\n  The public key associated with the device performing the request. \nA Base64-encoded RSA public key (up to 4096 bytes) generated using SHA-256 hashing. \nthe public key must be URL encoded.\n\n\n### Returns\n\n- `{ pendingAuthentications?: { id: string; createdAt: string; username: string; bindingMessage?: string; }[]; }`\n  List of pending authentications for a given user.\n\n  - `pendingAuthentications?: { id: string; createdAt: string; username: string; bindingMessage?: string; }[]`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst pendings = await client.auth.pending.list({ username: 'username' });\n\nconsole.log(pendings);\n```",
    perLanguage: {
      typescript: {
        method: 'client.auth.pending.list',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst pendings = await client.auth.pending.list({ username: 'username' });\n\nconsole.log(pendings.pendingAuthentications);",
      },
      http: {
        example: 'curl https://api.plumery.com/api/v1/auth/pending \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'auth().pending().list',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.auth.pending.PendingListParams\nimport com.plumery.api.models.auth.pending.PendingListResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: PendingListParams = PendingListParams.builder()\n        .username("username")\n        .build()\n    val pendings: PendingListResponse = client.auth().pending().list(params)\n}',
      },
      java: {
        method: 'auth().pending().list',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.auth.pending.PendingListParams;\nimport com.plumery.api.models.auth.pending.PendingListResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        PendingListParams params = PendingListParams.builder()\n            .username("username")\n            .build();\n        PendingListResponse pendings = client.auth().pending().list(params);\n    }\n}',
      },
    },
  },
  {
    name: 'create',
    endpoint: '/api/v1/auth/pending/{authRequestId}',
    httpMethod: 'post',
    summary: 'Initiate Pending Authentication',
    description: 'Initiate a pending authentication flow for an existing pending authentication request.\n',
    stainlessPath: '(resource) auth.pending > (method) create',
    qualified: 'client.auth.pending.create',
    params: [
      'authRequestId: string;',
      "body: { deviceId: string; flowName: 'PENDING_LOGIN_SMART_ID'; personalId: string; username: string; } | { deviceId: string; flowName: 'PENDING_LOGIN_MOBILE_ID'; phoneNumber: string; username: string; } | { deviceId: string; flowName: 'PENDING_LOGIN_BIOMETRICS_AND_PASSCODE'; username: string; };",
    ],
    response:
      "{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }",
    perLanguage: {
      typescript: {
        method: 'client.auth.pending.create',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst pending = await client.auth.pending.create('authRequestId', {\n  deviceId: '8c4baf1b-0dfd-4ad9-bf2c-4b0b2819e0e7',\n  flowName: 'PENDING_LOGIN_SMART_ID',\n  personalId: '39001010005',\n  username: 'john.doe',\n});\n\nconsole.log(pending.nextStep);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/auth/pending/$AUTH_REQUEST_ID \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "deviceId": "8c4baf1b-0dfd-4ad9-bf2c-4b0b2819e0e7",\n          "flowName": "PENDING_LOGIN_SMART_ID",\n          "personalId": "39001010005",\n          "username": "john.doe"\n        }\'',
      },
      kotlin: {
        method: 'auth().pending().create',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.auth.pending.PendingCreateParams\nimport com.plumery.api.models.auth.pending.PendingCreateResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: PendingCreateParams = PendingCreateParams.builder()\n        .authRequestId("authRequestId")\n        .body(PendingCreateParams.Body.PendingLoginSmartId.builder()\n            .deviceId("8c4baf1b-0dfd-4ad9-bf2c-4b0b2819e0e7")\n            .personalId("39001010005")\n            .username("john.doe")\n            .build())\n        .build()\n    val pending: PendingCreateResponse = client.auth().pending().create(params)\n}',
      },
      java: {
        method: 'auth().pending().create',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.auth.pending.PendingCreateParams;\nimport com.plumery.api.models.auth.pending.PendingCreateResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        PendingCreateParams params = PendingCreateParams.builder()\n            .authRequestId("authRequestId")\n            .body(PendingCreateParams.Body.PendingLoginSmartId.builder()\n                .deviceId("8c4baf1b-0dfd-4ad9-bf2c-4b0b2819e0e7")\n                .personalId("39001010005")\n                .username("john.doe")\n                .build())\n            .build();\n        PendingCreateResponse pending = client.auth().pending().create(params);\n    }\n}',
      },
    },
  },
  {
    name: 'reset',
    endpoint: '/api/v1/auth/password:reset',
    httpMethod: 'post',
    summary: 'Reset Password',
    description:
      'This endpoint is used to initiate the process of password reset, in case the user has forgotten their password.\n\nWhen the request contains the phone number, the OTP code will be sent by SMS and when the request contains the e-mail address, the OTP will be sent by e-mail.\n\nThis will initiate an OTP sent to the user, next step is to validate it.',
    stainlessPath: '(resource) auth.password > (method) reset',
    qualified: 'client.auth.password.reset',
    params: ['emailAddress?: string;', 'phoneNumber?: string;', 'plmr-user-action?: boolean;'],
    response:
      "{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }",
    markdown:
      "## reset\n\n`client.auth.password.reset(emailAddress?: string, phoneNumber?: string, plmr-user-action?: boolean): { nextStep: object; sessionId?: string; }`\n\n**post** `/api/v1/auth/password:reset`\n\nThis endpoint is used to initiate the process of password reset, in case the user has forgotten their password.\n\nWhen the request contains the phone number, the OTP code will be sent by SMS and when the request contains the e-mail address, the OTP will be sent by e-mail.\n\nThis will initiate an OTP sent to the user, next step is to validate it.\n\n### Parameters\n\n- `emailAddress?: string`\n  Email address of the user\n\n- `phoneNumber?: string`\n  Phone number of the user\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }`\n\n  - `nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }`\n  - `sessionId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.password.reset();\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.auth.password.reset',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.password.reset();\n\nconsole.log(response.nextStep);",
      },
      http: {
        example: 'curl https://api.plumery.com/api/v1/auth/password:reset \\\n    -X POST',
      },
      kotlin: {
        method: 'auth().password().reset',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.auth.password.PasswordResetParams\nimport com.plumery.api.models.auth.password.PasswordResetResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val response: PasswordResetResponse = client.auth().password().reset()\n}',
      },
      java: {
        method: 'auth().password().reset',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.auth.password.PasswordResetParams;\nimport com.plumery.api.models.auth.password.PasswordResetResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        PasswordResetResponse response = client.auth().password().reset();\n    }\n}',
      },
    },
  },
  {
    name: 'confirm',
    endpoint: '/api/v1/auth/password/challenges:confirm',
    httpMethod: 'post',
    summary: 'Confirm Password',
    description:
      'Use this endpoint after receiving `PasswordConfirm` as next step.\n\nThis is the final step to of the password reset process.',
    stainlessPath: '(resource) auth.password.challenges > (method) confirm',
    qualified: 'client.auth.password.challenges.confirm',
    params: ['password: string;', 'sessionId: string;', 'plmr-user-action?: boolean;'],
    markdown:
      "## confirm\n\n`client.auth.password.challenges.confirm(password: string, sessionId: string, plmr-user-action?: boolean): void`\n\n**post** `/api/v1/auth/password/challenges:confirm`\n\nUse this endpoint after receiving `PasswordConfirm` as next step.\n\nThis is the final step to of the password reset process.\n\n### Parameters\n\n- `password: string`\n\n- `sessionId: string`\n\n- `plmr-user-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.auth.password.challenges.confirm({ password: 'P', sessionId: 'P' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.auth.password.challenges.confirm',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.auth.password.challenges.confirm({ password: 'P', sessionId: 'P' });",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/auth/password/challenges:confirm \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "password": "P",\n          "sessionId": "P"\n        }\'',
      },
      kotlin: {
        method: 'auth().password().challenges().confirm',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.auth.password.challenges.ChallengeConfirmParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: ChallengeConfirmParams = ChallengeConfirmParams.builder()\n        .password("P")\n        .sessionId("P")\n        .build()\n    client.auth().password().challenges().confirm(params)\n}',
      },
      java: {
        method: 'auth().password().challenges().confirm',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.auth.password.challenges.ChallengeConfirmParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        ChallengeConfirmParams params = ChallengeConfirmParams.builder()\n            .password("P")\n            .sessionId("P")\n            .build();\n        client.auth().password().challenges().confirm(params);\n    }\n}',
      },
    },
  },
  {
    name: 'verify',
    endpoint: '/api/v1/auth/password/challenges/otp:verify',
    httpMethod: 'post',
    summary: 'Verify OTP',
    description:
      'Use this endpoint after receiving `OTP` as next step from the "Reset Password" endpoint. \n\nIf OTP verified successfully, next step is `PasswordConfirm`.',
    stainlessPath: '(resource) auth.password.challenges.otp > (method) verify',
    qualified: 'client.auth.password.challenges.otp.verify',
    params: ['code: string;', 'sessionId: string;', 'plmr-user-action?: boolean;'],
    response:
      "{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }",
    markdown:
      "## verify\n\n`client.auth.password.challenges.otp.verify(code: string, sessionId: string, plmr-user-action?: boolean): { nextStep: object; sessionId?: string; }`\n\n**post** `/api/v1/auth/password/challenges/otp:verify`\n\nUse this endpoint after receiving `OTP` as next step from the \"Reset Password\" endpoint. \n\nIf OTP verified successfully, next step is `PasswordConfirm`.\n\n### Parameters\n\n- `code: string`\n  The OTP code provided to the user\n\n- `sessionId: string`\n  the ID of the session\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }`\n\n  - `nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }`\n  - `sessionId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.password.challenges.otp.verify({ code: '123456', sessionId: '3191daaeed978b5b4bd29c161899df72' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.auth.password.challenges.otp.verify',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.auth.password.challenges.otp.verify({\n  code: '123456',\n  sessionId: '3191daaeed978b5b4bd29c161899df72',\n});\n\nconsole.log(response.nextStep);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/auth/password/challenges/otp:verify \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "code": "123456",\n          "sessionId": "3191daaeed978b5b4bd29c161899df72"\n        }\'',
      },
      kotlin: {
        method: 'auth().password().challenges().otp().verify',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.auth.password.challenges.otp.OtpVerifyParams\nimport com.plumery.api.models.auth.password.challenges.otp.OtpVerifyResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: OtpVerifyParams = OtpVerifyParams.builder()\n        .code("123456")\n        .sessionId("3191daaeed978b5b4bd29c161899df72")\n        .build()\n    val response: OtpVerifyResponse = client.auth().password().challenges().otp().verify(params)\n}',
      },
      java: {
        method: 'auth().password().challenges().otp().verify',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.auth.password.challenges.otp.OtpVerifyParams;\nimport com.plumery.api.models.auth.password.challenges.otp.OtpVerifyResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        OtpVerifyParams params = OtpVerifyParams.builder()\n            .code("123456")\n            .sessionId("3191daaeed978b5b4bd29c161899df72")\n            .build();\n        OtpVerifyResponse response = client.auth().password().challenges().otp().verify(params);\n    }\n}',
      },
    },
  },
  {
    name: 'prepare',
    endpoint: '/api/v1/documents-signing:prepare',
    httpMethod: 'post',
    summary: 'Prepare Documents Signing',
    description:
      'Prepares documents for signing and returns challenge id. Endpoint stores documents context with passed documents list.\n**Next step:** Initiate signing process - see *Documents Signing* section for available signing methods.\n',
    stainlessPath: '(resource) documents-signing > (method) prepare',
    qualified: 'client.documentsSigning.prepare',
    params: ['documentsToSign: { uri: string; displayDocumentName?: string; }[];', 'X-Request-ID?: string;'],
    response: '{ challengeId?: string; }',
    markdown:
      "## prepare\n\n`client.documentsSigning.prepare(documentsToSign: { uri: string; displayDocumentName?: string; }[], X-Request-ID?: string): { challengeId?: string; }`\n\n**post** `/api/v1/documents-signing:prepare`\n\nPrepares documents for signing and returns challenge id. Endpoint stores documents context with passed documents list.\n**Next step:** Initiate signing process - see *Documents Signing* section for available signing methods.\n\n\n### Parameters\n\n- `documentsToSign: { uri: string; displayDocumentName?: string; }[]`\n  List of documents to be signed.\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ challengeId?: string; }`\n\n  - `challengeId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.documentsSigning.prepare({ documentsToSign: [{ uri: 'https://api.plumery.com/api/v1/files/en/privacy-policy/v1/Privacy_Policy.pdf' }] });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.documentsSigning.prepare',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.documentsSigning.prepare({\n  documentsToSign: [\n    { uri: 'https://api.plumery.com/api/v1/files/en/privacy-policy/v1/Privacy_Policy.pdf' },\n  ],\n});\n\nconsole.log(response.challengeId);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/documents-signing:prepare \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "documentsToSign": [\n            {\n              "uri": "https://api.plumery.com/api/v1/files/en/privacy-policy/v1/Privacy_Policy.pdf"\n            }\n          ]\n        }\'',
      },
      kotlin: {
        method: 'documentsSigning().prepare',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.documentssigning.DocumentsSigningPrepareParams\nimport com.plumery.api.models.documentssigning.DocumentsSigningPrepareResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: DocumentsSigningPrepareParams = DocumentsSigningPrepareParams.builder()\n        .addDocumentsToSign(DocumentsSigningPrepareParams.DocumentsToSign.builder()\n            .uri("https://api.plumery.com/api/v1/files/en/privacy-policy/v1/Privacy_Policy.pdf")\n            .build())\n        .build()\n    val response: DocumentsSigningPrepareResponse = client.documentsSigning().prepare(params)\n}',
      },
      java: {
        method: 'documentsSigning().prepare',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.documentssigning.DocumentsSigningPrepareParams;\nimport com.plumery.api.models.documentssigning.DocumentsSigningPrepareResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        DocumentsSigningPrepareParams params = DocumentsSigningPrepareParams.builder()\n            .addDocumentsToSign(DocumentsSigningPrepareParams.DocumentsToSign.builder()\n                .uri("https://api.plumery.com/api/v1/files/en/privacy-policy/v1/Privacy_Policy.pdf")\n                .build())\n            .build();\n        DocumentsSigningPrepareResponse response = client.documentsSigning().prepare(params);\n    }\n}',
      },
    },
  },
  {
    name: 'initiate',
    endpoint: '/api/v1/documents-signing/unauthenticated/sk-id/smart-id/signature/{challengeId}:initiate',
    httpMethod: 'post',
    summary: 'Initiate Smart-ID documents signing challenge',
    description:
      'Initiates SK-ID Smart-ID documents signing challenge.\n\nThis endpoint initiates the document signing process and returns the current signing session status.\n- When the status is `PENDING_CODE`, the signing session is not fully initialized and the verification code is not present in the response.\n- When the status is `PENDING_SIGNATURE`, the signing session is fully initialized and the response includes a verification code that the end user must confirm in the SK-ID Smart-ID application.',
    stainlessPath:
      '(resource) documents-signing.unauthenticated.sk-id.smart-id.signature > (method) initiate',
    qualified: 'client.documentsSigning.unauthenticated.skID.smartID.signature.initiate',
    params: [
      'challengeId: string;',
      'countryCode: string;',
      'personalId: string;',
      'preferredLanguage?: string;',
    ],
    response: "{ status?: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; }",
    markdown:
      "## initiate\n\n`client.documentsSigning.unauthenticated.skID.smartID.signature.initiate(challengeId: string, countryCode: string, personalId: string, preferredLanguage?: string): { status?: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; }`\n\n**post** `/api/v1/documents-signing/unauthenticated/sk-id/smart-id/signature/{challengeId}:initiate`\n\nInitiates SK-ID Smart-ID documents signing challenge.\n\nThis endpoint initiates the document signing process and returns the current signing session status.\n- When the status is `PENDING_CODE`, the signing session is not fully initialized and the verification code is not present in the response.\n- When the status is `PENDING_SIGNATURE`, the signing session is fully initialized and the response includes a verification code that the end user must confirm in the SK-ID Smart-ID application.\n\n### Parameters\n\n- `challengeId: string`\n\n- `countryCode: string`\n  Nation with its own government. ISO 3166, Alpha-2 code\n\n\n- `personalId: string`\n  National ID / Personal identification number\n\n- `preferredLanguage?: string`\n  Preferred language of the individual\n\n### Returns\n\n- `{ status?: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; }`\n\n  - `status?: 'PENDING_CODE' | 'PENDING_SIGNING'`\n  - `verificationCode?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.documentsSigning.unauthenticated.skID.smartID.signature.initiate('2751d7d9-df79-4412-b4c4-28aaa7075548', { countryCode: 'US', personalId: '12345678901' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.documentsSigning.unauthenticated.skID.smartID.signature.initiate',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.documentsSigning.unauthenticated.skID.smartID.signature.initiate(\n  '2751d7d9-df79-4412-b4c4-28aaa7075548',\n  { countryCode: 'US', personalId: '12345678901' },\n);\n\nconsole.log(response.status);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/documents-signing/unauthenticated/sk-id/smart-id/signature/$CHALLENGE_ID:initiate \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "countryCode": "US",\n          "personalId": "12345678901",\n          "preferredLanguage": "en-US"\n        }\'',
      },
      kotlin: {
        method: 'documentsSigning().unauthenticated().skId().smartId().signature().initiate',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.documentssigning.unauthenticated.skid.smartid.signature.SignatureInitiateParams\nimport com.plumery.api.models.documentssigning.unauthenticated.skid.smartid.signature.SignatureInitiateResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: SignatureInitiateParams = SignatureInitiateParams.builder()\n        .challengeId("2751d7d9-df79-4412-b4c4-28aaa7075548")\n        .countryCode("US")\n        .personalId("12345678901")\n        .build()\n    val response: SignatureInitiateResponse = client.documentsSigning().unauthenticated().skId().smartId().signature().initiate(params)\n}',
      },
      java: {
        method: 'documentsSigning().unauthenticated().skId().smartId().signature().initiate',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.documentssigning.unauthenticated.skid.smartid.signature.SignatureInitiateParams;\nimport com.plumery.api.models.documentssigning.unauthenticated.skid.smartid.signature.SignatureInitiateResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        SignatureInitiateParams params = SignatureInitiateParams.builder()\n            .challengeId("2751d7d9-df79-4412-b4c4-28aaa7075548")\n            .countryCode("US")\n            .personalId("12345678901")\n            .build();\n        SignatureInitiateResponse response = client.documentsSigning().unauthenticated().skId().smartId().signature().initiate(params);\n    }\n}',
      },
    },
  },
  {
    name: 'confirm',
    endpoint: '/api/v1/documents-signing/unauthenticated/sk-id/smart-id/signature/{challengeId}:confirm',
    httpMethod: 'post',
    summary: 'Confirm SK-ID Smart-ID documents signing challenge',
    description:
      'Confirms SK-ID Smart-ID documents signing challenge.\n\nThis endpoint initiates a signing session by sending a notification to the user’s phone, prompting them to confirm the signing request.\nThe client must then poll this endpoint to track the signing session status until the process is completed or fails.\n\nThe signing session progresses through the following statuses:\n  - `PENDING_CODE`\n    The signing session has been created, but is not fully initialized yet.\n    The verification code is not returned at this stage.\n\n  - `PENDING_SIGNATURE`\n    The signing session is fully initialized.\n    The verification code is returned and the user is expected to confirm the signing on their device.\n\n  - `COMPLETED`\n    The signing has been successfully completed.\n    The signature is verified and saved.\n\nThe client must poll this endpoint repeatedly until one of the following conditions is met:\n  - A 200 OK response is returned with status `COMPLETED`, indicating successful signing\n  - Any other error response is returned, indicating that the signing process has failed and polling must stop',
    stainlessPath: '(resource) documents-signing.unauthenticated.sk-id.smart-id.signature > (method) confirm',
    qualified: 'client.documentsSigning.unauthenticated.skID.smartID.signature.confirm',
    params: ['challengeId: string;'],
    response: "{ status?: 'PENDING_CODE' | 'PENDING_SIGNING' | 'COMPLETED'; verificationCode?: string; }",
    markdown:
      "## confirm\n\n`client.documentsSigning.unauthenticated.skID.smartID.signature.confirm(challengeId: string): { status?: 'PENDING_CODE' | 'PENDING_SIGNING' | 'COMPLETED'; verificationCode?: string; }`\n\n**post** `/api/v1/documents-signing/unauthenticated/sk-id/smart-id/signature/{challengeId}:confirm`\n\nConfirms SK-ID Smart-ID documents signing challenge.\n\nThis endpoint initiates a signing session by sending a notification to the user’s phone, prompting them to confirm the signing request.\nThe client must then poll this endpoint to track the signing session status until the process is completed or fails.\n\nThe signing session progresses through the following statuses:\n  - `PENDING_CODE`\n    The signing session has been created, but is not fully initialized yet.\n    The verification code is not returned at this stage.\n\n  - `PENDING_SIGNATURE`\n    The signing session is fully initialized.\n    The verification code is returned and the user is expected to confirm the signing on their device.\n\n  - `COMPLETED`\n    The signing has been successfully completed.\n    The signature is verified and saved.\n\nThe client must poll this endpoint repeatedly until one of the following conditions is met:\n  - A 200 OK response is returned with status `COMPLETED`, indicating successful signing\n  - Any other error response is returned, indicating that the signing process has failed and polling must stop\n\n### Parameters\n\n- `challengeId: string`\n\n### Returns\n\n- `{ status?: 'PENDING_CODE' | 'PENDING_SIGNING' | 'COMPLETED'; verificationCode?: string; }`\n\n  - `status?: 'PENDING_CODE' | 'PENDING_SIGNING' | 'COMPLETED'`\n  - `verificationCode?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.documentsSigning.unauthenticated.skID.smartID.signature.confirm('2751d7d9-df79-4412-b4c4-28aaa7075548');\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.documentsSigning.unauthenticated.skID.smartID.signature.confirm',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.documentsSigning.unauthenticated.skID.smartID.signature.confirm(\n  '2751d7d9-df79-4412-b4c4-28aaa7075548',\n);\n\nconsole.log(response.status);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/documents-signing/unauthenticated/sk-id/smart-id/signature/$CHALLENGE_ID:confirm \\\n    -X POST',
      },
      kotlin: {
        method: 'documentsSigning().unauthenticated().skId().smartId().signature().confirm',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.documentssigning.unauthenticated.skid.smartid.signature.SignatureConfirmParams\nimport com.plumery.api.models.documentssigning.unauthenticated.skid.smartid.signature.SignatureConfirmResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val response: SignatureConfirmResponse = client.documentsSigning().unauthenticated().skId().smartId().signature().confirm("2751d7d9-df79-4412-b4c4-28aaa7075548")\n}',
      },
      java: {
        method: 'documentsSigning().unauthenticated().skId().smartId().signature().confirm',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.documentssigning.unauthenticated.skid.smartid.signature.SignatureConfirmParams;\nimport com.plumery.api.models.documentssigning.unauthenticated.skid.smartid.signature.SignatureConfirmResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        SignatureConfirmResponse response = client.documentsSigning().unauthenticated().skId().smartId().signature().confirm("2751d7d9-df79-4412-b4c4-28aaa7075548");\n    }\n}',
      },
    },
  },
  {
    name: 'initiate',
    endpoint: '/api/v1/documents-signing/unauthenticated/sk-id/mobile-id/signature/{challengeId}:initiate',
    httpMethod: 'post',
    summary: 'Initiate Mobile-ID documents signing challenge',
    description:
      'Initiates SK-ID Mobile-ID documents signing challenge.\n\nThis endpoint initiates the document signing process and returns the current signing session status.\n- When the status is `PENDING_CODE`, the signing session is not fully initialized and the verification code is not present in the response.\n- When the status is `PENDING_SIGNATURE`, the signing session is fully initialized and the response includes a verification code that the end user must confirm in the SK-ID Mobile-ID application.',
    stainlessPath:
      '(resource) documents-signing.unauthenticated.sk-id.mobile-id.signature > (method) initiate',
    qualified: 'client.documentsSigning.unauthenticated.skID.mobileID.signature.initiate',
    params: [
      'challengeId: string;',
      'personalId: string;',
      'phoneNumber: string;',
      'preferredLanguage?: string;',
    ],
    response: "{ status?: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; }",
    markdown:
      "## initiate\n\n`client.documentsSigning.unauthenticated.skID.mobileID.signature.initiate(challengeId: string, personalId: string, phoneNumber: string, preferredLanguage?: string): { status?: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; }`\n\n**post** `/api/v1/documents-signing/unauthenticated/sk-id/mobile-id/signature/{challengeId}:initiate`\n\nInitiates SK-ID Mobile-ID documents signing challenge.\n\nThis endpoint initiates the document signing process and returns the current signing session status.\n- When the status is `PENDING_CODE`, the signing session is not fully initialized and the verification code is not present in the response.\n- When the status is `PENDING_SIGNATURE`, the signing session is fully initialized and the response includes a verification code that the end user must confirm in the SK-ID Mobile-ID application.\n\n### Parameters\n\n- `challengeId: string`\n\n- `personalId: string`\n  National ID / Personal identification number\n\n- `phoneNumber: string`\n  Phone number of the individual\n\n- `preferredLanguage?: string`\n  Preferred language of the individual\n\n### Returns\n\n- `{ status?: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; }`\n\n  - `status?: 'PENDING_CODE' | 'PENDING_SIGNING'`\n  - `verificationCode?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.documentsSigning.unauthenticated.skID.mobileID.signature.initiate('2751d7d9-df79-4412-b4c4-28aaa7075548', { personalId: '12345678901', phoneNumber: '+46991022' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.documentsSigning.unauthenticated.skID.mobileID.signature.initiate',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.documentsSigning.unauthenticated.skID.mobileID.signature.initiate(\n  '2751d7d9-df79-4412-b4c4-28aaa7075548',\n  { personalId: '12345678901', phoneNumber: '+46991022' },\n);\n\nconsole.log(response.status);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/documents-signing/unauthenticated/sk-id/mobile-id/signature/$CHALLENGE_ID:initiate \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "personalId": "12345678901",\n          "phoneNumber": "+46991022",\n          "preferredLanguage": "UK"\n        }\'',
      },
      kotlin: {
        method: 'documentsSigning().unauthenticated().skId().mobileId().signature().initiate',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.documentssigning.unauthenticated.skid.mobileid.signature.SignatureInitiateParams\nimport com.plumery.api.models.documentssigning.unauthenticated.skid.mobileid.signature.SignatureInitiateResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: SignatureInitiateParams = SignatureInitiateParams.builder()\n        .challengeId("2751d7d9-df79-4412-b4c4-28aaa7075548")\n        .personalId("12345678901")\n        .phoneNumber("+46991022")\n        .build()\n    val response: SignatureInitiateResponse = client.documentsSigning().unauthenticated().skId().mobileId().signature().initiate(params)\n}',
      },
      java: {
        method: 'documentsSigning().unauthenticated().skId().mobileId().signature().initiate',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.documentssigning.unauthenticated.skid.mobileid.signature.SignatureInitiateParams;\nimport com.plumery.api.models.documentssigning.unauthenticated.skid.mobileid.signature.SignatureInitiateResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        SignatureInitiateParams params = SignatureInitiateParams.builder()\n            .challengeId("2751d7d9-df79-4412-b4c4-28aaa7075548")\n            .personalId("12345678901")\n            .phoneNumber("+46991022")\n            .build();\n        SignatureInitiateResponse response = client.documentsSigning().unauthenticated().skId().mobileId().signature().initiate(params);\n    }\n}',
      },
    },
  },
  {
    name: 'confirm',
    endpoint: '/api/v1/documents-signing/unauthenticated/sk-id/mobile-id/signature/{challengeId}:confirm',
    httpMethod: 'post',
    summary: 'Confirm SK-ID Mobile-ID documents signing challenge',
    description:
      'Confirms SK-ID Mobile-ID documents signing challenge.\n\nThis endpoint initiates a signing session by sending a notification to the user’s phone, prompting them to confirm the signing request.\nThe client must then poll this endpoint to track the signing session status until the process is completed or fails.\n\nThe signing session progresses through the following statuses:\n  - `PENDING_CODE`\n    The signing session has been created, but is not fully initialized yet.\n    The verification code is not returned at this stage.\n\n  - `PENDING_SIGNATURE`\n    The signing session is fully initialized.\n    The verification code is returned and the user is expected to confirm the signing on their device.\n\n  - `COMPLETED`\n    The signing has been successfully completed.\n    The signature is verified and saved.\n\nThe client must poll this endpoint repeatedly until one of the following conditions is met:\n  - A 200 OK response is returned with status `COMPLETED`, indicating successful signing\n  - Any other error response is returned, indicating that the signing process has failed and polling must stop',
    stainlessPath:
      '(resource) documents-signing.unauthenticated.sk-id.mobile-id.signature > (method) confirm',
    qualified: 'client.documentsSigning.unauthenticated.skID.mobileID.signature.confirm',
    params: ['challengeId: string;'],
    response: "{ status?: 'PENDING_CODE' | 'PENDING_SIGNING' | 'COMPLETED'; verificationCode?: string; }",
    markdown:
      "## confirm\n\n`client.documentsSigning.unauthenticated.skID.mobileID.signature.confirm(challengeId: string): { status?: 'PENDING_CODE' | 'PENDING_SIGNING' | 'COMPLETED'; verificationCode?: string; }`\n\n**post** `/api/v1/documents-signing/unauthenticated/sk-id/mobile-id/signature/{challengeId}:confirm`\n\nConfirms SK-ID Mobile-ID documents signing challenge.\n\nThis endpoint initiates a signing session by sending a notification to the user’s phone, prompting them to confirm the signing request.\nThe client must then poll this endpoint to track the signing session status until the process is completed or fails.\n\nThe signing session progresses through the following statuses:\n  - `PENDING_CODE`\n    The signing session has been created, but is not fully initialized yet.\n    The verification code is not returned at this stage.\n\n  - `PENDING_SIGNATURE`\n    The signing session is fully initialized.\n    The verification code is returned and the user is expected to confirm the signing on their device.\n\n  - `COMPLETED`\n    The signing has been successfully completed.\n    The signature is verified and saved.\n\nThe client must poll this endpoint repeatedly until one of the following conditions is met:\n  - A 200 OK response is returned with status `COMPLETED`, indicating successful signing\n  - Any other error response is returned, indicating that the signing process has failed and polling must stop\n\n### Parameters\n\n- `challengeId: string`\n\n### Returns\n\n- `{ status?: 'PENDING_CODE' | 'PENDING_SIGNING' | 'COMPLETED'; verificationCode?: string; }`\n\n  - `status?: 'PENDING_CODE' | 'PENDING_SIGNING' | 'COMPLETED'`\n  - `verificationCode?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.documentsSigning.unauthenticated.skID.mobileID.signature.confirm('2751d7d9-df79-4412-b4c4-28aaa7075548');\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.documentsSigning.unauthenticated.skID.mobileID.signature.confirm',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.documentsSigning.unauthenticated.skID.mobileID.signature.confirm(\n  '2751d7d9-df79-4412-b4c4-28aaa7075548',\n);\n\nconsole.log(response.status);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/documents-signing/unauthenticated/sk-id/mobile-id/signature/$CHALLENGE_ID:confirm \\\n    -X POST',
      },
      kotlin: {
        method: 'documentsSigning().unauthenticated().skId().mobileId().signature().confirm',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.documentssigning.unauthenticated.skid.mobileid.signature.SignatureConfirmParams\nimport com.plumery.api.models.documentssigning.unauthenticated.skid.mobileid.signature.SignatureConfirmResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val response: SignatureConfirmResponse = client.documentsSigning().unauthenticated().skId().mobileId().signature().confirm("2751d7d9-df79-4412-b4c4-28aaa7075548")\n}',
      },
      java: {
        method: 'documentsSigning().unauthenticated().skId().mobileId().signature().confirm',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.documentssigning.unauthenticated.skid.mobileid.signature.SignatureConfirmParams;\nimport com.plumery.api.models.documentssigning.unauthenticated.skid.mobileid.signature.SignatureConfirmResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        SignatureConfirmResponse response = client.documentsSigning().unauthenticated().skId().mobileId().signature().confirm("2751d7d9-df79-4412-b4c4-28aaa7075548");\n    }\n}',
      },
    },
  },
  {
    name: 'initiate',
    endpoint: '/api/v1/documents-signing/sk-id/smart-id/signature/{challengeId}:initiate',
    httpMethod: 'post',
    summary: 'Initiate Smart-ID documents signing challenge',
    description:
      'Initiates SK-ID Smart-ID documents signing challenge. Requires a valid session token.\n\nThis endpoint initiates the document signing process and returns the current signing session status.\n- When the status is `PENDING_CODE`, the signing session is not fully initialized and the verification code is not present in the response.\n- When the status is `PENDING_SIGNATURE`, the signing session is fully initialized and the response includes a verification code that the end user must confirm in the SK-ID Smart-ID application.',
    stainlessPath: '(resource) documents-signing.sk-id.smart-id.signature > (method) initiate',
    qualified: 'client.documentsSigning.skID.smartID.signature.initiate',
    params: ['challengeId: string;'],
    response: "{ status?: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; }",
    markdown:
      "## initiate\n\n`client.documentsSigning.skID.smartID.signature.initiate(challengeId: string): { status?: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; }`\n\n**post** `/api/v1/documents-signing/sk-id/smart-id/signature/{challengeId}:initiate`\n\nInitiates SK-ID Smart-ID documents signing challenge. Requires a valid session token.\n\nThis endpoint initiates the document signing process and returns the current signing session status.\n- When the status is `PENDING_CODE`, the signing session is not fully initialized and the verification code is not present in the response.\n- When the status is `PENDING_SIGNATURE`, the signing session is fully initialized and the response includes a verification code that the end user must confirm in the SK-ID Smart-ID application.\n\n### Parameters\n\n- `challengeId: string`\n\n### Returns\n\n- `{ status?: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; }`\n\n  - `status?: 'PENDING_CODE' | 'PENDING_SIGNING'`\n  - `verificationCode?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.documentsSigning.skID.smartID.signature.initiate('2751d7d9-df79-4412-b4c4-28aaa7075548');\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.documentsSigning.skID.smartID.signature.initiate',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.documentsSigning.skID.smartID.signature.initiate(\n  '2751d7d9-df79-4412-b4c4-28aaa7075548',\n);\n\nconsole.log(response.status);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/documents-signing/sk-id/smart-id/signature/$CHALLENGE_ID:initiate \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'documentsSigning().skId().smartId().signature().initiate',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.documentssigning.skid.smartid.signature.SignatureInitiateParams\nimport com.plumery.api.models.documentssigning.skid.smartid.signature.SignatureInitiateResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val response: SignatureInitiateResponse = client.documentsSigning().skId().smartId().signature().initiate("2751d7d9-df79-4412-b4c4-28aaa7075548")\n}',
      },
      java: {
        method: 'documentsSigning().skId().smartId().signature().initiate',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.documentssigning.skid.smartid.signature.SignatureInitiateParams;\nimport com.plumery.api.models.documentssigning.skid.smartid.signature.SignatureInitiateResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        SignatureInitiateResponse response = client.documentsSigning().skId().smartId().signature().initiate("2751d7d9-df79-4412-b4c4-28aaa7075548");\n    }\n}',
      },
    },
  },
  {
    name: 'confirm',
    endpoint: '/api/v1/documents-signing/sk-id/smart-id/signature/{challengeId}:confirm',
    httpMethod: 'post',
    summary: 'Confirm SK-ID Smart-ID documents signing challenge',
    description:
      'Confirms SK-ID Smart-ID documents signing challenge. Requires a valid session token.\n\nThis endpoint initiates a signing session by sending a notification to the user’s phone, prompting them to confirm the signing request.\nThe client must then poll this endpoint to track the signing session status until the process is completed or fails.\n\nThe signing session progresses through the following statuses:\n  - `PENDING_CODE`\n    The signing session has been created, but is not fully initialized yet.\n    The verification code is not returned at this stage.\n\n  - `PENDING_SIGNATURE`\n    The signing session is fully initialized.\n    The verification code is returned and the user is expected to confirm the signing on their device.\n\n  - `COMPLETED`\n    The signing has been successfully completed.\n    The signature is verified and saved.\n\nThe client must poll this endpoint repeatedly until one of the following conditions is met:\n  - A 200 OK response is returned with status `COMPLETED`, indicating successful signing\n  - Any other error response is returned, indicating that the signing process has failed and polling must stop',
    stainlessPath: '(resource) documents-signing.sk-id.smart-id.signature > (method) confirm',
    qualified: 'client.documentsSigning.skID.smartID.signature.confirm',
    params: ['challengeId: string;'],
    response: "{ status?: 'PENDING_CODE' | 'PENDING_SIGNING' | 'COMPLETED'; verificationCode?: string; }",
    markdown:
      "## confirm\n\n`client.documentsSigning.skID.smartID.signature.confirm(challengeId: string): { status?: 'PENDING_CODE' | 'PENDING_SIGNING' | 'COMPLETED'; verificationCode?: string; }`\n\n**post** `/api/v1/documents-signing/sk-id/smart-id/signature/{challengeId}:confirm`\n\nConfirms SK-ID Smart-ID documents signing challenge. Requires a valid session token.\n\nThis endpoint initiates a signing session by sending a notification to the user’s phone, prompting them to confirm the signing request.\nThe client must then poll this endpoint to track the signing session status until the process is completed or fails.\n\nThe signing session progresses through the following statuses:\n  - `PENDING_CODE`\n    The signing session has been created, but is not fully initialized yet.\n    The verification code is not returned at this stage.\n\n  - `PENDING_SIGNATURE`\n    The signing session is fully initialized.\n    The verification code is returned and the user is expected to confirm the signing on their device.\n\n  - `COMPLETED`\n    The signing has been successfully completed.\n    The signature is verified and saved.\n\nThe client must poll this endpoint repeatedly until one of the following conditions is met:\n  - A 200 OK response is returned with status `COMPLETED`, indicating successful signing\n  - Any other error response is returned, indicating that the signing process has failed and polling must stop\n\n### Parameters\n\n- `challengeId: string`\n\n### Returns\n\n- `{ status?: 'PENDING_CODE' | 'PENDING_SIGNING' | 'COMPLETED'; verificationCode?: string; }`\n\n  - `status?: 'PENDING_CODE' | 'PENDING_SIGNING' | 'COMPLETED'`\n  - `verificationCode?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.documentsSigning.skID.smartID.signature.confirm('2751d7d9-df79-4412-b4c4-28aaa7075548');\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.documentsSigning.skID.smartID.signature.confirm',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.documentsSigning.skID.smartID.signature.confirm(\n  '2751d7d9-df79-4412-b4c4-28aaa7075548',\n);\n\nconsole.log(response.status);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/documents-signing/sk-id/smart-id/signature/$CHALLENGE_ID:confirm \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'documentsSigning().skId().smartId().signature().confirm',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.documentssigning.skid.smartid.signature.SignatureConfirmParams\nimport com.plumery.api.models.documentssigning.skid.smartid.signature.SignatureConfirmResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val response: SignatureConfirmResponse = client.documentsSigning().skId().smartId().signature().confirm("2751d7d9-df79-4412-b4c4-28aaa7075548")\n}',
      },
      java: {
        method: 'documentsSigning().skId().smartId().signature().confirm',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.documentssigning.skid.smartid.signature.SignatureConfirmParams;\nimport com.plumery.api.models.documentssigning.skid.smartid.signature.SignatureConfirmResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        SignatureConfirmResponse response = client.documentsSigning().skId().smartId().signature().confirm("2751d7d9-df79-4412-b4c4-28aaa7075548");\n    }\n}',
      },
    },
  },
  {
    name: 'initiate',
    endpoint: '/api/v1/documents-signing/sk-id/mobile-id/signature/{challengeId}:initiate',
    httpMethod: 'post',
    summary: 'Initiate Mobile-ID documents signing challenge',
    description:
      'Initiates SK-ID Mobile-ID documents signing challenge. Requires a valid session token.\n\nThis endpoint initiates the document signing process and returns the current signing session status.\n- When the status is `PENDING_CODE`, the signing session is not fully initialized and the verification code is not present in the response.\n- When the status is `PENDING_SIGNATURE`, the signing session is fully initialized and the response includes a verification code that the end user must confirm in the SK-ID Mobile-ID application.',
    stainlessPath: '(resource) documents-signing.sk-id.mobile-id.signature > (method) initiate',
    qualified: 'client.documentsSigning.skID.mobileID.signature.initiate',
    params: ['challengeId: string;'],
    response: "{ status?: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; }",
    markdown:
      "## initiate\n\n`client.documentsSigning.skID.mobileID.signature.initiate(challengeId: string): { status?: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; }`\n\n**post** `/api/v1/documents-signing/sk-id/mobile-id/signature/{challengeId}:initiate`\n\nInitiates SK-ID Mobile-ID documents signing challenge. Requires a valid session token.\n\nThis endpoint initiates the document signing process and returns the current signing session status.\n- When the status is `PENDING_CODE`, the signing session is not fully initialized and the verification code is not present in the response.\n- When the status is `PENDING_SIGNATURE`, the signing session is fully initialized and the response includes a verification code that the end user must confirm in the SK-ID Mobile-ID application.\n\n### Parameters\n\n- `challengeId: string`\n\n### Returns\n\n- `{ status?: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; }`\n\n  - `status?: 'PENDING_CODE' | 'PENDING_SIGNING'`\n  - `verificationCode?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.documentsSigning.skID.mobileID.signature.initiate('2751d7d9-df79-4412-b4c4-28aaa7075548');\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.documentsSigning.skID.mobileID.signature.initiate',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.documentsSigning.skID.mobileID.signature.initiate(\n  '2751d7d9-df79-4412-b4c4-28aaa7075548',\n);\n\nconsole.log(response.status);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/documents-signing/sk-id/mobile-id/signature/$CHALLENGE_ID:initiate \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'documentsSigning().skId().mobileId().signature().initiate',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.documentssigning.skid.mobileid.signature.SignatureInitiateParams\nimport com.plumery.api.models.documentssigning.skid.mobileid.signature.SignatureInitiateResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val response: SignatureInitiateResponse = client.documentsSigning().skId().mobileId().signature().initiate("2751d7d9-df79-4412-b4c4-28aaa7075548")\n}',
      },
      java: {
        method: 'documentsSigning().skId().mobileId().signature().initiate',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.documentssigning.skid.mobileid.signature.SignatureInitiateParams;\nimport com.plumery.api.models.documentssigning.skid.mobileid.signature.SignatureInitiateResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        SignatureInitiateResponse response = client.documentsSigning().skId().mobileId().signature().initiate("2751d7d9-df79-4412-b4c4-28aaa7075548");\n    }\n}',
      },
    },
  },
  {
    name: 'confirm',
    endpoint: '/api/v1/documents-signing/sk-id/mobile-id/signature/{challengeId}:confirm',
    httpMethod: 'post',
    summary: 'Confirm SK-ID Mobile-ID documents signing challenge',
    description:
      'Confirms SK-ID Mobile-ID documents signing challenge. Requires a valid session token.\n\nThis endpoint initiates a signing session by sending a notification to the user’s phone, prompting them to confirm the signing request.\nThe client must then poll this endpoint to track the signing session status until the process is completed or fails.\n\nThe signing session progresses through the following statuses:\n  - `PENDING_CODE`\n    The signing session has been created, but is not fully initialized yet.\n    The verification code is not returned at this stage.\n\n  - `PENDING_SIGNATURE`\n    The signing session is fully initialized.\n    The verification code is returned and the user is expected to confirm the signing on their device.\n\n  - `COMPLETED`\n    The signing has been successfully completed.\n    The signature is verified and saved.\n\nThe client must poll this endpoint repeatedly until one of the following conditions is met:\n  - A 200 OK response is returned with status `COMPLETED`, indicating successful signing\n  - Any other error response is returned, indicating that the signing process has failed and polling must stop',
    stainlessPath: '(resource) documents-signing.sk-id.mobile-id.signature > (method) confirm',
    qualified: 'client.documentsSigning.skID.mobileID.signature.confirm',
    params: ['challengeId: string;'],
    response: "{ status?: 'PENDING_CODE' | 'PENDING_SIGNING' | 'COMPLETED'; verificationCode?: string; }",
    markdown:
      "## confirm\n\n`client.documentsSigning.skID.mobileID.signature.confirm(challengeId: string): { status?: 'PENDING_CODE' | 'PENDING_SIGNING' | 'COMPLETED'; verificationCode?: string; }`\n\n**post** `/api/v1/documents-signing/sk-id/mobile-id/signature/{challengeId}:confirm`\n\nConfirms SK-ID Mobile-ID documents signing challenge. Requires a valid session token.\n\nThis endpoint initiates a signing session by sending a notification to the user’s phone, prompting them to confirm the signing request.\nThe client must then poll this endpoint to track the signing session status until the process is completed or fails.\n\nThe signing session progresses through the following statuses:\n  - `PENDING_CODE`\n    The signing session has been created, but is not fully initialized yet.\n    The verification code is not returned at this stage.\n\n  - `PENDING_SIGNATURE`\n    The signing session is fully initialized.\n    The verification code is returned and the user is expected to confirm the signing on their device.\n\n  - `COMPLETED`\n    The signing has been successfully completed.\n    The signature is verified and saved.\n\nThe client must poll this endpoint repeatedly until one of the following conditions is met:\n  - A 200 OK response is returned with status `COMPLETED`, indicating successful signing\n  - Any other error response is returned, indicating that the signing process has failed and polling must stop\n\n### Parameters\n\n- `challengeId: string`\n\n### Returns\n\n- `{ status?: 'PENDING_CODE' | 'PENDING_SIGNING' | 'COMPLETED'; verificationCode?: string; }`\n\n  - `status?: 'PENDING_CODE' | 'PENDING_SIGNING' | 'COMPLETED'`\n  - `verificationCode?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.documentsSigning.skID.mobileID.signature.confirm('2751d7d9-df79-4412-b4c4-28aaa7075548');\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.documentsSigning.skID.mobileID.signature.confirm',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.documentsSigning.skID.mobileID.signature.confirm(\n  '2751d7d9-df79-4412-b4c4-28aaa7075548',\n);\n\nconsole.log(response.status);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/documents-signing/sk-id/mobile-id/signature/$CHALLENGE_ID:confirm \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'documentsSigning().skId().mobileId().signature().confirm',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.documentssigning.skid.mobileid.signature.SignatureConfirmParams\nimport com.plumery.api.models.documentssigning.skid.mobileid.signature.SignatureConfirmResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val response: SignatureConfirmResponse = client.documentsSigning().skId().mobileId().signature().confirm("2751d7d9-df79-4412-b4c4-28aaa7075548")\n}',
      },
      java: {
        method: 'documentsSigning().skId().mobileId().signature().confirm',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.documentssigning.skid.mobileid.signature.SignatureConfirmParams;\nimport com.plumery.api.models.documentssigning.skid.mobileid.signature.SignatureConfirmResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        SignatureConfirmResponse response = client.documentsSigning().skId().mobileId().signature().confirm("2751d7d9-df79-4412-b4c4-28aaa7075548");\n    }\n}',
      },
    },
  },
  {
    name: 'list',
    endpoint: '/api/v1/address-suggestions',
    httpMethod: 'get',
    summary: 'Search for addresses',
    description:
      'Performs a partial address search and returns a list of matching address suggestions.\nSupports incremental search as the user types. This endpoint is publicly accessible\nand does not require authentication.\n',
    stainlessPath: '(resource) address-suggestions > (method) list',
    qualified: 'client.addressSuggestions.list',
    params: ['address: string;', 'country?: string;', 'language?: string;', 'limit?: number;'],
    response: '{ suggestions?: { id: string; address: string; }[]; }',
    markdown:
      '## list\n\n`client.addressSuggestions.list(address: string, country?: string, language?: string, limit?: number): { suggestions?: object[]; }`\n\n**get** `/api/v1/address-suggestions`\n\nPerforms a partial address search and returns a list of matching address suggestions.\nSupports incremental search as the user types. This endpoint is publicly accessible\nand does not require authentication.\n\n\n### Parameters\n\n- `address: string`\n  Partial address search query (minimum 3 characters recommended)\n\n- `country?: string`\n  ISO alpha-2 country code to limit search scope\n\n- `language?: string`\n  ISO alpha-2 language code for address formatting and display preferences.\nAffects how addresses are formatted and returned by the provider (e.g., "en", "et", "fr").\nNot all providers support all languages - unsupported languages will fallback to provider defaults.\n\n\n- `limit?: number`\n  Maximum number of suggestions to return\n\n### Returns\n\n- `{ suggestions?: { id: string; address: string; }[]; }`\n\n  - `suggestions?: { id: string; address: string; }[]`\n\n### Example\n\n```typescript\nimport Plumery from \'plumery\';\n\nconst client = new Plumery();\n\nconst addressSuggestions = await client.addressSuggestions.list({ address: \'x\' });\n\nconsole.log(addressSuggestions);\n```',
    perLanguage: {
      typescript: {
        method: 'client.addressSuggestions.list',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst addressSuggestions = await client.addressSuggestions.list({ address: 'x' });\n\nconsole.log(addressSuggestions.suggestions);",
      },
      http: {
        example: 'curl https://api.plumery.com/api/v1/address-suggestions',
      },
      kotlin: {
        method: 'addressSuggestions().list',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.addresssuggestions.AddressSuggestionListParams\nimport com.plumery.api.models.addresssuggestions.AddressSuggestionListResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: AddressSuggestionListParams = AddressSuggestionListParams.builder()\n        .address("x")\n        .build()\n    val addressSuggestions: AddressSuggestionListResponse = client.addressSuggestions().list(params)\n}',
      },
      java: {
        method: 'addressSuggestions().list',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.addresssuggestions.AddressSuggestionListParams;\nimport com.plumery.api.models.addresssuggestions.AddressSuggestionListResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        AddressSuggestionListParams params = AddressSuggestionListParams.builder()\n            .address("x")\n            .build();\n        AddressSuggestionListResponse addressSuggestions = client.addressSuggestions().list(params);\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/address-suggestions/{addressId}',
    httpMethod: 'get',
    summary: 'Retrieve complete address details',
    description:
      "Retrieves the complete, standardised details for a specific address using the ID\nreturned from the search endpoint. This endpoint provides all address components\nfollowing Plumery's standard address model. This endpoint is publicly accessible\nand does not require authentication.\n",
    stainlessPath: '(resource) address-suggestions > (method) retrieve',
    qualified: 'client.addressSuggestions.retrieve',
    params: ['addressId: string;'],
    response:
      '{ id: string; country: string; address?: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; language?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }',
    markdown:
      "## retrieve\n\n`client.addressSuggestions.retrieve(addressId: string): { id: string; country: string; address?: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; language?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }`\n\n**get** `/api/v1/address-suggestions/{addressId}`\n\nRetrieves the complete, standardised details for a specific address using the ID\nreturned from the search endpoint. This endpoint provides all address components\nfollowing Plumery's standard address model. This endpoint is publicly accessible\nand does not require authentication.\n\n\n### Parameters\n\n- `addressId: string`\n\n### Returns\n\n- `{ id: string; country: string; address?: string; buildingName?: string; buildingNumber?: string; countrySubDivision?: string; districtName?: string; floor?: string; language?: string; postBox?: string; postCode?: string; streetName?: string; suite?: string; townLocationName?: string; townName?: string; }`\n  Complete standardised address details following Plumery's address model\n\n  - `id: string`\n  - `country: string`\n  - `address?: string`\n  - `buildingName?: string`\n  - `buildingNumber?: string`\n  - `countrySubDivision?: string`\n  - `districtName?: string`\n  - `floor?: string`\n  - `language?: string`\n  - `postBox?: string`\n  - `postCode?: string`\n  - `streetName?: string`\n  - `suite?: string`\n  - `townLocationName?: string`\n  - `townName?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst addressSuggestion = await client.addressSuggestions.retrieve('ADR_12345_EE_TALLINN_NARVAMNT7');\n\nconsole.log(addressSuggestion);\n```",
    perLanguage: {
      typescript: {
        method: 'client.addressSuggestions.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst addressSuggestion = await client.addressSuggestions.retrieve(\n  'ADR_12345_EE_TALLINN_NARVAMNT7',\n);\n\nconsole.log(addressSuggestion.id);",
      },
      http: {
        example: 'curl https://api.plumery.com/api/v1/address-suggestions/$ADDRESS_ID',
      },
      kotlin: {
        method: 'addressSuggestions().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.addresssuggestions.AddressSuggestionRetrieveParams\nimport com.plumery.api.models.addresssuggestions.AddressSuggestionRetrieveResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val addressSuggestion: AddressSuggestionRetrieveResponse = client.addressSuggestions().retrieve("ADR_12345_EE_TALLINN_NARVAMNT7")\n}',
      },
      java: {
        method: 'addressSuggestions().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.addresssuggestions.AddressSuggestionRetrieveParams;\nimport com.plumery.api.models.addresssuggestions.AddressSuggestionRetrieveResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        AddressSuggestionRetrieveResponse addressSuggestion = client.addressSuggestions().retrieve("ADR_12345_EE_TALLINN_NARVAMNT7");\n    }\n}',
      },
    },
  },
  {
    name: 'create',
    endpoint: '/api/v1/test-users',
    httpMethod: 'post',
    summary: 'Create a new test user',
    description:
      'Creates a new test user.\nThis endpoint is designed for development and testing purposes only.\n',
    stainlessPath: '(resource) test-users > (method) create',
    qualified: 'client.testUsers.create',
    params: [
      'country: string;',
      'email: string;',
      'firstName: string;',
      'individualCoreId: string;',
      'individualCRMId: string;',
      'lastName: string;',
      'password: string;',
      'personalId: string;',
      'phoneNumber: string;',
      'username: string;',
      'X-Request-ID: string;',
      'preferredLanguage?: string;',
    ],
    response:
      '{ country: string; email: string; firstName: string; individualCoreId: string; individualCRMId: string; lastName: string; password: string; personalId: string; phoneNumber: string; userId: string; username: string; preferredLanguage?: string; }',
    markdown:
      "## create\n\n`client.testUsers.create(country: string, email: string, firstName: string, individualCoreId: string, individualCRMId: string, lastName: string, password: string, personalId: string, phoneNumber: string, username: string, X-Request-ID: string, preferredLanguage?: string): { country: string; email: string; firstName: string; individualCoreId: string; individualCRMId: string; lastName: string; password: string; personalId: string; phoneNumber: string; userId: string; username: string; preferredLanguage?: string; }`\n\n**post** `/api/v1/test-users`\n\nCreates a new test user.\nThis endpoint is designed for development and testing purposes only.\n\n\n### Parameters\n\n- `country: string`\n  ISO 3166-1 alpha-2 country code (e.g., \"US\", \"GB\", \"EE\")\n\n- `email: string`\n  User's email address (must be valid email format)\n\n- `firstName: string`\n  User's first name\n\n- `individualCoreId: string`\n  External ID in the banking core system (used as party ID)\n\n- `individualCRMId: string`\n  External ID in the CRM system\n\n- `lastName: string`\n  User's last name\n\n- `password: string`\n  User's password\n\n- `personalId: string`\n  National ID / Personal identification number\n\n- `phoneNumber: string`\n  User's phone number (international format)\n\n- `username: string`\n  Username for authentication\n\n- `X-Request-ID: string`\n\n- `preferredLanguage?: string`\n  Preferred language of the user. Language code as locale code. E.g. en-US, en-GB, nl-NL.\n\n### Returns\n\n- `{ country: string; email: string; firstName: string; individualCoreId: string; individualCRMId: string; lastName: string; password: string; personalId: string; phoneNumber: string; userId: string; username: string; preferredLanguage?: string; }`\n\n  - `country: string`\n  - `email: string`\n  - `firstName: string`\n  - `individualCoreId: string`\n  - `individualCRMId: string`\n  - `lastName: string`\n  - `password: string`\n  - `personalId: string`\n  - `phoneNumber: string`\n  - `userId: string`\n  - `username: string`\n  - `preferredLanguage?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst testUser = await client.testUsers.create({\n  country: 'US',\n  email: 'john.doe@example.com',\n  firstName: 'John',\n  individualCoreId: 'core-123456',\n  individualCRMId: 'crm:123456',\n  lastName: 'Doe',\n  password: 'SecurePassword123!',\n  personalId: '12345678901',\n  phoneNumber: '+1234567890',\n  username: 'john.doe',\n  'X-Request-ID': '550e8400-e29b-41d4-a716-446655440000',\n});\n\nconsole.log(testUser);\n```",
    perLanguage: {
      typescript: {
        method: 'client.testUsers.create',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst testUser = await client.testUsers.create({\n  country: 'US',\n  email: 'john.doe@example.com',\n  firstName: 'John',\n  individualCoreId: 'core-123456',\n  individualCRMId: 'crm:123456',\n  lastName: 'Doe',\n  password: 'SecurePassword123!',\n  personalId: '12345678901',\n  phoneNumber: '+1234567890',\n  username: 'john.doe',\n  'X-Request-ID': '550e8400-e29b-41d4-a716-446655440000',\n});\n\nconsole.log(testUser.individualCoreId);",
      },
      http: {
        example:
          'curl http://localhost:8137/api/v1/test-users \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "country": "US",\n          "email": "john.doe@example.com",\n          "firstName": "John",\n          "individualCoreId": "core-123456",\n          "individualCRMId": "crm:123456",\n          "lastName": "Doe",\n          "password": "SecurePassword123!",\n          "personalId": "12345678901",\n          "phoneNumber": "+1234567890",\n          "username": "john.doe",\n          "preferredLanguage": "en-US"\n        }\'',
      },
      kotlin: {
        method: 'testUsers().create',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.testusers.TestUserCreateParams\nimport com.plumery.api.models.testusers.TestUserCreateResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: TestUserCreateParams = TestUserCreateParams.builder()\n        .xRequestId("550e8400-e29b-41d4-a716-446655440000")\n        .country("US")\n        .email("john.doe@example.com")\n        .firstName("John")\n        .individualCoreId("core-123456")\n        .individualCrmId("crm:123456")\n        .lastName("Doe")\n        .password("SecurePassword123!")\n        .personalId("12345678901")\n        .phoneNumber("+1234567890")\n        .username("john.doe")\n        .build()\n    val testUser: TestUserCreateResponse = client.testUsers().create(params)\n}',
      },
      java: {
        method: 'testUsers().create',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.testusers.TestUserCreateParams;\nimport com.plumery.api.models.testusers.TestUserCreateResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        TestUserCreateParams params = TestUserCreateParams.builder()\n            .xRequestId("550e8400-e29b-41d4-a716-446655440000")\n            .country("US")\n            .email("john.doe@example.com")\n            .firstName("John")\n            .individualCoreId("core-123456")\n            .individualCrmId("crm:123456")\n            .lastName("Doe")\n            .password("SecurePassword123!")\n            .personalId("12345678901")\n            .phoneNumber("+1234567890")\n            .username("john.doe")\n            .build();\n        TestUserCreateResponse testUser = client.testUsers().create(params);\n    }\n}',
      },
    },
  },
  {
    name: 'update',
    endpoint: '/api/v1/test-users/{username}:update',
    httpMethod: 'post',
    summary: 'Update test user',
    description:
      'Update a test user by username.\nOnly the fields present in the request body will be updated.\nThis endpoint is designed for development and testing purposes only.\nIf one of the external IDs is changed, the corresponding accounts, cards and transactions will no longer be valid.\n',
    stainlessPath: '(resource) test-users > (method) update',
    qualified: 'client.testUsers.update',
    params: [
      'username: string;',
      'X-Request-ID: string;',
      'country?: string;',
      'email?: string;',
      'firstName?: string;',
      'individualCoreId?: string;',
      'individualCRMId?: string;',
      'lastName?: string;',
      'personalId?: string;',
      'phoneNumber?: string;',
      'preferredLanguage?: string;',
    ],
    response:
      '{ country: string; email: string; firstName: string; individualCoreId: string; individualCRMId: string; lastName: string; password: string; personalId: string; phoneNumber: string; userId: string; username: string; preferredLanguage?: string; }',
    markdown:
      "## update\n\n`client.testUsers.update(username: string, X-Request-ID: string, country?: string, email?: string, firstName?: string, individualCoreId?: string, individualCRMId?: string, lastName?: string, personalId?: string, phoneNumber?: string, preferredLanguage?: string): { country: string; email: string; firstName: string; individualCoreId: string; individualCRMId: string; lastName: string; password: string; personalId: string; phoneNumber: string; userId: string; username: string; preferredLanguage?: string; }`\n\n**post** `/api/v1/test-users/{username}:update`\n\nUpdate a test user by username.\nOnly the fields present in the request body will be updated.\nThis endpoint is designed for development and testing purposes only.\nIf one of the external IDs is changed, the corresponding accounts, cards and transactions will no longer be valid.\n\n\n### Parameters\n\n- `username: string`\n\n- `X-Request-ID: string`\n\n- `country?: string`\n  ISO 3166-1 alpha-2 country code (e.g., \"US\", \"GB\", \"EE\")\n\n- `email?: string`\n  User's email address (must be valid email format)\n\n- `firstName?: string`\n  User's first name\n\n- `individualCoreId?: string`\n  External ID in the banking core system (used as party ID)\n\n- `individualCRMId?: string`\n  External ID in the CRM system\n\n- `lastName?: string`\n  User's last name\n\n- `personalId?: string`\n  National ID / Personal identification number\n\n- `phoneNumber?: string`\n  User's phone number (international format)\n\n- `preferredLanguage?: string`\n  Preferred language of the user. Language code as locale code. E.g. en-US, en-GB, nl-NL.\n\n### Returns\n\n- `{ country: string; email: string; firstName: string; individualCoreId: string; individualCRMId: string; lastName: string; password: string; personalId: string; phoneNumber: string; userId: string; username: string; preferredLanguage?: string; }`\n\n  - `country: string`\n  - `email: string`\n  - `firstName: string`\n  - `individualCoreId: string`\n  - `individualCRMId: string`\n  - `lastName: string`\n  - `password: string`\n  - `personalId: string`\n  - `phoneNumber: string`\n  - `userId: string`\n  - `username: string`\n  - `preferredLanguage?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst testUser = await client.testUsers.update('john.doe', { 'X-Request-ID': '550e8400-e29b-41d4-a716-446655440000' });\n\nconsole.log(testUser);\n```",
    perLanguage: {
      typescript: {
        method: 'client.testUsers.update',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst testUser = await client.testUsers.update('john.doe', {\n  'X-Request-ID': '550e8400-e29b-41d4-a716-446655440000',\n  country: 'US',\n  email: 'john.doe@example.com',\n  firstName: 'John',\n  individualCoreId: 'core-123456',\n  lastName: 'Doe',\n  personalId: '12345678901',\n  phoneNumber: '+1234567890',\n});\n\nconsole.log(testUser.individualCoreId);",
      },
      http: {
        example:
          'curl http://localhost:8137/api/v1/test-users/$USERNAME:update \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "country": "US",\n          "email": "john.doe@example.com",\n          "firstName": "John",\n          "individualCoreId": "core-123456",\n          "individualCRMId": "crm:123456",\n          "lastName": "Doe",\n          "personalId": "12345678901",\n          "phoneNumber": "+1234567890",\n          "preferredLanguage": "en-US"\n        }\'',
      },
      kotlin: {
        method: 'testUsers().update',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.testusers.TestUserUpdateParams\nimport com.plumery.api.models.testusers.TestUserUpdateResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: TestUserUpdateParams = TestUserUpdateParams.builder()\n        .username("john.doe")\n        .xRequestId("550e8400-e29b-41d4-a716-446655440000")\n        .build()\n    val testUser: TestUserUpdateResponse = client.testUsers().update(params)\n}',
      },
      java: {
        method: 'testUsers().update',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.testusers.TestUserUpdateParams;\nimport com.plumery.api.models.testusers.TestUserUpdateResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        TestUserUpdateParams params = TestUserUpdateParams.builder()\n            .username("john.doe")\n            .xRequestId("550e8400-e29b-41d4-a716-446655440000")\n            .build();\n        TestUserUpdateResponse testUser = client.testUsers().update(params);\n    }\n}',
      },
    },
  },
  {
    name: 'list',
    endpoint: '/api/v1/devices',
    httpMethod: 'get',
    summary: 'List Devices',
    description: 'Get list of registered devices for a user',
    stainlessPath: '(resource) devices > (method) list',
    qualified: 'client.devices.list',
    params: ['plmr-user-action?: boolean;'],
    response:
      '{ devices: { id: string; biometricsEnabled: boolean; createdAt: string; passcodeEnabled: boolean; info?: object; }[]; }',
    markdown:
      "## list\n\n`client.devices.list(plmr-user-action?: boolean): { devices: object[]; }`\n\n**get** `/api/v1/devices`\n\nGet list of registered devices for a user\n\n### Parameters\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ devices: { id: string; biometricsEnabled: boolean; createdAt: string; passcodeEnabled: boolean; info?: object; }[]; }`\n\n  - `devices: { id: string; biometricsEnabled: boolean; createdAt: string; passcodeEnabled: boolean; info?: object; }[]`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst devices = await client.devices.list();\n\nconsole.log(devices);\n```",
    perLanguage: {
      typescript: {
        method: 'client.devices.list',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst devices = await client.devices.list();\n\nconsole.log(devices.devices);",
      },
      http: {
        example: 'curl https://api.plumery.com/api/v1/devices \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'devices().list',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.devices.DeviceListParams\nimport com.plumery.api.models.devices.DeviceListResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val devices: DeviceListResponse = client.devices().list()\n}',
      },
      java: {
        method: 'devices().list',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.devices.DeviceListParams;\nimport com.plumery.api.models.devices.DeviceListResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        DeviceListResponse devices = client.devices().list();\n    }\n}',
      },
    },
  },
  {
    name: 'create',
    endpoint: '/api/v1/devices',
    httpMethod: 'post',
    summary: 'Internal Device Registration',
    description: 'Internal - used by onboarding',
    stainlessPath: '(resource) devices > (method) create',
    qualified: 'client.devices.create',
    params: ['publicKey: string;', 'userId: string;', 'info?: object;', 'plmr-user-action?: boolean;'],
    response: '{ challenge: string; deviceId: string; expiresIn?: number; }',
    markdown:
      "## create\n\n`client.devices.create(publicKey: string, userId: string, info?: object, plmr-user-action?: boolean): { challenge: string; deviceId: string; expiresIn?: number; }`\n\n**post** `/api/v1/devices`\n\nInternal - used by onboarding\n\n### Parameters\n\n- `publicKey: string`\n\n- `userId: string`\n\n- `info?: object`\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ challenge: string; deviceId: string; expiresIn?: number; }`\n\n  - `challenge: string`\n  - `deviceId: string`\n  - `expiresIn?: number`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst device = await client.devices.create({ publicKey: 'P', userId: 'P' });\n\nconsole.log(device);\n```",
    perLanguage: {
      typescript: {
        method: 'client.devices.create',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst device = await client.devices.create({ publicKey: 'P', userId: 'P' });\n\nconsole.log(device.challenge);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/devices \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "publicKey": "P",\n          "userId": "P"\n        }\'',
      },
      kotlin: {
        method: 'devices().create',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.devices.DeviceCreateParams\nimport com.plumery.api.models.devices.DeviceCreateResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: DeviceCreateParams = DeviceCreateParams.builder()\n        .publicKey("P")\n        .userId("P")\n        .build()\n    val device: DeviceCreateResponse = client.devices().create(params)\n}',
      },
      java: {
        method: 'devices().create',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.devices.DeviceCreateParams;\nimport com.plumery.api.models.devices.DeviceCreateResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        DeviceCreateParams params = DeviceCreateParams.builder()\n            .publicKey("P")\n            .userId("P")\n            .build();\n        DeviceCreateResponse device = client.devices().create(params);\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/devices/{deviceId}',
    httpMethod: 'get',
    summary: 'Get Device',
    description: 'Get a single registered device by ID',
    stainlessPath: '(resource) devices > (method) retrieve',
    qualified: 'client.devices.retrieve',
    params: ['deviceId: string;', 'plmr-user-action?: boolean;'],
    response:
      '{ id: string; biometricsEnabled: boolean; createdAt: string; passcodeEnabled: boolean; info?: object; }',
    markdown:
      "## retrieve\n\n`client.devices.retrieve(deviceId: string, plmr-user-action?: boolean): { id: string; biometricsEnabled: boolean; createdAt: string; passcodeEnabled: boolean; info?: object; }`\n\n**get** `/api/v1/devices/{deviceId}`\n\nGet a single registered device by ID\n\n### Parameters\n\n- `deviceId: string`\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ id: string; biometricsEnabled: boolean; createdAt: string; passcodeEnabled: boolean; info?: object; }`\n\n  - `id: string`\n  - `biometricsEnabled: boolean`\n  - `createdAt: string`\n  - `passcodeEnabled: boolean`\n  - `info?: object`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst device = await client.devices.retrieve('deviceId');\n\nconsole.log(device);\n```",
    perLanguage: {
      typescript: {
        method: 'client.devices.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst device = await client.devices.retrieve('deviceId');\n\nconsole.log(device.id);",
      },
      http: {
        example: 'curl https://api.plumery.com/api/v1/devices/$DEVICE_ID \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'devices().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.devices.DeviceRetrieveParams\nimport com.plumery.api.models.devices.DeviceRetrieveResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val device: DeviceRetrieveResponse = client.devices().retrieve("deviceId")\n}',
      },
      java: {
        method: 'devices().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.devices.DeviceRetrieveParams;\nimport com.plumery.api.models.devices.DeviceRetrieveResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        DeviceRetrieveResponse device = client.devices().retrieve("deviceId");\n    }\n}',
      },
    },
  },
  {
    name: 'delete',
    endpoint: '/api/v1/devices/{id}:delete',
    httpMethod: 'post',
    summary: 'Delete Device',
    description:
      "Delete a user's register device. This will terminate any active session exist for that device.",
    stainlessPath: '(resource) devices > (method) delete',
    qualified: 'client.devices.delete',
    params: ['id: string;', 'plmr-user-action?: boolean;'],
    markdown:
      "## delete\n\n`client.devices.delete(id: string, plmr-user-action?: boolean): void`\n\n**post** `/api/v1/devices/{id}:delete`\n\nDelete a user's register device. This will terminate any active session exist for that device.\n\n### Parameters\n\n- `id: string`\n\n- `plmr-user-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.devices.delete('P')\n```",
    perLanguage: {
      typescript: {
        method: 'client.devices.delete',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.devices.delete('P');",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/devices/$ID:delete \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'devices().delete',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.devices.DeviceDeleteParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    client.devices().delete("P")\n}',
      },
      java: {
        method: 'devices().delete',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.devices.DeviceDeleteParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        client.devices().delete("P");\n    }\n}',
      },
    },
  },
  {
    name: 'sign',
    endpoint: '/api/v1/devices/{id}/challenges:sign',
    httpMethod: 'post',
    summary: 'Internal Device Binding',
    description: 'Internal Device Binding',
    stainlessPath: '(resource) devices.challenges > (method) sign',
    qualified: 'client.devices.challenges.sign',
    params: ['id: string;', 'signature: string;', 'plmr-user-action?: boolean;'],
    response:
      "{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }",
    markdown:
      "## sign\n\n`client.devices.challenges.sign(id: string, signature: string, plmr-user-action?: boolean): { nextStep: object; sessionId?: string; }`\n\n**post** `/api/v1/devices/{id}/challenges:sign`\n\nInternal Device Binding\n\n### Parameters\n\n- `id: string`\n\n- `signature: string`\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }`\n\n  - `nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }`\n  - `sessionId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.devices.challenges.sign('P', { signature: 'P' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.devices.challenges.sign',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.devices.challenges.sign('P', { signature: 'P' });\n\nconsole.log(response.nextStep);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/devices/$ID/challenges:sign \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "signature": "P"\n        }\'',
      },
      kotlin: {
        method: 'devices().challenges().sign',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.devices.challenges.ChallengeSignParams\nimport com.plumery.api.models.devices.challenges.ChallengeSignResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: ChallengeSignParams = ChallengeSignParams.builder()\n        .id("P")\n        .signature("P")\n        .build()\n    val response: ChallengeSignResponse = client.devices().challenges().sign(params)\n}',
      },
      java: {
        method: 'devices().challenges().sign',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.devices.challenges.ChallengeSignParams;\nimport com.plumery.api.models.devices.challenges.ChallengeSignResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        ChallengeSignParams params = ChallengeSignParams.builder()\n            .id("P")\n            .signature("P")\n            .build();\n        ChallengeSignResponse response = client.devices().challenges().sign(params);\n    }\n}',
      },
    },
  },
  {
    name: 'confirm',
    endpoint: '/api/v1/devices/{id}/challenges:confirm',
    httpMethod: 'post',
    summary: 'Internal Session Confirm',
    description: 'Internal Session Confirm',
    stainlessPath: '(resource) devices.challenges > (method) confirm',
    qualified: 'client.devices.challenges.confirm',
    params: ['id: string;', 'plmr-user-action?: boolean;'],
    response: '{ deviceId: string; confirmed?: boolean; }',
    markdown:
      "## confirm\n\n`client.devices.challenges.confirm(id: string, plmr-user-action?: boolean): { deviceId: string; confirmed?: boolean; }`\n\n**post** `/api/v1/devices/{id}/challenges:confirm`\n\nInternal Session Confirm\n\n### Parameters\n\n- `id: string`\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ deviceId: string; confirmed?: boolean; }`\n\n  - `deviceId: string`\n  - `confirmed?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.devices.challenges.confirm('P');\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.devices.challenges.confirm',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.devices.challenges.confirm('P');\n\nconsole.log(response.deviceId);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/devices/$ID/challenges:confirm \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'devices().challenges().confirm',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.devices.challenges.ChallengeConfirmParams\nimport com.plumery.api.models.devices.challenges.ChallengeConfirmResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val response: ChallengeConfirmResponse = client.devices().challenges().confirm("P")\n}',
      },
      java: {
        method: 'devices().challenges().confirm',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.devices.challenges.ChallengeConfirmParams;\nimport com.plumery.api.models.devices.challenges.ChallengeConfirmResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        ChallengeConfirmResponse response = client.devices().challenges().confirm("P");\n    }\n}',
      },
    },
  },
  {
    name: 'verifyOtp',
    endpoint: '/api/v1/devices/{id}/challenges/phone:verify-otp',
    httpMethod: 'post',
    summary: 'Internal OTP Validation',
    description: 'Internal OTP Validation',
    stainlessPath: '(resource) devices.challenges.phone > (method) verifyOtp',
    qualified: 'client.devices.challenges.phone.verifyOtp',
    params: ['id: string;', 'code: string;', 'plmr-user-action?: boolean;'],
    response:
      "{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }",
    markdown:
      "## verifyOtp\n\n`client.devices.challenges.phone.verifyOtp(id: string, code: string, plmr-user-action?: boolean): { nextStep: object; sessionId?: string; }`\n\n**post** `/api/v1/devices/{id}/challenges/phone:verify-otp`\n\nInternal OTP Validation\n\n### Parameters\n\n- `id: string`\n\n- `code: string`\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }`\n\n  - `nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }`\n  - `sessionId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.devices.challenges.phone.verifyOtp('P', { code: 'P' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.devices.challenges.phone.verifyOtp',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.devices.challenges.phone.verifyOtp('P', { code: 'P' });\n\nconsole.log(response.nextStep);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/devices/$ID/challenges/phone:verify-otp \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "code": "P"\n        }\'',
      },
      kotlin: {
        method: 'devices().challenges().phone().verifyOtp',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.devices.challenges.phone.PhoneVerifyOtpParams\nimport com.plumery.api.models.devices.challenges.phone.PhoneVerifyOtpResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: PhoneVerifyOtpParams = PhoneVerifyOtpParams.builder()\n        .id("P")\n        .code("P")\n        .build()\n    val response: PhoneVerifyOtpResponse = client.devices().challenges().phone().verifyOtp(params)\n}',
      },
      java: {
        method: 'devices().challenges().phone().verifyOtp',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.devices.challenges.phone.PhoneVerifyOtpParams;\nimport com.plumery.api.models.devices.challenges.phone.PhoneVerifyOtpResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        PhoneVerifyOtpParams params = PhoneVerifyOtpParams.builder()\n            .id("P")\n            .code("P")\n            .build();\n        PhoneVerifyOtpResponse response = client.devices().challenges().phone().verifyOtp(params);\n    }\n}',
      },
    },
  },
  {
    name: 'configureBiometrics',
    endpoint: '/api/v1/devices/current/challenges:configure-biometrics',
    httpMethod: 'post',
    summary: 'Configure Biometrics For Device',
    description: 'Use this endpoint to enable or disable biometrics authentication for the current device.',
    stainlessPath: '(resource) devices.current.challenges > (method) configureBiometrics',
    qualified: 'client.devices.current.challenges.configureBiometrics',
    params: ['enabled: boolean;', 'publicKey?: string;', 'plmr-user-action?: boolean;'],
    response:
      "{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }",
    markdown:
      "## configureBiometrics\n\n`client.devices.current.challenges.configureBiometrics(enabled: boolean, publicKey?: string, plmr-user-action?: boolean): { nextStep: object; sessionId?: string; }`\n\n**post** `/api/v1/devices/current/challenges:configure-biometrics`\n\nUse this endpoint to enable or disable biometrics authentication for the current device.\n\n### Parameters\n\n- `enabled: boolean`\n  Flag indicating whether the biometrics is to be enabled\n\n- `publicKey?: string`\n  A Base64-encoded RSA public key (up to 4096 bytes) generated using SHA-256 hashing. Only required if `enabled` value is `true`.\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }`\n\n  - `nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }`\n  - `sessionId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.devices.current.challenges.configureBiometrics({ enabled: true });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.devices.current.challenges.configureBiometrics',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.devices.current.challenges.configureBiometrics({ enabled: true });\n\nconsole.log(response.nextStep);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/devices/current/challenges:configure-biometrics \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "enabled": true\n        }\'',
      },
      kotlin: {
        method: 'devices().current().challenges().configureBiometrics',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.devices.current.challenges.ChallengeConfigureBiometricsParams\nimport com.plumery.api.models.devices.current.challenges.ChallengeConfigureBiometricsResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: ChallengeConfigureBiometricsParams = ChallengeConfigureBiometricsParams.builder()\n        .enabled(true)\n        .build()\n    val response: ChallengeConfigureBiometricsResponse = client.devices().current().challenges().configureBiometrics(params)\n}',
      },
      java: {
        method: 'devices().current().challenges().configureBiometrics',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.devices.current.challenges.ChallengeConfigureBiometricsParams;\nimport com.plumery.api.models.devices.current.challenges.ChallengeConfigureBiometricsResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        ChallengeConfigureBiometricsParams params = ChallengeConfigureBiometricsParams.builder()\n            .enabled(true)\n            .build();\n        ChallengeConfigureBiometricsResponse response = client.devices().current().challenges().configureBiometrics(params);\n    }\n}',
      },
    },
  },
  {
    name: 'configurePasscode',
    endpoint: '/api/v1/devices/current/challenges:configure-passcode',
    httpMethod: 'post',
    summary: 'Configure Passcode For Device',
    description: 'Use this endpoint to enable or disable passcode authentication for the current device.',
    stainlessPath: '(resource) devices.current.challenges > (method) configurePasscode',
    qualified: 'client.devices.current.challenges.configurePasscode',
    params: ['enabled: boolean;', 'publicKey?: string;', 'plmr-user-action?: boolean;'],
    response:
      "{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }",
    markdown:
      "## configurePasscode\n\n`client.devices.current.challenges.configurePasscode(enabled: boolean, publicKey?: string, plmr-user-action?: boolean): { nextStep: object; sessionId?: string; }`\n\n**post** `/api/v1/devices/current/challenges:configure-passcode`\n\nUse this endpoint to enable or disable passcode authentication for the current device.\n\n### Parameters\n\n- `enabled: boolean`\n  Flag indicating whether the passcode is to be enabled\n\n- `publicKey?: string`\n  A Base64-encoded RSA public key (up to 4096 bytes) generated using SHA-256 hashing. Only required if `enabled` value is `true`.\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }`\n\n  - `nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }`\n  - `sessionId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.devices.current.challenges.configurePasscode({ enabled: true });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.devices.current.challenges.configurePasscode',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.devices.current.challenges.configurePasscode({ enabled: true });\n\nconsole.log(response.nextStep);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/devices/current/challenges:configure-passcode \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "enabled": true\n        }\'',
      },
      kotlin: {
        method: 'devices().current().challenges().configurePasscode',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.devices.current.challenges.ChallengeConfigurePasscodeParams\nimport com.plumery.api.models.devices.current.challenges.ChallengeConfigurePasscodeResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: ChallengeConfigurePasscodeParams = ChallengeConfigurePasscodeParams.builder()\n        .enabled(true)\n        .build()\n    val response: ChallengeConfigurePasscodeResponse = client.devices().current().challenges().configurePasscode(params)\n}',
      },
      java: {
        method: 'devices().current().challenges().configurePasscode',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.devices.current.challenges.ChallengeConfigurePasscodeParams;\nimport com.plumery.api.models.devices.current.challenges.ChallengeConfigurePasscodeResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        ChallengeConfigurePasscodeParams params = ChallengeConfigurePasscodeParams.builder()\n            .enabled(true)\n            .build();\n        ChallengeConfigurePasscodeResponse response = client.devices().current().challenges().configurePasscode(params);\n    }\n}',
      },
    },
  },
  {
    name: 'initiateSigning',
    endpoint: '/api/v1/devices/current/challenges:initiate-signing',
    httpMethod: 'post',
    summary: 'Initiate Device Signing',
    description:
      'Use this endpoint after receiving `InitiateDeviceSigningForMethodConfig` as next step.\n\nInitiates device signing process using publicKey passed previously \n(in `ConfigureBiometricsRequest` or `ConfigurePasscodeRequest`).',
    stainlessPath: '(resource) devices.current.challenges > (method) initiateSigning',
    qualified: 'client.devices.current.challenges.initiateSigning',
    params: ['plmr-user-action?: boolean;'],
    response:
      "{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }",
    markdown:
      "## initiateSigning\n\n`client.devices.current.challenges.initiateSigning(plmr-user-action?: boolean): { nextStep: object; sessionId?: string; }`\n\n**post** `/api/v1/devices/current/challenges:initiate-signing`\n\nUse this endpoint after receiving `InitiateDeviceSigningForMethodConfig` as next step.\n\nInitiates device signing process using publicKey passed previously \n(in `ConfigureBiometricsRequest` or `ConfigurePasscodeRequest`).\n\n### Parameters\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }`\n\n  - `nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }`\n  - `sessionId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.devices.current.challenges.initiateSigning();\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.devices.current.challenges.initiateSigning',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.devices.current.challenges.initiateSigning();\n\nconsole.log(response.nextStep);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/devices/current/challenges:initiate-signing \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'devices().current().challenges().initiateSigning',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.devices.current.challenges.ChallengeInitiateSigningParams\nimport com.plumery.api.models.devices.current.challenges.ChallengeInitiateSigningResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val response: ChallengeInitiateSigningResponse = client.devices().current().challenges().initiateSigning()\n}',
      },
      java: {
        method: 'devices().current().challenges().initiateSigning',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.devices.current.challenges.ChallengeInitiateSigningParams;\nimport com.plumery.api.models.devices.current.challenges.ChallengeInitiateSigningResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        ChallengeInitiateSigningResponse response = client.devices().current().challenges().initiateSigning();\n    }\n}',
      },
    },
  },
  {
    name: 'sign',
    endpoint: '/api/v1/devices/current/challenges:sign',
    httpMethod: 'post',
    summary: 'Bind Device',
    description:
      'Use this endpoint after receiving `DeviceBindingForMethodConfig` as next step.\n\nBind device by signing it - this will enable the user to seamlessly login from the same device.',
    stainlessPath: '(resource) devices.current.challenges > (method) sign',
    qualified: 'client.devices.current.challenges.sign',
    params: ['signature: string;', 'plmr-user-action?: boolean;'],
    response:
      "{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }",
    markdown:
      "## sign\n\n`client.devices.current.challenges.sign(signature: string, plmr-user-action?: boolean): { nextStep: object; sessionId?: string; }`\n\n**post** `/api/v1/devices/current/challenges:sign`\n\nUse this endpoint after receiving `DeviceBindingForMethodConfig` as next step.\n\nBind device by signing it - this will enable the user to seamlessly login from the same device.\n\n### Parameters\n\n- `signature: string`\n  A Base64-encoded RSA signature over Base64-encoded `dataToSign` provided when receiving `DeviceBindingForMethodConfig` as the next step.\nThe signature is generated with the device’s private key using the SHA256withRSA (PKCS#1 v1.5) algorithm. The `dataToSign` is to be Base64-decoded for signing.\n\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }`\n\n  - `nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }`\n  - `sessionId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.devices.current.challenges.sign({ signature: 'signature' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.devices.current.challenges.sign',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.devices.current.challenges.sign({ signature: 'signature' });\n\nconsole.log(response.nextStep);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/devices/current/challenges:sign \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "signature": "signature"\n        }\'',
      },
      kotlin: {
        method: 'devices().current().challenges().sign',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.devices.current.challenges.ChallengeSignParams\nimport com.plumery.api.models.devices.current.challenges.ChallengeSignResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: ChallengeSignParams = ChallengeSignParams.builder()\n        .signature("signature")\n        .build()\n    val response: ChallengeSignResponse = client.devices().current().challenges().sign(params)\n}',
      },
      java: {
        method: 'devices().current().challenges().sign',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.devices.current.challenges.ChallengeSignParams;\nimport com.plumery.api.models.devices.current.challenges.ChallengeSignResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        ChallengeSignParams params = ChallengeSignParams.builder()\n            .signature("signature")\n            .build();\n        ChallengeSignResponse response = client.devices().current().challenges().sign(params);\n    }\n}',
      },
    },
  },
  {
    name: 'confirm',
    endpoint: '/api/v1/devices/current/challenges:confirm',
    httpMethod: 'post',
    summary: 'Confirm Signing Method Configuration',
    description:
      'Use this endpoint after receiving `ConfirmSigningForMethodConfig` as next step.\n\nConfirms operation of device signing method configuration.',
    stainlessPath: '(resource) devices.current.challenges > (method) confirm',
    qualified: 'client.devices.current.challenges.confirm',
    params: ['plmr-user-action?: boolean;'],
    markdown:
      "## confirm\n\n`client.devices.current.challenges.confirm(plmr-user-action?: boolean): void`\n\n**post** `/api/v1/devices/current/challenges:confirm`\n\nUse this endpoint after receiving `ConfirmSigningForMethodConfig` as next step.\n\nConfirms operation of device signing method configuration.\n\n### Parameters\n\n- `plmr-user-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.devices.current.challenges.confirm()\n```",
    perLanguage: {
      typescript: {
        method: 'client.devices.current.challenges.confirm',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.devices.current.challenges.confirm();",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/devices/current/challenges:confirm \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'devices().current().challenges().confirm',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.devices.current.challenges.ChallengeConfirmParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    client.devices().current().challenges().confirm()\n}',
      },
      java: {
        method: 'devices().current().challenges().confirm',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.devices.current.challenges.ChallengeConfirmParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        client.devices().current().challenges().confirm();\n    }\n}',
      },
    },
  },
  {
    name: 'create',
    endpoint: '/api/v1/device-registrations',
    httpMethod: 'post',
    summary: 'Register Device',
    description: 'Initiates the registration of a new device.',
    stainlessPath: '(resource) device-registrations > (method) create',
    qualified: 'client.deviceRegistrations.create',
    params: ['info?: object;'],
    response: '{ deviceId: string; }',
    markdown:
      "## create\n\n`client.deviceRegistrations.create(info?: object): { deviceId: string; }`\n\n**post** `/api/v1/device-registrations`\n\nInitiates the registration of a new device.\n\n### Parameters\n\n- `info?: object`\n  An optional key-value map containing additional information about the device. Each key and value must be a string.\nThe total character length of all keys and values combined must not exceed 4096 characters. This allows for additional\ncontextual data to be sent with the registration request, enhancing the information available for the registration process.\n\n\n### Returns\n\n- `{ deviceId: string; }`\n\n  - `deviceId: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst deviceRegistration = await client.deviceRegistrations.create();\n\nconsole.log(deviceRegistration);\n```",
    perLanguage: {
      typescript: {
        method: 'client.deviceRegistrations.create',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst deviceRegistration = await client.deviceRegistrations.create();\n\nconsole.log(deviceRegistration.deviceId);",
      },
      http: {
        example: 'curl https://api.plumery.com/api/v1/device-registrations \\\n    -X POST',
      },
      kotlin: {
        method: 'deviceRegistrations().create',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.deviceregistrations.DeviceRegistrationCreateParams\nimport com.plumery.api.models.deviceregistrations.DeviceRegistrationCreateResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val deviceRegistration: DeviceRegistrationCreateResponse = client.deviceRegistrations().create()\n}',
      },
      java: {
        method: 'deviceRegistrations().create',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.deviceregistrations.DeviceRegistrationCreateParams;\nimport com.plumery.api.models.deviceregistrations.DeviceRegistrationCreateResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        DeviceRegistrationCreateResponse deviceRegistration = client.deviceRegistrations().create();\n    }\n}',
      },
    },
  },
  {
    name: 'sign',
    endpoint: '/api/v1/device-registrations/{id}/challenges:sign',
    httpMethod: 'post',
    summary: 'Pre-auth Configure Signature',
    description:
      'Completes a pre-auth configure-biometrics/configure-passcode request by submitting the RSA signature that\nproves possession of the newly-uploaded method key (the `DeviceBindingForMethodConfigPreAuth` next step).\n',
    stainlessPath: '(resource) device-registrations.challenges > (method) sign',
    qualified: 'client.deviceRegistrations.challenges.sign',
    params: ['id: string;', 'signature: string;', 'plmr-user-action?: boolean;'],
    response:
      "{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }",
    markdown:
      "## sign\n\n`client.deviceRegistrations.challenges.sign(id: string, signature: string, plmr-user-action?: boolean): { nextStep: object; sessionId?: string; }`\n\n**post** `/api/v1/device-registrations/{id}/challenges:sign`\n\nCompletes a pre-auth configure-biometrics/configure-passcode request by submitting the RSA signature that\nproves possession of the newly-uploaded method key (the `DeviceBindingForMethodConfigPreAuth` next step).\n\n\n### Parameters\n\n- `id: string`\n\n- `signature: string`\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }`\n\n  - `nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }`\n  - `sessionId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.deviceRegistrations.challenges.sign('P', { signature: 'P' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.deviceRegistrations.challenges.sign',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.deviceRegistrations.challenges.sign('P', { signature: 'P' });\n\nconsole.log(response.nextStep);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/device-registrations/$ID/challenges:sign \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "signature": "P"\n        }\'',
      },
      kotlin: {
        method: 'deviceRegistrations().challenges().sign',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.deviceregistrations.challenges.ChallengeSignParams\nimport com.plumery.api.models.deviceregistrations.challenges.ChallengeSignResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: ChallengeSignParams = ChallengeSignParams.builder()\n        .id("P")\n        .signature("P")\n        .build()\n    val response: ChallengeSignResponse = client.deviceRegistrations().challenges().sign(params)\n}',
      },
      java: {
        method: 'deviceRegistrations().challenges().sign',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.deviceregistrations.challenges.ChallengeSignParams;\nimport com.plumery.api.models.deviceregistrations.challenges.ChallengeSignResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        ChallengeSignParams params = ChallengeSignParams.builder()\n            .id("P")\n            .signature("P")\n            .build();\n        ChallengeSignResponse response = client.deviceRegistrations().challenges().sign(params);\n    }\n}',
      },
    },
  },
  {
    name: 'configureBiometrics',
    endpoint: '/api/v1/device-registrations/{id}/challenges:configure-biometrics',
    httpMethod: 'post',
    summary: 'Pre-auth Configure Biometrics',
    description:
      'Initiates biometrics configuration for a pre-auth device (not yet linked to a user). Complete it by signing on the `challenges:sign` endpoint.',
    stainlessPath: '(resource) device-registrations.challenges > (method) configureBiometrics',
    qualified: 'client.deviceRegistrations.challenges.configureBiometrics',
    params: ['id: string;', 'publicKey: string;', 'plmr-user-action?: boolean;'],
    response:
      "{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }",
    markdown:
      "## configureBiometrics\n\n`client.deviceRegistrations.challenges.configureBiometrics(id: string, publicKey: string, plmr-user-action?: boolean): { nextStep: object; sessionId?: string; }`\n\n**post** `/api/v1/device-registrations/{id}/challenges:configure-biometrics`\n\nInitiates biometrics configuration for a pre-auth device (not yet linked to a user). Complete it by signing on the `challenges:sign` endpoint.\n\n### Parameters\n\n- `id: string`\n\n- `publicKey: string`\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }`\n\n  - `nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }`\n  - `sessionId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.deviceRegistrations.challenges.configureBiometrics('P', { publicKey: 'P' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.deviceRegistrations.challenges.configureBiometrics',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.deviceRegistrations.challenges.configureBiometrics('P', {\n  publicKey: 'P',\n});\n\nconsole.log(response.nextStep);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/device-registrations/$ID/challenges:configure-biometrics \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "publicKey": "P"\n        }\'',
      },
      kotlin: {
        method: 'deviceRegistrations().challenges().configureBiometrics',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.deviceregistrations.challenges.ChallengeConfigureBiometricsParams\nimport com.plumery.api.models.deviceregistrations.challenges.ChallengeConfigureBiometricsResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: ChallengeConfigureBiometricsParams = ChallengeConfigureBiometricsParams.builder()\n        .id("P")\n        .publicKey("P")\n        .build()\n    val response: ChallengeConfigureBiometricsResponse = client.deviceRegistrations().challenges().configureBiometrics(params)\n}',
      },
      java: {
        method: 'deviceRegistrations().challenges().configureBiometrics',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.deviceregistrations.challenges.ChallengeConfigureBiometricsParams;\nimport com.plumery.api.models.deviceregistrations.challenges.ChallengeConfigureBiometricsResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        ChallengeConfigureBiometricsParams params = ChallengeConfigureBiometricsParams.builder()\n            .id("P")\n            .publicKey("P")\n            .build();\n        ChallengeConfigureBiometricsResponse response = client.deviceRegistrations().challenges().configureBiometrics(params);\n    }\n}',
      },
    },
  },
  {
    name: 'configurePasscode',
    endpoint: '/api/v1/device-registrations/{id}/challenges:configure-passcode',
    httpMethod: 'post',
    summary: 'Pre-auth Configure Passcode',
    description:
      'Initiates passcode configuration for a pre-auth device (not yet linked to a user). Complete it by signing on the `challenges:sign` endpoint.',
    stainlessPath: '(resource) device-registrations.challenges > (method) configurePasscode',
    qualified: 'client.deviceRegistrations.challenges.configurePasscode',
    params: ['id: string;', 'publicKey: string;', 'plmr-user-action?: boolean;'],
    response:
      "{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }",
    markdown:
      "## configurePasscode\n\n`client.deviceRegistrations.challenges.configurePasscode(id: string, publicKey: string, plmr-user-action?: boolean): { nextStep: object; sessionId?: string; }`\n\n**post** `/api/v1/device-registrations/{id}/challenges:configure-passcode`\n\nInitiates passcode configuration for a pre-auth device (not yet linked to a user). Complete it by signing on the `challenges:sign` endpoint.\n\n### Parameters\n\n- `id: string`\n\n- `publicKey: string`\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }; sessionId?: string; }`\n\n  - `nextStep: { challenge: string; info?: { status: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; } | { verificationCode: string; } | { dataToSign: string; } | { availableSigningMethods: 'BIOMETRICS' | 'PASSCODE'[]; } | { code?: string; }; }`\n  - `sessionId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.deviceRegistrations.challenges.configurePasscode('P', { publicKey: 'P' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.deviceRegistrations.challenges.configurePasscode',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.deviceRegistrations.challenges.configurePasscode('P', {\n  publicKey: 'P',\n});\n\nconsole.log(response.nextStep);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/device-registrations/$ID/challenges:configure-passcode \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "publicKey": "P"\n        }\'',
      },
      kotlin: {
        method: 'deviceRegistrations().challenges().configurePasscode',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.deviceregistrations.challenges.ChallengeConfigurePasscodeParams\nimport com.plumery.api.models.deviceregistrations.challenges.ChallengeConfigurePasscodeResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: ChallengeConfigurePasscodeParams = ChallengeConfigurePasscodeParams.builder()\n        .id("P")\n        .publicKey("P")\n        .build()\n    val response: ChallengeConfigurePasscodeResponse = client.deviceRegistrations().challenges().configurePasscode(params)\n}',
      },
      java: {
        method: 'deviceRegistrations().challenges().configurePasscode',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.deviceregistrations.challenges.ChallengeConfigurePasscodeParams;\nimport com.plumery.api.models.deviceregistrations.challenges.ChallengeConfigurePasscodeResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        ChallengeConfigurePasscodeParams params = ChallengeConfigurePasscodeParams.builder()\n            .id("P")\n            .publicKey("P")\n            .build();\n        ChallengeConfigurePasscodeResponse response = client.deviceRegistrations().challenges().configurePasscode(params);\n    }\n}',
      },
    },
  },
  {
    name: 'create',
    endpoint: '/api/v1/originations',
    httpMethod: 'post',
    summary: 'Initiate a new origination',
    description: 'Creates a new origination process of a given type.',
    stainlessPath: '(resource) originations > (method) create',
    qualified: 'client.originations.create',
    params: ['identityVerificationToken: string;', 'type: string;'],
    response: '{ id: string; }',
    markdown:
      "## create\n\n`client.originations.create(identityVerificationToken: string, type: string): { id: string; }`\n\n**post** `/api/v1/originations`\n\nCreates a new origination process of a given type.\n\n### Parameters\n\n- `identityVerificationToken: string`\n  A cryptographic token received after doing user identity verification. It is a cryptographic token based on the provided identifications fields.\n\n- `type: string`\n  The origination type.\n\n### Returns\n\n- `{ id: string; }`\n\n  - `id: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst origination = await client.originations.create({ identityVerificationToken: 'identityVerificationToken', type: 'type' });\n\nconsole.log(origination);\n```",
    perLanguage: {
      typescript: {
        method: 'client.originations.create',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst origination = await client.originations.create({\n  identityVerificationToken: 'identityVerificationToken',\n  type: 'type',\n});\n\nconsole.log(origination.id);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/originations \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "identityVerificationToken": "identityVerificationToken",\n          "type": "type"\n        }\'',
      },
      kotlin: {
        method: 'originations().create',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.originations.OriginationCreateParams\nimport com.plumery.api.models.originations.OriginationCreateResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: OriginationCreateParams = OriginationCreateParams.builder()\n        .identityVerificationToken("identityVerificationToken")\n        .type("type")\n        .build()\n    val origination: OriginationCreateResponse = client.originations().create(params)\n}',
      },
      java: {
        method: 'originations().create',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.originations.OriginationCreateParams;\nimport com.plumery.api.models.originations.OriginationCreateResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        OriginationCreateParams params = OriginationCreateParams.builder()\n            .identityVerificationToken("identityVerificationToken")\n            .type("type")\n            .build();\n        OriginationCreateResponse origination = client.originations().create(params);\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/originations/{originationId}',
    httpMethod: 'get',
    summary: 'Get origination status',
    description: 'Returns the current state and submitted steps of an origination.',
    stainlessPath: '(resource) originations > (method) retrieve',
    qualified: 'client.originations.retrieve',
    params: ['originationId: string;'],
    response:
      '{ id: string; steps: { payload: string; step: string; }[]; type: string; isCompleted?: boolean; }',
    markdown:
      "## retrieve\n\n`client.originations.retrieve(originationId: string): { id: string; steps: object[]; type: string; isCompleted?: boolean; }`\n\n**get** `/api/v1/originations/{originationId}`\n\nReturns the current state and submitted steps of an origination.\n\n### Parameters\n\n- `originationId: string`\n\n### Returns\n\n- `{ id: string; steps: { payload: string; step: string; }[]; type: string; isCompleted?: boolean; }`\n\n  - `id: string`\n  - `steps: { payload: string; step: string; }[]`\n  - `type: string`\n  - `isCompleted?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst origination = await client.originations.retrieve('originationId');\n\nconsole.log(origination);\n```",
    perLanguage: {
      typescript: {
        method: 'client.originations.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst origination = await client.originations.retrieve('originationId');\n\nconsole.log(origination.id);",
      },
      http: {
        example: 'curl https://api.plumery.com/api/v1/originations/$ORIGINATION_ID',
      },
      kotlin: {
        method: 'originations().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.originations.OriginationRetrieveParams\nimport com.plumery.api.models.originations.OriginationRetrieveResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val origination: OriginationRetrieveResponse = client.originations().retrieve("originationId")\n}',
      },
      java: {
        method: 'originations().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.originations.OriginationRetrieveParams;\nimport com.plumery.api.models.originations.OriginationRetrieveResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        OriginationRetrieveResponse origination = client.originations().retrieve("originationId");\n    }\n}',
      },
    },
  },
  {
    name: 'delete',
    endpoint: '/api/v1/originations/{originationId}',
    httpMethod: 'delete',
    summary: 'Delete an origination',
    description: 'Deletes an origination by its identifier.',
    stainlessPath: '(resource) originations > (method) delete',
    qualified: 'client.originations.delete',
    params: ['originationId: string;'],
    markdown:
      "## delete\n\n`client.originations.delete(originationId: string): void`\n\n**delete** `/api/v1/originations/{originationId}`\n\nDeletes an origination by its identifier.\n\n### Parameters\n\n- `originationId: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.originations.delete('originationId')\n```",
    perLanguage: {
      typescript: {
        method: 'client.originations.delete',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.originations.delete('originationId');",
      },
      http: {
        example: 'curl https://api.plumery.com/api/v1/originations/$ORIGINATION_ID \\\n    -X DELETE',
      },
      kotlin: {
        method: 'originations().delete',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.originations.OriginationDeleteParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    client.originations().delete("originationId")\n}',
      },
      java: {
        method: 'originations().delete',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.originations.OriginationDeleteParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        client.originations().delete("originationId");\n    }\n}',
      },
    },
  },
  {
    name: 'create',
    endpoint: '/api/v1/originations/{originationId}/steps/{step}',
    httpMethod: 'post',
    summary: 'Submit a step payload for an origination',
    description: 'Submits data for a specific origination step.',
    stainlessPath: '(resource) originations.steps > (method) create',
    qualified: 'client.originations.steps.create',
    params: [
      'originationId: string;',
      'step: string;',
      'isFinalStep?: boolean;',
      'payload?: string;',
      'verifiedPayload?: string;',
    ],
    markdown:
      "## create\n\n`client.originations.steps.create(originationId: string, step: string, isFinalStep?: boolean, payload?: string, verifiedPayload?: string): void`\n\n**post** `/api/v1/originations/{originationId}/steps/{step}`\n\nSubmits data for a specific origination step.\n\n### Parameters\n\n- `originationId: string`\n\n- `step: string`\n\n- `isFinalStep?: boolean`\n  Indicates if this is the final step.\n\n- `payload?: string`\n  The `payload` and `verifiedPayload` fields are mutually exclusive; only one field may be populated.\n\n- `verifiedPayload?: string`\n  The `payload` and `verifiedPayload` fields are mutually exclusive; only one field may be populated. If the verification fails, the step will be rejected with a 400 Bad Request error\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.originations.steps.create('step', { originationId: 'originationId' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.originations.steps.create',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.originations.steps.create('step', { originationId: 'originationId' });",
      },
      http: {
        example:
          "curl https://api.plumery.com/api/v1/originations/$ORIGINATION_ID/steps/$STEP \\\n    -H 'Content-Type: application/json' \\\n    -d '{}'",
      },
      kotlin: {
        method: 'originations().steps().create',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.originations.steps.StepCreateParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: StepCreateParams = StepCreateParams.builder()\n        .originationId("originationId")\n        .step("step")\n        .build()\n    client.originations().steps().create(params)\n}',
      },
      java: {
        method: 'originations().steps().create',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.originations.steps.StepCreateParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        StepCreateParams params = StepCreateParams.builder()\n            .originationId("originationId")\n            .step("step")\n            .build();\n        client.originations().steps().create(params);\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/properties/{propertyName}',
    httpMethod: 'get',
    summary: 'Get property value',
    description: 'Retrieve the value of a property based on its name.',
    stainlessPath: '(resource) properties > (method) retrieve',
    qualified: 'client.properties.retrieve',
    params: ['propertyName: string;', 'X-Request-ID?: string;'],
    response: 'string',
    markdown:
      "## retrieve\n\n`client.properties.retrieve(propertyName: string, X-Request-ID?: string): string`\n\n**get** `/api/v1/properties/{propertyName}`\n\nRetrieve the value of a property based on its name.\n\n### Parameters\n\n- `propertyName: string`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst property = await client.properties.retrieve('36a22460-ebc8-4ffe-a213-1683c5a420c5');\n\nconsole.log(property);\n```",
    perLanguage: {
      typescript: {
        method: 'client.properties.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst property = await client.properties.retrieve('36a22460-ebc8-4ffe-a213-1683c5a420c5');\n\nconsole.log(property);",
      },
      http: {
        example: 'curl https://api.plumery.com/api/v1/properties/$PROPERTY_NAME',
      },
      kotlin: {
        method: 'properties().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.properties.PropertyRetrieveParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val property: String = client.properties().retrieve("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n}',
      },
      java: {
        method: 'properties().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.properties.PropertyRetrieveParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        String property = client.properties().retrieve("36a22460-ebc8-4ffe-a213-1683c5a420c5");\n    }\n}',
      },
    },
  },
  {
    name: 'create',
    endpoint: '/api/v1/properties/{propertyName}',
    httpMethod: 'post',
    summary: 'Update property value',
    description: 'Update a property based on its name.',
    stainlessPath: '(resource) properties > (method) create',
    qualified: 'client.properties.create',
    params: ['propertyName: string;', 'body?: string;', 'X-Request-ID?: string;'],
    markdown:
      "## create\n\n`client.properties.create(propertyName: string, body?: string, X-Request-ID?: string): void`\n\n**post** `/api/v1/properties/{propertyName}`\n\nUpdate a property based on its name.\n\n### Parameters\n\n- `propertyName: string`\n\n- `body?: string`\n  The value of property in string/text format. <br/>\nAny possible type represented in string, it can cover integers, booleans and complex types as JSON strings.\n\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.properties.create('36a22460-ebc8-4ffe-a213-1683c5a420c5')\n```",
    perLanguage: {
      typescript: {
        method: 'client.properties.create',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.properties.create('36a22460-ebc8-4ffe-a213-1683c5a420c5');",
      },
      http: {
        example: 'curl https://api.plumery.com/api/v1/properties/$PROPERTY_NAME \\\n    -X POST',
      },
      kotlin: {
        method: 'properties().create',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.properties.PropertyCreateParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    client.properties().create("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n}',
      },
      java: {
        method: 'properties().create',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.properties.PropertyCreateParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        client.properties().create("36a22460-ebc8-4ffe-a213-1683c5a420c5");\n    }\n}',
      },
    },
  },
  {
    name: 'create',
    endpoint: '/api/v1/identity-verifications',
    httpMethod: 'post',
    summary: 'Initiate identity verification',
    description: 'Initiate a new identity verification for the user.',
    stainlessPath: '(resource) identity-verifications > (method) create',
    qualified: 'client.identityVerifications.create',
    params: [
      "body: { method: 'MOBILE_ID'; personalId: string; phoneNumber: string; } | { country: string; method: 'SMART_ID'; personalId: string; } | { attributes: object; method: string; };",
      'accept-language?: string;',
      'X-Request-ID?: string;',
    ],
    response: '{ id: string; code: string; }',
    perLanguage: {
      typescript: {
        method: 'client.identityVerifications.create',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst identityVerification = await client.identityVerifications.create({\n  method: 'MOBILE_ID',\n  personalId: '49001010001',\n  phoneNumber: '+37069584868',\n});\n\nconsole.log(identityVerification.id);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/identity-verifications \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "method": "MOBILE_ID",\n          "personalId": "49001010001",\n          "phoneNumber": "+37069584868"\n        }\'',
      },
      kotlin: {
        method: 'identityVerifications().create',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.identityverifications.IdentityVerificationCreateParams\nimport com.plumery.api.models.identityverifications.IdentityVerificationCreateResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: IdentityVerificationCreateParams.Body.MobileId = IdentityVerificationCreateParams.Body.MobileId.builder()\n        .personalId("49001010001")\n        .phoneNumber("+37069584868")\n        .build()\n    val identityVerification: IdentityVerificationCreateResponse = client.identityVerifications().create(params)\n}',
      },
      java: {
        method: 'identityVerifications().create',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.identityverifications.IdentityVerificationCreateParams;\nimport com.plumery.api.models.identityverifications.IdentityVerificationCreateResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        IdentityVerificationCreateParams.Body.MobileId params = IdentityVerificationCreateParams.Body.MobileId.builder()\n            .personalId("49001010001")\n            .phoneNumber("+37069584868")\n            .build();\n        IdentityVerificationCreateResponse identityVerification = client.identityVerifications().create(params);\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/identity-verifications/{id}',
    httpMethod: 'get',
    summary: 'Get identity verification',
    description: 'Get the identity verification result.',
    stainlessPath: '(resource) identity-verifications > (method) retrieve',
    qualified: 'client.identityVerifications.retrieve',
    params: ['id: string;'],
    response: '{ status: string; additionalAttributes?: object; identityVerificationToken?: string; }',
    markdown:
      "## retrieve\n\n`client.identityVerifications.retrieve(id: string): { status: string; additionalAttributes?: object; identityVerificationToken?: string; }`\n\n**get** `/api/v1/identity-verifications/{id}`\n\nGet the identity verification result.\n\n### Parameters\n\n- `id: string`\n\n### Returns\n\n- `{ status: string; additionalAttributes?: object; identityVerificationToken?: string; }`\n\n  - `status: string`\n  - `additionalAttributes?: object`\n  - `identityVerificationToken?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst identityVerification = await client.identityVerifications.retrieve('id');\n\nconsole.log(identityVerification);\n```",
    perLanguage: {
      typescript: {
        method: 'client.identityVerifications.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst identityVerification = await client.identityVerifications.retrieve('id');\n\nconsole.log(identityVerification.identityVerificationToken);",
      },
      http: {
        example: 'curl https://api.plumery.com/api/v1/identity-verifications/$ID',
      },
      kotlin: {
        method: 'identityVerifications().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.identityverifications.IdentityVerificationRetrieveParams\nimport com.plumery.api.models.identityverifications.IdentityVerificationRetrieveResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val identityVerification: IdentityVerificationRetrieveResponse = client.identityVerifications().retrieve("id")\n}',
      },
      java: {
        method: 'identityVerifications().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.identityverifications.IdentityVerificationRetrieveParams;\nimport com.plumery.api.models.identityverifications.IdentityVerificationRetrieveResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        IdentityVerificationRetrieveResponse identityVerification = client.identityVerifications().retrieve("id");\n    }\n}',
      },
    },
  },
  {
    name: 'initiateV1',
    endpoint: '/api/v1/verifications/totp-sms:initiate',
    httpMethod: 'post',
    summary: 'Initiate SMS Verification',
    description: 'Initiate a TOTP SMS verification challenge for the provided phone number.',
    stainlessPath: '(resource) verifications.totp-sms > (method) initiateV1',
    qualified: 'client.verifications.totpSMS.initiateV1',
    params: ['phoneNumber: string;', 'accept-language?: string;', 'X-Request-ID?: string;'],
    response:
      "{ challengeId: string; endpoint: '/api/v1/verifications/totp-sms/{challengeId}:verify'; method: 'TOTP-SMS'; }",
    markdown:
      "## initiateV1\n\n`client.verifications.totpSMS.initiateV1(phoneNumber: string, accept-language?: string, X-Request-ID?: string): { challengeId: string; endpoint: '/api/v1/verifications/totp-sms/{challengeId}:verify'; method: 'TOTP-SMS'; }`\n\n**post** `/api/v1/verifications/totp-sms:initiate`\n\nInitiate a TOTP SMS verification challenge for the provided phone number.\n\n### Parameters\n\n- `phoneNumber: string`\n\n- `accept-language?: string`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ challengeId: string; endpoint: '/api/v1/verifications/totp-sms/{challengeId}:verify'; method: 'TOTP-SMS'; }`\n\n  - `challengeId: string`\n  - `endpoint: '/api/v1/verifications/totp-sms/{challengeId}:verify'`\n  - `method: 'TOTP-SMS'`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.verifications.totpSMS.initiateV1({ phoneNumber: '+37069584868' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.verifications.totpSMS.initiateV1',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.verifications.totpSMS.initiateV1({ phoneNumber: '+37069584868' });\n\nconsole.log(response.challengeId);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/verifications/totp-sms:initiate \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "phoneNumber": "+37069584868"\n        }\'',
      },
      kotlin: {
        method: 'verifications().totpSms().initiateV1',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.verifications.totpsms.TotpSmsInitiateV1Params\nimport com.plumery.api.models.verifications.totpsms.TotpSmsInitiateV1Response\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: TotpSmsInitiateV1Params = TotpSmsInitiateV1Params.builder()\n        .phoneNumber("+37069584868")\n        .build()\n    val response: TotpSmsInitiateV1Response = client.verifications().totpSms().initiateV1(params)\n}',
      },
      java: {
        method: 'verifications().totpSms().initiateV1',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.verifications.totpsms.TotpSmsInitiateV1Params;\nimport com.plumery.api.models.verifications.totpsms.TotpSmsInitiateV1Response;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        TotpSmsInitiateV1Params params = TotpSmsInitiateV1Params.builder()\n            .phoneNumber("+37069584868")\n            .build();\n        TotpSmsInitiateV1Response response = client.verifications().totpSms().initiateV1(params);\n    }\n}',
      },
    },
  },
  {
    name: 'initiateV2',
    endpoint: '/api/v2/verifications/totp-sms:initiate',
    httpMethod: 'post',
    summary: 'Initiate SMS Verification (v2)',
    description: 'Initiate a TOTP SMS verification challenge for the provided phone number.',
    stainlessPath: '(resource) verifications.totp-sms > (method) initiateV2',
    qualified: 'client.verifications.totpSMS.initiateV2',
    params: ['phoneNumber: string;', 'accept-language?: string;', 'X-Request-ID?: string;'],
    response:
      "{ challengeId: string; endpoint: '/api/v1/verifications/totp-sms/{challengeId}:verify'; method: 'TOTP-SMS'; }",
    markdown:
      "## initiateV2\n\n`client.verifications.totpSMS.initiateV2(phoneNumber: string, accept-language?: string, X-Request-ID?: string): { challengeId: string; endpoint: '/api/v1/verifications/totp-sms/{challengeId}:verify'; method: 'TOTP-SMS'; }`\n\n**post** `/api/v2/verifications/totp-sms:initiate`\n\nInitiate a TOTP SMS verification challenge for the provided phone number.\n\n### Parameters\n\n- `phoneNumber: string`\n\n- `accept-language?: string`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ challengeId: string; endpoint: '/api/v1/verifications/totp-sms/{challengeId}:verify'; method: 'TOTP-SMS'; }`\n\n  - `challengeId: string`\n  - `endpoint: '/api/v1/verifications/totp-sms/{challengeId}:verify'`\n  - `method: 'TOTP-SMS'`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.verifications.totpSMS.initiateV2({ phoneNumber: '+37069584868' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.verifications.totpSMS.initiateV2',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.verifications.totpSMS.initiateV2({ phoneNumber: '+37069584868' });\n\nconsole.log(response.challengeId);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v2/verifications/totp-sms:initiate \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "phoneNumber": "+37069584868"\n        }\'',
      },
      kotlin: {
        method: 'verifications().totpSms().initiateV2',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.verifications.totpsms.TotpSmsInitiateV2Params\nimport com.plumery.api.models.verifications.totpsms.TotpSmsInitiateV2Response\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: TotpSmsInitiateV2Params = TotpSmsInitiateV2Params.builder()\n        .phoneNumber("+37069584868")\n        .build()\n    val response: TotpSmsInitiateV2Response = client.verifications().totpSms().initiateV2(params)\n}',
      },
      java: {
        method: 'verifications().totpSms().initiateV2',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.verifications.totpsms.TotpSmsInitiateV2Params;\nimport com.plumery.api.models.verifications.totpsms.TotpSmsInitiateV2Response;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        TotpSmsInitiateV2Params params = TotpSmsInitiateV2Params.builder()\n            .phoneNumber("+37069584868")\n            .build();\n        TotpSmsInitiateV2Response response = client.verifications().totpSms().initiateV2(params);\n    }\n}',
      },
    },
  },
  {
    name: 'initiate',
    endpoint: '/api/v2/verifications/totp-sms:initiate',
    httpMethod: 'post',
    summary: 'Initiate SMS Verification (v2)',
    description: 'Initiate a TOTP SMS verification challenge for the provided phone number.',
    stainlessPath: '(resource) verifications.totp-sms > (method) initiate',
    qualified: 'client.verifications.totpSMS.initiate',
    perLanguage: {
      typescript: {
        method: 'client.verifications.totpSMS.initiate',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.verifications.totpSMS.initiate({ phoneNumber: '+37069584868' });\n\nconsole.log(response.challengeId);",
      },
      kotlin: {
        method: 'verifications().totpSms().initiate',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.verifications.totpsms.TotpSmsInitiateParams\nimport com.plumery.api.models.verifications.totpsms.TotpSmsInitiateResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: TotpSmsInitiateParams = TotpSmsInitiateParams.builder()\n        .phoneNumber("+37069584868")\n        .build()\n    val response: TotpSmsInitiateResponse = client.verifications().totpSms().initiate(params)\n}',
      },
      java: {
        method: 'verifications().totpSms().initiate',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.verifications.totpsms.TotpSmsInitiateParams;\nimport com.plumery.api.models.verifications.totpsms.TotpSmsInitiateResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        TotpSmsInitiateParams params = TotpSmsInitiateParams.builder()\n            .phoneNumber("+37069584868")\n            .build();\n        TotpSmsInitiateResponse response = client.verifications().totpSms().initiate(params);\n    }\n}',
      },
    },
  },
  {
    name: 'verifyV1',
    endpoint: '/api/v1/verifications/totp-sms/{challengeId}:verify',
    httpMethod: 'post',
    summary: 'Verify SMS OTP',
    description: 'Verify SMS TOTP code for an existing challenge.',
    stainlessPath: '(resource) verifications.totp-sms > (method) verifyV1',
    qualified: 'client.verifications.totpSMS.verifyV1',
    params: ['challengeId: string;', 'otp: string;', 'X-Request-ID?: string;'],
    response: '{ token: string; }',
    markdown:
      "## verifyV1\n\n`client.verifications.totpSMS.verifyV1(challengeId: string, otp: string, X-Request-ID?: string): { token: string; }`\n\n**post** `/api/v1/verifications/totp-sms/{challengeId}:verify`\n\nVerify SMS TOTP code for an existing challenge.\n\n### Parameters\n\n- `challengeId: string`\n\n- `otp: string`\n  The One-Time Password (OTP) sent to the user\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ token: string; }`\n\n  - `token: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.verifications.totpSMS.verifyV1('36a22460-ebc8-4ffe-a213-1683c5a420c5', { otp: '123456' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.verifications.totpSMS.verifyV1',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.verifications.totpSMS.verifyV1(\n  '36a22460-ebc8-4ffe-a213-1683c5a420c5',\n  { otp: '123456' },\n);\n\nconsole.log(response.token);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/verifications/totp-sms/$CHALLENGE_ID:verify \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "otp": "123456"\n        }\'',
      },
      kotlin: {
        method: 'verifications().totpSms().verifyV1',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.verifications.totpsms.TotpSmsVerifyV1Params\nimport com.plumery.api.models.verifications.totpsms.TotpSmsVerifyV1Response\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: TotpSmsVerifyV1Params = TotpSmsVerifyV1Params.builder()\n        .challengeId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .otp("123456")\n        .build()\n    val response: TotpSmsVerifyV1Response = client.verifications().totpSms().verifyV1(params)\n}',
      },
      java: {
        method: 'verifications().totpSms().verifyV1',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.verifications.totpsms.TotpSmsVerifyV1Params;\nimport com.plumery.api.models.verifications.totpsms.TotpSmsVerifyV1Response;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        TotpSmsVerifyV1Params params = TotpSmsVerifyV1Params.builder()\n            .challengeId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .otp("123456")\n            .build();\n        TotpSmsVerifyV1Response response = client.verifications().totpSms().verifyV1(params);\n    }\n}',
      },
    },
  },
  {
    name: 'verifyV2',
    endpoint: '/api/v2/verifications/totp-sms/{challengeId}:verify',
    httpMethod: 'post',
    summary: 'Verify SMS OTP (v2)',
    description: 'Verify SMS TOTP code for an existing challenge.',
    stainlessPath: '(resource) verifications.totp-sms > (method) verifyV2',
    qualified: 'client.verifications.totpSMS.verifyV2',
    params: ['challengeId: string;', 'otp: string;', 'X-Request-ID?: string;'],
    response: '{ token: string; }',
    markdown:
      "## verifyV2\n\n`client.verifications.totpSMS.verifyV2(challengeId: string, otp: string, X-Request-ID?: string): { token: string; }`\n\n**post** `/api/v2/verifications/totp-sms/{challengeId}:verify`\n\nVerify SMS TOTP code for an existing challenge.\n\n### Parameters\n\n- `challengeId: string`\n\n- `otp: string`\n  The One-Time Password (OTP) sent to the user\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ token: string; }`\n\n  - `token: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.verifications.totpSMS.verifyV2('36a22460-ebc8-4ffe-a213-1683c5a420c5', { otp: '123456' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.verifications.totpSMS.verifyV2',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.verifications.totpSMS.verifyV2(\n  '36a22460-ebc8-4ffe-a213-1683c5a420c5',\n  { otp: '123456' },\n);\n\nconsole.log(response.token);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v2/verifications/totp-sms/$CHALLENGE_ID:verify \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "otp": "123456"\n        }\'',
      },
      kotlin: {
        method: 'verifications().totpSms().verifyV2',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.verifications.totpsms.TotpSmsVerifyV2Params\nimport com.plumery.api.models.verifications.totpsms.TotpSmsVerifyV2Response\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: TotpSmsVerifyV2Params = TotpSmsVerifyV2Params.builder()\n        .challengeId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .otp("123456")\n        .build()\n    val response: TotpSmsVerifyV2Response = client.verifications().totpSms().verifyV2(params)\n}',
      },
      java: {
        method: 'verifications().totpSms().verifyV2',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.verifications.totpsms.TotpSmsVerifyV2Params;\nimport com.plumery.api.models.verifications.totpsms.TotpSmsVerifyV2Response;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        TotpSmsVerifyV2Params params = TotpSmsVerifyV2Params.builder()\n            .challengeId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .otp("123456")\n            .build();\n        TotpSmsVerifyV2Response response = client.verifications().totpSms().verifyV2(params);\n    }\n}',
      },
    },
  },
  {
    name: 'verify',
    endpoint: '/api/v2/verifications/totp-sms/{challengeId}:verify',
    httpMethod: 'post',
    summary: 'Verify SMS OTP (v2)',
    description: 'Verify SMS TOTP code for an existing challenge.',
    stainlessPath: '(resource) verifications.totp-sms > (method) verify',
    qualified: 'client.verifications.totpSMS.verify',
    perLanguage: {
      typescript: {
        method: 'client.verifications.totpSMS.verify',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.verifications.totpSMS.verify('36a22460-ebc8-4ffe-a213-1683c5a420c5', {\n  otp: '123456',\n});\n\nconsole.log(response.token);",
      },
      kotlin: {
        method: 'verifications().totpSms().verify',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.verifications.totpsms.TotpSmsVerifyParams\nimport com.plumery.api.models.verifications.totpsms.TotpSmsVerifyResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: TotpSmsVerifyParams = TotpSmsVerifyParams.builder()\n        .challengeId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .otp("123456")\n        .build()\n    val response: TotpSmsVerifyResponse = client.verifications().totpSms().verify(params)\n}',
      },
      java: {
        method: 'verifications().totpSms().verify',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.verifications.totpsms.TotpSmsVerifyParams;\nimport com.plumery.api.models.verifications.totpsms.TotpSmsVerifyResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        TotpSmsVerifyParams params = TotpSmsVerifyParams.builder()\n            .challengeId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .otp("123456")\n            .build();\n        TotpSmsVerifyResponse response = client.verifications().totpSms().verify(params);\n    }\n}',
      },
    },
  },
  {
    name: 'initiateV1',
    endpoint: '/api/v1/verifications/totp-email:initiate',
    httpMethod: 'post',
    summary: 'Initiate Email Verification',
    description: 'Initiate a TOTP email verification challenge for the provided email address.',
    stainlessPath: '(resource) verifications.totp-email > (method) initiateV1',
    qualified: 'client.verifications.totpEmail.initiateV1',
    params: ['emailAddress: string;', 'accept-language?: string;', 'X-Request-ID?: string;'],
    response:
      "{ challengeId: string; endpoint: '/api/v1/verifications/totp-email/{challengeId}:verify'; method: 'TOTP-EMAIL'; }",
    markdown:
      "## initiateV1\n\n`client.verifications.totpEmail.initiateV1(emailAddress: string, accept-language?: string, X-Request-ID?: string): { challengeId: string; endpoint: '/api/v1/verifications/totp-email/{challengeId}:verify'; method: 'TOTP-EMAIL'; }`\n\n**post** `/api/v1/verifications/totp-email:initiate`\n\nInitiate a TOTP email verification challenge for the provided email address.\n\n### Parameters\n\n- `emailAddress: string`\n  A valid email address\n\n- `accept-language?: string`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ challengeId: string; endpoint: '/api/v1/verifications/totp-email/{challengeId}:verify'; method: 'TOTP-EMAIL'; }`\n\n  - `challengeId: string`\n  - `endpoint: '/api/v1/verifications/totp-email/{challengeId}:verify'`\n  - `method: 'TOTP-EMAIL'`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.verifications.totpEmail.initiateV1({ emailAddress: 'user@example.com' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.verifications.totpEmail.initiateV1',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.verifications.totpEmail.initiateV1({\n  emailAddress: 'user@example.com',\n});\n\nconsole.log(response.challengeId);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/verifications/totp-email:initiate \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "emailAddress": "user@example.com"\n        }\'',
      },
      kotlin: {
        method: 'verifications().totpEmail().initiateV1',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.verifications.totpemail.TotpEmailInitiateV1Params\nimport com.plumery.api.models.verifications.totpemail.TotpEmailInitiateV1Response\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: TotpEmailInitiateV1Params = TotpEmailInitiateV1Params.builder()\n        .emailAddress("user@example.com")\n        .build()\n    val response: TotpEmailInitiateV1Response = client.verifications().totpEmail().initiateV1(params)\n}',
      },
      java: {
        method: 'verifications().totpEmail().initiateV1',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.verifications.totpemail.TotpEmailInitiateV1Params;\nimport com.plumery.api.models.verifications.totpemail.TotpEmailInitiateV1Response;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        TotpEmailInitiateV1Params params = TotpEmailInitiateV1Params.builder()\n            .emailAddress("user@example.com")\n            .build();\n        TotpEmailInitiateV1Response response = client.verifications().totpEmail().initiateV1(params);\n    }\n}',
      },
    },
  },
  {
    name: 'initiateV2',
    endpoint: '/api/v2/verifications/totp-email:initiate',
    httpMethod: 'post',
    summary: 'Initiate Email Verification (v2)',
    description: 'Initiate a TOTP email verification challenge for the provided email address.',
    stainlessPath: '(resource) verifications.totp-email > (method) initiateV2',
    qualified: 'client.verifications.totpEmail.initiateV2',
    params: ['emailAddress: string;', 'accept-language?: string;', 'X-Request-ID?: string;'],
    response:
      "{ challengeId: string; endpoint: '/api/v1/verifications/totp-email/{challengeId}:verify'; method: 'TOTP-EMAIL'; }",
    markdown:
      "## initiateV2\n\n`client.verifications.totpEmail.initiateV2(emailAddress: string, accept-language?: string, X-Request-ID?: string): { challengeId: string; endpoint: '/api/v1/verifications/totp-email/{challengeId}:verify'; method: 'TOTP-EMAIL'; }`\n\n**post** `/api/v2/verifications/totp-email:initiate`\n\nInitiate a TOTP email verification challenge for the provided email address.\n\n### Parameters\n\n- `emailAddress: string`\n  A valid email address\n\n- `accept-language?: string`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ challengeId: string; endpoint: '/api/v1/verifications/totp-email/{challengeId}:verify'; method: 'TOTP-EMAIL'; }`\n\n  - `challengeId: string`\n  - `endpoint: '/api/v1/verifications/totp-email/{challengeId}:verify'`\n  - `method: 'TOTP-EMAIL'`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.verifications.totpEmail.initiateV2({ emailAddress: 'user@example.com' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.verifications.totpEmail.initiateV2',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.verifications.totpEmail.initiateV2({\n  emailAddress: 'user@example.com',\n});\n\nconsole.log(response.challengeId);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v2/verifications/totp-email:initiate \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "emailAddress": "user@example.com"\n        }\'',
      },
      kotlin: {
        method: 'verifications().totpEmail().initiateV2',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.verifications.totpemail.TotpEmailInitiateV2Params\nimport com.plumery.api.models.verifications.totpemail.TotpEmailInitiateV2Response\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: TotpEmailInitiateV2Params = TotpEmailInitiateV2Params.builder()\n        .emailAddress("user@example.com")\n        .build()\n    val response: TotpEmailInitiateV2Response = client.verifications().totpEmail().initiateV2(params)\n}',
      },
      java: {
        method: 'verifications().totpEmail().initiateV2',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.verifications.totpemail.TotpEmailInitiateV2Params;\nimport com.plumery.api.models.verifications.totpemail.TotpEmailInitiateV2Response;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        TotpEmailInitiateV2Params params = TotpEmailInitiateV2Params.builder()\n            .emailAddress("user@example.com")\n            .build();\n        TotpEmailInitiateV2Response response = client.verifications().totpEmail().initiateV2(params);\n    }\n}',
      },
    },
  },
  {
    name: 'initiate',
    endpoint: '/api/v2/verifications/totp-email:initiate',
    httpMethod: 'post',
    summary: 'Initiate Email Verification (v2)',
    description: 'Initiate a TOTP email verification challenge for the provided email address.',
    stainlessPath: '(resource) verifications.totp-email > (method) initiate',
    qualified: 'client.verifications.totpEmail.initiate',
    perLanguage: {
      typescript: {
        method: 'client.verifications.totpEmail.initiate',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.verifications.totpEmail.initiate({\n  emailAddress: 'user@example.com',\n});\n\nconsole.log(response.challengeId);",
      },
      kotlin: {
        method: 'verifications().totpEmail().initiate',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.verifications.totpemail.TotpEmailInitiateParams\nimport com.plumery.api.models.verifications.totpemail.TotpEmailInitiateResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: TotpEmailInitiateParams = TotpEmailInitiateParams.builder()\n        .emailAddress("user@example.com")\n        .build()\n    val response: TotpEmailInitiateResponse = client.verifications().totpEmail().initiate(params)\n}',
      },
      java: {
        method: 'verifications().totpEmail().initiate',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.verifications.totpemail.TotpEmailInitiateParams;\nimport com.plumery.api.models.verifications.totpemail.TotpEmailInitiateResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        TotpEmailInitiateParams params = TotpEmailInitiateParams.builder()\n            .emailAddress("user@example.com")\n            .build();\n        TotpEmailInitiateResponse response = client.verifications().totpEmail().initiate(params);\n    }\n}',
      },
    },
  },
  {
    name: 'verifyV1',
    endpoint: '/api/v1/verifications/totp-email/{challengeId}:verify',
    httpMethod: 'post',
    summary: 'Verify Email OTP',
    description: 'Verify email TOTP code for an existing challenge.',
    stainlessPath: '(resource) verifications.totp-email > (method) verifyV1',
    qualified: 'client.verifications.totpEmail.verifyV1',
    params: ['challengeId: string;', 'otp: string;', 'X-Request-ID?: string;'],
    response: '{ token: string; }',
    markdown:
      "## verifyV1\n\n`client.verifications.totpEmail.verifyV1(challengeId: string, otp: string, X-Request-ID?: string): { token: string; }`\n\n**post** `/api/v1/verifications/totp-email/{challengeId}:verify`\n\nVerify email TOTP code for an existing challenge.\n\n### Parameters\n\n- `challengeId: string`\n\n- `otp: string`\n  The One-Time Password (OTP) sent to the user\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ token: string; }`\n\n  - `token: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.verifications.totpEmail.verifyV1('36a22460-ebc8-4ffe-a213-1683c5a420c5', { otp: '123456' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.verifications.totpEmail.verifyV1',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.verifications.totpEmail.verifyV1(\n  '36a22460-ebc8-4ffe-a213-1683c5a420c5',\n  { otp: '123456' },\n);\n\nconsole.log(response.token);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/verifications/totp-email/$CHALLENGE_ID:verify \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "otp": "123456"\n        }\'',
      },
      kotlin: {
        method: 'verifications().totpEmail().verifyV1',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.verifications.totpemail.TotpEmailVerifyV1Params\nimport com.plumery.api.models.verifications.totpemail.TotpEmailVerifyV1Response\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: TotpEmailVerifyV1Params = TotpEmailVerifyV1Params.builder()\n        .challengeId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .otp("123456")\n        .build()\n    val response: TotpEmailVerifyV1Response = client.verifications().totpEmail().verifyV1(params)\n}',
      },
      java: {
        method: 'verifications().totpEmail().verifyV1',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.verifications.totpemail.TotpEmailVerifyV1Params;\nimport com.plumery.api.models.verifications.totpemail.TotpEmailVerifyV1Response;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        TotpEmailVerifyV1Params params = TotpEmailVerifyV1Params.builder()\n            .challengeId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .otp("123456")\n            .build();\n        TotpEmailVerifyV1Response response = client.verifications().totpEmail().verifyV1(params);\n    }\n}',
      },
    },
  },
  {
    name: 'verifyV2',
    endpoint: '/api/v2/verifications/totp-email/{challengeId}:verify',
    httpMethod: 'post',
    summary: 'Verify Email OTP (v2)',
    description: 'Verify email TOTP code for an existing challenge.',
    stainlessPath: '(resource) verifications.totp-email > (method) verifyV2',
    qualified: 'client.verifications.totpEmail.verifyV2',
    params: ['challengeId: string;', 'otp: string;', 'X-Request-ID?: string;'],
    response: '{ token: string; }',
    markdown:
      "## verifyV2\n\n`client.verifications.totpEmail.verifyV2(challengeId: string, otp: string, X-Request-ID?: string): { token: string; }`\n\n**post** `/api/v2/verifications/totp-email/{challengeId}:verify`\n\nVerify email TOTP code for an existing challenge.\n\n### Parameters\n\n- `challengeId: string`\n\n- `otp: string`\n  The One-Time Password (OTP) sent to the user\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ token: string; }`\n\n  - `token: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.verifications.totpEmail.verifyV2('36a22460-ebc8-4ffe-a213-1683c5a420c5', { otp: '123456' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.verifications.totpEmail.verifyV2',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.verifications.totpEmail.verifyV2(\n  '36a22460-ebc8-4ffe-a213-1683c5a420c5',\n  { otp: '123456' },\n);\n\nconsole.log(response.token);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v2/verifications/totp-email/$CHALLENGE_ID:verify \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "otp": "123456"\n        }\'',
      },
      kotlin: {
        method: 'verifications().totpEmail().verifyV2',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.verifications.totpemail.TotpEmailVerifyV2Params\nimport com.plumery.api.models.verifications.totpemail.TotpEmailVerifyV2Response\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: TotpEmailVerifyV2Params = TotpEmailVerifyV2Params.builder()\n        .challengeId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .otp("123456")\n        .build()\n    val response: TotpEmailVerifyV2Response = client.verifications().totpEmail().verifyV2(params)\n}',
      },
      java: {
        method: 'verifications().totpEmail().verifyV2',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.verifications.totpemail.TotpEmailVerifyV2Params;\nimport com.plumery.api.models.verifications.totpemail.TotpEmailVerifyV2Response;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        TotpEmailVerifyV2Params params = TotpEmailVerifyV2Params.builder()\n            .challengeId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .otp("123456")\n            .build();\n        TotpEmailVerifyV2Response response = client.verifications().totpEmail().verifyV2(params);\n    }\n}',
      },
    },
  },
  {
    name: 'verify',
    endpoint: '/api/v2/verifications/totp-email/{challengeId}:verify',
    httpMethod: 'post',
    summary: 'Verify Email OTP (v2)',
    description: 'Verify email TOTP code for an existing challenge.',
    stainlessPath: '(resource) verifications.totp-email > (method) verify',
    qualified: 'client.verifications.totpEmail.verify',
    perLanguage: {
      typescript: {
        method: 'client.verifications.totpEmail.verify',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.verifications.totpEmail.verify(\n  '36a22460-ebc8-4ffe-a213-1683c5a420c5',\n  { otp: '123456' },\n);\n\nconsole.log(response.token);",
      },
      kotlin: {
        method: 'verifications().totpEmail().verify',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.verifications.totpemail.TotpEmailVerifyParams\nimport com.plumery.api.models.verifications.totpemail.TotpEmailVerifyResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: TotpEmailVerifyParams = TotpEmailVerifyParams.builder()\n        .challengeId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .otp("123456")\n        .build()\n    val response: TotpEmailVerifyResponse = client.verifications().totpEmail().verify(params)\n}',
      },
      java: {
        method: 'verifications().totpEmail().verify',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.verifications.totpemail.TotpEmailVerifyParams;\nimport com.plumery.api.models.verifications.totpemail.TotpEmailVerifyResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        TotpEmailVerifyParams params = TotpEmailVerifyParams.builder()\n            .challengeId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .otp("123456")\n            .build();\n        TotpEmailVerifyResponse response = client.verifications().totpEmail().verify(params);\n    }\n}',
      },
    },
  },
  {
    name: 'initiate',
    endpoint: '/api/v1/mfa/totp-sms/{challengeId}:initiate',
    httpMethod: 'post',
    summary: 'Initiate time-based one-time password SMS challenge',
    description:
      "Initiates time-based one-time password SMS challenge.\n\nThis will initiate a time-based one-time password (TOTP) sent as an SMS to the user's phone number to authorise an operation request.\n\nOnce the TOTP is verified, using the 'Verify' endpoint, user will be able to proceed with unauthorised operation.",
    stainlessPath: '(resource) mfa.totp-sms > (method) initiate',
    qualified: 'client.mfa.totpSMS.initiate',
    params: ['challengeId: string;'],
    markdown:
      "## initiate\n\n`client.mfa.totpSMS.initiate(challengeId: string): void`\n\n**post** `/api/v1/mfa/totp-sms/{challengeId}:initiate`\n\nInitiates time-based one-time password SMS challenge.\n\nThis will initiate a time-based one-time password (TOTP) sent as an SMS to the user's phone number to authorise an operation request.\n\nOnce the TOTP is verified, using the 'Verify' endpoint, user will be able to proceed with unauthorised operation.\n\n### Parameters\n\n- `challengeId: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.mfa.totpSMS.initiate('challengeId')\n```",
    perLanguage: {
      typescript: {
        method: 'client.mfa.totpSMS.initiate',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.mfa.totpSMS.initiate('challengeId');",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/mfa/totp-sms/$CHALLENGE_ID:initiate \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'mfa().totpSms().initiate',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.mfa.totpsms.TotpSmsInitiateParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    client.mfa().totpSms().initiate("challengeId")\n}',
      },
      java: {
        method: 'mfa().totpSms().initiate',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.mfa.totpsms.TotpSmsInitiateParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        client.mfa().totpSms().initiate("challengeId");\n    }\n}',
      },
    },
  },
  {
    name: 'verify',
    endpoint: '/api/v1/mfa/totp-sms/{challengeId}:verify',
    httpMethod: 'post',
    summary: 'Verify time-based one-time password SMS challenge',
    description:
      "Verifies the time-based one-time password sent to the user's phone number.\n\nThe unauthorised operations will be allowed to proceed once the TOTP verified successfully.",
    stainlessPath: '(resource) mfa.totp-sms > (method) verify',
    qualified: 'client.mfa.totpSMS.verify',
    params: ['challengeId: string;', 'totp: string;'],
    markdown:
      "## verify\n\n`client.mfa.totpSMS.verify(challengeId: string, totp: string): void`\n\n**post** `/api/v1/mfa/totp-sms/{challengeId}:verify`\n\nVerifies the time-based one-time password sent to the user's phone number.\n\nThe unauthorised operations will be allowed to proceed once the TOTP verified successfully.\n\n### Parameters\n\n- `challengeId: string`\n\n- `totp: string`\n  The Time-Based One-Time Password (TOTP) sent to the phone number for verification\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.mfa.totpSMS.verify('challengeId', { totp: '123456' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.mfa.totpSMS.verify',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.mfa.totpSMS.verify('challengeId', { totp: '123456' });",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/mfa/totp-sms/$CHALLENGE_ID:verify \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "totp": "123456"\n        }\'',
      },
      kotlin: {
        method: 'mfa().totpSms().verify',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.mfa.totpsms.TotpSmsVerifyParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: TotpSmsVerifyParams = TotpSmsVerifyParams.builder()\n        .challengeId("challengeId")\n        .totp("123456")\n        .build()\n    client.mfa().totpSms().verify(params)\n}',
      },
      java: {
        method: 'mfa().totpSms().verify',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.mfa.totpsms.TotpSmsVerifyParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        TotpSmsVerifyParams params = TotpSmsVerifyParams.builder()\n            .challengeId("challengeId")\n            .totp("123456")\n            .build();\n        client.mfa().totpSms().verify(params);\n    }\n}',
      },
    },
  },
  {
    name: 'initiate',
    endpoint: '/api/v1/mfa/totp-email/{challengeId}:initiate',
    httpMethod: 'post',
    summary: 'Initiate time-based one-time password email challenge',
    description:
      "Initiates time-based one-time password email challenge.\n\nThis will initiate a time-based one-time password (TOTP) sent as an e-mail to the user's e-mail address to authorise an operation request.\n\nOnce the TOTP is verified, using the 'Verify' endpoint, user will be able to proceed with unauthorised operation.",
    stainlessPath: '(resource) mfa.totp-email > (method) initiate',
    qualified: 'client.mfa.totpEmail.initiate',
    params: ['challengeId: string;'],
    markdown:
      "## initiate\n\n`client.mfa.totpEmail.initiate(challengeId: string): void`\n\n**post** `/api/v1/mfa/totp-email/{challengeId}:initiate`\n\nInitiates time-based one-time password email challenge.\n\nThis will initiate a time-based one-time password (TOTP) sent as an e-mail to the user's e-mail address to authorise an operation request.\n\nOnce the TOTP is verified, using the 'Verify' endpoint, user will be able to proceed with unauthorised operation.\n\n### Parameters\n\n- `challengeId: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.mfa.totpEmail.initiate('challengeId')\n```",
    perLanguage: {
      typescript: {
        method: 'client.mfa.totpEmail.initiate',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.mfa.totpEmail.initiate('challengeId');",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/mfa/totp-email/$CHALLENGE_ID:initiate \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'mfa().totpEmail().initiate',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.mfa.totpemail.TotpEmailInitiateParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    client.mfa().totpEmail().initiate("challengeId")\n}',
      },
      java: {
        method: 'mfa().totpEmail().initiate',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.mfa.totpemail.TotpEmailInitiateParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        client.mfa().totpEmail().initiate("challengeId");\n    }\n}',
      },
    },
  },
  {
    name: 'verify',
    endpoint: '/api/v1/mfa/totp-email/{challengeId}:verify',
    httpMethod: 'post',
    summary: 'Verify time-based one-time password email challenge',
    description:
      "Verifies the time-based one-time password sent to the user's mail address.\n\nThe unauthorised operations will be allowed to proceed once the TOTP verified successfully.",
    stainlessPath: '(resource) mfa.totp-email > (method) verify',
    qualified: 'client.mfa.totpEmail.verify',
    params: ['challengeId: string;', 'totp: string;'],
    markdown:
      "## verify\n\n`client.mfa.totpEmail.verify(challengeId: string, totp: string): void`\n\n**post** `/api/v1/mfa/totp-email/{challengeId}:verify`\n\nVerifies the time-based one-time password sent to the user's mail address.\n\nThe unauthorised operations will be allowed to proceed once the TOTP verified successfully.\n\n### Parameters\n\n- `challengeId: string`\n\n- `totp: string`\n  The Time-Based One-Time Password (TOTP) sent to the mail for verification\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.mfa.totpEmail.verify('challengeId', { totp: '123456' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.mfa.totpEmail.verify',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.mfa.totpEmail.verify('challengeId', { totp: '123456' });",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/mfa/totp-email/$CHALLENGE_ID:verify \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "totp": "123456"\n        }\'',
      },
      kotlin: {
        method: 'mfa().totpEmail().verify',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.mfa.totpemail.TotpEmailVerifyParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: TotpEmailVerifyParams = TotpEmailVerifyParams.builder()\n        .challengeId("challengeId")\n        .totp("123456")\n        .build()\n    client.mfa().totpEmail().verify(params)\n}',
      },
      java: {
        method: 'mfa().totpEmail().verify',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.mfa.totpemail.TotpEmailVerifyParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        TotpEmailVerifyParams params = TotpEmailVerifyParams.builder()\n            .challengeId("challengeId")\n            .totp("123456")\n            .build();\n        client.mfa().totpEmail().verify(params);\n    }\n}',
      },
    },
  },
  {
    name: 'verify',
    endpoint: '/api/v1/mfa/password/{challengeId}:verify',
    httpMethod: 'post',
    summary: 'Verify current password challenge',
    description:
      'Verifies the current password.\n\nThe sensitive operations will be allowed to proceed once the password verified successfully.',
    stainlessPath: '(resource) mfa.password > (method) verify',
    qualified: 'client.mfa.password.verify',
    params: ['challengeId: string;', 'currentPassword: string;'],
    markdown:
      "## verify\n\n`client.mfa.password.verify(challengeId: string, currentPassword: string): void`\n\n**post** `/api/v1/mfa/password/{challengeId}:verify`\n\nVerifies the current password.\n\nThe sensitive operations will be allowed to proceed once the password verified successfully.\n\n### Parameters\n\n- `challengeId: string`\n\n- `currentPassword: string`\n  The current password\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.mfa.password.verify('challengeId', { currentPassword: 'test' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.mfa.password.verify',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.mfa.password.verify('challengeId', { currentPassword: 'test' });",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/mfa/password/$CHALLENGE_ID:verify \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "currentPassword": "test"\n        }\'',
      },
      kotlin: {
        method: 'mfa().password().verify',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.mfa.password.PasswordVerifyParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: PasswordVerifyParams = PasswordVerifyParams.builder()\n        .challengeId("challengeId")\n        .currentPassword("test")\n        .build()\n    client.mfa().password().verify(params)\n}',
      },
      java: {
        method: 'mfa().password().verify',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.mfa.password.PasswordVerifyParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        PasswordVerifyParams params = PasswordVerifyParams.builder()\n            .challengeId("challengeId")\n            .currentPassword("test")\n            .build();\n        client.mfa().password().verify(params);\n    }\n}',
      },
    },
  },
  {
    name: 'initiate',
    endpoint: '/api/v1/mfa/device-signature/{challengeId}:initiate',
    httpMethod: 'post',
    summary: 'Initiate device signature',
    description:
      'Initiates device signing session.\n\nThe returned data to sign is to be signed and to be verified via the verification endpoint.',
    stainlessPath: '(resource) mfa.device-signature > (method) initiate',
    qualified: 'client.mfa.deviceSignature.initiate',
    params: ['challengeId: string;', 'deviceId: string;', "deviceSigningMethod: 'BIOMETRICS' | 'PASSCODE';"],
    response: '{ dataToSign: string; }',
    markdown:
      "## initiate\n\n`client.mfa.deviceSignature.initiate(challengeId: string, deviceId: string, deviceSigningMethod: 'BIOMETRICS' | 'PASSCODE'): { dataToSign: string; }`\n\n**post** `/api/v1/mfa/device-signature/{challengeId}:initiate`\n\nInitiates device signing session.\n\nThe returned data to sign is to be signed and to be verified via the verification endpoint.\n\n### Parameters\n\n- `challengeId: string`\n\n- `deviceId: string`\n  The id of the device used to sign\n\n- `deviceSigningMethod: 'BIOMETRICS' | 'PASSCODE'`\n  The method for device signing (e.g. PASSCODE)\n\n### Returns\n\n- `{ dataToSign: string; }`\n\n  - `dataToSign: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.mfa.deviceSignature.initiate('challengeId', { deviceId: 'deviceId', deviceSigningMethod: 'BIOMETRICS' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.mfa.deviceSignature.initiate',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.mfa.deviceSignature.initiate('challengeId', {\n  deviceId: 'deviceId',\n  deviceSigningMethod: 'BIOMETRICS',\n});\n\nconsole.log(response.dataToSign);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/mfa/device-signature/$CHALLENGE_ID:initiate \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "deviceId": "deviceId",\n          "deviceSigningMethod": "BIOMETRICS"\n        }\'',
      },
      kotlin: {
        method: 'mfa().deviceSignature().initiate',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.mfa.devicesignature.DeviceSignatureInitiateParams\nimport com.plumery.api.models.mfa.devicesignature.DeviceSignatureInitiateResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: DeviceSignatureInitiateParams = DeviceSignatureInitiateParams.builder()\n        .challengeId("challengeId")\n        .deviceId("deviceId")\n        .deviceSigningMethod(DeviceSignatureInitiateParams.DeviceSigningMethod.BIOMETRICS)\n        .build()\n    val response: DeviceSignatureInitiateResponse = client.mfa().deviceSignature().initiate(params)\n}',
      },
      java: {
        method: 'mfa().deviceSignature().initiate',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.mfa.devicesignature.DeviceSignatureInitiateParams;\nimport com.plumery.api.models.mfa.devicesignature.DeviceSignatureInitiateResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        DeviceSignatureInitiateParams params = DeviceSignatureInitiateParams.builder()\n            .challengeId("challengeId")\n            .deviceId("deviceId")\n            .deviceSigningMethod(DeviceSignatureInitiateParams.DeviceSigningMethod.BIOMETRICS)\n            .build();\n        DeviceSignatureInitiateResponse response = client.mfa().deviceSignature().initiate(params);\n    }\n}',
      },
    },
  },
  {
    name: 'verify',
    endpoint: '/api/v1/mfa/device-signature/{challengeId}:verify',
    httpMethod: 'post',
    summary: 'Verify device signature',
    description:
      'Verifies the device signature.\n\nThe sensitive operations will be allowed to proceed once the signature is verified successfully.',
    stainlessPath: '(resource) mfa.device-signature > (method) verify',
    qualified: 'client.mfa.deviceSignature.verify',
    params: ['challengeId: string;', 'signature: string;'],
    markdown:
      "## verify\n\n`client.mfa.deviceSignature.verify(challengeId: string, signature: string): void`\n\n**post** `/api/v1/mfa/device-signature/{challengeId}:verify`\n\nVerifies the device signature.\n\nThe sensitive operations will be allowed to proceed once the signature is verified successfully.\n\n### Parameters\n\n- `challengeId: string`\n\n- `signature: string`\n  The signature of the challengeId made with the device id specified\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.mfa.deviceSignature.verify('challengeId', { signature: 'signature' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.mfa.deviceSignature.verify',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.mfa.deviceSignature.verify('challengeId', { signature: 'signature' });",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/mfa/device-signature/$CHALLENGE_ID:verify \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "signature": "signature"\n        }\'',
      },
      kotlin: {
        method: 'mfa().deviceSignature().verify',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.mfa.devicesignature.DeviceSignatureVerifyParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: DeviceSignatureVerifyParams = DeviceSignatureVerifyParams.builder()\n        .challengeId("challengeId")\n        .signature("signature")\n        .build()\n    client.mfa().deviceSignature().verify(params)\n}',
      },
      java: {
        method: 'mfa().deviceSignature().verify',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.mfa.devicesignature.DeviceSignatureVerifyParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        DeviceSignatureVerifyParams params = DeviceSignatureVerifyParams.builder()\n            .challengeId("challengeId")\n            .signature("signature")\n            .build();\n        client.mfa().deviceSignature().verify(params);\n    }\n}',
      },
    },
  },
  {
    name: 'list',
    endpoint: '/api/v1/mfa/device-signature/pending',
    httpMethod: 'get',
    summary: 'Get pending device signatures',
    description: 'Get pending device signatures',
    stainlessPath: '(resource) mfa.device-signature.pending > (method) list',
    qualified: 'client.mfa.deviceSignature.pending.list',
    response:
      '{ pendingDeviceSignatures?: { id: string; bindingMessage: string; challengeId: string; confirmationMessage: string; createdAt: string; userId: string; verified: boolean; }[]; }',
    markdown:
      "## list\n\n`client.mfa.deviceSignature.pending.list(): { pendingDeviceSignatures?: object[]; }`\n\n**get** `/api/v1/mfa/device-signature/pending`\n\nGet pending device signatures\n\n### Returns\n\n- `{ pendingDeviceSignatures?: { id: string; bindingMessage: string; challengeId: string; confirmationMessage: string; createdAt: string; userId: string; verified: boolean; }[]; }`\n  List of pending device signature for a given user.\n\n  - `pendingDeviceSignatures?: { id: string; bindingMessage: string; challengeId: string; confirmationMessage: string; createdAt: string; userId: string; verified: boolean; }[]`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst pendings = await client.mfa.deviceSignature.pending.list();\n\nconsole.log(pendings);\n```",
    perLanguage: {
      typescript: {
        method: 'client.mfa.deviceSignature.pending.list',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst pendings = await client.mfa.deviceSignature.pending.list();\n\nconsole.log(pendings.pendingDeviceSignatures);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/mfa/device-signature/pending \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'mfa().deviceSignature().pending().list',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.mfa.devicesignature.pending.PendingListParams\nimport com.plumery.api.models.mfa.devicesignature.pending.PendingListResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val pendings: PendingListResponse = client.mfa().deviceSignature().pending().list()\n}',
      },
      java: {
        method: 'mfa().deviceSignature().pending().list',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.mfa.devicesignature.pending.PendingListParams;\nimport com.plumery.api.models.mfa.devicesignature.pending.PendingListResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        PendingListResponse pendings = client.mfa().deviceSignature().pending().list();\n    }\n}',
      },
    },
  },
  {
    name: 'initiate',
    endpoint: '/api/v1/mfa/device-signature/pending/{challengeId}:initiate',
    httpMethod: 'post',
    summary: 'Initiate device signature pending',
    description:
      'Initiates device signing session for pending device signature.\n\nThe returned data to sign is to be signed and to be verified via the pending verification endpoint.',
    stainlessPath: '(resource) mfa.device-signature.pending > (method) initiate',
    qualified: 'client.mfa.deviceSignature.pending.initiate',
    params: ['challengeId: string;', 'deviceId: string;', "deviceSigningMethod: 'BIOMETRICS' | 'PASSCODE';"],
    response: '{ dataToSign: string; }',
    markdown:
      "## initiate\n\n`client.mfa.deviceSignature.pending.initiate(challengeId: string, deviceId: string, deviceSigningMethod: 'BIOMETRICS' | 'PASSCODE'): { dataToSign: string; }`\n\n**post** `/api/v1/mfa/device-signature/pending/{challengeId}:initiate`\n\nInitiates device signing session for pending device signature.\n\nThe returned data to sign is to be signed and to be verified via the pending verification endpoint.\n\n### Parameters\n\n- `challengeId: string`\n\n- `deviceId: string`\n  The id of the device used to sign\n\n- `deviceSigningMethod: 'BIOMETRICS' | 'PASSCODE'`\n  The method for device signing (e.g. PASSCODE)\n\n### Returns\n\n- `{ dataToSign: string; }`\n\n  - `dataToSign: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.mfa.deviceSignature.pending.initiate('challengeId', { deviceId: 'deviceId', deviceSigningMethod: 'BIOMETRICS' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.mfa.deviceSignature.pending.initiate',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.mfa.deviceSignature.pending.initiate('challengeId', {\n  deviceId: 'deviceId',\n  deviceSigningMethod: 'BIOMETRICS',\n});\n\nconsole.log(response.dataToSign);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/mfa/device-signature/pending/$CHALLENGE_ID:initiate \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "deviceId": "deviceId",\n          "deviceSigningMethod": "BIOMETRICS"\n        }\'',
      },
      kotlin: {
        method: 'mfa().deviceSignature().pending().initiate',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.mfa.devicesignature.pending.PendingInitiateParams\nimport com.plumery.api.models.mfa.devicesignature.pending.PendingInitiateResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: PendingInitiateParams = PendingInitiateParams.builder()\n        .challengeId("challengeId")\n        .deviceId("deviceId")\n        .deviceSigningMethod(PendingInitiateParams.DeviceSigningMethod.BIOMETRICS)\n        .build()\n    val response: PendingInitiateResponse = client.mfa().deviceSignature().pending().initiate(params)\n}',
      },
      java: {
        method: 'mfa().deviceSignature().pending().initiate',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.mfa.devicesignature.pending.PendingInitiateParams;\nimport com.plumery.api.models.mfa.devicesignature.pending.PendingInitiateResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        PendingInitiateParams params = PendingInitiateParams.builder()\n            .challengeId("challengeId")\n            .deviceId("deviceId")\n            .deviceSigningMethod(PendingInitiateParams.DeviceSigningMethod.BIOMETRICS)\n            .build();\n        PendingInitiateResponse response = client.mfa().deviceSignature().pending().initiate(params);\n    }\n}',
      },
    },
  },
  {
    name: 'verify',
    endpoint: '/api/v1/mfa/device-signature/pending/{challengeId}:verify',
    httpMethod: 'post',
    summary: 'Verify pending device signature',
    description:
      'A device signature initiated internally generates a pending device signature which has to be verified using this endpoint.\n\nVerifies the pending device signature.\n\nThe sensitive operations will be allowed to proceed once the signature is verified successfully.',
    stainlessPath: '(resource) mfa.device-signature.pending > (method) verify',
    qualified: 'client.mfa.deviceSignature.pending.verify',
    params: ['challengeId: string;', 'signature: string;'],
    markdown:
      "## verify\n\n`client.mfa.deviceSignature.pending.verify(challengeId: string, signature: string): void`\n\n**post** `/api/v1/mfa/device-signature/pending/{challengeId}:verify`\n\nA device signature initiated internally generates a pending device signature which has to be verified using this endpoint.\n\nVerifies the pending device signature.\n\nThe sensitive operations will be allowed to proceed once the signature is verified successfully.\n\n### Parameters\n\n- `challengeId: string`\n\n- `signature: string`\n  The signature of the challengeId made with the device id specified\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.mfa.deviceSignature.pending.verify('challengeId', { signature: 'signature' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.mfa.deviceSignature.pending.verify',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.mfa.deviceSignature.pending.verify('challengeId', { signature: 'signature' });",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/mfa/device-signature/pending/$CHALLENGE_ID:verify \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "signature": "signature"\n        }\'',
      },
      kotlin: {
        method: 'mfa().deviceSignature().pending().verify',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.mfa.devicesignature.pending.PendingVerifyParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: PendingVerifyParams = PendingVerifyParams.builder()\n        .challengeId("challengeId")\n        .signature("signature")\n        .build()\n    client.mfa().deviceSignature().pending().verify(params)\n}',
      },
      java: {
        method: 'mfa().deviceSignature().pending().verify',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.mfa.devicesignature.pending.PendingVerifyParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        PendingVerifyParams params = PendingVerifyParams.builder()\n            .challengeId("challengeId")\n            .signature("signature")\n            .build();\n        client.mfa().deviceSignature().pending().verify(params);\n    }\n}',
      },
    },
  },
  {
    name: 'reject',
    endpoint: '/api/v1/mfa/device-signature/pending/{challengeId}:reject',
    httpMethod: 'post',
    summary: 'Reject pending device signature',
    description:
      "Rejects a pending device signature\n\nOnce rejected, the original initiator polling the 'Confirm device signature' endpoint receives a REJECTED status",
    stainlessPath: '(resource) mfa.device-signature.pending > (method) reject',
    qualified: 'client.mfa.deviceSignature.pending.reject',
    params: ['challengeId: string;'],
    markdown:
      "## reject\n\n`client.mfa.deviceSignature.pending.reject(challengeId: string): void`\n\n**post** `/api/v1/mfa/device-signature/pending/{challengeId}:reject`\n\nRejects a pending device signature\n\nOnce rejected, the original initiator polling the 'Confirm device signature' endpoint receives a REJECTED status\n\n### Parameters\n\n- `challengeId: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.mfa.deviceSignature.pending.reject('challengeId')\n```",
    perLanguage: {
      typescript: {
        method: 'client.mfa.deviceSignature.pending.reject',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.mfa.deviceSignature.pending.reject('challengeId');",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/mfa/device-signature/pending/$CHALLENGE_ID:reject \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'mfa().deviceSignature().pending().reject',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.mfa.devicesignature.pending.PendingRejectParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    client.mfa().deviceSignature().pending().reject("challengeId")\n}',
      },
      java: {
        method: 'mfa().deviceSignature().pending().reject',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.mfa.devicesignature.pending.PendingRejectParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        client.mfa().deviceSignature().pending().reject("challengeId");\n    }\n}',
      },
    },
  },
  {
    name: 'initiateV1',
    endpoint: '/api/v1/mfa/sk-id/smart-id/signature/{challengeId}:initiate',
    httpMethod: 'post',
    summary: 'Initiate Smart-ID signing challenge',
    description:
      'Initiates SK-ID Smart-ID signing challenge.\n\nThis will initiate a process of document signing and return verification code which end-user should confirm in SK-ID Smart-ID application.',
    stainlessPath: '(resource) mfa.sk-id.smart-id.signature > (method) initiateV1',
    qualified: 'client.mfa.skID.smartID.signature.initiateV1',
    params: ['challengeId: string;'],
    response: '{ verificationCode?: string; }',
    markdown:
      "## initiateV1\n\n`client.mfa.skID.smartID.signature.initiateV1(challengeId: string): { verificationCode?: string; }`\n\n**post** `/api/v1/mfa/sk-id/smart-id/signature/{challengeId}:initiate`\n\nInitiates SK-ID Smart-ID signing challenge.\n\nThis will initiate a process of document signing and return verification code which end-user should confirm in SK-ID Smart-ID application.\n\n### Parameters\n\n- `challengeId: string`\n\n### Returns\n\n- `{ verificationCode?: string; }`\n\n  - `verificationCode?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.mfa.skID.smartID.signature.initiateV1('2751d7d9-df79-4412-b4c4-28aaa7075548');\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.mfa.skID.smartID.signature.initiateV1',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.mfa.skID.smartID.signature.initiateV1(\n  '2751d7d9-df79-4412-b4c4-28aaa7075548',\n);\n\nconsole.log(response.verificationCode);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/mfa/sk-id/smart-id/signature/$CHALLENGE_ID:initiate \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'mfa().skId().smartId().signature().initiateV1',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.mfa.skid.smartid.signature.SignatureInitiateV1Params\nimport com.plumery.api.models.mfa.skid.smartid.signature.SignatureInitiateV1Response\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val response: SignatureInitiateV1Response = client.mfa().skId().smartId().signature().initiateV1("2751d7d9-df79-4412-b4c4-28aaa7075548")\n}',
      },
      java: {
        method: 'mfa().skId().smartId().signature().initiateV1',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.mfa.skid.smartid.signature.SignatureInitiateV1Params;\nimport com.plumery.api.models.mfa.skid.smartid.signature.SignatureInitiateV1Response;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        SignatureInitiateV1Response response = client.mfa().skId().smartId().signature().initiateV1("2751d7d9-df79-4412-b4c4-28aaa7075548");\n    }\n}',
      },
    },
  },
  {
    name: 'confirmV1',
    endpoint: '/api/v1/mfa/sk-id/smart-id/signature/{challengeId}:confirm',
    httpMethod: 'post',
    summary: 'Confirm SK-ID Smart-ID signing challenge',
    description:
      "Confirms SK-ID Smart-ID signing challenge.\n\nThis will trigger notification to user's phone with prompt to confirm signing. Then get the signature, verify it and save.\nNote:\nThis endpoint should be polled repeatedly whenever a SK_ID_SIGNING_NOT_YET_COMPLETED_EXCEPTION error response is returned.\nContinue polling until either:\n  - a successful response (204 No Content) is received, indicating signing has completed, or\n  - a different error response is returned, which means the signing process has failed and polling must stop.",
    stainlessPath: '(resource) mfa.sk-id.smart-id.signature > (method) confirmV1',
    qualified: 'client.mfa.skID.smartID.signature.confirmV1',
    params: ['challengeId: string;'],
    markdown:
      "## confirmV1\n\n`client.mfa.skID.smartID.signature.confirmV1(challengeId: string): void`\n\n**post** `/api/v1/mfa/sk-id/smart-id/signature/{challengeId}:confirm`\n\nConfirms SK-ID Smart-ID signing challenge.\n\nThis will trigger notification to user's phone with prompt to confirm signing. Then get the signature, verify it and save.\nNote:\nThis endpoint should be polled repeatedly whenever a SK_ID_SIGNING_NOT_YET_COMPLETED_EXCEPTION error response is returned.\nContinue polling until either:\n  - a successful response (204 No Content) is received, indicating signing has completed, or\n  - a different error response is returned, which means the signing process has failed and polling must stop.\n\n### Parameters\n\n- `challengeId: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.mfa.skID.smartID.signature.confirmV1('2751d7d9-df79-4412-b4c4-28aaa7075548')\n```",
    perLanguage: {
      typescript: {
        method: 'client.mfa.skID.smartID.signature.confirmV1',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.mfa.skID.smartID.signature.confirmV1('2751d7d9-df79-4412-b4c4-28aaa7075548');",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/mfa/sk-id/smart-id/signature/$CHALLENGE_ID:confirm \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'mfa().skId().smartId().signature().confirmV1',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.mfa.skid.smartid.signature.SignatureConfirmV1Params\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    client.mfa().skId().smartId().signature().confirmV1("2751d7d9-df79-4412-b4c4-28aaa7075548")\n}',
      },
      java: {
        method: 'mfa().skId().smartId().signature().confirmV1',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.mfa.skid.smartid.signature.SignatureConfirmV1Params;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        client.mfa().skId().smartId().signature().confirmV1("2751d7d9-df79-4412-b4c4-28aaa7075548");\n    }\n}',
      },
    },
  },
  {
    name: 'initiateV2',
    endpoint: '/api/v2/mfa/sk-id/smart-id/signature/{challengeId}:initiate',
    httpMethod: 'post',
    summary: 'Initiate Smart-ID signing challenge',
    description:
      'Initiates SK-ID Smart-ID signing challenge.\n\nThis endpoint initiates the document signing process and returns the current signing session status.\n- When the status is `PENDING_CODE`, the signing session is not fully initialized and the verification code is not present in the response.\n- When the status is `PENDING_SIGNATURE`, the signing session is fully initialized and the response includes a verification code that the end user must confirm in the SK-ID Smart-ID application.',
    stainlessPath: '(resource) mfa.sk-id.smart-id.signature > (method) initiateV2',
    qualified: 'client.mfa.skID.smartID.signature.initiateV2',
    params: ['challengeId: string;'],
    response: "{ status?: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; }",
    markdown:
      "## initiateV2\n\n`client.mfa.skID.smartID.signature.initiateV2(challengeId: string): { status?: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; }`\n\n**post** `/api/v2/mfa/sk-id/smart-id/signature/{challengeId}:initiate`\n\nInitiates SK-ID Smart-ID signing challenge.\n\nThis endpoint initiates the document signing process and returns the current signing session status.\n- When the status is `PENDING_CODE`, the signing session is not fully initialized and the verification code is not present in the response.\n- When the status is `PENDING_SIGNATURE`, the signing session is fully initialized and the response includes a verification code that the end user must confirm in the SK-ID Smart-ID application.\n\n### Parameters\n\n- `challengeId: string`\n\n### Returns\n\n- `{ status?: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; }`\n\n  - `status?: 'PENDING_CODE' | 'PENDING_SIGNING'`\n  - `verificationCode?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.mfa.skID.smartID.signature.initiateV2('2751d7d9-df79-4412-b4c4-28aaa7075548');\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.mfa.skID.smartID.signature.initiateV2',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.mfa.skID.smartID.signature.initiateV2(\n  '2751d7d9-df79-4412-b4c4-28aaa7075548',\n);\n\nconsole.log(response.status);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v2/mfa/sk-id/smart-id/signature/$CHALLENGE_ID:initiate \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'mfa().skId().smartId().signature().initiateV2',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.mfa.skid.smartid.signature.SignatureInitiateV2Params\nimport com.plumery.api.models.mfa.skid.smartid.signature.SignatureInitiateV2Response\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val response: SignatureInitiateV2Response = client.mfa().skId().smartId().signature().initiateV2("2751d7d9-df79-4412-b4c4-28aaa7075548")\n}',
      },
      java: {
        method: 'mfa().skId().smartId().signature().initiateV2',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.mfa.skid.smartid.signature.SignatureInitiateV2Params;\nimport com.plumery.api.models.mfa.skid.smartid.signature.SignatureInitiateV2Response;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        SignatureInitiateV2Response response = client.mfa().skId().smartId().signature().initiateV2("2751d7d9-df79-4412-b4c4-28aaa7075548");\n    }\n}',
      },
    },
  },
  {
    name: 'confirmV2',
    endpoint: '/api/v2/mfa/sk-id/smart-id/signature/{challengeId}:confirm',
    httpMethod: 'post',
    summary: 'Confirm SK-ID Smart-ID signing challenge',
    description:
      'Confirms SK-ID Smart-ID signing challenge.\n\nThis endpoint initiates a signing session by sending a notification to the user’s phone, prompting them to confirm the signing request.\nThe client must then poll this endpoint to track the signing session status until the process is completed or fails.\n\nThe signing session progresses through the following statuses:\n  - `PENDING_CODE`\n    The signing session has been created, but is not fully initialized yet.\n    The verification code is not returned at this stage.\n\n  - `PENDING_SIGNATURE`\n    The signing session is fully initialized.\n    The verification code is returned and the user is expected to confirm the signing on their device.\n\n  - `COMPLETED`\n    The signing has been successfully completed.\n    The signature is verified and saved.\n\nThe client must poll this endpoint repeatedly until one of the following conditions is met:\n  - A 200 OK response is returned with status `COMPLETED`, indicating successful signing\n  - Any other error response is returned, indicating that the signing process has failed and polling must stop',
    stainlessPath: '(resource) mfa.sk-id.smart-id.signature > (method) confirmV2',
    qualified: 'client.mfa.skID.smartID.signature.confirmV2',
    params: ['challengeId: string;'],
    response: "{ status?: 'PENDING_CODE' | 'PENDING_SIGNING' | 'COMPLETED'; verificationCode?: string; }",
    markdown:
      "## confirmV2\n\n`client.mfa.skID.smartID.signature.confirmV2(challengeId: string): { status?: 'PENDING_CODE' | 'PENDING_SIGNING' | 'COMPLETED'; verificationCode?: string; }`\n\n**post** `/api/v2/mfa/sk-id/smart-id/signature/{challengeId}:confirm`\n\nConfirms SK-ID Smart-ID signing challenge.\n\nThis endpoint initiates a signing session by sending a notification to the user’s phone, prompting them to confirm the signing request.\nThe client must then poll this endpoint to track the signing session status until the process is completed or fails.\n\nThe signing session progresses through the following statuses:\n  - `PENDING_CODE`\n    The signing session has been created, but is not fully initialized yet.\n    The verification code is not returned at this stage.\n\n  - `PENDING_SIGNATURE`\n    The signing session is fully initialized.\n    The verification code is returned and the user is expected to confirm the signing on their device.\n\n  - `COMPLETED`\n    The signing has been successfully completed.\n    The signature is verified and saved.\n\nThe client must poll this endpoint repeatedly until one of the following conditions is met:\n  - A 200 OK response is returned with status `COMPLETED`, indicating successful signing\n  - Any other error response is returned, indicating that the signing process has failed and polling must stop\n\n### Parameters\n\n- `challengeId: string`\n\n### Returns\n\n- `{ status?: 'PENDING_CODE' | 'PENDING_SIGNING' | 'COMPLETED'; verificationCode?: string; }`\n\n  - `status?: 'PENDING_CODE' | 'PENDING_SIGNING' | 'COMPLETED'`\n  - `verificationCode?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.mfa.skID.smartID.signature.confirmV2('2751d7d9-df79-4412-b4c4-28aaa7075548');\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.mfa.skID.smartID.signature.confirmV2',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.mfa.skID.smartID.signature.confirmV2(\n  '2751d7d9-df79-4412-b4c4-28aaa7075548',\n);\n\nconsole.log(response.status);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v2/mfa/sk-id/smart-id/signature/$CHALLENGE_ID:confirm \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'mfa().skId().smartId().signature().confirmV2',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.mfa.skid.smartid.signature.SignatureConfirmV2Params\nimport com.plumery.api.models.mfa.skid.smartid.signature.SignatureConfirmV2Response\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val response: SignatureConfirmV2Response = client.mfa().skId().smartId().signature().confirmV2("2751d7d9-df79-4412-b4c4-28aaa7075548")\n}',
      },
      java: {
        method: 'mfa().skId().smartId().signature().confirmV2',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.mfa.skid.smartid.signature.SignatureConfirmV2Params;\nimport com.plumery.api.models.mfa.skid.smartid.signature.SignatureConfirmV2Response;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        SignatureConfirmV2Response response = client.mfa().skId().smartId().signature().confirmV2("2751d7d9-df79-4412-b4c4-28aaa7075548");\n    }\n}',
      },
    },
  },
  {
    name: 'initiate',
    endpoint: '/api/v2/mfa/sk-id/smart-id/signature/{challengeId}:initiate',
    httpMethod: 'post',
    summary: 'Initiate Smart-ID signing challenge',
    description:
      'Initiates SK-ID Smart-ID signing challenge.\n\nThis endpoint initiates the document signing process and returns the current signing session status.\n- When the status is `PENDING_CODE`, the signing session is not fully initialized and the verification code is not present in the response.\n- When the status is `PENDING_SIGNATURE`, the signing session is fully initialized and the response includes a verification code that the end user must confirm in the SK-ID Smart-ID application.',
    stainlessPath: '(resource) mfa.sk-id.smart-id.signature > (method) initiate',
    qualified: 'client.mfa.skID.smartID.signature.initiate',
    perLanguage: {
      typescript: {
        method: 'client.mfa.skID.smartID.signature.initiate',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.mfa.skID.smartID.signature.initiate(\n  '2751d7d9-df79-4412-b4c4-28aaa7075548',\n);\n\nconsole.log(response.status);",
      },
      kotlin: {
        method: 'mfa().skId().smartId().signature().initiate',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.mfa.skid.smartid.signature.SignatureInitiateParams\nimport com.plumery.api.models.mfa.skid.smartid.signature.SignatureInitiateResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val response: SignatureInitiateResponse = client.mfa().skId().smartId().signature().initiate("2751d7d9-df79-4412-b4c4-28aaa7075548")\n}',
      },
      java: {
        method: 'mfa().skId().smartId().signature().initiate',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.mfa.skid.smartid.signature.SignatureInitiateParams;\nimport com.plumery.api.models.mfa.skid.smartid.signature.SignatureInitiateResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        SignatureInitiateResponse response = client.mfa().skId().smartId().signature().initiate("2751d7d9-df79-4412-b4c4-28aaa7075548");\n    }\n}',
      },
    },
  },
  {
    name: 'confirm',
    endpoint: '/api/v2/mfa/sk-id/smart-id/signature/{challengeId}:confirm',
    httpMethod: 'post',
    summary: 'Confirm SK-ID Smart-ID signing challenge',
    description:
      'Confirms SK-ID Smart-ID signing challenge.\n\nThis endpoint initiates a signing session by sending a notification to the user’s phone, prompting them to confirm the signing request.\nThe client must then poll this endpoint to track the signing session status until the process is completed or fails.\n\nThe signing session progresses through the following statuses:\n  - `PENDING_CODE`\n    The signing session has been created, but is not fully initialized yet.\n    The verification code is not returned at this stage.\n\n  - `PENDING_SIGNATURE`\n    The signing session is fully initialized.\n    The verification code is returned and the user is expected to confirm the signing on their device.\n\n  - `COMPLETED`\n    The signing has been successfully completed.\n    The signature is verified and saved.\n\nThe client must poll this endpoint repeatedly until one of the following conditions is met:\n  - A 200 OK response is returned with status `COMPLETED`, indicating successful signing\n  - Any other error response is returned, indicating that the signing process has failed and polling must stop',
    stainlessPath: '(resource) mfa.sk-id.smart-id.signature > (method) confirm',
    qualified: 'client.mfa.skID.smartID.signature.confirm',
    perLanguage: {
      typescript: {
        method: 'client.mfa.skID.smartID.signature.confirm',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.mfa.skID.smartID.signature.confirm(\n  '2751d7d9-df79-4412-b4c4-28aaa7075548',\n);\n\nconsole.log(response.status);",
      },
      kotlin: {
        method: 'mfa().skId().smartId().signature().confirm',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.mfa.skid.smartid.signature.SignatureConfirmParams\nimport com.plumery.api.models.mfa.skid.smartid.signature.SignatureConfirmResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val response: SignatureConfirmResponse = client.mfa().skId().smartId().signature().confirm("2751d7d9-df79-4412-b4c4-28aaa7075548")\n}',
      },
      java: {
        method: 'mfa().skId().smartId().signature().confirm',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.mfa.skid.smartid.signature.SignatureConfirmParams;\nimport com.plumery.api.models.mfa.skid.smartid.signature.SignatureConfirmResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        SignatureConfirmResponse response = client.mfa().skId().smartId().signature().confirm("2751d7d9-df79-4412-b4c4-28aaa7075548");\n    }\n}',
      },
    },
  },
  {
    name: 'initiateV1',
    endpoint: '/api/v1/mfa/sk-id/mobile-id/signature/{challengeId}:initiate',
    httpMethod: 'post',
    summary: 'Initiate Mobile-ID signing challenge',
    description:
      'Initiates SK-ID Mobile-ID signing challenge.\n\nThis will initiate a process of document signing and return verification code which end-user should confirm in SK-ID application.',
    stainlessPath: '(resource) mfa.sk-id.mobile-id.signature > (method) initiateV1',
    qualified: 'client.mfa.skID.mobileID.signature.initiateV1',
    params: ['challengeId: string;'],
    response: '{ verificationCode?: string; }',
    markdown:
      "## initiateV1\n\n`client.mfa.skID.mobileID.signature.initiateV1(challengeId: string): { verificationCode?: string; }`\n\n**post** `/api/v1/mfa/sk-id/mobile-id/signature/{challengeId}:initiate`\n\nInitiates SK-ID Mobile-ID signing challenge.\n\nThis will initiate a process of document signing and return verification code which end-user should confirm in SK-ID application.\n\n### Parameters\n\n- `challengeId: string`\n\n### Returns\n\n- `{ verificationCode?: string; }`\n\n  - `verificationCode?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.mfa.skID.mobileID.signature.initiateV1('2751d7d9-df79-4412-b4c4-28aaa7075548');\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.mfa.skID.mobileID.signature.initiateV1',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.mfa.skID.mobileID.signature.initiateV1(\n  '2751d7d9-df79-4412-b4c4-28aaa7075548',\n);\n\nconsole.log(response.verificationCode);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/mfa/sk-id/mobile-id/signature/$CHALLENGE_ID:initiate \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'mfa().skId().mobileId().signature().initiateV1',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.mfa.skid.mobileid.signature.SignatureInitiateV1Params\nimport com.plumery.api.models.mfa.skid.mobileid.signature.SignatureInitiateV1Response\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val response: SignatureInitiateV1Response = client.mfa().skId().mobileId().signature().initiateV1("2751d7d9-df79-4412-b4c4-28aaa7075548")\n}',
      },
      java: {
        method: 'mfa().skId().mobileId().signature().initiateV1',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.mfa.skid.mobileid.signature.SignatureInitiateV1Params;\nimport com.plumery.api.models.mfa.skid.mobileid.signature.SignatureInitiateV1Response;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        SignatureInitiateV1Response response = client.mfa().skId().mobileId().signature().initiateV1("2751d7d9-df79-4412-b4c4-28aaa7075548");\n    }\n}',
      },
    },
  },
  {
    name: 'confirmV1',
    endpoint: '/api/v1/mfa/sk-id/mobile-id/signature/{challengeId}:confirm',
    httpMethod: 'post',
    summary: 'Confirm SK-ID Mobile-ID signing challenge',
    description:
      "Confirms SK-ID Mobile-ID signing challenge.\n\nThis will trigger notification to user's phone with prompt to confirm signing. Then get the signature, verify it and save.\nNote:\nThis endpoint should be polled repeatedly whenever a SK_ID_SIGNING_NOT_YET_COMPLETED_EXCEPTION error response is returned.\n  Continue polling until either:\n    - a successful response (204 No Content) is received, indicating signing has completed, or\n    - a different error response is returned, which means the signing process has failed and polling must stop.",
    stainlessPath: '(resource) mfa.sk-id.mobile-id.signature > (method) confirmV1',
    qualified: 'client.mfa.skID.mobileID.signature.confirmV1',
    params: ['challengeId: string;'],
    markdown:
      "## confirmV1\n\n`client.mfa.skID.mobileID.signature.confirmV1(challengeId: string): void`\n\n**post** `/api/v1/mfa/sk-id/mobile-id/signature/{challengeId}:confirm`\n\nConfirms SK-ID Mobile-ID signing challenge.\n\nThis will trigger notification to user's phone with prompt to confirm signing. Then get the signature, verify it and save.\nNote:\nThis endpoint should be polled repeatedly whenever a SK_ID_SIGNING_NOT_YET_COMPLETED_EXCEPTION error response is returned.\n  Continue polling until either:\n    - a successful response (204 No Content) is received, indicating signing has completed, or\n    - a different error response is returned, which means the signing process has failed and polling must stop.\n\n### Parameters\n\n- `challengeId: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.mfa.skID.mobileID.signature.confirmV1('2751d7d9-df79-4412-b4c4-28aaa7075548')\n```",
    perLanguage: {
      typescript: {
        method: 'client.mfa.skID.mobileID.signature.confirmV1',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.mfa.skID.mobileID.signature.confirmV1('2751d7d9-df79-4412-b4c4-28aaa7075548');",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/mfa/sk-id/mobile-id/signature/$CHALLENGE_ID:confirm \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'mfa().skId().mobileId().signature().confirmV1',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.mfa.skid.mobileid.signature.SignatureConfirmV1Params\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    client.mfa().skId().mobileId().signature().confirmV1("2751d7d9-df79-4412-b4c4-28aaa7075548")\n}',
      },
      java: {
        method: 'mfa().skId().mobileId().signature().confirmV1',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.mfa.skid.mobileid.signature.SignatureConfirmV1Params;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        client.mfa().skId().mobileId().signature().confirmV1("2751d7d9-df79-4412-b4c4-28aaa7075548");\n    }\n}',
      },
    },
  },
  {
    name: 'initiateV2',
    endpoint: '/api/v2/mfa/sk-id/mobile-id/signature/{challengeId}:initiate',
    httpMethod: 'post',
    summary: 'Initiate Mobile-ID signing challenge',
    description:
      'Initiates SK-ID Mobile-ID signing challenge.\n\nThis endpoint initiates the document signing process and returns the current signing session status.\n- When the status is `PENDING_CODE`, the signing session is not fully initialized and the verification code is not present in the response.\n- When the status is `PENDING_SIGNATURE`, the signing session is fully initialized and the response includes a verification code that the end user must confirm in the SK-ID Mobile-ID application.',
    stainlessPath: '(resource) mfa.sk-id.mobile-id.signature > (method) initiateV2',
    qualified: 'client.mfa.skID.mobileID.signature.initiateV2',
    params: ['challengeId: string;'],
    response: "{ status?: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; }",
    markdown:
      "## initiateV2\n\n`client.mfa.skID.mobileID.signature.initiateV2(challengeId: string): { status?: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; }`\n\n**post** `/api/v2/mfa/sk-id/mobile-id/signature/{challengeId}:initiate`\n\nInitiates SK-ID Mobile-ID signing challenge.\n\nThis endpoint initiates the document signing process and returns the current signing session status.\n- When the status is `PENDING_CODE`, the signing session is not fully initialized and the verification code is not present in the response.\n- When the status is `PENDING_SIGNATURE`, the signing session is fully initialized and the response includes a verification code that the end user must confirm in the SK-ID Mobile-ID application.\n\n### Parameters\n\n- `challengeId: string`\n\n### Returns\n\n- `{ status?: 'PENDING_CODE' | 'PENDING_SIGNING'; verificationCode?: string; }`\n\n  - `status?: 'PENDING_CODE' | 'PENDING_SIGNING'`\n  - `verificationCode?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.mfa.skID.mobileID.signature.initiateV2('2751d7d9-df79-4412-b4c4-28aaa7075548');\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.mfa.skID.mobileID.signature.initiateV2',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.mfa.skID.mobileID.signature.initiateV2(\n  '2751d7d9-df79-4412-b4c4-28aaa7075548',\n);\n\nconsole.log(response.status);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v2/mfa/sk-id/mobile-id/signature/$CHALLENGE_ID:initiate \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'mfa().skId().mobileId().signature().initiateV2',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.mfa.skid.mobileid.signature.SignatureInitiateV2Params\nimport com.plumery.api.models.mfa.skid.mobileid.signature.SignatureInitiateV2Response\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val response: SignatureInitiateV2Response = client.mfa().skId().mobileId().signature().initiateV2("2751d7d9-df79-4412-b4c4-28aaa7075548")\n}',
      },
      java: {
        method: 'mfa().skId().mobileId().signature().initiateV2',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.mfa.skid.mobileid.signature.SignatureInitiateV2Params;\nimport com.plumery.api.models.mfa.skid.mobileid.signature.SignatureInitiateV2Response;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        SignatureInitiateV2Response response = client.mfa().skId().mobileId().signature().initiateV2("2751d7d9-df79-4412-b4c4-28aaa7075548");\n    }\n}',
      },
    },
  },
  {
    name: 'confirmV2',
    endpoint: '/api/v2/mfa/sk-id/mobile-id/signature/{challengeId}:confirm',
    httpMethod: 'post',
    summary: 'Confirm SK-ID Mobile-ID signing challenge',
    description:
      'Confirms SK-ID Mobile-ID signing challenge.\n\nThis endpoint initiates a signing session by sending a notification to the user’s phone, prompting them to confirm the signing request.\nThe client must then poll this endpoint to track the signing session status until the process is completed or fails.\n\nThe signing session progresses through the following statuses:\n  - `PENDING_CODE`\n    The signing session has been created, but is not fully initialized yet.\n    The verification code is not returned at this stage.\n\n  - `PENDING_SIGNATURE`\n    The signing session is fully initialized.\n    The verification code is returned and the user is expected to confirm the signing on their device.\n\n  - `COMPLETED`\n    The signing has been successfully completed.\n    The signature is verified and saved.\n\nThe client must poll this endpoint repeatedly until one of the following conditions is met:\n  - A 200 OK response is returned with status `COMPLETED`, indicating successful signing\n  - Any other error response is returned, indicating that the signing process has failed and polling must stop',
    stainlessPath: '(resource) mfa.sk-id.mobile-id.signature > (method) confirmV2',
    qualified: 'client.mfa.skID.mobileID.signature.confirmV2',
    params: ['challengeId: string;'],
    response: "{ status?: 'PENDING_CODE' | 'PENDING_SIGNING' | 'COMPLETED'; verificationCode?: string; }",
    markdown:
      "## confirmV2\n\n`client.mfa.skID.mobileID.signature.confirmV2(challengeId: string): { status?: 'PENDING_CODE' | 'PENDING_SIGNING' | 'COMPLETED'; verificationCode?: string; }`\n\n**post** `/api/v2/mfa/sk-id/mobile-id/signature/{challengeId}:confirm`\n\nConfirms SK-ID Mobile-ID signing challenge.\n\nThis endpoint initiates a signing session by sending a notification to the user’s phone, prompting them to confirm the signing request.\nThe client must then poll this endpoint to track the signing session status until the process is completed or fails.\n\nThe signing session progresses through the following statuses:\n  - `PENDING_CODE`\n    The signing session has been created, but is not fully initialized yet.\n    The verification code is not returned at this stage.\n\n  - `PENDING_SIGNATURE`\n    The signing session is fully initialized.\n    The verification code is returned and the user is expected to confirm the signing on their device.\n\n  - `COMPLETED`\n    The signing has been successfully completed.\n    The signature is verified and saved.\n\nThe client must poll this endpoint repeatedly until one of the following conditions is met:\n  - A 200 OK response is returned with status `COMPLETED`, indicating successful signing\n  - Any other error response is returned, indicating that the signing process has failed and polling must stop\n\n### Parameters\n\n- `challengeId: string`\n\n### Returns\n\n- `{ status?: 'PENDING_CODE' | 'PENDING_SIGNING' | 'COMPLETED'; verificationCode?: string; }`\n\n  - `status?: 'PENDING_CODE' | 'PENDING_SIGNING' | 'COMPLETED'`\n  - `verificationCode?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.mfa.skID.mobileID.signature.confirmV2('2751d7d9-df79-4412-b4c4-28aaa7075548');\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.mfa.skID.mobileID.signature.confirmV2',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.mfa.skID.mobileID.signature.confirmV2(\n  '2751d7d9-df79-4412-b4c4-28aaa7075548',\n);\n\nconsole.log(response.status);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v2/mfa/sk-id/mobile-id/signature/$CHALLENGE_ID:confirm \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'mfa().skId().mobileId().signature().confirmV2',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.mfa.skid.mobileid.signature.SignatureConfirmV2Params\nimport com.plumery.api.models.mfa.skid.mobileid.signature.SignatureConfirmV2Response\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val response: SignatureConfirmV2Response = client.mfa().skId().mobileId().signature().confirmV2("2751d7d9-df79-4412-b4c4-28aaa7075548")\n}',
      },
      java: {
        method: 'mfa().skId().mobileId().signature().confirmV2',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.mfa.skid.mobileid.signature.SignatureConfirmV2Params;\nimport com.plumery.api.models.mfa.skid.mobileid.signature.SignatureConfirmV2Response;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        SignatureConfirmV2Response response = client.mfa().skId().mobileId().signature().confirmV2("2751d7d9-df79-4412-b4c4-28aaa7075548");\n    }\n}',
      },
    },
  },
  {
    name: 'initiate',
    endpoint: '/api/v2/mfa/sk-id/mobile-id/signature/{challengeId}:initiate',
    httpMethod: 'post',
    summary: 'Initiate Mobile-ID signing challenge',
    description:
      'Initiates SK-ID Mobile-ID signing challenge.\n\nThis endpoint initiates the document signing process and returns the current signing session status.\n- When the status is `PENDING_CODE`, the signing session is not fully initialized and the verification code is not present in the response.\n- When the status is `PENDING_SIGNATURE`, the signing session is fully initialized and the response includes a verification code that the end user must confirm in the SK-ID Mobile-ID application.',
    stainlessPath: '(resource) mfa.sk-id.mobile-id.signature > (method) initiate',
    qualified: 'client.mfa.skID.mobileID.signature.initiate',
    perLanguage: {
      typescript: {
        method: 'client.mfa.skID.mobileID.signature.initiate',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.mfa.skID.mobileID.signature.initiate(\n  '2751d7d9-df79-4412-b4c4-28aaa7075548',\n);\n\nconsole.log(response.status);",
      },
      kotlin: {
        method: 'mfa().skId().mobileId().signature().initiate',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.mfa.skid.mobileid.signature.SignatureInitiateParams\nimport com.plumery.api.models.mfa.skid.mobileid.signature.SignatureInitiateResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val response: SignatureInitiateResponse = client.mfa().skId().mobileId().signature().initiate("2751d7d9-df79-4412-b4c4-28aaa7075548")\n}',
      },
      java: {
        method: 'mfa().skId().mobileId().signature().initiate',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.mfa.skid.mobileid.signature.SignatureInitiateParams;\nimport com.plumery.api.models.mfa.skid.mobileid.signature.SignatureInitiateResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        SignatureInitiateResponse response = client.mfa().skId().mobileId().signature().initiate("2751d7d9-df79-4412-b4c4-28aaa7075548");\n    }\n}',
      },
    },
  },
  {
    name: 'confirm',
    endpoint: '/api/v2/mfa/sk-id/mobile-id/signature/{challengeId}:confirm',
    httpMethod: 'post',
    summary: 'Confirm SK-ID Mobile-ID signing challenge',
    description:
      'Confirms SK-ID Mobile-ID signing challenge.\n\nThis endpoint initiates a signing session by sending a notification to the user’s phone, prompting them to confirm the signing request.\nThe client must then poll this endpoint to track the signing session status until the process is completed or fails.\n\nThe signing session progresses through the following statuses:\n  - `PENDING_CODE`\n    The signing session has been created, but is not fully initialized yet.\n    The verification code is not returned at this stage.\n\n  - `PENDING_SIGNATURE`\n    The signing session is fully initialized.\n    The verification code is returned and the user is expected to confirm the signing on their device.\n\n  - `COMPLETED`\n    The signing has been successfully completed.\n    The signature is verified and saved.\n\nThe client must poll this endpoint repeatedly until one of the following conditions is met:\n  - A 200 OK response is returned with status `COMPLETED`, indicating successful signing\n  - Any other error response is returned, indicating that the signing process has failed and polling must stop',
    stainlessPath: '(resource) mfa.sk-id.mobile-id.signature > (method) confirm',
    qualified: 'client.mfa.skID.mobileID.signature.confirm',
    perLanguage: {
      typescript: {
        method: 'client.mfa.skID.mobileID.signature.confirm',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.mfa.skID.mobileID.signature.confirm(\n  '2751d7d9-df79-4412-b4c4-28aaa7075548',\n);\n\nconsole.log(response.status);",
      },
      kotlin: {
        method: 'mfa().skId().mobileId().signature().confirm',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.mfa.skid.mobileid.signature.SignatureConfirmParams\nimport com.plumery.api.models.mfa.skid.mobileid.signature.SignatureConfirmResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val response: SignatureConfirmResponse = client.mfa().skId().mobileId().signature().confirm("2751d7d9-df79-4412-b4c4-28aaa7075548")\n}',
      },
      java: {
        method: 'mfa().skId().mobileId().signature().confirm',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.mfa.skid.mobileid.signature.SignatureConfirmParams;\nimport com.plumery.api.models.mfa.skid.mobileid.signature.SignatureConfirmResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        SignatureConfirmResponse response = client.mfa().skId().mobileId().signature().confirm("2751d7d9-df79-4412-b4c4-28aaa7075548");\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/users/me',
    httpMethod: 'get',
    summary: 'Retrieve User Profile',
    description: 'Rerrieves the profile of the current authenticated user',
    stainlessPath: '(resource) users.me > (method) retrieve',
    qualified: 'client.users.me.retrieve',
    params: ['plmr-user-action?: boolean;'],
    response:
      '{ additionalDetails?: object; countryCode?: string; email?: string; firstName?: string; hasAvatar?: boolean; lastName?: string; personalId?: string; phoneNumber?: string; preferredLanguage?: string; preferredName?: string; username?: string; }',
    markdown:
      "## retrieve\n\n`client.users.me.retrieve(plmr-user-action?: boolean): { additionalDetails?: object; countryCode?: string; email?: string; firstName?: string; hasAvatar?: boolean; lastName?: string; personalId?: string; phoneNumber?: string; preferredLanguage?: string; preferredName?: string; username?: string; }`\n\n**get** `/api/v1/users/me`\n\nRerrieves the profile of the current authenticated user\n\n### Parameters\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ additionalDetails?: object; countryCode?: string; email?: string; firstName?: string; hasAvatar?: boolean; lastName?: string; personalId?: string; phoneNumber?: string; preferredLanguage?: string; preferredName?: string; username?: string; }`\n\n  - `additionalDetails?: object`\n  - `countryCode?: string`\n  - `email?: string`\n  - `firstName?: string`\n  - `hasAvatar?: boolean`\n  - `lastName?: string`\n  - `personalId?: string`\n  - `phoneNumber?: string`\n  - `preferredLanguage?: string`\n  - `preferredName?: string`\n  - `username?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst me = await client.users.me.retrieve();\n\nconsole.log(me);\n```",
    perLanguage: {
      typescript: {
        method: 'client.users.me.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst me = await client.users.me.retrieve();\n\nconsole.log(me.additionalDetails);",
      },
      http: {
        example: 'curl https://api.plumery.com/api/v1/users/me \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'users().me().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.users.me.MeRetrieveParams\nimport com.plumery.api.models.users.me.MeRetrieveResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val me: MeRetrieveResponse = client.users().me().retrieve()\n}',
      },
      java: {
        method: 'users().me().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.users.me.MeRetrieveParams;\nimport com.plumery.api.models.users.me.MeRetrieveResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        MeRetrieveResponse me = client.users().me().retrieve();\n    }\n}',
      },
    },
  },
  {
    name: 'updatePhoneNumber',
    endpoint: '/api/v1/users/me:update-phone-number',
    httpMethod: 'post',
    summary: 'Update Phone Number',
    description:
      "Update the user's phone number.\n\nDepending on the system configuration, this endpoint may either:\n- Require OTP verification: Send a one-time password via SMS to the new phone number. The phone number will be updated after successful verification using the 'Verify Phone Number' endpoint (returns 202 with verification details).\n- Complete immediately: Update the phone number directly without OTP verification (returns 204).",
    stainlessPath: '(resource) users.me > (method) updatePhoneNumber',
    qualified: 'client.users.me.updatePhoneNumber',
    params: ['phoneNumber: string;', 'plmr-user-action?: boolean;'],
    response: "{ verification?: { endpoint?: '/v1/users/me:verify-phone-number'; method?: 'TOTP-SMS'; }; }",
    markdown:
      "## updatePhoneNumber\n\n`client.users.me.updatePhoneNumber(phoneNumber: string, plmr-user-action?: boolean): { verification?: object; }`\n\n**post** `/api/v1/users/me:update-phone-number`\n\nUpdate the user's phone number.\n\nDepending on the system configuration, this endpoint may either:\n- Require OTP verification: Send a one-time password via SMS to the new phone number. The phone number will be updated after successful verification using the 'Verify Phone Number' endpoint (returns 202 with verification details).\n- Complete immediately: Update the phone number directly without OTP verification (returns 204).\n\n### Parameters\n\n- `phoneNumber: string`\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ verification?: { endpoint?: '/v1/users/me:verify-phone-number'; method?: 'TOTP-SMS'; }; }`\n  Indicates the next step to take after updating the phone\n\n  - `verification?: { endpoint?: '/v1/users/me:verify-phone-number'; method?: 'TOTP-SMS'; }`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.users.me.updatePhoneNumber({ phoneNumber: 'phoneNumber' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.users.me.updatePhoneNumber',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.users.me.updatePhoneNumber({ phoneNumber: 'phoneNumber' });\n\nconsole.log(response.verification);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/users/me:update-phone-number \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "phoneNumber": "phoneNumber"\n        }\'',
      },
      kotlin: {
        method: 'users().me().updatePhoneNumber',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.users.me.MeUpdatePhoneNumberParams\nimport com.plumery.api.models.users.me.MeUpdatePhoneNumberResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: MeUpdatePhoneNumberParams = MeUpdatePhoneNumberParams.builder()\n        .phoneNumber("phoneNumber")\n        .build()\n    val response: MeUpdatePhoneNumberResponse = client.users().me().updatePhoneNumber(params)\n}',
      },
      java: {
        method: 'users().me().updatePhoneNumber',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.users.me.MeUpdatePhoneNumberParams;\nimport com.plumery.api.models.users.me.MeUpdatePhoneNumberResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        MeUpdatePhoneNumberParams params = MeUpdatePhoneNumberParams.builder()\n            .phoneNumber("phoneNumber")\n            .build();\n        MeUpdatePhoneNumberResponse response = client.users().me().updatePhoneNumber(params);\n    }\n}',
      },
    },
  },
  {
    name: 'verifyPhoneNumber',
    endpoint: '/api/v1/users/me:verify-phone-number',
    httpMethod: 'post',
    summary: 'Verify Phone Number',
    description:
      'Verifies the one-time password sent to the new phone number.\nThe phone number will be changed once the OTP is verified successfully.\n\nNote: This endpoint is only available when OTP verification is enabled. If OTP verification is disabled, this endpoint will return a 400 error with code OTP_VALIDATION_NOT_REQUIRED.',
    stainlessPath: '(resource) users.me > (method) verifyPhoneNumber',
    qualified: 'client.users.me.verifyPhoneNumber',
    params: ['otp: string;', 'plmr-user-action?: boolean;'],
    markdown:
      "## verifyPhoneNumber\n\n`client.users.me.verifyPhoneNumber(otp: string, plmr-user-action?: boolean): void`\n\n**post** `/api/v1/users/me:verify-phone-number`\n\nVerifies the one-time password sent to the new phone number.\nThe phone number will be changed once the OTP is verified successfully.\n\nNote: This endpoint is only available when OTP verification is enabled. If OTP verification is disabled, this endpoint will return a 400 error with code OTP_VALIDATION_NOT_REQUIRED.\n\n### Parameters\n\n- `otp: string`\n  The One-Time Password (OTP) sent to the phone number for verification\n\n- `plmr-user-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.users.me.verifyPhoneNumber({ otp: '123456' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.users.me.verifyPhoneNumber',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.users.me.verifyPhoneNumber({ otp: '123456' });",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/users/me:verify-phone-number \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "otp": "123456"\n        }\'',
      },
      kotlin: {
        method: 'users().me().verifyPhoneNumber',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.users.me.MeVerifyPhoneNumberParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: MeVerifyPhoneNumberParams = MeVerifyPhoneNumberParams.builder()\n        .otp("123456")\n        .build()\n    client.users().me().verifyPhoneNumber(params)\n}',
      },
      java: {
        method: 'users().me().verifyPhoneNumber',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.users.me.MeVerifyPhoneNumberParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        MeVerifyPhoneNumberParams params = MeVerifyPhoneNumberParams.builder()\n            .otp("123456")\n            .build();\n        client.users().me().verifyPhoneNumber(params);\n    }\n}',
      },
    },
  },
  {
    name: 'updateEmailAddress',
    endpoint: '/api/v1/users/me:update-email-address',
    httpMethod: 'post',
    summary: 'Update Email Address',
    description:
      "Update the user's email address.\n\nDepending on the system configuration, this endpoint may either:\n- Require OTP verification: Send a one-time password to the new email address. The email address will be updated after successful verification using the 'Verify Email Address' endpoint (returns 202 with verification details).\n- Complete immediately: Update the email address directly without OTP verification (returns 204).",
    stainlessPath: '(resource) users.me > (method) updateEmailAddress',
    qualified: 'client.users.me.updateEmailAddress',
    params: ['emailAddress: string;', 'plmr-user-action?: boolean;'],
    response:
      "{ verification?: { endpoint?: '/v1/users/me:verify-email-address'; method?: 'TOTP-EMAIL'; }; }",
    markdown:
      "## updateEmailAddress\n\n`client.users.me.updateEmailAddress(emailAddress: string, plmr-user-action?: boolean): { verification?: object; }`\n\n**post** `/api/v1/users/me:update-email-address`\n\nUpdate the user's email address.\n\nDepending on the system configuration, this endpoint may either:\n- Require OTP verification: Send a one-time password to the new email address. The email address will be updated after successful verification using the 'Verify Email Address' endpoint (returns 202 with verification details).\n- Complete immediately: Update the email address directly without OTP verification (returns 204).\n\n### Parameters\n\n- `emailAddress: string`\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ verification?: { endpoint?: '/v1/users/me:verify-email-address'; method?: 'TOTP-EMAIL'; }; }`\n  Indicates the next step to take after updating the email\n\n  - `verification?: { endpoint?: '/v1/users/me:verify-email-address'; method?: 'TOTP-EMAIL'; }`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.users.me.updateEmailAddress({ emailAddress: 'emailAddress' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.users.me.updateEmailAddress',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.users.me.updateEmailAddress({ emailAddress: 'emailAddress' });\n\nconsole.log(response.verification);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/users/me:update-email-address \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "emailAddress": "emailAddress"\n        }\'',
      },
      kotlin: {
        method: 'users().me().updateEmailAddress',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.users.me.MeUpdateEmailAddressParams\nimport com.plumery.api.models.users.me.MeUpdateEmailAddressResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: MeUpdateEmailAddressParams = MeUpdateEmailAddressParams.builder()\n        .emailAddress("emailAddress")\n        .build()\n    val response: MeUpdateEmailAddressResponse = client.users().me().updateEmailAddress(params)\n}',
      },
      java: {
        method: 'users().me().updateEmailAddress',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.users.me.MeUpdateEmailAddressParams;\nimport com.plumery.api.models.users.me.MeUpdateEmailAddressResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        MeUpdateEmailAddressParams params = MeUpdateEmailAddressParams.builder()\n            .emailAddress("emailAddress")\n            .build();\n        MeUpdateEmailAddressResponse response = client.users().me().updateEmailAddress(params);\n    }\n}',
      },
    },
  },
  {
    name: 'verifyEmailAddress',
    endpoint: '/api/v1/users/me:verify-email-address',
    httpMethod: 'post',
    summary: 'Verify Email Address',
    description:
      'Verifies the one-time password sent to the new email address.\nThe email address will be changed once the OTP is verified successfully.\n\nNote: This endpoint is only available when OTP verification is enabled. If OTP verification is disabled, this endpoint will return a 400 error with code OTP_VALIDATION_NOT_REQUIRED.',
    stainlessPath: '(resource) users.me > (method) verifyEmailAddress',
    qualified: 'client.users.me.verifyEmailAddress',
    params: ['otp: string;', 'plmr-user-action?: boolean;'],
    markdown:
      "## verifyEmailAddress\n\n`client.users.me.verifyEmailAddress(otp: string, plmr-user-action?: boolean): void`\n\n**post** `/api/v1/users/me:verify-email-address`\n\nVerifies the one-time password sent to the new email address.\nThe email address will be changed once the OTP is verified successfully.\n\nNote: This endpoint is only available when OTP verification is enabled. If OTP verification is disabled, this endpoint will return a 400 error with code OTP_VALIDATION_NOT_REQUIRED.\n\n### Parameters\n\n- `otp: string`\n  The One-Time Password (OTP) sent to the email address for verification\n\n- `plmr-user-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.users.me.verifyEmailAddress({ otp: '123456' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.users.me.verifyEmailAddress',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.users.me.verifyEmailAddress({ otp: '123456' });",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/users/me:verify-email-address \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "otp": "123456"\n        }\'',
      },
      kotlin: {
        method: 'users().me().verifyEmailAddress',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.users.me.MeVerifyEmailAddressParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: MeVerifyEmailAddressParams = MeVerifyEmailAddressParams.builder()\n        .otp("123456")\n        .build()\n    client.users().me().verifyEmailAddress(params)\n}',
      },
      java: {
        method: 'users().me().verifyEmailAddress',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.users.me.MeVerifyEmailAddressParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        MeVerifyEmailAddressParams params = MeVerifyEmailAddressParams.builder()\n            .otp("123456")\n            .build();\n        client.users().me().verifyEmailAddress(params);\n    }\n}',
      },
    },
  },
  {
    name: 'updatePassword',
    endpoint: '/api/v1/users/me:update-password',
    httpMethod: 'post',
    summary: 'Update password',
    description:
      'This endpoint is used to initiate the process of password update, in case the user has decided to change their password for various reasons. Examples: they suspect it was compromised, they change once a year, etc..',
    stainlessPath: '(resource) users.me > (method) updatePassword',
    qualified: 'client.users.me.updatePassword',
    params: ['newPassword?: string;', 'plmr-user-action?: boolean;'],
    markdown:
      "## updatePassword\n\n`client.users.me.updatePassword(newPassword?: string, plmr-user-action?: boolean): void`\n\n**post** `/api/v1/users/me:update-password`\n\nThis endpoint is used to initiate the process of password update, in case the user has decided to change their password for various reasons. Examples: they suspect it was compromised, they change once a year, etc..\n\n### Parameters\n\n- `newPassword?: string`\n\n- `plmr-user-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.users.me.updatePassword()\n```",
    perLanguage: {
      typescript: {
        method: 'client.users.me.updatePassword',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.users.me.updatePassword();",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/users/me:update-password \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'users().me().updatePassword',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.users.me.MeUpdatePasswordParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    client.users().me().updatePassword()\n}',
      },
      java: {
        method: 'users().me().updatePassword',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.users.me.MeUpdatePasswordParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        client.users().me().updatePassword();\n    }\n}',
      },
    },
  },
  {
    name: 'updatePreferredLanguage',
    endpoint: '/api/v1/users/me:update-preferred-language',
    httpMethod: 'post',
    summary: 'Update Preferred Language',
    description:
      "This endpoint is used to update user's preferred language, supported by the bank. In that case the notifications will be sent using language preferences or default language, set by the bank",
    stainlessPath: '(resource) users.me > (method) updatePreferredLanguage',
    qualified: 'client.users.me.updatePreferredLanguage',
    params: ['preferredLanguage?: string;', 'plmr-user-action?: boolean;'],
    markdown:
      "## updatePreferredLanguage\n\n`client.users.me.updatePreferredLanguage(preferredLanguage?: string, plmr-user-action?: boolean): void`\n\n**post** `/api/v1/users/me:update-preferred-language`\n\nThis endpoint is used to update user's preferred language, supported by the bank. In that case the notifications will be sent using language preferences or default language, set by the bank\n\n### Parameters\n\n- `preferredLanguage?: string`\n\n- `plmr-user-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.users.me.updatePreferredLanguage()\n```",
    perLanguage: {
      typescript: {
        method: 'client.users.me.updatePreferredLanguage',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.users.me.updatePreferredLanguage();",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/users/me:update-preferred-language \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'users().me().updatePreferredLanguage',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.users.me.MeUpdatePreferredLanguageParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    client.users().me().updatePreferredLanguage()\n}',
      },
      java: {
        method: 'users().me().updatePreferredLanguage',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.users.me.MeUpdatePreferredLanguageParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        client.users().me().updatePreferredLanguage();\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/users/me/session',
    httpMethod: 'get',
    summary: 'Get Session TTL',
    description: 'Get the time-to-live (TTL) of the session in seconds.',
    stainlessPath: '(resource) users.me.session > (method) retrieve',
    qualified: 'client.users.me.session.retrieve',
    params: ['plmr-user-action?: boolean;'],
    response: '{ ttl?: number; }',
    markdown:
      "## retrieve\n\n`client.users.me.session.retrieve(plmr-user-action?: boolean): { ttl?: number; }`\n\n**get** `/api/v1/users/me/session`\n\nGet the time-to-live (TTL) of the session in seconds.\n\n### Parameters\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `{ ttl?: number; }`\n  The response object for the session TTL\n\n  - `ttl?: number`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst session = await client.users.me.session.retrieve();\n\nconsole.log(session);\n```",
    perLanguage: {
      typescript: {
        method: 'client.users.me.session.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst session = await client.users.me.session.retrieve();\n\nconsole.log(session.ttl);",
      },
      http: {
        example: 'curl https://api.plumery.com/api/v1/users/me/session \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'users().me().session().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.users.me.session.SessionRetrieveParams\nimport com.plumery.api.models.users.me.session.SessionRetrieveResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val session: SessionRetrieveResponse = client.users().me().session().retrieve()\n}',
      },
      java: {
        method: 'users().me().session().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.users.me.session.SessionRetrieveParams;\nimport com.plumery.api.models.users.me.session.SessionRetrieveResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        SessionRetrieveResponse session = client.users().me().session().retrieve();\n    }\n}',
      },
    },
  },
  {
    name: 'extend',
    endpoint: '/api/v1/users/me/session:extend',
    httpMethod: 'post',
    summary: 'Extend Session',
    description: 'Extends the session of the user with the default session value.',
    stainlessPath: '(resource) users.me.session > (method) extend',
    qualified: 'client.users.me.session.extend',
    params: ['plmr-user-action?: boolean;'],
    markdown:
      "## extend\n\n`client.users.me.session.extend(plmr-user-action?: boolean): void`\n\n**post** `/api/v1/users/me/session:extend`\n\nExtends the session of the user with the default session value.\n\n### Parameters\n\n- `plmr-user-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.users.me.session.extend()\n```",
    perLanguage: {
      typescript: {
        method: 'client.users.me.session.extend',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.users.me.session.extend();",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/users/me/session:extend \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'users().me().session().extend',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.users.me.session.SessionExtendParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    client.users().me().session().extend()\n}',
      },
      java: {
        method: 'users().me().session().extend',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.users.me.session.SessionExtendParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        client.users().me().session().extend();\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/users/me/avatar',
    httpMethod: 'get',
    summary: 'Get User Avatar',
    description: 'Retrieve the avatar of the authenticated user.',
    stainlessPath: '(resource) users.me.avatar > (method) retrieve',
    qualified: 'client.users.me.avatar.retrieve',
    params: ['plmr-user-action?: boolean;'],
    response: 'string',
    markdown:
      "## retrieve\n\n`client.users.me.avatar.retrieve(plmr-user-action?: boolean): string`\n\n**get** `/api/v1/users/me/avatar`\n\nRetrieve the avatar of the authenticated user.\n\n### Parameters\n\n- `plmr-user-action?: boolean`\n\n### Returns\n\n- `string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst avatar = await client.users.me.avatar.retrieve();\n\nconsole.log(avatar);\n\nconst content = await avatar.blob()\nconsole.log(content)\n```",
    perLanguage: {
      typescript: {
        method: 'client.users.me.avatar.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst avatar = await client.users.me.avatar.retrieve();\n\nconsole.log(avatar);\n\nconst content = await avatar.blob();\nconsole.log(content);",
      },
      http: {
        example: 'curl https://api.plumery.com/api/v1/users/me/avatar \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'users().me().avatar().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.core.http.HttpResponse\nimport com.plumery.api.models.users.me.avatar.AvatarRetrieveParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val avatar: HttpResponse = client.users().me().avatar().retrieve()\n}',
      },
      java: {
        method: 'users().me().avatar().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.core.http.HttpResponse;\nimport com.plumery.api.models.users.me.avatar.AvatarRetrieveParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        HttpResponse avatar = client.users().me().avatar().retrieve();\n    }\n}',
      },
    },
  },
  {
    name: 'update',
    endpoint: '/api/v1/users/me/avatar',
    httpMethod: 'put',
    summary: 'Upload User Avatar',
    description: 'Upload a new avatar for the authenticated user.',
    stainlessPath: '(resource) users.me.avatar > (method) update',
    qualified: 'client.users.me.avatar.update',
    params: ['file: string;', 'filename: string;', 'plmr-user-action?: boolean;'],
    markdown:
      "## update\n\n`client.users.me.avatar.update(file: string, filename: string, plmr-user-action?: boolean): void`\n\n**put** `/api/v1/users/me/avatar`\n\nUpload a new avatar for the authenticated user.\n\n### Parameters\n\n- `file: string`\n  The image file to be uploaded (supports JPEG, JPG PNG, WebP)\n\n- `filename: string`\n  The name of the file being uploaded\n\n- `plmr-user-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.users.me.avatar.update({ file: fs.createReadStream('path/to/file'), filename: 'filename' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.users.me.avatar.update',
        example:
          "import fs from 'fs';\nimport Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.users.me.avatar.update({\n  file: fs.createReadStream('path/to/file'),\n  filename: 'filename',\n});",
      },
      http: {
        example:
          "curl https://api.plumery.com/api/v1/users/me/avatar \\\n    -X PUT \\\n    -H 'Content-Type: multipart/form-data' \\\n    -H \"Cookie: $SESSION\" \\\n    -F 'file=@/path/to/file' \\\n    -F filename=filename",
      },
      kotlin: {
        method: 'users().me().avatar().update',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.users.me.avatar.AvatarUpdateParams\nimport java.io.ByteArrayInputStream\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: AvatarUpdateParams = AvatarUpdateParams.builder()\n        .file("Example data".byteInputStream())\n        .filename("filename")\n        .build()\n    client.users().me().avatar().update(params)\n}',
      },
      java: {
        method: 'users().me().avatar().update',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.users.me.avatar.AvatarUpdateParams;\nimport java.io.ByteArrayInputStream;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        AvatarUpdateParams params = AvatarUpdateParams.builder()\n            .file(new ByteArrayInputStream("Example data".getBytes()))\n            .filename("filename")\n            .build();\n        client.users().me().avatar().update(params);\n    }\n}',
      },
    },
  },
  {
    name: 'delete',
    endpoint: '/api/v1/users/me/avatar',
    httpMethod: 'delete',
    summary: 'Delete User Avatar',
    description: 'Delete the avatar of the authenticated user.',
    stainlessPath: '(resource) users.me.avatar > (method) delete',
    qualified: 'client.users.me.avatar.delete',
    params: ['plmr-user-action?: boolean;'],
    markdown:
      "## delete\n\n`client.users.me.avatar.delete(plmr-user-action?: boolean): void`\n\n**delete** `/api/v1/users/me/avatar`\n\nDelete the avatar of the authenticated user.\n\n### Parameters\n\n- `plmr-user-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.users.me.avatar.delete()\n```",
    perLanguage: {
      typescript: {
        method: 'client.users.me.avatar.delete',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.users.me.avatar.delete();",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/users/me/avatar \\\n    -X DELETE \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'users().me().avatar().delete',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.users.me.avatar.AvatarDeleteParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    client.users().me().avatar().delete()\n}',
      },
      java: {
        method: 'users().me().avatar().delete',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.users.me.avatar.AvatarDeleteParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        client.users().me().avatar().delete();\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/users/me/webauthn/credentials',
    httpMethod: 'get',
    summary: 'List WebAuthn Credentials',
    description:
      "Lists the WebAuthn credentials owned by the authenticated user, with user-facing\nmetadata (label, transports, created-at, last-used-at). Only the caller's own\ncredentials are returned — never any other user's.",
    stainlessPath: '(resource) users.me.webauthn.credentials > (method) retrieve',
    qualified: 'client.users.me.webauthn.credentials.retrieve',
    response:
      '{ credentials: { id: string; backupEligible: boolean; backupState: boolean; createdAt: string; transports: string[]; label?: string; lastUsedAt?: string; }[]; }',
    markdown:
      "## retrieve\n\n`client.users.me.webauthn.credentials.retrieve(): { credentials: object[]; }`\n\n**get** `/api/v1/users/me/webauthn/credentials`\n\nLists the WebAuthn credentials owned by the authenticated user, with user-facing\nmetadata (label, transports, created-at, last-used-at). Only the caller's own\ncredentials are returned — never any other user's.\n\n### Returns\n\n- `{ credentials: { id: string; backupEligible: boolean; backupState: boolean; createdAt: string; transports: string[]; label?: string; lastUsedAt?: string; }[]; }`\n\n  - `credentials: { id: string; backupEligible: boolean; backupState: boolean; createdAt: string; transports: string[]; label?: string; lastUsedAt?: string; }[]`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst credential = await client.users.me.webauthn.credentials.retrieve();\n\nconsole.log(credential);\n```",
    perLanguage: {
      typescript: {
        method: 'client.users.me.webauthn.credentials.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst credential = await client.users.me.webauthn.credentials.retrieve();\n\nconsole.log(credential.credentials);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/users/me/webauthn/credentials \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'users().me().webauthn().credentials().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.users.me.webauthn.credentials.CredentialRetrieveParams\nimport com.plumery.api.models.users.me.webauthn.credentials.CredentialRetrieveResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val credential: CredentialRetrieveResponse = client.users().me().webauthn().credentials().retrieve()\n}',
      },
      java: {
        method: 'users().me().webauthn().credentials().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.users.me.webauthn.credentials.CredentialRetrieveParams;\nimport com.plumery.api.models.users.me.webauthn.credentials.CredentialRetrieveResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        CredentialRetrieveResponse credential = client.users().me().webauthn().credentials().retrieve();\n    }\n}',
      },
    },
  },
  {
    name: 'registerInitiate',
    endpoint: '/api/v1/users/me/webauthn/credentials:register-initiate',
    httpMethod: 'post',
    summary: 'Initiate WebAuthn Enrollment',
    description:
      'Starts a WebAuthn passkey enrollment ceremony for the authenticated user\n(identified by the `plmr-user-id` header set by the gateway from the bearer token).\nResponse contains a W3C `PublicKeyCredentialCreationOptions` object. The generated\nchallenge is stored server-side and consumed by `:register-verify`.',
    stainlessPath: '(resource) users.me.webauthn.credentials > (method) registerInitiate',
    qualified: 'client.users.me.webauthn.credentials.registerInitiate',
    response: '{ publicKey: object; }',
    markdown:
      "## registerInitiate\n\n`client.users.me.webauthn.credentials.registerInitiate(): { publicKey: object; }`\n\n**post** `/api/v1/users/me/webauthn/credentials:register-initiate`\n\nStarts a WebAuthn passkey enrollment ceremony for the authenticated user\n(identified by the `plmr-user-id` header set by the gateway from the bearer token).\nResponse contains a W3C `PublicKeyCredentialCreationOptions` object. The generated\nchallenge is stored server-side and consumed by `:register-verify`.\n\n### Returns\n\n- `{ publicKey: object; }`\n\n  - `publicKey: object`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.users.me.webauthn.credentials.registerInitiate();\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.users.me.webauthn.credentials.registerInitiate',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.users.me.webauthn.credentials.registerInitiate();\n\nconsole.log(response.publicKey);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/users/me/webauthn/credentials:register-initiate \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'users().me().webauthn().credentials().registerInitiate',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.users.me.webauthn.credentials.CredentialRegisterInitiateParams\nimport com.plumery.api.models.users.me.webauthn.credentials.CredentialRegisterInitiateResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val response: CredentialRegisterInitiateResponse = client.users().me().webauthn().credentials().registerInitiate()\n}',
      },
      java: {
        method: 'users().me().webauthn().credentials().registerInitiate',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.users.me.webauthn.credentials.CredentialRegisterInitiateParams;\nimport com.plumery.api.models.users.me.webauthn.credentials.CredentialRegisterInitiateResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        CredentialRegisterInitiateResponse response = client.users().me().webauthn().credentials().registerInitiate();\n    }\n}',
      },
    },
  },
  {
    name: 'registerVerify',
    endpoint: '/api/v1/users/me/webauthn/credentials:register-verify',
    httpMethod: 'post',
    summary: 'Verify WebAuthn Enrollment',
    description:
      "Completes the WebAuthn passkey enrollment for the authenticated user.\nThe client submits the authenticator's attestation response; the server verifies\nthe pending challenge (from `:register-initiate`) and persists the credential.",
    stainlessPath: '(resource) users.me.webauthn.credentials > (method) registerVerify',
    qualified: 'client.users.me.webauthn.credentials.registerVerify',
    params: ['response: object;', 'label?: string;'],
    markdown:
      "## registerVerify\n\n`client.users.me.webauthn.credentials.registerVerify(response: object, label?: string): void`\n\n**post** `/api/v1/users/me/webauthn/credentials:register-verify`\n\nCompletes the WebAuthn passkey enrollment for the authenticated user.\nThe client submits the authenticator's attestation response; the server verifies\nthe pending challenge (from `:register-initiate`) and persists the credential.\n\n### Parameters\n\n- `response: object`\n  The W3C `RegistrationResponseJSON` returned by `navigator.credentials.create(...)`.\nSee https://www.w3.org/TR/webauthn-3/#dictdef-registrationresponsejson.\n\n\n- `label?: string`\n  Optional user-facing label for the credential (e.g. `iPhone 15`).\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.users.me.webauthn.credentials.registerVerify({ response: {} })\n```",
    perLanguage: {
      typescript: {
        method: 'client.users.me.webauthn.credentials.registerVerify',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.users.me.webauthn.credentials.registerVerify({ response: {} });",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/users/me/webauthn/credentials:register-verify \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "response": {}\n        }\'',
      },
      kotlin: {
        method: 'users().me().webauthn().credentials().registerVerify',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.core.JsonValue\nimport com.plumery.api.models.users.me.webauthn.credentials.CredentialRegisterVerifyParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: CredentialRegisterVerifyParams = CredentialRegisterVerifyParams.builder()\n        .response(JsonValue.from(mapOf<String, Any>()))\n        .build()\n    client.users().me().webauthn().credentials().registerVerify(params)\n}',
      },
      java: {
        method: 'users().me().webauthn().credentials().registerVerify',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.core.JsonValue;\nimport com.plumery.api.models.users.me.webauthn.credentials.CredentialRegisterVerifyParams;\nimport java.util.Map;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        CredentialRegisterVerifyParams params = CredentialRegisterVerifyParams.builder()\n            .response(JsonValue.from(<String, Object>Map.of()))\n            .build();\n        client.users().me().webauthn().credentials().registerVerify(params);\n    }\n}',
      },
    },
  },
  {
    name: 'delete',
    endpoint: '/api/v1/users/me/webauthn/credentials/{credentialId}:delete',
    httpMethod: 'post',
    summary: 'Remove WebAuthn Credential',
    description:
      "Removes a single WebAuthn credential owned by the authenticated user. Idempotent —\nreturns 204 whether the credential existed or not. Scoped by userId, so a caller\nattempting another user's credential is a no-op (nothing is deleted, the victim's\ncredential stays put).",
    stainlessPath: '(resource) users.me.webauthn.credentials > (method) delete',
    qualified: 'client.users.me.webauthn.credentials.delete',
    params: ['credentialId: string;'],
    markdown:
      "## delete\n\n`client.users.me.webauthn.credentials.delete(credentialId: string): void`\n\n**post** `/api/v1/users/me/webauthn/credentials/{credentialId}:delete`\n\nRemoves a single WebAuthn credential owned by the authenticated user. Idempotent —\nreturns 204 whether the credential existed or not. Scoped by userId, so a caller\nattempting another user's credential is a no-op (nothing is deleted, the victim's\ncredential stays put).\n\n### Parameters\n\n- `credentialId: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.users.me.webauthn.credentials.delete('credentialId')\n```",
    perLanguage: {
      typescript: {
        method: 'client.users.me.webauthn.credentials.delete',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.users.me.webauthn.credentials.delete('credentialId');",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/users/me/webauthn/credentials/$CREDENTIAL_ID:delete \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'users().me().webauthn().credentials().delete',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.users.me.webauthn.credentials.CredentialDeleteParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    client.users().me().webauthn().credentials().delete("credentialId")\n}',
      },
      java: {
        method: 'users().me().webauthn().credentials().delete',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.users.me.webauthn.credentials.CredentialDeleteParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        client.users().me().webauthn().credentials().delete("credentialId");\n    }\n}',
      },
    },
  },
  {
    name: 'deleteAll',
    endpoint: '/api/v1/users/me/webauthn/credentials:delete-all',
    httpMethod: 'post',
    summary: 'Remove All WebAuthn Credentials',
    description:
      'Removes every WebAuthn credential owned by the authenticated user. Idempotent —\nreturns 204 whether the user had zero or many credentials. After this the user\nmust sign in via another method and re-enroll a passkey.',
    stainlessPath: '(resource) users.me.webauthn.credentials > (method) deleteAll',
    qualified: 'client.users.me.webauthn.credentials.deleteAll',
    markdown:
      "## deleteAll\n\n`client.users.me.webauthn.credentials.deleteAll(): void`\n\n**post** `/api/v1/users/me/webauthn/credentials:delete-all`\n\nRemoves every WebAuthn credential owned by the authenticated user. Idempotent —\nreturns 204 whether the user had zero or many credentials. After this the user\nmust sign in via another method and re-enroll a passkey.\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.users.me.webauthn.credentials.deleteAll()\n```",
    perLanguage: {
      typescript: {
        method: 'client.users.me.webauthn.credentials.deleteAll',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.users.me.webauthn.credentials.deleteAll();",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/users/me/webauthn/credentials:delete-all \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'users().me().webauthn().credentials().deleteAll',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.users.me.webauthn.credentials.CredentialDeleteAllParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    client.users().me().webauthn().credentials().deleteAll()\n}',
      },
      java: {
        method: 'users().me().webauthn().credentials().deleteAll',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.users.me.webauthn.credentials.CredentialDeleteAllParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        client.users().me().webauthn().credentials().deleteAll();\n    }\n}',
      },
    },
  },
  {
    name: 'refreshNotificationsToken',
    endpoint: '/api/v1/me/devices/{deviceId}:refresh-notifications-token',
    httpMethod: 'post',
    summary: 'Update Push Notifications Token for Device',
    description:
      'Register the token received from the push notifications provider for a device.\nThis step is mandatory to enable a specific device to receive push notifications.',
    stainlessPath: '(resource) me.devices > (method) refreshNotificationsToken',
    qualified: 'client.me.devices.refreshNotificationsToken',
    params: [
      'deviceId: string;',
      'pushNotificationsToken: string;',
      'userId: string;',
      'plmr-user-action?: boolean;',
    ],
    markdown:
      "## refreshNotificationsToken\n\n`client.me.devices.refreshNotificationsToken(deviceId: string, pushNotificationsToken: string, userId: string, plmr-user-action?: boolean): void`\n\n**post** `/api/v1/me/devices/{deviceId}:refresh-notifications-token`\n\nRegister the token received from the push notifications provider for a device.\nThis step is mandatory to enable a specific device to receive push notifications.\n\n### Parameters\n\n- `deviceId: string`\n\n- `pushNotificationsToken: string`\n  Device token received from the push notifications provider\n\n\n- `userId: string`\n\n- `plmr-user-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.me.devices.refreshNotificationsToken('6878951b-256b-4baa-9e81-ad4c577adc4e', { pushNotificationsToken: 'pushNotificationsToken', userId: 'P' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.me.devices.refreshNotificationsToken',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.me.devices.refreshNotificationsToken('6878951b-256b-4baa-9e81-ad4c577adc4e', {\n  pushNotificationsToken: 'pushNotificationsToken',\n  userId: 'P',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/me/devices/$DEVICE_ID:refresh-notifications-token \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "pushNotificationsToken": "pushNotificationsToken"\n        }\'',
      },
      kotlin: {
        method: 'me().devices().refreshNotificationsToken',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.me.devices.DeviceRefreshNotificationsTokenParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: DeviceRefreshNotificationsTokenParams = DeviceRefreshNotificationsTokenParams.builder()\n        .deviceId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .userId("P")\n        .pushNotificationsToken("pushNotificationsToken")\n        .build()\n    client.me().devices().refreshNotificationsToken(params)\n}',
      },
      java: {
        method: 'me().devices().refreshNotificationsToken',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.me.devices.DeviceRefreshNotificationsTokenParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        DeviceRefreshNotificationsTokenParams params = DeviceRefreshNotificationsTokenParams.builder()\n            .deviceId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .userId("P")\n            .pushNotificationsToken("pushNotificationsToken")\n            .build();\n        client.me().devices().refreshNotificationsToken(params);\n    }\n}',
      },
    },
  },
  {
    name: 'logout',
    endpoint: '/api/v1/staff/auth:logout',
    httpMethod: 'post',
    summary: 'Log out the current staff user.',
    description:
      'Terminates the staff user session referenced by the `auth-session` cookie.\nThe session is removed from the upstream session store. The client should drop the `auth-session` cookie locally.\n',
    stainlessPath: '(resource) staff.auth > (method) logout',
    qualified: 'client.staff.auth.logout',
    markdown:
      "## logout\n\n`client.staff.auth.logout(): void`\n\n**post** `/api/v1/staff/auth:logout`\n\nTerminates the staff user session referenced by the `auth-session` cookie.\nThe session is removed from the upstream session store. The client should drop the `auth-session` cookie locally.\n\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.staff.auth.logout()\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.auth.logout',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.staff.auth.logout();",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/staff/auth:logout \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'staff().auth().logout',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.auth.AuthLogoutParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    client.staff().auth().logout()\n}',
      },
      java: {
        method: 'staff().auth().logout',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.auth.AuthLogoutParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        client.staff().auth().logout();\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/staff/me',
    httpMethod: 'get',
    summary: 'Retrieve the currently authenticated staff user.',
    description:
      'Returns the profile of the staff user referenced by the `auth-session` cookie,\nas captured from the Identity Provider during SAML login and held for the lifetime of the session.\n',
    stainlessPath: '(resource) staff.me > (method) retrieve',
    qualified: 'client.staff.me.retrieve',
    response: '{ email?: string; firstName?: string; groups?: string[]; lastName?: string; }',
    markdown:
      "## retrieve\n\n`client.staff.me.retrieve(): { email?: string; firstName?: string; groups?: string[]; lastName?: string; }`\n\n**get** `/api/v1/staff/me`\n\nReturns the profile of the staff user referenced by the `auth-session` cookie,\nas captured from the Identity Provider during SAML login and held for the lifetime of the session.\n\n\n### Returns\n\n- `{ email?: string; firstName?: string; groups?: string[]; lastName?: string; }`\n  Profile details of a staff user, as provided by the IdP (Identity provider) during SAML login.\n\n\n  - `email?: string`\n  - `firstName?: string`\n  - `groups?: string[]`\n  - `lastName?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst me = await client.staff.me.retrieve();\n\nconsole.log(me);\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.me.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst me = await client.staff.me.retrieve();\n\nconsole.log(me.email);",
      },
      http: {
        example: 'curl https://api.plumery.com/api/v1/staff/me \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'staff().me().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.me.MeRetrieveParams\nimport com.plumery.api.models.staff.me.MeRetrieveResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val me: MeRetrieveResponse = client.staff().me().retrieve()\n}',
      },
      java: {
        method: 'staff().me().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.me.MeRetrieveParams;\nimport com.plumery.api.models.staff.me.MeRetrieveResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        MeRetrieveResponse me = client.staff().me().retrieve();\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/staff/me/session',
    httpMethod: 'get',
    summary: 'Retrieve the remaining TTL of the current staff session.',
    description:
      'Returns the remaining time to live (in seconds) of the staff user session referenced by the `auth-session` cookie.\n',
    stainlessPath: '(resource) staff.me.session > (method) retrieve',
    qualified: 'client.staff.me.session.retrieve',
    response: '{ ttl?: number; }',
    markdown:
      "## retrieve\n\n`client.staff.me.session.retrieve(): { ttl?: number; }`\n\n**get** `/api/v1/staff/me/session`\n\nReturns the remaining time to live (in seconds) of the staff user session referenced by the `auth-session` cookie.\n\n\n### Returns\n\n- `{ ttl?: number; }`\n\n  - `ttl?: number`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst session = await client.staff.me.session.retrieve();\n\nconsole.log(session);\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.me.session.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst session = await client.staff.me.session.retrieve();\n\nconsole.log(session.ttl);",
      },
      http: {
        example: 'curl https://api.plumery.com/api/v1/staff/me/session \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'staff().me().session().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.me.session.SessionRetrieveParams\nimport com.plumery.api.models.staff.me.session.SessionRetrieveResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val session: SessionRetrieveResponse = client.staff().me().session().retrieve()\n}',
      },
      java: {
        method: 'staff().me().session().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.me.session.SessionRetrieveParams;\nimport com.plumery.api.models.staff.me.session.SessionRetrieveResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        SessionRetrieveResponse session = client.staff().me().session().retrieve();\n    }\n}',
      },
    },
  },
  {
    name: 'extend',
    endpoint: '/api/v1/staff/me/session:extend',
    httpMethod: 'post',
    summary: 'Extend the current staff session.',
    description:
      'Extends the staff user session referenced by the `auth-session` cookie by resetting its TTL to the default session timeout.\n',
    stainlessPath: '(resource) staff.me.session > (method) extend',
    qualified: 'client.staff.me.session.extend',
    markdown:
      "## extend\n\n`client.staff.me.session.extend(): void`\n\n**post** `/api/v1/staff/me/session:extend`\n\nExtends the staff user session referenced by the `auth-session` cookie by resetting its TTL to the default session timeout.\n\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.staff.me.session.extend()\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.me.session.extend',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.staff.me.session.extend();",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/staff/me/session:extend \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'staff().me().session().extend',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.me.session.SessionExtendParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    client.staff().me().session().extend()\n}',
      },
      java: {
        method: 'staff().me().session().extend',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.me.session.SessionExtendParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        client.staff().me().session().extend();\n    }\n}',
      },
    },
  },
  {
    name: 'search',
    endpoint: '/api/v1/staff/audit-trail:search',
    httpMethod: 'post',
    summary: 'Search Audit Trail Events',
    description:
      'Searches audit trail events based on the given criteria.\n\n**Pagination Limits:** \n- The `limit` parameter has a maximum value of 100\n- The sum of `offset` + `limit` cannot exceed 10,000\n\nIf these limits are exceeded, appropriate error responses will be returned.\n',
    stainlessPath: '(resource) staff.audit-trail > (method) search',
    qualified: 'client.staff.auditTrail.search',
    params: [
      'dateFrom: string;',
      'dateTo: string;',
      'limit: number;',
      'offset: number;',
      "filters?: { type: 'CONDITION' | 'GROUP'; };",
      'search?: string;',
      "sortType?: 'ASC' | 'DESC';",
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    response:
      "{ events: { eventId: string; eventSource: string; timestamp: string; apiRequestDetails?: { httpMethod?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'; requestBody?: string; requestId?: string; uri?: string; }; enrolmentId?: string; eventDescription?: string; eventName?: string; eventOrigin?: 'INTERNAL' | 'EXTERNAL'; eventType?: string; metadata?: string; partyId?: string; payload?: string; responseStatus?: string; responseStatusCode?: number; staffId?: string; staffRoles?: string[]; userAgent?: string; userId?: string; userLocation?: string; userSessionId?: string; }[]; }",
    markdown:
      "## search\n\n`client.staff.auditTrail.search(dateFrom: string, dateTo: string, limit: number, offset: number, filters?: { type: 'CONDITION' | 'GROUP'; }, search?: string, sortType?: 'ASC' | 'DESC', plmr-user-action?: boolean, X-Request-ID?: string): { events: object[]; }`\n\n**post** `/api/v1/staff/audit-trail:search`\n\nSearches audit trail events based on the given criteria.\n\n**Pagination Limits:** \n- The `limit` parameter has a maximum value of 100\n- The sum of `offset` + `limit` cannot exceed 10,000\n\nIf these limits are exceeded, appropriate error responses will be returned.\n\n\n### Parameters\n\n- `dateFrom: string`\n  Start date (inclusive) for filtering events.\n\n\n- `dateTo: string`\n  End date (inclusive) for filtering events.\n\n\n- `limit: number`\n  The maximum number of items to return.\n\n- `offset: number`\n  The number of items to skip (for pagination).\n\n- `filters?: { type: 'CONDITION' | 'GROUP'; }`\n  Base type for condition nodes (either group or leaf condition).\n  - `type: 'CONDITION' | 'GROUP'`\n    Node type discriminator (\"CONDITION\" or \"GROUP\").\n\n- `search?: string`\n  A free-text search string used to match content across multiple fields.\n\n\n- `sortType?: 'ASC' | 'DESC'`\n  Sort order for events based on their timestamp.\n\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ events: { eventId: string; eventSource: string; timestamp: string; apiRequestDetails?: { httpMethod?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'; requestBody?: string; requestId?: string; uri?: string; }; enrolmentId?: string; eventDescription?: string; eventName?: string; eventOrigin?: 'INTERNAL' | 'EXTERNAL'; eventType?: string; metadata?: string; partyId?: string; payload?: string; responseStatus?: string; responseStatusCode?: number; staffId?: string; staffRoles?: string[]; userAgent?: string; userId?: string; userLocation?: string; userSessionId?: string; }[]; }`\n  List of events matching the search criteria.\n\n\n  - `events: { eventId: string; eventSource: string; timestamp: string; apiRequestDetails?: { httpMethod?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'; requestBody?: string; requestId?: string; uri?: string; }; enrolmentId?: string; eventDescription?: string; eventName?: string; eventOrigin?: 'INTERNAL' | 'EXTERNAL'; eventType?: string; metadata?: string; partyId?: string; payload?: string; responseStatus?: string; responseStatusCode?: number; staffId?: string; staffRoles?: string[]; userAgent?: string; userId?: string; userLocation?: string; userSessionId?: string; }[]`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.staff.auditTrail.search({\n  dateFrom: '2019-12-27',\n  dateTo: '2019-12-27',\n  limit: 10,\n  offset: 0,\n});\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.auditTrail.search',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.staff.auditTrail.search({\n  dateFrom: '2019-12-27',\n  dateTo: '2019-12-27',\n  limit: 10,\n  offset: 0,\n});\n\nconsole.log(response.events);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/staff/audit-trail:search \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "dateFrom": "2019-12-27",\n          "dateTo": "2019-12-27",\n          "limit": 10,\n          "offset": 0\n        }\'',
      },
      kotlin: {
        method: 'staff().auditTrail().search',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.audittrail.AuditTrailSearchParams\nimport com.plumery.api.models.staff.audittrail.AuditTrailSearchResponse\nimport java.time.LocalDate\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: AuditTrailSearchParams = AuditTrailSearchParams.builder()\n        .dateFrom(LocalDate.parse("2019-12-27"))\n        .dateTo(LocalDate.parse("2019-12-27"))\n        .limit(10)\n        .offset(0)\n        .build()\n    val response: AuditTrailSearchResponse = client.staff().auditTrail().search(params)\n}',
      },
      java: {
        method: 'staff().auditTrail().search',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.audittrail.AuditTrailSearchParams;\nimport com.plumery.api.models.staff.audittrail.AuditTrailSearchResponse;\nimport java.time.LocalDate;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        AuditTrailSearchParams params = AuditTrailSearchParams.builder()\n            .dateFrom(LocalDate.parse("2019-12-27"))\n            .dateTo(LocalDate.parse("2019-12-27"))\n            .limit(10)\n            .offset(0)\n            .build();\n        AuditTrailSearchResponse response = client.staff().auditTrail().search(params);\n    }\n}',
      },
    },
  },
  {
    name: 'export',
    endpoint: '/api/v1/staff/audit-trail:export',
    httpMethod: 'post',
    summary: 'Export Audit Trail Events',
    description:
      'Exports audit trail search results as a downloadable CSV or JSON file, depending on the requested format.\n',
    stainlessPath: '(resource) staff.audit-trail > (method) export',
    qualified: 'client.staff.auditTrail.export',
    params: [
      'dateFrom: string;',
      'dateTo: string;',
      "format?: 'csv' | 'json';",
      "filters?: { type: 'CONDITION' | 'GROUP'; };",
      'search?: string;',
      "sortType?: 'ASC' | 'DESC';",
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    response: 'string',
    markdown:
      "## export\n\n`client.staff.auditTrail.export(dateFrom: string, dateTo: string, format?: 'csv' | 'json', filters?: { type: 'CONDITION' | 'GROUP'; }, search?: string, sortType?: 'ASC' | 'DESC', plmr-user-action?: boolean, X-Request-ID?: string): string`\n\n**post** `/api/v1/staff/audit-trail:export`\n\nExports audit trail search results as a downloadable CSV or JSON file, depending on the requested format.\n\n\n### Parameters\n\n- `dateFrom: string`\n  Start date (inclusive) for filtering events.\n\n\n- `dateTo: string`\n  End date (inclusive) for filtering events.\n\n\n- `format?: 'csv' | 'json'`\n  Output format of the export\n\n- `filters?: { type: 'CONDITION' | 'GROUP'; }`\n  Base type for condition nodes (either group or leaf condition).\n  - `type: 'CONDITION' | 'GROUP'`\n    Node type discriminator (\"CONDITION\" or \"GROUP\").\n\n- `search?: string`\n  A free-text search string used to match content across multiple fields.\n\n\n- `sortType?: 'ASC' | 'DESC'`\n  Sort order for events based on their timestamp.\n\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.staff.auditTrail.export({ dateFrom: '2019-12-27', dateTo: '2019-12-27' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.auditTrail.export',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst response = await client.staff.auditTrail.export({\n  dateFrom: '2019-12-27',\n  dateTo: '2019-12-27',\n});\n\nconsole.log(response);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/staff/audit-trail:export \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "dateFrom": "2019-12-27",\n          "dateTo": "2019-12-27"\n        }\'',
      },
      kotlin: {
        method: 'staff().auditTrail().export',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.audittrail.AuditTrailExportParams\nimport java.time.LocalDate\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: AuditTrailExportParams = AuditTrailExportParams.builder()\n        .dateFrom(LocalDate.parse("2019-12-27"))\n        .dateTo(LocalDate.parse("2019-12-27"))\n        .build()\n    val response: String = client.staff().auditTrail().export(params)\n}',
      },
      java: {
        method: 'staff().auditTrail().export',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.audittrail.AuditTrailExportParams;\nimport java.time.LocalDate;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        AuditTrailExportParams params = AuditTrailExportParams.builder()\n            .dateFrom(LocalDate.parse("2019-12-27"))\n            .dateTo(LocalDate.parse("2019-12-27"))\n            .build();\n        String response = client.staff().auditTrail().export(params);\n    }\n}',
      },
    },
  },
  {
    name: 'list',
    endpoint: '/api/v1/staff/users',
    httpMethod: 'get',
    summary: 'List Bank Users',
    description: 'Allows retrieval of all bank users.',
    stainlessPath: '(resource) staff.users > (method) list',
    qualified: 'client.staff.users.list',
    params: [
      'countryCode?: string;',
      'email?: string;',
      'firstName?: string;',
      'lastName?: string;',
      'limit?: number;',
      'offset?: number;',
      'personalId?: string;',
      'phone?: string;',
      'username?: string;',
      "userState?: 'ACTIVE' | 'INACTIVE';",
      'plmr-staff-action?: boolean;',
    ],
    response:
      "{ count?: number; items?: { id?: string; countryCode?: string; email?: string; firstName?: string; hasAvatar?: boolean; lastName?: string; personalId?: string; phoneNumber?: string; preferredLanguage?: string; preferredName?: string; username?: string; userState?: 'ACTIVE' | 'INACTIVE'; }[]; }",
    markdown:
      "## list\n\n`client.staff.users.list(countryCode?: string, email?: string, firstName?: string, lastName?: string, limit?: number, offset?: number, personalId?: string, phone?: string, username?: string, userState?: 'ACTIVE' | 'INACTIVE', plmr-staff-action?: boolean): { count?: number; items?: object[]; }`\n\n**get** `/api/v1/staff/users`\n\nAllows retrieval of all bank users.\n\n### Parameters\n\n- `countryCode?: string`\n  Nation with its own government. ISO 3166, Alpha-2 code, it needs to be exact match.\n\n\n- `email?: string`\n  User's email address, used fo filter bank users, partial email can also be provided.\n\n\n- `firstName?: string`\n  User's first name, used fo filter bank users, partial name can also be provided.\n\n\n- `lastName?: string`\n  User's last name, used fo filter bank users, partial name can also be provided.\n\n\n- `limit?: number`\n  The maximum number of results to return (pagination limit).\n\n\n- `offset?: number`\n  The position of the first result to be returned (pagination offset).\n\n\n- `personalId?: string`\n  The personal id of the user, it needs to be exact match.\n\n\n- `phone?: string`\n  User's phone number used fo filter bank users, it needs to be exact match, partial match is not supported. </br>\nThe phone format is should be in E.164 format, e.g. +15555555555.\n\n\n- `username?: string`\n  User's username, used fo filter bank users, partial username can also be provided.\n\n\n- `userState?: 'ACTIVE' | 'INACTIVE'`\n  User's current state, used fo filter bank users, exact state match needs to be provided.\n\n\n- `plmr-staff-action?: boolean`\n\n### Returns\n\n- `{ count?: number; items?: { id?: string; countryCode?: string; email?: string; firstName?: string; hasAvatar?: boolean; lastName?: string; personalId?: string; phoneNumber?: string; preferredLanguage?: string; preferredName?: string; username?: string; userState?: 'ACTIVE' | 'INACTIVE'; }[]; }`\n\n  - `count?: number`\n  - `items?: { id?: string; countryCode?: string; email?: string; firstName?: string; hasAvatar?: boolean; lastName?: string; personalId?: string; phoneNumber?: string; preferredLanguage?: string; preferredName?: string; username?: string; userState?: 'ACTIVE' | 'INACTIVE'; }[]`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst users = await client.staff.users.list();\n\nconsole.log(users);\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.users.list',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst users = await client.staff.users.list();\n\nconsole.log(users.count);",
      },
      http: {
        example: 'curl https://api.plumery.com/api/v1/staff/users \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'staff().users().list',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.users.UserListParams\nimport com.plumery.api.models.staff.users.UserListResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val users: UserListResponse = client.staff().users().list()\n}',
      },
      java: {
        method: 'staff().users().list',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.users.UserListParams;\nimport com.plumery.api.models.staff.users.UserListResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        UserListResponse users = client.staff().users().list();\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/staff/users/{userId}',
    httpMethod: 'get',
    summary: 'Get bank user details',
    description: 'Retrieve details of a specific bank user.',
    stainlessPath: '(resource) staff.users > (method) retrieve',
    qualified: 'client.staff.users.retrieve',
    params: ['userId: string;', 'plmr-staff-action?: boolean;'],
    response:
      "{ id?: string; associatedParties?: { id?: string; name?: string; originParties?: { domain: 'PARTIES' | 'ACCOUNTS'; qualifiedId: string; }[]; selfIndividual?: boolean; type?: string; }[]; countryCode?: string; email?: string; firstName?: string; hasAvatar?: boolean; lastName?: string; personalId?: string; phoneNumber?: string; preferredLanguage?: string; preferredName?: string; selfIndividualParty?: { id?: string; name?: string; originParties?: { domain: 'PARTIES' | 'ACCOUNTS'; qualifiedId: string; }[]; selfIndividual?: boolean; type?: string; }; username?: string; userState?: 'ACTIVE' | 'INACTIVE'; }",
    markdown:
      "## retrieve\n\n`client.staff.users.retrieve(userId: string, plmr-staff-action?: boolean): { id?: string; associatedParties?: object[]; countryCode?: string; email?: string; firstName?: string; hasAvatar?: boolean; lastName?: string; personalId?: string; phoneNumber?: string; preferredLanguage?: string; preferredName?: string; selfIndividualParty?: object; username?: string; userState?: 'ACTIVE' | 'INACTIVE'; }`\n\n**get** `/api/v1/staff/users/{userId}`\n\nRetrieve details of a specific bank user.\n\n### Parameters\n\n- `userId: string`\n\n- `plmr-staff-action?: boolean`\n\n### Returns\n\n- `{ id?: string; associatedParties?: { id?: string; name?: string; originParties?: { domain: 'PARTIES' | 'ACCOUNTS'; qualifiedId: string; }[]; selfIndividual?: boolean; type?: string; }[]; countryCode?: string; email?: string; firstName?: string; hasAvatar?: boolean; lastName?: string; personalId?: string; phoneNumber?: string; preferredLanguage?: string; preferredName?: string; selfIndividualParty?: { id?: string; name?: string; originParties?: { domain: 'PARTIES' | 'ACCOUNTS'; qualifiedId: string; }[]; selfIndividual?: boolean; type?: string; }; username?: string; userState?: 'ACTIVE' | 'INACTIVE'; }`\n\n  - `id?: string`\n  - `associatedParties?: { id?: string; name?: string; originParties?: { domain: 'PARTIES' | 'ACCOUNTS'; qualifiedId: string; }[]; selfIndividual?: boolean; type?: string; }[]`\n  - `countryCode?: string`\n  - `email?: string`\n  - `firstName?: string`\n  - `hasAvatar?: boolean`\n  - `lastName?: string`\n  - `personalId?: string`\n  - `phoneNumber?: string`\n  - `preferredLanguage?: string`\n  - `preferredName?: string`\n  - `selfIndividualParty?: { id?: string; name?: string; originParties?: { domain: 'PARTIES' | 'ACCOUNTS'; qualifiedId: string; }[]; selfIndividual?: boolean; type?: string; }`\n  - `username?: string`\n  - `userState?: 'ACTIVE' | 'INACTIVE'`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst user = await client.staff.users.retrieve('123e4567-e89b-12d3-a456-426614174000');\n\nconsole.log(user);\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.users.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst user = await client.staff.users.retrieve('123e4567-e89b-12d3-a456-426614174000');\n\nconsole.log(user.id);",
      },
      http: {
        example: 'curl https://api.plumery.com/api/v1/staff/users/$USER_ID \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'staff().users().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.users.UserRetrieveParams\nimport com.plumery.api.models.staff.users.UserRetrieveResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val user: UserRetrieveResponse = client.staff().users().retrieve("123e4567-e89b-12d3-a456-426614174000")\n}',
      },
      java: {
        method: 'staff().users().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.users.UserRetrieveParams;\nimport com.plumery.api.models.staff.users.UserRetrieveResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        UserRetrieveResponse user = client.staff().users().retrieve("123e4567-e89b-12d3-a456-426614174000");\n    }\n}',
      },
    },
  },
  {
    name: 'forcePasswordReset',
    endpoint: '/api/v1/staff/users/{userId}:force-password-reset',
    httpMethod: 'post',
    summary: 'Force user to reset password',
    description: 'Forces the end user to reset its own password.',
    stainlessPath: '(resource) staff.users > (method) forcePasswordReset',
    qualified: 'client.staff.users.forcePasswordReset',
    params: ['userId: string;', 'plmr-staff-action?: boolean;'],
    markdown:
      "## forcePasswordReset\n\n`client.staff.users.forcePasswordReset(userId: string, plmr-staff-action?: boolean): void`\n\n**post** `/api/v1/staff/users/{userId}:force-password-reset`\n\nForces the end user to reset its own password.\n\n### Parameters\n\n- `userId: string`\n\n- `plmr-staff-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.staff.users.forcePasswordReset('123e4567-e89b-12d3-a456-426614174000')\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.users.forcePasswordReset',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.staff.users.forcePasswordReset('123e4567-e89b-12d3-a456-426614174000');",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/staff/users/$USER_ID:force-password-reset \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'staff().users().forcePasswordReset',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.users.UserForcePasswordResetParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    client.staff().users().forcePasswordReset("123e4567-e89b-12d3-a456-426614174000")\n}',
      },
      java: {
        method: 'staff().users().forcePasswordReset',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.users.UserForcePasswordResetParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        client.staff().users().forcePasswordReset("123e4567-e89b-12d3-a456-426614174000");\n    }\n}',
      },
    },
  },
  {
    name: 'deactivateUser',
    endpoint: '/api/v1/staff/users/{userId}:deactivate-user',
    httpMethod: 'post',
    summary: 'Deactivate user',
    description:
      'Deactivates a specific bank user, terminates their active sessions, and updates their state to INACTIVE.',
    stainlessPath: '(resource) staff.users > (method) deactivateUser',
    qualified: 'client.staff.users.deactivateUser',
    params: ['userId: string;', 'plmr-staff-action?: boolean;'],
    markdown:
      "## deactivateUser\n\n`client.staff.users.deactivateUser(userId: string, plmr-staff-action?: boolean): void`\n\n**post** `/api/v1/staff/users/{userId}:deactivate-user`\n\nDeactivates a specific bank user, terminates their active sessions, and updates their state to INACTIVE.\n\n### Parameters\n\n- `userId: string`\n\n- `plmr-staff-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.staff.users.deactivateUser('123e4567-e89b-12d3-a456-426614174000')\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.users.deactivateUser',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.staff.users.deactivateUser('123e4567-e89b-12d3-a456-426614174000');",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/staff/users/$USER_ID:deactivate-user \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'staff().users().deactivateUser',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.users.UserDeactivateUserParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    client.staff().users().deactivateUser("123e4567-e89b-12d3-a456-426614174000")\n}',
      },
      java: {
        method: 'staff().users().deactivateUser',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.users.UserDeactivateUserParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        client.staff().users().deactivateUser("123e4567-e89b-12d3-a456-426614174000");\n    }\n}',
      },
    },
  },
  {
    name: 'activateUser',
    endpoint: '/api/v1/staff/users/{userId}:activate-user',
    httpMethod: 'post',
    summary: 'Activate user',
    description: 'Activates a specific bank user that was previously deactivated.',
    stainlessPath: '(resource) staff.users > (method) activateUser',
    qualified: 'client.staff.users.activateUser',
    params: ['userId: string;', 'plmr-staff-action?: boolean;'],
    markdown:
      "## activateUser\n\n`client.staff.users.activateUser(userId: string, plmr-staff-action?: boolean): void`\n\n**post** `/api/v1/staff/users/{userId}:activate-user`\n\nActivates a specific bank user that was previously deactivated.\n\n### Parameters\n\n- `userId: string`\n\n- `plmr-staff-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.staff.users.activateUser('123e4567-e89b-12d3-a456-426614174000')\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.users.activateUser',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.staff.users.activateUser('123e4567-e89b-12d3-a456-426614174000');",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/staff/users/$USER_ID:activate-user \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'staff().users().activateUser',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.users.UserActivateUserParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    client.staff().users().activateUser("123e4567-e89b-12d3-a456-426614174000")\n}',
      },
      java: {
        method: 'staff().users().activateUser',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.users.UserActivateUserParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        client.staff().users().activateUser("123e4567-e89b-12d3-a456-426614174000");\n    }\n}',
      },
    },
  },
  {
    name: 'deleteUser',
    endpoint: '/api/v1/staff/users/{userId}:delete-user',
    httpMethod: 'post',
    summary: 'Delete user',
    description:
      "Initiates deletion of a bank user's digital identity (IAM account, device bindings, sessions, avatar). Publishes a UserDeleted event consumed by user-keyed services. The user's party and banking data are NOT affected. Audit trail records are preserved.",
    stainlessPath: '(resource) staff.users > (method) deleteUser',
    qualified: 'client.staff.users.deleteUser',
    params: ['userId: string;', 'plmr-staff-action?: boolean;'],
    markdown:
      "## deleteUser\n\n`client.staff.users.deleteUser(userId: string, plmr-staff-action?: boolean): void`\n\n**post** `/api/v1/staff/users/{userId}:delete-user`\n\nInitiates deletion of a bank user's digital identity (IAM account, device bindings, sessions, avatar). Publishes a UserDeleted event consumed by user-keyed services. The user's party and banking data are NOT affected. Audit trail records are preserved.\n\n### Parameters\n\n- `userId: string`\n\n- `plmr-staff-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.staff.users.deleteUser('123e4567-e89b-12d3-a456-426614174000')\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.users.deleteUser',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.staff.users.deleteUser('123e4567-e89b-12d3-a456-426614174000');",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/staff/users/$USER_ID:delete-user \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'staff().users().deleteUser',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.users.UserDeleteUserParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    client.staff().users().deleteUser("123e4567-e89b-12d3-a456-426614174000")\n}',
      },
      java: {
        method: 'staff().users().deleteUser',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.users.UserDeleteUserParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        client.staff().users().deleteUser("123e4567-e89b-12d3-a456-426614174000");\n    }\n}',
      },
    },
  },
  {
    name: 'disableBiometrics',
    endpoint: '/api/v1/staff/users/{userId}/devices/{deviceId}:disable-biometrics',
    httpMethod: 'post',
    summary: 'Disable user device biometrics',
    description: 'Disabled the biometrics for a user device.',
    stainlessPath: '(resource) staff.users.devices > (method) disableBiometrics',
    qualified: 'client.staff.users.devices.disableBiometrics',
    params: ['userId: string;', 'deviceId: string;', 'plmr-staff-action?: boolean;'],
    markdown:
      "## disableBiometrics\n\n`client.staff.users.devices.disableBiometrics(userId: string, deviceId: string, plmr-staff-action?: boolean): void`\n\n**post** `/api/v1/staff/users/{userId}/devices/{deviceId}:disable-biometrics`\n\nDisabled the biometrics for a user device.\n\n### Parameters\n\n- `userId: string`\n\n- `deviceId: string`\n\n- `plmr-staff-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.staff.users.devices.disableBiometrics('36a22460-ebc8-4ffe-a213-1683c5a420c5', { userId: '123e4567-e89b-12d3-a456-426614174000' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.users.devices.disableBiometrics',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.staff.users.devices.disableBiometrics('36a22460-ebc8-4ffe-a213-1683c5a420c5', {\n  userId: '123e4567-e89b-12d3-a456-426614174000',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/staff/users/$USER_ID/devices/$DEVICE_ID:disable-biometrics \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'staff().users().devices().disableBiometrics',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.users.devices.DeviceDisableBiometricsParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: DeviceDisableBiometricsParams = DeviceDisableBiometricsParams.builder()\n        .userId("123e4567-e89b-12d3-a456-426614174000")\n        .deviceId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .build()\n    client.staff().users().devices().disableBiometrics(params)\n}',
      },
      java: {
        method: 'staff().users().devices().disableBiometrics',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.users.devices.DeviceDisableBiometricsParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        DeviceDisableBiometricsParams params = DeviceDisableBiometricsParams.builder()\n            .userId("123e4567-e89b-12d3-a456-426614174000")\n            .deviceId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .build();\n        client.staff().users().devices().disableBiometrics(params);\n    }\n}',
      },
    },
  },
  {
    name: 'disablePasscode',
    endpoint: '/api/v1/staff/users/{userId}/devices/{deviceId}:disable-passcode',
    httpMethod: 'post',
    summary: 'Disable user device passcode',
    description: 'Disabled the passcode for a user device.',
    stainlessPath: '(resource) staff.users.devices > (method) disablePasscode',
    qualified: 'client.staff.users.devices.disablePasscode',
    params: ['userId: string;', 'deviceId: string;', 'plmr-staff-action?: boolean;'],
    markdown:
      "## disablePasscode\n\n`client.staff.users.devices.disablePasscode(userId: string, deviceId: string, plmr-staff-action?: boolean): void`\n\n**post** `/api/v1/staff/users/{userId}/devices/{deviceId}:disable-passcode`\n\nDisabled the passcode for a user device.\n\n### Parameters\n\n- `userId: string`\n\n- `deviceId: string`\n\n- `plmr-staff-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.staff.users.devices.disablePasscode('36a22460-ebc8-4ffe-a213-1683c5a420c5', { userId: '123e4567-e89b-12d3-a456-426614174000' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.users.devices.disablePasscode',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.staff.users.devices.disablePasscode('36a22460-ebc8-4ffe-a213-1683c5a420c5', {\n  userId: '123e4567-e89b-12d3-a456-426614174000',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/staff/users/$USER_ID/devices/$DEVICE_ID:disable-passcode \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'staff().users().devices().disablePasscode',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.users.devices.DeviceDisablePasscodeParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: DeviceDisablePasscodeParams = DeviceDisablePasscodeParams.builder()\n        .userId("123e4567-e89b-12d3-a456-426614174000")\n        .deviceId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n        .build()\n    client.staff().users().devices().disablePasscode(params)\n}',
      },
      java: {
        method: 'staff().users().devices().disablePasscode',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.users.devices.DeviceDisablePasscodeParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        DeviceDisablePasscodeParams params = DeviceDisablePasscodeParams.builder()\n            .userId("123e4567-e89b-12d3-a456-426614174000")\n            .deviceId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n            .build();\n        client.staff().users().devices().disablePasscode(params);\n    }\n}',
      },
    },
  },
  {
    name: 'deleteParty',
    endpoint: '/api/v1/staff/parties/{partyId}:delete-party',
    httpMethod: 'post',
    summary: 'Delete party',
    description:
      "Initiates deletion of a party (individual or organisation) and its party-keyed data. Publishes a PartyDeletionInitiated event consumed by party-keyed services and removes the auth party row. The linked user's digital identity is NOT affected - user deletion is a separate operation via the :delete-user endpoint. Audit trail records are preserved.",
    stainlessPath: '(resource) staff.parties > (method) deleteParty',
    qualified: 'client.staff.parties.deleteParty',
    params: ['partyId: string;', 'plmr-staff-action?: boolean;'],
    markdown:
      "## deleteParty\n\n`client.staff.parties.deleteParty(partyId: string, plmr-staff-action?: boolean): void`\n\n**post** `/api/v1/staff/parties/{partyId}:delete-party`\n\nInitiates deletion of a party (individual or organisation) and its party-keyed data. Publishes a PartyDeletionInitiated event consumed by party-keyed services and removes the auth party row. The linked user's digital identity is NOT affected - user deletion is a separate operation via the :delete-user endpoint. Audit trail records are preserved.\n\n### Parameters\n\n- `partyId: string`\n\n- `plmr-staff-action?: boolean`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.staff.parties.deleteParty('123e4567-e89b-12d3-a456-426614174000')\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.parties.deleteParty',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.staff.parties.deleteParty('123e4567-e89b-12d3-a456-426614174000');",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/staff/parties/$PARTY_ID:delete-party \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'staff().parties().deleteParty',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.parties.PartyDeletePartyParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    client.staff().parties().deleteParty("123e4567-e89b-12d3-a456-426614174000")\n}',
      },
      java: {
        method: 'staff().parties().deleteParty',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.parties.PartyDeletePartyParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        client.staff().parties().deleteParty("123e4567-e89b-12d3-a456-426614174000");\n    }\n}',
      },
    },
  },
  {
    name: 'suspend',
    endpoint: '/api/v1/staff/parties/{organisationPartyId}/teams/{teamId}/members/{memberId}:suspend',
    httpMethod: 'post',
    summary: 'Suspend team member (staff)',
    description:
      'Suspend a specified team member by revoking their team access. Staff-only route, attributed to the\nreal staff operator identity - no customer impersonation involved.\n',
    stainlessPath: '(resource) staff.parties.teams.members > (method) suspend',
    qualified: 'client.staff.parties.teams.members.suspend',
    params: [
      'organisationPartyId: string;',
      'teamId: string;',
      'memberId: string;',
      'plmr-staff-id: string;',
      'X-Request-ID?: string;',
    ],
    markdown:
      "## suspend\n\n`client.staff.parties.teams.members.suspend(organisationPartyId: string, teamId: string, memberId: string, plmr-staff-id: string, X-Request-ID?: string): void`\n\n**post** `/api/v1/staff/parties/{organisationPartyId}/teams/{teamId}/members/{memberId}:suspend`\n\nSuspend a specified team member by revoking their team access. Staff-only route, attributed to the\nreal staff operator identity - no customer impersonation involved.\n\n\n### Parameters\n\n- `organisationPartyId: string`\n\n- `teamId: string`\n\n- `memberId: string`\n  Member unique identifier.\n\n- `plmr-staff-id: string`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.staff.parties.teams.members.suspend('4c3882fd-ac4c-41da-9bc0-4d5ce5f55727', {\n  organisationPartyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  teamId: 'ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31',\n  'plmr-staff-id': 'staff.operator@plumery.com',\n})\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.parties.teams.members.suspend',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.staff.parties.teams.members.suspend('4c3882fd-ac4c-41da-9bc0-4d5ce5f55727', {\n  organisationPartyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  teamId: 'ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31',\n  'plmr-staff-id': 'staff.operator@plumery.com',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/staff/parties/$ORGANISATION_PARTY_ID/teams/$TEAM_ID/members/$MEMBER_ID:suspend \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'staff().parties().teams().members().suspend',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.parties.teams.members.MemberSuspendParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: MemberSuspendParams = MemberSuspendParams.builder()\n        .organisationPartyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .teamId("ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31")\n        .memberId("4c3882fd-ac4c-41da-9bc0-4d5ce5f55727")\n        .plmrStaffId("staff.operator@plumery.com")\n        .build()\n    client.staff().parties().teams().members().suspend(params)\n}',
      },
      java: {
        method: 'staff().parties().teams().members().suspend',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.parties.teams.members.MemberSuspendParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        MemberSuspendParams params = MemberSuspendParams.builder()\n            .organisationPartyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .teamId("ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31")\n            .memberId("4c3882fd-ac4c-41da-9bc0-4d5ce5f55727")\n            .plmrStaffId("staff.operator@plumery.com")\n            .build();\n        client.staff().parties().teams().members().suspend(params);\n    }\n}',
      },
    },
  },
  {
    name: 'unsuspend',
    endpoint: '/api/v1/staff/parties/{organisationPartyId}/teams/{teamId}/members/{memberId}:unsuspend',
    httpMethod: 'post',
    summary: 'Unsuspend team member (staff)',
    description:
      'Unsuspend a specified team member by reinstating their team access. Staff-only route, attributed to\nthe real staff operator identity - no customer impersonation involved.\n',
    stainlessPath: '(resource) staff.parties.teams.members > (method) unsuspend',
    qualified: 'client.staff.parties.teams.members.unsuspend',
    params: [
      'organisationPartyId: string;',
      'teamId: string;',
      'memberId: string;',
      'plmr-staff-id: string;',
      'X-Request-ID?: string;',
    ],
    markdown:
      "## unsuspend\n\n`client.staff.parties.teams.members.unsuspend(organisationPartyId: string, teamId: string, memberId: string, plmr-staff-id: string, X-Request-ID?: string): void`\n\n**post** `/api/v1/staff/parties/{organisationPartyId}/teams/{teamId}/members/{memberId}:unsuspend`\n\nUnsuspend a specified team member by reinstating their team access. Staff-only route, attributed to\nthe real staff operator identity - no customer impersonation involved.\n\n\n### Parameters\n\n- `organisationPartyId: string`\n\n- `teamId: string`\n\n- `memberId: string`\n  Member unique identifier.\n\n- `plmr-staff-id: string`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.staff.parties.teams.members.unsuspend('4c3882fd-ac4c-41da-9bc0-4d5ce5f55727', {\n  organisationPartyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  teamId: 'ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31',\n  'plmr-staff-id': 'staff.operator@plumery.com',\n})\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.parties.teams.members.unsuspend',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.staff.parties.teams.members.unsuspend('4c3882fd-ac4c-41da-9bc0-4d5ce5f55727', {\n  organisationPartyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  teamId: 'ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31',\n  'plmr-staff-id': 'staff.operator@plumery.com',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/staff/parties/$ORGANISATION_PARTY_ID/teams/$TEAM_ID/members/$MEMBER_ID:unsuspend \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'staff().parties().teams().members().unsuspend',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.parties.teams.members.MemberUnsuspendParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: MemberUnsuspendParams = MemberUnsuspendParams.builder()\n        .organisationPartyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .teamId("ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31")\n        .memberId("4c3882fd-ac4c-41da-9bc0-4d5ce5f55727")\n        .plmrStaffId("staff.operator@plumery.com")\n        .build()\n    client.staff().parties().teams().members().unsuspend(params)\n}',
      },
      java: {
        method: 'staff().parties().teams().members().unsuspend',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.parties.teams.members.MemberUnsuspendParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        MemberUnsuspendParams params = MemberUnsuspendParams.builder()\n            .organisationPartyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .teamId("ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31")\n            .memberId("4c3882fd-ac4c-41da-9bc0-4d5ce5f55727")\n            .plmrStaffId("staff.operator@plumery.com")\n            .build();\n        client.staff().parties().teams().members().unsuspend(params);\n    }\n}',
      },
    },
  },
  {
    name: 'updateRole',
    endpoint: '/api/v1/staff/parties/{organisationPartyId}/teams/{teamId}/members/{memberId}:update-role',
    httpMethod: 'post',
    summary: 'Update team member role (staff)',
    description:
      'Update the role of a specified team member within the team. Staff-only route, attributed to the real\nstaff operator identity. Reassigning the OWNER role always requires a genuine, resolved team member\nactor and is never permitted via this route; attempting it returns 403.\n',
    stainlessPath: '(resource) staff.parties.teams.members > (method) updateRole',
    qualified: 'client.staff.parties.teams.members.updateRole',
    params: [
      'organisationPartyId: string;',
      'teamId: string;',
      'memberId: string;',
      'roleId: string;',
      'plmr-staff-id: string;',
      'fallbackRoleId?: string;',
      'X-Request-ID?: string;',
    ],
    markdown:
      "## updateRole\n\n`client.staff.parties.teams.members.updateRole(organisationPartyId: string, teamId: string, memberId: string, roleId: string, plmr-staff-id: string, fallbackRoleId?: string, X-Request-ID?: string): void`\n\n**post** `/api/v1/staff/parties/{organisationPartyId}/teams/{teamId}/members/{memberId}:update-role`\n\nUpdate the role of a specified team member within the team. Staff-only route, attributed to the real\nstaff operator identity. Reassigning the OWNER role always requires a genuine, resolved team member\nactor and is never permitted via this route; attempting it returns 403.\n\n\n### Parameters\n\n- `organisationPartyId: string`\n\n- `teamId: string`\n\n- `memberId: string`\n  Member unique identifier.\n\n- `roleId: string`\n  The stable role ID which will remain consistent even if the role's actual name is changed.\n\n- `plmr-staff-id: string`\n\n- `fallbackRoleId?: string`\n  The stable role ID which will remain consistent even if the role's actual name is changed.\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.staff.parties.teams.members.updateRole('4c3882fd-ac4c-41da-9bc0-4d5ce5f55727', {\n  organisationPartyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  teamId: 'ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31',\n  roleId: '3e1250a2-742f-4808-a10a-b9bb8af32f53',\n  'plmr-staff-id': 'staff.operator@plumery.com',\n})\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.parties.teams.members.updateRole',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.staff.parties.teams.members.updateRole('4c3882fd-ac4c-41da-9bc0-4d5ce5f55727', {\n  organisationPartyId: '6878951b-256b-4baa-9e81-ad4c577adc4e',\n  teamId: 'ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31',\n  roleId: '3e1250a2-742f-4808-a10a-b9bb8af32f53',\n  'plmr-staff-id': 'staff.operator@plumery.com',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/staff/parties/$ORGANISATION_PARTY_ID/teams/$TEAM_ID/members/$MEMBER_ID:update-role \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "roleId": "3e1250a2-742f-4808-a10a-b9bb8af32f53",\n          "fallbackRoleId": "3e1250a2-742f-4808-a10a-b9bb8af32f53"\n        }\'',
      },
      kotlin: {
        method: 'staff().parties().teams().members().updateRole',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.parties.teams.members.MemberUpdateRoleParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: MemberUpdateRoleParams = MemberUpdateRoleParams.builder()\n        .organisationPartyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n        .teamId("ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31")\n        .memberId("4c3882fd-ac4c-41da-9bc0-4d5ce5f55727")\n        .plmrStaffId("staff.operator@plumery.com")\n        .roleId("3e1250a2-742f-4808-a10a-b9bb8af32f53")\n        .build()\n    client.staff().parties().teams().members().updateRole(params)\n}',
      },
      java: {
        method: 'staff().parties().teams().members().updateRole',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.parties.teams.members.MemberUpdateRoleParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        MemberUpdateRoleParams params = MemberUpdateRoleParams.builder()\n            .organisationPartyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n            .teamId("ae18e3de-afb1-4434-a7cc-e4a9e5e8fc31")\n            .memberId("4c3882fd-ac4c-41da-9bc0-4d5ce5f55727")\n            .plmrStaffId("staff.operator@plumery.com")\n            .roleId("3e1250a2-742f-4808-a10a-b9bb8af32f53")\n            .build();\n        client.staff().parties().teams().members().updateRole(params);\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/staff/saml/slo',
    httpMethod: 'get',
    summary: 'Handle a SAML 2.0 Single Log Out (SLO) request over the HTTP-Redirect binding.',
    description:
      'Internal endpoint only to be called by the Identity Provider (IdP) to perform IdP-initiated\nSingle Log Out (SLO) via the HTTP-Redirect binding (used e.g. by Microsoft Entra ID, which\ndoes not support the HTTP-POST binding for SLO).\n\nThe IdP sends a deflated, base64- and URL-encoded `<LogoutRequest>` in the `SAMLRequest` query\nparameter, together with a detached query-string signature (`SigAlg` + `Signature`). The\nservice verifies the signature, terminates all active Ops Cockpit sessions for the subject\n(`NameID`), and redirects back to the IdP Single Logout Service with a `<LogoutResponse>`.\n',
    stainlessPath: '(resource) staff.saml.slo > (method) retrieve',
    qualified: 'client.staff.saml.slo.retrieve',
    params: ['SAMLRequest: string;', 'RelayState?: string;', 'SigAlg?: string;', 'Signature?: string;'],
    markdown:
      "## retrieve\n\n`client.staff.saml.slo.retrieve(SAMLRequest: string, RelayState?: string, SigAlg?: string, Signature?: string): void`\n\n**get** `/api/v1/staff/saml/slo`\n\nInternal endpoint only to be called by the Identity Provider (IdP) to perform IdP-initiated\nSingle Log Out (SLO) via the HTTP-Redirect binding (used e.g. by Microsoft Entra ID, which\ndoes not support the HTTP-POST binding for SLO).\n\nThe IdP sends a deflated, base64- and URL-encoded `<LogoutRequest>` in the `SAMLRequest` query\nparameter, together with a detached query-string signature (`SigAlg` + `Signature`). The\nservice verifies the signature, terminates all active Ops Cockpit sessions for the subject\n(`NameID`), and redirects back to the IdP Single Logout Service with a `<LogoutResponse>`.\n\n\n### Parameters\n\n- `SAMLRequest: string`\n  Deflated, base64- and URL-encoded SAML `<LogoutRequest>`.\n\n- `RelayState?: string`\n  Opaque state echoed back to the IdP.\n\n- `SigAlg?: string`\n  Signature algorithm URI used for the detached query-string signature.\n\n- `Signature?: string`\n  Base64 detached signature over the request query string.\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.staff.saml.slo.retrieve({ SAMLRequest: 'SAMLRequest' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.saml.slo.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.staff.saml.slo.retrieve({ SAMLRequest: 'SAMLRequest' });",
      },
      http: {
        example: 'curl https://api.plumery.com/api/v1/staff/saml/slo',
      },
      kotlin: {
        method: 'staff().saml().slo().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.saml.slo.SloRetrieveParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: SloRetrieveParams = SloRetrieveParams.builder()\n        .samlRequest("SAMLRequest")\n        .build()\n    client.staff().saml().slo().retrieve(params)\n}',
      },
      java: {
        method: 'staff().saml().slo().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.saml.slo.SloRetrieveParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        SloRetrieveParams params = SloRetrieveParams.builder()\n            .samlRequest("SAMLRequest")\n            .build();\n        client.staff().saml().slo().retrieve(params);\n    }\n}',
      },
    },
  },
  {
    name: 'create',
    endpoint: '/api/v1/staff/saml/slo',
    httpMethod: 'post',
    summary: 'Handle a SAML 2.0 Single Log Out (SLO) request from the Identity Provider.',
    description:
      "Internal endpoint only to be called by the Identity Provider (IdP) to perform IdP-initiated\nSingle Log Out (SLO) via the HTTP-POST binding.\n\nWhen a staff user's access is revoked in the IdP (e.g. the employee is terminated, disabled or\nremoved from the relevant group), the IdP sends a signed `<LogoutRequest>` here. The service\nvalidates the request signature and terminates all active Ops Cockpit sessions for the subject\n(`NameID`) so that access removal in the IdP is immediately enforced.\n\nReturns a base64-encoded SAML `<LogoutResponse>` acknowledging the request.\n",
    stainlessPath: '(resource) staff.saml.slo > (method) create',
    qualified: 'client.staff.saml.slo.create',
    params: ['SAMLRequest: string;', 'RelayState?: string;'],
    response: 'string',
    markdown:
      "## create\n\n`client.staff.saml.slo.create(SAMLRequest: string, RelayState?: string): string`\n\n**post** `/api/v1/staff/saml/slo`\n\nInternal endpoint only to be called by the Identity Provider (IdP) to perform IdP-initiated\nSingle Log Out (SLO) via the HTTP-POST binding.\n\nWhen a staff user's access is revoked in the IdP (e.g. the employee is terminated, disabled or\nremoved from the relevant group), the IdP sends a signed `<LogoutRequest>` here. The service\nvalidates the request signature and terminates all active Ops Cockpit sessions for the subject\n(`NameID`) so that access removal in the IdP is immediately enforced.\n\nReturns a base64-encoded SAML `<LogoutResponse>` acknowledging the request.\n\n\n### Parameters\n\n- `SAMLRequest: string`\n  Base64-encoded SAML `<LogoutRequest>` from the Identity Provider.\n\n- `RelayState?: string`\n  Opaque state value echoed back to the Identity Provider, as per the SAML SLO profile.\n\n### Returns\n\n- `string`\n  Base64-encoded SAML `<LogoutResponse>`.\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst slo = await client.staff.saml.slo.create({ SAMLRequest: 'SAMLRequest' });\n\nconsole.log(slo);\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.saml.slo.create',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst slo = await client.staff.saml.slo.create({ SAMLRequest: 'SAMLRequest' });\n\nconsole.log(slo);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/staff/saml/slo \\\n    -H \'Content-Type: application/x-www-form-urlencoded\' \\\n    -d \'{\n          "SAMLRequest": "SAMLRequest"\n        }\'',
      },
      kotlin: {
        method: 'staff().saml().slo().create',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.saml.slo.SloCreateParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: SloCreateParams = SloCreateParams.builder()\n        .samlRequest("SAMLRequest")\n        .build()\n    val slo: String = client.staff().saml().slo().create(params)\n}',
      },
      java: {
        method: 'staff().saml().slo().create',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.saml.slo.SloCreateParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        SloCreateParams params = SloCreateParams.builder()\n            .samlRequest("SAMLRequest")\n            .build();\n        String slo = client.staff().saml().slo().create(params);\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/staff/saml/login',
    httpMethod: 'get',
    summary: 'Initiate staff SAML 2.0 login.',
    description:
      'Initiate SAML 2.0 staff user login with configured Identity Provider.\n\nOnce the login via Identity Provider is complete, a redirect is made to the provided `originalUrl` URL along with a Set-Cookie header containing the session ID for the staff user, e.g.:\n\n`auth-session=9bdbb6a4-1f32-469e-9d29-dc68159eada6;Version=1;Domain=.your.domain.com;Path=/;Secure;HttpOnly;SameSite=Lax`\n',
    stainlessPath: '(resource) staff.saml.login > (method) retrieve',
    qualified: 'client.staff.saml.login.retrieve',
    params: ['originalUrl: string;'],
    markdown:
      "## retrieve\n\n`client.staff.saml.login.retrieve(originalUrl: string): void`\n\n**get** `/api/v1/staff/saml/login`\n\nInitiate SAML 2.0 staff user login with configured Identity Provider.\n\nOnce the login via Identity Provider is complete, a redirect is made to the provided `originalUrl` URL along with a Set-Cookie header containing the session ID for the staff user, e.g.:\n\n`auth-session=9bdbb6a4-1f32-469e-9d29-dc68159eada6;Version=1;Domain=.your.domain.com;Path=/;Secure;HttpOnly;SameSite=Lax`\n\n\n### Parameters\n\n- `originalUrl: string`\n  The URL to which staff user should be redirected after successful login via Identity Provider.\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.staff.saml.login.retrieve({ originalUrl: 'https://staff.plumery.com/view-users' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.saml.login.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.staff.saml.login.retrieve({ originalUrl: 'https://staff.plumery.com/view-users' });",
      },
      http: {
        example: 'curl https://api.plumery.com/api/v1/staff/saml/login',
      },
      kotlin: {
        method: 'staff().saml().login().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.saml.login.LoginRetrieveParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: LoginRetrieveParams = LoginRetrieveParams.builder()\n        .originalUrl("https://staff.plumery.com/view-users")\n        .build()\n    client.staff().saml().login().retrieve(params)\n}',
      },
      java: {
        method: 'staff().saml().login().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.saml.login.LoginRetrieveParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        LoginRetrieveParams params = LoginRetrieveParams.builder()\n            .originalUrl("https://staff.plumery.com/view-users")\n            .build();\n        client.staff().saml().login().retrieve(params);\n    }\n}',
      },
    },
  },
  {
    name: 'create',
    endpoint: '/api/v1/staff/saml/acs',
    httpMethod: 'post',
    summary: 'Confirm staff SAML 2.0 login.',
    description:
      'Internal endpoint only to be called by the Identity Provider after a successful SAML 2.0 login attempt.\n\nProcesses the SAMLResponse and establishes a session for the authenticated staff user.\n\nAfter session creation, redirects the staff user to the original URL via HTTP 302 and sets the `auth-session` cookie.\n',
    stainlessPath: '(resource) staff.saml.acs > (method) create',
    qualified: 'client.staff.saml.acs.create',
    params: ['SAMLResponse: string;', 'RelayState?: string;'],
    markdown:
      "## create\n\n`client.staff.saml.acs.create(SAMLResponse: string, RelayState?: string): void`\n\n**post** `/api/v1/staff/saml/acs`\n\nInternal endpoint only to be called by the Identity Provider after a successful SAML 2.0 login attempt.\n\nProcesses the SAMLResponse and establishes a session for the authenticated staff user.\n\nAfter session creation, redirects the staff user to the original URL via HTTP 302 and sets the `auth-session` cookie.\n\n\n### Parameters\n\n- `SAMLResponse: string`\n  Base64-encoded SAML response from the Identity Provider.\n\n- `RelayState?: string`\n  URL-encoded original URL to redirect the staff user to after login confirmation.\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.staff.saml.acs.create({ SAMLResponse: 'SAMLResponse' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.saml.acs.create',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.staff.saml.acs.create({ SAMLResponse: 'SAMLResponse' });",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/staff/saml/acs \\\n    -H \'Content-Type: application/x-www-form-urlencoded\' \\\n    -d \'{\n          "SAMLResponse": "SAMLResponse"\n        }\'',
      },
      kotlin: {
        method: 'staff().saml().acs().create',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.saml.acs.AcCreateParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: AcCreateParams = AcCreateParams.builder()\n        .samlResponse("SAMLResponse")\n        .build()\n    client.staff().saml().acs().create(params)\n}',
      },
      java: {
        method: 'staff().saml().acs().create',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.saml.acs.AcCreateParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        AcCreateParams params = AcCreateParams.builder()\n            .samlResponse("SAMLResponse")\n            .build();\n        client.staff().saml().acs().create(params);\n    }\n}',
      },
    },
  },
  {
    name: 'list',
    endpoint: '/api/v1/staff/roles',
    httpMethod: 'get',
    summary: 'Retrieve all roles',
    description: 'Retrieve the list of all roles.\n',
    stainlessPath: '(resource) staff.roles > (method) list',
    qualified: 'client.staff.roles.list',
    params: [
      'expandPermissions?: boolean;',
      'teamTypeId?: string;',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    response:
      '{ roles?: { name?: string; permissions?: { action?: string; category?: string; resource?: string; }[]; roleId?: string; }[]; }',
    markdown:
      "## list\n\n`client.staff.roles.list(expandPermissions?: boolean, teamTypeId?: string, plmr-user-action?: boolean, X-Request-ID?: string): { roles?: object[]; }`\n\n**get** `/api/v1/staff/roles`\n\nRetrieve the list of all roles.\n\n\n### Parameters\n\n- `expandPermissions?: boolean`\n  This parameter influences the information about roles provided in the response. If it is set to 'true', \nthe response will include permissions associated with each role. If 'false' or not provided, the response \nwill only include roles without their respective permissions.\n\n\n- `teamTypeId?: string`\n  When provided, only roles associated with the given team type are returned. If not provided,\nall roles are returned.\n\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ roles?: { name?: string; permissions?: { action?: string; category?: string; resource?: string; }[]; roleId?: string; }[]; }`\n  Contains a list of all roles, including their associated permissions, if this was requested.\n\n  - `roles?: { name?: string; permissions?: { action?: string; category?: string; resource?: string; }[]; roleId?: string; }[]`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst roles = await client.staff.roles.list();\n\nconsole.log(roles);\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.roles.list',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst roles = await client.staff.roles.list();\n\nconsole.log(roles.roles);",
      },
      http: {
        example: 'curl https://api.plumery.com/api/v1/staff/roles \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'staff().roles().list',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.roles.RoleListParams\nimport com.plumery.api.models.staff.roles.RoleListResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val roles: RoleListResponse = client.staff().roles().list()\n}',
      },
      java: {
        method: 'staff().roles().list',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.roles.RoleListParams;\nimport com.plumery.api.models.staff.roles.RoleListResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        RoleListResponse roles = client.staff().roles().list();\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/staff/roles/{roleId}',
    httpMethod: 'get',
    summary: 'Retrieve a role',
    description: 'Retrieve a single role by its stable identifier.\n',
    stainlessPath: '(resource) staff.roles > (method) retrieve',
    qualified: 'client.staff.roles.retrieve',
    params: [
      'roleId: string;',
      'expandPermissions?: boolean;',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    response:
      '{ name?: string; permissions?: { action?: string; category?: string; resource?: string; }[]; roleId?: string; }',
    markdown:
      "## retrieve\n\n`client.staff.roles.retrieve(roleId: string, expandPermissions?: boolean, plmr-user-action?: boolean, X-Request-ID?: string): { name?: string; permissions?: object[]; roleId?: string; }`\n\n**get** `/api/v1/staff/roles/{roleId}`\n\nRetrieve a single role by its stable identifier.\n\n\n### Parameters\n\n- `roleId: string`\n\n- `expandPermissions?: boolean`\n  This parameter influences the information about roles provided in the response. If it is set to 'true', \nthe response will include permissions associated with each role. If 'false' or not provided, the response \nwill only include roles without their respective permissions.\n\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ name?: string; permissions?: { action?: string; category?: string; resource?: string; }[]; roleId?: string; }`\n  A single role with its stable identifier and its associated permissions, if these were requested.\n\n  - `name?: string`\n  - `permissions?: { action?: string; category?: string; resource?: string; }[]`\n  - `roleId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst role = await client.staff.roles.retrieve('3e1250a2-742f-4808-a10a-b9bb8af32f53');\n\nconsole.log(role);\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.roles.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst role = await client.staff.roles.retrieve('3e1250a2-742f-4808-a10a-b9bb8af32f53');\n\nconsole.log(role.name);",
      },
      http: {
        example: 'curl https://api.plumery.com/api/v1/staff/roles/$ROLE_ID \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'staff().roles().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.roles.RoleRetrieveParams\nimport com.plumery.api.models.staff.roles.RoleRetrieveResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val role: RoleRetrieveResponse = client.staff().roles().retrieve("3e1250a2-742f-4808-a10a-b9bb8af32f53")\n}',
      },
      java: {
        method: 'staff().roles().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.roles.RoleRetrieveParams;\nimport com.plumery.api.models.staff.roles.RoleRetrieveResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        RoleRetrieveResponse role = client.staff().roles().retrieve("3e1250a2-742f-4808-a10a-b9bb8af32f53");\n    }\n}',
      },
    },
  },
  {
    name: 'update',
    endpoint: '/api/v1/staff/roles/{roleId}',
    httpMethod: 'patch',
    summary: 'Rename a role',
    description: 'Rename an existing role within a given organisation.\n',
    stainlessPath: '(resource) staff.roles > (method) update',
    qualified: 'client.staff.roles.update',
    params: ['roleId: string;', 'name: string;', 'plmr-user-action?: boolean;', 'X-Request-ID?: string;'],
    markdown:
      "## update\n\n`client.staff.roles.update(roleId: string, name: string, plmr-user-action?: boolean, X-Request-ID?: string): void`\n\n**patch** `/api/v1/staff/roles/{roleId}`\n\nRename an existing role within a given organisation.\n\n\n### Parameters\n\n- `roleId: string`\n\n- `name: string`\n  The new name for the role. May only contain letters, digits, underscores, hyphens and dots\n(no spaces or other characters); the name is stored in upper case.\n\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.staff.roles.update('3e1250a2-742f-4808-a10a-b9bb8af32f53', { name: 'ROLE_RENAMED' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.roles.update',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.staff.roles.update('3e1250a2-742f-4808-a10a-b9bb8af32f53', { name: 'ROLE_RENAMED' });",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/staff/roles/$ROLE_ID \\\n    -X PATCH \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "name": "ROLE_RENAMED"\n        }\'',
      },
      kotlin: {
        method: 'staff().roles().update',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.roles.RoleUpdateParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: RoleUpdateParams = RoleUpdateParams.builder()\n        .roleId("3e1250a2-742f-4808-a10a-b9bb8af32f53")\n        .name("ROLE_RENAMED")\n        .build()\n    client.staff().roles().update(params)\n}',
      },
      java: {
        method: 'staff().roles().update',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.roles.RoleUpdateParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        RoleUpdateParams params = RoleUpdateParams.builder()\n            .roleId("3e1250a2-742f-4808-a10a-b9bb8af32f53")\n            .name("ROLE_RENAMED")\n            .build();\n        client.staff().roles().update(params);\n    }\n}',
      },
    },
  },
  {
    name: 'delete',
    endpoint: '/api/v1/staff/roles/{roleId}',
    httpMethod: 'delete',
    summary: 'Delete a role',
    description: 'Delete an existing role within a given organisation.\n',
    stainlessPath: '(resource) staff.roles > (method) delete',
    qualified: 'client.staff.roles.delete',
    params: ['roleId: string;', 'plmr-user-action?: boolean;', 'X-Request-ID?: string;'],
    markdown:
      "## delete\n\n`client.staff.roles.delete(roleId: string, plmr-user-action?: boolean, X-Request-ID?: string): void`\n\n**delete** `/api/v1/staff/roles/{roleId}`\n\nDelete an existing role within a given organisation.\n\n\n### Parameters\n\n- `roleId: string`\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.staff.roles.delete('3e1250a2-742f-4808-a10a-b9bb8af32f53')\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.roles.delete',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.staff.roles.delete('3e1250a2-742f-4808-a10a-b9bb8af32f53');",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/staff/roles/$ROLE_ID \\\n    -X DELETE \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'staff().roles().delete',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.roles.RoleDeleteParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    client.staff().roles().delete("3e1250a2-742f-4808-a10a-b9bb8af32f53")\n}',
      },
      java: {
        method: 'staff().roles().delete',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.roles.RoleDeleteParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        client.staff().roles().delete("3e1250a2-742f-4808-a10a-b9bb8af32f53");\n    }\n}',
      },
    },
  },
  {
    name: 'create',
    endpoint: '/api/v1/staff/roles',
    httpMethod: 'post',
    summary: 'Create a role',
    description:
      'Create a new role within a given organisation. The role is created without any permissions;\nuse the update permissions endpoint to assign permissions afterwards.\n',
    stainlessPath: '(resource) staff.roles > (method) create',
    qualified: 'client.staff.roles.create',
    params: ['name: string;', 'plmr-user-action?: boolean;', 'X-Request-ID?: string;'],
    response: '{ name?: string; roleId?: string; }',
    markdown:
      "## create\n\n`client.staff.roles.create(name: string, plmr-user-action?: boolean, X-Request-ID?: string): { name?: string; roleId?: string; }`\n\n**post** `/api/v1/staff/roles`\n\nCreate a new role within a given organisation. The role is created without any permissions;\nuse the update permissions endpoint to assign permissions afterwards.\n\n\n### Parameters\n\n- `name: string`\n  The name of the role to create. May only contain letters, digits, underscores, hyphens and dots\n(no spaces or other characters); the name is stored in upper case.\n\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ name?: string; roleId?: string; }`\n  A single role with its stable identifier.\n\n  - `name?: string`\n  - `roleId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst role = await client.staff.roles.create({ name: 'NEW_ROLE' });\n\nconsole.log(role);\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.roles.create',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst role = await client.staff.roles.create({ name: 'NEW_ROLE' });\n\nconsole.log(role.name);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/staff/roles \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "name": "NEW_ROLE"\n        }\'',
      },
      kotlin: {
        method: 'staff().roles().create',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.roles.RoleCreateParams\nimport com.plumery.api.models.staff.roles.RoleCreateResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: RoleCreateParams = RoleCreateParams.builder()\n        .name("NEW_ROLE")\n        .build()\n    val role: RoleCreateResponse = client.staff().roles().create(params)\n}',
      },
      java: {
        method: 'staff().roles().create',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.roles.RoleCreateParams;\nimport com.plumery.api.models.staff.roles.RoleCreateResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        RoleCreateParams params = RoleCreateParams.builder()\n            .name("NEW_ROLE")\n            .build();\n        RoleCreateResponse role = client.staff().roles().create(params);\n    }\n}',
      },
    },
  },
  {
    name: 'update',
    endpoint: '/api/v1/staff/roles/{roleId}/permissions',
    httpMethod: 'patch',
    summary: 'Update role permissions',
    description:
      "Add or remove permissions for a specific role within a given organisation.\nBoth 'add' and 'remove' are optional; include only what needs to change.\n",
    stainlessPath: '(resource) staff.roles.permissions > (method) update',
    qualified: 'client.staff.roles.permissions.update',
    params: [
      'roleId: string;',
      'add?: { action: string; resource: string; }[];',
      'remove?: { action: string; resource: string; }[];',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    markdown:
      "## update\n\n`client.staff.roles.permissions.update(roleId: string, add?: { action: string; resource: string; }[], remove?: { action: string; resource: string; }[], plmr-user-action?: boolean, X-Request-ID?: string): void`\n\n**patch** `/api/v1/staff/roles/{roleId}/permissions`\n\nAdd or remove permissions for a specific role within a given organisation.\nBoth 'add' and 'remove' are optional; include only what needs to change.\n\n\n### Parameters\n\n- `roleId: string`\n\n- `add?: { action: string; resource: string; }[]`\n  Permissions to grant to the role.\n\n- `remove?: { action: string; resource: string; }[]`\n  Permissions to revoke from the role.\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.staff.roles.permissions.update('3e1250a2-742f-4808-a10a-b9bb8af32f53')\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.roles.permissions.update',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.staff.roles.permissions.update('3e1250a2-742f-4808-a10a-b9bb8af32f53');",
      },
      http: {
        example:
          "curl https://api.plumery.com/api/v1/staff/roles/$ROLE_ID/permissions \\\n    -X PATCH \\\n    -H 'Content-Type: application/json' \\\n    -H \"Cookie: $SESSION\" \\\n    -d '{}'",
      },
      kotlin: {
        method: 'staff().roles().permissions().update',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.roles.permissions.PermissionUpdateParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    client.staff().roles().permissions().update("3e1250a2-742f-4808-a10a-b9bb8af32f53")\n}',
      },
      java: {
        method: 'staff().roles().permissions().update',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.roles.permissions.PermissionUpdateParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        client.staff().roles().permissions().update("3e1250a2-742f-4808-a10a-b9bb8af32f53");\n    }\n}',
      },
    },
  },
  {
    name: 'list',
    endpoint: '/api/v1/staff/roles/group-associations',
    httpMethod: 'get',
    summary: 'Get all role-group associations',
    description: 'Retrieves all available role-group associations.\n',
    stainlessPath: '(resource) staff.roles.group-associations > (method) list',
    qualified: 'client.staff.roles.groupAssociations.list',
    params: ['plmr-user-action?: boolean;', 'X-Request-ID?: string;'],
    response: "{ associations?: { id?: string; idpGroup?: string; roleName?: 'ADMIN'; }[]; }",
    markdown:
      "## list\n\n`client.staff.roles.groupAssociations.list(plmr-user-action?: boolean, X-Request-ID?: string): { associations?: object[]; }`\n\n**get** `/api/v1/staff/roles/group-associations`\n\nRetrieves all available role-group associations.\n\n\n### Parameters\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ associations?: { id?: string; idpGroup?: string; roleName?: 'ADMIN'; }[]; }`\n\n  - `associations?: { id?: string; idpGroup?: string; roleName?: 'ADMIN'; }[]`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst groupAssociations = await client.staff.roles.groupAssociations.list();\n\nconsole.log(groupAssociations);\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.roles.groupAssociations.list',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst groupAssociations = await client.staff.roles.groupAssociations.list();\n\nconsole.log(groupAssociations.associations);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/staff/roles/group-associations \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'staff().roles().groupAssociations().list',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.roles.groupassociations.GroupAssociationListParams\nimport com.plumery.api.models.staff.roles.groupassociations.GroupAssociationListResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val groupAssociations: GroupAssociationListResponse = client.staff().roles().groupAssociations().list()\n}',
      },
      java: {
        method: 'staff().roles().groupAssociations().list',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.roles.groupassociations.GroupAssociationListParams;\nimport com.plumery.api.models.staff.roles.groupassociations.GroupAssociationListResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        GroupAssociationListResponse groupAssociations = client.staff().roles().groupAssociations().list();\n    }\n}',
      },
    },
  },
  {
    name: 'create',
    endpoint: '/api/v1/staff/roles/group-associations',
    httpMethod: 'post',
    summary: 'Create a new role-group association',
    description: 'Creates a new role-group association.\n',
    stainlessPath: '(resource) staff.roles.group-associations > (method) create',
    qualified: 'client.staff.roles.groupAssociations.create',
    params: [
      'idpGroup?: string;',
      "roleName?: 'ADMIN';",
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    response: "{ id?: string; idpGroup?: string; roleName?: 'ADMIN'; }",
    markdown:
      "## create\n\n`client.staff.roles.groupAssociations.create(idpGroup?: string, roleName?: 'ADMIN', plmr-user-action?: boolean, X-Request-ID?: string): { id?: string; idpGroup?: string; roleName?: 'ADMIN'; }`\n\n**post** `/api/v1/staff/roles/group-associations`\n\nCreates a new role-group association.\n\n\n### Parameters\n\n- `idpGroup?: string`\n  The group to which the role is associated, as supported by IdP (Identity provider).\n\n- `roleName?: 'ADMIN'`\n  The role to be associated, as supported by Plumery.\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ id?: string; idpGroup?: string; roleName?: 'ADMIN'; }`\n  Represents an association between a Plumery role and an IdP group for staff users.\n\n\n  - `id?: string`\n  - `idpGroup?: string`\n  - `roleName?: 'ADMIN'`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst groupAssociation = await client.staff.roles.groupAssociations.create();\n\nconsole.log(groupAssociation);\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.roles.groupAssociations.create',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst groupAssociation = await client.staff.roles.groupAssociations.create();\n\nconsole.log(groupAssociation.id);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/staff/roles/group-associations \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'staff().roles().groupAssociations().create',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.roles.groupassociations.GroupAssociationCreateParams\nimport com.plumery.api.models.staff.roles.groupassociations.GroupAssociationCreateResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val groupAssociation: GroupAssociationCreateResponse = client.staff().roles().groupAssociations().create()\n}',
      },
      java: {
        method: 'staff().roles().groupAssociations().create',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.roles.groupassociations.GroupAssociationCreateParams;\nimport com.plumery.api.models.staff.roles.groupassociations.GroupAssociationCreateResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        GroupAssociationCreateResponse groupAssociation = client.staff().roles().groupAssociations().create();\n    }\n}',
      },
    },
  },
  {
    name: 'delete',
    endpoint: '/api/v1/staff/roles/group-associations/{associationId}',
    httpMethod: 'delete',
    summary: 'Delete a role-group association',
    description: 'Deletes a role-group association pair.\n',
    stainlessPath: '(resource) staff.roles.group-associations > (method) delete',
    qualified: 'client.staff.roles.groupAssociations.delete',
    params: ['associationId: string;', 'plmr-user-action?: boolean;', 'X-Request-ID?: string;'],
    markdown:
      "## delete\n\n`client.staff.roles.groupAssociations.delete(associationId: string, plmr-user-action?: boolean, X-Request-ID?: string): void`\n\n**delete** `/api/v1/staff/roles/group-associations/{associationId}`\n\nDeletes a role-group association pair.\n\n\n### Parameters\n\n- `associationId: string`\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.staff.roles.groupAssociations.delete('99aca2b3-cedb-4d59-8339-4edcb76492a1')\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.roles.groupAssociations.delete',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.staff.roles.groupAssociations.delete('99aca2b3-cedb-4d59-8339-4edcb76492a1');",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/staff/roles/group-associations/$ASSOCIATION_ID \\\n    -X DELETE \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'staff().roles().groupAssociations().delete',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.roles.groupassociations.GroupAssociationDeleteParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    client.staff().roles().groupAssociations().delete("99aca2b3-cedb-4d59-8339-4edcb76492a1")\n}',
      },
      java: {
        method: 'staff().roles().groupAssociations().delete',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.roles.groupassociations.GroupAssociationDeleteParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        client.staff().roles().groupAssociations().delete("99aca2b3-cedb-4d59-8339-4edcb76492a1");\n    }\n}',
      },
    },
  },
  {
    name: 'list',
    endpoint: '/api/v1/staff/permissions',
    httpMethod: 'get',
    summary: 'Retrieve catalog of permissions',
    description:
      "Retrieve catalog of permissions available within the system. These permissions can be used\nto configure roles for an organisation.\n\n### API resource ↔ permissions catalog mapping\n\nEach permission corresponds to an API resource — an endpoint (or group of endpoints) whose\naccess is granted or denied by a role's permission configuration. Permissions are grouped\nbelow by **category**. For each resource:\n\n- the **bold** name is the `resource` value returned by this endpoint;\n- the code in parentheses is the underlying API resource being protected;\n- **Actions** are the actions returned for that resource (`get` → `read`, `post` → `create`,\n  `*` → `all`; all other actions are returned unchanged).\n\n#### Accounts\n\n- **`accounts`** (`api:parties:accounts`) — bank accounts held by the party\n  - Actions: `all`, `read`, `create`, `close`, `update-name`\n- **`account-transactions`** (`api:parties:accounts:transactions`) — transactions belonging to a specific account\n  - Actions: `all`, `generate-snapshot`, `generate-statement`\n- **`account-end-of-day-balances`** (`api:parties:accounts:end-of-day-balances`) — end-of-day balances for an account\n  - Actions: `all`, `read`\n- **`account-transaction-exports`** (`api:parties:accounts:transaction-exports`) — exports of account transactions\n  - Actions: `all`, `read`\n- **`transactions`** (`api:parties:transactions`) — party-level transactions across accounts\n  - Actions: `all`, `read`\n- **`transaction-insights`** (`api:parties:transactions:insights`) — analytics and insights derived from transactions\n  - Actions: `all`, `read`\n\n#### Payments\n\n- **`payments`** (`api:parties:payments`) — payment orders\n  - Actions: `all`, `read`, `create`\n- **`payments-status`** (`api:parties:payments:status`) — status of payment orders\n  - Actions: `all`, `read`\n- **`standing-orders`** (`api:parties:standing-orders`) — recurring (standing order) payments\n  - Actions: `all`, `read`, `create`, `cancel`, `pause`, `resume`, `update`\n- **`counterparties`** (`api:parties:counterparties`) — saved counterparties / beneficiaries\n  - Actions: `all`, `read`, `create`, `search`, `remove`, `update-details`, `add-payment-method`, `remove-payment-method`\n- **`payment-limits`** (`api:parties:payment-limits`) — party payment limits\n  - Actions: `read`, `put`\n\n#### Cards\n\n- **`cards`** (`api:parties:cards`) — payment cards\n  - Actions: `all`, `read`, `create`, `freeze`, `unfreeze`, `terminate`, `update-alias`\n- **`cards-pin`** (`api:parties:cards:pin`) — card PIN management\n  - Actions: `all`, `read`\n\n#### Teams\n\n- **`teams`** (`api:parties:teams`) — teams within an organisation\n  - Actions: `read`\n- **`team-members`** (`api:parties:teams:members`) — members of a team\n  - Actions: `read`, `remove`, `suspend`, `unsuspend`, `update-role`\n- **`team-member-payment-limits`** (`api:parties:teams:members:payment-limits`) — payment limits of team members\n  - Actions: `read`, `put`\n- **`team-invitations`** (`api:parties:teams:invitations`) — invitations to join a team\n  - Actions: `read`, `create`, `resend`, `revoke`\n- **`team-approval-processes`** (`api:parties:teams:approval-processes`) — approval process configuration for teams\n  - Actions: `read`, `create`, `put`, `delete`\n- **`team-approval-requests`** (`api:parties:teams:approval-requests`) — approval requests within teams\n  - Actions: `read`\n- **`team-approval-request-decisions`** (`api:parties:teams:approval-requests:decisions`) — decisions on team approval requests\n  - Actions: `create`\n- **`team-roles`** (`api:parties:roles`) — roles defined for a team\n  - Actions: `read`\n- **`team-role-permissions`** (`api:parties:roles:permissions`) — permissions assigned to team roles\n  - Actions: `read`\n\n#### Organisations\n\n- **`organisations`** (`api:parties:organisations`) — organisation party profiles\n  - Actions: `read`, `update-organisation-details`, `update-organisation-type`, `update-operating-address`, `update-postal-address`, `update-registration-address`\n\n#### Individuals\n\n- **`individuals`** (`api:parties:individuals`) — individual party profiles\n  - Actions: `all`\n- **`individual-tax-identifications`** (`api:parties:individuals:tax-identifications`) — tax identifications of an individual\n  - Actions: `all`\n\n#### Quotes\n\n- **`quotes`** (`api:parties:quotes`) — FX / payment quotes\n  - Actions: `all`, `generate`\n\n#### Funds transfers\n\n- **`funds-transfers`** (`api:parties:funds-transfers`) — funds transfers\n  - Actions: `all`, `create`\n- **`funds-transfers-status`** (`api:parties:funds-transfers:status`) — status of funds transfers\n  - Actions: `all`, `read`\n\n#### Loans\n\n- **`loans`** (`api:parties:loans`) — loans held by the party\n  - Actions: `all`, `read`\n- **`loan-applications`** (`api:parties:loan-applications`) — loan applications\n  - Actions: `all`, `read`, `create`, `generate-offer`, `accept-offer`, `preview-schedule`, `set-bank-account-details`, `submit-application-details`, `submit-business-application-details`, `submit-collateral-details`, `submit-credit-bureau`, `upload-document`\n\n#### Invitations\n\n- **`invitations`** (`api:invitations`) — user invitations\n  - Actions: `read`, `accept`\n\n> **Note:** The exact set of returned permissions depends on the roles & permissions\n> configuration of the target environment, so it may vary between environments.\n",
    stainlessPath: '(resource) staff.permissions > (method) list',
    qualified: 'client.staff.permissions.list',
    params: ['plmr-user-action?: boolean;', 'X-Request-ID?: string;'],
    response: '{ permissions?: { action?: string; category?: string; resource?: string; }[]; }',
    markdown:
      "## list\n\n`client.staff.permissions.list(plmr-user-action?: boolean, X-Request-ID?: string): { permissions?: object[]; }`\n\n**get** `/api/v1/staff/permissions`\n\nRetrieve catalog of permissions available within the system. These permissions can be used\nto configure roles for an organisation.\n\n### API resource ↔ permissions catalog mapping\n\nEach permission corresponds to an API resource — an endpoint (or group of endpoints) whose\naccess is granted or denied by a role's permission configuration. Permissions are grouped\nbelow by **category**. For each resource:\n\n- the **bold** name is the `resource` value returned by this endpoint;\n- the code in parentheses is the underlying API resource being protected;\n- **Actions** are the actions returned for that resource (`get` → `read`, `post` → `create`,\n  `*` → `all`; all other actions are returned unchanged).\n\n#### Accounts\n\n- **`accounts`** (`api:parties:accounts`) — bank accounts held by the party\n  - Actions: `all`, `read`, `create`, `close`, `update-name`\n- **`account-transactions`** (`api:parties:accounts:transactions`) — transactions belonging to a specific account\n  - Actions: `all`, `generate-snapshot`, `generate-statement`\n- **`account-end-of-day-balances`** (`api:parties:accounts:end-of-day-balances`) — end-of-day balances for an account\n  - Actions: `all`, `read`\n- **`account-transaction-exports`** (`api:parties:accounts:transaction-exports`) — exports of account transactions\n  - Actions: `all`, `read`\n- **`transactions`** (`api:parties:transactions`) — party-level transactions across accounts\n  - Actions: `all`, `read`\n- **`transaction-insights`** (`api:parties:transactions:insights`) — analytics and insights derived from transactions\n  - Actions: `all`, `read`\n\n#### Payments\n\n- **`payments`** (`api:parties:payments`) — payment orders\n  - Actions: `all`, `read`, `create`\n- **`payments-status`** (`api:parties:payments:status`) — status of payment orders\n  - Actions: `all`, `read`\n- **`standing-orders`** (`api:parties:standing-orders`) — recurring (standing order) payments\n  - Actions: `all`, `read`, `create`, `cancel`, `pause`, `resume`, `update`\n- **`counterparties`** (`api:parties:counterparties`) — saved counterparties / beneficiaries\n  - Actions: `all`, `read`, `create`, `search`, `remove`, `update-details`, `add-payment-method`, `remove-payment-method`\n- **`payment-limits`** (`api:parties:payment-limits`) — party payment limits\n  - Actions: `read`, `put`\n\n#### Cards\n\n- **`cards`** (`api:parties:cards`) — payment cards\n  - Actions: `all`, `read`, `create`, `freeze`, `unfreeze`, `terminate`, `update-alias`\n- **`cards-pin`** (`api:parties:cards:pin`) — card PIN management\n  - Actions: `all`, `read`\n\n#### Teams\n\n- **`teams`** (`api:parties:teams`) — teams within an organisation\n  - Actions: `read`\n- **`team-members`** (`api:parties:teams:members`) — members of a team\n  - Actions: `read`, `remove`, `suspend`, `unsuspend`, `update-role`\n- **`team-member-payment-limits`** (`api:parties:teams:members:payment-limits`) — payment limits of team members\n  - Actions: `read`, `put`\n- **`team-invitations`** (`api:parties:teams:invitations`) — invitations to join a team\n  - Actions: `read`, `create`, `resend`, `revoke`\n- **`team-approval-processes`** (`api:parties:teams:approval-processes`) — approval process configuration for teams\n  - Actions: `read`, `create`, `put`, `delete`\n- **`team-approval-requests`** (`api:parties:teams:approval-requests`) — approval requests within teams\n  - Actions: `read`\n- **`team-approval-request-decisions`** (`api:parties:teams:approval-requests:decisions`) — decisions on team approval requests\n  - Actions: `create`\n- **`team-roles`** (`api:parties:roles`) — roles defined for a team\n  - Actions: `read`\n- **`team-role-permissions`** (`api:parties:roles:permissions`) — permissions assigned to team roles\n  - Actions: `read`\n\n#### Organisations\n\n- **`organisations`** (`api:parties:organisations`) — organisation party profiles\n  - Actions: `read`, `update-organisation-details`, `update-organisation-type`, `update-operating-address`, `update-postal-address`, `update-registration-address`\n\n#### Individuals\n\n- **`individuals`** (`api:parties:individuals`) — individual party profiles\n  - Actions: `all`\n- **`individual-tax-identifications`** (`api:parties:individuals:tax-identifications`) — tax identifications of an individual\n  - Actions: `all`\n\n#### Quotes\n\n- **`quotes`** (`api:parties:quotes`) — FX / payment quotes\n  - Actions: `all`, `generate`\n\n#### Funds transfers\n\n- **`funds-transfers`** (`api:parties:funds-transfers`) — funds transfers\n  - Actions: `all`, `create`\n- **`funds-transfers-status`** (`api:parties:funds-transfers:status`) — status of funds transfers\n  - Actions: `all`, `read`\n\n#### Loans\n\n- **`loans`** (`api:parties:loans`) — loans held by the party\n  - Actions: `all`, `read`\n- **`loan-applications`** (`api:parties:loan-applications`) — loan applications\n  - Actions: `all`, `read`, `create`, `generate-offer`, `accept-offer`, `preview-schedule`, `set-bank-account-details`, `submit-application-details`, `submit-business-application-details`, `submit-collateral-details`, `submit-credit-bureau`, `upload-document`\n\n#### Invitations\n\n- **`invitations`** (`api:invitations`) — user invitations\n  - Actions: `read`, `accept`\n\n> **Note:** The exact set of returned permissions depends on the roles & permissions\n> configuration of the target environment, so it may vary between environments.\n\n\n### Parameters\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ permissions?: { action?: string; category?: string; resource?: string; }[]; }`\n  Contains a list of all permissions that can be assigned within an organisation.\n\n  - `permissions?: { action?: string; category?: string; resource?: string; }[]`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst permissions = await client.staff.permissions.list();\n\nconsole.log(permissions);\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.permissions.list',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst permissions = await client.staff.permissions.list();\n\nconsole.log(permissions.permissions);",
      },
      http: {
        example: 'curl https://api.plumery.com/api/v1/staff/permissions \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'staff().permissions().list',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.permissions.PermissionListParams\nimport com.plumery.api.models.staff.permissions.PermissionListResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val permissions: PermissionListResponse = client.staff().permissions().list()\n}',
      },
      java: {
        method: 'staff().permissions().list',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.permissions.PermissionListParams;\nimport com.plumery.api.models.staff.permissions.PermissionListResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        PermissionListResponse permissions = client.staff().permissions().list();\n    }\n}',
      },
    },
  },
  {
    name: 'list',
    endpoint: '/api/v1/staff/team-types',
    httpMethod: 'get',
    summary: 'Retrieve all team types',
    description:
      'Retrieve the list of all team types. A team type groups the roles that are applicable to a\nparticular kind of team (for example Junior Accounts or Business Accounts).\n',
    stainlessPath: '(resource) staff.team-types > (method) list',
    qualified: 'client.staff.teamTypes.list',
    params: ['plmr-user-action?: boolean;', 'X-Request-ID?: string;'],
    response: '{ teamTypes?: { name?: string; teamTypeId?: string; }[]; }',
    markdown:
      "## list\n\n`client.staff.teamTypes.list(plmr-user-action?: boolean, X-Request-ID?: string): { teamTypes?: object[]; }`\n\n**get** `/api/v1/staff/team-types`\n\nRetrieve the list of all team types. A team type groups the roles that are applicable to a\nparticular kind of team (for example Junior Accounts or Business Accounts).\n\n\n### Parameters\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ teamTypes?: { name?: string; teamTypeId?: string; }[]; }`\n  Contains a list of all team types.\n\n  - `teamTypes?: { name?: string; teamTypeId?: string; }[]`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst teamTypes = await client.staff.teamTypes.list();\n\nconsole.log(teamTypes);\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.teamTypes.list',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst teamTypes = await client.staff.teamTypes.list();\n\nconsole.log(teamTypes.teamTypes);",
      },
      http: {
        example: 'curl https://api.plumery.com/api/v1/staff/team-types \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'staff().teamTypes().list',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.teamtypes.TeamTypeListParams\nimport com.plumery.api.models.staff.teamtypes.TeamTypeListResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val teamTypes: TeamTypeListResponse = client.staff().teamTypes().list()\n}',
      },
      java: {
        method: 'staff().teamTypes().list',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.teamtypes.TeamTypeListParams;\nimport com.plumery.api.models.staff.teamtypes.TeamTypeListResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        TeamTypeListResponse teamTypes = client.staff().teamTypes().list();\n    }\n}',
      },
    },
  },
  {
    name: 'create',
    endpoint: '/api/v1/staff/team-types',
    httpMethod: 'post',
    summary: 'Create a team type',
    description:
      'Create a new team type. The team type is created without any associated roles; use the\nadd-role-to-team-type endpoint to associate roles afterwards.\n',
    stainlessPath: '(resource) staff.team-types > (method) create',
    qualified: 'client.staff.teamTypes.create',
    params: ['name: string;', 'plmr-user-action?: boolean;', 'X-Request-ID?: string;'],
    response: '{ name?: string; teamTypeId?: string; }',
    markdown:
      "## create\n\n`client.staff.teamTypes.create(name: string, plmr-user-action?: boolean, X-Request-ID?: string): { name?: string; teamTypeId?: string; }`\n\n**post** `/api/v1/staff/team-types`\n\nCreate a new team type. The team type is created without any associated roles; use the\nadd-role-to-team-type endpoint to associate roles afterwards.\n\n\n### Parameters\n\n- `name: string`\n  The name of the team type to create. Must be unique (case-insensitive) and contain at least one non-whitespace character.\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ name?: string; teamTypeId?: string; }`\n  A single team type with its stable identifier and, when retrieved individually, its associated roles.\n\n  - `name?: string`\n  - `teamTypeId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst teamType = await client.staff.teamTypes.create({ name: 'Business Accounts' });\n\nconsole.log(teamType);\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.teamTypes.create',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst teamType = await client.staff.teamTypes.create({ name: 'Business Accounts' });\n\nconsole.log(teamType.name);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/staff/team-types \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "name": "Business Accounts"\n        }\'',
      },
      kotlin: {
        method: 'staff().teamTypes().create',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.teamtypes.TeamTypeCreateParams\nimport com.plumery.api.models.staff.teamtypes.TeamTypeCreateResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: TeamTypeCreateParams = TeamTypeCreateParams.builder()\n        .name("Business Accounts")\n        .build()\n    val teamType: TeamTypeCreateResponse = client.staff().teamTypes().create(params)\n}',
      },
      java: {
        method: 'staff().teamTypes().create',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.teamtypes.TeamTypeCreateParams;\nimport com.plumery.api.models.staff.teamtypes.TeamTypeCreateResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        TeamTypeCreateParams params = TeamTypeCreateParams.builder()\n            .name("Business Accounts")\n            .build();\n        TeamTypeCreateResponse teamType = client.staff().teamTypes().create(params);\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/staff/team-types/{teamTypeId}',
    httpMethod: 'get',
    summary: 'Retrieve a team type',
    description: 'Retrieve a single team type together with the roles associated with it.\n',
    stainlessPath: '(resource) staff.team-types > (method) retrieve',
    qualified: 'client.staff.teamTypes.retrieve',
    params: ['teamTypeId: string;', 'plmr-user-action?: boolean;', 'X-Request-ID?: string;'],
    response: '{ name?: string; teamTypeId?: string; }',
    markdown:
      "## retrieve\n\n`client.staff.teamTypes.retrieve(teamTypeId: string, plmr-user-action?: boolean, X-Request-ID?: string): { name?: string; teamTypeId?: string; }`\n\n**get** `/api/v1/staff/team-types/{teamTypeId}`\n\nRetrieve a single team type together with the roles associated with it.\n\n\n### Parameters\n\n- `teamTypeId: string`\n  The stable team type ID which remains consistent even if the team type is renamed.\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ name?: string; teamTypeId?: string; }`\n  A single team type with its stable identifier and, when retrieved individually, its associated roles.\n\n  - `name?: string`\n  - `teamTypeId?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst teamType = await client.staff.teamTypes.retrieve('9f1c2e34-5a6b-4c7d-8e9f-0a1b2c3d4e5f');\n\nconsole.log(teamType);\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.teamTypes.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst teamType = await client.staff.teamTypes.retrieve('9f1c2e34-5a6b-4c7d-8e9f-0a1b2c3d4e5f');\n\nconsole.log(teamType.name);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/staff/team-types/$TEAM_TYPE_ID \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'staff().teamTypes().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.teamtypes.TeamTypeRetrieveParams\nimport com.plumery.api.models.staff.teamtypes.TeamTypeRetrieveResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val teamType: TeamTypeRetrieveResponse = client.staff().teamTypes().retrieve("9f1c2e34-5a6b-4c7d-8e9f-0a1b2c3d4e5f")\n}',
      },
      java: {
        method: 'staff().teamTypes().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.teamtypes.TeamTypeRetrieveParams;\nimport com.plumery.api.models.staff.teamtypes.TeamTypeRetrieveResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        TeamTypeRetrieveResponse teamType = client.staff().teamTypes().retrieve("9f1c2e34-5a6b-4c7d-8e9f-0a1b2c3d4e5f");\n    }\n}',
      },
    },
  },
  {
    name: 'update',
    endpoint: '/api/v1/staff/team-types/{teamTypeId}',
    httpMethod: 'patch',
    summary: 'Rename a team type',
    description: 'Rename an existing team type.\n',
    stainlessPath: '(resource) staff.team-types > (method) update',
    qualified: 'client.staff.teamTypes.update',
    params: ['teamTypeId: string;', 'name: string;', 'plmr-user-action?: boolean;', 'X-Request-ID?: string;'],
    markdown:
      "## update\n\n`client.staff.teamTypes.update(teamTypeId: string, name: string, plmr-user-action?: boolean, X-Request-ID?: string): void`\n\n**patch** `/api/v1/staff/team-types/{teamTypeId}`\n\nRename an existing team type.\n\n\n### Parameters\n\n- `teamTypeId: string`\n  The stable team type ID which remains consistent even if the team type is renamed.\n\n- `name: string`\n  The new name for the team type. Must be unique (case-insensitive) and contain at least one non-whitespace character.\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.staff.teamTypes.update('9f1c2e34-5a6b-4c7d-8e9f-0a1b2c3d4e5f', { name: 'Junior Accounts' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.teamTypes.update',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.staff.teamTypes.update('9f1c2e34-5a6b-4c7d-8e9f-0a1b2c3d4e5f', {\n  name: 'Junior Accounts',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/staff/team-types/$TEAM_TYPE_ID \\\n    -X PATCH \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "name": "Junior Accounts"\n        }\'',
      },
      kotlin: {
        method: 'staff().teamTypes().update',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.teamtypes.TeamTypeUpdateParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: TeamTypeUpdateParams = TeamTypeUpdateParams.builder()\n        .teamTypeId("9f1c2e34-5a6b-4c7d-8e9f-0a1b2c3d4e5f")\n        .name("Junior Accounts")\n        .build()\n    client.staff().teamTypes().update(params)\n}',
      },
      java: {
        method: 'staff().teamTypes().update',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.teamtypes.TeamTypeUpdateParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        TeamTypeUpdateParams params = TeamTypeUpdateParams.builder()\n            .teamTypeId("9f1c2e34-5a6b-4c7d-8e9f-0a1b2c3d4e5f")\n            .name("Junior Accounts")\n            .build();\n        client.staff().teamTypes().update(params);\n    }\n}',
      },
    },
  },
  {
    name: 'delete',
    endpoint: '/api/v1/staff/team-types/{teamTypeId}',
    httpMethod: 'delete',
    summary: 'Delete a team type',
    description:
      'Delete a team type. Any role associations for this team type are removed; the roles\nthemselves are not affected.\n',
    stainlessPath: '(resource) staff.team-types > (method) delete',
    qualified: 'client.staff.teamTypes.delete',
    params: ['teamTypeId: string;', 'plmr-user-action?: boolean;', 'X-Request-ID?: string;'],
    markdown:
      "## delete\n\n`client.staff.teamTypes.delete(teamTypeId: string, plmr-user-action?: boolean, X-Request-ID?: string): void`\n\n**delete** `/api/v1/staff/team-types/{teamTypeId}`\n\nDelete a team type. Any role associations for this team type are removed; the roles\nthemselves are not affected.\n\n\n### Parameters\n\n- `teamTypeId: string`\n  The stable team type ID which remains consistent even if the team type is renamed.\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.staff.teamTypes.delete('9f1c2e34-5a6b-4c7d-8e9f-0a1b2c3d4e5f')\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.teamTypes.delete',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.staff.teamTypes.delete('9f1c2e34-5a6b-4c7d-8e9f-0a1b2c3d4e5f');",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/staff/team-types/$TEAM_TYPE_ID \\\n    -X DELETE \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'staff().teamTypes().delete',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.teamtypes.TeamTypeDeleteParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    client.staff().teamTypes().delete("9f1c2e34-5a6b-4c7d-8e9f-0a1b2c3d4e5f")\n}',
      },
      java: {
        method: 'staff().teamTypes().delete',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.teamtypes.TeamTypeDeleteParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        client.staff().teamTypes().delete("9f1c2e34-5a6b-4c7d-8e9f-0a1b2c3d4e5f");\n    }\n}',
      },
    },
  },
  {
    name: 'update',
    endpoint: '/api/v1/staff/team-types/{teamTypeId}/roles/{roleId}',
    httpMethod: 'put',
    summary: 'Add a role to a team type',
    description:
      'Associate a role with a team type. The role must already exist. A role may be associated with\nmultiple team types, and the operation is idempotent.\n',
    stainlessPath: '(resource) staff.team-types.roles > (method) update',
    qualified: 'client.staff.teamTypes.roles.update',
    params: [
      'teamTypeId: string;',
      'roleId: string;',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    markdown:
      "## update\n\n`client.staff.teamTypes.roles.update(teamTypeId: string, roleId: string, plmr-user-action?: boolean, X-Request-ID?: string): void`\n\n**put** `/api/v1/staff/team-types/{teamTypeId}/roles/{roleId}`\n\nAssociate a role with a team type. The role must already exist. A role may be associated with\nmultiple team types, and the operation is idempotent.\n\n\n### Parameters\n\n- `teamTypeId: string`\n  The stable team type ID which remains consistent even if the team type is renamed.\n\n- `roleId: string`\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.staff.teamTypes.roles.update('3e1250a2-742f-4808-a10a-b9bb8af32f53', { teamTypeId: '9f1c2e34-5a6b-4c7d-8e9f-0a1b2c3d4e5f' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.teamTypes.roles.update',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.staff.teamTypes.roles.update('3e1250a2-742f-4808-a10a-b9bb8af32f53', {\n  teamTypeId: '9f1c2e34-5a6b-4c7d-8e9f-0a1b2c3d4e5f',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/staff/team-types/$TEAM_TYPE_ID/roles/$ROLE_ID \\\n    -X PUT \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'staff().teamTypes().roles().update',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.teamtypes.roles.RoleUpdateParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: RoleUpdateParams = RoleUpdateParams.builder()\n        .teamTypeId("9f1c2e34-5a6b-4c7d-8e9f-0a1b2c3d4e5f")\n        .roleId("3e1250a2-742f-4808-a10a-b9bb8af32f53")\n        .build()\n    client.staff().teamTypes().roles().update(params)\n}',
      },
      java: {
        method: 'staff().teamTypes().roles().update',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.teamtypes.roles.RoleUpdateParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        RoleUpdateParams params = RoleUpdateParams.builder()\n            .teamTypeId("9f1c2e34-5a6b-4c7d-8e9f-0a1b2c3d4e5f")\n            .roleId("3e1250a2-742f-4808-a10a-b9bb8af32f53")\n            .build();\n        client.staff().teamTypes().roles().update(params);\n    }\n}',
      },
    },
  },
  {
    name: 'delete',
    endpoint: '/api/v1/staff/team-types/{teamTypeId}/roles/{roleId}',
    httpMethod: 'delete',
    summary: 'Remove a role from a team type',
    description:
      'Remove the association between a role and a team type. The role itself is not affected. The\noperation is idempotent.\n',
    stainlessPath: '(resource) staff.team-types.roles > (method) delete',
    qualified: 'client.staff.teamTypes.roles.delete',
    params: [
      'teamTypeId: string;',
      'roleId: string;',
      'plmr-user-action?: boolean;',
      'X-Request-ID?: string;',
    ],
    markdown:
      "## delete\n\n`client.staff.teamTypes.roles.delete(teamTypeId: string, roleId: string, plmr-user-action?: boolean, X-Request-ID?: string): void`\n\n**delete** `/api/v1/staff/team-types/{teamTypeId}/roles/{roleId}`\n\nRemove the association between a role and a team type. The role itself is not affected. The\noperation is idempotent.\n\n\n### Parameters\n\n- `teamTypeId: string`\n  The stable team type ID which remains consistent even if the team type is renamed.\n\n- `roleId: string`\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.staff.teamTypes.roles.delete('3e1250a2-742f-4808-a10a-b9bb8af32f53', { teamTypeId: '9f1c2e34-5a6b-4c7d-8e9f-0a1b2c3d4e5f' })\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.teamTypes.roles.delete',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.staff.teamTypes.roles.delete('3e1250a2-742f-4808-a10a-b9bb8af32f53', {\n  teamTypeId: '9f1c2e34-5a6b-4c7d-8e9f-0a1b2c3d4e5f',\n});",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/staff/team-types/$TEAM_TYPE_ID/roles/$ROLE_ID \\\n    -X DELETE \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'staff().teamTypes().roles().delete',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.teamtypes.roles.RoleDeleteParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: RoleDeleteParams = RoleDeleteParams.builder()\n        .teamTypeId("9f1c2e34-5a6b-4c7d-8e9f-0a1b2c3d4e5f")\n        .roleId("3e1250a2-742f-4808-a10a-b9bb8af32f53")\n        .build()\n    client.staff().teamTypes().roles().delete(params)\n}',
      },
      java: {
        method: 'staff().teamTypes().roles().delete',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.teamtypes.roles.RoleDeleteParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        RoleDeleteParams params = RoleDeleteParams.builder()\n            .teamTypeId("9f1c2e34-5a6b-4c7d-8e9f-0a1b2c3d4e5f")\n            .roleId("3e1250a2-742f-4808-a10a-b9bb8af32f53")\n            .build();\n        client.staff().teamTypes().roles().delete(params);\n    }\n}',
      },
    },
  },
  {
    name: 'list',
    endpoint: '/api/v1/staff/configuration-values',
    httpMethod: 'get',
    summary: 'List configuration values',
    description: 'Returns all manageable configuration values.\n',
    stainlessPath: '(resource) staff.configuration-values > (method) list',
    qualified: 'client.staff.configurationValues.list',
    response: '{ key: string; value: string; }[]',
    markdown:
      "## list\n\n`client.staff.configurationValues.list(): { key: string; value: string; }[]`\n\n**get** `/api/v1/staff/configuration-values`\n\nReturns all manageable configuration values.\n\n\n### Returns\n\n- `{ key: string; value: string; }[]`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst configurationValues = await client.staff.configurationValues.list();\n\nconsole.log(configurationValues);\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.configurationValues.list',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst configurationValues = await client.staff.configurationValues.list();\n\nconsole.log(configurationValues);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/staff/configuration-values \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'staff().configurationValues().list',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.configurationvalues.ConfigurationValueListParams\nimport com.plumery.api.models.staff.configurationvalues.ConfigurationValueListResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val configurationValues: List<ConfigurationValueListResponse> = client.staff().configurationValues().list()\n}',
      },
      java: {
        method: 'staff().configurationValues().list',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.configurationvalues.ConfigurationValueListParams;\nimport com.plumery.api.models.staff.configurationvalues.ConfigurationValueListResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        List<ConfigurationValueListResponse> configurationValues = client.staff().configurationValues().list();\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/staff/configuration-values/{key}',
    httpMethod: 'get',
    summary: 'Get a configuration value',
    description: 'Get a configuration value',
    stainlessPath: '(resource) staff.configuration-values > (method) retrieve',
    qualified: 'client.staff.configurationValues.retrieve',
    params: ['key: string;'],
    response: '{ key: string; value: string; }',
    markdown:
      "## retrieve\n\n`client.staff.configurationValues.retrieve(key: string): { key: string; value: string; }`\n\n**get** `/api/v1/staff/configuration-values/{key}`\n\nGet a configuration value\n\n### Parameters\n\n- `key: string`\n\n### Returns\n\n- `{ key: string; value: string; }`\n\n  - `key: string`\n  - `value: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst configurationValue = await client.staff.configurationValues.retrieve('payment-limit-default-daily-amount');\n\nconsole.log(configurationValue);\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.configurationValues.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst configurationValue = await client.staff.configurationValues.retrieve(\n  'payment-limit-default-daily-amount',\n);\n\nconsole.log(configurationValue.key);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/staff/configuration-values/$KEY \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'staff().configurationValues().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.configurationvalues.ConfigurationValueRetrieveParams\nimport com.plumery.api.models.staff.configurationvalues.ConfigurationValueRetrieveResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val configurationValue: ConfigurationValueRetrieveResponse = client.staff().configurationValues().retrieve("payment-limit-default-daily-amount")\n}',
      },
      java: {
        method: 'staff().configurationValues().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.configurationvalues.ConfigurationValueRetrieveParams;\nimport com.plumery.api.models.staff.configurationvalues.ConfigurationValueRetrieveResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        ConfigurationValueRetrieveResponse configurationValue = client.staff().configurationValues().retrieve("payment-limit-default-daily-amount");\n    }\n}',
      },
    },
  },
  {
    name: 'update',
    endpoint: '/api/v1/staff/configuration-values/{key}',
    httpMethod: 'put',
    summary: 'Set a configuration value',
    description:
      "Stores the value as the key's current value. The previous values are kept in the registry's history.\n",
    stainlessPath: '(resource) staff.configuration-values > (method) update',
    qualified: 'client.staff.configurationValues.update',
    params: ['key: string;', 'value: string;'],
    response: '{ key: string; value: string; }',
    markdown:
      "## update\n\n`client.staff.configurationValues.update(key: string, value: string): { key: string; value: string; }`\n\n**put** `/api/v1/staff/configuration-values/{key}`\n\nStores the value as the key's current value. The previous values are kept in the registry's history.\n\n\n### Parameters\n\n- `key: string`\n\n- `value: string`\n  The new value as a plain string. An empty string is a valid value.\n\n### Returns\n\n- `{ key: string; value: string; }`\n\n  - `key: string`\n  - `value: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst configurationValue = await client.staff.configurationValues.update('payment-limit-default-daily-amount', { value: '5000.00' });\n\nconsole.log(configurationValue);\n```",
    perLanguage: {
      typescript: {
        method: 'client.staff.configurationValues.update',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst configurationValue = await client.staff.configurationValues.update(\n  'payment-limit-default-daily-amount',\n  { value: '5000.00' },\n);\n\nconsole.log(configurationValue.key);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/staff/configuration-values/$KEY \\\n    -X PUT \\\n    -H \'Content-Type: application/json\' \\\n    -H "Cookie: $SESSION" \\\n    -d \'{\n          "value": "5000.00"\n        }\'',
      },
      kotlin: {
        method: 'staff().configurationValues().update',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.staff.configurationvalues.ConfigurationValueUpdateParams\nimport com.plumery.api.models.staff.configurationvalues.ConfigurationValueUpdateResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: ConfigurationValueUpdateParams = ConfigurationValueUpdateParams.builder()\n        .key("payment-limit-default-daily-amount")\n        .value("5000.00")\n        .build()\n    val configurationValue: ConfigurationValueUpdateResponse = client.staff().configurationValues().update(params)\n}',
      },
      java: {
        method: 'staff().configurationValues().update',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.staff.configurationvalues.ConfigurationValueUpdateParams;\nimport com.plumery.api.models.staff.configurationvalues.ConfigurationValueUpdateResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        ConfigurationValueUpdateParams params = ConfigurationValueUpdateParams.builder()\n            .key("payment-limit-default-daily-amount")\n            .value("5000.00")\n            .build();\n        ConfigurationValueUpdateResponse configurationValue = client.staff().configurationValues().update(params);\n    }\n}',
      },
    },
  },
  {
    name: 'reserve',
    endpoint: '/api/v1/usernames:reserve',
    httpMethod: 'post',
    summary: 'Check And Reserve Username',
    description:
      "Checks whether a username is available and, if so, reserves it for a configurable period\n(default 1 day).\n\nThe reservation is bound to an opaque `reservationToken` returned on the first successful\ncall. Passing the token back on subsequent calls refreshes the caller's own reservation and\nreleases it if a different username is chosen, so a client never locks itself out.\n",
    stainlessPath: '(resource) usernames > (method) reserve',
    qualified: 'client.usernames.reserve',
    params: ['username: string;', 'reservationToken?: string;'],
    response: '{ available: boolean; expiresInSeconds?: number; reservationToken?: string; }',
    markdown:
      "## reserve\n\n`client.usernames.reserve(username: string, reservationToken?: string): { available: boolean; expiresInSeconds?: number; reservationToken?: string; }`\n\n**post** `/api/v1/usernames:reserve`\n\nChecks whether a username is available and, if so, reserves it for a configurable period\n(default 1 day).\n\nThe reservation is bound to an opaque `reservationToken` returned on the first successful\ncall. Passing the token back on subsequent calls refreshes the caller's own reservation and\nreleases it if a different username is chosen, so a client never locks itself out.\n\n\n### Parameters\n\n- `username: string`\n  The username whose availability should be checked and reserved.\n\n- `reservationToken?: string`\n  Token returned by a previous successful reservation. Pass it back to refresh the\ncaller's own reservation (and release it when switching to a different username).\n\n\n### Returns\n\n- `{ available: boolean; expiresInSeconds?: number; reservationToken?: string; }`\n\n  - `available: boolean`\n  - `expiresInSeconds?: number`\n  - `reservationToken?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.usernames.reserve({ username: 'john.snow' });\n\nconsole.log(response);\n```",
    perLanguage: {
      typescript: {
        method: 'client.usernames.reserve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst response = await client.usernames.reserve({ username: 'john.snow' });\n\nconsole.log(response.available);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/usernames:reserve \\\n    -H \'Content-Type: application/json\' \\\n    -d \'{\n          "username": "john.snow",\n          "reservationToken": "6f1e2d3c-4b5a-6789-abcd-ef0123456789"\n        }\'',
      },
      kotlin: {
        method: 'usernames().reserve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.usernames.UsernameReserveParams\nimport com.plumery.api.models.usernames.UsernameReserveResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val params: UsernameReserveParams = UsernameReserveParams.builder()\n        .username("john.snow")\n        .build()\n    val response: UsernameReserveResponse = client.usernames().reserve(params)\n}',
      },
      java: {
        method: 'usernames().reserve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.usernames.UsernameReserveParams;\nimport com.plumery.api.models.usernames.UsernameReserveResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        UsernameReserveParams params = UsernameReserveParams.builder()\n            .username("john.snow")\n            .build();\n        UsernameReserveResponse response = client.usernames().reserve(params);\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/invitations/{invitationId}',
    httpMethod: 'get',
    summary: 'Retrieve invitation (me)',
    description: 'Retrieve invitation details for the authenticated user.\n',
    stainlessPath: '(resource) invitations > (method) retrieve',
    qualified: 'client.invitations.retrieve',
    params: ['invitationId: string;', 'plmr-user-action?: boolean;', 'X-Request-ID?: string;'],
    response:
      "{ invitationId?: string; organisationLegalName?: string; status?: 'PENDING_APPROVAL' | 'PENDING' | 'ACCEPTED' | 'REVOKED' | 'REJECTED' | 'EXPIRED'; statusDateTime?: string; }",
    markdown:
      "## retrieve\n\n`client.invitations.retrieve(invitationId: string, plmr-user-action?: boolean, X-Request-ID?: string): { invitationId?: string; organisationLegalName?: string; status?: 'PENDING_APPROVAL' | 'PENDING' | 'ACCEPTED' | 'REVOKED' | 'REJECTED' | 'EXPIRED'; statusDateTime?: string; }`\n\n**get** `/api/v1/invitations/{invitationId}`\n\nRetrieve invitation details for the authenticated user.\n\n\n### Parameters\n\n- `invitationId: string`\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Returns\n\n- `{ invitationId?: string; organisationLegalName?: string; status?: 'PENDING_APPROVAL' | 'PENDING' | 'ACCEPTED' | 'REVOKED' | 'REJECTED' | 'EXPIRED'; statusDateTime?: string; }`\n  Invitation details for the authenticated user (minimal for UI display).\n\n  - `invitationId?: string`\n  - `organisationLegalName?: string`\n  - `status?: 'PENDING_APPROVAL' | 'PENDING' | 'ACCEPTED' | 'REVOKED' | 'REJECTED' | 'EXPIRED'`\n  - `statusDateTime?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst invitation = await client.invitations.retrieve('1adcdcc1-e39e-4fd0-91d7-22a606c25622');\n\nconsole.log(invitation);\n```",
    perLanguage: {
      typescript: {
        method: 'client.invitations.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst invitation = await client.invitations.retrieve('1adcdcc1-e39e-4fd0-91d7-22a606c25622');\n\nconsole.log(invitation.invitationId);",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/invitations/$INVITATION_ID \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'invitations().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.invitations.InvitationRetrieveParams\nimport com.plumery.api.models.invitations.InvitationRetrieveResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val invitation: InvitationRetrieveResponse = client.invitations().retrieve("1adcdcc1-e39e-4fd0-91d7-22a606c25622")\n}',
      },
      java: {
        method: 'invitations().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.invitations.InvitationRetrieveParams;\nimport com.plumery.api.models.invitations.InvitationRetrieveResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        InvitationRetrieveResponse invitation = client.invitations().retrieve("1adcdcc1-e39e-4fd0-91d7-22a606c25622");\n    }\n}',
      },
    },
  },
  {
    name: 'accept',
    endpoint: '/api/v1/invitations/{invitationId}:accept',
    httpMethod: 'post',
    summary: 'Accept invitation (me)',
    description: 'Accept invitation for the authenticated user.\n',
    stainlessPath: '(resource) invitations > (method) accept',
    qualified: 'client.invitations.accept',
    params: ['invitationId: string;', 'plmr-user-action?: boolean;', 'X-Request-ID?: string;'],
    markdown:
      "## accept\n\n`client.invitations.accept(invitationId: string, plmr-user-action?: boolean, X-Request-ID?: string): void`\n\n**post** `/api/v1/invitations/{invitationId}:accept`\n\nAccept invitation for the authenticated user.\n\n\n### Parameters\n\n- `invitationId: string`\n\n- `plmr-user-action?: boolean`\n\n- `X-Request-ID?: string`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nawait client.invitations.accept('1adcdcc1-e39e-4fd0-91d7-22a606c25622')\n```",
    perLanguage: {
      typescript: {
        method: 'client.invitations.accept',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nawait client.invitations.accept('1adcdcc1-e39e-4fd0-91d7-22a606c25622');",
      },
      http: {
        example:
          'curl https://api.plumery.com/api/v1/invitations/$INVITATION_ID:accept \\\n    -X POST \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'invitations().accept',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.invitations.InvitationAcceptParams\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    client.invitations().accept("1adcdcc1-e39e-4fd0-91d7-22a606c25622")\n}',
      },
      java: {
        method: 'invitations().accept',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.invitations.InvitationAcceptParams;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        client.invitations().accept("1adcdcc1-e39e-4fd0-91d7-22a606c25622");\n    }\n}',
      },
    },
  },
  {
    name: 'list',
    endpoint: '/api/v1/content/faqs',
    httpMethod: 'get',
    summary: 'List FAQs',
    description:
      'Retrieve published FAQ entries, ordered by display order. The sort direction can be chosen\nvia `order` (defaults to ascending). The list can be filtered by category (exact match)\nand/or question (partial, case-insensitive match).\n',
    stainlessPath: '(resource) content.faqs > (method) list',
    qualified: 'client.content.faqs.list',
    params: ['category?: string;', "order?: 'asc' | 'desc';", 'question?: string;'],
    response:
      '{ faqs: { id: string; answer: string; question: string; category?: string; order?: number; }[]; }',
    markdown:
      "## list\n\n`client.content.faqs.list(category?: string, order?: 'asc' | 'desc', question?: string): { faqs: object[]; }`\n\n**get** `/api/v1/content/faqs`\n\nRetrieve published FAQ entries, ordered by display order. The sort direction can be chosen\nvia `order` (defaults to ascending). The list can be filtered by category (exact match)\nand/or question (partial, case-insensitive match).\n\n\n### Parameters\n\n- `category?: string`\n  Exact-match filter on the FAQ category.\n\n- `order?: 'asc' | 'desc'`\n  Sort direction applied to the FAQ display order.\n\n- `question?: string`\n  Partial, case-insensitive filter on the FAQ question.\n\n### Returns\n\n- `{ faqs: { id: string; answer: string; question: string; category?: string; order?: number; }[]; }`\n  A list of published FAQs.\n\n  - `faqs: { id: string; answer: string; question: string; category?: string; order?: number; }[]`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst faqs = await client.content.faqs.list();\n\nconsole.log(faqs);\n```",
    perLanguage: {
      typescript: {
        method: 'client.content.faqs.list',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst faqs = await client.content.faqs.list();\n\nconsole.log(faqs.faqs);",
      },
      http: {
        example: 'curl https://api.plumery.com/api/v1/content/faqs \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'content().faqs().list',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.content.faqs.FaqListParams\nimport com.plumery.api.models.content.faqs.FaqListResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val faqs: FaqListResponse = client.content().faqs().list()\n}',
      },
      java: {
        method: 'content().faqs().list',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.content.faqs.FaqListParams;\nimport com.plumery.api.models.content.faqs.FaqListResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        FaqListResponse faqs = client.content().faqs().list();\n    }\n}',
      },
    },
  },
  {
    name: 'retrieve',
    endpoint: '/api/v1/content/faqs/{id}',
    httpMethod: 'get',
    summary: 'Get FAQ',
    description: 'Retrieve a single published FAQ by its identifier.',
    stainlessPath: '(resource) content.faqs > (method) retrieve',
    qualified: 'client.content.faqs.retrieve',
    params: ['id: string;'],
    response: '{ id: string; answer: string; question: string; category?: string; order?: number; }',
    markdown:
      "## retrieve\n\n`client.content.faqs.retrieve(id: string): { id: string; answer: string; question: string; category?: string; order?: number; }`\n\n**get** `/api/v1/content/faqs/{id}`\n\nRetrieve a single published FAQ by its identifier.\n\n### Parameters\n\n- `id: string`\n\n### Returns\n\n- `{ id: string; answer: string; question: string; category?: string; order?: number; }`\n  A published FAQ entry.\n\n  - `id: string`\n  - `answer: string`\n  - `question: string`\n  - `category?: string`\n  - `order?: number`\n\n### Example\n\n```typescript\nimport Plumery from 'plumery';\n\nconst client = new Plumery();\n\nconst faq = await client.content.faqs.retrieve('abc123documentid');\n\nconsole.log(faq);\n```",
    perLanguage: {
      typescript: {
        method: 'client.content.faqs.retrieve',
        example:
          "import Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst faq = await client.content.faqs.retrieve('abc123documentid');\n\nconsole.log(faq.id);",
      },
      http: {
        example: 'curl https://api.plumery.com/api/v1/content/faqs/$ID \\\n    -H "Cookie: $SESSION"',
      },
      kotlin: {
        method: 'content().faqs().retrieve',
        example:
          'package com.plumery.api.example\n\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.content.faqs.FaqRetrieveParams\nimport com.plumery.api.models.content.faqs.FaqRetrieveResponse\n\nfun main() {\n    val client: PlumeryClient = PlumeryOkHttpClient.builder()\n        .fromEnv()\n        .session("My Session")\n        .build()\n\n    val faq: FaqRetrieveResponse = client.content().faqs().retrieve("abc123documentid")\n}',
      },
      java: {
        method: 'content().faqs().retrieve',
        example:
          'package com.plumery.api.example;\n\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.content.faqs.FaqRetrieveParams;\nimport com.plumery.api.models.content.faqs.FaqRetrieveResponse;\n\npublic final class Main {\n    private Main() {}\n\n    public static void main(String[] args) {\n        PlumeryClient client = PlumeryOkHttpClient.builder()\n            .fromEnv()\n            .session("My Session")\n            .build();\n\n        FaqRetrieveResponse faq = client.content().faqs().retrieve("abc123documentid");\n    }\n}',
      },
    },
  },
];

const EMBEDDED_READMES: { language: string; content: string }[] = [
  {
    language: 'typescript',
    content:
      "# Plumery TypeScript API Library\n\n[![NPM version](https://img.shields.io/npm/v/plumery.svg?label=npm%20(stable))](https://npmjs.org/package/plumery) ![npm bundle size](https://img.shields.io/bundlephobia/minzip/plumery)\n\nThis library provides convenient access to the Plumery REST API from server-side TypeScript or JavaScript.\n\n\n\nThe REST API documentation can be found on [plumery.stldocs.app](https://plumery.stldocs.app/api). The full API of this library can be found in [api.md](api.md).\n\nIt is generated with [Stainless](https://www.stainless.com/).\n\n## MCP Server\n\nUse the Plumery MCP Server to enable AI assistants to interact with this API, allowing them to explore endpoints, make test requests, and use documentation to help integrate this SDK into your application.\n\n[![Add to Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en-US/install-mcp?name=plumery-mcp&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsInBsdW1lcnktbWNwIl0sImVudiI6eyJQTFVNRVJZX1NFU1NJT04iOiJNeSBTZXNzaW9uIn19)\n[![Install in VS Code](https://img.shields.io/badge/_-Add_to_VS_Code-blue?style=for-the-badge&logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCA0MCA0MCI+PHBhdGggZmlsbD0iI0VFRSIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMzAuMjM1IDM5Ljg4NGEyLjQ5MSAyLjQ5MSAwIDAgMS0xLjc4MS0uNzNMMTIuNyAyNC43OGwtMy40NiAyLjYyNC0zLjQwNiAyLjU4MmExLjY2NSAxLjY2NSAwIDAgMS0xLjA4Mi4zMzggMS42NjQgMS42NjQgMCAwIDEtMS4wNDYtLjQzMWwtMi4yLTJhMS42NjYgMS42NjYgMCAwIDEgMC0yLjQ2M0w3LjQ1OCAyMCA0LjY3IDE3LjQ1MyAxLjUwNyAxNC41N2ExLjY2NSAxLjY2NSAwIDAgMSAwLTIuNDYzbDIuMi0yYTEuNjY1IDEuNjY1IDAgMCAxIDIuMTMtLjA5N2w2Ljg2MyA1LjIwOUwyOC40NTIuODQ0YTIuNDg4IDIuNDg4IDAgMCAxIDEuODQxLS43MjljLjM1MS4wMDkuNjk5LjA5MSAxLjAxOS4yNDVsOC4yMzYgMy45NjFhMi41IDIuNSAwIDAgMSAxLjQxNSAyLjI1M3YuMDk5LS4wNDVWMzMuMzd2LS4wNDUuMDk1YTIuNTAxIDIuNTAxIDAgMCAxLTEuNDE2IDIuMjU3bC04LjIzNSAzLjk2MWEyLjQ5MiAyLjQ5MiAwIDAgMS0xLjA3Ny4yNDZabS43MTYtMjguOTQ3LTExLjk0OCA5LjA2MiAxMS45NTIgOS4wNjUtLjAwNC0xOC4xMjdaIi8+PC9zdmc+)](https://vscode.stainless.com/mcp/%7B%22name%22%3A%22plumery-mcp%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22plumery-mcp%22%5D%2C%22env%22%3A%7B%22PLUMERY_SESSION%22%3A%22My%20Session%22%7D%7D)\n\n> Note: You may need to set environment variables in your MCP client.\n\n## Installation\n\n```sh\nnpm install plumery\n```\n\n\n\n## Usage\n\nThe full API of this library can be found in [api.md](api.md).\n\n<!-- prettier-ignore -->\n```js\nimport Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst accounts = await client.parties.accounts.list('REPLACE_ME');\n\nconsole.log(accounts.accounts);\n```\n\n\n\n### Request & Response types\n\nThis library includes TypeScript definitions for all request params and response fields. You may import and use them like so:\n\n<!-- prettier-ignore -->\n```ts\nimport Plumery from 'plumery';\n\nconst client = new Plumery({\n  session: 'My Session',\n});\n\nconst accounts: Plumery.Parties.AccountListResponse = await client.parties.accounts.list(\n  'REPLACE_ME',\n);\n```\n\nDocumentation for each method, request param, and response field are available in docstrings and will appear on hover in most modern editors.\n\n## File uploads\n\nRequest parameters that correspond to file uploads can be passed in many different forms:\n- `File` (or an object with the same structure)\n- a `fetch` `Response` (or an object with the same structure)\n- an `fs.ReadStream`\n- the return value of our `toFile` helper\n\n```ts\nimport fs from 'fs';\nimport Plumery, { toFile } from 'plumery';\n\nconst client = new Plumery();\n\n// If you have access to Node `fs` we recommend using `fs.createReadStream()`:\nawait client.loanApplications.uploadDocument('36a22460-ebc8-4ffe-a213-1683c5a420c5', {\n  documentType: 'INCOME_PROOF',\n  file: fs.createReadStream('/path/to/file'),\n  filename: 'filename',\n});\n\n// Or if you have the web `File` API you can pass a `File` instance:\nawait client.loanApplications.uploadDocument('36a22460-ebc8-4ffe-a213-1683c5a420c5', {\n  documentType: 'INCOME_PROOF',\n  file: new File(['my bytes'], 'file'),\n  filename: 'filename',\n});\n\n// You can also pass a `fetch` `Response`:\nawait client.loanApplications.uploadDocument('36a22460-ebc8-4ffe-a213-1683c5a420c5', {\n  documentType: 'INCOME_PROOF',\n  file: await fetch('https://somesite/file'),\n  filename: 'filename',\n});\n\n// Finally, if none of the above are convenient, you can use our `toFile` helper:\nawait client.loanApplications.uploadDocument('36a22460-ebc8-4ffe-a213-1683c5a420c5', {\n  documentType: 'INCOME_PROOF',\n  file: await toFile(Buffer.from('my bytes'), 'file'),\n  filename: 'filename',\n});\nawait client.loanApplications.uploadDocument('36a22460-ebc8-4ffe-a213-1683c5a420c5', {\n  documentType: 'INCOME_PROOF',\n  file: await toFile(new Uint8Array([0, 1, 2]), 'file'),\n  filename: 'filename',\n});\n```\n\n\n\n## Handling errors\n\nWhen the library is unable to connect to the API,\nor if the API returns a non-success status code (i.e., 4xx or 5xx response),\na subclass of `APIError` will be thrown:\n\n<!-- prettier-ignore -->\n```ts\nconst accounts = await client.parties.accounts.list('REPLACE_ME').catch(async (err) => {\n  if (err instanceof Plumery.APIError) {\n    console.log(err.status); // 400\n    console.log(err.name); // BadRequestError\n    console.log(err.headers); // {server: 'nginx', ...}\n  } else {\n    throw err;\n  }\n});\n```\n\nError codes are as follows:\n\n| Status Code | Error Type                 |\n| ----------- | -------------------------- |\n| 400         | `BadRequestError`          |\n| 401         | `AuthenticationError`      |\n| 403         | `PermissionDeniedError`    |\n| 404         | `NotFoundError`            |\n| 422         | `UnprocessableEntityError` |\n| 429         | `RateLimitError`           |\n| >=500       | `InternalServerError`      |\n| N/A         | `APIConnectionError`       |\n\n### Retries\n\nCertain errors will be automatically retried 2 times by default, with a short exponential backoff.\nConnection errors (for example, due to a network connectivity problem), 408 Request Timeout, 409 Conflict,\n429 Rate Limit, and >=500 Internal errors will all be retried by default.\n\nYou can use the `maxRetries` option to configure or disable this:\n\n<!-- prettier-ignore -->\n```js\n// Configure the default for all requests:\nconst client = new Plumery({\n  maxRetries: 0, // default is 2\n});\n\n// Or, configure per-request:\nawait client.parties.accounts.list('REPLACE_ME', {\n  maxRetries: 5,\n});\n```\n\n### Timeouts\n\nRequests time out after 1 minute by default. You can configure this with a `timeout` option:\n\n<!-- prettier-ignore -->\n```ts\n// Configure the default for all requests:\nconst client = new Plumery({\n  timeout: 20 * 1000, // 20 seconds (default is 1 minute)\n});\n\n// Override per-request:\nawait client.parties.accounts.list('REPLACE_ME', {\n  timeout: 5 * 1000,\n});\n```\n\nOn timeout, an `APIConnectionTimeoutError` is thrown.\n\nNote that requests which time out will be [retried twice by default](#retries).\n\n\n\n\n\n## Advanced Usage\n\n### Accessing raw Response data (e.g., headers)\n\nThe \"raw\" `Response` returned by `fetch()` can be accessed through the `.asResponse()` method on the `APIPromise` type that all methods return.\nThis method returns as soon as the headers for a successful response are received and does not consume the response body, so you are free to write custom parsing or streaming logic.\n\nYou can also use the `.withResponse()` method to get the raw `Response` along with the parsed data.\nUnlike `.asResponse()` this method consumes the body, returning once it is parsed.\n\n<!-- prettier-ignore -->\n```ts\nconst client = new Plumery();\n\nconst response = await client.parties.accounts.list('REPLACE_ME').asResponse();\nconsole.log(response.headers.get('X-My-Header'));\nconsole.log(response.statusText); // access the underlying Response object\n\nconst { data: accounts, response: raw } = await client.parties.accounts\n  .list('REPLACE_ME')\n  .withResponse();\nconsole.log(raw.headers.get('X-My-Header'));\nconsole.log(accounts.accounts);\n```\n\n### Logging\n\n> [!IMPORTANT]\n> All log messages are intended for debugging only. The format and content of log messages\n> may change between releases.\n\n#### Log levels\n\nThe log level can be configured in two ways:\n\n1. Via the `PLUMERY_LOG` environment variable\n2. Using the `logLevel` client option (overrides the environment variable if set)\n\n```ts\nimport Plumery from 'plumery';\n\nconst client = new Plumery({\n  logLevel: 'debug', // Show all log messages\n});\n```\n\nAvailable log levels, from most to least verbose:\n\n- `'debug'` - Show debug messages, info, warnings, and errors\n- `'info'` - Show info messages, warnings, and errors\n- `'warn'` - Show warnings and errors (default)\n- `'error'` - Show only errors\n- `'off'` - Disable all logging\n\nAt the `'debug'` level, all HTTP requests and responses are logged, including headers and bodies.\nSome authentication-related headers are redacted, but sensitive data in request and response bodies\nmay still be visible.\n\n#### Custom logger\n\nBy default, this library logs to `globalThis.console`. You can also provide a custom logger.\nMost logging libraries are supported, including [pino](https://www.npmjs.com/package/pino), [winston](https://www.npmjs.com/package/winston), [bunyan](https://www.npmjs.com/package/bunyan), [consola](https://www.npmjs.com/package/consola), [signale](https://www.npmjs.com/package/signale), and [@std/log](https://jsr.io/@std/log). If your logger doesn't work, please open an issue.\n\nWhen providing a custom logger, the `logLevel` option still controls which messages are emitted, messages\nbelow the configured level will not be sent to your logger.\n\n```ts\nimport Plumery from 'plumery';\nimport pino from 'pino';\n\nconst logger = pino();\n\nconst client = new Plumery({\n  logger: logger.child({ name: 'Plumery' }),\n  logLevel: 'debug', // Send all messages to pino, allowing it to filter\n});\n```\n\n### Making custom/undocumented requests\n\nThis library is typed for convenient access to the documented API. If you need to access undocumented\nendpoints, params, or response properties, the library can still be used.\n\n#### Undocumented endpoints\n\nTo make requests to undocumented endpoints, you can use `client.get`, `client.post`, and other HTTP verbs.\nOptions on the client, such as retries, will be respected when making these requests.\n\n```ts\nawait client.post('/some/path', {\n  body: { some_prop: 'foo' },\n  query: { some_query_arg: 'bar' },\n});\n```\n\n#### Undocumented request params\n\nTo make requests using undocumented parameters, you may use `// @ts-expect-error` on the undocumented\nparameter. This library doesn't validate at runtime that the request matches the type, so any extra values you\nsend will be sent as-is.\n\n```ts\nclient.parties.accounts.list({\n  // ...\n  // @ts-expect-error baz is not yet public\n  baz: 'undocumented option',\n});\n```\n\nFor requests with the `GET` verb, any extra params will be in the query, all other requests will send the\nextra param in the body.\n\nIf you want to explicitly send an extra argument, you can do so with the `query`, `body`, and `headers` request\noptions.\n\n#### Undocumented response properties\n\nTo access undocumented response properties, you may access the response object with `// @ts-expect-error` on\nthe response object, or cast the response object to the requisite type. Like the request params, we do not\nvalidate or strip extra properties from the response from the API.\n\n### Customizing the fetch client\n\nBy default, this library expects a global `fetch` function is defined.\n\nIf you want to use a different `fetch` function, you can either polyfill the global:\n\n```ts\nimport fetch from 'my-fetch';\n\nglobalThis.fetch = fetch;\n```\n\nOr pass it to the client:\n\n```ts\nimport Plumery from 'plumery';\nimport fetch from 'my-fetch';\n\nconst client = new Plumery({ fetch });\n```\n\n### Fetch options\n\nIf you want to set custom `fetch` options without overriding the `fetch` function, you can provide a `fetchOptions` object when instantiating the client or making a request. (Request-specific options override client options.)\n\n```ts\nimport Plumery from 'plumery';\n\nconst client = new Plumery({\n  fetchOptions: {\n    // `RequestInit` options\n  },\n});\n```\n\n#### Configuring proxies\n\nTo modify proxy behavior, you can provide custom `fetchOptions` that add runtime-specific proxy\noptions to requests:\n\n<img src=\"https://raw.githubusercontent.com/stainless-api/sdk-assets/refs/heads/main/node.svg\" align=\"top\" width=\"18\" height=\"21\"> **Node** <sup>[[docs](https://github.com/nodejs/undici/blob/main/docs/docs/api/ProxyAgent.md#example---proxyagent-with-fetch)]</sup>\n\n```ts\nimport Plumery from 'plumery';\nimport * as undici from 'undici';\n\nconst proxyAgent = new undici.ProxyAgent('http://localhost:8888');\nconst client = new Plumery({\n  fetchOptions: {\n    dispatcher: proxyAgent,\n  },\n});\n```\n\n<img src=\"https://raw.githubusercontent.com/stainless-api/sdk-assets/refs/heads/main/bun.svg\" align=\"top\" width=\"18\" height=\"21\"> **Bun** <sup>[[docs](https://bun.sh/guides/http/proxy)]</sup>\n\n```ts\nimport Plumery from 'plumery';\n\nconst client = new Plumery({\n  fetchOptions: {\n    proxy: 'http://localhost:8888',\n  },\n});\n```\n\n<img src=\"https://raw.githubusercontent.com/stainless-api/sdk-assets/refs/heads/main/deno.svg\" align=\"top\" width=\"18\" height=\"21\"> **Deno** <sup>[[docs](https://docs.deno.com/api/deno/~/Deno.createHttpClient)]</sup>\n\n```ts\nimport Plumery from 'npm:plumery';\n\nconst httpClient = Deno.createHttpClient({ proxy: { url: 'http://localhost:8888' } });\nconst client = new Plumery({\n  fetchOptions: {\n    client: httpClient,\n  },\n});\n```\n\n## Frequently Asked Questions\n\n## Semantic versioning\n\nThis package generally follows [SemVer](https://semver.org/spec/v2.0.0.html) conventions, though certain backwards-incompatible changes may be released as minor versions:\n\n1. Changes that only affect static types, without breaking runtime behavior.\n2. Changes to library internals which are technically public but not intended or documented for external use. _(Please open a GitHub issue to let us know if you are relying on such internals.)_\n3. Changes that we do not expect to impact the vast majority of users in practice.\n\nWe take backwards-compatibility seriously and work hard to ensure you can rely on a smooth upgrade experience.\n\nWe are keen for your feedback; please open an [issue](https://www.github.com/plumery/plumery-node/issues) with questions, bugs, or suggestions.\n\n## Requirements\n\nTypeScript >= 4.9 is supported.\n\nThe following runtimes are supported:\n\n- Web browsers (Up-to-date Chrome, Firefox, Safari, Edge, and more)\n- Node.js 20 LTS or later ([non-EOL](https://endoflife.date/nodejs)) versions.\n- Deno v1.28.0 or higher.\n- Bun 1.0 or later.\n- Cloudflare Workers.\n- Vercel Edge Runtime.\n- Jest 28 or greater with the `\"node\"` environment (`\"jsdom\"` is not supported at this time).\n- Nitro v2.6 or greater.\n\nNote that React Native is not supported at this time.\n\nIf you are interested in other runtime environments, please open or upvote an issue on GitHub.\n\n## Contributing\n\nSee [the contributing documentation](./CONTRIBUTING.md).\n",
  },
  {
    language: 'kotlin',
    content:
      '# Plumery Kotlin API Library\n\n<!-- x-release-please-start-version -->\n[![Maven Central](https://img.shields.io/maven-central/v/com.plumery.api/plumery-kotlin)](https://central.sonatype.com/artifact/com.plumery.api/plumery-kotlin/1.8.0)\n\n<!-- x-release-please-end -->\n\nThe Plumery Kotlin SDK provides convenient access to the [Plumery REST API](https://plumery.stldocs.app/api)   from applications written in Kotlin.\n\n\n\nIt is generated with [Stainless](https://www.stainless.com/).\n\n## MCP Server\n\nUse the Plumery MCP Server to enable AI assistants to interact with this API, allowing them to explore endpoints, make test requests, and use documentation to help integrate this SDK into your application.\n\n[![Add to Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en-US/install-mcp?name=plumery-mcp&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsInBsdW1lcnktbWNwIl0sImVudiI6eyJQTFVNRVJZX1NFU1NJT04iOiJNeSBTZXNzaW9uIn19)\n[![Install in VS Code](https://img.shields.io/badge/_-Add_to_VS_Code-blue?style=for-the-badge&logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCA0MCA0MCI+PHBhdGggZmlsbD0iI0VFRSIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMzAuMjM1IDM5Ljg4NGEyLjQ5MSAyLjQ5MSAwIDAgMS0xLjc4MS0uNzNMMTIuNyAyNC43OGwtMy40NiAyLjYyNC0zLjQwNiAyLjU4MmExLjY2NSAxLjY2NSAwIDAgMS0xLjA4Mi4zMzggMS42NjQgMS42NjQgMCAwIDEtMS4wNDYtLjQzMWwtMi4yLTJhMS42NjYgMS42NjYgMCAwIDEgMC0yLjQ2M0w3LjQ1OCAyMCA0LjY3IDE3LjQ1MyAxLjUwNyAxNC41N2ExLjY2NSAxLjY2NSAwIDAgMSAwLTIuNDYzbDIuMi0yYTEuNjY1IDEuNjY1IDAgMCAxIDIuMTMtLjA5N2w2Ljg2MyA1LjIwOUwyOC40NTIuODQ0YTIuNDg4IDIuNDg4IDAgMCAxIDEuODQxLS43MjljLjM1MS4wMDkuNjk5LjA5MSAxLjAxOS4yNDVsOC4yMzYgMy45NjFhMi41IDIuNSAwIDAgMSAxLjQxNSAyLjI1M3YuMDk5LS4wNDVWMzMuMzd2LS4wNDUuMDk1YTIuNTAxIDIuNTAxIDAgMCAxLTEuNDE2IDIuMjU3bC04LjIzNSAzLjk2MWEyLjQ5MiAyLjQ5MiAwIDAgMS0xLjA3Ny4yNDZabS43MTYtMjguOTQ3LTExLjk0OCA5LjA2MiAxMS45NTIgOS4wNjUtLjAwNC0xOC4xMjdaIi8+PC9zdmc+)](https://vscode.stainless.com/mcp/%7B%22name%22%3A%22plumery-mcp%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22plumery-mcp%22%5D%2C%22env%22%3A%7B%22PLUMERY_SESSION%22%3A%22My%20Session%22%7D%7D)\n\n> Note: You may need to set environment variables in your MCP client.\n\nThe REST API documentation can be found on [plumery.stldocs.app](https://plumery.stldocs.app/api).\n\n## Installation\n\n<!-- x-release-please-start-version -->\n\n### Gradle\n\n~~~kotlin\nimplementation("com.plumery.api:plumery-kotlin:1.8.0")\n~~~\n\n### Maven\n\n~~~xml\n<dependency>\n  <groupId>com.plumery.api</groupId>\n  <artifactId>plumery-kotlin</artifactId>\n  <version>1.8.0</version>\n</dependency>\n~~~\n\n<!-- x-release-please-end -->\n\n## Requirements\n\nThis library requires Java 8 or later.\n\n## Usage\n\n```kotlin\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.accounts.AccountListParams\nimport com.plumery.api.models.parties.accounts.AccountListResponse\n\nval client: PlumeryClient = PlumeryOkHttpClient.builder()\n    // Configures using the `plumery.baseUrl` system property\n    // Or configures using the `PLUMERY_BASE_URL` environment variable\n    .fromEnv()\n    .session("My Session")\n    .build()\n\nval accounts: AccountListResponse = client.parties().accounts().list("REPLACE_ME")\n```\n\n## Client configuration\n\nConfigure the client using system properties or environment variables:\n\n```kotlin\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\n\nval client: PlumeryClient = PlumeryOkHttpClient.builder()\n    // Configures using the `plumery.baseUrl` system property\n    // Or configures using the `PLUMERY_BASE_URL` environment variable\n    .fromEnv()\n    .session("My Session")\n    .build()\n```\n\nOr manually:\n\n```kotlin\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\n\nval client: PlumeryClient = PlumeryOkHttpClient.builder()\n    .session("My Session")\n    .build()\n```\n\nOr using a combination of the two approaches:\n\n```kotlin\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\n\nval client: PlumeryClient = PlumeryOkHttpClient.builder()\n    // Configures using the `plumery.baseUrl` system property\n    // Or configures using the `PLUMERY_BASE_URL` environment variable\n    .fromEnv()\n    .session("My Session")\n    .build()\n```\n\nSee this table for the available options:\n\n| Setter    | System property   | Environment variable | Required | Default value               |\n| --------- | ----------------- | -------------------- | -------- | --------------------------- |\n| `baseUrl` | `plumery.baseUrl` | `PLUMERY_BASE_URL`   | true     | `"https://api.plumery.com"` |\n\nSystem properties take precedence over environment variables.\n\n> [!TIP]\n> Don\'t create more than one client in the same application. Each client has a connection pool and\n> thread pools, which are more efficient to share between requests.\n\n### Modifying configuration\n\nTo temporarily use a modified client configuration, while reusing the same connection and thread       pools, call `withOptions()` on any client or service:\n\n```kotlin\nimport com.plumery.api.client.PlumeryClient\n\nval clientWithOptions: PlumeryClient = client.withOptions {\n    it.baseUrl("https://example.com")\n    it.maxRetries(42)\n}\n```\n\nThe `withOptions()` method does not affect the original client or service.\n\n## Requests and responses\n\nTo send a request to the Plumery API, build an instance of some `Params` class and pass it to the     corresponding client method. When the response is received, it will be deserialized into an instance of     a Kotlin class.\n\nFor example, `client.parties().accounts().list(...)` should be called with an instance of `AccountListParams`, and it     will return an instance of `AccountListResponse`.\n\n## Immutability\n\nEach class in the SDK has an associated   [builder](https://blogs.oracle.com/javamagazine/post/exploring-joshua-blochs-builder-design-pattern-in-java)   or factory method for constructing it.\n\nEach class is [immutable](https://docs.oracle.com/javase/tutorial/essential/concurrency/immutable.html)   once constructed. If the class has an associated builder, then it has a `toBuilder()` method, which can   be used to convert it back to a builder for making a modified copy.\n\nBecause each class is immutable, builder modification will _never_ affect already built class instances.\n\n## Asynchronous execution\n\nThe default client is synchronous. To switch to asynchronous execution, call the `async()` method:\n\n```kotlin\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.models.parties.accounts.AccountListParams\nimport com.plumery.api.models.parties.accounts.AccountListResponse\n\nval client: PlumeryClient = PlumeryOkHttpClient.builder()\n    // Configures using the `plumery.baseUrl` system property\n    // Or configures using the `PLUMERY_BASE_URL` environment variable\n    .fromEnv()\n    .session("My Session")\n    .build()\n\nval accounts: AccountListResponse = client.async().parties().accounts().list("REPLACE_ME")\n```\n\nOr create an asynchronous client from the beginning:\n\n```kotlin\nimport com.plumery.api.client.PlumeryClientAsync\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClientAsync\nimport com.plumery.api.models.parties.accounts.AccountListParams\nimport com.plumery.api.models.parties.accounts.AccountListResponse\n\nval client: PlumeryClientAsync = PlumeryOkHttpClientAsync.builder()\n    // Configures using the `plumery.baseUrl` system property\n    // Or configures using the `PLUMERY_BASE_URL` environment variable\n    .fromEnv()\n    .session("My Session")\n    .build()\n\nval accounts: AccountListResponse = client.parties().accounts().list("REPLACE_ME")\n```\n\nThe asynchronous client supports the same options as the synchronous one, except most methods are [suspending](https://kotlinlang.org/docs/coroutines-guide.html).\n\n\n\n## File uploads\n\nThe SDK defines methods that accept files.\n\nTo upload a file, pass a [`Path`](https://docs.oracle.com/javase/8/docs/api/java/nio/file/Path.html):\n\n```kotlin\nimport com.plumery.api.models.loanapplications.LoanApplicationUploadDocumentParams\nimport java.nio.file.Paths\n\nval params: LoanApplicationUploadDocumentParams = LoanApplicationUploadDocumentParams.builder()\n    .loanApplicationId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n    .documentType(LoanApplicationUploadDocumentParams.DocumentType.INCOME_PROOF)\n    .filename("filename")\n    .file(Paths.get("/path/to/file"))\n    .build()\nclient.loanApplications().uploadDocument(params)\n```\n\nOr an arbitrary [`InputStream`](https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html):\n\n```kotlin\nimport com.plumery.api.models.loanapplications.LoanApplicationUploadDocumentParams\nimport java.net.URL\n\nval params: LoanApplicationUploadDocumentParams = LoanApplicationUploadDocumentParams.builder()\n    .loanApplicationId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n    .documentType(LoanApplicationUploadDocumentParams.DocumentType.INCOME_PROOF)\n    .filename("filename")\n    .file(URL("https://example.com//path/to/file").openStream())\n    .build()\nclient.loanApplications().uploadDocument(params)\n```\n\nOr a `ByteArray`:\n\n```kotlin\nimport com.plumery.api.models.loanapplications.LoanApplicationUploadDocumentParams\n\nval params: LoanApplicationUploadDocumentParams = LoanApplicationUploadDocumentParams.builder()\n    .loanApplicationId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n    .documentType(LoanApplicationUploadDocumentParams.DocumentType.INCOME_PROOF)\n    .filename("filename")\n    .file("content".toByteArray())\n    .build()\nclient.loanApplications().uploadDocument(params)\n```\n\nNote that when passing a non-`Path` its filename is unknown so it will not be included in the request.     To manually set a filename, pass a [`MultipartField`](plumery-kotlin-core/src/main/kotlin/com/plumery/api/core/Values.kt):\n\n```kotlin\nimport com.plumery.api.core.MultipartField\nimport com.plumery.api.models.loanapplications.LoanApplicationUploadDocumentParams\nimport java.io.InputStream\nimport java.net.URL\n\nval params: LoanApplicationUploadDocumentParams = LoanApplicationUploadDocumentParams.builder()\n    .loanApplicationId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n    .documentType(LoanApplicationUploadDocumentParams.DocumentType.INCOME_PROOF)\n    .filename("filename")\n    .file(MultipartField.builder<InputStream>()\n        .value(URL("https://example.com//path/to/file").openStream())\n        .filename("/path/to/file")\n        .build())\n    .build()\nclient.loanApplications().uploadDocument(params)\n```\n\n## Binary responses\n\nThe SDK defines methods that return binary responses, which are used for API responses that shouldn\'t     necessarily be parsed, like non-JSON data.\n\nThese methods return [`HttpResponse`](plumery-kotlin-core/src/main/kotlin/com/plumery/api/core/http/HttpResponse.kt):\n\n```kotlin\nimport com.plumery.api.core.http.HttpResponse\nimport com.plumery.api.models.parties.transactions.TransactionGenerateSnapshotParams\n\nval params: TransactionGenerateSnapshotParams = TransactionGenerateSnapshotParams.builder()\n    .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n    .transactionId("5f0d3de8-d521-11ed-afa1-0242ac120002")\n    .build()\nval response: HttpResponse = client.parties().transactions().generateSnapshot(params)\n```\n\nTo save the response content to a file, use the     [`Files.copy(...)`](https://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#copy-java.io.InputStream-java.nio.file.Path-java.nio.file.CopyOption...-)     method:\n\n```kotlin\nimport java.nio.file.Files\nimport java.nio.file.Paths\nimport java.nio.file.StandardCopyOption\n\nclient.parties().transactions().generateSnapshot(params).use {\n    Files.copy(\n        it.body(),\n        Paths.get(path),\n        StandardCopyOption.REPLACE_EXISTING\n    )\n}\n```\n\nOr transfer the response content to any     [`OutputStream`](https://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html):\n\n```kotlin\nimport java.nio.file.Files\nimport java.nio.file.Paths\n\nclient.parties().transactions().generateSnapshot(params).use {\n    it.body().transferTo(Files.newOutputStream(Paths.get(path)))\n}\n```\n\n## Raw responses\n\nThe SDK defines methods that deserialize responses into instances of Kotlin classes.       However, these methods don\'t provide access to the response headers, status code, or the raw response       body.\n\nTo access this data, prefix any HTTP method call on a client or service with `withRawResponse()`:\n\n```kotlin\nimport com.plumery.api.core.http.Headers\nimport com.plumery.api.core.http.HttpResponseFor\nimport com.plumery.api.models.parties.accounts.AccountListParams\nimport com.plumery.api.models.parties.accounts.AccountListResponse\n\nval accounts: HttpResponseFor<AccountListResponse> = client.parties().accounts().withRawResponse().list("REPLACE_ME")\n\nval statusCode: Int = accounts.statusCode()\nval headers: Headers = accounts.headers()\n```\n\nYou can still deserialize the response into an instance of a Kotlin class if needed:\n\n```kotlin\nimport com.plumery.api.models.parties.accounts.AccountListResponse\n\nval parsedAccounts: AccountListResponse = accounts.parse()\n```\n\n## Error handling\n\nThe SDK throws custom unchecked exception types:\n\n- [`PlumeryServiceException`](plumery-kotlin-core/src/main/kotlin/com/plumery/api/errors/PlumeryServiceException.kt): Base class for HTTP errors. See this table for which exception       subclass is thrown for each HTTP status code:\n\n  | Status | Exception                                          |\n  | ------ | -------------------------------------------------- |\n  | 400    | [`BadRequestException`](plumery-kotlin-core/src/main/kotlin/com/plumery/api/errors/BadRequestException.kt)           |\n  | 401    | [`UnauthorizedException`](plumery-kotlin-core/src/main/kotlin/com/plumery/api/errors/UnauthorizedException.kt)         |\n  | 403    | [`PermissionDeniedException`](plumery-kotlin-core/src/main/kotlin/com/plumery/api/errors/PermissionDeniedException.kt)     |\n  | 404    | [`NotFoundException`](plumery-kotlin-core/src/main/kotlin/com/plumery/api/errors/NotFoundException.kt)             |\n  | 422    | [`UnprocessableEntityException`](plumery-kotlin-core/src/main/kotlin/com/plumery/api/errors/UnprocessableEntityException.kt)  |\n  | 429    | [`RateLimitException`](plumery-kotlin-core/src/main/kotlin/com/plumery/api/errors/RateLimitException.kt)            |\n  | 5xx    | [`InternalServerException`](plumery-kotlin-core/src/main/kotlin/com/plumery/api/errors/InternalServerException.kt)       |\n  | others | [`UnexpectedStatusCodeException`](plumery-kotlin-core/src/main/kotlin/com/plumery/api/errors/UnexpectedStatusCodeException.kt) |\n\n- [`PlumeryIoException`](plumery-kotlin-core/src/main/kotlin/com/plumery/api/errors/PlumeryIoException.kt): I/O networking errors.\n\n- [`PlumeryRetryableException`](plumery-kotlin-core/src/main/kotlin/com/plumery/api/errors/PlumeryRetryableException.kt): Generic error indicating a failure that could be retried by the client.\n\n- [`PlumeryInvalidDataException`](plumery-kotlin-core/src/main/kotlin/com/plumery/api/errors/PlumeryInvalidDataException.kt): Failure to interpret successfully parsed data. For example,       when accessing a property that\'s supposed to be required, but the API unexpectedly omitted it from the       response.\n\n- [`PlumeryException`](plumery-kotlin-core/src/main/kotlin/com/plumery/api/errors/PlumeryException.kt): Base class for all exceptions. Most errors will result in one of the       previously mentioned ones, but completely generic errors may be thrown using the base class.\n\n\n\n## Logging\n\nEnable logging by setting the `PLUMERY_LOG` environment variable to   `info`:\n\n```sh\nexport PLUMERY_LOG=info\n```\n\nOr to `debug` for more verbose logging:\n\n```sh\nexport PLUMERY_LOG=debug\n```\n\nOr configure the client manually using the `logLevel` method:\n\n```kotlin\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.core.LogLevel\n\nval client: PlumeryClient = PlumeryOkHttpClient.builder()\n    .fromEnv()\n    .logLevel(LogLevel.INFO)\n    .session("My Session")\n    .build()\n```\n\n## ProGuard and R8\n\nAlthough the SDK uses reflection, it is still usable with     [ProGuard](https://github.com/Guardsquare/proguard) and     [R8](https://developer.android.com/topic/performance/app-optimization/enable-app-optimization) because     `plumery-kotlin-core` is published with a     [configuration file](plumery-kotlin-core/src/main/resources/META-INF/proguard/plumery-kotlin-core.pro) containing     [keep rules](https://www.guardsquare.com/manual/configuration/usage).\n\nProGuard and R8 should automatically detect and use the published rules, but you can also manually copy     the keep rules if necessary.\n\n\n\n\n\n## Jackson\n\nThe SDK depends on [Jackson](https://github.com/FasterXML/jackson) for JSON     serialization/deserialization. It is compatible with version 2.13.4 or higher,     but depends on version 2.18.2 by default.\n\nThe SDK throws an exception if it detects an incompatible Jackson version at runtime (e.g. if the     default version was overridden in your Maven or Gradle config).\n\nIf the SDK threw an exception, but you\'re _certain_ the version is compatible, then disable the version     check using the `checkJacksonVersionCompatibility` on [`PlumeryOkHttpClient`](plumery-kotlin-client-okhttp/src/main/kotlin/com/plumery/api/client/okhttp/PlumeryOkHttpClient.kt) or     [`PlumeryOkHttpClientAsync`](plumery-kotlin-client-okhttp/src/main/kotlin/com/plumery/api/client/okhttp/PlumeryOkHttpClientAsync.kt).\n\n> [!CAUTION]\n> We make no guarantee that the SDK works correctly when the Jackson version check is disabled.\n\nAlso note that there are bugs in older Jackson versions that can affect the SDK. We don\'t work around all     Jackson bugs ([example](https://github.com/FasterXML/jackson-databind/issues/3240)) and expect users to     upgrade Jackson for those instead.\n\n## Network options\n\n### Retries\n\nThe SDK automatically retries 2 times by default, with a short exponential backoff between requests.\n\nOnly the following error types are retried:\n- Connection errors (for example, due to a network connectivity problem)\n- 408 Request Timeout\n- 409 Conflict\n- 429 Rate Limit\n- 5xx Internal\n\nThe API may also explicitly instruct the SDK to retry or not retry a request.\n\nTo set a custom number of retries, configure the client using the `maxRetries` method:\n\n```kotlin\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\n\nval client: PlumeryClient = PlumeryOkHttpClient.builder()\n    .fromEnv()\n    .maxRetries(4)\n    .session("My Session")\n    .build()\n```\n\n### Timeouts\n\nRequests time out after 1 minute by default.\n\nTo set a custom timeout, configure the method call using the `timeout` method:\n\n```kotlin\nimport com.plumery.api.models.parties.accounts.AccountListResponse\n\nval accounts: AccountListResponse = client.parties().accounts().list(RequestOptions.builder().timeout(Duration.ofSeconds(30)).build())\n```\n\nOr configure the default for all method calls at the client level:\n\n```kotlin\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport java.time.Duration\n\nval client: PlumeryClient = PlumeryOkHttpClient.builder()\n    .fromEnv()\n    .timeout(Duration.ofSeconds(30))\n    .session("My Session")\n    .build()\n```\n\n### Proxies\n\nTo route requests through a proxy, configure the client using the `proxy` method:\n\n```kotlin\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport java.net.InetSocketAddress\nimport java.net.Proxy\n\nval client: PlumeryClient = PlumeryOkHttpClient.builder()\n    .fromEnv()\n    .proxy(Proxy(\n      Proxy.Type.HTTP, InetSocketAddress(\n        "https://example.com", 8080\n      )\n    ))\n    .session("My Session")\n    .build()\n```\n\nIf the proxy responds with `407 Proxy Authentication Required`, supply credentials by also   configuring `proxyAuthenticator`:\n\n```kotlin\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport com.plumery.api.core.http.ProxyAuthenticator\n\nval client: PlumeryClient = PlumeryOkHttpClient.builder()\n    .fromEnv()\n    .proxy(...)\n    // Or a custom implementation of `ProxyAuthenticator`.\n    .proxyAuthenticator(ProxyAuthenticator.basic("username", "password"))\n    .session("My Session")\n    .build()\n```\n\n### Connection pooling\n\nTo customize the underlying OkHttp connection pool, configure the client using the   `maxIdleConnections` and `keepAliveDuration` methods:\n\n```kotlin\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\nimport java.time.Duration\n\nval client: PlumeryClient = PlumeryOkHttpClient.builder()\n    .fromEnv()\n    // If `maxIdleConnections` is set, then `keepAliveDuration` must be set, and vice versa.\n    .maxIdleConnections(10)\n    .keepAliveDuration(Duration.ofMinutes(2))\n    .session("My Session")\n    .build()\n```\n\nIf both options are unset, OkHttp\'s default connection pool settings are used.\n\n### HTTPS\n\n> [!NOTE]\n> Most applications should not call these methods, and instead use the system defaults. The defaults include\n> special optimizations that can be lost if the implementations are modified.\n\nTo configure how HTTPS connections are secured, configure the client using the `sslSocketFactory`,   `trustManager`, and `hostnameVerifier` methods:\n\n```kotlin\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\n\nval client: PlumeryClient = PlumeryOkHttpClient.builder()\n    .fromEnv()\n    // If `sslSocketFactory` is set, then `trustManager` must be set, and vice versa.\n    .sslSocketFactory(yourSSLSocketFactory)\n    .trustManager(yourTrustManager)\n    .hostnameVerifier(yourHostnameVerifier)\n    .session("My Session")\n    .build()\n```\n\n\n\n### Custom HTTP client\n\nThe SDK consists of three artifacts:\n- `plumery-kotlin-core`\n  - Contains core SDK logic\n  - Does not depend on [OkHttp](https://square.github.io/okhttp)\n  - Exposes [`PlumeryClient`](plumery-kotlin-core/src/main/kotlin/com/plumery/api/client/PlumeryClient.kt), [`PlumeryClientAsync`](plumery-kotlin-core/src/main/kotlin/com/plumery/api/client/PlumeryClientAsync.kt),             [`PlumeryClientImpl`](plumery-kotlin-core/src/main/kotlin/com/plumery/api/client/PlumeryClientImpl.kt), and [`PlumeryClientAsyncImpl`](plumery-kotlin-core/src/main/kotlin/com/plumery/api/client/PlumeryClientAsyncImpl.kt), all of which can             work with any HTTP client\n- `plumery-kotlin-client-okhttp`\n  - Depends on [OkHttp](https://square.github.io/okhttp)\n  - Exposes [`PlumeryOkHttpClient`](plumery-kotlin-client-okhttp/src/main/kotlin/com/plumery/api/client/okhttp/PlumeryOkHttpClient.kt) and [`PlumeryOkHttpClientAsync`](plumery-kotlin-client-okhttp/src/main/kotlin/com/plumery/api/client/okhttp/PlumeryOkHttpClientAsync.kt), which             provide a way to construct [`PlumeryClientImpl`](plumery-kotlin-core/src/main/kotlin/com/plumery/api/client/PlumeryClientImpl.kt) and             [`PlumeryClientAsyncImpl`](plumery-kotlin-core/src/main/kotlin/com/plumery/api/client/PlumeryClientAsyncImpl.kt), respectively, using OkHttp\n- `plumery-kotlin`\n  - Depends on and exposes the APIs of both `plumery-kotlin-core` and `plumery-kotlin-client-okhttp`\n  - Does not have its own logic\n\nThis structure allows replacing the SDK\'s default HTTP client without pulling in unnecessary dependencies.\n\n#### Customized [`OkHttpClient`](https://square.github.io/okhttp/3.x/okhttp/okhttp3/OkHttpClient.html)\n\n> [!TIP]\n> Try the available [network options](#network-options) before replacing the default client.\n\nTo use a customized `OkHttpClient`:\n\n1. Replace your [`plumery-kotlin` dependency](#installation) with `plumery-kotlin-core`\n2. Copy `plumery-kotlin-client-okhttp`\'s [`OkHttpClient`](plumery-kotlin-client-okhttp/src/main/kotlin/com/plumery/api/client/okhttp/OkHttpClient.kt) class into your code and        customize it\n3. Construct [`PlumeryClientImpl`](plumery-kotlin-core/src/main/kotlin/com/plumery/api/client/PlumeryClientImpl.kt) or [`PlumeryClientAsyncImpl`](plumery-kotlin-core/src/main/kotlin/com/plumery/api/client/PlumeryClientAsyncImpl.kt), similarly to        [`PlumeryOkHttpClient`](plumery-kotlin-client-okhttp/src/main/kotlin/com/plumery/api/client/okhttp/PlumeryOkHttpClient.kt) or [`PlumeryOkHttpClientAsync`](plumery-kotlin-client-okhttp/src/main/kotlin/com/plumery/api/client/okhttp/PlumeryOkHttpClientAsync.kt), using your        customized client\n\n### Completely custom HTTP client\n\nTo use a completely custom HTTP client:\n\n1. Replace your [`plumery-kotlin` dependency](#installation) with `plumery-kotlin-core`\n2. Write a class that implements the [`HttpClient`](plumery-kotlin-core/src/main/kotlin/com/plumery/api/core/http/HttpClient.kt) interface\n3. Construct [`PlumeryClientImpl`](plumery-kotlin-core/src/main/kotlin/com/plumery/api/client/PlumeryClientImpl.kt) or [`PlumeryClientAsyncImpl`](plumery-kotlin-core/src/main/kotlin/com/plumery/api/client/PlumeryClientAsyncImpl.kt), similarly to        [`PlumeryOkHttpClient`](plumery-kotlin-client-okhttp/src/main/kotlin/com/plumery/api/client/okhttp/PlumeryOkHttpClient.kt) or [`PlumeryOkHttpClientAsync`](plumery-kotlin-client-okhttp/src/main/kotlin/com/plumery/api/client/okhttp/PlumeryOkHttpClientAsync.kt), using your new        client class\n\n## Undocumented API functionality\n\nThe SDK is typed for convenient usage of the documented API. However, it also supports working with undocumented or not yet supported parts of the API.\n\n### Parameters\n\nTo set undocumented parameters, call the `putAdditionalHeader`, `putAdditionalQueryParam`, or       `putAdditionalBodyProperty` methods on any `Params` class:\n\n```kotlin\nimport com.plumery.api.core.JsonValue\nimport com.plumery.api.models.parties.accounts.AccountListParams\n\nval params: AccountListParams = AccountListParams.builder()\n    .putAdditionalHeader("Secret-Header", "42")\n    .putAdditionalQueryParam("secret_query_param", "42")\n    .putAdditionalBodyProperty("secretProperty", JsonValue.from("42"))\n    .build()\n```\n\nThese can be accessed on the built object later using the `_additionalHeaders()`,       `_additionalQueryParams()`, and `_additionalBodyProperties()` methods.\n\nTo set undocumented parameters on _nested_ headers, query params, or body classes, call the         `putAdditionalProperty` method on the nested class:\n\n```kotlin\nimport com.plumery.api.core.JsonValue\nimport com.plumery.api.models.userenrolments.UserEnrolmentSetIndividualPartyProfileParams\n\nval params: UserEnrolmentSetIndividualPartyProfileParams = UserEnrolmentSetIndividualPartyProfileParams.builder()\n    .postalAddress(UserEnrolmentSetIndividualPartyProfileParams.PostalAddress.builder()\n        .putAdditionalProperty("secretProperty", JsonValue.from("42"))\n        .build())\n    .build()\n```\n\nThese properties can be accessed on the nested built object later using the         `_additionalProperties()` method.\n\nTo set a documented parameter or property to an undocumented or not yet supported _value_, pass a       [`JsonValue`](plumery-kotlin-core/src/main/kotlin/com/plumery/api/core/Values.kt) object to its setter:\n\n```kotlin\nimport com.plumery.api.models.parties.accounts.AccountListParams\n\nval params: AccountListParams = AccountListParams.builder().build()\n```\n\nThe most straightforward way to create a [`JsonValue`](plumery-kotlin-core/src/main/kotlin/com/plumery/api/core/Values.kt) is using its       `from(...)` method:\n\n```kotlin\nimport com.plumery.api.core.JsonValue\n\n// Create primitive JSON values\nval nullValue: JsonValue = JsonValue.from(null)\nval booleanValue: JsonValue = JsonValue.from(true)\nval numberValue: JsonValue = JsonValue.from(42)\nval stringValue: JsonValue = JsonValue.from("Hello World!")\n\n// Create a JSON array value equivalent to `["Hello", "World"]`\nval arrayValue: JsonValue = JsonValue.from(listOf(\n  "Hello", "World"\n))\n\n// Create a JSON object value equivalent to `{ "a": 1, "b": 2 }`\nval objectValue: JsonValue = JsonValue.from(mapOf(\n  "a" to 1, "b" to 2\n))\n\n// Create an arbitrarily nested JSON equivalent to:\n// {\n//   "a": [1, 2],\n//   "b": [3, 4]\n// }\nval complexValue: JsonValue = JsonValue.from(mapOf(\n  "a" to listOf(\n    1, 2\n  ), "b" to listOf(\n    3, 4\n  )\n))\n```\n\nNormally a `Builder` class\'s `build` method will throw         [`IllegalStateException`](https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html)         if any required parameter or property is unset.\n\nTo forcibly omit a required parameter or property, pass [`JsonMissing`](plumery-kotlin-core/src/main/kotlin/com/plumery/api/core/Values.kt):\n\n```kotlin\nimport com.plumery.api.core.JsonMissing\nimport com.plumery.api.models.parties.accounts.AccountListParams\n\nval params: AccountListParams = AccountListParams.builder()\n    .partyId(JsonMissing.of())\n    .build()\n```\n\n### Response properties\n\nTo access undocumented response properties, call the `_additionalProperties()` method:\n\n```kotlin\nimport com.plumery.api.core.JsonBoolean\nimport com.plumery.api.core.JsonNull\nimport com.plumery.api.core.JsonNumber\nimport com.plumery.api.core.JsonValue\n\nval additionalProperties: Map<String, JsonValue> = client.parties().accounts().list(params)._additionalProperties()\nval secretPropertyValue: JsonValue = additionalProperties.get("secretProperty")\n\nval result = when (secretPropertyValue) {\n    is JsonNull -> "It\'s null!"\n    is JsonBoolean -> "It\'s a boolean!"\n    is JsonNumber -> "It\'s a number!"\n    // Other types include `JsonMissing`, `JsonString`, `JsonArray`, and `JsonObject`\n    else -> "It\'s something else!"\n}\n```\n\nTo access a property\'s raw JSON value, which may be undocumented, call its `_` prefixed method:\n\n```kotlin\nimport com.plumery.api.core.JsonField\n\nval field: JsonField<Any> = client.parties().accounts().list(params)._field()\n\nif (field.isMissing()) {\n  // The property is absent from the JSON response\n} else if (field.isNull()) {\n  // The property was set to literal null\n} else {\n  // Check if value was provided as a string\n  // Other methods include `asNumber()`, `asBoolean()`, etc.\n  val jsonString: String? = field.asString();\n\n  // Try to deserialize into a custom type\n  val myObject: MyClass = field.asUnknown()!!.convert(MyClass::class.java)\n}\n```\n\n### Response validation\n\nIn rare cases, the API may return a response that doesn\'t match the expected type. For example, the SDK     may expect a property to contain a `String`, but the API could return something else.\n\nBy default, the SDK will not throw an exception in this case. It will throw     [`PlumeryInvalidDataException`](plumery-kotlin-core/src/main/kotlin/com/plumery/api/errors/PlumeryInvalidDataException.kt) only if you directly access the property.\n\nValidating the response is _not_ forwards compatible with new types from the API for existing fields.\n\nIf you would still prefer to check that the response is completely well-typed upfront, then either call     `validate()`:\n\n```kotlin\nimport com.plumery.api.models.parties.accounts.AccountListResponse\n\nval accounts: AccountListResponse = client.parties().accounts().list(params).validate()\n```\n\nOr configure the method call to validate the response using the `responseValidation` method:\n\n```kotlin\nimport com.plumery.api.models.parties.accounts.AccountListResponse\n\nval accounts: AccountListResponse = client.parties().accounts().list(RequestOptions.builder().responseValidation(true).build())\n```\n\nOr configure the default for all method calls at the client level:\n\n```kotlin\nimport com.plumery.api.client.PlumeryClient\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient\n\nval client: PlumeryClient = PlumeryOkHttpClient.builder()\n    .fromEnv()\n    .responseValidation(true)\n    .session("My Session")\n    .build()\n```\n\n## FAQ\n\n### Why don\'t you use plain `enum` classes?\n\nKotlin `enum` classes are not trivially   [forwards compatible](https://www.stainless.com/blog/making-java-enums-forwards-compatible). Using them in   the SDK could cause runtime exceptions if the API is updated to respond with a new enum value.\n\n### Why do you represent fields using `JsonField<T>` instead of just plain `T`?\n\nUsing `JsonField<T>` enables a few features:\n\n- Allowing usage of [undocumented API functionality](#undocumented-api-functionality)\n- Lazily [validating the API response against the expected shape](#response-validation)\n- Representing absent vs explicitly null values\n\n### Why don\'t you use [`data` classes](https://kotlinlang.org/docs/data-classes.html)?\n\nIt is not [backwards compatible to add new fields to a data class](https://kotlinlang.org/docs/api-guidelines-backward-compatibility.html#avoid-using-data-classes-in-your-api)   and we don\'t want to introduce a breaking change every time we add a field to a class.\n\n### Why don\'t you use checked exceptions?\n\nChecked exceptions are widely considered a mistake in the Java programming language. In fact, they were   omitted from Kotlin for this reason.\n\nChecked exceptions:\n\n- Are verbose to handle\n- Encourage error handling at the wrong level of abstraction, where nothing can be done about the error\n- Are tedious to propagate due to the [function coloring problem](https://journal.stuffwithstuff.com/2015/02/01/what-color-is-your-function)\n- Don\'t play well with lambdas (also due to the function coloring problem)\n\n## Semantic versioning\n\nThis package generally follows [SemVer](https://semver.org/spec/v2.0.0.html) conventions, though certain backwards-incompatible changes may be released as minor versions:\n\n1. Changes to library internals which are technically public but not intended or documented for external use. _(Please open a GitHub issue to let us know if you are relying on such internals.)_\n2. Changes that we do not expect to impact the vast majority of users in practice.\n\nWe take backwards-compatibility seriously and work hard to ensure you can rely on a smooth upgrade experience.\n\nWe are keen for your feedback; please open an [issue](https://www.github.com/plumery/plumery-kotlin/issues) with questions, bugs, or suggestions.\n',
  },
  {
    language: 'java',
    content:
      '# Plumery Java API Library\n\n\n[![Maven Central](https://img.shields.io/maven-central/v/com.plumery.api/plumery-java)](https://central.sonatype.com/artifact/com.plumery.api/plumery-java/0.0.1)\n[![javadoc](https://javadoc.io/badge2/com.plumery.api/plumery-java/javadoc.svg)](https://javadoc.io/doc/com.plumery.api/plumery-java/0.0.1)\n\n\nThe Plumery Java SDK provides convenient access to the [Plumery REST API](https://plumery.stldocs.app/api)   from applications written in Java.\n\nThe Plumery Java SDK is similar to the Plumery Kotlin SDK but with minor differences that       make it more ergonomic for use in Java, such as `Optional` instead of nullable values, `Stream`       instead of `Sequence`, and `CompletableFuture` instead of suspend functions.\n\nIt is generated with [Stainless](https://www.stainless.com/).\n\n## MCP Server\n\nUse the Plumery MCP Server to enable AI assistants to interact with this API, allowing them to explore endpoints, make test requests, and use documentation to help integrate this SDK into your application.\n\n[![Add to Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en-US/install-mcp?name=plumery-mcp&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsInBsdW1lcnktbWNwIl0sImVudiI6eyJQTFVNRVJZX1NFU1NJT04iOiJNeSBTZXNzaW9uIn19)\n[![Install in VS Code](https://img.shields.io/badge/_-Add_to_VS_Code-blue?style=for-the-badge&logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCA0MCA0MCI+PHBhdGggZmlsbD0iI0VFRSIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMzAuMjM1IDM5Ljg4NGEyLjQ5MSAyLjQ5MSAwIDAgMS0xLjc4MS0uNzNMMTIuNyAyNC43OGwtMy40NiAyLjYyNC0zLjQwNiAyLjU4MmExLjY2NSAxLjY2NSAwIDAgMS0xLjA4Mi4zMzggMS42NjQgMS42NjQgMCAwIDEtMS4wNDYtLjQzMWwtMi4yLTJhMS42NjYgMS42NjYgMCAwIDEgMC0yLjQ2M0w3LjQ1OCAyMCA0LjY3IDE3LjQ1MyAxLjUwNyAxNC41N2ExLjY2NSAxLjY2NSAwIDAgMSAwLTIuNDYzbDIuMi0yYTEuNjY1IDEuNjY1IDAgMCAxIDIuMTMtLjA5N2w2Ljg2MyA1LjIwOUwyOC40NTIuODQ0YTIuNDg4IDIuNDg4IDAgMCAxIDEuODQxLS43MjljLjM1MS4wMDkuNjk5LjA5MSAxLjAxOS4yNDVsOC4yMzYgMy45NjFhMi41IDIuNSAwIDAgMSAxLjQxNSAyLjI1M3YuMDk5LS4wNDVWMzMuMzd2LS4wNDUuMDk1YTIuNTAxIDIuNTAxIDAgMCAxLTEuNDE2IDIuMjU3bC04LjIzNSAzLjk2MWEyLjQ5MiAyLjQ5MiAwIDAgMS0xLjA3Ny4yNDZabS43MTYtMjguOTQ3LTExLjk0OCA5LjA2MiAxMS45NTIgOS4wNjUtLjAwNC0xOC4xMjdaIi8+PC9zdmc+)](https://vscode.stainless.com/mcp/%7B%22name%22%3A%22plumery-mcp%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22plumery-mcp%22%5D%2C%22env%22%3A%7B%22PLUMERY_SESSION%22%3A%22My%20Session%22%7D%7D)\n\n> Note: You may need to set environment variables in your MCP client.\n\nThe REST API documentation can be found on [plumery.stldocs.app](https://plumery.stldocs.app/api). Javadocs are available on [javadoc.io](https://javadoc.io/doc/com.plumery.api/plumery-java/0.0.1).\n\n## Installation\n\n### Gradle\n\n~~~kotlin\nimplementation("com.plumery.api:plumery-java:0.0.1")\n~~~\n\n### Maven\n\n~~~xml\n<dependency>\n  <groupId>com.plumery.api</groupId>\n  <artifactId>plumery-java</artifactId>\n  <version>0.0.1</version>\n</dependency>\n~~~\n\n## Requirements\n\nThis library requires Java 8 or later.\n\n## Usage\n\n```java\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.accounts.AccountListParams;\nimport com.plumery.api.models.parties.accounts.AccountListResponse;\n\nPlumeryClient client = PlumeryOkHttpClient.builder()\n    // Configures using the `plumery.baseUrl` system property\n    // Or configures using the `PLUMERY_BASE_URL` environment variable\n    .fromEnv()\n    .session("My Session")\n    .build();\n\nAccountListResponse accounts = client.parties().accounts().list("REPLACE_ME");\n```\n\n## Client configuration\n\nConfigure the client using system properties or environment variables:\n\n```java\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\n\nPlumeryClient client = PlumeryOkHttpClient.builder()\n    // Configures using the `plumery.baseUrl` system property\n    // Or configures using the `PLUMERY_BASE_URL` environment variable\n    .fromEnv()\n    .session("My Session")\n    .build();\n```\n\nOr manually:\n\n```java\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\n\nPlumeryClient client = PlumeryOkHttpClient.builder()\n    .session("My Session")\n    .build();\n```\n\nOr using a combination of the two approaches:\n\n```java\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\n\nPlumeryClient client = PlumeryOkHttpClient.builder()\n    // Configures using the `plumery.baseUrl` system property\n    // Or configures using the `PLUMERY_BASE_URL` environment variable\n    .fromEnv()\n    .session("My Session")\n    .build();\n```\n\nSee this table for the available options:\n\n| Setter    | System property   | Environment variable | Required | Default value               |\n| --------- | ----------------- | -------------------- | -------- | --------------------------- |\n| `baseUrl` | `plumery.baseUrl` | `PLUMERY_BASE_URL`   | true     | `"https://api.plumery.com"` |\n\nSystem properties take precedence over environment variables.\n\n> [!TIP]\n> Don\'t create more than one client in the same application. Each client has a connection pool and\n> thread pools, which are more efficient to share between requests.\n\n### Modifying configuration\n\nTo temporarily use a modified client configuration, while reusing the same connection and thread       pools, call `withOptions()` on any client or service:\n\n```java\nimport com.plumery.api.client.PlumeryClient;\n\nPlumeryClient clientWithOptions = client.withOptions(optionsBuilder -> {\n    optionsBuilder.baseUrl("https://example.com");\n    optionsBuilder.maxRetries(42);\n});\n```\n\nThe `withOptions()` method does not affect the original client or service.\n\n## Requests and responses\n\nTo send a request to the Plumery API, build an instance of some `Params` class and pass it to the     corresponding client method. When the response is received, it will be deserialized into an instance of     a Java class.\n\nFor example, `client.parties().accounts().list(...)` should be called with an instance of `AccountListParams`, and it     will return an instance of `AccountListResponse`.\n\n## Immutability\n\nEach class in the SDK has an associated   [builder](https://blogs.oracle.com/javamagazine/post/exploring-joshua-blochs-builder-design-pattern-in-java)   or factory method for constructing it.\n\nEach class is [immutable](https://docs.oracle.com/javase/tutorial/essential/concurrency/immutable.html)   once constructed. If the class has an associated builder, then it has a `toBuilder()` method, which can   be used to convert it back to a builder for making a modified copy.\n\nBecause each class is immutable, builder modification will _never_ affect already built class instances.\n\n## Asynchronous execution\n\nThe default client is synchronous. To switch to asynchronous execution, call the `async()` method:\n\n```java\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.models.parties.accounts.AccountListParams;\nimport com.plumery.api.models.parties.accounts.AccountListResponse;\nimport java.util.concurrent.CompletableFuture;\n\nPlumeryClient client = PlumeryOkHttpClient.builder()\n    // Configures using the `plumery.baseUrl` system property\n    // Or configures using the `PLUMERY_BASE_URL` environment variable\n    .fromEnv()\n    .session("My Session")\n    .build();\n\nCompletableFuture<AccountListResponse> accounts = client.async().parties().accounts().list("REPLACE_ME");\n```\n\nOr create an asynchronous client from the beginning:\n\n```java\nimport com.plumery.api.client.PlumeryClientAsync;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClientAsync;\nimport com.plumery.api.models.parties.accounts.AccountListParams;\nimport com.plumery.api.models.parties.accounts.AccountListResponse;\nimport java.util.concurrent.CompletableFuture;\n\nPlumeryClientAsync client = PlumeryOkHttpClientAsync.builder()\n    // Configures using the `plumery.baseUrl` system property\n    // Or configures using the `PLUMERY_BASE_URL` environment variable\n    .fromEnv()\n    .session("My Session")\n    .build();\n\nCompletableFuture<AccountListResponse> accounts = client.parties().accounts().list("REPLACE_ME");\n```\n\nThe asynchronous client supports the same options as the synchronous one, except most methods return `CompletableFuture`s.\n\n\n\n## File uploads\n\nThe SDK defines methods that accept files.\n\nTo upload a file, pass a [`Path`](https://docs.oracle.com/javase/8/docs/api/java/nio/file/Path.html):\n\n```java\nimport com.plumery.api.models.loanapplications.LoanApplicationUploadDocumentParams;\nimport java.nio.file.Paths;\n\nLoanApplicationUploadDocumentParams params = LoanApplicationUploadDocumentParams.builder()\n    .loanApplicationId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n    .documentType(LoanApplicationUploadDocumentParams.DocumentType.INCOME_PROOF)\n    .filename("filename")\n    .file(Paths.get("/path/to/file"))\n    .build();\nclient.loanApplications().uploadDocument(params);\n```\n\nOr an arbitrary [`InputStream`](https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html):\n\n```java\nimport com.plumery.api.models.loanapplications.LoanApplicationUploadDocumentParams;\nimport java.net.URL;\n\nLoanApplicationUploadDocumentParams params = LoanApplicationUploadDocumentParams.builder()\n    .loanApplicationId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n    .documentType(LoanApplicationUploadDocumentParams.DocumentType.INCOME_PROOF)\n    .filename("filename")\n    .file(new URL("https://example.com//path/to/file").openStream())\n    .build();\nclient.loanApplications().uploadDocument(params);\n```\n\nOr a `byte[]` array:\n\n```java\nimport com.plumery.api.models.loanapplications.LoanApplicationUploadDocumentParams;\n\nLoanApplicationUploadDocumentParams params = LoanApplicationUploadDocumentParams.builder()\n    .loanApplicationId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n    .documentType(LoanApplicationUploadDocumentParams.DocumentType.INCOME_PROOF)\n    .filename("filename")\n    .file("content".getBytes())\n    .build();\nclient.loanApplications().uploadDocument(params);\n```\n\nNote that when passing a non-`Path` its filename is unknown so it will not be included in the request.     To manually set a filename, pass a [`MultipartField`](plumery-java-core/src/main/kotlin/com/plumery/api/core/Values.kt):\n\n```java\nimport com.plumery.api.core.MultipartField;\nimport com.plumery.api.models.loanapplications.LoanApplicationUploadDocumentParams;\nimport java.io.InputStream;\nimport java.net.URL;\n\nLoanApplicationUploadDocumentParams params = LoanApplicationUploadDocumentParams.builder()\n    .loanApplicationId("36a22460-ebc8-4ffe-a213-1683c5a420c5")\n    .documentType(LoanApplicationUploadDocumentParams.DocumentType.INCOME_PROOF)\n    .filename("filename")\n    .file(MultipartField.<InputStream>builder()\n        .value(new URL("https://example.com//path/to/file").openStream())\n        .filename("/path/to/file")\n        .build())\n    .build();\nclient.loanApplications().uploadDocument(params);\n```\n\n## Binary responses\n\nThe SDK defines methods that return binary responses, which are used for API responses that shouldn\'t     necessarily be parsed, like non-JSON data.\n\nThese methods return [`HttpResponse`](plumery-java-core/src/main/kotlin/com/plumery/api/core/http/HttpResponse.kt):\n\n```java\nimport com.plumery.api.core.http.HttpResponse;\nimport com.plumery.api.models.parties.transactions.TransactionGenerateSnapshotParams;\n\nTransactionGenerateSnapshotParams params = TransactionGenerateSnapshotParams.builder()\n    .partyId("6878951b-256b-4baa-9e81-ad4c577adc4e")\n    .transactionId("5f0d3de8-d521-11ed-afa1-0242ac120002")\n    .build();\nHttpResponse response = client.parties().transactions().generateSnapshot(params);\n```\n\nTo save the response content to a file, use the     [`Files.copy(...)`](https://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#copy-java.io.InputStream-java.nio.file.Path-java.nio.file.CopyOption...-)     method:\n\n```java\nimport com.plumery.api.core.http.HttpResponse;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\nimport java.nio.file.StandardCopyOption;\n\ntry (HttpResponse response = client.parties().transactions().generateSnapshot(params)) {\n    Files.copy(\n        response.body(),\n        Paths.get(path),\n        StandardCopyOption.REPLACE_EXISTING\n    );\n} catch (Exception e) {\n    System.out.println("Something went wrong!");\n    throw new RuntimeException(e);\n}\n```\n\nOr transfer the response content to any     [`OutputStream`](https://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html):\n\n```java\nimport com.plumery.api.core.http.HttpResponse;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\ntry (HttpResponse response = client.parties().transactions().generateSnapshot(params)) {\n    response.body().transferTo(Files.newOutputStream(Paths.get(path)));\n} catch (Exception e) {\n    System.out.println("Something went wrong!");\n    throw new RuntimeException(e);\n}\n```\n\n## Raw responses\n\nThe SDK defines methods that deserialize responses into instances of Java classes.       However, these methods don\'t provide access to the response headers, status code, or the raw response       body.\n\nTo access this data, prefix any HTTP method call on a client or service with `withRawResponse()`:\n\n```java\nimport com.plumery.api.core.http.Headers;\nimport com.plumery.api.core.http.HttpResponseFor;\nimport com.plumery.api.models.parties.accounts.AccountListParams;\nimport com.plumery.api.models.parties.accounts.AccountListResponse;\n\nHttpResponseFor<AccountListResponse> accounts = client.parties().accounts().withRawResponse().list("REPLACE_ME");\n\nint statusCode = accounts.statusCode();\nHeaders headers = accounts.headers();\n```\n\nYou can still deserialize the response into an instance of a Java class if needed:\n\n```java\nimport com.plumery.api.models.parties.accounts.AccountListResponse;\n\nAccountListResponse parsedAccounts = accounts.parse();\n```\n\n## Error handling\n\nThe SDK throws custom unchecked exception types:\n\n- [`PlumeryServiceException`](plumery-java-core/src/main/kotlin/com/plumery/api/errors/PlumeryServiceException.kt): Base class for HTTP errors. See this table for which exception       subclass is thrown for each HTTP status code:\n\n  | Status | Exception                                          |\n  | ------ | -------------------------------------------------- |\n  | 400    | [`BadRequestException`](plumery-java-core/src/main/kotlin/com/plumery/api/errors/BadRequestException.kt)           |\n  | 401    | [`UnauthorizedException`](plumery-java-core/src/main/kotlin/com/plumery/api/errors/UnauthorizedException.kt)         |\n  | 403    | [`PermissionDeniedException`](plumery-java-core/src/main/kotlin/com/plumery/api/errors/PermissionDeniedException.kt)     |\n  | 404    | [`NotFoundException`](plumery-java-core/src/main/kotlin/com/plumery/api/errors/NotFoundException.kt)             |\n  | 422    | [`UnprocessableEntityException`](plumery-java-core/src/main/kotlin/com/plumery/api/errors/UnprocessableEntityException.kt)  |\n  | 429    | [`RateLimitException`](plumery-java-core/src/main/kotlin/com/plumery/api/errors/RateLimitException.kt)            |\n  | 5xx    | [`InternalServerException`](plumery-java-core/src/main/kotlin/com/plumery/api/errors/InternalServerException.kt)       |\n  | others | [`UnexpectedStatusCodeException`](plumery-java-core/src/main/kotlin/com/plumery/api/errors/UnexpectedStatusCodeException.kt) |\n\n- [`PlumeryIoException`](plumery-java-core/src/main/kotlin/com/plumery/api/errors/PlumeryIoException.kt): I/O networking errors.\n\n- [`PlumeryRetryableException`](plumery-java-core/src/main/kotlin/com/plumery/api/errors/PlumeryRetryableException.kt): Generic error indicating a failure that could be retried by the client.\n\n- [`PlumeryInvalidDataException`](plumery-java-core/src/main/kotlin/com/plumery/api/errors/PlumeryInvalidDataException.kt): Failure to interpret successfully parsed data. For example,       when accessing a property that\'s supposed to be required, but the API unexpectedly omitted it from the       response.\n\n- [`PlumeryException`](plumery-java-core/src/main/kotlin/com/plumery/api/errors/PlumeryException.kt): Base class for all exceptions. Most errors will result in one of the       previously mentioned ones, but completely generic errors may be thrown using the base class.\n\n\n\n## Logging\n\nEnable logging by setting the `PLUMERY_LOG` environment variable to   `info`:\n\n```sh\nexport PLUMERY_LOG=info\n```\n\nOr to `debug` for more verbose logging:\n\n```sh\nexport PLUMERY_LOG=debug\n```\n\nOr configure the client manually using the `logLevel` method:\n\n```java\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.core.LogLevel;\n\nPlumeryClient client = PlumeryOkHttpClient.builder()\n    .fromEnv()\n    .logLevel(LogLevel.INFO)\n    .session("My Session")\n    .build();\n```\n\n## ProGuard and R8\n\nAlthough the SDK uses reflection, it is still usable with     [ProGuard](https://github.com/Guardsquare/proguard) and     [R8](https://developer.android.com/topic/performance/app-optimization/enable-app-optimization) because     `plumery-java-core` is published with a     [configuration file](plumery-java-core/src/main/resources/META-INF/proguard/plumery-java-core.pro) containing     [keep rules](https://www.guardsquare.com/manual/configuration/usage).\n\nProGuard and R8 should automatically detect and use the published rules, but you can also manually copy     the keep rules if necessary.\n\n\n\n\n\n## Jackson\n\nThe SDK depends on [Jackson](https://github.com/FasterXML/jackson) for JSON     serialization/deserialization. It is compatible with version 2.13.4 or higher,     but depends on version 2.18.2 by default.\n\nThe SDK throws an exception if it detects an incompatible Jackson version at runtime (e.g. if the     default version was overridden in your Maven or Gradle config).\n\nIf the SDK threw an exception, but you\'re _certain_ the version is compatible, then disable the version     check using the `checkJacksonVersionCompatibility` on [`PlumeryOkHttpClient`](plumery-java-client-okhttp/src/main/kotlin/com/plumery/api/client/okhttp/PlumeryOkHttpClient.kt) or     [`PlumeryOkHttpClientAsync`](plumery-java-client-okhttp/src/main/kotlin/com/plumery/api/client/okhttp/PlumeryOkHttpClientAsync.kt).\n\n> [!CAUTION]\n> We make no guarantee that the SDK works correctly when the Jackson version check is disabled.\n\nAlso note that there are bugs in older Jackson versions that can affect the SDK. We don\'t work around all     Jackson bugs ([example](https://github.com/FasterXML/jackson-databind/issues/3240)) and expect users to     upgrade Jackson for those instead.\n\n## Network options\n\n### Retries\n\nThe SDK automatically retries 2 times by default, with a short exponential backoff between requests.\n\nOnly the following error types are retried:\n- Connection errors (for example, due to a network connectivity problem)\n- 408 Request Timeout\n- 409 Conflict\n- 429 Rate Limit\n- 5xx Internal\n\nThe API may also explicitly instruct the SDK to retry or not retry a request.\n\nTo set a custom number of retries, configure the client using the `maxRetries` method:\n\n```java\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\n\nPlumeryClient client = PlumeryOkHttpClient.builder()\n    .fromEnv()\n    .maxRetries(4)\n    .session("My Session")\n    .build();\n```\n\n### Timeouts\n\nRequests time out after 1 minute by default.\n\nTo set a custom timeout, configure the method call using the `timeout` method:\n\n```java\nimport com.plumery.api.models.parties.accounts.AccountListResponse;\n\nAccountListResponse accounts = client.parties().accounts().list(RequestOptions.builder().timeout(Duration.ofSeconds(30)).build());\n```\n\nOr configure the default for all method calls at the client level:\n\n```java\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport java.time.Duration;\n\nPlumeryClient client = PlumeryOkHttpClient.builder()\n    .fromEnv()\n    .timeout(Duration.ofSeconds(30))\n    .session("My Session")\n    .build();\n```\n\n### Proxies\n\nTo route requests through a proxy, configure the client using the `proxy` method:\n\n```java\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport java.net.InetSocketAddress;\nimport java.net.Proxy;\n\nPlumeryClient client = PlumeryOkHttpClient.builder()\n    .fromEnv()\n    .proxy(new Proxy(\n      Proxy.Type.HTTP, new InetSocketAddress(\n        "https://example.com", 8080\n      )\n    ))\n    .session("My Session")\n    .build();\n```\n\nIf the proxy responds with `407 Proxy Authentication Required`, supply credentials by also   configuring `proxyAuthenticator`:\n\n```java\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport com.plumery.api.core.http.ProxyAuthenticator;\n\nPlumeryClient client = PlumeryOkHttpClient.builder()\n    .fromEnv()\n    .proxy(...)\n    // Or a custom implementation of `ProxyAuthenticator`.\n    .proxyAuthenticator(ProxyAuthenticator.basic("username", "password"))\n    .session("My Session")\n    .build();\n```\n\n### Connection pooling\n\nTo customize the underlying OkHttp connection pool, configure the client using the   `maxIdleConnections` and `keepAliveDuration` methods:\n\n```java\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\nimport java.time.Duration;\n\nPlumeryClient client = PlumeryOkHttpClient.builder()\n    .fromEnv()\n    // If `maxIdleConnections` is set, then `keepAliveDuration` must be set, and vice versa.\n    .maxIdleConnections(10)\n    .keepAliveDuration(Duration.ofMinutes(2))\n    .session("My Session")\n    .build();\n```\n\nIf both options are unset, OkHttp\'s default connection pool settings are used.\n\n### HTTPS\n\n> [!NOTE]\n> Most applications should not call these methods, and instead use the system defaults. The defaults include\n> special optimizations that can be lost if the implementations are modified.\n\nTo configure how HTTPS connections are secured, configure the client using the `sslSocketFactory`,   `trustManager`, and `hostnameVerifier` methods:\n\n```java\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\n\nPlumeryClient client = PlumeryOkHttpClient.builder()\n    .fromEnv()\n    // If `sslSocketFactory` is set, then `trustManager` must be set, and vice versa.\n    .sslSocketFactory(yourSSLSocketFactory)\n    .trustManager(yourTrustManager)\n    .hostnameVerifier(yourHostnameVerifier)\n    .session("My Session")\n    .build();\n```\n\n\n\n### Custom HTTP client\n\nThe SDK consists of three artifacts:\n- `plumery-java-core`\n  - Contains core SDK logic\n  - Does not depend on [OkHttp](https://square.github.io/okhttp)\n  - Exposes [`PlumeryClient`](plumery-java-core/src/main/kotlin/com/plumery/api/client/PlumeryClient.kt), [`PlumeryClientAsync`](plumery-java-core/src/main/kotlin/com/plumery/api/client/PlumeryClientAsync.kt),             [`PlumeryClientImpl`](plumery-java-core/src/main/kotlin/com/plumery/api/client/PlumeryClientImpl.kt), and [`PlumeryClientAsyncImpl`](plumery-java-core/src/main/kotlin/com/plumery/api/client/PlumeryClientAsyncImpl.kt), all of which can             work with any HTTP client\n- `plumery-java-client-okhttp`\n  - Depends on [OkHttp](https://square.github.io/okhttp)\n  - Exposes [`PlumeryOkHttpClient`](plumery-java-client-okhttp/src/main/kotlin/com/plumery/api/client/okhttp/PlumeryOkHttpClient.kt) and [`PlumeryOkHttpClientAsync`](plumery-java-client-okhttp/src/main/kotlin/com/plumery/api/client/okhttp/PlumeryOkHttpClientAsync.kt), which             provide a way to construct [`PlumeryClientImpl`](plumery-java-core/src/main/kotlin/com/plumery/api/client/PlumeryClientImpl.kt) and             [`PlumeryClientAsyncImpl`](plumery-java-core/src/main/kotlin/com/plumery/api/client/PlumeryClientAsyncImpl.kt), respectively, using OkHttp\n- `plumery-java`\n  - Depends on and exposes the APIs of both `plumery-java-core` and `plumery-java-client-okhttp`\n  - Does not have its own logic\n\nThis structure allows replacing the SDK\'s default HTTP client without pulling in unnecessary dependencies.\n\n#### Customized [`OkHttpClient`](https://square.github.io/okhttp/3.x/okhttp/okhttp3/OkHttpClient.html)\n\n> [!TIP]\n> Try the available [network options](#network-options) before replacing the default client.\n\nTo use a customized `OkHttpClient`:\n\n1. Replace your [`plumery-java` dependency](#installation) with `plumery-java-core`\n2. Copy `plumery-java-client-okhttp`\'s [`OkHttpClient`](plumery-java-client-okhttp/src/main/kotlin/com/plumery/api/client/okhttp/OkHttpClient.kt) class into your code and        customize it\n3. Construct [`PlumeryClientImpl`](plumery-java-core/src/main/kotlin/com/plumery/api/client/PlumeryClientImpl.kt) or [`PlumeryClientAsyncImpl`](plumery-java-core/src/main/kotlin/com/plumery/api/client/PlumeryClientAsyncImpl.kt), similarly to        [`PlumeryOkHttpClient`](plumery-java-client-okhttp/src/main/kotlin/com/plumery/api/client/okhttp/PlumeryOkHttpClient.kt) or [`PlumeryOkHttpClientAsync`](plumery-java-client-okhttp/src/main/kotlin/com/plumery/api/client/okhttp/PlumeryOkHttpClientAsync.kt), using your        customized client\n\n### Completely custom HTTP client\n\nTo use a completely custom HTTP client:\n\n1. Replace your [`plumery-java` dependency](#installation) with `plumery-java-core`\n2. Write a class that implements the [`HttpClient`](plumery-java-core/src/main/kotlin/com/plumery/api/core/http/HttpClient.kt) interface\n3. Construct [`PlumeryClientImpl`](plumery-java-core/src/main/kotlin/com/plumery/api/client/PlumeryClientImpl.kt) or [`PlumeryClientAsyncImpl`](plumery-java-core/src/main/kotlin/com/plumery/api/client/PlumeryClientAsyncImpl.kt), similarly to        [`PlumeryOkHttpClient`](plumery-java-client-okhttp/src/main/kotlin/com/plumery/api/client/okhttp/PlumeryOkHttpClient.kt) or [`PlumeryOkHttpClientAsync`](plumery-java-client-okhttp/src/main/kotlin/com/plumery/api/client/okhttp/PlumeryOkHttpClientAsync.kt), using your new        client class\n\n## Undocumented API functionality\n\nThe SDK is typed for convenient usage of the documented API. However, it also supports working with undocumented or not yet supported parts of the API.\n\n### Parameters\n\nTo set undocumented parameters, call the `putAdditionalHeader`, `putAdditionalQueryParam`, or       `putAdditionalBodyProperty` methods on any `Params` class:\n\n```java\nimport com.plumery.api.core.JsonValue;\nimport com.plumery.api.models.parties.accounts.AccountListParams;\n\nAccountListParams params = AccountListParams.builder()\n    .putAdditionalHeader("Secret-Header", "42")\n    .putAdditionalQueryParam("secret_query_param", "42")\n    .putAdditionalBodyProperty("secretProperty", JsonValue.from("42"))\n    .build();\n```\n\nThese can be accessed on the built object later using the `_additionalHeaders()`,       `_additionalQueryParams()`, and `_additionalBodyProperties()` methods.\n\nTo set undocumented parameters on _nested_ headers, query params, or body classes, call the         `putAdditionalProperty` method on the nested class:\n\n```java\nimport com.plumery.api.core.JsonValue;\nimport com.plumery.api.models.userenrolments.UserEnrolmentSetIndividualPartyProfileParams;\n\nUserEnrolmentSetIndividualPartyProfileParams params = UserEnrolmentSetIndividualPartyProfileParams.builder()\n    .postalAddress(UserEnrolmentSetIndividualPartyProfileParams.PostalAddress.builder()\n        .putAdditionalProperty("secretProperty", JsonValue.from("42"))\n        .build())\n    .build();\n```\n\nThese properties can be accessed on the nested built object later using the         `_additionalProperties()` method.\n\nTo set a documented parameter or property to an undocumented or not yet supported _value_, pass a       [`JsonValue`](plumery-java-core/src/main/kotlin/com/plumery/api/core/Values.kt) object to its setter:\n\n```java\nimport com.plumery.api.models.parties.accounts.AccountListParams;\n\nAccountListParams params = AccountListParams.builder().build();\n```\n\nThe most straightforward way to create a [`JsonValue`](plumery-java-core/src/main/kotlin/com/plumery/api/core/Values.kt) is using its       `from(...)` method:\n\n```java\nimport com.plumery.api.core.JsonValue;\nimport java.util.List;\nimport java.util.Map;\n\n// Create primitive JSON values\nJsonValue nullValue = JsonValue.from(null);\nJsonValue booleanValue = JsonValue.from(true);\nJsonValue numberValue = JsonValue.from(42);\nJsonValue stringValue = JsonValue.from("Hello World!");\n\n// Create a JSON array value equivalent to `["Hello", "World"]`\nJsonValue arrayValue = JsonValue.from(List.of(\n  "Hello", "World"\n));\n\n// Create a JSON object value equivalent to `{ "a": 1, "b": 2 }`\nJsonValue objectValue = JsonValue.from(Map.of(\n  "a", 1,\n  "b", 2\n));\n\n// Create an arbitrarily nested JSON equivalent to:\n// {\n//   "a": [1, 2],\n//   "b": [3, 4]\n// }\nJsonValue complexValue = JsonValue.from(Map.of(\n  "a", List.of(\n    1, 2\n  ),\n  "b", List.of(\n    3, 4\n  )\n));\n```\n\nNormally a `Builder` class\'s `build` method will throw         [`IllegalStateException`](https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html)         if any required parameter or property is unset.\n\nTo forcibly omit a required parameter or property, pass [`JsonMissing`](plumery-java-core/src/main/kotlin/com/plumery/api/core/Values.kt):\n\n```java\nimport com.plumery.api.core.JsonMissing;\nimport com.plumery.api.models.parties.accounts.AccountListParams;\n\nAccountListParams params = AccountListParams.builder()\n    .partyId(JsonMissing.of())\n    .build();\n```\n\n### Response properties\n\nTo access undocumented response properties, call the `_additionalProperties()` method:\n\n```java\nimport com.plumery.api.core.JsonValue;\nimport java.util.Map;\n\nMap<String, JsonValue> additionalProperties = client.parties().accounts().list(params)._additionalProperties();\nJsonValue secretPropertyValue = additionalProperties.get("secretProperty");\n\nString result = secretPropertyValue.accept(new JsonValue.Visitor<>() {\n    @Override\n    public String visitNull() {\n        return "It\'s null!";\n    }\n\n    @Override\n    public String visitBoolean(boolean value) {\n        return "It\'s a boolean!";\n    }\n\n    @Override\n    public String visitNumber(Number value) {\n        return "It\'s a number!";\n    }\n\n    // Other methods include `visitMissing`, `visitString`, `visitArray`, and `visitObject`\n    // The default implementation of each unimplemented method delegates to `visitDefault`, which throws by default, but can also be overridden\n});\n```\n\nTo access a property\'s raw JSON value, which may be undocumented, call its `_` prefixed method:\n\n```java\nimport com.plumery.api.core.JsonField;\nimport java.util.Optional;\n\nJsonField<Object> field = client.parties().accounts().list(params)._field();\n\nif (field.isMissing()) {\n  // The property is absent from the JSON response\n} else if (field.isNull()) {\n  // The property was set to literal null\n} else {\n  // Check if value was provided as a string\n  // Other methods include `asNumber()`, `asBoolean()`, etc.\n  Optional<String> jsonString = field.asString();\n\n  // Try to deserialize into a custom type\n  MyClass myObject = field.asUnknown().orElseThrow().convert(MyClass.class);\n}\n```\n\n### Response validation\n\nIn rare cases, the API may return a response that doesn\'t match the expected type. For example, the SDK     may expect a property to contain a `String`, but the API could return something else.\n\nBy default, the SDK will not throw an exception in this case. It will throw     [`PlumeryInvalidDataException`](plumery-java-core/src/main/kotlin/com/plumery/api/errors/PlumeryInvalidDataException.kt) only if you directly access the property.\n\nValidating the response is _not_ forwards compatible with new types from the API for existing fields.\n\nIf you would still prefer to check that the response is completely well-typed upfront, then either call     `validate()`:\n\n```java\nimport com.plumery.api.models.parties.accounts.AccountListResponse;\n\nAccountListResponse accounts = client.parties().accounts().list(params).validate();\n```\n\nOr configure the method call to validate the response using the `responseValidation` method:\n\n```java\nimport com.plumery.api.models.parties.accounts.AccountListResponse;\n\nAccountListResponse accounts = client.parties().accounts().list(RequestOptions.builder().responseValidation(true).build());\n```\n\nOr configure the default for all method calls at the client level:\n\n```java\nimport com.plumery.api.client.PlumeryClient;\nimport com.plumery.api.client.okhttp.PlumeryOkHttpClient;\n\nPlumeryClient client = PlumeryOkHttpClient.builder()\n    .fromEnv()\n    .responseValidation(true)\n    .session("My Session")\n    .build();\n```\n\n## FAQ\n\n### Why don\'t you use plain `enum` classes?\n\nJava `enum` classes are not trivially   [forwards compatible](https://www.stainless.com/blog/making-java-enums-forwards-compatible). Using them in   the SDK could cause runtime exceptions if the API is updated to respond with a new enum value.\n\n### Why do you represent fields using `JsonField<T>` instead of just plain `T`?\n\nUsing `JsonField<T>` enables a few features:\n\n- Allowing usage of [undocumented API functionality](#undocumented-api-functionality)\n- Lazily [validating the API response against the expected shape](#response-validation)\n- Representing absent vs explicitly null values\n\n### Why don\'t you use [`data` classes](https://kotlinlang.org/docs/data-classes.html)?\n\nIt is not [backwards compatible to add new fields to a data class](https://kotlinlang.org/docs/api-guidelines-backward-compatibility.html#avoid-using-data-classes-in-your-api)   and we don\'t want to introduce a breaking change every time we add a field to a class.\n\n### Why don\'t you use checked exceptions?\n\nChecked exceptions are widely considered a mistake in the Java programming language. In fact, they were   omitted from Kotlin for this reason.\n\nChecked exceptions:\n\n- Are verbose to handle\n- Encourage error handling at the wrong level of abstraction, where nothing can be done about the error\n- Are tedious to propagate due to the [function coloring problem](https://journal.stuffwithstuff.com/2015/02/01/what-color-is-your-function)\n- Don\'t play well with lambdas (also due to the function coloring problem)\n\n## Semantic versioning\n\nThis package generally follows [SemVer](https://semver.org/spec/v2.0.0.html) conventions, though certain backwards-incompatible changes may be released as minor versions:\n\n1. Changes to library internals which are technically public but not intended or documented for external use. _(Please open a GitHub issue to let us know if you are relying on such internals.)_\n2. Changes that we do not expect to impact the vast majority of users in practice.\n\nWe take backwards-compatibility seriously and work hard to ensure you can rely on a smooth upgrade experience.\n\nWe are keen for your feedback; please open an [issue](https://www.github.com/stainless-sdks/plumery-java/issues) with questions, bugs, or suggestions.\n',
  },
];

const INDEX_OPTIONS = {
  fields: [
    'name',
    'endpoint',
    'summary',
    'description',
    'qualified',
    'stainlessPath',
    'content',
    'sectionContext',
  ],
  storeFields: ['kind', '_original'],
  searchOptions: {
    prefix: true,
    fuzzy: 0.1,
    boost: {
      name: 5,
      stainlessPath: 3,
      endpoint: 3,
      qualified: 3,
      summary: 2,
      content: 1,
      description: 1,
    } as Record<string, number>,
  },
};

/**
 * Self-contained local search engine backed by MiniSearch.
 * Method data is embedded at SDK build time; prose documents
 * can be loaded from an optional docs directory at runtime.
 */
export class LocalDocsSearch {
  private methodIndex: MiniSearch<MiniSearchDocument>;
  private proseIndex: MiniSearch<MiniSearchDocument>;

  private constructor() {
    this.methodIndex = new MiniSearch<MiniSearchDocument>(INDEX_OPTIONS);
    this.proseIndex = new MiniSearch<MiniSearchDocument>(INDEX_OPTIONS);
  }

  static async create(opts?: { docsDir?: string }): Promise<LocalDocsSearch> {
    const instance = new LocalDocsSearch();
    instance.indexMethods(EMBEDDED_METHODS);
    for (const readme of EMBEDDED_READMES) {
      instance.indexProse(readme.content, `readme:${readme.language}`);
    }
    if (opts?.docsDir) {
      await instance.loadDocsDirectory(opts.docsDir);
    }
    return instance;
  }

  search(props: {
    query: string;
    language?: string;
    detail?: string;
    maxResults?: number;
    maxLength?: number;
  }): SearchResult {
    const { query, language = 'typescript', detail = 'default', maxResults = 5, maxLength = 100_000 } = props;

    const useMarkdown = detail === 'verbose' || detail === 'high';

    // Search both indices and merge results by score.
    // Filter prose hits so language-tagged content (READMEs and docs with
    // frontmatter) only matches the requested language.
    const methodHits = this.methodIndex
      .search(query)
      .map((hit) => ({ ...hit, _kind: 'http_method' as const }));
    const proseHits = this.proseIndex
      .search(query)
      .filter((hit) => {
        const source = ((hit as Record<string, unknown>)['_original'] as ProseChunk | undefined)?.source;
        if (!source) return true;
        // Check for language-tagged sources: "readme:<lang>" or "lang:<lang>:<filename>"
        let taggedLang: string | undefined;
        if (source.startsWith('readme:')) taggedLang = source.slice('readme:'.length);
        else if (source.startsWith('lang:')) taggedLang = source.split(':')[1];
        if (!taggedLang) return true;
        return taggedLang === language || (language === 'javascript' && taggedLang === 'typescript');
      })
      .map((hit) => ({ ...hit, _kind: 'prose' as const }));
    const merged = [...methodHits, ...proseHits].sort((a, b) => b.score - a.score);
    const top = merged.slice(0, maxResults);

    const fullResults: (string | Record<string, unknown>)[] = [];

    for (const hit of top) {
      const original = (hit as Record<string, unknown>)['_original'];
      if (hit._kind === 'http_method') {
        const m = original as MethodEntry;
        if (useMarkdown && m.markdown) {
          fullResults.push(m.markdown);
        } else {
          // Use per-language data when available, falling back to the
          // top-level fields (which are TypeScript-specific in the
          // legacy codepath).
          const langData = m.perLanguage?.[language];
          fullResults.push({
            method: langData?.method ?? m.qualified,
            summary: m.summary,
            description: m.description,
            endpoint: `${m.httpMethod.toUpperCase()} ${m.endpoint}`,
            ...(langData?.example ? { example: langData.example } : {}),
            ...(m.params ? { params: m.params } : {}),
            ...(m.response ? { response: m.response } : {}),
          });
        }
      } else {
        const c = original as ProseChunk;
        fullResults.push({
          content: c.content,
          ...(c.source ? { source: c.source } : {}),
        });
      }
    }

    let totalLength = 0;
    const results: (string | Record<string, unknown>)[] = [];
    for (const result of fullResults) {
      const len = typeof result === 'string' ? result.length : JSON.stringify(result).length;
      totalLength += len;
      if (totalLength > maxLength) break;
      results.push(result);
    }

    if (results.length < fullResults.length) {
      results.unshift(`Truncated; showing ${results.length} of ${fullResults.length} results.`);
    }

    return { results };
  }

  private indexMethods(methods: MethodEntry[]): void {
    const docs: MiniSearchDocument[] = methods.map((m, i) => ({
      id: `method-${i}`,
      kind: 'http_method' as const,
      name: m.name,
      endpoint: m.endpoint,
      summary: m.summary,
      description: m.description,
      qualified: m.qualified,
      stainlessPath: m.stainlessPath,
      _original: m as unknown as Record<string, unknown>,
    }));
    if (docs.length > 0) {
      this.methodIndex.addAll(docs);
    }
  }

  private async loadDocsDirectory(docsDir: string): Promise<void> {
    let entries;
    try {
      entries = await fs.readdir(docsDir, { withFileTypes: true });
    } catch (err) {
      getLogger().warn({ err, docsDir }, 'Could not read docs directory');
      return;
    }

    const files = entries
      .filter((e) => e.isFile())
      .filter((e) => e.name.endsWith('.md') || e.name.endsWith('.markdown') || e.name.endsWith('.json'));

    for (const file of files) {
      try {
        const filePath = path.join(docsDir, file.name);
        const content = await fs.readFile(filePath, 'utf-8');

        if (file.name.endsWith('.json')) {
          const texts = extractTexts(JSON.parse(content));
          if (texts.length > 0) {
            this.indexProse(texts.join('\n\n'), file.name);
          }
        } else {
          // Parse optional YAML frontmatter for language tagging.
          // Files with a "language" field in frontmatter will only
          // surface in searches for that language.
          //
          // Example:
          //   ---
          //   language: python
          //   ---
          //   # Error handling in Python
          //   ...
          const frontmatter = parseFrontmatter(content);
          const source = frontmatter.language ? `lang:${frontmatter.language}:${file.name}` : file.name;
          this.indexProse(content, source);
        }
      } catch (err) {
        getLogger().warn({ err, file: file.name }, 'Failed to index docs file');
      }
    }
  }

  private indexProse(markdown: string, source: string): void {
    const chunks = chunkMarkdown(markdown);
    const baseId = this.proseIndex.documentCount;

    const docs: MiniSearchDocument[] = chunks.map((chunk, i) => ({
      id: `prose-${baseId + i}`,
      kind: 'prose' as const,
      content: chunk.content,
      ...(chunk.sectionContext != null ? { sectionContext: chunk.sectionContext } : {}),
      _original: { ...chunk, source } as unknown as Record<string, unknown>,
    }));

    if (docs.length > 0) {
      this.proseIndex.addAll(docs);
    }
  }
}

/** Lightweight markdown chunker — splits on headers, chunks by word count. */
function chunkMarkdown(markdown: string): { content: string; tag: string; sectionContext?: string }[] {
  // Strip YAML frontmatter
  const stripped = markdown.replace(/^---\n[\s\S]*?\n---\n?/, '');
  const lines = stripped.split('\n');

  const chunks: { content: string; tag: string; sectionContext?: string }[] = [];
  const headers: string[] = [];
  let current: string[] = [];

  const flush = () => {
    const text = current.join('\n').trim();
    if (!text) return;
    const sectionContext = headers.length > 0 ? headers.join(' > ') : undefined;
    // Split into ~200-word chunks
    const words = text.split(/\s+/);
    for (let i = 0; i < words.length; i += 200) {
      const slice = words.slice(i, i + 200).join(' ');
      if (slice) {
        chunks.push({ content: slice, tag: 'p', ...(sectionContext != null ? { sectionContext } : {}) });
      }
    }
    current = [];
  };

  for (const line of lines) {
    const headerMatch = line.match(/^(#{1,6})\s+(.+)/);
    if (headerMatch) {
      flush();
      const level = headerMatch[1]!.length;
      const text = headerMatch[2]!.trim();
      while (headers.length >= level) headers.pop();
      headers.push(text);
    } else {
      current.push(line);
    }
  }
  flush();

  return chunks;
}

/** Recursively extracts string values from a JSON structure. */
function extractTexts(data: unknown, depth = 0): string[] {
  if (depth > 10) return [];
  if (typeof data === 'string') return data.trim() ? [data] : [];
  if (Array.isArray(data)) return data.flatMap((item) => extractTexts(item, depth + 1));
  if (typeof data === 'object' && data !== null) {
    return Object.values(data).flatMap((v) => extractTexts(v, depth + 1));
  }
  return [];
}

/** Parses YAML frontmatter from a markdown string, extracting the language field if present. */
function parseFrontmatter(markdown: string): { language?: string } {
  const match = markdown.match(/^---\n([\s\S]*?)\n---/);
  if (!match) return {};
  const body = match[1] ?? '';
  const langMatch = body.match(/^language:\s*(.+)$/m);
  return langMatch ? { language: langMatch[1]!.trim() } : {};
}
