Workera API

First-party REST API for the Workera skills-intelligence platform. Read-oriented, task-shaped endpoints expose capabilities (domains) and their competency models, programs, v2 capability scores and self-ratings, enterprise and per-capability benchmarks, and a SIEM-compatible audit-event feed. Bearer API keys are issued per company by a Workera CSM and can be restricted by scope. Cursor pagination (limit / next_page_after / order), x-ratelimit-* response headers and a machine-readable code/message/type error envelope are documented across the whole surface, alongside an HMAC-SHA256 signed webhook catalog covering assessment and program lifecycle events.

Operations 15

GET /api/v1/audit_events List audit events #
GET /api/v1/benchmarks Get benchmarks for all capabilities #
POST /api/v1/benchmarks List general enterprise benchmark data #
GET /api/v1/benchmarks/{identifier} Get benchmarks for one capability #
GET /api/v1/domains Get all capabilities #
GET /api/v1/domains/{identifier} Get one capability #
GET /api/v1/domains/{identifier}/competency-model Export a capability's competency model #
GET /api/v1/ping returns a pong #
GET /api/v1/programs Get all programs (including drafts) #
GET /api/v1/programs/{identifier} Get one program #
GET /api/v2/scores Get all scores #
GET /api/v2/scores/{score_identifier} Get detailed score #
GET /api/v2/self-ratings Get all self-ratings #
GET /api/v2/self-ratings/{rating_identifier} Get detailed self-rating #
GET /api/v2/users/{user_identifier}/scores Get scores for a user #

Documentation

Specifications

Other Resources

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/workera-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 email required.

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

OpenAPI Specification

workera-api-openapi.json Raw ↑
{
  "components": {
    "responses": {},
    "schemas": {
      "BenchmarkListResponse": {
        "description": "Response schema for a list of enterprise benchmark data",
        "example": {
          "data": [
            {
              "big_tech_average_score": null,
              "domain_identifier": "8b65714c-ba23-41bc-97bc-0305fdff53f5",
              "enterprise_average_score": 166,
              "enterprise_percentile_75_score": 182
            }
          ]
        },
        "properties": {
          "data": {
            "description": "List of enterprise benchmark data",
            "items": {
              "$ref": "#/components/schemas/BenchmarkResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "data"
        ],
        "title": "BenchmarkListResponse",
        "type": "object"
      },
      "DomainResponse": {
        "description": "Response schema for a capability",
        "example": {
          "assessment_url": "domain/8b65714c-ba23-41bc-97bc-0305fdff53e5",
          "created_at": "2024-01-01T01:01:01Z",
          "description": "In this sample domain, we will learn about...",
          "identifier": "8b65714c-ba23-41bc-97bc-0305fdff53e5",
          "industry": "Cosmetics",
          "is_shared": false,
          "is_signature_domain": true,
          "languages": [
            "en_US",
            "ger_DE"
          ],
          "objectives": "Objectives of the domain...",
          "sources": [
            {
              "id": "01945a0c-1234-7000-8000-000000000001",
              "label": null,
              "type": "baseline"
            },
            {
              "id": "01945a0c-5678-7000-8000-000000000002",
              "label": "Q1 2025",
              "type": "reassessment"
            }
          ],
          "status": "LIVE",
          "title": "A sample domain",
          "updated_at": "2024-02-01T01:01:01Z"
        },
        "properties": {
          "assessment_url": {
            "description": "The target_url used for deeplinking to the assessment. Auto-enrolls the user into the capability",
            "type": "string"
          },
          "created_at": {
            "description": "The timestamp when the domain was created",
            "format": "date-time",
            "type": "string"
          },
          "description": {
            "description": "Capability description. Returned with HTML entities decoded.",
            "type": "string"
          },
          "identifier": {
            "description": "Unique capability identifier",
            "type": "string"
          },
          "industry": {
            "description": "The industry the domain was developed for",
            "type": "string"
          },
          "is_shared": {
            "description": "Indicates whether the capability is shared with the requesting company by another company",
            "type": "boolean"
          },
          "is_signature_domain": {
            "description": "Identifies Workera Signature Capabilities",
            "type": "boolean"
          },
          "languages": {
            "description": "List of languages this capability is translated to",
            "items": {
              "description": "Language locale",
              "type": "string"
            },
            "type": "array"
          },
          "objectives": {
            "description": "Capability objectives",
            "nullable": true,
            "type": "string"
          },
          "sources": {
            "description": "List of assessment sources available for this domain",
            "items": {
              "properties": {
                "id": {
                  "description": "The domain template identifier",
                  "format": "uuid",
                  "type": "string"
                },
                "label": {
                  "description": "Optional label for the assessment source",
                  "nullable": true,
                  "type": "string"
                },
                "type": {
                  "description": "The type of assessment source",
                  "enum": [
                    "baseline",
                    "reassessment"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "type",
                "id"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "status": {
            "description": "The status of the domain",
            "enum": [
              "LIVE",
              "ARCHIVED"
            ],
            "type": "string"
          },
          "title": {
            "description": "Capability title. Returned with HTML entities decoded.",
            "type": "string"
          },
          "updated_at": {
            "description": "The timestamp when the domain was last updated",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "identifier",
          "title",
          "is_signature_domain",
          "is_shared",
          "languages",
          "assessment_url",
          "created_at",
          "updated_at",
          "status",
          "sources"
        ],
        "title": "DomainResponse",
        "type": "object"
      },
      "AmbientActivityResponse": {
        "additionalProperties": false,
        "description": "The effective non-regressing scan activity timestamp",
        "example": {
          "last_scan_at": "2026-07-22T12:00:00Z",
          "success": true
        },
        "properties": {
          "last_scan_at": {
            "format": "date-time",
            "type": "string"
          },
          "success": {
            "enum": [
              true
            ],
            "type": "boolean"
          }
        },
        "required": [
          "success",
          "last_scan_at"
        ],
        "title": "AmbientActivityResponse",
        "type": "object"
      },
      "CoachingJournalResponse": {
        "description": "The day's coaching-journal entry — private memory for a future coach. The client stamps the date and owns on-device storage.",
        "example": {
          "journal": {
            "behavioral_signals": [
              "Defaults to writing a decision doc before raising a debate — repeated across the rollout thread and last week's schema discussion."
            ],
            "open_loops": [
              "The rollout date depends on the platform team's freeze calendar; still unowned, and it blocks the customer commitment made on Tuesday."
            ],
            "today_in_context": "Shifted from building the migration to negotiating its rollout — the day's decisions were about sequencing with the platform team, not code."
          }
        },
        "properties": {
          "journal": {
            "properties": {
              "behavioral_signals": {
                "description": "Durable observations with brief supporting evidence (may be empty)",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "open_loops": {
                "description": "Unresolved threads that may shape future coaching (may be empty)",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "today_in_context": {
                "description": "The day's most important coaching-relevant development",
                "type": "string"
              }
            },
            "required": [
              "today_in_context",
              "behavioral_signals",
              "open_loops"
            ],
            "type": "object"
          }
        },
        "title": "CoachingJournalResponse",
        "type": "object"
      },
      "AmbientSkillPicksResponse": {
        "description": "The consumer's selected skill-area slugs",
        "example": {
          "selected_skill_area_slugs": [
            "communication",
            "leadership"
          ]
        },
        "properties": {
          "selected_skill_area_slugs": {
            "description": "Active enrollment-derived skill-area slugs",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "selected_skill_area_slugs"
        ],
        "title": "AmbientSkillPicksResponse",
        "type": "object"
      },
      "AmbientCoachingCardEventResponse": {
        "additionalProperties": false,
        "description": "Acknowledges a metadata-only coaching-card interaction",
        "example": {
          "success": true
        },
        "properties": {
          "success": {
            "enum": [
              true
            ],
            "type": "boolean"
          }
        },
        "required": [
          "success"
        ],
        "title": "AmbientCoachingCardEventResponse",
        "type": "object"
      },
      "AmbientRefreshResponse": {
        "description": "A rotated per-device token pair",
        "example": {
          "access_token": "amb_at_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
          "expires_in": 3600,
          "refresh_token": "amb_rt_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
          "token_type": "Bearer"
        },
        "properties": {
          "access_token": {
            "description": "Short-lived `amb_at_` access token",
            "type": "string"
          },
          "expires_in": {
            "description": "Access-token lifetime in seconds",
            "type": "integer"
          },
          "refresh_token": {
            "description": "Single-use `amb_rt_` refresh token replacing the presented one",
            "type": "string"
          },
          "token_type": {
            "description": "Always \"Bearer\"",
            "type": "string"
          }
        },
        "title": "AmbientRefreshResponse",
        "type": "object"
      },
      "AmbientMissionsResponse": {
        "description": "One page of challenges assigned to the authenticated Ambient account",
        "properties": {
          "data": {
            "items": {
              "properties": {
                "completed_at": {
                  "format": "date-time",
                  "nullable": true,
                  "type": "string"
                },
                "created_at": {
                  "format": "date-time",
                  "type": "string"
                },
                "deadline": {
                  "format": "date-time",
                  "nullable": true,
                  "type": "string"
                },
                "id": {
                  "format": "uuid",
                  "type": "string"
                },
                "status": {
                  "enum": [
                    "open",
                    "completed",
                    "expired"
                  ],
                  "type": "string"
                },
                "title": {
                  "type": "string"
                }
              },
              "required": [
                "id",
                "title",
                "status",
                "deadline",
                "created_at",
                "completed_at"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "has_more": {
            "type": "boolean"
          },
          "next_page": {
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "data",
          "has_more",
          "next_page"
        ],
        "title": "AmbientMissionsResponse",
        "type": "object"
      },
      "DidYouKnowResponse": {
        "description": "One web_search-grounded fact tied to the user's work",
        "example": {
          "fact": "Teams that run a five-minute silent brainstorm before discussing produce roughly twice as many usable ideas as free-for-all meetings.",
          "source": "Nemeth, UC Berkeley"
        },
        "properties": {
          "fact": {
            "description": "The fact — a sentence or two, conversational, no advice attached",
            "type": "string"
          },
          "source": {
            "description": "The real source the fact was confirmed against (a named study, publication, or org)",
            "type": "string"
          }
        },
        "title": "DidYouKnowResponse",
        "type": "object"
      },
      "MeResponse": {
        "description": "The authenticated Ambient identity and status",
        "example": {
          "account_type": "consumer",
          "email": "learner@example.com",
          "first_name": null,
          "id": "0197fb2e-1111-7aaa-bbbb-cccccccccccc",
          "last_name": null,
          "min_supported_version": null
        },
        "properties": {
          "account_type": {
            "description": "The persisted Ambient account type",
            "enum": [
              "consumer",
              "enterprise"
            ],
            "type": "string"
          },
          "email": {
            "description": "Email associated with the token",
            "type": "string"
          },
          "first_name": {
            "description": "The account's first name, or null until profile completion",
            "nullable": true,
            "type": "string"
          },
          "id": {
            "description": "Account id; null only for tokens issued outside the sign-in flow",
            "nullable": true,
            "type": "string"
          },
          "last_name": {
            "description": "The account's last name, or null when unset",
            "nullable": true,
            "type": "string"
          },
          "min_supported_version": {
            "description": "Minimum supported desktop version — unset for now",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "id",
          "email",
          "account_type",
          "first_name",
          "last_name",
          "min_supported_version"
        ],
        "title": "MeResponse",
        "type": "object"
      },
      "BenchmarkResponse": {
        "description": "Response schema for a benchmark item",
        "example": {
          "big_tech_average_score": null,
          "domain_identifier": "8b65714c-ba23-41bc-97bc-0305fdff53f5",
          "enterprise_average_score": 166,
          "enterprise_percentile_75_score": 182
        },
        "properties": {
          "big_tech_average_score": {
            "description": "Average score of learners on that capability in big tech companies",
            "nullable": true,
            "type": "integer"
          },
          "domain_identifier": {
            "description": "Unique capability identifier",
            "type": "string"
          },
          "enterprise_average_score": {
            "description": "Average score of learners on that capability in all enterprise companies",
            "nullable": true,
            "type": "integer"
          },
          "enterprise_percentile_75_score": {
            "description": "75th percentile score of learners on that capability in all enterprise companies",
            "nullable": true,
            "type": "integer"
          }
        },
        "required": [
          "domain_identifier"
        ],
        "title": "BenchmarkResponse",
        "type": "object"
      },
      "AmbientScoresResponse": {
        "description": "Acknowledges a monotonic score sync. `sync` is null on Personal; Anonymous and Visible return the canonical accepted aggregate and per-skill state.",
        "example": {
          "success": true,
          "sync": {
            "overall_pct": 62,
            "scored_date": "2026-06-29",
            "signals_count": 14,
            "skill_points": [
              {
                "points": 2,
                "skill_area_slug": "ai_fundamentals"
              }
            ],
            "success": true,
            "total_points": 2
          },
          "tier": "visible"
        },
        "properties": {
          "success": {
            "description": "Always true when the request was accepted",
            "type": "boolean"
          },
          "sync": {
            "description": "Canonical accepted score state; null on the Personal tier",
            "nullable": true,
            "properties": {
              "overall_pct": {
                "maximum": 100,
                "minimum": 0,
                "type": "integer"
              },
              "scored_date": {
                "description": "The scored date (YYYY-MM-DD)",
                "format": "date",
                "type": "string"
              },
              "signals_count": {
                "minimum": 0,
                "type": "integer"
              },
              "skill_points": {
                "items": {
                  "properties": {
                    "points": {
                      "minimum": 0,
                      "type": "integer"
                    },
                    "skill_area_slug": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "skill_area_slug",
                    "points"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "success": {
                "type": "boolean"
              },
              "total_points": {
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "success",
              "overall_pct",
              "total_points",
              "skill_points",
              "signals_count",
              "scored_date"
            ],
            "type": "object"
          },
          "tier": {
            "description": "The account's effective privacy tier at the time of the write",
            "enum": [
              "personal",
              "anonymous",
              "visible"
            ],
            "type": "string"
          }
        },
        "required": [
          "success",
          "tier",
          "sync"
        ],
        "title": "AmbientScoresResponse",
        "type": "object"
      },
      "LearningRecommendationsResponse": {
        "description": "Verified course recommendations from the enabled learning providers",
        "example": {
          "recommendations": [
            {
              "because": "In your roadmap review this week, you weighed three options but didn't commit to one.",
              "duration": "12h",
              "instructor": "Jane Doe",
              "provider": "coursera",
              "title": "Negotiation Skills",
              "url": "https://www.coursera.org/learn/negotiation-skills",
              "why": "Sharpens how you frame asks when the room is pushing back."
            }
          ]
        },
        "properties": {
          "recommendations": {
            "description": "Up to five web_search-verified courses; empty when the model found no confidence-worthy matches. The client validates each URL before rendering.",
            "items": {
              "properties": {
                "because": {
                  "description": "One sentence grounding the recommendation in a moment this scan observed; transits back to the device only",
                  "nullable": true,
                  "type": "string"
                },
                "duration": {
                  "description": "Course duration, e.g. \"12h\" or \"4 weeks\"",
                  "nullable": true,
                  "type": "string"
                },
                "instructor": {
                  "description": "Instructor name",
                  "nullable": true,
                  "type": "string"
                },
                "provider": {
                  "description": "One of the enabled provider keys (coursera/udemy/linkedin_learning/oreilly)",
                  "type": "string"
                },
                "title": {
                  "description": "The course title",
                  "type": "string"
                },
                "url": {
                  "description": "Canonical course URL on the provider's domain",
                  "type": "string"
                },
                "why": {
                  "description": "One plain-language sentence on how the course helps",
                  "nullable": true,
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          }
        },
        "title": "LearningRecommendationsResponse",
        "type": "object"
      },
      "AmbientScanOutcomeResponse": {
        "description": "Acknowledges a stored metadata-only scan outcome",
        "example": {
          "success": true,
          "tier": "personal"
        },
        "properties": {
          "success": {
            "description": "Always true when the outcome was stored",
            "type": "boolean"
          },
          "tier": {
            "description": "The account's effective privacy tier at the time of the write",
            "enum": [
              "personal",
              "anonymous",
              "visible"
            ],
            "type": "string"
          }
        },
        "required": [
          "success",
          "tier"
        ],
        "title": "AmbientScanOutcomeResponse",
        "type": "object"
      },
      "PersonalGoalBehaviorProposalResponse": {
        "additionalProperties": false,
        "description": "Six distinct, observable, privacy-safe personal-goal behaviors",
        "example": {
          "behaviors": [
            {
              "description": "Frame decisions with clear context"
            },
            {
              "description": "Ask questions before offering solutions"
            },
            {
              "description": "Delegate outcomes with clear ownership"
            },
            {
              "description": "Summarize tradeoffs before recommending action"
            },
            {
              "description": "Invite dissent before closing discussions"
            },
            {
              "description": "Confirm next steps with named owners"
            }
          ]
        },
        "properties": {
          "behaviors": {
            "description": "Exactly six behavior proposals; the client selects one to six",
            "items": {
              "additionalProperties": false,
              "properties": {
                "description": {
                  "description": "A generic, observable behavior with no private specifics",
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "description"
              ],
              "type": "object"
            },
            "maxItems": 6,
            "minItems": 6,
            "type": "array"
          }
        },
        "required": [
          "behaviors"
        ],
        "title": "PersonalGoalBehaviorProposalResponse",
        "type": "object"
      },
      "AmbientRequirementsResponse": {
        "description": "The authenticated account's enrollment-derived scanner skill coverage",
        "example": {
          "archived_programs": [],
          "archived_skill_areas": [],
          "available_starters": [],
          "email": "learner@example.com",
          "enabled_learning_providers": [],
          "fleet_managed_updates": false,
          "person_name": null,
          "programs": [],
          "role": null,
          "skill_areas": [
            {
              "behaviors": [
                {
                  "archived": false,
                  "bloom_verb": "Write",
                  "description": "Write concise, unambiguous messages — get to the point without losing nuance",
                  "id": "B-COM.1a",
                  "skill": "Conciseness",
                  "skill_area": "Written",
                  "skill_area_slug": "communication"
                },
                {
                  "archived": false,
                  "bloom_verb": "Structure",
                  "description": "Structure written proposals and recommendations with clear logic and evidence",
                  "id": "B-COM.1b",
                  "skill": "Structured Writing",
                  "skill_area": "Written",
                  "skill_area_slug": "communication"
                },
                {
                  "archived": false,
                  "bloom_verb": "Adapt",
                  "description": "Adapt communication style to the audience — technical detail for engineers, business impact for executives",
                  "id": "B-COM.4a",
                  "skill": "Audience Adaptation",
                  "skill_area": "Adaptation",
                  "skill_area_slug": "communication"
                },
                {
                  "archived": true,
                  "bloom_verb": "Present",
                  "description": "Present ideas clearly to groups — adapt depth and framing to the audience",
                  "id": "B-COM.2a",
                  "skill": "Presentations",
                  "skill_area": "Verbal",
                  "skill_area_slug": "communication"
                }
              ],
              "name": "Communication Essentials",
              "slug": "communication",
              "sort_order": 6
            }
          ],
          "total_behaviors": 3
        },
        "properties": {
          "archived_programs": {
            "items": {
              "properties": {
                "archived_at": {
                  "format": "date-time",
                  "nullable": true,
                  "type": "string"
                },
                "description": {
                  "nullable": true,
                  "type": "string"
                },
                "enrollment_kind": {
                  "nullable": true,
                  "type": "string"
                },
                "id": {
                  "type": "string"
                },
                "kind": {
                  "enum": [
                    "starter",
                    "admin"
                  ],
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "origin": {
                  "enum": [
                    "signature",
                    "custom"
                  ],
                  "type": "string"
                },
                "self_enrollable": {
                  "enum": [
                    0,
                    1
                  ],
                  "type": "integer"
                },
                "skill_count": {
                  "type": "integer"
                }
              },
              "required": [
                "id",
                "name",
                "description",
                "kind",
                "origin",
                "self_enrollable"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "archived_skill_areas": {
            "items": {
              "properties": {
                "behaviors": {
                  "items": {
                    "properties": {
                      "archived": {
                        "description": "Whether the catalog retired this behavior; it stays score-bearing",
                        "type": "boolean"
                      },
                      "bloom_verb": {
                        "type": "string"
                      },
                      "description": {
                        "type": "string"
                      },
                      "id": {
                        "type": "string"
                      },
                      "skill": {
                        "type": "string"
                      },
                      "skill_area": {
                        "type": "string"
                      },
                      "skill_area_slug": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "id",
                      "skill_area_slug",
                      "skill_area",
                      "skill",
                      "description",
                      "bloom_verb",
                      "archived"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "name": {
                  "type": "string"
                },
                "slug": {
                  "type": "string"
                },
                "sort_order": {
                  "type": "integer"
                }
              },
              "required": [
                "slug",
                "name",
                "sort_order",
                "behaviors"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "available_starters": {
            "items": {
              "properties": {
                "archived_at": {
                  "format": "date-time",
                  "nullable": true,
                  "type": "string"
                },
                "description": {
                  "nullable": true,
                  "type": "string"
                },
                "enrollment_kind": {
                  "nullable": true,
                  "type": "string"
                },
                "id": {
                  "type": "string"
                },
                "kind": {
                  "enum": [
                    "starter",
                    "admin"
                  ],
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "origin": {
                  "enum": [
                    "signature",
                    "custom"
                  ],
                  "type": "string"
                },
                "self_enrollable": {
                  "enum": [
                    0,
                    1
                  ],
                  "type": "integer"
                },
                "skill_count": {
                  "type": "integer"
                }
              },
              "required": [
                "id",
                "name",
                "description",
                "kind",
                "origin",
                "self_enrollable"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "email": {
            "type": "string"
          },
          "enabled_learning_providers": {
            "description": "Provider keys enabled for this account after company defaults and person overrides, in catalog order",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "fleet_managed_updates": {
            "type": "boolean"
          },
          "person_name": {
            "nullable": true,
            "type": "string"
          },
          "programs": {
            "items": {
              "properties": {
                "archived_at": {
                  "format": "date-time",
                  "nullable": true,
                  "type": "string"
                },
                "description": {
                  "nullable": true,
                  "type": "string"
                },
                "enrollment_kind": {
                  "nullable": true,
                  "type": "string"
                },
                "id": {
                  "type": "string"
                },
                "kind": {
                  "enum": [
                    "starter",
                    "admin"
                  ],
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "origin": {
                  "enum": [
                    "signature",
                    "custom"
                  ],
                  "type": "string"
                },
                "self_enrollable": {
                  "enum": [
                    0,
 

# --- truncated at 32 KB (240 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/workera/refs/heads/main/openapi/workera-api-openapi.json