Productiv Developer API

The Productiv Developer APIs support integrating custom applications into the Productiv platform, allowing external developers to define and publish new connected applications. Includes APIs for pushing usage events and user information, Data Export APIs for fetching app portfolio details, provisioning workflows, and audit events.

Documentation

Specifications

Schemas & Data

Other Resources

OpenAPI Specification

productiv-developer-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Productiv Developer API
  description: >-
    The Productiv Developer APIs support integrating custom applications into the
    Productiv platform, allowing external developers to define and publish new
    connected applications. Once an application is properly defined, Productiv
    supports APIs for pushing usage events and user information in a standardized
    format, as well as Data Export APIs for fetching your company's app portfolio,
    detailed app information, provisioning workflows, and audit events.
  version: v1
  contact:
    name: Productiv Support
    email: [email protected]
    url: https://productiv.com/
  license:
    name: Proprietary
    url: https://productiv.com/
servers:
- url: https://public-api.productiv.com
  description: Productiv Public API
- url: https://login.api.productiv.com
  description: Productiv OAuth2 Authorization Server
security:
- bearerAuth: []
tags:
- name: App Details
  description: Fetch detailed information about a particular app.
- name: App Summaries
  description: Query the list of apps in your company portfolio.
- name: Applications
  description: Set up and manage custom applications within Productiv.
- name: Audit Events
  description: Fetch audit events for activities performed on the Productiv platform.
- name: Authentication
  description: OAuth2 token endpoint for obtaining access tokens.
- name: Batch Upload
  description: Upload files in batch for applications.
- name: Org Chart
  description: Publish organizational chart data.
- name: Provisioned Users
  description: Manage users provisioned to custom integrations.
- name: Provisioning Workflows
  description: >-
    Fetch provisioning workflows and execution details.
- name: Spend Data
  description: Publish spend data for applications.
- name: Usage Events
  description: Publish usage events for applications.
paths:
  /oauth2/token:
    post:
      operationId: getAccessToken
      summary: Productiv Generate Access Token
      description: >-
        Obtain an OAuth2 access token using client credentials. The returned
        access token must be included as a Bearer token in the Authorization
        header of all subsequent API requests. Each API may require different
        scopes.
      tags:
      - Authentication
      security: []
      servers:
      - url: https://login.api.productiv.com
        description: Productiv OAuth2 Authorization Server
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              required:
              - grant_type
              - client_id
              - client_secret
              properties:
                grant_type:
                  type: string
                  enum:
                  - client_credentials
                  description: The OAuth2 grant type.
                client_id:
                  type: string
                  description: Your application client ID.
                client_secret:
                  type: string
                  description: Your application client secret.
                scope:
                  type: string
                  description: >-
                    Space-separated list of scopes. Available scopes include
                    https://api.productiv.com/connector.write and
                    https://api.productiv.com/report.read.
            examples:
              GetaccesstokenRequestExample:
                summary: Default getAccessToken request
                x-microcks-default: true
                value:
                  grant_type: client_credentials
                  client_id: '500123'
                  client_secret: example_value
                  scope: example_value
      responses:
        '200':
          description: Successful token response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  access_token:
                    type: string
                    description: The access token to use for API requests.
                  token_type:
                    type: string
                    description: The type of the token, typically Bearer.
                  expires_in:
                    type: integer
                    description: The number of seconds until the token expires.
              examples:
                Getaccesstoken200Example:
                  summary: Default getAccessToken 200 response
                  x-microcks-default: true
                  value:
                    access_token: example_value
                    token_type: example_value
                    expires_in: 10
        '401':
          description: Invalid client credentials.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /services/push/v1/customer/apps:
    post:
      operationId: setupApplication
      summary: Productiv Set up an Application
      description: >-
        Define and publish a new connected application to Productiv. This
        registers the application and returns a unique appId that is used for
        subsequent API calls such as publishing usage events and spend data.
      tags:
      - Applications
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - appName
              properties:
                appName:
                  type: string
                  description: The name of the application to register.
                appDescription:
                  type: string
                  description: A description of the application.
                appCategory:
                  type: string
                  description: The category of the application.
                appUrl:
                  type: string
                  format: uri
                  description: The URL of the application.
            examples:
              SetupapplicationRequestExample:
                summary: Default setupApplication request
                x-microcks-default: true
                value:
                  appName: example_value
                  appDescription: example_value
                  appCategory: example_value
                  appUrl: https://www.example.com
      responses:
        '200':
          description: Application created successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  appId:
                    type: string
                    description: The unique identifier for the created application.
                  appName:
                    type: string
                    description: The name of the application.
              examples:
                Setupapplication200Example:
                  summary: Default setupApplication 200 response
                  x-microcks-default: true
                  value:
                    appId: '500123'
                    appName: example_value
        '400':
          description: Bad request.
        '401':
          description: Unauthorized.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /services/push/v1/customer/apps/{appId}/usage-events:
    post:
      operationId: publishUsageEvents
      summary: Productiv Publish Usage Events
      description: >-
        Push usage events for an application to Productiv. Usage events represent
        actions performed by users, such as starting a video call, sending
        messages, or uploading files. Every event is uniquely identified by the
        combination of timestamp, email, and eventName. A maximum of 1000 events
        can be pushed per request.
      tags:
      - Usage Events
      parameters:
      - name: appId
        in: path
        required: true
        description: The unique identifier of the application.
        schema:
          type: string
        example: '500123'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - events
              properties:
                events:
                  type: array
                  maxItems: 1000
                  description: A list of usage events to push.
                  items:
                    type: object
                    required:
                    - timestamp
                    - email
                    - eventName
                    properties:
                      timestamp:
                        type: integer
                        format: int64
                        description: >-
                          The timestamp of the event in milliseconds since epoch.
                      email:
                        type: string
                        format: email
                        description: The email address of the user who performed the action.
                      eventName:
                        type: string
                        description: The name of the action or activity performed.
            examples:
              PublishusageeventsRequestExample:
                summary: Default publishUsageEvents request
                x-microcks-default: true
                value:
                  events:
                  - timestamp: 10
                    email: [email protected]
                    eventName: example_value
      responses:
        '200':
          description: Events published successfully.
        '400':
          description: Bad request.
        '401':
          description: Unauthorized.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /services/push/v1/customer/apps/{appId}/spend:
    post:
      operationId: publishSpendData
      summary: Productiv Publish Spend Data
      description: >-
        Push spend data to Productiv for an application from one or more existing
        systems. Before using this API, the application must be set up and a
        unique appId obtained.
      tags:
      - Spend Data
      parameters:
      - name: appId
        in: path
        required: true
        description: The unique identifier of the application.
        schema:
          type: string
        example: '500123'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                spendData:
                  type: array
                  description: A list of spend data records.
                  items:
                    type: object
                    properties:
                      amount:
                        type: number
                        description: The spend amount.
                      currency:
                        type: string
                        description: The currency code.
                      date:
                        type: string
                        format: date
                        description: The date of the spend.
                      description:
                        type: string
                        description: A description of the spend.
            examples:
              PublishspenddataRequestExample:
                summary: Default publishSpendData request
                x-microcks-default: true
                value:
                  spendData:
                  - amount: 42.5
                    currency: example_value
                    date: '2026-01-15'
                    description: A sample description.
      responses:
        '200':
          description: Spend data published successfully.
        '400':
          description: Bad request.
        '401':
          description: Unauthorized.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /services/push/v1/customer/apps/{appId}/users:
    post:
      operationId: publishProvisionedUsers
      summary: Productiv Publish Provisioned Users
      description: >-
        Add provisioned users for an application in Productiv. Productiv treats
        the set of provisioned users updated by the developer APIs as the current
        list of all users for the application.
      tags:
      - Provisioned Users
      parameters:
      - name: appId
        in: path
        required: true
        description: The unique identifier of the application.
        schema:
          type: string
        example: '500123'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - users
              properties:
                users:
                  type: array
                  description: A list of users to provision.
                  items:
                    type: object
                    required:
                    - email
                    properties:
                      email:
                        type: string
                        format: email
                        description: The email address of the user.
                      firstName:
                        type: string
                        description: The first name of the user.
                      lastName:
                        type: string
                        description: The last name of the user.
                      role:
                        type: string
                        description: The role of the user in the application.
            examples:
              PublishprovisionedusersRequestExample:
                summary: Default publishProvisionedUsers request
                x-microcks-default: true
                value:
                  users:
                  - email: [email protected]
                    firstName: example_value
                    lastName: example_value
                    role: example_value
      responses:
        '200':
          description: Provisioned users published successfully.
        '400':
          description: Bad request.
        '401':
          description: Unauthorized.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    get:
      operationId: getProvisionedUsers
      summary: Productiv Get Provisioned Users
      description: >-
        Retrieve the list of users provisioned to an application.
      tags:
      - Provisioned Users
      parameters:
      - name: appId
        in: path
        required: true
        description: The unique identifier of the application.
        schema:
          type: string
        example: '500123'
      responses:
        '200':
          description: Provisioned users retrieved successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  users:
                    type: array
                    items:
                      type: object
                      properties:
                        email:
                          type: string
                          format: email
                          description: The email address of the user.
                        firstName:
                          type: string
                          description: The first name of the user.
                        lastName:
                          type: string
                          description: The last name of the user.
                        role:
                          type: string
                          description: The role of the user.
              examples:
                Getprovisionedusers200Example:
                  summary: Default getProvisionedUsers 200 response
                  x-microcks-default: true
                  value:
                    users:
                    - email: [email protected]
                      firstName: example_value
                      lastName: example_value
                      role: example_value
        '401':
          description: Unauthorized.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    delete:
      operationId: deleteProvisionedUsers
      summary: Productiv Delete Provisioned Users
      description: >-
        Remove provisioned users from an application in Productiv.
      tags:
      - Provisioned Users
      parameters:
      - name: appId
        in: path
        required: true
        description: The unique identifier of the application.
        schema:
          type: string
        example: '500123'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - users
              properties:
                users:
                  type: array
                  description: A list of users to remove.
                  items:
                    type: object
                    required:
                    - email
                    properties:
                      email:
                        type: string
                        format: email
                        description: The email address of the user to remove.
            examples:
              DeleteprovisionedusersRequestExample:
                summary: Default deleteProvisionedUsers request
                x-microcks-default: true
                value:
                  users:
                  - email: [email protected]
      responses:
        '200':
          description: Provisioned users removed successfully.
        '400':
          description: Bad request.
        '401':
          description: Unauthorized.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /services/push/v1/customer/org-chart:
    put:
      operationId: publishOrgChart
      summary: Productiv Publish Org Chart
      description: >-
        Publish organizational chart data to Productiv. The endpoint accepts no
        more than 1000 users per request. Multiple PUT requests to the same
        resource ID are required if more than 1000 users need to be added.
      tags:
      - Org Chart
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                users:
                  type: array
                  maxItems: 1000
                  description: A list of users in the org chart.
                  items:
                    type: object
                    required:
                    - email
                    properties:
                      email:
                        type: string
                        format: email
                        description: The email address of the user.
                      firstName:
                        type: string
                        description: First name of the user.
                      lastName:
                        type: string
                        description: Last name of the user.
                      managerEmail:
                        type: string
                        format: email
                        description: The email address of the user's manager.
                      department:
                        type: string
                        description: The department of the user.
                      title:
                        type: string
                        description: The job title of the user.
                customFieldsConfig:
                  type: array
                  description: >-
                    Custom field definitions such as Date of Birth, Director, VP,
                    Entity, and Business Unit.
                  items:
                    type: object
                    properties:
                      name:
                        type: string
                        description: The name of the custom field.
                      type:
                        type: string
                        description: The data type of the custom field.
            examples:
              PublishorgchartRequestExample:
                summary: Default publishOrgChart request
                x-microcks-default: true
                value:
                  users:
                  - email: [email protected]
                    firstName: example_value
                    lastName: example_value
                    managerEmail: [email protected]
                    department: example_value
                    title: Example Title
                  customFieldsConfig:
                  - name: Example Title
                    type: example_value
      responses:
        '200':
          description: Org chart published successfully.
        '400':
          description: Bad request.
        '401':
          description: Unauthorized.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /services/push/v1/customer/apps/{appId}/upload:
    get:
      operationId: getBatchUploadUrls
      summary: Productiv Get Batch File Upload Urls
      description: >-
        Get signed upload URLs for batch file uploads. Specify the filenames to
        upload as query parameters, and the response will return signed URLs for
        each file. Use the returned signed URLs to PUT each file.
      tags:
      - Batch Upload
      parameters:
      - name: appId
        in: path
        required: true
        description: The unique identifier of the application.
        schema:
          type: string
        example: '500123'
      - name: filenames
        in: query
        required: true
        description: The filenames to upload. Can be specified multiple times.
        schema:
          type: array
          items:
            type: string
        explode: true
        example: []
      responses:
        '200':
          description: Signed upload URLs returned successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  uploadUrls:
                    type: array
                    items:
                      type: object
                      properties:
                        filename:
                          type: string
                          description: The filename.
                        uploadUrl:
                          type: string
                          format: uri
                          description: The signed URL to upload the file to.
              examples:
                Getbatchuploadurls200Example:
                  summary: Default getBatchUploadUrls 200 response
                  x-microcks-default: true
                  value:
                    uploadUrls:
                    - filename: example_value
                      uploadUrl: https://www.example.com
        '400':
          description: Bad request.
        '401':
          description: Unauthorized.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /services/export/v1/customer/app-summaries:
    get:
      operationId: getAppSummaries
      summary: Productiv Get App Summaries
      description: >-
        Query the entire list of apps that are part of your company's portfolio.
        Returns a small set of app attributes such as ApplicationId, AppStatus,
        and VendorName. For more detailed information about a particular app, use
        the App Details endpoint with the ApplicationId. Rate limit is 20
        requests per second.
      tags:
      - App Summaries
      responses:
        '200':
          description: App summaries returned successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  apps:
                    type: array
                    items:
                      $ref: '#/components/schemas/AppSummary'
              examples:
                Getappsummaries200Example:
                  summary: Default getAppSummaries 200 response
                  x-microcks-default: true
                  value:
                    apps:
                    - ApplicationId: '500123'
                      AppName: example_value
                      AppStatus: example_value
                      VendorName: example_value
                      AppCategory: example_value
        '401':
          description: Unauthorized.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /services/export/v1/customer/app-details/{applicationId}:
    get:
      operationId: getAppDetails
      summary: Productiv Get App Details
      description: >-
        Fetch detailed information about a particular app that is not provided
        in the App Summaries response. Additional details include Instances,
        Activity, Contract, Fiscal Spend, Compliance, and SSO Protocols. Rate
        limit is 20 requests per second.
      tags:
      - App Details
      parameters:
      - name: applicationId
        in: path
        required: true
        description: >-
          The unique identifier of the application, obtained from the App
          Summaries endpoint.
        schema:
          type: string
        example: '500123'
      responses:
        '200':
          description: App details returned successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppDetails'
              examples:
                Getappdetails200Example:
                  summary: Default getAppDetails 200 response
                  x-microcks-default: true
                  value:
                    ApplicationId: '500123'
                    AppName: example_value
                    AppStatus: example_value
                    VendorName: example_value
                    Instances:
                    - instanceId: '500123'
                      instanceName: example_value
                    Activity:
                      totalUsers: 10
                      activeUsers: 10
                      lastActivityDate: '2026-01-15'
                    Contracts:
                    - contractId: '500123'
                      startDate: '2026-01-15'
                      endDate: '2026-01-15'
                      totalValue: 42.5
                    FiscalSpend:
                      totalSpend: 42.5
                      currency: example_value
                    Compliance:
                      standards:
                      - example_value
                    SSOProtocols:
                    - example_value
        '401':
          description: Unauthorized.
        '404':
          description: Application not found.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /services/export/v1/customer/provisioning-workflows:
    get:
      operationId: listProvisioningWorkflows
      summary: Productiv List Provisioning Workflows
      description: >-
        Query the entire list of provisioning workflows configured on your
        account. Rate limit is 20 requests per second.
      tags:
      - Provisioning Workflows
      responses:
        '200':
          description: Provisioning workflows returned successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  workflows:
                    type: array
                    items:
                      type: object
                      properties:
                        workflowId:
                          type: string
                          description: The unique identifier of the workflow.
                        workflowName:
                          type: string
                          description: The name of the workflow.
                        applicationId:
                          type: string
                          description: The application associated with the workflow.
                        status:
                          type: string
                          description: The status of the workflow.
              examples:
                Listprovisioningworkflows200Example:
                  summary: Default listProvisioningWorkflows 200 response
                  x-microcks-default: true
                  value:
                    workflows:
                    - workflowId: '500123'
                      workflowName: example_value
                      applicationId: '500123'
                      status: example_value
        '401':
          description: Unauthorized.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /services/export/v1/customer/provisioning-workflows/{workflowId}/executions:
    get:
      operationId: listProvisioningExecutionSummaries
      summary: Productiv List Provisioning Execution Summaries
      description: >-
        Query a list of provisioning workflow execution summaries for an
        application instance within a time range.
      tags:
      - Provisioning Workflows
      parameters:
      - name: workflowId
        in: path
        required: true
        description: The unique identifier of the provisioning workflow.
        schema:
          type: string
        example: '500123'
      - name: startTime
        in: query
        description: Start time for the time range filter.
        schema:
          type: string
          format: date-time
        example: '2026-01-15T10:30:00Z'
      - name: endTime
        in: query
        description: End time for the time range filter.
        schema:
          type: string
          format: date-time
        example: '2026-01-15T10:30:00Z'
      responses:
        '200':
          description: Execution summaries returned successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  executions:
                    type: array
                    items:
                      type: object
                      properties:
                        executionId:
                          type: string
                          description: The unique identifier of the execution.
                        workflowId:
                          type: string
                          description: The workflow identifier.
                        status:
                          type: string
                          description: The status of the execution.
                        startTime:
                          type: string
                          format: date-time
                          description: When the execution started.
                        endTime:
                          type: string
                          format: date-time
                          description: When the execution completed.
              examples:
                Listprovisioningexecutionsummaries200Example:
                  summary: Default listProvisioningExecutionSummaries 200 response
                  x-microcks-default: true
                  value:
                    executions:
                    - executionId: '500123'
                      workflowId: '500123'
                      status: example_value
                      startTime: '2026-01-15T10:30:00Z'
                      endTime: '2026-01-15T10:30:00Z'
        '401':
          description: Unauthorized.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /services/export/v1/customer/provisioning-workflows/{workflowId}/executions/{executionId}:
    get:
      operationId: getProvisioningWorkflowExecution
      summary: Productiv Get Provisioning Workflow Execution
      description: >-
        Query the details of a specific provisioning workflow execution,
        including suggested or actioned outcomes for matched users.
      tags:
      - Provisioning Workflows
      parameters:
      - name: workflowId
        in: path
        required: true
        description: The unique identifier of the provisioning workflow.
        schema:
          type: string
        example: '500123'
      - name: executionId
        in: path
        required: true
        description: The unique identifier of the execution.
        schema:
          type: string
        example: '500123'
      responses:
        '200':
          description: Execution details returned successfully.
          content:
     

# --- truncated at 32 KB (40 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/productiv/refs/heads/main/openapi/productiv-developer-openapi.yml