WorkRamp Academies API

The Academies API from WorkRamp — 48 operation(s) for academies.

Operations 59

GET /api/v1/academies/{academy_id}/users Get All Contacts #
POST /api/v1/academies/{academy_id}/users Create Contact #
GET /api/v1/academies/{academy_id}/users/{contact_id} Get Contact #
DELETE /api/v1/academies/{academy_id}/users/{contact_id} Delete Contact #
PATCH /api/v1/academies/{academy_id}/users/{contact_id} Update Contact #
POST /api/v1/academies/{academy_id}/invite Invite Contacts #
DELETE /api/v1/academies/{academy_id}/segments/{segment_id}/remove_users Remove Contacts from Segment #
GET /api/v1/academies/{academy_id}/users-duplicate Get All Contacts (support duplicated) #
POST /api/v1/academies/{academy_id}/segments/{segment_id}/invite Assign Segments #
GET /api/v1/academies/{academy_id}/users/{contact_id}/awarded_certifications Get All Awarded Certifications For a Contact #
POST /api/v1/academies/{academy_id}/certifications/{certification_id}/invite Assign Certificates #
POST /api/v1/academies/{academy_id}/paths/{path_id}/invite Assign Paths #
GET /api/v1/academies/{academy_id}/users/{contact_id}/registrations/{registration_id} Get Registration by Contact ID & Registration ID #
GET /api/v1/academies/{academy_id}/trainings/{training_id}/registrations Get All Registrations for a Training #
GET /api/v1/academies/{academy_id}/certifications/{cert_id} Get All Enrollments for a Certification #
GET /api/v1/academies/{academy_id}/paths/{path_id} Get All Enrollments for a Path #
GET /api/v1/academies/{academy_id}/registrations Get All Registrations #
GET /api/v1/academies/{academy_id}/awarded_certifications Get All Awarded Certifications #
GET /api/v1/academies/{academy_id}/registrations/{registration_id} Get Registration by ID #
DELETE /api/v1/academies/{academy_id}/registrations/{registration_id} #
PATCH /api/v1/academies/{academy_id}/registrations/{registration_id} Update Registration (Mark Complete) #
GET /api/v1/academies/{academy_id}/users/{contact_id}/registrations Deprecated Get All Registrations for a Contact #
GET /api/v1/academies/{academy_id}/trainings Get All Trainings #
GET /api/v1/academies/{academy_id}/trainings/{training_id} Get Training #
GET /api/v1/academies/{academy_id}/search/{search_term} Search for Trainings #
GET /api/v1/academies/{academy_id}/paths Get All Offered Paths #
GET /api/v1/academies/{academy_id}/certifications Get All Offered Certifications #
GET /api/v1/academies/{academy_id}/collections Get All Offered Collections #
GET /api/v1/academies/{academy_id}/collections/{collection_id} Get Collection #
GET /api/v1/academies/{academy_id}/paths/{path_id}/details Get Path #
GET /api/v1/academies/{academy_id}/certifications/{certification_id}/details Get Certification #
GET /api/v1/academies/{academy_id}/events Get All Events #
GET /api/v1/academies/{academy_id}/events/{event_id} Get Sessions For Event #
GET /api/v1/academies/{academy_id}/events/{event_id}/attendees Get Attendees For Event #
GET /api/v1/academies/{academy_id}/event_sessions/{event_session_id}/attendees Get Attendees for Event Session #
GET /api/v1/academies/{academy_id}/webhook_subscriptions Get All Webhook Subscriptions #
POST /api/v1/academies/{academy_id}/webhook_subscriptions Create Webhook Subscription #
GET /api/v1/academies/{academy_id}/webhook_subscriptions/{subscription_id} Get Webhook Subscription #
DELETE /api/v1/academies/{academy_id}/webhook_subscriptions/{subscription_id} Delete Webhook Subscription #
PATCH /api/v1/academies/{academy_id}/webhook_subscriptions/{subscription_id} Edit Webhook Subscription #
GET /api/v1/academies/{academy_id}/academy_object_attributes #
GET /api/v1/academies/{academy_id}/academy_object_attribute #
GET /api/v1/academies/{academy_id/academy_object_attributes #
GET /api/v1/academies/{academy_id}/academy_object_attributess #
GET /api/v1/academies/:academy_id/academy_object_attributes #
GET /api/v1/academies/{academy_id}/academy_object_attributes_2 #
GET /api/v1/academies/${academy_id}/academy_object_attributes #
GET /api/v1/academies/:academy id/paths_users Get All Completed Path Enrollments #
GET /api/v1/academies/{academy_id}/registrations/by_date_range #
POST /api/v1/academies/{academy_id}/segments/{segment_id}/add_users Add Contacts to Segment #
POST /api/v1/academies/{academy_id}/instant_auth_request Instant Auth #
GET /api/v1/academies/{academy_id}/contacts/{contact_id}/registrations Get All Registrations for a Contact #
GET /api/v1/academies/{academy_id}/contacts/{contact_id}/paths Get all Paths for a Contact #
GET /api/v1/academies/{academy_id}/contacts/{contact_id}/certifications Get All Certifications for a Contact #
POST /api/v1/academies/{academy_id}/trainings/{training_id}/invite Assign Trainings #
PUT /api/v1/academies/{academy_id}/email_domains Update Allowed Email Domains #
DELETE /api/v1/academies/{academy_id}/email_domains Remove Allowed Email Domain #
GET /api/v1/academies/{academy_id}/email_domains Get Allowed Email Domains #
POST /api/v1/academies/{academy_id}/email_domains Add Allowed Email Domain #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/workramp-academies-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

workramp-academies-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Workramp Academies API
  version: '1.0'
  description: 'Operations tagged Academies across 2 of this provider''s published API definitions: workramp-api-settings-openapi.yml, workramp-json-api-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://app.workramp.com
security:
- sec0: []
tags:
- name: Academies
paths:
  /api/v1/academies/{academy_id}/users:
    get:
      summary: Get All Contacts
      description: Get all Contacts in an Academy. Results can be filtered by name, email, email domain, status, and custom registration fields. All filters combine with AND. By default, both Active and Deactivated Contacts are returned, including Contacts with a pending invitation. Results are always sorted by email, ascending.
      operationId: get-academy-customer-users
      parameters:
      - name: academy_id
        in: path
        description: The id of the Academy
        schema:
          type: string
        required: true
      - name: page
        in: query
        description: The page number of the results
        schema:
          type: integer
          format: int32
          default: 1
      - name: per_page
        in: query
        description: The number of results returned per page
        schema:
          type: integer
          format: int32
          default: 20
      - name: name
        in: query
        description: Optional. Returns Contacts whose name contains this value (case-insensitive, partial match).
        schema:
          type: string
      - name: email
        in: query
        description: Optional. Returns Contacts whose email address contains this value (case-insensitive partial match). For example, `email=bob@example.com` also matches `alice.bob@example.com`. To match one address exactly, use `exact_email`.
        schema:
          type: string
      - in: query
        name: email_domain
        schema:
          type: string
        description: 'Optional. Returns Contacts whose email address ends in exactly `@<value>` (case-insensitive). Subdomains are not included: `example.com` does not match `bob@mail.example.com`.'
      - in: query
        name: exact_email
        schema:
          type: string
        description: Optional. Returns only the Contact whose email address exactly matches this value. Matching is case-insensitive, and surrounding whitespace is ignored. No partial matching is performed. When `exact_email` is provided, the `email` and `email_domain` parameters are ignored.
      - name: status
        in: query
        description: Optional. `Active` returns only active Contacts; `Deactivated` returns only deactivated Contacts. If omitted, both are returned.
        schema:
          type: string
          enum:
          - Active
          - Deactivated
      - name: custom_registration_fields
        in: query
        description: Optional object with a single key-value pair where the key represents the custom registration field name and the value represents the custom attribute field value. (e.g. `custom_registration_fields%5Bnickname%5D=Bobby` ) -- **NOTE:** This tool can't generate this parameter for you because the parameter name itself (such as `custom_registration_fields[example]`) is dynamic.
        schema:
          type: string
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n    \"page\": 1,\n    \"per_page\": 100,\n    \"has_more\": false,\n    \"url\": \"https://app.workramp.com/api/v1/academies/:academy_id/users\",\n    \"data\": {\n        \"users\": [\n            {\n                \"id\": \"d3d6edf4-e25d-11ea-be19-0242ac140003\",\n                \"email\": \"ted+apitester1234@workramp.com\",\n                \"segments\": [],\n                \"display_name\": \"Jane Doe\",\n                \"first_name\": \"Jane\",\n                \"last_name\": \"Doe\",\n                \"created_at\": \"2022-06-08 14:59:04 UTC\",\n                \"custom_registration_field_values\": [\n                    {\n                        \"value\": \"Gold\",\n                        \"name\": \"customer_tier\"\n                    }\n                ]\n            },\n            {...},\n            {...}\n        ]\n    }\n}"
        '400':
          description: '400'
          content:
            application/json:
              examples:
                Result:
                  value: '{}'
              schema:
                type: object
                properties: {}
      tags:
      - Academies
    post:
      summary: Create Contact
      description: Creates a new contact in your Academy. You can create a contact with a password, or, if you use SSO or another login mechanism, you can just use this to ensure that the user has been created, for instance, if you want to add them to a segment before they first visit the site.
      operationId: create-contact
      parameters:
      - name: academy_id
        in: path
        description: The id of the Academy
        schema:
          type: string
        required: true
      - name: Content-Type
        in: header
        description: Always application/json
        schema:
          type: string
          default: application/json
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - email
              - name
              properties:
                email:
                  type: string
                  description: The email address of the Contact
                name:
                  type: string
                  description: The name of the Contact
                password:
                  type: string
                  description: (Optional) If you'd like the contact to sign in with a password. Not needed when using SSO, magic links, or another login mechanism.
                custom_registration_fields:
                  type: string
                  description: 'JSON dictionary where keys are the "API Name" of your registration field to set, and the values are the values to set. e.g. `{"favorite_color": "blue"}`'
                  default: '{}'
                  format: json
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n  \"url\": \"/api/v1/academies/c8be6efc-c511-11ee-8dca-000000000001/users\",\n  \"data\": {\n    \"user\": {\n      \"id\": \"01902776-8464-76c5-a173-293333b17baa\",\n      \"email\": \"john@doe.com\",\n      \"segments\": [],\n      \"display_name\": \"John Doe\",\n      \"first_name\": \"John\",\n      \"last_name\": \"Doe\",\n      \"created_at\": \"2024-06-17 18:29:56 UTC\",\n      \"custom_registration_field_values\": [\n      \t{\n      \t\t\"academy_registration_field_id\": \"field-id-1234\",\n      \t\t\"name\": \"department\",\n      \t\t\"value\": \"Sales\"\n    \t\t}\n      ],\n      \"status\": \"Active\"\n    }\n  }\n}"
              schema:
                type: object
                properties:
                  url:
                    type: string
                    example: /api/v1/academies/c8be6efc-c511-11ee-8dca-000000000001/users
                  data:
                    type: object
                    properties:
                      user:
                        type: object
                        properties:
                          id:
                            type: string
                            example: 01902776-8464-76c5-a173-293333b17baa
                          email:
                            type: string
                            example: john@doe.com
                          segments:
                            type: array
                          display_name:
                            type: string
                            example: John Doe
                          first_name:
                            type: string
                            example: John
                          last_name:
                            type: string
                            example: Doe
                          created_at:
                            type: string
                            example: 2024-06-17 18:29:56 UTC
                          custom_registration_field_values:
                            type: array
                            items:
                              type: object
                              properties:
                                academy_registration_field_id:
                                  type: string
                                  example: field-id-1234
                                name:
                                  type: string
                                  example: department
                                value:
                                  type: string
                                  example: Sales
                          status:
                            type: string
                            example: Active
        '400':
          description: '400'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n  \"type\": \"invalid_params\",\n  \"message\": \"Invalid custom parameters: badField1, badField2\"\n}"
              schema:
                type: object
                properties:
                  type:
                    type: string
                    example: invalid_params
                  message:
                    type: string
                    example: 'Invalid custom parameters: badField1, badField2'
      deprecated: false
      tags:
      - Academies
    servers:
    - url: https://app.workramp.com
  /api/v1/academies/{academy_id}/users/{contact_id}:
    get:
      summary: Get Contact
      description: Get a specific Contact in an Academy
      operationId: get-user
      parameters:
      - name: academy_id
        in: path
        description: The id of the Academy
        schema:
          type: string
        required: true
      - name: contact_id
        in: path
        description: The id of the Contact
        schema:
          type: string
        required: true
      - name: page
        in: query
        description: The page number of the results
        schema:
          type: integer
          format: int32
          default: 1
      - name: per_page
        in: query
        description: The number of results returned per page
        schema:
          type: integer
          format: int32
          default: 20
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n    \"page\": 1,\n    \"per_page\": 100,\n    \"has_more\": false,\n    \"url\": \"https://app.workramp.com/api/v1/academies/:academy_id/users/:user_id\",\n    \"data\": {\n        \"user\": {\n            \"id\": \"d3d6edf4-e25d-11ea-be19-0242ac140003\",\n            \"email\": \"ted+apitester1234@workramp.com\",\n            \"display_name\": \"Jane Doe\",\n            \"first_name\": \"Jane\",\n            \"last_name\": \"Doe\"\n        }\n    }\n}"
              schema:
                type: object
                properties:
                  page:
                    type: integer
                    example: 1
                    default: 0
                  per_page:
                    type: integer
                    example: 100
                    default: 0
                  has_more:
                    type: boolean
                    example: false
                    default: true
                  url:
                    type: string
                    example: https://app.workramp.com/api/v1/academies/:academy_id/users/:user_id
                  data:
                    type: object
                    properties:
                      user:
                        type: object
                        properties:
                          id:
                            type: string
                            example: d3d6edf4-e25d-11ea-be19-0242ac140003
                          email:
                            type: string
                            example: ted+apitester1234@workramp.com
                          display_name:
                            type: string
                            example: Jane Doe
                          first_name:
                            type: string
                            example: Jane
                          last_name:
                            type: string
                            example: Doe
        '400':
          description: '400'
          content:
            application/json:
              examples:
                Result:
                  value: '{}'
              schema:
                type: object
                properties: {}
      deprecated: false
      tags:
      - Academies
    delete:
      summary: Delete Contact
      description: Soft-delete/deactivate an Academy Contact
      operationId: delete-academy-user
      parameters:
      - name: academy_id
        in: path
        description: The id of the Academy
        schema:
          type: string
        required: true
      - name: contact_id
        in: path
        description: The id of the Contact
        schema:
          type: string
        required: true
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: '{}'
              schema:
                type: object
                properties: {}
      deprecated: false
      tags:
      - Academies
    patch:
      summary: Update Contact
      description: Updates any of a Academy Contact's default or custom attributes using a JSON dictionary
      operationId: update-academy-user
      parameters:
      - name: academy_id
        in: path
        description: The id of the Academy
        schema:
          type: string
        required: true
      - name: contact_id
        in: path
        description: The id of the Contact
        schema:
          type: string
        required: true
      - name: Content-Type
        in: header
        description: Always send JSON format
        schema:
          type: string
          default: application/json
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                RAW_BODY:
                  type: object
                  description: Send as JSON
                  properties:
                    name:
                      type: string
                      description: new full name for the contact
                    email:
                      type: string
                      description: new email for the contact
                    password:
                      type: string
                      description: new password to set for the contact
                    custom_registration_fields:
                      type: string
                      description: 'JSON dictionary where keys are the "API Name" of your registration field to set, and the values are the values to set. e.g. `{"favorite_color": "blue"}`'
                      format: json
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n  \"id\": \"abcdef-1234\",\n  \"created_at\": 1689013085,\n  \"custom_registration_field_values\": [\n    {\n      \"academy_registration_field_id\": \"field-id-1234\",\n      \"name\": \"department\",\n      \"value\": \"Sales\"\n    }\n  ],\n  \"display_name\": \"John Doe\",\n  \"email\": \"johndoe@example.com\",\n  \"first_name\": \"John\",\n  \"last_name\": \"Doe\",\n  \"segments\": [],\n  \"status\": \"Active\"      \n}"
              schema:
                type: object
                properties:
                  id:
                    type: string
                    example: abcdef-1234
                  created_at:
                    type: integer
                    example: 1689013085
                    default: 0
                  custom_registration_field_values:
                    type: array
                    items:
                      type: object
                      properties:
                        academy_registration_field_id:
                          type: string
                          example: field-id-1234
                        name:
                          type: string
                          example: department
                        value:
                          type: string
                          example: Sales
                  display_name:
                    type: string
                    example: John Doe
                  email:
                    type: string
                    example: johndoe@example.com
                  first_name:
                    type: string
                    example: John
                  last_name:
                    type: string
                    example: Doe
                  segments:
                    type: array
                  status:
                    type: string
                    example: Active
        '400':
          description: '400'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n  \"type\": \"invalid_params\",\n  \"message\": \"Invalid custom parameters: badField1, badField2\"\n}"
              schema:
                type: object
                properties:
                  type:
                    type: string
                    example: invalid_params
                  message:
                    type: string
                    example: 'Invalid custom parameters: badField1, badField2'
      deprecated: false
      tags:
      - Academies
    servers:
    - url: https://app.workramp.com
  /api/v1/academies/{academy_id}/invite:
    post:
      summary: Invite Contacts
      description: Invite Contacts to an Academy
      operationId: invite-users
      parameters:
      - name: academy_id
        in: path
        description: The id of the Academy
        schema:
          type: string
        required: true
      - name: Content-type
        in: header
        description: Always application/json
        schema:
          type: string
          default: application/json
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                userEmailsToInvite:
                  type: array
                  description: Array of Contact emails you'd like to invite to the academy.
                  items:
                    type: string
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n    \"errors\": [],\n    \"newAcademyInvitations\": [\n        {\n            \"email\": \"test2@workramp.com\",\n            \"id\": \"6b6efe96-117c-11ed-90c8-3ea79e467329\",\n            \"inviteHash\": \"LibFxu3D9lms3F8VMadf-A\",\n            \"lastInvitedAt\": 1659346159439,\n            \"originallyInvitedAt\": 1659346159439\n        }\n    ]\n}"
              schema:
                type: object
                properties:
                  errors:
                    type: array
                  newAcademyInvitations:
                    type: array
                    items:
                      type: object
                      properties:
                        email:
                          type: string
                          example: test2@workramp.com
                        id:
                          type: string
                          example: 6b6efe96-117c-11ed-90c8-3ea79e467329
                        inviteHash:
                          type: string
                          example: LibFxu3D9lms3F8VMadf-A
                        lastInvitedAt:
                          type: integer
                          example: 1659346159439
                          default: 0
                        originallyInvitedAt:
                          type: integer
                          example: 1659346159439
                          default: 0
        '400':
          description: '400'
          content:
            application/json:
              examples:
                Result:
                  value: '{}'
              schema:
                type: object
                properties: {}
      deprecated: false
      tags:
      - Academies
    servers:
    - url: https://app.workramp.com
  /api/v1/academies/{academy_id}/segments/{segment_id}/remove_users:
    delete:
      summary: Remove Contacts from Segment
      description: Remove Contacts from Academy Segment
      operationId: remove-users-from-segment
      parameters:
      - name: academy_id
        in: path
        description: The id of the Academy
        schema:
          type: string
        required: true
      - name: segment_id
        in: path
        description: The id of the segment
        schema:
          type: string
        required: true
      - name: Content-Type
        in: header
        description: Always application/json
        schema:
          type: string
          default: application/json
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                userEmails:
                  type: array
                  description: Array of Contact emails you'd like to remove from the segment.
                  items:
                    type: string
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n  \"status\": true\n}"
              schema:
                type: object
                properties:
                  status:
                    type: boolean
                    example: true
                    default: true
        '400':
          description: '400'
          content:
            application/json:
              examples:
                Result:
                  value: '{}'
              schema:
                type: object
                properties: {}
      deprecated: false
      tags:
      - Academies
    servers:
    - url: https://app.workramp.com
  /api/v1/academies/{academy_id}/users-duplicate:
    get:
      summary: Get All Contacts (support duplicated)
      description: Get all Contacts in an Academy
      operationId: get-all-users-support-duplicated
      parameters:
      - name: academy_id
        in: path
        description: The id of the Academy
        schema:
          type: string
        required: true
      - name: page
        in: query
        description: The page number of the results
        schema:
          type: integer
          format: int32
          default: 1
      - name: per_page
        in: query
        description: The number of results returned per page
        schema:
          type: integer
          format: int32
          default: 20
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                custom_registration_fields:
                  type: string
                  format: json
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n    \"page\": 1,\n    \"per_page\": 100,\n    \"has_more\": false,\n    \"url\": \"https://app.workramp.com/api/v1/academies/:academy_id/users\",\n    \"data\": {\n        \"users\": [\n            {\n                \"id\": \"d3d6edf4-e25d-11ea-be19-0242ac140003\",\n                \"email\": \"ted+apitester1234@workramp.com\",\n                \"segments\": [],\n                \"display_name\": \"Jane Doe\",\n                \"first_name\": \"Jane\",\n                \"last_name\": \"Doe\",\n                \"created_at\": \"2022-06-08 14:59:04 UTC\",\n                \"custom_registration_field_values\": [\n                    {\n                        \"value\": \"Gold\",\n                        \"name\": \"customer_tier\"\n                    }\n                ]\n            },\n            {...},\n            {...}\n        ]\n    }\n}"
        '400':
          description: '400'
          content:
            application/json:
              examples:
                Result:
                  value: '{}'
              schema:
                type: object
                properties: {}
      deprecated: false
      tags:
      - Academies
    servers:
    - url: https://app.workramp.com
  /api/v1/academies/{academy_id}/segments/{segment_id}/invite:
    post:
      summary: Assign Segments
      description: Add Contacts to an Academy Segment
      operationId: assign-segments
      parameters:
      - name: academy_id
        in: path
        description: The id of the Academy
        schema:
          type: string
        required: true
      - name: segment_id
        in: path
        description: The id of the segment
        schema:
          type: string
        required: true
      - name: userEmails
        in: query
        description: 'Array of Contact emails you''d like to invite to the segment. **NOTE: Contact must be registered in order to be placed in a segment**'
        schema:
          type: array
          items:
            type: string
      - name: Content-type
        in: header
        schema:
          type: string
          default: application/json
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n    \"numAddedToGroup\": 1,\n    \"numConvertedToManual\": 0,\n    \"numAlreadyInGroup\": 0,\n    \"numDeletedUser\": 0,\n    \"numUnregisteredUser\": 0\n}"
              schema:
                type: object
                properties:
                  numAddedToGroup:
                    type: integer
                    example: 1
                    default: 0
                  numConvertedToManual:
                    type: integer
                    example: 0
                    default: 0
                  numAlreadyInGroup:
                    type: integer
                    example: 0
                    default: 0
                  numDeletedUser:
                    type: integer
                    example: 0
                    default: 0
                  numUnregisteredUser:
                    type: integer
                    example: 0
                    default: 0
        '400':
          description: '400'
          content:
            application/json:
              examples:
                Result:
                  value: '{}'
              schema:
                type: object
                properties: {}
      deprecated: false
      x-readme:
        code-samples:
        - language: curl
          code: 'curl "https://app.workramp.com/api/v1/academies/233710e8-a938-11ec-ae72-3ea79e46732a/segments/cd0ce734-0e85-11ed-bc8c-3ea79e467329/invite

            -H "Authorization: Bearer ACCESS_TOKEN" \

            -H "Content-type: application/json" \

            -d ''{ "userEmails": ["testemail@workramp.com"] }'' \

            -X POST'
        samples-languages:
        - curl
      tags:
      - Academies
    servers:
    - url: https://app.workramp.com
  /api/v1/academies/{academy_id}/users/{contact_id}/awarded_certifications:
    get:
      summary: Get All Awarded Certifications For a Contact
      description: ''
      operationId: get-all-awarded-certifications-for-a-user
      parameters:
      - name: academy_id
        in: path
        description: The id of the Academy
        schema:
          type: string
        required: true
      - name: contact_id
        in: path
        description: The id of the Contact
        schema:
          type: string
        required: true
      - name: page
        in: query
        description: The page number of the results
        schema:
          type: integer
          format: int32
          default: 1
      - name: per_page
        in: query
        description: The number of results returned per page
        schema:
          type: integer
          format: int32
          default: 20
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n    \"page\": 1,\n    \"per_page\": 100,\n    \"has_more\": false,\n    \"url\": \"https://app.workramp.com/api/v1/academies/:academy_id/users/:user_id/awarded_certifications\" ,\n    \"data\": {\n        \"user_id\": \"d3d6edf4-e25d-11ea-be19-0242ac140003\",\n        \"awarded_certifications\": [\n            {\n                \"id\": 242424,\n                \"badge_image\": \"some_img_1.jpg\",\n                \"display_title\": \"Certified Cert\"\n            }\n        ]\n    }\n}"
              schema:
                type: object
                properties:
                  page:
                    type: integer
                    example: 1
                    default: 0
                  per_page:
                    type: integer
                    example: 100
                    default: 0
                  has_more:
                    type: boolean
                    example: false
                    default: true
                  url:
                    type: string
                    example: https://app.workramp.com/api/v1/academies/:academy_id/users/:user_id/awarded_certifications
                  data:
                    type: object
                    properties:
                      user_id:
                        type: string
                        example: d3d6edf4-e25d-11ea-be19-0242ac140003
                      awarded_certifications:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: integer
                              example: 242424
                              default: 0
                            badge_image:
                              type: string
                              example: some_img_1.jpg
                            display_title:
                              type: string
                              example: Certified Cert
        '400':
          description: '400'
          content:
            application/json:
              examples:
                Result:
                  value: '{}'
              schema:
                type: object
                properties: {}
      deprecated: false
      tags:
      - Academies
    servers:
    - url: https://app.workramp.com
  /api/v1/academies/{academy_id}/certifications/{certification_id}/invite:
    post:
      summary: Assign Certificates
      description: Assign certificates to Academy Contacts
      operationId: assign-certificates
      parameters:
      - name: academy_id
        in: path
        description: The id of the Academy
        schema:
          type: string
        required: true
      - name: certification_id
        in: path
        description: The id of the certificate
        schema:
          type: string
        required: true
      - name: Content-type
        in: header
        description: Always use application/json
        schema:
          type: string
          default: application/json
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                userEmails:
                  type: array
                  description: Array of Contact emails you'd like to invite to the training.
                  items:
                    type: string
                dueAt:
                  type: integer
                  description: Number of milliseconds since 19

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