Unleash Public signup tokens API

Create, update, and delete [Unleash Public Signup tokens](https://docs.getunleash.io/concepts/public-signup-tokens).

OpenAPI Specification

unleash-public-signup-tokens-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Unleash Admin Addons Public signup tokens API
  version: 7.4.1
  description: Create, update, and delete [Unleash addons](https://docs.getunleash.io/addons).
servers:
- url: https://app.unleash-instance.example.com
  description: Your Unleash instance (replace with your actual URL)
security:
- apiKey: []
- bearerToken: []
tags:
- name: Public signup tokens
  description: Create, update, and delete [Unleash Public Signup tokens](https://docs.getunleash.io/concepts/public-signup-tokens).
paths:
  /invite/{token}/validate:
    get:
      tags:
      - Public signup tokens
      operationId: validatePublicSignupToken
      summary: Validate Signup Token
      description: Check whether the provided public sign-up token exists, has not expired and is enabled
      responses:
        '200':
          description: This response has no body.
        '400':
          description: The request data does not match what we expect.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    example: 9c40958a-daac-400e-98fb-3bb438567008
                    description: The ID of the error instance
                  name:
                    type: string
                    example: ValidationError
                    description: The name of the error kind
                  message:
                    type: string
                    example: The request payload you provided doesn't conform to the schema. The .parameters property should be object. You sent [].
                    description: A description of what went wrong.
      parameters:
      - name: token
        in: path
        required: true
        schema:
          type: string
  /invite/{token}/signup:
    post:
      tags:
      - Public signup tokens
      operationId: addPublicSignupTokenUser
      summary: Add a User Via a Signup Token
      description: Create a user with the viewer root role and link them to the provided signup token
      requestBody:
        description: createInvitedUserSchema
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/createInvitedUserSchema'
      responses:
        '200':
          description: userSchema
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/userSchema'
        '400':
          description: The request data does not match what we expect.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    example: 9c40958a-daac-400e-98fb-3bb438567008
                    description: The ID of the error instance
                  name:
                    type: string
                    example: ValidationError
                    description: The name of the error kind
                  message:
                    type: string
                    example: The request payload you provided doesn't conform to the schema. The .parameters property should be object. You sent [].
                    description: A description of what went wrong.
        '409':
          description: The provided resource can not be created or updated because it would conflict with the current state of the resource or with an already existing resource, respectively.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    example: 9c40958a-daac-400e-98fb-3bb438567008
                    description: The ID of the error instance
                  name:
                    type: string
                    example: NameExistsError
                    description: The name of the error kind
                  message:
                    type: string
                    example: There is already a feature called "my-awesome-feature".
                    description: A description of what went wrong.
      parameters:
      - name: token
        in: path
        required: true
        schema:
          type: string
  /api/admin/invite-link/tokens:
    get:
      tags:
      - Public signup tokens
      summary: Get Public Signup Tokens
      description: Retrieves all existing public signup tokens.
      operationId: getAllPublicSignupTokens
      responses:
        '200':
          description: publicSignupTokensSchema
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/publicSignupTokensSchema'
    post:
      tags:
      - Public signup tokens
      operationId: createPublicSignupToken
      summary: Create a Public Signup Token
      description: Lets administrators create a invite link to share with colleagues.  People that join using the public invite are assigned the `Viewer` role
      requestBody:
        description: publicSignupTokenCreateSchema
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/publicSignupTokenCreateSchema'
      responses:
        '201':
          headers:
            location:
              description: The location of the newly created resource.
              schema:
                type: string
                format: uri
          description: The resource was successfully created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/publicSignupTokenSchema'
        '400':
          description: The request data does not match what we expect.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    example: 9c40958a-daac-400e-98fb-3bb438567008
                    description: The ID of the error instance
                  name:
                    type: string
                    example: ValidationError
                    description: The name of the error kind
                  message:
                    type: string
                    example: The request payload you provided doesn't conform to the schema. The .parameters property should be object. You sent [].
                    description: A description of what went wrong.
        '401':
          description: Authorization information is missing or invalid. Provide a valid API token as the `authorization` header, e.g. `authorization:*.*.my-admin-token`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    example: 9c40958a-daac-400e-98fb-3bb438567008
                    description: The ID of the error instance
                  name:
                    type: string
                    example: AuthenticationRequired
                    description: The name of the error kind
                  message:
                    type: string
                    example: You must log in to use Unleash. Your request had no authorization header, so we could not authorize you. Try logging in at /auth/simple/login.
                    description: A description of what went wrong.
        '403':
          description: The provided user credentials are valid, but the user does not have the necessary permissions to perform this operation
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    example: 9c40958a-daac-400e-98fb-3bb438567008
                    description: The ID of the error instance
                  name:
                    type: string
                    example: NoAccessError
                    description: The name of the error kind
                  message:
                    type: string
                    example: You need the "UPDATE_ADDON" permission to perform this action in the "development" environment.
                    description: A description of what went wrong.
  /api/admin/invite-link/tokens/{token}:
    get:
      tags:
      - Public signup tokens
      summary: Retrieve a Token
      description: Get information about a specific token. The `:token` part of the URL should be the token's secret.
      operationId: getPublicSignupToken
      responses:
        '200':
          description: publicSignupTokenSchema
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/publicSignupTokenSchema'
        '401':
          description: Authorization information is missing or invalid. Provide a valid API token as the `authorization` header, e.g. `authorization:*.*.my-admin-token`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    example: 9c40958a-daac-400e-98fb-3bb438567008
                    description: The ID of the error instance
                  name:
                    type: string
                    example: AuthenticationRequired
                    description: The name of the error kind
                  message:
                    type: string
                    example: You must log in to use Unleash. Your request had no authorization header, so we could not authorize you. Try logging in at /auth/simple/login.
                    description: A description of what went wrong.
        '403':
          description: The provided user credentials are valid, but the user does not have the necessary permissions to perform this operation
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    example: 9c40958a-daac-400e-98fb-3bb438567008
                    description: The ID of the error instance
                  name:
                    type: string
                    example: NoAccessError
                    description: The name of the error kind
                  message:
                    type: string
                    example: You need the "UPDATE_ADDON" permission to perform this action in the "development" environment.
                    description: A description of what went wrong.
      parameters:
      - name: token
        in: path
        required: true
        schema:
          type: string
    put:
      tags:
      - Public signup tokens
      operationId: updatePublicSignupToken
      summary: Update a Public Signup Token
      description: Update information about a specific token. The `:token` part of the URL should be the token's secret.
      requestBody:
        description: publicSignupTokenUpdateSchema
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/publicSignupTokenUpdateSchema'
      responses:
        '200':
          description: publicSignupTokenSchema
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/publicSignupTokenSchema'
        '400':
          description: The request data does not match what we expect.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    example: 9c40958a-daac-400e-98fb-3bb438567008
                    description: The ID of the error instance
                  name:
                    type: string
                    example: ValidationError
                    description: The name of the error kind
                  message:
                    type: string
                    example: The request payload you provided doesn't conform to the schema. The .parameters property should be object. You sent [].
                    description: A description of what went wrong.
        '401':
          description: Authorization information is missing or invalid. Provide a valid API token as the `authorization` header, e.g. `authorization:*.*.my-admin-token`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    example: 9c40958a-daac-400e-98fb-3bb438567008
                    description: The ID of the error instance
                  name:
                    type: string
                    example: AuthenticationRequired
                    description: The name of the error kind
                  message:
                    type: string
                    example: You must log in to use Unleash. Your request had no authorization header, so we could not authorize you. Try logging in at /auth/simple/login.
                    description: A description of what went wrong.
        '403':
          description: The provided user credentials are valid, but the user does not have the necessary permissions to perform this operation
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    example: 9c40958a-daac-400e-98fb-3bb438567008
                    description: The ID of the error instance
                  name:
                    type: string
                    example: NoAccessError
                    description: The name of the error kind
                  message:
                    type: string
                    example: You need the "UPDATE_ADDON" permission to perform this action in the "development" environment.
                    description: A description of what went wrong.
      parameters:
      - name: token
        in: path
        required: true
        schema:
          type: string
components:
  schemas:
    publicSignupTokensSchema:
      type: object
      description: A wrapper object containing all the public signup tokens
      additionalProperties: false
      required:
      - tokens
      properties:
        tokens:
          type: array
          description: An array of all the public signup tokens
          example:
          - secret: a3c84b25409ea8ca1782ef17f94a42fc
            url: https://my_unleash_instance/new-user?invite=a3c84b25409ea8ca1782ef17f94a42fc
            name: Invite public viewers
            enabled: false
            expiresAt: '2023-04-12T11:13:31.960Z'
            createdAt: '2023-04-12T11:13:31.960Z'
            createdBy: someone
            users: null
            role:
              id: 3
              type: root
              name: Viewer
          items:
            $ref: '#/components/schemas/publicSignupTokenSchema'
    publicSignupTokenCreateSchema:
      type: object
      description: Used for creating a [public invite link](https://docs.getunleash.io/concepts/public-signup#public-sign-up-tokens)
      additionalProperties: false
      required:
      - name
      - expiresAt
      properties:
        name:
          description: The token's name.
          type: string
        expiresAt:
          type: string
          description: The token's expiration date.
          format: date-time
    createInvitedUserSchema:
      type: object
      additionalProperties: false
      required:
      - email
      - name
      - password
      description: Data used to create a user that has been invited to Unleash.
      properties:
        username:
          type: string
          description: The user's username. Must be unique if provided.
          example: Hunter
        email:
          type: string
          description: The invited user's email address
          example: hunter@example.com
        name:
          type: string
          description: The user's name
          example: Hunter Burgan
        password:
          type: string
          description: The user's password
          example: hunter2
    publicSignupTokenUpdateSchema:
      description: Used by Unleash for updating a token's expiration date or, when deleting the invite link, it's status
      type: object
      additionalProperties: false
      properties:
        expiresAt:
          type: string
          description: The token's expiration date.
          format: date-time
          example: '2023-04-11T15:46:56Z'
        enabled:
          description: Whether the token is active or not.
          type: boolean
          example: true
    userSchema:
      type: object
      additionalProperties: false
      description: An Unleash user
      required:
      - id
      properties:
        id:
          description: The user id
          type: integer
          example: 123
        name:
          description: Name of the user
          type: string
          example: User
          nullable: true
        email:
          description: Email of the user
          type: string
          example: user@example.com
        username:
          description: A unique username for the user
          type: string
          example: hunter
          nullable: true
        imageUrl:
          description: URL used for the user profile image
          type: string
          example: https://example.com/242x200.png
        inviteLink:
          description: If the user is actively inviting other users, this is the link that can be shared with other users
          type: string
          example: http://localhost:4242/invite-link/some-secret
        loginAttempts:
          description: How many unsuccessful attempts at logging in has the user made
          type: integer
          minimum: 0
          example: 3
        emailSent:
          description: Is the welcome email sent to the user or not
          type: boolean
          example: false
        rootRole:
          description: Which [root role](https://docs.getunleash.io/concepts/rbac#predefined-roles) this user is assigned
          type: integer
          example: 1
          minimum: 0
        seenAt:
          description: The last time this user logged in
          type: string
          format: date-time
          nullable: true
          example: '2023-06-30T11:42:00.345Z'
        createdAt:
          description: The user was created at this time
          type: string
          format: date-time
          example: '2023-06-30T11:41:00.123Z'
        accountType:
          description: A user is either an actual User or a Service Account
          type: string
          enum:
          - User
          - Service Account
          example: User
        permissions:
          description: Deprecated
          type: array
          items:
            type: string
        scimId:
          description: The SCIM ID of the user, only present if managed by SCIM
          type: string
          nullable: true
          example: 01HTMEXAMPLESCIMID7SWWGHN6
        seatType:
          description: The seat type of this user
          type: string
          nullable: true
          example: Regular
        activeSessions:
          description: Count of active browser sessions for this user
          type: integer
          nullable: true
          example: 2
        deletedSessions:
          description: Experimental. The number of deleted browser sessions after last login
          type: number
          example: 1
    roleSchema:
      type: object
      description: A role holds permissions to allow Unleash to decide what actions a role holder is allowed to perform
      additionalProperties: false
      required:
      - id
      - type
      - name
      properties:
        id:
          type: integer
          description: The role id
          example: 9
          minimum: 0
        type:
          description: A role can either be a global root role (applies to all projects) or a project role
          type: string
          example: root
        name:
          description: The name of the role
          type: string
          example: Editor
        description:
          description: A more detailed description of the role and what use it's intended for
          type: string
          example: Users with the editor role have access to most features in Unleash but can not manage users and roles in the global scope. Editors will be added as project owners when creating projects and get superuser rights within the context of these projects. Users with the editor role will also get access to most permissions on the default project by default.
        project:
          description: What project the role belongs to
          type: string
          nullable: true
          example: default
    publicSignupTokenSchema:
      description: Used for transporting a [public invite link](https://docs.getunleash.io/concepts/public-signup#public-sign-up-tokens)
      type: object
      additionalProperties: false
      required:
      - secret
      - url
      - name
      - expiresAt
      - createdAt
      - createdBy
      - enabled
      - role
      properties:
        secret:
          description: The actual value of the token. This is the part that is used by Unleash to create an invite link
          type: string
          example: a3c84b25409ea8ca1782ef17f94a42fc
        url:
          description: The public signup link for the token. Users who follow this link will be taken to a signup page where they can create an Unleash user.
          type: string
          nullable: true
          example: https://sandbox.getunleash.io/enterprise/new-user?invite=a3c84b25409ea8ca1782ef17f94a42fc
        name:
          description: The token's name. Only for displaying in the UI
          type: string
          example: Invite public viewers
        enabled:
          description: Whether the token is active. This property will always be `false` for a token that has expired.
          type: boolean
          example: true
        expiresAt:
          type: string
          description: The time when the token will expire.
          format: date-time
          example: '2023-04-12T11:13:31.960Z'
        createdAt:
          type: string
          format: date-time
          description: When the token was created.
          example: '2023-04-12T11:13:31.960Z'
        createdBy:
          description: The creator's email or username
          example: someone@example.com
          type: string
          nullable: true
        users:
          type: array
          description: Array of users that have signed up using the token.
          items:
            $ref: '#/components/schemas/userSchema'
          nullable: true
        role:
          description: Users who sign up using this token will be given this role.
          $ref: '#/components/schemas/roleSchema'
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: Authorization
      description: API key needed to access this API
    bearerToken:
      type: http
      scheme: bearer
      description: API key needed to access this API, in Bearer token format