---
updatedAt: 2026-05-22T09:35:01.000Z
agentTools:
  projectIndex: https://doc.fintecture.com/llms.txt
---

# Create membership

Create a new membership associating a user with either a company or an organisation node. Memberships define the relationship between users and the entities they can access within your organisation structure.

The membership must include a relationship to either a `company` or an `organisation_node`, but not both.

<blockquote style="background: #D7E9FF;border-color: #1471EB;padding: 0.8rem;border-radius: 5px;"><p>🔒 External clients call this endpoint with an <a href="https://doc.fintecture.com/docs/request-an-oac-access-token">OAC</a> (Organisation Access Credentials — ⚠️ Beta) access token carrying the <b>users:write</b> scope.</p></blockquote>

<blockquote style="background: #D7E9FF; border-color: #1471EB; padding: 0.8rem; border-radius: 5px;">
  <p>ℹ️ Each user can only have <b>one membership per company or organisation node</b>. Attempting to create a duplicate membership will result in an error. You can configure the user's role (admin, developer, viewer, etc.) and notification preferences when creating the membership.</p>
</blockquote>

<blockquote style="background: #D7E9FF; border-color: #1471EB; padding: 0.8rem; border-radius: 5px;">
  <p>ℹ️ Set <code>meta.with_invitation</code> to <code>true</code> to have Fintecture send an invitation email to the user.</p>
</blockquote>


# OpenAPI definition

```json
{
  "openapi": "3.0.3",
  "info": {
    "title": "API EXPLORER",
    "version": "3.0.0",
    "description": "Public API\n",
    "contact": {
      "name": "Support",
      "email": "noelia.rodriguez@fintecture.com"
    }
  },
  "x-readme": {
    "explorer-enabled": false,
    "proxy-enabled": false,
    "samples-languages": [
      "curl",
      "javascript",
      "ruby"
    ]
  },
  "servers": [
    {
      "url": "https://api.sandbox.fintecture.com",
      "description": "Sandbox server"
    },
    {
      "url": "https://api.fintecture.com",
      "description": "Production server"
    }
  ],
  "paths": {
    "/v1/memberships": {
      "post": {
        "security": [
          {
            "OAuth2Oac": [
              "users:write"
            ]
          }
        ],
        "tags": [
          "memberships"
        ],
        "summary": "Create membership",
        "description": "Create a new membership associating a user with either a company or an organisation node. Memberships define the relationship between users and the entities they can access within your organisation structure.\n\nThe membership must include a relationship to either a `company` or an `organisation_node`, but not both.\n\n<blockquote style=\"background: #D7E9FF;border-color: #1471EB;padding: 0.8rem;border-radius: 5px;\"><p>🔒 External clients call this endpoint with an <a href=\"https://doc.fintecture.com/docs/request-an-oac-access-token\">OAC</a> (Organisation Access Credentials — ⚠️ Beta) access token carrying the <b>users:write</b> scope.</p></blockquote>\n\n<blockquote style=\"background: #D7E9FF; border-color: #1471EB; padding: 0.8rem; border-radius: 5px;\">\n  <p>ℹ️ Each user can only have <b>one membership per company or organisation node</b>. Attempting to create a duplicate membership will result in an error. You can configure the user's role (admin, developer, viewer, etc.) and notification preferences when creating the membership.</p>\n</blockquote>\n\n<blockquote style=\"background: #D7E9FF; border-color: #1471EB; padding: 0.8rem; border-radius: 5px;\">\n  <p>ℹ️ Set <code>meta.with_invitation</code> to <code>true</code> to have Fintecture send an invitation email to the user.</p>\n</blockquote>\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/Header-signature-req"
          },
          {
            "$ref": "#/components/parameters/Header-digest-req"
          },
          {
            "$ref": "#/components/parameters/Header-date-req"
          },
          {
            "$ref": "#/components/parameters/Header-xRequestId-req"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MembershipCreateRequest"
              },
              "examples": {
                "createMembershipWithCompany": {
                  "summary": "Create membership linked to a company",
                  "value": {
                    "meta": {
                      "with_invitation": true
                    },
                    "data": {
                      "type": "memberships",
                      "attributes": {
                        "role": "admin",
                        "status": "waiting",
                        "notifications": [
                          {
                            "type": "manual_transfer",
                            "pay_by_bank": true,
                            "created_by_me": true,
                            "created_by_others": false,
                            "received_not_by_fintecture": false,
                            "partial_payment": false
                          }
                        ]
                      },
                      "relationships": {
                        "company": {
                          "data": {
                            "type": "companies",
                            "id": "c0ffee00-1234-5678-9abc-def012345678"
                          }
                        },
                        "user": {
                          "data": {
                            "type": "users",
                            "id": "user@example.com"
                          }
                        }
                      }
                    }
                  }
                },
                "createMembershipWithOrganisationNode": {
                  "summary": "Create membership linked to an organisation node",
                  "value": {
                    "meta": {
                      "with_invitation": true
                    },
                    "data": {
                      "type": "memberships",
                      "attributes": {
                        "role": "operator",
                        "status": "waiting",
                        "notifications": [
                          {
                            "type": "manual_transfer",
                            "pay_by_bank": true,
                            "created_by_me": true,
                            "created_by_others": false,
                            "received_not_by_fintecture": false,
                            "partial_payment": false
                          }
                        ]
                      },
                      "relationships": {
                        "organisation_node": {
                          "data": {
                            "type": "organisation_nodes",
                            "id": "3c2a9f02-7f7e-4a8f-8c8c-5c7ab6c1b9d1"
                          }
                        },
                        "user": {
                          "data": {
                            "type": "users",
                            "id": "user@example.com"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Membership created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/MembershipResourceBase"
                    }
                  }
                },
                "examples": {
                  "membershipCreated": {
                    "summary": "Membership created",
                    "description": "While the invitation is still pending, the created membership carries its onboarding `invitation_link` so you can deliver it to the user yourself. The raw invitation token is never exposed.\n",
                    "value": {
                      "data": {
                        "type": "memberships",
                        "id": "5f1f3a3a-7f9b-4ac1-8b9c-0b2a2b4c6d7e",
                        "attributes": {
                          "role": "admin",
                          "status": "waiting",
                          "invitation_link": "https://console.fintecture.com/auth/invitation?invitationToken=eyJhbGciOi...",
                          "notifications": [
                            {
                              "type": "manual_transfer",
                              "pay_by_bank": true,
                              "created_by_me": true,
                              "created_by_others": false,
                              "received_not_by_fintecture": false,
                              "partial_payment": false
                            }
                          ]
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400-BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/401-Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/403-Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/404-NotFound"
          },
          "406": {
            "$ref": "#/components/responses/406-NotAcceptable"
          },
          "500": {
            "$ref": "#/components/responses/500-InternalServerError"
          }
        }
      }
    }
  },
  "components": {
    "parameters": {
      "Header-date-req": {
        "name": "date",
        "description": "RFC2822 formatted date.",
        "schema": {
          "$ref": "#/components/schemas/DateRfc2822"
        },
        "in": "header",
        "required": true
      },
      "Header-signature-req": {
        "name": "signature",
        "description": "Signature is used to enforce security by signing request.<br>Related documentation can be found by clicking [<b>here</b>](https://doc.fintecture.com/docs/api-http-signature)",
        "schema": {
          "type": "string"
        },
        "in": "header",
        "required": true
      },
      "Header-digest-req": {
        "name": "digest",
        "description": "Sha-256 base64 encoded digest.<br>Related documentation can be found by clicking [<b>here</b>](https://doc.fintecture.com/docs/api-http-signature)",
        "schema": {
          "type": "string"
        },
        "in": "header",
        "required": true
      },
      "Header-xRequestId-req": {
        "name": "x-request-id",
        "description": "uuid v4. Required in Redirect mode.",
        "schema": {
          "$ref": "#/components/schemas/IdentifierUuidV4"
        },
        "in": "header",
        "required": true
      }
    },
    "responses": {
      "400-BadRequest": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/APIResponse400"
            }
          }
        },
        "description": "bad request"
      },
      "401-Unauthorized": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/APIResponse401"
            }
          }
        },
        "description": "unauthorized"
      },
      "403-Forbidden": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/APIResponse403"
            }
          }
        },
        "description": "forbidden"
      },
      "404-NotFound": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/APIResponse404"
            }
          }
        },
        "description": "resource not found"
      },
      "406-NotAcceptable": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/APIResponse406"
            }
          }
        },
        "description": "not acceptable"
      },
      "500-InternalServerError": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/APIResponse500"
            }
          }
        },
        "description": "internal server error"
      }
    },
    "schemas": {
      "APIResponse400": {
        "title": "400 API Response",
        "description": "Definition of the standard API reponse when a 400",
        "type": "object",
        "properties": {
          "status": {
            "format": "int32",
            "description": "HTTP status code",
            "type": "integer",
            "example": 400
          },
          "code": {
            "type": "string",
            "enum": [
              "bad_request",
              "provider_error"
            ],
            "example": "bad_request"
          },
          "log_id": {
            "allOf": [
              {
                "$ref": "#/components/schemas/IdentifierUuidV4"
              },
              {
                "description": "Log unique identifier"
              }
            ]
          },
          "errors": {
            "description": "Errors returned",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/APIResponse400Error"
            }
          }
        }
      },
      "APIResponse400Error": {
        "title": "API Response 400 Error",
        "description": "API Response 400 Error description",
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "enum": [
              "bad_request",
              "customer_unknown",
              "account_unknown",
              "session_id_invalid_or_expired",
              "invalid_field",
              "mandatory_field_missing",
              "invalid_debited_account"
            ],
            "example": "bad_request"
          },
          "title": {
            "description": "Title message",
            "type": "string",
            "example": "Bad request"
          },
          "message": {
            "description": "Error message",
            "type": "string",
            "example": "Invalid parameters or malformed syntax."
          }
        }
      },
      "APIResponse401": {
        "title": "401 API Response",
        "description": "Definition of the standard API reponse when a 401",
        "type": "object",
        "properties": {
          "status": {
            "format": "int32",
            "description": "HTTP status code",
            "type": "integer",
            "example": 401
          },
          "code": {
            "type": "string",
            "enum": [
              "unauthorized"
            ],
            "example": "unauthorized"
          },
          "log_id": {
            "allOf": [
              {
                "$ref": "#/components/schemas/IdentifierUuidV4"
              },
              {
                "description": "Log unique identifier"
              }
            ]
          },
          "errors": {
            "description": "Errors returned",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/APIResponse401Error"
            }
          }
        }
      },
      "APIResponse401Error": {
        "title": "API Response 401 Error",
        "description": "API Response 401 Error description",
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "enum": [
              "invalid_token",
              "invalid_scopes",
              "invalid_code",
              "invalid_app_id",
              "invalid_app_url"
            ],
            "example": "bad_request"
          },
          "title": {
            "description": "Title message",
            "type": "string",
            "example": "Invalid token"
          },
          "message": {
            "description": "Error message",
            "type": "string",
            "example": "The token is either invalid or expired."
          }
        }
      },
      "APIResponse403": {
        "title": "403 API Response",
        "description": "Definition of the standard API reponse when a 403",
        "type": "object",
        "properties": {
          "status": {
            "format": "int32",
            "description": "HTTP status code",
            "type": "integer",
            "example": 403
          },
          "code": {
            "type": "string",
            "enum": [
              "forbidden"
            ],
            "example": "forbidden"
          },
          "log_id": {
            "allOf": [
              {
                "$ref": "#/components/schemas/IdentifierUuidV4"
              },
              {
                "description": "Log unique identifier"
              }
            ]
          },
          "errors": {
            "description": "Errors returned",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/APIResponse403Error"
            }
          }
        }
      },
      "APIResponse403Error": {
        "title": "API Response 403 Error",
        "description": "API Response 403 Error description",
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "enum": [
              "forbidden"
            ],
            "example": "forbidden"
          },
          "title": {
            "description": "Title message",
            "type": "string",
            "example": "Forbidden"
          },
          "message": {
            "description": "Error message",
            "type": "string",
            "example": "Access Forbidden."
          }
        }
      },
      "APIResponse404": {
        "title": "404 API Response",
        "description": "Definition of the standard API reponse when a 404",
        "type": "object",
        "properties": {
          "status": {
            "format": "int32",
            "description": "HTTP status code",
            "type": "integer",
            "example": 404
          },
          "code": {
            "type": "string",
            "enum": [
              "not_found"
            ],
            "example": "not_found"
          },
          "log_id": {
            "allOf": [
              {
                "$ref": "#/components/schemas/IdentifierUuidV4"
              },
              {
                "description": "Log unique identifier"
              }
            ]
          },
          "errors": {
            "description": "Errors returned",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/APIResponse404Error"
            }
          }
        }
      },
      "APIResponse404Error": {
        "title": "API Response 404 Error",
        "description": "API Response 404 Error description",
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "enum": [
              "not_found"
            ],
            "example": "not_found"
          },
          "title": {
            "description": "Title message",
            "type": "string",
            "example": "Not found"
          },
          "message": {
            "description": "Error message",
            "type": "string",
            "example": "The requested resource could not be found. The requested resource either does not exist or is temporarily down."
          }
        }
      },
      "APIResponse406": {
        "title": "406 API Response",
        "description": "Definition of the standard API reponse when a 406",
        "type": "object",
        "properties": {
          "status": {
            "format": "int32",
            "description": "HTTP status confirmation",
            "type": "integer",
            "example": 406
          },
          "code": {
            "type": "string",
            "enum": [
              "ERR_NOT_ACCEPTABLE"
            ],
            "example": "ERR_NOT_ACCEPTABLE"
          },
          "log_id": {
            "allOf": [
              {
                "$ref": "#/components/schemas/IdentifierUuidV4"
              },
              {
                "description": "Log unique identifier"
              }
            ]
          },
          "errors": {
            "description": "Errors returned",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/APIResponse406Error"
            }
          }
        }
      },
      "APIResponse406Error": {
        "title": "API Response 406 Error",
        "description": "API Response 406 Error description",
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "enum": [
              "SCHEMA_VALIDATION_ERROR"
            ],
            "example": "SCHEMA_VALIDATION_ERROR"
          },
          "title": {
            "description": "Title message",
            "type": "string",
            "example": "Schema validation error"
          },
          "detail": {
            "description": "Error message",
            "type": "string",
            "example": "must NOT have fewer than 1 characters"
          }
        }
      },
      "APIResponse500": {
        "title": "500 API Response",
        "description": "Definition of the standard API reponse when a 500",
        "type": "object",
        "properties": {
          "status": {
            "format": "int32",
            "description": "HTTP status code",
            "type": "integer",
            "example": 500
          },
          "code": {
            "type": "string",
            "enum": [
              "internal_server_error"
            ],
            "example": "internal_server_error"
          },
          "log_id": {
            "allOf": [
              {
                "$ref": "#/components/schemas/IdentifierUuidV4"
              },
              {
                "description": "Log unique identifier"
              }
            ]
          },
          "errors": {
            "description": "Errors returned",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/APIResponse500Error"
            }
          }
        }
      },
      "APIResponse500Error": {
        "title": "API Response 500 Error",
        "description": "API Response 500 Error description",
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "enum": [
              "internal_server_error"
            ],
            "example": "internal_server_error"
          },
          "title": {
            "description": "Title message",
            "type": "string",
            "example": "Internal Server Error"
          },
          "message": {
            "description": "Error message",
            "type": "string",
            "example": "An internal error has occurred. If the error persists, please contact our support."
          }
        }
      },
      "DateRfc2822": {
        "title": "Date in rfc 2822 format",
        "description": "Date as described in rfc 2822 format",
        "type": "string",
        "example": "Thu, 18 Jun 2020 18:14:15 GMT"
      },
      "IdentifierUuidV4": {
        "title": "UUID V4 identifier",
        "description": "UUID V4 identifier",
        "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
        "type": "string",
        "example": "dc5b0048-2a80-4a22-b2f9-fad7d72f074d"
      },
      "MembershipCreateRequest": {
        "type": "object",
        "required": [
          "data"
        ],
        "additionalProperties": false,
        "properties": {
          "meta": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "with_invitation": {
                "type": "boolean",
                "description": "If set to true, an invitation email will be sent to the user"
              }
            }
          },
          "data": {
            "type": "object",
            "required": [
              "type",
              "attributes",
              "relationships"
            ],
            "additionalProperties": false,
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "memberships"
                ]
              },
              "attributes": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "role",
                  "status"
                ],
                "properties": {
                  "role": {
                    "type": "string",
                    "description": "User role within the company or organisation node",
                    "enum": [
                      "admin",
                      "operator",
                      "developer",
                      "sales",
                      "accountant",
                      "viewer",
                      "limited_accountant"
                    ]
                  },
                  "status": {
                    "type": "string",
                    "description": "Membership status",
                    "enum": [
                      "active",
                      "waiting",
                      "deleted"
                    ]
                  },
                  "notifications": {
                    "type": "array",
                    "description": "Notification preferences for this membership. `payer_email_copy` (a BCC copy of the emails sent to the payers) is disabled by default and filters by payment origin with `pay_by_bank`, `created_by_me` and `created_by_others`, like the other notification types; the remaining flags do not apply to it.",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "manual_transfer",
                            "incoming_payment",
                            "payer_email_copy"
                          ]
                        },
                        "pay_by_bank": {
                          "type": "boolean"
                        },
                        "created_by_me": {
                          "type": "boolean"
                        },
                        "created_by_others": {
                          "type": "boolean"
                        },
                        "received_not_by_fintecture": {
                          "type": "boolean"
                        },
                        "partial_payment": {
                          "type": "boolean"
                        }
                      }
                    }
                  }
                }
              },
              "relationships": {
                "type": "object",
                "description": "Must include user and exactly one of: company or organisation_node",
                "additionalProperties": false,
                "required": [
                  "user"
                ],
                "properties": {
                  "company": {
                    "type": "object",
                    "required": [
                      "data"
                    ],
                    "additionalProperties": false,
                    "description": "If membership is link to a company, cannot be linked to an organisation node",
                    "properties": {
                      "data": {
                        "type": "object",
                        "required": [
                          "type",
                          "id"
                        ],
                        "additionalProperties": false,
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "companies"
                            ]
                          },
                          "id": {
                            "type": "string",
                            "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
                          }
                        }
                      }
                    }
                  },
                  "organisation_node": {
                    "type": "object",
                    "required": [
                      "data"
                    ],
                    "additionalProperties": false,
                    "description": "If membership is link to an organisation node, cannot be linked to a company",
                    "properties": {
                      "data": {
                        "type": "object",
                        "required": [
                          "type",
                          "id"
                        ],
                        "additionalProperties": false,
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "organisation_nodes"
                            ]
                          },
                          "id": {
                            "type": "string",
                            "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
                          }
                        }
                      }
                    }
                  },
                  "user": {
                    "type": "object",
                    "required": [
                      "data"
                    ],
                    "additionalProperties": false,
                    "properties": {
                      "data": {
                        "type": "object",
                        "required": [
                          "type",
                          "id"
                        ],
                        "additionalProperties": false,
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "users"
                            ]
                          },
                          "id": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "MembershipResourceBase": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "id",
          "attributes"
        ],
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "memberships"
            ],
            "description": "The type of the resource object, always 'memberships' for this schema"
          },
          "id": {
            "type": "string",
            "description": "The unique identifier (UUID) of the membership object",
            "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
          },
          "attributes": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "role": {
                "type": "string",
                "description": "User role within the company or organisation node",
                "enum": [
                  "admin",
                  "operator",
                  "developer",
                  "sales",
                  "accountant",
                  "viewer",
                  "limited_accountant"
                ]
              },
              "status": {
                "type": "string",
                "description": "Membership status",
                "enum": [
                  "active",
                  "waiting",
                  "deleted"
                ]
              },
              "notifications": {
                "type": "array",
                "description": "Notification preferences for this membership",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "type": {
                      "type": "string",
                      "enum": [
                        "manual_transfer",
                        "incoming_payment",
                        "payer_email_copy"
                      ]
                    },
                    "pay_by_bank": {
                      "type": "boolean"
                    },
                    "created_by_me": {
                      "type": "boolean"
                    },
                    "created_by_others": {
                      "type": "boolean"
                    },
                    "received_not_by_fintecture": {
                      "type": "boolean"
                    },
                    "partial_payment": {
                      "type": "boolean"
                    }
                  }
                }
              },
              "company_id": {
                "type": "string",
                "nullable": true,
                "description": "UUID of the company this membership belongs to. Mutually exclusive with organisation_node_id.",
                "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
              },
              "organisation_node_id": {
                "type": "string",
                "nullable": true,
                "description": "UUID of the organisation node this membership belongs to. Mutually exclusive with company_id.",
                "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
              },
              "invitation_link": {
                "type": "string",
                "description": "Console onboarding link for this membership. Returned when creating the membership (POST /v1/users with a membership, POST /v1/memberships) and on GET /v1/users?include=memberships and GET /v1/users/{user_id}?include=memberships while the invitation is still pending. Omitted once the invitation is accepted. The raw invitation token is never exposed."
              }
            }
          }
        }
      }
    },
    "securitySchemes": {
      "OAuth2Oac": {
        "type": "oauth2",
        "x-default": "<ACCESS TOKEN>",
        "description": "OAC (Organisation Access Credentials — ⚠️ Beta) access token, sent as `Authorization: Bearer {access_token}`.\n\nObtain it from `POST /oauth/accesstoken` with `grant_type=client_credentials`, authenticating with the OAC `client_id` and `client_secret` as Basic credentials (`Basic base64({client_id}:{client_secret})`). The token is valid for 1 hour. See the [OAC guide](https://doc.fintecture.com/docs/request-an-oac-access-token).\n\nThe token only grants the scopes requested when it was created; each endpoint declares the scopes it requires.\n",
        "flows": {
          "clientCredentials": {
            "tokenUrl": "/oauth/accesstoken",
            "scopes": {
              "organisations:read": "Read access to organisation nodes",
              "organisations:write": "Write access to organisation nodes",
              "companies:read": "Read access to companies",
              "companies:write": "Write access to companies",
              "users:read": "Read access to users and memberships",
              "users:write": "Write access to users and memberships",
              "applications:read": "Read access to applications",
              "applications:write": "Write access to applications",
              "bank_accounts:read": "Read access to bank accounts",
              "bank_accounts:write": "Write access to bank accounts"
            }
          }
        }
      }
    }
  }
}
```