OpenAssignment · Draft specification 0.1.0

Examples

Complete, valid files you can copy. Every example on this page is checked against the published schema each time the site is built.

Example Industries, Example Sourcing and the assignment in these examples are fictional. The files are real: they are served from this site and can be fetched by any client.

An assignment

A company, Example Industries, publishes an assignment on its own website. It works with an agency, named as facilitator, but the company is the source and the assignment is served from the company’s address.

The advert on the left is generated from the JSON on the right. Change the JSON and the advert changes with it.

Human readable

Senior Frontend Developer for a design system rollout

Example Industries

Open

Location
Stockholm, SE · Hybrid
Engagement
Full-time
Workload
100%. Two days a week on site, the rest remote.
Period
1 February 2027 to 31 August 2027
Facilitator
Example Sourcing. Qualifies consultants and manages the agreement on behalf of Example Industries.
Apply by
15 January 2027

We are replacing three separate web frontends with one shared design system, and we need a senior frontend developer to lead the component work together with our in-house team of four.

You will build accessible components, set up automated accessibility testing and help our product teams adopt the new library. This is a fictional assignment used to demonstrate OpenAssignment.

Required skills

  • Frontend development · Senior · TypeScript, Vue
  • Accessibility · WCAG 2.2

Preferred skills

  • Design systems · Storybook, Design tokens
  • Experience from large organisations

Register your interest

Published 1 October 2026 by Example Industries. Updated 1 October 2026.
Source: https://openassignment.io/examples/assignment.json

JSON, the same data

{
  "$schema": "https://openassignment.io/schemas/v0.1/schema.json",
  "schemaVersion": "0.1.0",
  "id": "urn:uuid:c4a7e2b1-3f58-4d9a-a6c0-7e1b5f2d8a43",
  "canonicalUrl": "https://openassignment.io/examples/assignment.json",
  "title": "Senior Frontend Developer for a design system rollout",
  "description": "We are replacing three separate web frontends with one shared design system, and we need a senior frontend developer to lead the component work together with our in-house team of four.\n\nYou will build accessible components, set up automated accessibility testing and help our product teams adopt the new library. This is a fictional assignment used to demonstrate OpenAssignment.",
  "publisher": {
    "name": "Example Industries",
    "url": "https://openassignment.io/examples/"
  },
  "facilitator": {
    "name": "Example Sourcing",
    "url": "https://example.com/",
    "role": "Qualifies consultants and manages the agreement on behalf of Example Industries."
  },
  "requiredSkills": [
    {
      "name": "Frontend development",
      "level": "Senior",
      "keywords": [
        "TypeScript",
        "Vue"
      ]
    },
    {
      "name": "Accessibility",
      "keywords": [
        "WCAG 2.2"
      ]
    }
  ],
  "preferredSkills": [
    {
      "name": "Design systems",
      "keywords": [
        "Storybook",
        "Design tokens"
      ]
    },
    {
      "name": "Experience from large organisations"
    }
  ],
  "location": {
    "city": "Stockholm",
    "countryCode": "SE"
  },
  "remote": "hybrid",
  "engagementType": "full-time",
  "workload": {
    "percent": 100,
    "description": "Two days a week on site, the rest remote."
  },
  "startDate": "2027-02-01",
  "endDate": "2027-08-31",
  "status": "open",
  "publishedAt": "2026-10-01T08:00:00Z",
  "updatedAt": "2026-10-01T08:00:00Z",
  "expiresAt": "2027-01-15T23:59:59Z",
  "applicationUrl": "mailto:assignments@example.com",
  "htmlUrl": "https://openassignment.io/examples/#assignment"
}

Download: /examples/assignment.json

The smallest valid assignment

Nine fields are required. Everything else is optional and can be added when it is known.

/examples/assignment.minimal.jsonDownload /examples/assignment.minimal.json
{
  "schemaVersion": "0.1.0",
  "id": "urn:uuid:9d3f6a70-52c1-4b8e-8f2a-0c6e4b1d7a95",
  "canonicalUrl": "https://openassignment.io/examples/assignment.minimal.json",
  "title": "Data Engineer",
  "description": "Six months of work on a data platform migration.",
  "publisher": {
    "name": "Example Industries"
  },
  "status": "open",
  "publishedAt": "2026-10-01T08:00:00Z",
  "updatedAt": "2026-10-01T08:00:00Z"
}

The entry file

This is what a company serves at /openassignment.json on its own domain. It lists one assignment, the one above, together with its status.

/examples/manifest.jsonDownload /examples/manifest.json
{
  "$schema": "https://openassignment.io/schemas/v0.1/manifest.schema.json",
  "standard": "OpenAssignment",
  "schemaVersion": "0.1.0",
  "publisher": {
    "name": "Example Industries",
    "url": "https://openassignment.io/examples/"
  },
  "updatedAt": "2026-10-01T08:00:00Z",
  "assignments": [
    {
      "id": "urn:uuid:c4a7e2b1-3f58-4d9a-a6c0-7e1b5f2d8a43",
      "url": "https://openassignment.io/examples/assignment.json",
      "status": "open",
      "updatedAt": "2026-10-01T08:00:00Z",
      "htmlUrl": "https://openassignment.io/examples/#assignment"
    }
  ]
}

Reading the example

The files allow cross-origin requests, so this runs in a browser console as well as in Node.js. A real publisher’s entry file is at /openassignment.json on their own domain. The example lives under /examples/ on this site.

const entryFile = 'https://openassignment.io/examples/manifest.json';

const manifest = await fetch(entryFile).then((response) => response.json());
if (manifest.standard !== 'OpenAssignment') throw new Error('Not an OpenAssignment entry file');

const now = new Date();
for (const entry of manifest.assignments.filter((item) => item.status === 'open')) {
  const assignment = await fetch(entry.url).then((response) => response.json());
  const expired = assignment.expiresAt && new Date(assignment.expiresAt) < now;
  if (assignment.status !== 'open' || expired) continue;

  console.log(`${assignment.title}, published by ${assignment.publisher.name}`);
  console.log(`Starts ${assignment.startDate}, apply at ${assignment.applicationUrl}`);
  console.log(`Source: ${assignment.canonicalUrl}`);
}

The same thing from a terminal:

curl -s https://openassignment.io/examples/manifest.json
curl -s https://openassignment.io/examples/assignment.json

Next