Pulse Software Sync API API

API for handling synchronisation data from and/or to Pulse including for managing sync history records

OpenAPI Specification

pulse-software-sync-api-api-openapi.yml Raw ↑
swagger: '2.0'
info:
  title: Pulse Public Authentication Sync API API
  version: 1.0.1
  description: "The Pulse API is targeted towards developers looking to automate tasks in Pulse. \n\n# Authentication\nAll endpoints in Pulse require authentication.  Legacy endpoints require only a Private API Key, while all new endpoints incorporate JSON Web Tokens.  \n\n**API Key**\nTo consume a Pulse endpoint using API Key authentication, :\n  * Contact Pulse support at support@pulsesoftware.com to enable the Pulse Public API and issue your API key.\n  * Pass the API key in the **'x-Api-Key'** header with each request.\n\nNote: It is recommended to use a User Private API key where possible, rather than the Application Private Key. When using a User API key, functionality will be restricted based on the role of the User for which the API key was generated.  See API endpoint documentation for authorised roles. \n\n**JSON Web Token (JWT)**\nTo consume a Pulse endpoint using JWT authentication:\n  * Contact Pulse support at support@pulsesoftware.com to enable the Pulse Public API and issue your API key.\n  * Request a bearer token from /pulse/jwt, passing the API key in the **'x-Api-Key'** header with the request.\n  * Pass the token issued in the **'Authorization'** header of all requests as **'bearer [token]'**\n\n**Note** Tokens will expire 60 minutes after being issued, at which point your application will need to request a new token.\n\n# Requests\nThe Pulse API follows REST principles.  Data resources are accessed via standard HTTPS requests in UTF-8 format to an API endpoint. Where possible, Web API uses appropriate HTTP verbs for each action.\nHTTP Verbs:\n  * **GET** Retrieves resources\n  * **POST** Creates resources\n  * **PUT** Changes and/or replaces resources or collections\n  * **DELETE** Deletes resources\n\nThe Pulse API accepts the following ISO-8601 formats for date strings:\n  * Date, Time, Timezone: e.g. \"2021-06-02T21:39:18+00:00\"\n  * Date, Time: e.g. \"2021-06-02T21:39:18Z\"\n  * Date: e.g. \"2021-06-02\"\n\n# Responses\nPulse API returns all response data as a JSON object.  \n\n# Response Status Codes\nPulse API uses the following status codes:\n  * **200** OK - Request succeeded.  Result provided in response body.\n  * **400** Bad Request - Malformed syntax.  See message body for information.\n  * **401** Unauthorised - Missing authentication (API Key or JWT).\n  * **403** Forbidden - API user is not authorised to access requested resource.\n  * **404** Not Found - Request resource does not exist.\n\n# Support\nContact support@pulsesoftware.com for any queries or issues related to this API\n"
  termsOfService: http://www.apache.org/licenses/LICENSE-2.0.html
  contact:
    email: support@pulsesoftware.com
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
host: '*.pulsesoftware.com'
basePath: /webservices/api
schemes:
- https
- http
tags:
- name: Sync API
  description: API for handling synchronisation data from and/or to Pulse including for managing sync history records
paths:
  /security/PatchUserSync:
    post:
      security:
      - BearerJWT: []
      tags:
      - Sync API
      summary: Update user in Pulse
      description: 'Update user in Pulse based on userId provided in request body

        '
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - in: header
        name: x-api-key
        description: API key
        required: true
        type: string
      - in: body
        name: body
        description: User detail
        required: true
        schema:
          $ref: '#/definitions/UserSyncDTOs'
      responses:
        200:
          description: OK. Request completed successfully.
        401:
          description: Missing JWT Bearer token in the Authorization header or the given JWT token is invalid.
  /security/IntegrationSyncData:
    post:
      security:
      - BearerJWT: []
      tags:
      - Sync API
      summary: Store integration sync data in Pulse for history purpose
      description: 'Store integration sync data in Pulse for history purpose

        '
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - in: header
        name: x-api-key
        description: API key
        required: true
        type: string
      - in: body
        name: body
        description: Integration sync data
        required: true
        schema:
          $ref: '#/definitions/StoreSyncData'
      responses:
        200:
          description: OK. Request completed successfully. Returns the fileId of the logged sync data.
          schema:
            type: string
        401:
          description: Missing JWT Bearer token in the Authorization header or the given JWT token is invalid.
  /security/IntegrationSyncToPayrollLog:
    post:
      security:
      - BearerJWT: []
      tags:
      - Sync API
      summary: Add sync history in Pulse
      description: 'Add sync history in Pulse

        '
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - in: header
        name: x-api-key
        description: API key
        required: true
        type: string
      - in: body
        name: body
        description: Sync history data
        required: true
        schema:
          $ref: '#/definitions/AddIntegrationSyncToPayrollHistory'
      responses:
        200:
          description: OK. Request completed successfully. Returns the id of the sync history.
          schema:
            type: number
        401:
          description: Missing JWT Bearer token in the Authorization header or the given JWT token is invalid.
definitions:
  UserSyncDTOs:
    type: array
    items:
      $ref: '#/definitions/UserSyncDTO'
  AdditionalAttributesDTO:
    type: object
    properties:
      tabId:
        type: integer
        format: int32
      tabName:
        type: string
      attributeId:
        type: integer
        format: int32
      attributeName:
        type: string
      attributeValue:
        type: string
      attributeDataType:
        type: string
  StoreSyncData:
    type: object
    properties:
      jsonStringData:
        type: string
      folder:
        type: string
  AdditionalPositionsDTO:
    type: object
    properties:
      positionNo:
        type: string
      positionName:
        type: string
      positionStartDate:
        type: string
      positionEndDate:
        type: string
      positionDivision:
        type: string
      positionUnit:
        type: string
      positionSection:
        type: string
      positionSupervisor:
        type: string
      positionTeam:
        type: string
      positionIncumbentsAssigned:
        type: string
  ExternalUserSyncStatusDetailDTO:
    type: object
    properties:
      status:
        type: string
      syncCategory:
        type: string
      key:
        type: string
      objectHash:
        type: string
  UserSyncDTO:
    type: object
    properties:
      title:
        type: string
      firstName:
        type: string
      middleName:
        type: string
      surname:
        type: string
      lastName:
        type: string
      preferredName:
        type: string
      email:
        type: string
      additionalEmail:
        type: string
      dob:
        type: string
      gender:
        type: string
      mobilePhone:
        type: string
      workPhone:
        type: string
      telephone:
        type: string
      home_AddressLine1:
        type: string
      home_AddressLine2:
        type: string
      home_City:
        type: string
      home_Country:
        type: string
      home_PostCode:
        type: string
      home_State:
        type: string
      postal_AddressLine1:
        type: string
      postal_AddressLine2:
        type: string
      postal_City:
        type: string
      postal_Country:
        type: string
      postal_PostCode:
        type: string
      postal_State:
        type: string
      employmentStartDate:
        type: string
      employmentEndDate:
        type: string
      reasonOfTermination:
        type: string
      councilNetworkLogin:
        type: string
      payrollNo:
        type: string
      positionNo:
        type: string
      positionName:
        type: string
      positionStartDate:
        type: string
      positionEndDate:
        type: string
      positionDivision:
        type: string
      positionUnit:
        type: string
      positionSection:
        type: string
      positionTeam:
        type: string
      positionSupervisor:
        type: string
      positionIncumbentsAssigned:
        type: string
      supervisor:
        type: string
      supervisorPayrollNo:
        type: string
      divisionCode:
        type: string
      divisionName:
        type: string
      unitCode:
        type: string
      unitName:
        type: string
      sectionCode:
        type: string
      sectionName:
        type: string
      empType:
        type: string
      team:
        type: string
      emergencyContact1_Name:
        type: string
      emergencyContact1_Relationship:
        type: string
      emergencyContact1_AddressLine1:
        type: string
      emergencyContact1_AddressLine2:
        type: string
      emergencyContact1_City:
        type: string
      emergencyContact1_State:
        type: string
      emergencyContact1_PostCode:
        type: string
      emergencyContact1_Country:
        type: string
      emergencyContact1_Mobile:
        type: string
      emergencyContact1_WorkPhone:
        type: string
      emergencyContact1_Email:
        type: string
      emergencyContact1_Telephone:
        type: string
      emergencyContact2_Name:
        type: string
      emergencyContact2_Relationship:
        type: string
      emergencyContact2_AddressLine1:
        type: string
      emergencyContact2_AddressLine2:
        type: string
      emergencyContact2_City:
        type: string
      emergencyContact2_State:
        type: string
      emergencyContact2_PostCode:
        type: string
      emergencyContact2_Country:
        type: string
      emergencyContact2_Mobile:
        type: string
      emergencyContact2_WorkPhone:
        type: string
      emergencyContact2_Email:
        type: string
      emergencyContact2_Telephone:
        type: string
      isActive:
        type: string
      externalUserId:
        type: string
      integrationName:
        type: string
      siteName:
        type: string
      employmentType:
        type: string
      permissions:
        type: array
        items:
          type: string
      additionalAttributes:
        type: array
        items:
          $ref: '#/definitions/AdditionalAttributesDTO'
      additionalPositions:
        type: string
      additionalUserPositions:
        type: array
        items:
          $ref: '#/definitions/AdditionalPositionsDTO'
      roles:
        type: string
  ExternalUserSyncStatusDTO:
    type: object
    properties:
      userId:
        type: string
      status:
        type: string
      syncCategory:
        type: string
      message:
        type: string
      integrationUserId:
        type: string
      integrationName:
        type: string
      objectHash:
        type: string
      details:
        type: array
        items:
          $ref: '#/definitions/ExternalUserSyncStatusDetailDTO'
  AddIntegrationSyncToPayrollHistory:
    type: object
    properties:
      integrationName:
        type: string
      jsonFile:
        type: string
      userId:
        type: string
        format: uuid
      source:
        type: string
      externalUserSyncStatuses:
        type: array
        items:
          $ref: '#/definitions/ExternalUserSyncStatusDTO'
securityDefinitions:
  ApiKey:
    type: apiKey
    name: x-Api-Key
    in: header
  BearerJWT:
    type: apiKey
    name: Authorisation
    in: header
externalDocs:
  description: Find out more about Swagger
  url: http://swagger.io