> ## Documentation Index
> Fetch the complete documentation index at: https://help.vori.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create an employee

> Creates an employee who can sign in at the point of sale and be credited for the orders they ring up.



## OpenAPI

````yaml /api/openapi.json post /v1/employees
openapi: 3.0.0
info:
  title: Vori API
  description: ''
  version: 1.0.0
  contact: {}
servers:
  - url: https://api.vori.com
    description: production
security: []
tags: []
paths:
  /v1/employees:
    post:
      tags:
        - Employees
      summary: Create an employee
      description: >-
        Creates an employee who can sign in at the point of sale and be credited
        for the orders they ring up.
      operationId: createEmployee
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateEmployeeRequest'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Employee'
        '400':
          description: ''
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/PinAlreadyAssignedError'
                  - $ref: '#/components/schemas/BarcodeAlreadyAssignedError'
                  - $ref: '#/components/schemas/EmailAddressAlreadyAssignedError'
                  - $ref: >-
                      #/components/schemas/MissingCredentialsForAuthenticationRuleError
                  - $ref: '#/components/schemas/InvalidAuthenticationRuleError'
                  - $ref: '#/components/schemas/InvalidEmployeeRoleError'
                  - $ref: '#/components/schemas/InvalidStoreError'
                  - $ref: '#/components/schemas/DeactivatedEmployeeCredentialsError'
        '403':
          description: ''
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/InsufficientPermissionsError'
                  - $ref: '#/components/schemas/NoBannerAssociationError'
      security:
        - bearer: []
components:
  schemas:
    CreateEmployeeRequest:
      type: object
      properties:
        authentication_rule:
          nullable: true
          default: null
          description: >-
            How the employee signs in at the point of sale, or null to sign in
            with a PIN. Every method the rule names must have its credential set
            on the employee.
          allOf:
            - $ref: '#/components/schemas/AuthenticationRule'
        badge_barcode:
          type: string
          nullable: true
          default: null
          description: >-
            Barcode on the badge the employee scans to sign in at the point of
            sale, or null for none. Unique within the banner. A deactivated
            employee cannot hold one unless the same request reactivates them.
        email_address:
          type: string
          nullable: true
          default: null
          description: >-
            Employee's email address, or null for none. Unique within the
            banner.
          format: email
          maxLength: 254
        first_name:
          type: string
          description: Employee's first name.
        last_name:
          type: string
          description: Employee's last name.
        pin:
          type: string
          nullable: true
          default: null
          minLength: 6
          maxLength: 6
          description: >-
            Numeric PIN the employee enters to sign in at the point of sale, or
            null for none. Six digits, and unique within the banner. A
            deactivated employee cannot hold one unless the same request
            reactivates them.
          pattern: ^[0-9]+$
        roles:
          description: >-
            Roles the employee holds. Supplying this replaces every role the
            employee holds.
          maxItems: 200
          type: array
          items:
            $ref: '#/components/schemas/UpdateEmployeeRole'
      description: Values for creating an employee.
      required:
        - first_name
        - last_name
    Employee:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the record.
        authentication_rule:
          nullable: true
          description: >-
            Effective rule that determines how the employee authenticates at the
            POS.
          allOf:
            - $ref: '#/components/schemas/AuthenticationRule'
        badge_barcode:
          type: string
          nullable: true
          description: >-
            Barcode on the badge the employee scans to sign in at the point of
            sale, or null when none is configured. Returned only when requested
            with `include=badge_barcode` by a caller holding the
            `employees:read_credentials` permission, and absent from the
            response otherwise.
        created_at:
          type: string
          description: When the record was created.
          format: date-time
        deactivated_at:
          type: string
          nullable: true
          description: >-
            When the employee was deactivated, or null when the employee is
            active.
          format: date-time
        editable:
          type: boolean
          description: >-
            Whether the employee can be changed. Employees Vori creates and
            manages are not editable.
        email_address:
          type: string
          nullable: true
          description: Employee's email address, or null when none is configured.
          format: email
          maxLength: 254
        first_name:
          type: string
          description: Employee's first name.
        last_name:
          type: string
          description: Employee's last name.
        pin:
          type: string
          nullable: true
          minLength: 6
          maxLength: 6
          description: >-
            Numeric PIN used by the employee for POS authentication, or null
            when none is configured. Returned only when requested with
            `include=pin` by a caller holding the `employees:read_credentials`
            permission, and absent from the response otherwise.
          pattern: ^[0-9]+$
        roles:
          description: Roles assigned to the employee.
          type: array
          items:
            $ref: '#/components/schemas/EmployeeRole'
        updated_at:
          type: string
          description: When the record was last changed.
          format: date-time
        virtual:
          type: boolean
          description: >-
            Whether the employee exists only to attribute orders and cannot sign
            in at a terminal.
      description: >-
        A staff member at a store, to whom point-of-sale activity can be
        attributed.
      required:
        - id
        - authentication_rule
        - created_at
        - deactivated_at
        - editable
        - email_address
        - first_name
        - last_name
        - roles
        - updated_at
        - virtual
    PinAlreadyAssignedError:
      type: object
      properties:
        error_code:
          type: string
          enum:
            - pin_already_assigned
      required:
        - error_code
    BarcodeAlreadyAssignedError:
      type: object
      properties:
        error_code:
          type: string
          enum:
            - barcode_already_assigned
      required:
        - error_code
    EmailAddressAlreadyAssignedError:
      type: object
      properties:
        error_code:
          type: string
          enum:
            - email_address_already_assigned
      required:
        - error_code
    MissingCredentialsForAuthenticationRuleError:
      type: object
      properties:
        error_code:
          type: string
          enum:
            - missing_credentials_for_authentication_rule
      required:
        - error_code
    InvalidAuthenticationRuleError:
      type: object
      properties:
        error_code:
          type: string
          enum:
            - invalid_authentication_rule
      required:
        - error_code
    InvalidEmployeeRoleError:
      type: object
      properties:
        error_code:
          type: string
          enum:
            - invalid_employee_role
      required:
        - error_code
    InvalidStoreError:
      type: object
      properties:
        error_code:
          type: string
          enum:
            - invalid_store
      required:
        - error_code
    DeactivatedEmployeeCredentialsError:
      type: object
      properties:
        error_code:
          type: string
          enum:
            - deactivated_employee_credentials
      required:
        - error_code
    InsufficientPermissionsError:
      type: object
      properties:
        error_code:
          type: string
          enum:
            - insufficient_permissions
        error_details:
          $ref: '#/components/schemas/InsufficientPermissionsErrorDetails'
      required:
        - error_code
        - error_details
    NoBannerAssociationError:
      type: object
      properties:
        error_code:
          type: string
          enum:
            - no_banner_association
      required:
        - error_code
    AuthenticationRule:
      type: object
      properties:
        methods:
          type: array
          minItems: 1
          description: >-
            The credentials the employee presents to sign in. Never empty, and
            every method named must have its credential set on the employee,
            whichever operator the rule uses.
          items:
            $ref: '#/components/schemas/AuthenticationMethod'
        operator:
          description: >-
            How the methods combine: `and` requires every one of them, `or`
            requires any one of them.
          allOf:
            - $ref: '#/components/schemas/AuthenticationRuleOperator'
      description: >-
        How an employee proves their identity at the point of sale. An active
        employee with no rule of their own authenticates with a PIN.
      required:
        - methods
        - operator
    UpdateEmployeeRole:
      type: object
      properties:
        name:
          description: The role to grant.
          allOf:
            - $ref: '#/components/schemas/AssignableRoleName'
        store_id:
          type: string
          nullable: true
          description: >-
            The store the role applies at, or null to apply it at every store in
            the banner.
          pattern: ^[0-9]+$
      description: A role to grant an employee, and the store it applies at.
      required:
        - name
    EmployeeRole:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the role that is held.
        name:
          description: Name of the role.
          allOf:
            - $ref: '#/components/schemas/RoleName'
        store_id:
          type: string
          nullable: true
          description: >-
            The store the role applies at, or null when it applies at every
            store in the banner.
      description: >-
        A role held by an employee, and the store it applies at. The same role
        can be held at more than one store.
      required:
        - id
        - name
        - store_id
    InsufficientPermissionsErrorDetails:
      type: object
      properties:
        action:
          allOf:
            - $ref: '#/components/schemas/Action'
        resource:
          allOf:
            - $ref: '#/components/schemas/Resource'
      required:
        - action
        - resource
    AuthenticationMethod:
      type: string
      enum:
        - barcode
        - pin
    AuthenticationRuleOperator:
      type: string
      enum:
        - and
        - or
    AssignableRoleName:
      type: string
      enum:
        - manager
    RoleName:
      type: string
      enum:
        - everyone
        - manager
    Action:
      type: string
      enum:
        - '*'
        - cancel
        - check_in
        - create
        - delete
        - read
        - read_credentials
        - record_events
        - refund
        - restart
        - update
        - void
    Resource:
      type: string
      enum:
        - '*'
        - accounting_integration
        - agent_chats
        - api_clients
        - asynchronous_tasks
        - banners
        - blackhawk_transactions
        - capabilities
        - coupons
        - custom_quick_actions
        - datacap_transactions
        - departments
        - discounts
        - ditto_auth_tokens
        - edge_agents
        - electronic_shelf_labels
        - employees
        - files
        - food_modifiers
        - gift_cards
        - gl_code_mappings
        - house_accounts
        - inventory
        - inventory_sessions
        - inventory_settings
        - invoices
        - item_modifiers
        - label_dimension_sets
        - label_sheet_profiles
        - label_stock_products
        - lanes
        - loyalty_bonuses
        - loyalty_campaigns
        - loyalty_rewards
        - notification_templates
        - offers
        - order_guides
        - pos_banner_configurations
        - pos_orders
        - pos_tills
        - price_tags
        - product_ranges
        - products
        - promotions
        - purchase_orders
        - receiving
        - reporting
        - revision_sessions
        - revisions
        - roles
        - shopper_tags
        - shoppers
        - store_product_inventory_counts
        - store_product_lots
        - store_product_rules
        - store_product_tag_templates
        - store_snap_incentive_program_coupons
        - store_vendor_merge_requests
        - store_vendor_product_merge_requests
        - store_vendor_products
        - store_vendors
        - stores
        - tag_printings
        - tag_template_presets
        - tag_templates
        - tax_rates
        - users
        - variable_weights
        - vendor_merge_requests
        - vendor_product_merge_requests
        - vendors
        - wallet_payments
        - wic_products
  securitySchemes:
    bearer:
      type: http
      scheme: bearer

````

## Related topics

- [Create transactions](/api/create-transactions.md)
- [Retrieve an employee](/api-reference/employees/retrieve-an-employee.md)
- [List employees](/api-reference/employees/list-employees.md)
